0x608060405234801561001057600080fd5b5033600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600b60146101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f60405160405180910390a3614fae806100d76000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80638f2839701161010f578063c70904e2116100a2578063e95a644f11610071578063e95a644f1461061d578063ee551d7e14610639578063f851a44014610669578063fb70e49f14610687576101f0565b8063c70904e214610585578063d84fe3a0146105a1578063e10a8a6f146105d1578063e530e13014610601576101f0565b8063a23eee5a116100de578063a23eee5a14610513578063b33712c51461052f578063c287697114610539578063c3261faf14610569576101f0565b80638f2839701461048d5780638ff7cbd8146104a9578063907b30bf146104d95780639a433631146104f7576101f0565b8063439766ce116101875780635e7912cd116101565780635e7912cd146103ef57806373b7d9241461040b57806375a55cd21461043f5780638a67456a1461046f576101f0565b8063439766ce14610355578063455f468f1461035f5780635a45fe031461038f5780635c3ead30146103bf576101f0565b80632679a609116101c35780632679a609146102a25780632bb9534b146102d957806336d3e706146103095780633d31659514610325576101f0565b80630995c191146101f5578063213615561461022657806322ea0d271461024257806326334a5914610272575b600080fd5b61020f600480360381019061020a9190613ee5565b6106a3565b60405161021d929190613f2b565b60405180910390f35b610240600480360381019061023b9190613f8a565b61072f565b005b61025c60048036038101906102579190613ee5565b610998565b6040516102699190613fd2565b60405180910390f35b61028c60048036038101906102879190613ee5565b6109b8565b6040516102999190613fed565b60405180910390f35b6102bc60048036038101906102b79190613f8a565b6109d0565b6040516102d098979695949392919061409d565b60405180910390f35b6102f360048036038101906102ee9190613ee5565b610aa5565b6040516103009190613fed565b60405180910390f35b610323600480360381019061031e9190613f8a565b610abd565b005b61033f600480360381019061033a9190613ee5565b610c98565b60405161034c919061411b565b60405180910390f35b61035d610ccb565b005b61037960048036038101906103749190613f8a565b610ddd565b6040516103869190613fd2565b60405180910390f35b6103a960048036038101906103a49190613ee5565b611252565b6040516103b6919061411b565b60405180910390f35b6103d960048036038101906103d49190614162565b611285565b6040516103e691906141a2565b60405180910390f35b61040960048036038101906104049190614162565b6112b6565b005b610425600480360381019061042091906141bd565b611797565b6040516104369594939291906141fd565b60405180910390f35b61045960048036038101906104549190613ee5565b61199e565b6040516104669190613fed565b60405180910390f35b6104776119b6565b6040516104849190613fd2565b60405180910390f35b6104a760048036038101906104a29190613ee5565b6119c9565b005b6104c360048036038101906104be91906141bd565b611b8e565b6040516104d09190613fd2565b60405180910390f35b6104e1611c22565b6040516104ee919061411b565b60405180910390f35b610511600480360381019061050c9190613ee5565b611c3a565b005b61052d60048036038101906105289190614396565b612093565b005b610537612aec565b005b610553600480360381019061054e9190613ee5565b612bfe565b6040516105609190613fed565b60405180910390f35b610583600480360381019061057e9190613f8a565b612c16565b005b61059f600480360381019061059a9190613f8a565b612e3e565b005b6105bb60048036038101906105b69190613ee5565b613019565b6040516105c89190613fd2565b60405180910390f35b6105eb60048036038101906105e691906141bd565b61330f565b6040516105f89190613fd2565b60405180910390f35b61061b6004803603810190610616919061447c565b61333e565b005b610637600480360381019061063291906144bc565b613543565b005b610653600480360381019061064e91906141bd565b61372b565b6040516106609190613fd2565b60405180910390f35b61067161375a565b60405161067e919061411b565b60405180910390f35b6106a1600480360381019061069c9190614162565b613780565b005b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205491509150915091565b600b60149054906101000a900460ff161561077f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077690614546565b60405180910390fd5b60008060008381526020019081526020016000209050600061079f613924565b90508160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610833576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082a906145d8565b60405180910390fd5b6002600481111561084757610846614017565b5b8260050160009054906101000a900460ff16600481111561086b5761086a614017565b5b141580156108af57506003600481111561088857610887614017565b5b8260050160009054906101000a900460ff1660048111156108ac576108ab614017565b5b14155b80156108f057506004808111156108c9576108c8614017565b5b8260050160009054906101000a900460ff1660048111156108ed576108ec614017565b5b14155b61092f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092690614644565b60405180910390fd5b60048260050160006101000a81548160ff0219169083600481111561095757610956614017565b5b021790555060008260070181905550827f48ab3039b46fea9e9c22a03c2a06afe4b0458e0f0e5dd7116ec17710d9786ad460405160405180910390a2505050565b60086020528060005260406000206000915054906101000a900460ff1681565b600a6020528060005260406000206000915090505481565b60006020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060040154908060050160009054906101000a900460ff16908060060154908060070154905088565b60026020528060005260406000206000915090505481565b600b60149054906101000a900460ff1615610b0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0490614546565b60405180910390fd5b600080600083815260200190815260200160002090506000610b2d613924565b90508160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610bc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb8906145d8565b60405180910390fd5b60006004811115610bd557610bd4614017565b5b8260050160009054906101000a900460ff166004811115610bf957610bf8614017565b5b14610c39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3090614644565b60405180910390fd5b60018260050160006101000a81548160ff02191690836004811115610c6157610c60614017565b5b0217905550827fc0966aee6a6549a2d5b579b6a9cb56240ae2a747b920152aa98b8dbc0cb4c84160405160405180910390a2505050565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d52906146b0565b60405180910390fd5b6001600b60146101000a81548160ff021916908315150217905550600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f81990fd9a5c552b8e3677917d8a03c07678f0d2cb68f88b634aca2022e9bd19f60405160405180910390a2565b6000600b60149054906101000a900460ff1615610e2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2690614546565b60405180910390fd5b600080600084815260200190815260200160002090506000610e4f613924565b90508160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610ee3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eda90614742565b60405180910390fd5b60016004811115610ef757610ef6614017565b5b8260050160009054906101000a900460ff166004811115610f1b57610f1a614017565b5b03610f2b5760019250505061124d565b60006004811115610f3f57610f3e614017565b5b8260050160009054906101000a900460ff166004811115610f6357610f62614017565b5b14610f735760009250505061124d565b60008260000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000856007015411801561103c575084600701544210155b1561107c5760018560050160006101000a81548160ff0219169083600481111561106957611068614017565b5b021790555060019550505050505061124d565b60008560040154838361108f9190614791565b6110999190614791565b42119050806110b1576000965050505050505061124d565b6000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111865760018760050160006101000a81548160ff0219169083600481111561117157611170614017565b5b0217905550600197505050505050505061124d565b61118f85613019565b506001600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054036112145760018760050160006101000a81548160ff021916908360048111156111ff576111fe614017565b5b0217905550600197505050505050505061124d565b887f38307d5d79552774534f999a5c302b20daa1195abb45711f2d5b173ab8b91b8060405160405180910390a260009750505050505050505b919050565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160205281600052604060002081815481106112a157600080fd5b90600052602060002001600091509150505481565b600b60149054906101000a900460ff1615611306576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fd90614546565b60405180910390fd5b6000611310613924565b90506000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146114d5576000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b83600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161461161d576001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b82600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f0c1fa8a4842f055193957b22886bcdbf5bf68266bdf15ef5bd149bf4dc72a4f160405160405180910390a28173ffffffffffffffffffffffffffffffffffffffff167ff3eef8dfb9afd91e020448bef50b5bc833eddeed6428af31a78eb99e6d1b8ac785856040516117899291906147c5565b60405180910390a250505050565b600080600080600080600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1695508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16149450600960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169350600a60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549250600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361198b57600061198e565b60015b60ff169150509295509295909350565b60036020528060005260406000206000915090505481565b600b60149054906101000a900460ff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a50906146b0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611ac8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611abf9061483a565b60405180910390fd5b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f60405160405180910390a35050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b7355c8972df5453bf474a09bba0e6f5789c8ed61a781565b600b60149054906101000a900460ff1615611c8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8190614546565b60405180910390fd5b6000611c94613924565b9050611ca08282611b8e565b611cdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd6906148cc565b60405180910390fd5b600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611da9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da090614938565b60405180910390fd5b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611e35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2c906149a4565b60405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050808284611f0e9190614791565b611f189190614791565b4211611f59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5090614a10565b60405180910390fd5b6001600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167e11cf24b377e8aaac51d4c9079accc3aa796cc044a1f7f3a8d497dc4d9352c360405160405180910390a35050505050565b600b60149054906101000a900460ff16156120e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120da90614546565b60405180910390fd5b60008989886040516020016120fa93929190614a99565b604051602081830303815290604052805190602001209050600061211e8284613a24565b90507355c8972df5453bf474a09bba0e6f5789c8ed61a773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146121a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219990614b22565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361230e5789600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508973ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fb8c36117828c82e9f174f1be4fcc6fdcf92fb930ab0f1f0984d5ce3552b0b22760405160405180910390a35b600073ffffffffffffffffffffffffffffffffffffffff16600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361247a5787600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508773ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fb8c36117828c82e9f174f1be4fcc6fdcf92fb930ab0f1f0984d5ce3552b0b22760405160405180910390a35b6000612484613924565b90508a73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146124f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124eb906145d8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1603612563576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255a90614b8e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff16036125d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c990614bfa565b60405180910390fd5b8a73ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1603612640576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263790614c66565b60405180910390fd5b60008611612683576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267a90614cd2565b60405180910390fd5b85600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146127605785600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508a73ffffffffffffffffffffffffffffffffffffffff167f86e2d62c797548605c4269be4ca555f883384ff1c82eb6082f156bf4858fefdb876040516127539190613fed565b60405180910390a26127a5565b85600360008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b60006040518061010001604052808d73ffffffffffffffffffffffffffffffffffffffff1681526020018c73ffffffffffffffffffffffffffffffffffffffff1681526020018b73ffffffffffffffffffffffffffffffffffffffff1681526020018a73ffffffffffffffffffffffffffffffffffffffff1681526020018981526020016000600481111561283d5761283c614017565b5b815260200187815260200160008152509050806000808f815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506080820151816004015560a08201518160050160006101000a81548160ff021916908360048111156129b3576129b2614017565b5b021790555060c0820151816006015560e08201518160070155905050600160008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208d908060018154018082558091505060019003906000526020600020016000909190919091505542600260008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a828c613abf565b8973ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff168e7f9fd2b7d0a2be7c5596b2293abca17cff4ca3d9e4909e28354db4104f76118a1860405160405180910390a450505050505050505050505050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612b7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b73906146b0565b60405180910390fd5b6000600b60146101000a81548160ff021916908315150217905550600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f5b65b0c1363b3003db9bcc5e1fd8805a6d6bf5bf6dc9d3431ee4494cd7d1176660405160405180910390a2565b60076020528060005260406000206000915090505481565b600b60149054906101000a900460ff1615612c66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5d90614546565b60405180910390fd5b600080600083815260200190815260200160002090506000612c86613924565b90508160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612d1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d11906145d8565b60405180910390fd5b60026004811115612d2e57612d2d614017565b5b8260050160009054906101000a900460ff166004811115612d5257612d51614017565b5b14158015612d96575060036004811115612d6f57612d6e614017565b5b8260050160009054906101000a900460ff166004811115612d9357612d92614017565b5b14155b612dd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dcc90614644565b60405180910390fd5b60038260050160006101000a81548160ff02191690836004811115612dfd57612dfc614017565b5b021790555060008260070181905550827f64ecfeda02e333cd2227ea5bf183f1dd626327b5f67b6ac67b53883324ec5b6660405160405180910390a2505050565b600b60149054906101000a900460ff1615612e8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e8590614546565b60405180910390fd5b600080600083815260200190815260200160002090506000612eae613924565b90508160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612f42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3990614742565b60405180910390fd5b60016004811115612f5657612f55614017565b5b8260050160009054906101000a900460ff166004811115612f7a57612f79614017565b5b14612fba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fb190614d3e565b60405180910390fd5b60028260050160006101000a81548160ff02191690836004811115612fe257612fe1614017565b5b0217905550827fcdf278508160c61e931a76f57d62b0335deebaea733f922f72f17e1cc63849f960405160405180910390a2505050565b6000600b60149054906101000a900460ff161561306b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161306290614546565b60405180910390fd5b600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156130c6576001905061330a565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361316857600091505061330a565b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008183856132439190614791565b61324d9190614791565b421190508015613300576001600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508673ffffffffffffffffffffffffffffffffffffffff167fc8b87af40e067c0a18a61a9967aff0295858759b7451c0915223f7c0fe59353e60405160405180910390a260019550505050505061330a565b6000955050505050505b919050565b60066020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b600b60149054906101000a900460ff161561338e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161338590614546565b60405180910390fd5b6000806000848152602001908152602001600020905060006133ae613924565b90508160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614613442576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613439906145d8565b60405180910390fd5b6000600481111561345657613455614017565b5b8260050160009054906101000a900460ff16600481111561347a57613479614017565b5b146134ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134b190614644565b60405180910390fd5b4283116134fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134f390614daa565b60405180910390fd5b828260070181905550837fb284dbdb227393d8c46925145e57c738bff3b4653b07482d7951f093b3e01348846040516135359190613fed565b60405180910390a250505050565b600b60149054906101000a900460ff1615613593576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161358a90614546565b60405180910390fd5b600061359d613924565b9050600042905080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600083118015613637575082600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414155b156136cf5782600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff167f86e2d62c797548605c4269be4ca555f883384ff1c82eb6082f156bf4858fefdb846040516136c69190613fed565b60405180910390a25b6136d882613abf565b8173ffffffffffffffffffffffffffffffffffffffff167fa864a8b988e604bb05d6ce75d53efabb5620c45b15380b7bd0c51dcfa71dda038260405161371e9190613fed565b60405180910390a2505050565b60096020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60149054906101000a900460ff16156137d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137c790614546565b60405180910390fd5b60008111613813576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161380a90614cd2565b60405180910390fd5b600061381d613924565b90508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461388d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613884906145d8565b60405180910390fd5b81600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff167f86e2d62c797548605c4269be4ca555f883384ff1c82eb6082f156bf4858fefdb836040516139179190613fed565b60405180910390a2505050565b60008073ffffffffffffffffffffffffffffffffffffffff16600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036139be5733613a1f565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905090565b60008083604051602001613a389190614e21565b6040516020818303038152906040528051906020012090506000806000613a5e86613def565b92509250925060018484848460405160008152602001604052604051613a879493929190614e63565b6020604051602081039080840390855afa158015613aa9573d6000803e3d6000fd5b5050506020604051035194505050505092915050565b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613cde576000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614613cdc576000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b505b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060005b8180549050811015613dea576000828281548110613d4557613d44614ea8565b5b906000526020600020015490506000806000838152602001908152602001600020905060016004811115613d7c57613d7b614017565b5b8160050160009054906101000a900460ff166004811115613da057613d9f614017565b5b03613ddd5760008160050160006101000a81548160ff02191690836004811115613dcd57613dcc614017565b5b0217905550600081600701819055505b5050806001019050613d24565b505050565b60008060006041845114613e38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e2f90614f23565b60405180910390fd5b6020840151915060408401519050606084015160001a9250601b8360ff161015613e6c57601b83613e699190614f43565b92505b9193909250565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613eb282613e87565b9050919050565b613ec281613ea7565b8114613ecd57600080fd5b50565b600081359050613edf81613eb9565b92915050565b600060208284031215613efb57613efa613e7d565b5b6000613f0984828501613ed0565b91505092915050565b6000819050919050565b613f2581613f12565b82525050565b6000604082019050613f406000830185613f1c565b613f4d6020830184613f1c565b9392505050565b6000819050919050565b613f6781613f54565b8114613f7257600080fd5b50565b600081359050613f8481613f5e565b92915050565b600060208284031215613fa057613f9f613e7d565b5b6000613fae84828501613f75565b91505092915050565b60008115159050919050565b613fcc81613fb7565b82525050565b6000602082019050613fe76000830184613fc3565b92915050565b60006020820190506140026000830184613f1c565b92915050565b61401181613ea7565b82525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6005811061405757614056614017565b5b50565b600081905061406882614046565b919050565b60006140788261405a565b9050919050565b6140888161406d565b82525050565b61409781613f54565b82525050565b6000610100820190506140b3600083018b614008565b6140c0602083018a614008565b6140cd6040830189614008565b6140da6060830188614008565b6140e76080830187613f1c565b6140f460a083018661407f565b61410160c083018561408e565b61410e60e0830184613f1c565b9998505050505050505050565b60006020820190506141306000830184614008565b92915050565b61413f81613f12565b811461414a57600080fd5b50565b60008135905061415c81614136565b92915050565b6000806040838503121561417957614178613e7d565b5b600061418785828601613ed0565b92505060206141988582860161414d565b9150509250929050565b60006020820190506141b7600083018461408e565b92915050565b600080604083850312156141d4576141d3613e7d565b5b60006141e285828601613ed0565b92505060206141f385828601613ed0565b9150509250929050565b600060a0820190506142126000830188613fc3565b61421f6020830187613fc3565b61422c6040830186613fc3565b6142396060830185613f1c565b6142466080830184613f1c565b9695505050505050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6142a38261425a565b810181811067ffffffffffffffff821117156142c2576142c161426b565b5b80604052505050565b60006142d5613e73565b90506142e1828261429a565b919050565b600067ffffffffffffffff8211156143015761430061426b565b5b61430a8261425a565b9050602081019050919050565b82818337600083830152505050565b6000614339614334846142e6565b6142cb565b90508281526020810184848401111561435557614354614255565b5b614360848285614317565b509392505050565b600082601f83011261437d5761437c614250565b5b813561438d848260208601614326565b91505092915050565b60008060008060008060008060006101208a8c0312156143b9576143b8613e7d565b5b60006143c78c828d01613f75565b99505060206143d88c828d01613ed0565b98505060406143e98c828d01613ed0565b97505060606143fa8c828d01613ed0565b965050608061440b8c828d01613ed0565b95505060a061441c8c828d0161414d565b94505060c061442d8c828d0161414d565b93505060e061443e8c828d01613f75565b9250506101008a013567ffffffffffffffff8111156144605761445f613e82565b5b61446c8c828d01614368565b9150509295985092959850929598565b6000806040838503121561449357614492613e7d565b5b60006144a185828601613f75565b92505060206144b28582860161414d565b9150509250929050565b6000602082840312156144d2576144d1613e7d565b5b60006144e08482850161414d565b91505092915050565b600082825260208201905092915050565b7f436f6e7472616374206973207061757365640000000000000000000000000000600082015250565b60006145306012836144e9565b915061453b826144fa565b602082019050919050565b6000602082019050818103600083015261455f81614523565b9050919050565b7f4e6f7420617574686f72697a65643a205465737461746f72207265717569726560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b60006145c26021836144e9565b91506145cd82614566565b604082019050919050565b600060208201905081810360008301526145f1816145b5565b9050919050565b7f496e76616c696420737461746500000000000000000000000000000000000000600082015250565b600061462e600d836144e9565b9150614639826145f8565b602082019050919050565b6000602082019050818103600083015261465d81614621565b9050919050565b7f4e6f7420617574686f72697a65643a2041646d696e2072657175697265640000600082015250565b600061469a601e836144e9565b91506146a582614664565b602082019050919050565b600060208201905081810360008301526146c98161468d565b9050919050565b7f4e6f7420617574686f72697a65643a2042656e6566696369617279207265717560008201527f6972656400000000000000000000000000000000000000000000000000000000602082015250565b600061472c6024836144e9565b9150614737826146d0565b604082019050919050565b6000602082019050818103600083015261475b8161471f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061479c82613f12565b91506147a783613f12565b92508282019050808211156147bf576147be614762565b5b92915050565b60006040820190506147da6000830185614008565b6147e76020830184613f1c565b9392505050565b7f496e76616c69642061646d696e20616464726573730000000000000000000000600082015250565b60006148246015836144e9565b915061482f826147ee565b602082019050919050565b6000602082019050818103600083015261485381614817565b9050919050565b7f4e6f7420617574686f72697a65643a205665726966696572207265717569726560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b60006148b66021836144e9565b91506148c18261485a565b604082019050919050565b600060208201905081810360008301526148e5816148a9565b9050919050565b7f416c726561647920766572696669656400000000000000000000000000000000600082015250565b60006149226010836144e9565b915061492d826148ec565b602082019050919050565b6000602082019050818103600083015261495181614915565b9050919050565b7f566572696669636174696f6e206e6f74206e6565646564000000000000000000600082015250565b600061498e6017836144e9565b915061499982614958565b602082019050919050565b600060208201905081810360008301526149bd81614981565b9050919050565b7f566572696669636174696f6e2064656c6179206e6f7420657870697265640000600082015250565b60006149fa601e836144e9565b9150614a05826149c4565b602082019050919050565b60006020820190508181036000830152614a29816149ed565b9050919050565b6000819050919050565b614a4b614a4682613f54565b614a30565b82525050565b60008160601b9050919050565b6000614a6982614a51565b9050919050565b6000614a7b82614a5e565b9050919050565b614a93614a8e82613ea7565b614a70565b82525050565b6000614aa58286614a3a565b602082019150614ab58285614a82565b601482019150614ac58284614a82565b601482019150819050949350505050565b7f496e76616c6964206170706c69636174696f6e207369676e6174757265000000600082015250565b6000614b0c601d836144e9565b9150614b1782614ad6565b602082019050919050565b60006020820190508181036000830152614b3b81614aff565b9050919050565b7f496e76616c69642062656e656669636961727900000000000000000000000000600082015250565b6000614b786013836144e9565b9150614b8382614b42565b602082019050919050565b60006020820190508181036000830152614ba781614b6b565b9050919050565b7f496e76616c6964207465737461746f7200000000000000000000000000000000600082015250565b6000614be46010836144e9565b9150614bef82614bae565b602082019050919050565b60006020820190508181036000830152614c1381614bd7565b9050919050565b7f42656e65666963696172792063616e6e6f74206265207465737461746f720000600082015250565b6000614c50601e836144e9565b9150614c5b82614c1a565b602082019050919050565b60006020820190508181036000830152614c7f81614c43565b9050919050565b7f496e76616c696420636865636b2d696e20696e74657276616c00000000000000600082015250565b6000614cbc6019836144e9565b9150614cc782614c86565b602082019050919050565b60006020820190508181036000830152614ceb81614caf565b9050919050565b7f4e6f7420636c61696d61626c6520796574000000000000000000000000000000600082015250565b6000614d286011836144e9565b9150614d3382614cf2565b602082019050919050565b60006020820190508181036000830152614d5781614d1b565b9050919050565b7f5363686564756c65642074696d65206d75737420626520696e20667574757265600082015250565b6000614d946020836144e9565b9150614d9f82614d5e565b602082019050919050565b60006020820190508181036000830152614dc381614d87565b9050919050565b600081905092915050565b7f19457468657265756d205369676e6564204d6573736167653a0a333200000000600082015250565b6000614e0b601c83614dca565b9150614e1682614dd5565b601c82019050919050565b6000614e2c82614dfe565b9150614e388284614a3a565b60208201915081905092915050565b600060ff82169050919050565b614e5d81614e47565b82525050565b6000608082019050614e78600083018761408e565b614e856020830186614e54565b614e92604083018561408e565b614e9f606083018461408e565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f496e76616c6964207369676e6174757265206c656e6774680000000000000000600082015250565b6000614f0d6018836144e9565b9150614f1882614ed7565b602082019050919050565b60006020820190508181036000830152614f3c81614f00565b9050919050565b6000614f4e82614e47565b9150614f5983614e47565b9250828201905060ff811115614f7257614f71614762565b5b9291505056fea2646970667358221220f162ce555e616afa3ebdc00e768040b6bc98331bcde9ecc7e6d2979534c06ad464736f6c63430008180033