6080604052670de0b6b3a76400006000196200001c919062000759565b6000196200002b9190620007c0565b6006556000600855600a6009556000600a55601e600b55600a54600c55600b54600d55600c54600e55600d54600f5573286dc5551fb1297560484d1c64f93ca8fffc770e601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073286dc5551fb1297560484d1c64f93ca8fffc770e601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601560146101000a81548160ff02191690831515021790555060006015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff02191690831515021790555066470de4df82000060165566470de4df8200006017556509184e72a0006018553480156200018157600080fd5b50600062000194620006ef60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506006546002600062000249620006ef60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200032857600080fd5b505afa1580156200033d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000363919062000865565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003c657600080fd5b505afa158015620003db573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000401919062000865565b6040518363ffffffff1660e01b815260040162000420929190620008a8565b602060405180830381600087803b1580156200043b57600080fd5b505af115801562000450573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000476919062000865565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620004cc620006f760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000679620006ef60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a7640000604051620006e09190620008e6565b60405180910390a35062000903565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620007668262000720565b9150620007738362000720565b9250826200078657620007856200072a565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620007cd8262000720565b9150620007da8362000720565b925082821015620007f057620007ef62000791565b5b828203905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200082d8262000800565b9050919050565b6200083f8162000820565b81146200084b57600080fd5b50565b6000815190506200085f8162000834565b92915050565b6000602082840312156200087e576200087d620007fb565b5b60006200088e848285016200084e565b91505092915050565b620008a28162000820565b82525050565b6000604082019050620008bf600083018562000897565b620008ce602083018462000897565b9392505050565b620008e08162000720565b82525050565b6000602082019050620008fd6000830184620008d5565b92915050565b613d9680620009136000396000f3fe6080604052600436106101d15760003560e01c8063715018a6116100f7578063b360711d11610095578063c92823ba11610064578063c92823ba1461065f578063dd62ed3e14610688578063e6126c76146106c5578063f2fde38b146106ee576101d8565b8063b360711d146105b9578063b792507e146105d0578063bfd79284146105f9578063c492f04614610636576101d8565b80638da5cb5b116100d15780638da5cb5b146104fb5780638f9a55c01461052657806395d89b4114610551578063a9059cbb1461057c576101d8565b8063715018a61461047c5780637d1db4a5146104935780637f2feddc146104be576101d8565b8063313ce5671161016f57806351bc3c851161013e57806351bc3c85146103d65780635c63bfbb146103ed5780636d8aa8f81461041657806370a082311461043f576101d8565b8063313ce5671461032c5780633ee0f5f51461035757806349bd5a5e146103805780634a1263f3146103ab576101d8565b806318160ddd116101ab57806318160ddd1461027057806323b872dd1461029b5780632fd689e3146102d857806330d35dee14610303576101d8565b806306fdde03146101dd578063095ea7b3146102085780631694505e14610245576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f2610717565b6040516101ff9190612bb0565b60405180910390f35b34801561021457600080fd5b5061022f600480360381019061022a9190612c7a565b610754565b60405161023c9190612cd5565b60405180910390f35b34801561025157600080fd5b5061025a610772565b6040516102679190612d4f565b60405180910390f35b34801561027c57600080fd5b50610285610798565b6040516102929190612d79565b60405180910390f35b3480156102a757600080fd5b506102c260048036038101906102bd9190612d94565b6107a8565b6040516102cf9190612cd5565b60405180910390f35b3480156102e457600080fd5b506102ed610881565b6040516102fa9190612d79565b60405180910390f35b34801561030f57600080fd5b5061032a60048036038101906103259190612e13565b610887565b005b34801561033857600080fd5b50610341610939565b60405161034e9190612e5c565b60405180910390f35b34801561036357600080fd5b5061037e60048036038101906103799190612e77565b610942565b005b34801561038c57600080fd5b506103956109e1565b6040516103a29190612eb3565b60405180910390f35b3480156103b757600080fd5b506103c0610a07565b6040516103cd9190612d79565b60405180910390f35b3480156103e257600080fd5b506103eb610a11565b005b3480156103f957600080fd5b50610414600480360381019061040f9190612ece565b610aea565b005b34801561042257600080fd5b5061043d60048036038101906104389190612e13565b610b91565b005b34801561044b57600080fd5b5061046660048036038101906104619190612f0e565b610c43565b6040516104739190612d79565b60405180910390f35b34801561048857600080fd5b50610491610c94565b005b34801561049f57600080fd5b506104a8610de7565b6040516104b59190612d79565b60405180910390f35b3480156104ca57600080fd5b506104e560048036038101906104e09190612f0e565b610ded565b6040516104f29190612d79565b60405180910390f35b34801561050757600080fd5b50610510610e05565b60405161051d9190612eb3565b60405180910390f35b34801561053257600080fd5b5061053b610e2e565b6040516105489190612d79565b60405180910390f35b34801561055d57600080fd5b50610566610e34565b6040516105739190612bb0565b60405180910390f35b34801561058857600080fd5b506105a3600480360381019061059e9190612c7a565b610e71565b6040516105b09190612cd5565b60405180910390f35b3480156105c557600080fd5b506105ce610e8f565b005b3480156105dc57600080fd5b506105f760048036038101906105f29190612f0e565b610f60565b005b34801561060557600080fd5b50610620600480360381019061061b9190612f0e565b611050565b60405161062d9190612cd5565b60405180910390f35b34801561064257600080fd5b5061065d60048036038101906106589190612fa0565b611070565b005b34801561066b57600080fd5b506106866004803603810190610681919061313e565b6111aa565b005b34801561069457600080fd5b506106af60048036038101906106aa9190613187565b6112d4565b6040516106bc9190612d79565b60405180910390f35b3480156106d157600080fd5b506106ec60048036038101906106e791906131c7565b61135b565b005b3480156106fa57600080fd5b5061071560048036038101906107109190612f0e565b611412565b005b60606040518060400160405280600381526020017f446f670000000000000000000000000000000000000000000000000000000000815250905090565b60006107686107616115d4565b84846115dc565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b60006107b58484846117a7565b610876846107c16115d4565b61087185604051806060016040528060288152602001613d3960289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108276115d4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461202c9092919063ffffffff16565b6115dc565b600190509392505050565b60185481565b61088f6115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461091c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109139061327a565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60006009905090565b61094a6115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ce9061327a565b60405180910390fd5b8060188190555050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600954905090565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a526115d4565b73ffffffffffffffffffffffffffffffffffffffff161480610ac85750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ab06115d4565b73ffffffffffffffffffffffffffffffffffffffff16145b610ad157600080fd5b6000610adc30610c43565b9050610ae781612090565b50565b610af26115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b769061327a565b60405180910390fd5b81601681905550806017819055505050565b610b996115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1d9061327a565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b6000610c8d600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612316565b9050919050565b610c9c6115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d209061327a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60175481565b60606040518060400160405280600381526020017f444f470000000000000000000000000000000000000000000000000000000000815250905090565b6000610e85610e7e6115d4565b84846117a7565b6001905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ed06115d4565b73ffffffffffffffffffffffffffffffffffffffff161480610f465750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f2e6115d4565b73ffffffffffffffffffffffffffffffffffffffff16145b610f4f57600080fd5b6000479050610f5d81612384565b50565b610f686115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ff5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fec9061327a565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60106020528060005260406000206000915054906101000a900460ff1681565b6110786115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611105576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fc9061327a565b60405180910390fd5b60005b838390508110156111a457816005600086868581811061112b5761112a61329a565b5b90506020020160208101906111409190612f0e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061119c906132f8565b915050611108565b50505050565b6111b26115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461123f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112369061327a565b60405180910390fd5b60005b81518110156112d0576001601060008484815181106112645761126361329a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806112c8906132f8565b915050611242565b5050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6113636115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e79061327a565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b61141a6115d4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149e9061327a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150e906133b3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561164c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164390613445565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b3906134d7565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161179a9190612d79565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611817576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180e90613569565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611887576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187e906135fb565b60405180910390fd5b600081116118ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c19061368d565b60405180910390fd5b6118d2610e05565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119405750611910610e05565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d2b57601560149054906101000a900460ff166119cf57611961610e05565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146119ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c59061371f565b60405180910390fd5b5b601654811115611a14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0b9061378b565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611ab85750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611af7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aee9061381d565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611ba45760175481611b5984610c43565b611b63919061383d565b10611ba3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9a90613905565b60405180910390fd5b5b6000611baf30610c43565b9050600060185482101590506016548210611bca5760165491505b808015611be2575060158054906101000a900460ff16155b8015611c3c5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611c545750601560169054906101000a900460ff165b8015611caa5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d005750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611d2857611d0e82612090565b60004790506000811115611d2657611d2547612384565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611dd25750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611e855750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611e845750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611e93576000905061201a565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611f3e5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f5657600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156120015750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561201957600a54600c81905550600b54600d819055505b5b612026848484846123f0565b50505050565b6000838311158290612074576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206b9190612bb0565b60405180910390fd5b50600083856120839190613925565b9050809150509392505050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156120c7576120c6613000565b5b6040519080825280602002602001820160405280156120f55781602001602082028036833780820191505090505b509050308160008151811061210d5761210c61329a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156121af57600080fd5b505afa1580156121c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e7919061396e565b816001815181106121fb576121fa61329a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061226230601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846115dc565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016122c6959493929190613a94565b600060405180830381600087803b1580156122e057600080fd5b505af11580156122f4573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b600060065482111561235d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235490613b60565b60405180910390fd5b600061236761241d565b905061237c818461244890919063ffffffff16565b915050919050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156123ec573d6000803e3d6000fd5b5050565b806123fe576123fd612492565b5b6124098484846124d5565b80612417576124166126a0565b5b50505050565b600080600061242a6126b4565b91509150612441818361244890919063ffffffff16565b9250505090565b600061248a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612713565b905092915050565b6000600c541480156124a657506000600d54145b156124b0576124d3565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b6000806000806000806124e787612776565b95509550955095509550955061254586600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127de90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125da85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282890919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061262681612886565b6126308483612943565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161268d9190612d79565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a764000090506126e8670de0b6b3a764000060065461244890919063ffffffff16565b82101561270657600654670de0b6b3a764000093509350505061270f565b81819350935050505b9091565b6000808311829061275a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127519190612bb0565b60405180910390fd5b50600083856127699190613baf565b9050809150509392505050565b60008060008060008060008060006127938a600c54600d5461297d565b92509250925060006127a361241d565b905060008060006127b68e878787612a13565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061282083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061202c565b905092915050565b6000808284612837919061383d565b90508381101561287c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161287390613c2c565b60405180910390fd5b8091505092915050565b600061289061241d565b905060006128a78284612a9c90919063ffffffff16565b90506128fb81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461282890919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612958826006546127de90919063ffffffff16565b6006819055506129738160075461282890919063ffffffff16565b6007819055505050565b6000806000806129a9606461299b888a612a9c90919063ffffffff16565b61244890919063ffffffff16565b905060006129d360646129c5888b612a9c90919063ffffffff16565b61244890919063ffffffff16565b905060006129fc826129ee858c6127de90919063ffffffff16565b6127de90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612a2c8589612a9c90919063ffffffff16565b90506000612a438689612a9c90919063ffffffff16565b90506000612a5a8789612a9c90919063ffffffff16565b90506000612a8382612a7585876127de90919063ffffffff16565b6127de90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612aaf5760009050612b11565b60008284612abd9190613c4c565b9050828482612acc9190613baf565b14612b0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b0390613d18565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b51578082015181840152602081019050612b36565b83811115612b60576000848401525b50505050565b6000601f19601f8301169050919050565b6000612b8282612b17565b612b8c8185612b22565b9350612b9c818560208601612b33565b612ba581612b66565b840191505092915050565b60006020820190508181036000830152612bca8184612b77565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c1182612be6565b9050919050565b612c2181612c06565b8114612c2c57600080fd5b50565b600081359050612c3e81612c18565b92915050565b6000819050919050565b612c5781612c44565b8114612c6257600080fd5b50565b600081359050612c7481612c4e565b92915050565b60008060408385031215612c9157612c90612bdc565b5b6000612c9f85828601612c2f565b9250506020612cb085828601612c65565b9150509250929050565b60008115159050919050565b612ccf81612cba565b82525050565b6000602082019050612cea6000830184612cc6565b92915050565b6000819050919050565b6000612d15612d10612d0b84612be6565b612cf0565b612be6565b9050919050565b6000612d2782612cfa565b9050919050565b6000612d3982612d1c565b9050919050565b612d4981612d2e565b82525050565b6000602082019050612d646000830184612d40565b92915050565b612d7381612c44565b82525050565b6000602082019050612d8e6000830184612d6a565b92915050565b600080600060608486031215612dad57612dac612bdc565b5b6000612dbb86828701612c2f565b9350506020612dcc86828701612c2f565b9250506040612ddd86828701612c65565b9150509250925092565b612df081612cba565b8114612dfb57600080fd5b50565b600081359050612e0d81612de7565b92915050565b600060208284031215612e2957612e28612bdc565b5b6000612e3784828501612dfe565b91505092915050565b600060ff82169050919050565b612e5681612e40565b82525050565b6000602082019050612e716000830184612e4d565b92915050565b600060208284031215612e8d57612e8c612bdc565b5b6000612e9b84828501612c65565b91505092915050565b612ead81612c06565b82525050565b6000602082019050612ec86000830184612ea4565b92915050565b60008060408385031215612ee557612ee4612bdc565b5b6000612ef385828601612c65565b9250506020612f0485828601612c65565b9150509250929050565b600060208284031215612f2457612f23612bdc565b5b6000612f3284828501612c2f565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612f6057612f5f612f3b565b5b8235905067ffffffffffffffff811115612f7d57612f7c612f40565b5b602083019150836020820283011115612f9957612f98612f45565b5b9250929050565b600080600060408486031215612fb957612fb8612bdc565b5b600084013567ffffffffffffffff811115612fd757612fd6612be1565b5b612fe386828701612f4a565b93509350506020612ff686828701612dfe565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61303882612b66565b810181811067ffffffffffffffff8211171561305757613056613000565b5b80604052505050565b600061306a612bd2565b9050613076828261302f565b919050565b600067ffffffffffffffff82111561309657613095613000565b5b602082029050602081019050919050565b60006130ba6130b58461307b565b613060565b905080838252602082019050602084028301858111156130dd576130dc612f45565b5b835b8181101561310657806130f28882612c2f565b8452602084019350506020810190506130df565b5050509392505050565b600082601f83011261312557613124612f3b565b5b81356131358482602086016130a7565b91505092915050565b60006020828403121561315457613153612bdc565b5b600082013567ffffffffffffffff81111561317257613171612be1565b5b61317e84828501613110565b91505092915050565b6000806040838503121561319e5761319d612bdc565b5b60006131ac85828601612c2f565b92505060206131bd85828601612c2f565b9150509250929050565b600080600080608085870312156131e1576131e0612bdc565b5b60006131ef87828801612c65565b945050602061320087828801612c65565b935050604061321187828801612c65565b925050606061322287828801612c65565b91505092959194509250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613264602083612b22565b915061326f8261322e565b602082019050919050565b6000602082019050818103600083015261329381613257565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061330382612c44565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613336576133356132c9565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061339d602683612b22565b91506133a882613341565b604082019050919050565b600060208201905081810360008301526133cc81613390565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061342f602483612b22565b915061343a826133d3565b604082019050919050565b6000602082019050818103600083015261345e81613422565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006134c1602283612b22565b91506134cc82613465565b604082019050919050565b600060208201905081810360008301526134f0816134b4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613553602583612b22565b915061355e826134f7565b604082019050919050565b6000602082019050818103600083015261358281613546565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006135e5602383612b22565b91506135f082613589565b604082019050919050565b60006020820190508181036000830152613614816135d8565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613677602983612b22565b91506136828261361b565b604082019050919050565b600060208201905081810360008301526136a68161366a565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613709603f83612b22565b9150613714826136ad565b604082019050919050565b60006020820190508181036000830152613738816136fc565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613775601c83612b22565b91506137808261373f565b602082019050919050565b600060208201905081810360008301526137a481613768565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613807602383612b22565b9150613812826137ab565b604082019050919050565b60006020820190508181036000830152613836816137fa565b9050919050565b600061384882612c44565b915061385383612c44565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613888576138876132c9565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b60006138ef602383612b22565b91506138fa82613893565b604082019050919050565b6000602082019050818103600083015261391e816138e2565b9050919050565b600061393082612c44565b915061393b83612c44565b92508282101561394e5761394d6132c9565b5b828203905092915050565b60008151905061396881612c18565b92915050565b60006020828403121561398457613983612bdc565b5b600061399284828501613959565b91505092915050565b6000819050919050565b60006139c06139bb6139b68461399b565b612cf0565b612c44565b9050919050565b6139d0816139a5565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613a0b81612c06565b82525050565b6000613a1d8383613a02565b60208301905092915050565b6000602082019050919050565b6000613a41826139d6565b613a4b81856139e1565b9350613a56836139f2565b8060005b83811015613a87578151613a6e8882613a11565b9750613a7983613a29565b925050600181019050613a5a565b5085935050505092915050565b600060a082019050613aa96000830188612d6a565b613ab660208301876139c7565b8181036040830152613ac88186613a36565b9050613ad76060830185612ea4565b613ae46080830184612d6a565b9695505050505050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613b4a602a83612b22565b9150613b5582613aee565b604082019050919050565b60006020820190508181036000830152613b7981613b3d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613bba82612c44565b9150613bc583612c44565b925082613bd557613bd4613b80565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613c16601b83612b22565b9150613c2182613be0565b602082019050919050565b60006020820190508181036000830152613c4581613c09565b9050919050565b6000613c5782612c44565b9150613c6283612c44565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613c9b57613c9a6132c9565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613d02602183612b22565b9150613d0d82613ca6565b604082019050919050565b60006020820190508181036000830152613d3181613cf5565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212204ad384e977e8c7ee29e1b38f0dfb93a930f41f9b32affac49af694cb51239e4864736f6c63430008090033