60806040526040518060200160405280600081525060089081620000249190620005b8565b506040518060400160405280600581526020017f2e6a736f6e000000000000000000000000000000000000000000000000000000815250600990816200006b9190620005b8565b506000600b55611e61600c55600a600d556000600e60006101000a81548160ff0219169083151502179055506000600e60016101000a81548160ff021916908315150217905550348015620000bf57600080fd5b506040518060400160405280600e81526020017f43727970746f2042726f736b69730000000000000000000000000000000000008152506040518060400160405280600581526020017f4342534b4900000000000000000000000000000000000000000000000000000081525081600090816200013d9190620005b8565b5080600190816200014f9190620005b8565b5050506200017262000166620001a260201b60201c565b620001aa60201b60201c565b6200019c60405180608001604052806044815260200162004a83604491396200027060201b60201c565b62000722565b600033905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b62000280620001a260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620002a66200031460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620002ff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002f69062000700565b60405180910390fd5b80600a9081620003109190620005b8565b5050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620003c057607f821691505b602082108103620003d657620003d562000378565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620004407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000401565b6200044c868362000401565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000499620004936200048d8462000464565b6200046e565b62000464565b9050919050565b6000819050919050565b620004b58362000478565b620004cd620004c482620004a0565b8484546200040e565b825550505050565b600090565b620004e4620004d5565b620004f1818484620004aa565b505050565b5b8181101562000519576200050d600082620004da565b600181019050620004f7565b5050565b601f82111562000568576200053281620003dc565b6200053d84620003f1565b810160208510156200054d578190505b620005656200055c85620003f1565b830182620004f6565b50505b505050565b600082821c905092915050565b60006200058d600019846008026200056d565b1980831691505092915050565b6000620005a883836200057a565b9150826002028217905092915050565b620005c3826200033e565b67ffffffffffffffff811115620005df57620005de62000349565b5b620005eb8254620003a7565b620005f88282856200051d565b600060209050601f8311600181146200063057600084156200061b578287015190505b6200062785826200059a565b86555062000697565b601f1984166200064086620003dc565b60005b828110156200066a5784890151825560018201915060208501945060208101905062000643565b868310156200068a578489015162000686601f8916826200057a565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620006e86020836200069f565b9150620006f582620006b0565b602082019050919050565b600060208201905081810360008301526200071b81620006d9565b9050919050565b61435180620007326000396000f3fe60806040526004361061020f5760003560e01c80636352211e11610118578063a45ba8e7116100a0578063d5abeb011161006f578063d5abeb0114610768578063e0a8085314610793578063e985e9c5146107bc578063efbd73f4146107f9578063f2fde38b146108225761020f565b8063a45ba8e7146106ae578063b071401b146106d9578063b88d4fde14610702578063c87b56dd1461072b5761020f565b80638da5cb5b116100e75780638da5cb5b146105e857806394354fd01461061357806395d89b411461063e578063a0712d6814610669578063a22cb465146106855761020f565b80636352211e1461052e57806370a082311461056b578063715018a6146105a85780637ec4a659146105bf5761020f565b80633ccfd60b1161019b5780634fdd43cb1161016a5780634fdd43cb1461045957806351830227146104825780635503a0e8146104ad5780635c975abb146104d857806362b99ad4146105035761020f565b80633ccfd60b146103b357806342842e0e146103ca578063438b6300146103f357806344a0d68a146104305761020f565b806313faede6116101e257806313faede6146102e257806316ba10e01461030d57806316c38b3c1461033657806318160ddd1461035f57806323b872dd1461038a5761020f565b806301ffc9a71461021457806306fdde0314610251578063081812fc1461027c578063095ea7b3146102b9575b600080fd5b34801561022057600080fd5b5061023b60048036038101906102369190612a86565b61084b565b6040516102489190612ace565b60405180910390f35b34801561025d57600080fd5b5061026661092d565b6040516102739190612b79565b60405180910390f35b34801561028857600080fd5b506102a3600480360381019061029e9190612bd1565b6109bf565b6040516102b09190612c3f565b60405180910390f35b3480156102c557600080fd5b506102e060048036038101906102db9190612c86565b610a44565b005b3480156102ee57600080fd5b506102f7610b5b565b6040516103049190612cd5565b60405180910390f35b34801561031957600080fd5b50610334600480360381019061032f9190612e25565b610b61565b005b34801561034257600080fd5b5061035d60048036038101906103589190612e9a565b610bf0565b005b34801561036b57600080fd5b50610374610c89565b6040516103819190612cd5565b60405180910390f35b34801561039657600080fd5b506103b160048036038101906103ac9190612ec7565b610c9a565b005b3480156103bf57600080fd5b506103c8610cfa565b005b3480156103d657600080fd5b506103f160048036038101906103ec9190612ec7565b610df6565b005b3480156103ff57600080fd5b5061041a60048036038101906104159190612f1a565b610e16565b6040516104279190613005565b60405180910390f35b34801561043c57600080fd5b5061045760048036038101906104529190612bd1565b610f20565b005b34801561046557600080fd5b50610480600480360381019061047b9190612e25565b610fa6565b005b34801561048e57600080fd5b50610497611035565b6040516104a49190612ace565b60405180910390f35b3480156104b957600080fd5b506104c2611048565b6040516104cf9190612b79565b60405180910390f35b3480156104e457600080fd5b506104ed6110d6565b6040516104fa9190612ace565b60405180910390f35b34801561050f57600080fd5b506105186110e9565b6040516105259190612b79565b60405180910390f35b34801561053a57600080fd5b5061055560048036038101906105509190612bd1565b611177565b6040516105629190612c3f565b60405180910390f35b34801561057757600080fd5b50610592600480360381019061058d9190612f1a565b611228565b60405161059f9190612cd5565b60405180910390f35b3480156105b457600080fd5b506105bd6112df565b005b3480156105cb57600080fd5b506105e660048036038101906105e19190612e25565b611367565b005b3480156105f457600080fd5b506105fd6113f6565b60405161060a9190612c3f565b60405180910390f35b34801561061f57600080fd5b50610628611420565b6040516106359190612cd5565b60405180910390f35b34801561064a57600080fd5b50610653611426565b6040516106609190612b79565b60405180910390f35b610683600480360381019061067e9190612bd1565b6114b8565b005b34801561069157600080fd5b506106ac60048036038101906106a79190613027565b611611565b005b3480156106ba57600080fd5b506106c3611627565b6040516106d09190612b79565b60405180910390f35b3480156106e557600080fd5b5061070060048036038101906106fb9190612bd1565b6116b5565b005b34801561070e57600080fd5b5061072960048036038101906107249190613108565b61173b565b005b34801561073757600080fd5b50610752600480360381019061074d9190612bd1565b61179d565b60405161075f9190612b79565b60405180910390f35b34801561077457600080fd5b5061077d6118f5565b60405161078a9190612cd5565b60405180910390f35b34801561079f57600080fd5b506107ba60048036038101906107b59190612e9a565b6118fb565b005b3480156107c857600080fd5b506107e360048036038101906107de919061318b565b611994565b6040516107f09190612ace565b60405180910390f35b34801561080557600080fd5b50610820600480360381019061081b91906131cb565b611a28565b005b34801561082e57600080fd5b5061084960048036038101906108449190612f1a565b611b5e565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061091657507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610926575061092582611c55565b5b9050919050565b60606000805461093c9061323a565b80601f01602080910402602001604051908101604052809291908181526020018280546109689061323a565b80156109b55780601f1061098a576101008083540402835291602001916109b5565b820191906000526020600020905b81548152906001019060200180831161099857829003601f168201915b5050505050905090565b60006109ca82611cbf565b610a09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a00906132dd565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610a4f82611177565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610abf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab69061336f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610ade611d2b565b73ffffffffffffffffffffffffffffffffffffffff161480610b0d5750610b0c81610b07611d2b565b611994565b5b610b4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4390613401565b60405180910390fd5b610b568383611d33565b505050565b600b5481565b610b69611d2b565b73ffffffffffffffffffffffffffffffffffffffff16610b876113f6565b73ffffffffffffffffffffffffffffffffffffffff1614610bdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd49061346d565b60405180910390fd5b8060099081610bec9190613639565b5050565b610bf8611d2b565b73ffffffffffffffffffffffffffffffffffffffff16610c166113f6565b73ffffffffffffffffffffffffffffffffffffffff1614610c6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c639061346d565b60405180910390fd5b80600e60006101000a81548160ff02191690831515021790555050565b6000610c956007611dec565b905090565b610cab610ca5611d2b565b82611dfa565b610cea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce19061377d565b60405180910390fd5b610cf5838383611ed8565b505050565b610d02611d2b565b73ffffffffffffffffffffffffffffffffffffffff16610d206113f6565b73ffffffffffffffffffffffffffffffffffffffff1614610d76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6d9061346d565b60405180910390fd5b6000610d806113f6565b73ffffffffffffffffffffffffffffffffffffffff1647604051610da3906137ce565b60006040518083038185875af1925050503d8060008114610de0576040519150601f19603f3d011682016040523d82523d6000602084013e610de5565b606091505b5050905080610df357600080fd5b50565b610e118383836040518060200160405280600081525061173b565b505050565b60606000610e2383611228565b905060008167ffffffffffffffff811115610e4157610e40612cfa565b5b604051908082528060200260200182016040528015610e6f5781602001602082028036833780820191505090505b50905060006001905060005b8381108015610e8c5750600c548211155b15610f14576000610e9c83611177565b90508673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610f005782848381518110610ee557610ee46137e3565b5b6020026020010181815250508180610efc90613841565b9250505b8280610f0b90613841565b93505050610e7b565b82945050505050919050565b610f28611d2b565b73ffffffffffffffffffffffffffffffffffffffff16610f466113f6565b73ffffffffffffffffffffffffffffffffffffffff1614610f9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f939061346d565b60405180910390fd5b80600b8190555050565b610fae611d2b565b73ffffffffffffffffffffffffffffffffffffffff16610fcc6113f6565b73ffffffffffffffffffffffffffffffffffffffff1614611022576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110199061346d565b60405180910390fd5b80600a90816110319190613639565b5050565b600e60019054906101000a900460ff1681565b600980546110559061323a565b80601f01602080910402602001604051908101604052809291908181526020018280546110819061323a565b80156110ce5780601f106110a3576101008083540402835291602001916110ce565b820191906000526020600020905b8154815290600101906020018083116110b157829003601f168201915b505050505081565b600e60009054906101000a900460ff1681565b600880546110f69061323a565b80601f01602080910402602001604051908101604052809291908181526020018280546111229061323a565b801561116f5780601f106111445761010080835404028352916020019161116f565b820191906000526020600020905b81548152906001019060200180831161115257829003601f168201915b505050505081565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361121f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611216906138fb565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611298576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128f9061398d565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6112e7611d2b565b73ffffffffffffffffffffffffffffffffffffffff166113056113f6565b73ffffffffffffffffffffffffffffffffffffffff161461135b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113529061346d565b60405180910390fd5b611365600061213e565b565b61136f611d2b565b73ffffffffffffffffffffffffffffffffffffffff1661138d6113f6565b73ffffffffffffffffffffffffffffffffffffffff16146113e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113da9061346d565b60405180910390fd5b80600890816113f29190613639565b5050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600d5481565b6060600180546114359061323a565b80601f01602080910402602001604051908101604052809291908181526020018280546114619061323a565b80156114ae5780601f10611483576101008083540402835291602001916114ae565b820191906000526020600020905b81548152906001019060200180831161149157829003601f168201915b5050505050905090565b806000811180156114cb5750600d548111155b61150a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611501906139f9565b60405180910390fd5b600c54816115186007611dec565b6115229190613a19565b1115611563576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155a90613a99565b60405180910390fd5b600e60009054906101000a900460ff16156115b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115aa90613b05565b60405180910390fd5b81600b546115c19190613b25565b341015611603576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115fa90613bb3565b60405180910390fd5b61160d3383612204565b5050565b61162361161c611d2b565b8383612244565b5050565b600a80546116349061323a565b80601f01602080910402602001604051908101604052809291908181526020018280546116609061323a565b80156116ad5780601f10611682576101008083540402835291602001916116ad565b820191906000526020600020905b81548152906001019060200180831161169057829003601f168201915b505050505081565b6116bd611d2b565b73ffffffffffffffffffffffffffffffffffffffff166116db6113f6565b73ffffffffffffffffffffffffffffffffffffffff1614611731576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117289061346d565b60405180910390fd5b80600d8190555050565b61174c611746611d2b565b83611dfa565b61178b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117829061377d565b60405180910390fd5b611797848484846123b0565b50505050565b60606117a882611cbf565b6117e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117de90613c45565b60405180910390fd5b60001515600e60019054906101000a900460ff1615150361189457600a805461180f9061323a565b80601f016020809104026020016040519081016040528092919081815260200182805461183b9061323a565b80156118885780601f1061185d57610100808354040283529160200191611888565b820191906000526020600020905b81548152906001019060200180831161186b57829003601f168201915b505050505090506118f0565b600061189e61240c565b905060008151116118be57604051806020016040528060008152506118ec565b806118c88461249e565b60096040516020016118dc93929190613d24565b6040516020818303038152906040525b9150505b919050565b600c5481565b611903611d2b565b73ffffffffffffffffffffffffffffffffffffffff166119216113f6565b73ffffffffffffffffffffffffffffffffffffffff1614611977576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196e9061346d565b60405180910390fd5b80600e60016101000a81548160ff02191690831515021790555050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b81600081118015611a3b5750600d548111155b611a7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a71906139f9565b60405180910390fd5b600c5481611a886007611dec565b611a929190613a19565b1115611ad3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aca90613a99565b60405180910390fd5b611adb611d2b565b73ffffffffffffffffffffffffffffffffffffffff16611af96113f6565b73ffffffffffffffffffffffffffffffffffffffff1614611b4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b469061346d565b60405180910390fd5b611b598284612204565b505050565b611b66611d2b565b73ffffffffffffffffffffffffffffffffffffffff16611b846113f6565b73ffffffffffffffffffffffffffffffffffffffff1614611bda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd19061346d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4090613dc7565b60405180910390fd5b611c528161213e565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16611da683611177565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600081600001549050919050565b6000611e0582611cbf565b611e44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3b90613e59565b60405180910390fd5b6000611e4f83611177565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611ebe57508373ffffffffffffffffffffffffffffffffffffffff16611ea6846109bf565b73ffffffffffffffffffffffffffffffffffffffff16145b80611ecf5750611ece8185611994565b5b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16611ef882611177565b73ffffffffffffffffffffffffffffffffffffffff1614611f4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4590613eeb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb490613f7d565b60405180910390fd5b611fc88383836125fe565b611fd3600082611d33565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546120239190613f9d565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461207a9190613a19565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612139838383612603565b505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60005b8181101561223f576122196007612608565b61222c836122276007611dec565b61261e565b808061223790613841565b915050612207565b505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036122b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a99061401d565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516123a39190612ace565b60405180910390a3505050565b6123bb848484611ed8565b6123c78484848461263c565b612406576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123fd906140af565b60405180910390fd5b50505050565b60606008805461241b9061323a565b80601f01602080910402602001604051908101604052809291908181526020018280546124479061323a565b80156124945780601f1061246957610100808354040283529160200191612494565b820191906000526020600020905b81548152906001019060200180831161247757829003601f168201915b5050505050905090565b6060600082036124e5576040518060400160405280600181526020017f300000000000000000000000000000000000000000000000000000000000000081525090506125f9565b600082905060005b6000821461251757808061250090613841565b915050600a8261251091906140fe565b91506124ed565b60008167ffffffffffffffff81111561253357612532612cfa565b5b6040519080825280601f01601f1916602001820160405280156125655781602001600182028036833780820191505090505b5090505b600085146125f25760018261257e9190613f9d565b9150600a8561258d919061412f565b60306125999190613a19565b60f81b8183815181106125af576125ae6137e3565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856125eb91906140fe565b9450612569565b8093505050505b919050565b505050565b505050565b6001816000016000828254019250508190555050565b6126388282604051806020016040528060008152506127c3565b5050565b600061265d8473ffffffffffffffffffffffffffffffffffffffff1661281e565b156127b6578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612686611d2b565b8786866040518563ffffffff1660e01b81526004016126a894939291906141b5565b6020604051808303816000875af19250505080156126e457506040513d601f19601f820116820180604052508101906126e19190614216565b60015b612766573d8060008114612714576040519150601f19603f3d011682016040523d82523d6000602084013e612719565b606091505b50600081510361275e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612755906140af565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150506127bb565b600190505b949350505050565b6127cd8383612841565b6127da600084848461263c565b612819576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612810906140af565b60405180910390fd5b505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128a79061428f565b60405180910390fd5b6128b981611cbf565b156128f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128f0906142fb565b60405180910390fd5b612905600083836125fe565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546129559190613a19565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612a1660008383612603565b5050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612a6381612a2e565b8114612a6e57600080fd5b50565b600081359050612a8081612a5a565b92915050565b600060208284031215612a9c57612a9b612a24565b5b6000612aaa84828501612a71565b91505092915050565b60008115159050919050565b612ac881612ab3565b82525050565b6000602082019050612ae36000830184612abf565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b23578082015181840152602081019050612b08565b60008484015250505050565b6000601f19601f8301169050919050565b6000612b4b82612ae9565b612b558185612af4565b9350612b65818560208601612b05565b612b6e81612b2f565b840191505092915050565b60006020820190508181036000830152612b938184612b40565b905092915050565b6000819050919050565b612bae81612b9b565b8114612bb957600080fd5b50565b600081359050612bcb81612ba5565b92915050565b600060208284031215612be757612be6612a24565b5b6000612bf584828501612bbc565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c2982612bfe565b9050919050565b612c3981612c1e565b82525050565b6000602082019050612c546000830184612c30565b92915050565b612c6381612c1e565b8114612c6e57600080fd5b50565b600081359050612c8081612c5a565b92915050565b60008060408385031215612c9d57612c9c612a24565b5b6000612cab85828601612c71565b9250506020612cbc85828601612bbc565b9150509250929050565b612ccf81612b9b565b82525050565b6000602082019050612cea6000830184612cc6565b92915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612d3282612b2f565b810181811067ffffffffffffffff82111715612d5157612d50612cfa565b5b80604052505050565b6000612d64612a1a565b9050612d708282612d29565b919050565b600067ffffffffffffffff821115612d9057612d8f612cfa565b5b612d9982612b2f565b9050602081019050919050565b82818337600083830152505050565b6000612dc8612dc384612d75565b612d5a565b905082815260208101848484011115612de457612de3612cf5565b5b612def848285612da6565b509392505050565b600082601f830112612e0c57612e0b612cf0565b5b8135612e1c848260208601612db5565b91505092915050565b600060208284031215612e3b57612e3a612a24565b5b600082013567ffffffffffffffff811115612e5957612e58612a29565b5b612e6584828501612df7565b91505092915050565b612e7781612ab3565b8114612e8257600080fd5b50565b600081359050612e9481612e6e565b92915050565b600060208284031215612eb057612eaf612a24565b5b6000612ebe84828501612e85565b91505092915050565b600080600060608486031215612ee057612edf612a24565b5b6000612eee86828701612c71565b9350506020612eff86828701612c71565b9250506040612f1086828701612bbc565b9150509250925092565b600060208284031215612f3057612f2f612a24565b5b6000612f3e84828501612c71565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612f7c81612b9b565b82525050565b6000612f8e8383612f73565b60208301905092915050565b6000602082019050919050565b6000612fb282612f47565b612fbc8185612f52565b9350612fc783612f63565b8060005b83811015612ff8578151612fdf8882612f82565b9750612fea83612f9a565b925050600181019050612fcb565b5085935050505092915050565b6000602082019050818103600083015261301f8184612fa7565b905092915050565b6000806040838503121561303e5761303d612a24565b5b600061304c85828601612c71565b925050602061305d85828601612e85565b9150509250929050565b600067ffffffffffffffff82111561308257613081612cfa565b5b61308b82612b2f565b9050602081019050919050565b60006130ab6130a684613067565b612d5a565b9050828152602081018484840111156130c7576130c6612cf5565b5b6130d2848285612da6565b509392505050565b600082601f8301126130ef576130ee612cf0565b5b81356130ff848260208601613098565b91505092915050565b6000806000806080858703121561312257613121612a24565b5b600061313087828801612c71565b945050602061314187828801612c71565b935050604061315287828801612bbc565b925050606085013567ffffffffffffffff81111561317357613172612a29565b5b61317f878288016130da565b91505092959194509250565b600080604083850312156131a2576131a1612a24565b5b60006131b085828601612c71565b92505060206131c185828601612c71565b9150509250929050565b600080604083850312156131e2576131e1612a24565b5b60006131f085828601612bbc565b925050602061320185828601612c71565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061325257607f821691505b6020821081036132655761326461320b565b5b50919050565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b60006132c7602c83612af4565b91506132d28261326b565b604082019050919050565b600060208201905081810360008301526132f6816132ba565b9050919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000613359602183612af4565b9150613364826132fd565b604082019050919050565b600060208201905081810360008301526133888161334c565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b60006133eb603883612af4565b91506133f68261338f565b604082019050919050565b6000602082019050818103600083015261341a816133de565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613457602083612af4565b915061346282613421565b602082019050919050565b600060208201905081810360008301526134868161344a565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026134ef7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826134b2565b6134f986836134b2565b95508019841693508086168417925050509392505050565b6000819050919050565b600061353661353161352c84612b9b565b613511565b612b9b565b9050919050565b6000819050919050565b6135508361351b565b61356461355c8261353d565b8484546134bf565b825550505050565b600090565b61357961356c565b613584818484613547565b505050565b5b818110156135a85761359d600082613571565b60018101905061358a565b5050565b601f8211156135ed576135be8161348d565b6135c7846134a2565b810160208510156135d6578190505b6135ea6135e2856134a2565b830182613589565b50505b505050565b600082821c905092915050565b6000613610600019846008026135f2565b1980831691505092915050565b600061362983836135ff565b9150826002028217905092915050565b61364282612ae9565b67ffffffffffffffff81111561365b5761365a612cfa565b5b613665825461323a565b6136708282856135ac565b600060209050601f8311600181146136a35760008415613691578287015190505b61369b858261361d565b865550613703565b601f1984166136b18661348d565b60005b828110156136d9578489015182556001820191506020850194506020810190506136b4565b868310156136f657848901516136f2601f8916826135ff565b8355505b6001600288020188555050505b505050505050565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b6000613767603183612af4565b91506137728261370b565b604082019050919050565b600060208201905081810360008301526137968161375a565b9050919050565b600081905092915050565b50565b60006137b860008361379d565b91506137c3826137a8565b600082019050919050565b60006137d9826137ab565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061384c82612b9b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361387e5761387d613812565b5b600182019050919050565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b60006138e5602983612af4565b91506138f082613889565b604082019050919050565b60006020820190508181036000830152613914816138d8565b9050919050565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b6000613977602a83612af4565b91506139828261391b565b604082019050919050565b600060208201905081810360008301526139a68161396a565b9050919050565b7f496e76616c6964206d696e7420616d6f756e7421000000000000000000000000600082015250565b60006139e3601483612af4565b91506139ee826139ad565b602082019050919050565b60006020820190508181036000830152613a12816139d6565b9050919050565b6000613a2482612b9b565b9150613a2f83612b9b565b9250828201905080821115613a4757613a46613812565b5b92915050565b7f4d617820737570706c7920657863656564656421000000000000000000000000600082015250565b6000613a83601483612af4565b9150613a8e82613a4d565b602082019050919050565b60006020820190508181036000830152613ab281613a76565b9050919050565b7f54686520636f6e74726163742069732070617573656421000000000000000000600082015250565b6000613aef601783612af4565b9150613afa82613ab9565b602082019050919050565b60006020820190508181036000830152613b1e81613ae2565b9050919050565b6000613b3082612b9b565b9150613b3b83612b9b565b9250828202613b4981612b9b565b91508282048414831517613b6057613b5f613812565b5b5092915050565b7f496e73756666696369656e742066756e64732100000000000000000000000000600082015250565b6000613b9d601383612af4565b9150613ba882613b67565b602082019050919050565b60006020820190508181036000830152613bcc81613b90565b9050919050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b6000613c2f602f83612af4565b9150613c3a82613bd3565b604082019050919050565b60006020820190508181036000830152613c5e81613c22565b9050919050565b600081905092915050565b6000613c7b82612ae9565b613c858185613c65565b9350613c95818560208601612b05565b80840191505092915050565b60008154613cae8161323a565b613cb88186613c65565b94506001821660008114613cd35760018114613ce857613d1b565b60ff1983168652811515820286019350613d1b565b613cf18561348d565b60005b83811015613d1357815481890152600182019150602081019050613cf4565b838801955050505b50505092915050565b6000613d308286613c70565b9150613d3c8285613c70565b9150613d488284613ca1565b9150819050949350505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613db1602683612af4565b9150613dbc82613d55565b604082019050919050565b60006020820190508181036000830152613de081613da4565b9050919050565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b6000613e43602c83612af4565b9150613e4e82613de7565b604082019050919050565b60006020820190508181036000830152613e7281613e36565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000613ed5602583612af4565b9150613ee082613e79565b604082019050919050565b60006020820190508181036000830152613f0481613ec8565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613f67602483612af4565b9150613f7282613f0b565b604082019050919050565b60006020820190508181036000830152613f9681613f5a565b9050919050565b6000613fa882612b9b565b9150613fb383612b9b565b9250828203905081811115613fcb57613fca613812565b5b92915050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b6000614007601983612af4565b915061401282613fd1565b602082019050919050565b6000602082019050818103600083015261403681613ffa565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000614099603283612af4565b91506140a48261403d565b604082019050919050565b600060208201905081810360008301526140c88161408c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061410982612b9b565b915061411483612b9b565b925082614124576141236140cf565b5b828204905092915050565b600061413a82612b9b565b915061414583612b9b565b925082614155576141546140cf565b5b828206905092915050565b600081519050919050565b600082825260208201905092915050565b600061418782614160565b614191818561416b565b93506141a1818560208601612b05565b6141aa81612b2f565b840191505092915050565b60006080820190506141ca6000830187612c30565b6141d76020830186612c30565b6141e46040830185612cc6565b81810360608301526141f6818461417c565b905095945050505050565b60008151905061421081612a5a565b92915050565b60006020828403121561422c5761422b612a24565b5b600061423a84828501614201565b91505092915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b6000614279602083612af4565b915061428482614243565b602082019050919050565b600060208201905081810360008301526142a88161426c565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b60006142e5601c83612af4565b91506142f0826142af565b602082019050919050565b60006020820190508181036000830152614314816142d8565b905091905056fea2646970667358221220f7242b82efa5c0e188ee0c2a562d11f9f2f16f425e1205b7dfb33f65503c8a9e64736f6c63430008120033697066733a2f2f516d5a4c77437a35736e6135775766645563415878354d764e534765564a596134523448663845625761387946652f68696464656e416c742e6a736f6e