Address Details
contract

0x628d4b5077325Bfe670b8a73d84F2666e88b81e2

Creator
0x8f9f42–2ddaaf at 0xdfb959–a109f8
Balance
32.460299411536535155 CELO ( )
Locked CELO Balance
0.00 CELO
Voting CELO Balance
0.00 CELO
Pending Unlocked Gold
0.00 CELO
Tokens
Fetching tokens...
Transactions
1,131,296 Transactions
Transfers
1,727,270 Transfers
Gas Used
166,769,186,214
Last Balance Update
29784562

Contract Creation Code

Verify & Publish
0x60c0604052600060a05234801561001557600080fd5b50600080546001600160a01b031990811633179091556001805490911673a8769d14ed5ab35151112b52ef2c86fdaf4ec31217905573a65d73c6145ac2ae351c233f43d197ebbc04c01360805260805160a051615a8f620000c060003960008181610bc201528181611d200152818161265a0152818161283a0152818161291c0152818161298401526135f00152600081816102d301528181610ec501526113f30152615a8f6000f3fe6080604052600436106100cb5760003560e01c8063689897d0116100745780638424182b1161004e5780638424182b146104db578063a71f06ad146104fb578063b74d0ed61461051b576100d2565b8063689897d0146104885780637299095e146104a857806382a86f21146104bb576100d2565b806331c1b1a8116100a557806331c1b1a81461042857806331eae55f1461044857806345ab691c14610468576100d2565b806302f4aa9b146103bb57806303e32d29146103db5780632455634f14610408576100d2565b366100d257005b3660006100e28260048184614c60565b909250905060006100f583830184614c8a565b905073ffffffffffffffffffffffffffffffffffffffff8116301480156101cf576101238360a08187614c60565b90945092506101008310801590610143575061014161010084614cd2565b155b6101ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f643200000000000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60006101bc84860186614de5565b90506101c985858361052e565b506102a5565b6000806101df6040828789614c60565b8101906101ec9190614e93565b90925090506101fe8560808189614c60565b9096509450610100851080159061021e575061021c61010086614cd2565b155b610284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f643300000000000000000000000000000000000000000000000000000000000060448201526064016101a5565b600061029286880188614de5565b90506102a18383838a8a610692565b5050505b6040517ff99031a70000000000000000000000000000000000000000000000000000000081523260048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063f99031a790602401602060405180830381865afa15801561032f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103539190614eb5565b6103b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f616100000000000000000000000000000000000000000000000000000000000060448201526064016101a5565b005b3480156103c757600080fd5b506103b96103d6366004614ed7565b6108cc565b6103ee6103e9366004615028565b610994565b604080519283526020830191909152015b60405180910390f35b34801561041457600080fd5b506103b9610423366004614ed7565b610fc3565b34801561043457600080fd5b506103b9610443366004614ed7565b61108b565b34801561045457600080fd5b506103b9610463366004614ed7565b611153565b34801561047457600080fd5b506103b9610483366004614ed7565b61121b565b34801561049457600080fd5b506103b96104a3366004614ed7565b6112e3565b6103ee6104b63660046150b0565b6113ab565b3480156104c757600080fd5b506103b96104d6366004614ed7565b6114de565b3480156104e757600080fd5b506103b96104f6366004615194565b6115a6565b61050e6105093660046150b0565b6118e2565b6040516103ff9190615229565b6103b961052936600461526d565b6118f3565b8060005b6101008411156105e85761054a846101008188614c60565b9095509350600061055d86860187614de5565b90506105a0818588888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611ce592505050565b6105af5760a0015190506105e8565b6105b881612b27565b80156105c5575061010085145b156105e1576105e1816040015184608001518560000151612bb9565b9250610532565b606082015160a01c6020161561068b57606082015160781c6002166106745781608001518111610674576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f326600000000000000000000000000000000000000000000000000000000000060448201526064016101a5565b61068b826020015183608001518460000151612bb9565b5050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081016106dd576106d88360200151600087136106cf57856106d1565b865b8551612bb9565b61068b565b606083015160a01c601016610702576107028360200151600087136106cf57856106d1565b366000610713836101008187614c60565b90925090508460005b600061072a84860186614de5565b905061076d818987878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611ce592505050565b61077c5760a001519050610816565b61078581612b27565b8015610792575061010084145b80156107a75750606083015160a01c60101615155b156107ca576107ca836020015160008c136107c2578a6106d1565b8b8551612bb9565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084016107fc5760a001519050610816565b61080a846101008188614c60565b9198509450925061071c565b606082015160a01c602016156108c157606082015160781c6002166108a257816080015181116108a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f336600000000000000000000000000000000000000000000000000000000000060448201526064016101a5565b6108c1826020015160008b136108b857896108ba565b8a5b8451612bb9565b505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461094d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f736200000000000000000000000000000000000000000000000000000000000060448201526064016101a5565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60008060005a90506000866000815181106109b1576109b16152d9565b60209081029190910181015101516040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015610a2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4e9190615308565b905060005b8751811015610d6357600071f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0898381518110610a8357610a836152d9565b6020026020010151600001818151610a9b9190615350565b9052508851610ace908a9084908110610ab657610ab66152d9565b60200260200101516060015160ff60509190911c1690565b600714610bc057888281518110610ae757610ae76152d9565b60200260200101516020015173ffffffffffffffffffffffffffffffffffffffff166370a082318a8481518110610b2057610b206152d9565b6020908102919091010151516040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401602060405180830381865afa158015610b95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb99190615308565b9050610ccf565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f7888aec8a8481518110610c0e57610c0e6152d9565b6020026020010151602001518b8581518110610c2c57610c2c6152d9565b6020908102919091010151516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff928316600482015291166024820152604401602060405180830381865afa158015610ca8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ccc9190615308565b90505b868281518110610ce157610ce16152d9565b6020026020010151811115610d52576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f216261000000000000000000000000000000000000000000000000000000000060448201526064016101a5565b50610d5c81615363565b9050610a53565b50610d6e8787612d22565b60008188600081518110610d8457610d846152d9565b60209081029190910181015101516040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015610dfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e219190615308565b610e2b919061539b565b905060008113610e97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f216500000000000000000000000000000000000000000000000000000000000060448201526064016101a5565b6040517ff99031a70000000000000000000000000000000000000000000000000000000081523260048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063f99031a790602401602060405180830381865afa158015610f21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f459190614eb5565b610fab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f616200000000000000000000000000000000000000000000000000000000000060448201526064016101a5565b5a610fb6908461539b565b9890975095505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611044576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f736200000000000000000000000000000000000000000000000000000000000060448201526064016101a5565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff16331461110c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f736200000000000000000000000000000000000000000000000000000000000060448201526064016101a5565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146111d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f736200000000000000000000000000000000000000000000000000000000000060448201526064016101a5565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff16331461129c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f736200000000000000000000000000000000000000000000000000000000000060448201526064016101a5565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314611364576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f736200000000000000000000000000000000000000000000000000000000000060448201526064016101a5565b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000806113b783613135565b909250905060008113156114d9576040517ff99031a70000000000000000000000000000000000000000000000000000000081523260048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063f99031a790602401602060405180830381865afa15801561144f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114739190614eb5565b6114d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f616200000000000000000000000000000000000000000000000000000000000060448201526064016101a5565b915091565b60005473ffffffffffffffffffffffffffffffffffffffff16331461155f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f736200000000000000000000000000000000000000000000000000000000000060448201526064016101a5565b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314806115df57503373728ac133a5c9250a61f7b27abbe7a823e786ff66145b611645576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f216f776e6572000000000000000000000000000000000000000000000000000060448201526064016101a5565b60005b848110156118da5760005b828110156118c757600085838151811061166f5761166f6152d9565b60200260200101519050806000036116a457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6000808989868181106116b9576116b96152d9565b90506020020160208101906116ce9190614ed7565b73ffffffffffffffffffffffffffffffffffffffff167f095ea7b300000000000000000000000000000000000000000000000000000000888887818110611717576117176152d9565b905060200201602081019061172c9190614ed7565b60405173ffffffffffffffffffffffffffffffffffffffff909116602482015260448101869052606401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009094169390931790925290516117df91906153df565b6000604051808303816000865af19150503d806000811461181c576040519150601f19603f3d011682016040523d82523d6000602084013e611821565b606091505b509150915081801561184b57508051158061184b57508080602001905181019061184b9190614eb5565b6118b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f617070726f7665206661696c656400000000000000000000000000000000000060448201526064016101a5565b50505080806118bf90615363565b915050611653565b50806118d281615363565b915050611648565b505050505050565b60606118ed8261337b565b92915050565b60005473ffffffffffffffffffffffffffffffffffffffff1633148061192c57503373728ac133a5c9250a61f7b27abbe7a823e786ff66145b611992576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f216f776e6572000000000000000000000000000000000000000000000000000060448201526064016101a5565b60005b8381101561068b5760008585838181106119b1576119b16152d9565b90506020020160208101906119c69190614ed7565b73ffffffffffffffffffffffffffffffffffffffff1603611a3657478015611a30576000805460405173ffffffffffffffffffffffffffffffffffffffff9091169183156108fc02918491818181858888f19350505050158015611a2e573d6000803e3d6000fd5b505b50611cd3565b6000838383818110611a4a57611a4a6152d9565b90506020020135600014611a7657838383818110611a6a57611a6a6152d9565b90506020020135611b2d565b858583818110611a8857611a886152d9565b9050602002016020810190611a9d9190614ed7565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff91909116906370a0823190602401602060405180830381865afa158015611b09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b2d9190615308565b905080600003611b3d5750611cd3565b600080878785818110611b5257611b526152d9565b9050602002016020810190611b679190614ed7565b6000546040805173ffffffffffffffffffffffffffffffffffffffff9283166024820152604480820188905282518083039091018152606490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905290519290911691611bfd91906153df565b6000604051808303816000865af19150503d8060008114611c3a576040519150601f19603f3d011682016040523d82523d6000602084013e611c3f565b606091505b5091509150818015611c69575080511580611c69575080806020019051810190611c699190614eb5565b611ccf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f74616e73666572206661696c656400000000000000000000000000000000000060448201526064016101a5565b5050505b80611cdd81615363565b915050611995565b606083015160009060501c60ff1660018111611e5357611d04846134b1565b15611d4b57611d4b8560200151866080015183600703611d44577f0000000000000000000000000000000000000000000000000000000000000000612bb9565b8751612bb9565b600080866020015173ffffffffffffffffffffffffffffffffffffffff16876040015173ffffffffffffffffffffffffffffffffffffffff1610611d955760008760a00151611d9d565b8660a0015160005b8851919350915073ffffffffffffffffffffffffffffffffffffffff1663022c0d9f8383611dcb8b8a61352f565b604080516000815260208101918290527fffffffff0000000000000000000000000000000000000000000000000000000060e087901b16909152611e159392919060248101615445565b600060405180830381600087803b158015611e2f57600080fd5b505af1158015611e43573d6000803e3d6000fd5b5050505060019350505050612b20565b80600203611e7957611e6f611e68868561352f565b8685613620565b6000915050612b20565b806003036121c357604080516080810182526000602082018190529181018290526060810191909152308152611eaf868561352f565b73ffffffffffffffffffffffffffffffffffffffff166040820152611f306040805160c08101909152600080825260208201908152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001606081525090565b865181526000602082018190525060208701805173ffffffffffffffffffffffffffffffffffffffff908116604084810191909152808a0151821660608501526080808b0180519186019190915251925160065491517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015291831660248301529091169063dd62ed3e90604401602060405180830381865afa158015611fe1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120059190615308565b10156120f457602087015160065473ffffffffffffffffffffffffffffffffffffffff9182169163095ea7b3911661205e60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff615350565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016020604051808303816000875af11580156120ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f29190614eb5565b505b60065460a08801516040517f52bbbe2900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216916352bbbe299161217391859187917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9060040161548a565b6020604051808303816000875af1158015612192573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121b69190615308565b5060019350505050612b20565b8060040361262d5760408086015190517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa15801561223c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122609190615308565b9050466001036123b757606086015160781c6002161561233557855160608088015160808901516040517f3df021240000000000000000000000000000000000000000000000000000000081529282901c60ff908116600f90810b600486015260689390931c1690910b602483015260448201526000606482015273ffffffffffffffffffffffffffffffffffffffff90911690633df02124906084015b600060405180830381600087803b15801561231857600080fd5b505af115801561232c573d6000803e3d6000fd5b50505050612508565b855160608088015160808901516040517f5b41b9080000000000000000000000000000000000000000000000000000000081529282901c60ff908116600485015260689290921c909116602483015260448201526000606482015273ffffffffffffffffffffffffffffffffffffffff90911690635b41b908906084016122fe565b606086015160781c6001161561244f57855160608088015160808901516040517fe2ad025a0000000000000000000000000000000000000000000000000000000081529282901c60ff908116600485015260689290921c909116602483015260448201526000606482015230608482015273ffffffffffffffffffffffffffffffffffffffff9091169063e2ad025a9060a4016122fe565b855160608088015173ffffffffffffffffffffffffffffffffffffffff90921691635b41b908911c60ff16606089015160681c60ff1660808a01516040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815260048101939093526024830191909152604482015260006064820152608401600060405180830381600087803b1580156124ef57600080fd5b505af1158015612503573d6000803e3d6000fd5b505050505b606086015160781c6002166126225760a086015160408088015190517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152839173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa15801561258c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125b09190615308565b6125ba9190615350565b1015612622576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f706f00000000000000000000000000000000000000000000000000000000000060448201526064016101a5565b600192505050612b20565b8060050361280d5761263e846134b1565b1561267e5761267e8560200151866080015183600703611d44577f0000000000000000000000000000000000000000000000000000000000000000612bb9565b606085015160a81c6001161561274a57845173ffffffffffffffffffffffffffffffffffffffff1663bd6015b46126b5878661352f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016020604051808303816000875af1158015612720573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127449190615308565b50612803565b845173ffffffffffffffffffffffffffffffffffffffff1663dd93f59a612771878661352f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024015b6020604051808303816000875af11580156127dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128019190615308565b505b6001915050612b20565b806006036128ef5761281e846134b1565b1561285e5761285e8560200151866080015183600703611d44577f0000000000000000000000000000000000000000000000000000000000000000612bb9565b846000015173ffffffffffffffffffffffffffffffffffffffff166353c059a061288e876060015160ff16151590565b612898888761352f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168152911515600483015273ffffffffffffffffffffffffffffffffffffffff1660248201526044016127be565b80600703612b1a57612900846134b1565b15612940576129408560200151866080015183600703611d44577f0000000000000000000000000000000000000000000000000000000000000000612bb9565b602085015185516040517ff9609f0800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169263f9609f08926129d99260040173ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b6020604051808303816000875af11580156129f8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a1c9190615308565b50846000015173ffffffffffffffffffffffffffffffffffffffff16637132bb7f8660200151612a4c888761352f565b6040805173ffffffffffffffffffffffffffffffffffffffff9384166020820152929091169082015260026060820152608001604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181526000808452602084019092529181906040518563ffffffff1660e01b8152600401612ad894939291906155aa565b60408051808303816000875af1158015612af6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061280191906155fe565b60009150505b9392505050565b60008160c0015173ffffffffffffffffffffffffffffffffffffffff16826040015173ffffffffffffffffffffffffffffffffffffffff161480156118ed5750606082015160501c60ff1660031480612b8a5750606082015160501c60ff166005145b80612b9f5750606082015160501c60ff166006145b806118ed5750606082015160501c60ff1660071492915050565b6040805173ffffffffffffffffffffffffffffffffffffffff8381166024830152604480830186905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790529151600092839290871691612c5091906153df565b6000604051808303816000865af19150503d8060008114612c8d576040519150601f19603f3d011682016040523d82523d6000602084013e612c92565b606091505b5091509150818015612cbc575080511580612cbc575080806020019051810190612cbc9190614eb5565b61068b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f544500000000000000000000000000000000000000000000000000000000000060448201526064016101a5565b600060018351612d329190615350565b90505b6002612d4c848381518110610ab657610ab66152d9565b1161311e576000835167ffffffffffffffff811115612d6d57612d6d614ce6565b604051908082528060200260200182016040528015612dfa57816020015b604080516101008101825260008082526020808301829052928201819052606082018190526080820181905260a0820181905260c0820181905260e082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181612d8b5790505b50905060005b84518110156130bc576000828281518110612e1d57612e1d6152d9565b60200260200101519050600086518386612e379190615656565b612e419190614cd2565b90506000878281518110612e5757612e576152d9565b602090810291909101810151805185528082015160408083015173ffffffffffffffffffffffffffffffffffffffff9081169188019190915216918501919091528751909150879083908110612eaf57612eaf6152d9565b602002602001015187836001612ec59190615656565b81518110612ed557612ed56152d9565b602090810291909101015160a085015260808401528751600090612efa846001615656565b612f049190614cd2565b9050888181518110612f1857612f186152d9565b60209081029190910101515173ffffffffffffffffffffffffffffffffffffffff1660e085015288518990600090612f5257612f526152d9565b602090810291909101810151015173ffffffffffffffffffffffffffffffffffffffff1660c08501526060808301519085018190528951612fa99190612fa4908c9085908110610ab657610ab66152d9565b613773565b60608501819052612fbb908615613783565b6060858101829052830151612fdd919060281c62ffffff16620186a0146137af565b606085810182905283810151612ff992911c60ff1615156137db565b60608086019190915282015160501c60ff1660041480156130265750600189516130239190615350565b85145b156130a55761306b868a5187600161303e9190615656565b6130489190614cd2565b81518110613058576130586152d9565b6020026020010151606001516001613808565b8951879061307a886001615656565b6130849190614cd2565b81518110613094576130946152d9565b602002602001015160600181815250505b5050505080806130b490615363565b915050612e00565b506000816040516020016130d09190615669565b604051602081830303815290604052905061068b826000815181106130f7576130f76152d9565b602002602001015161311960408085516131119190615350565b859190613834565b613a21565b8061312881615713565b915050612d35565b505050565b60008060005a905060006131488561337b565b9050337343dd5faf6be7f39fac3edc90b9bad6f71fe1171a1480159061316e5750333014155b801561317b575046600114155b15613325576040850151158061319357506060850151155b1561326c578460400151816000815181106131b0576131b06152d9565b60200260200101516131c29190615656565b81600183516131d19190615350565b815181106131e1576131e16152d9565b60200260200101511015613267577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81600081518110613223576132236152d9565b6020026020010151826001845161323a9190615350565b8151811061324a5761324a6152d9565b602002602001015161325c919061539b565b935093505050915091565b613325565b846040015181600081518110613284576132846152d9565b60200260200101516132969190615656565b81600183516132a59190615350565b815181106132b5576132b56152d9565b60200260200101511015613325576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f6d696e000000000000000000000000000000000000000000000000000000000060448201526064016101a5565b600a8160008151811061333a5761333a6152d9565b6020026020010181815161334e9190615656565b905250845161335d9082612d22565b5a613368908361539b565b81600081518110613223576132236152d9565b80515160609061338c906001615656565b67ffffffffffffffff8111156133a4576133a4614ce6565b6040519080825280602002602001820160405280156133cd578160200160208202803683370190505b5090508160200151816000815181106133e8576133e86152d9565b60200260200101818152505060005b8251518110156134ab57600083600001518281518110613419576134196152d9565b6020026020010151905071f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0816000018181516134479190615350565b9150818152505061347181848481518110613464576134646152d9565b6020026020010151613c2a565b8361347d846001615656565b8151811061348d5761348d6152d9565b602090810291909101015250806134a381615363565b9150506133f7565b50919050565b60008160c0015173ffffffffffffffffffffffffffffffffffffffff16826040015173ffffffffffffffffffffffffffffffffffffffff1614806135155750606082015160019060501c60ff16111580156135155750606082015160a01c60101615155b806118ed5750606082015160501c60ff1660041492915050565b606082015160009060a01c600f168160018211158061354e5750816005145b806135595750816006145b806135645750816007145b8061357157506101008451145b80156135b157508460c0015173ffffffffffffffffffffffffffffffffffffffff16856040015173ffffffffffffffffffffffffffffffffffffffff1614155b6135bb57306135c1565b8460e001515b905073ffffffffffffffffffffffffffffffffffffffff811630148015906135e95750816007145b15613618577f0000000000000000000000000000000000000000000000000000000000000000925050506118ed565b949350505050565b606082015160a01c608016156136f357815160808301516040840151602085015173ffffffffffffffffffffffffffffffffffffffff938416936324b31a0c9388939092908216911610806136895773fffd8963efd1fc6a506488495d951d5263988d25613690565b6401000276a45b866040518663ffffffff1660e01b81526004016136b1959493929190615748565b60408051808303816000875af11580156136cf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061068b919061578f565b815160408301516020840151608085015173ffffffffffffffffffffffffffffffffffffffff9384169363128acb08938893908216911610908161374b5773fffd8963efd1fc6a506488495d951d5263988d25613752565b6401000276a45b866040518663ffffffff1660e01b81526004016136b19594939291906157b3565b6000612b2060a083901b84615656565b6000816137905782612b20565b612b208374100000000000000000000000000000000000000000615656565b6000816137bc5782612b20565b612b208374800000000000000000000000000000000000000000615656565b6000816137e85782612b20565b612b20837501000000000000000000000000000000000000000000615656565b6000816138155782612b20565b612b208374200000000000000000000000000000000000000000615656565b60608161384281601f615656565b10156138aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f7700000000000000000000000000000000000060448201526064016101a5565b826138b58382615656565b101561391d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f7700000000000000000000000000000000000060448201526064016101a5565b6139278284615656565b84511015613991576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e647300000000000000000000000000000060448201526064016101a5565b6060821580156139b05760405191506000825260208201604052613a18565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156139e95780518352602092830192016139d1565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b606082015160501c60ff166002811115613a97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f666500000000000000000000000000000000000000000000000000000000000060448201526064016101a5565b8260c0015173ffffffffffffffffffffffffffffffffffffffff16836040015173ffffffffffffffffffffffffffffffffffffffff1603613bc45760018111613bb957600080846020015173ffffffffffffffffffffffffffffffffffffffff16856040015173ffffffffffffffffffffffffffffffffffffffff1610613b245760008560a00151613b2c565b8460a0015160005b86516040517f022c0d9f00000000000000000000000000000000000000000000000000000000815292945090925073ffffffffffffffffffffffffffffffffffffffff169063022c0d9f90613b8b908590859030908a90600401615445565b600060405180830381600087803b158015613ba557600080fd5b505af11580156108c1573d6000803e3d6000fd5b613130308484613620565b60018111613c1657600080846020015173ffffffffffffffffffffffffffffffffffffffff16856040015173ffffffffffffffffffffffffffffffffffffffff1610613b245760008560a00151613b2c565b613130613c23848461352f565b8484613620565b606082015160009060501c60ff1660018111613db557606084015160009060281c62ffffff169050806201e24003613d0357845160208601516040517ff140a35a0000000000000000000000000000000000000000000000000000000081526004810187905273ffffffffffffffffffffffffffffffffffffffff918216602482015291169063f140a35a90604401602060405180830381865afa158015613cd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cfa9190615308565b925050506118ed565b600080866000015173ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613d55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d799190615818565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150613daa878784846145f2565b9450505050506118ed565b8060020361403157606084015160281c62ffffff16620186a003613ea35760025484516040808701516020880151606089015192517f8f51522800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff948516600482015291841690841610602482015260109190911c62ffffff16604482015260648101869052911690638f515228906084015b602060405180830381865afa158015613e77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e9b9190615308565b9150506118ed565b606080850151901c60ff1660021480613ec65750606080850151901c60ff166003145b15613f8f5760048054602086015160408088015190517f2d9ebd1d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831694810194909452811660248401526044830186905260006064840181905292911690632d9ebd1d9060840160408051808303816000875af1158015613f60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f849190615868565b5092506118ed915050565b600180548551602087015160408089015160608a015182517fad3be54a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9586166004820152938516602485015290841660448401529081901c61ffff1690940b606482015262ffffff60109490941c93909316608484015260a48301869052169063ad3be54a9060c401613e5a565b8060030361410f576040805160a081018252600060208083018281528385018381526060850193845260065473ffffffffffffffffffffffffffffffffffffffff9081168652608086018a8152938b0151811682528a870151811685528a51835260055496517f7261903700000000000000000000000000000000000000000000000000000000815286518216600482015292516024840152905181166044830152925183166064820152905160848201529192169063726190379060a4016020604051808303816000875af1158015613cd6573d6000803e3d6000fd5b806004036143b75760004660010361427157606085015160781c600216156141f25784516060808701516040517f5e0d443f0000000000000000000000000000000000000000000000000000000081529181901c60ff908116600f90810b600485015260689290921c16900b60248201526044810186905273ffffffffffffffffffffffffffffffffffffffff90911690635e0d443f906064015b602060405180830381865afa1580156141c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141eb9190615308565b905061436e565b845160608087015173ffffffffffffffffffffffffffffffffffffffff9092169163556d6e9f911c60ff165b606088015160681c60ff166040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815260048101929092526024820152604481018790526064016141aa565b606085015160701c60ff16156142b157845160608087015173ffffffffffffffffffffffffffffffffffffffff9092169163556d6e9f911c60ff1661421e565b845160608087015173ffffffffffffffffffffffffffffffffffffffff909216916385f11d1e911c60ff16606088015160681c60ff166040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526004810192909252602482015260448101879052606401602060405180830381865afa158015614347573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061436b9190615308565b90505b606085015162ffffff601082901c81169160281c1681156143ab57806143948382615350565b61439e908561589f565b6143a891906158b6565b92505b829450505050506118ed565b8060050361448757606080850151901c60ff161561442b5783516040517f79a048760000000000000000000000000000000000000000000000000000000081523060048201526024810185905273ffffffffffffffffffffffffffffffffffffffff909116906379a0487690604401613e5a565b83516040517f66410a210000000000000000000000000000000000000000000000000000000081523060048201526024810185905273ffffffffffffffffffffffffffffffffffffffff909116906366410a2190604401613e5a565b80600603614570576000846000015173ffffffffffffffffffffffffffffffffffffffff1663e77366f8856144c2886060015160ff16151590565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526fffffffffffffffffffffffffffffffff909216600483015215156024820152604401606060405180830381865afa15801561452e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061455291906158ea565b506fffffffffffffffffffffffffffffffff1693506118ed92505050565b806007036145e157835160208501516040517fff9c8ac600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152602481018690526000604482015291169063ff9c8ac690606401613e5a565b60009150506118ed565b5092915050565b6060840151600090602881901c62ffffff169060501c60ff16600114614644576060860151819060101c62ffffff1661462b9083615350565b614635908761589f565b61463f91906158b6565b614671565b6060860151819060101c62ffffff1661465d908761589f565b61466791906158b6565b6146719086615350565b606087015190955060581c60ff16151590506146fb57600080866040015173ffffffffffffffffffffffffffffffffffffffff16876020015173ffffffffffffffffffffffffffffffffffffffff16106146cc5783856146cf565b84845b90925090506146de8683615656565b6146e8828861589f565b6146f291906158b6565b92505050614906565b60008061470c876060015160ff1690565b606088015160081c60ff1691509150816012146147335761472e82600a615a4d565b61473d565b670de0b6b3a76400005b9150806012146147575761475281600a615a4d565b614761565b670de0b6b3a76400005b9050600061477386868585600161495b565b90508261478887670de0b6b3a764000061589f565b61479291906158b6565b9550816147a786670de0b6b3a764000061589f565b6147b191906158b6565b9450600080896040015173ffffffffffffffffffffffffffffffffffffffff168a6020015173ffffffffffffffffffffffffffffffffffffffff16106147f85786886147fb565b87875b91509150896040015173ffffffffffffffffffffffffffffffffffffffff168a6020015173ffffffffffffffffffffffffffffffffffffffff161061485c578361484d8a670de0b6b3a764000061589f565b61485791906158b6565b614879565b8461486f8a670de0b6b3a764000061589f565b61487991906158b6565b9850600061489161488a848c615656565b8584614a4c565b61489b9083615350565b9050670de0b6b3a76400008b6040015173ffffffffffffffffffffffffffffffffffffffff168c6020015173ffffffffffffffffffffffffffffffffffffffff16106148e757866148e9565b855b6148f3908361589f565b6148fd91906158b6565b96505050505050505b846040015173ffffffffffffffffffffffffffffffffffffffff16856020015173ffffffffffffffffffffffffffffffffffffffff16106149475782614949565b815b81111561361857506000949350505050565b60008115614a365760008461497888670de0b6b3a764000061589f565b61498291906158b6565b905060008461499988670de0b6b3a764000061589f565b6149a391906158b6565b90506000670de0b6b3a76400006149ba838561589f565b6149c491906158b6565b90506000670de0b6b3a76400006149db848061589f565b6149e591906158b6565b670de0b6b3a76400006149f8868061589f565b614a0291906158b6565b614a0c9190615656565b9050670de0b6b3a7640000614a21828461589f565b614a2b91906158b6565b945050505050614a43565b614a40858761589f565b90505b95945050505050565b6000805b60ff811015614b5257826000614a668783614b5b565b905085811015614ab6576000614a7c8887614bf8565b614a868389615350565b614a9890670de0b6b3a764000061589f565b614aa291906158b6565b9050614aae8187615656565b955050614af8565b6000614ac28887614bf8565b614acc8884615350565b614ade90670de0b6b3a764000061589f565b614ae891906158b6565b9050614af48187615350565b9550505b81851115614b21576001614b0c8387615350565b11614b1c57849350505050612b20565b614b3d565b6001614b2d8684615350565b11614b3d57849350505050612b20565b50508080614b4a90615363565b915050614a50565b50909392505050565b6000670de0b6b3a764000082818581614b74828061589f565b614b7e91906158b6565b614b88919061589f565b614b9291906158b6565b614b9c919061589f565b614ba691906158b6565b670de0b6b3a7640000808481614bbc828061589f565b614bc691906158b6565b614bd0919061589f565b614bda91906158b6565b614be4908661589f565b614bee91906158b6565b612b209190615656565b6000670de0b6b3a76400008381614c0f828061589f565b614c1991906158b6565b614c23919061589f565b614c2d91906158b6565b670de0b6b3a764000080614c41858061589f565b614c4b91906158b6565b614c5686600361589f565b614be4919061589f565b60008085851115614c7057600080fd5b83861115614c7d57600080fd5b5050820193919092039150565b600060208284031215614c9c57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082614ce157614ce1614ca3565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715614d3857614d38614ce6565b60405290565b60405160a0810167ffffffffffffffff81118282101715614d3857614d38614ce6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715614da857614da8614ce6565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff81168114614dd257600080fd5b50565b8035614de081614db0565b919050565b6000610100808385031215614df957600080fd5b6040519081019067ffffffffffffffff82118183101715614e1c57614e1c614ce6565b816040528335815260208401359150614e3482614db0565b816020820152614e4660408501614dd5565b6040820152606084013560608201526080840135608082015260a084013560a0820152614e7560c08501614dd5565b60c0820152614e8660e08501614dd5565b60e0820152949350505050565b60008060408385031215614ea657600080fd5b50508035926020909101359150565b600060208284031215614ec757600080fd5b81518015158114612b2057600080fd5b600060208284031215614ee957600080fd5b8135612b2081614db0565b600067ffffffffffffffff821115614f0e57614f0e614ce6565b5060051b60200190565b600082601f830112614f2957600080fd5b81356020614f3e614f3983614ef4565b614d61565b82815260079290921b84018101918181019086841115614f5d57600080fd5b8286015b84811015614fc25760808189031215614f7a5760008081fd5b614f82614d15565b8135815284820135614f9381614db0565b81860152604082810135614fa681614db0565b9082015260608281013590820152835291830191608001614f61565b509695505050505050565b600082601f830112614fde57600080fd5b81356020614fee614f3983614ef4565b82815260059290921b8401810191818101908684111561500d57600080fd5b8286015b84811015614fc25780358352918301918301615011565b60008060006060848603121561503d57600080fd5b833567ffffffffffffffff8082111561505557600080fd5b61506187838801614f18565b9450602086013591508082111561507757600080fd5b61508387838801614fcd565b9350604086013591508082111561509957600080fd5b506150a686828701614fcd565b9150509250925092565b6000602082840312156150c257600080fd5b813567ffffffffffffffff808211156150da57600080fd5b9083019060a082860312156150ee57600080fd5b6150f6614d3e565b82358281111561510557600080fd5b61511187828601614f18565b8252506020830135602082015260408301356040820152606083013560608201526080830135608082015280935050505092915050565b60008083601f84011261515a57600080fd5b50813567ffffffffffffffff81111561517257600080fd5b6020830191508360208260051b850101111561518d57600080fd5b9250929050565b6000806000806000606086880312156151ac57600080fd5b853567ffffffffffffffff808211156151c457600080fd5b6151d089838a01615148565b909750955060208801359150808211156151e957600080fd5b6151f589838a01614fcd565b9450604088013591508082111561520b57600080fd5b5061521888828901615148565b969995985093965092949392505050565b6020808252825182820181905260009190848201906040850190845b8181101561526157835183529284019291840191600101615245565b50909695505050505050565b6000806000806040858703121561528357600080fd5b843567ffffffffffffffff8082111561529b57600080fd5b6152a788838901615148565b909650945060208701359150808211156152c057600080fd5b506152cd87828801615148565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561531a57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156118ed576118ed615321565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361539457615394615321565b5060010190565b81810360008312801583831316838312821617156145eb576145eb615321565b60005b838110156153d65781810151838201526020016153be565b50506000910152565b600082516153f18184602087016153bb565b9190910192915050565b600081518084526154138160208601602086016153bb565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b84815283602082015273ffffffffffffffffffffffffffffffffffffffff8316604082015260806060820152600061548060808301846153fb565b9695505050505050565b60e08152845160e082015260006020860151600281106154d3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b610100830152604086015173ffffffffffffffffffffffffffffffffffffffff16610120830152606086015161552261014084018273ffffffffffffffffffffffffffffffffffffffff169052565b50608086015161016083015260a086015160c06101808401526155496101a08401826153fb565b915050615598602083018673ffffffffffffffffffffffffffffffffffffffff808251168352602082015115156020840152806040830151166040840152506060810151151560608301525050565b60a082019390935260c0015292915050565b6080815260006155bd60808301876153fb565b73ffffffffffffffffffffffffffffffffffffffff86811660208501528516604084015282810360608401526155f381856153fb565b979650505050505050565b60006040828403121561561057600080fd5b6040516040810181811067ffffffffffffffff8211171561563357615633614ce6565b604052825161564181614db0565b81526020928301519281019290925250919050565b808201808211156118ed576118ed615321565b602080825282518282018190526000919060409081850190868401855b82811015615706578151805185528681015173ffffffffffffffffffffffffffffffffffffffff9081168887015286820151811687870152606080830151908701526080808301519087015260a0808301519087015260c08083015182169087015260e09182015116908501526101009093019290850190600101615686565b5091979650505050505050565b60008161572257615722615321565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b600073ffffffffffffffffffffffffffffffffffffffff8088168352866020840152851515604084015280851660608401525060a060808301526155f360a08301846153fb565b600080604083850312156157a257600080fd5b505080516020909101519092909150565b600073ffffffffffffffffffffffffffffffffffffffff8088168352861515602084015285604084015280851660608401525060a060808301526155f360a08301846153fb565b80516dffffffffffffffffffffffffffff81168114614de057600080fd5b60008060006060848603121561582d57600080fd5b615836846157fa565b9250615844602085016157fa565b9150604084015163ffffffff8116811461585d57600080fd5b809150509250925092565b6000806040838503121561587b57600080fd5b82519150602083015161ffff8116811461589457600080fd5b809150509250929050565b80820281158282048414176118ed576118ed615321565b6000826158c5576158c5614ca3565b500490565b80516fffffffffffffffffffffffffffffffff81168114614de057600080fd5b6000806000606084860312156158ff57600080fd5b615908846158ca565b9250615916602085016158ca565b9150615924604085016158ca565b90509250925092565b600181815b8085111561598657817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561596c5761596c615321565b8085161561597957918102915b93841c9390800290615932565b509250929050565b60008261599d575060016118ed565b816159aa575060006118ed565b81600181146159c057600281146159ca576159e6565b60019150506118ed565b60ff8411156159db576159db615321565b50506001821b6118ed565b5060208310610133831016604e8410600b8410161715615a09575081810a6118ed565b615a13838361592d565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115615a4557615a45615321565b029392505050565b6000612b20838361598e56fea2646970667358221220110d8390b6750722221cac6fbfe248441c087107881827b367cc0718c480a1ed64736f6c63430008130033

Deployed ByteCode

0x6080604052600436106100cb5760003560e01c8063689897d0116100745780638424182b1161004e5780638424182b146104db578063a71f06ad146104fb578063b74d0ed61461051b576100d2565b8063689897d0146104885780637299095e146104a857806382a86f21146104bb576100d2565b806331c1b1a8116100a557806331c1b1a81461042857806331eae55f1461044857806345ab691c14610468576100d2565b806302f4aa9b146103bb57806303e32d29146103db5780632455634f14610408576100d2565b366100d257005b3660006100e28260048184614c60565b909250905060006100f583830184614c8a565b905073ffffffffffffffffffffffffffffffffffffffff8116301480156101cf576101238360a08187614c60565b90945092506101008310801590610143575061014161010084614cd2565b155b6101ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f643200000000000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60006101bc84860186614de5565b90506101c985858361052e565b506102a5565b6000806101df6040828789614c60565b8101906101ec9190614e93565b90925090506101fe8560808189614c60565b9096509450610100851080159061021e575061021c61010086614cd2565b155b610284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f643300000000000000000000000000000000000000000000000000000000000060448201526064016101a5565b600061029286880188614de5565b90506102a18383838a8a610692565b5050505b6040517ff99031a70000000000000000000000000000000000000000000000000000000081523260048201527f000000000000000000000000a65d73c6145ac2ae351c233f43d197ebbc04c01373ffffffffffffffffffffffffffffffffffffffff169063f99031a790602401602060405180830381865afa15801561032f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103539190614eb5565b6103b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f616100000000000000000000000000000000000000000000000000000000000060448201526064016101a5565b005b3480156103c757600080fd5b506103b96103d6366004614ed7565b6108cc565b6103ee6103e9366004615028565b610994565b604080519283526020830191909152015b60405180910390f35b34801561041457600080fd5b506103b9610423366004614ed7565b610fc3565b34801561043457600080fd5b506103b9610443366004614ed7565b61108b565b34801561045457600080fd5b506103b9610463366004614ed7565b611153565b34801561047457600080fd5b506103b9610483366004614ed7565b61121b565b34801561049457600080fd5b506103b96104a3366004614ed7565b6112e3565b6103ee6104b63660046150b0565b6113ab565b3480156104c757600080fd5b506103b96104d6366004614ed7565b6114de565b3480156104e757600080fd5b506103b96104f6366004615194565b6115a6565b61050e6105093660046150b0565b6118e2565b6040516103ff9190615229565b6103b961052936600461526d565b6118f3565b8060005b6101008411156105e85761054a846101008188614c60565b9095509350600061055d86860187614de5565b90506105a0818588888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611ce592505050565b6105af5760a0015190506105e8565b6105b881612b27565b80156105c5575061010085145b156105e1576105e1816040015184608001518560000151612bb9565b9250610532565b606082015160a01c6020161561068b57606082015160781c6002166106745781608001518111610674576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f326600000000000000000000000000000000000000000000000000000000000060448201526064016101a5565b61068b826020015183608001518460000151612bb9565b5050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081016106dd576106d88360200151600087136106cf57856106d1565b865b8551612bb9565b61068b565b606083015160a01c601016610702576107028360200151600087136106cf57856106d1565b366000610713836101008187614c60565b90925090508460005b600061072a84860186614de5565b905061076d818987878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611ce592505050565b61077c5760a001519050610816565b61078581612b27565b8015610792575061010084145b80156107a75750606083015160a01c60101615155b156107ca576107ca836020015160008c136107c2578a6106d1565b8b8551612bb9565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084016107fc5760a001519050610816565b61080a846101008188614c60565b9198509450925061071c565b606082015160a01c602016156108c157606082015160781c6002166108a257816080015181116108a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f336600000000000000000000000000000000000000000000000000000000000060448201526064016101a5565b6108c1826020015160008b136108b857896108ba565b8a5b8451612bb9565b505050505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461094d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f736200000000000000000000000000000000000000000000000000000000000060448201526064016101a5565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60008060005a90506000866000815181106109b1576109b16152d9565b60209081029190910181015101516040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015610a2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4e9190615308565b905060005b8751811015610d6357600071f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0898381518110610a8357610a836152d9565b6020026020010151600001818151610a9b9190615350565b9052508851610ace908a9084908110610ab657610ab66152d9565b60200260200101516060015160ff60509190911c1690565b600714610bc057888281518110610ae757610ae76152d9565b60200260200101516020015173ffffffffffffffffffffffffffffffffffffffff166370a082318a8481518110610b2057610b206152d9565b6020908102919091010151516040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401602060405180830381865afa158015610b95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb99190615308565b9050610ccf565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f7888aec8a8481518110610c0e57610c0e6152d9565b6020026020010151602001518b8581518110610c2c57610c2c6152d9565b6020908102919091010151516040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff928316600482015291166024820152604401602060405180830381865afa158015610ca8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ccc9190615308565b90505b868281518110610ce157610ce16152d9565b6020026020010151811115610d52576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f216261000000000000000000000000000000000000000000000000000000000060448201526064016101a5565b50610d5c81615363565b9050610a53565b50610d6e8787612d22565b60008188600081518110610d8457610d846152d9565b60209081029190910181015101516040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015610dfd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e219190615308565b610e2b919061539b565b905060008113610e97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f216500000000000000000000000000000000000000000000000000000000000060448201526064016101a5565b6040517ff99031a70000000000000000000000000000000000000000000000000000000081523260048201527f000000000000000000000000a65d73c6145ac2ae351c233f43d197ebbc04c01373ffffffffffffffffffffffffffffffffffffffff169063f99031a790602401602060405180830381865afa158015610f21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f459190614eb5565b610fab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f616200000000000000000000000000000000000000000000000000000000000060448201526064016101a5565b5a610fb6908461539b565b9890975095505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314611044576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f736200000000000000000000000000000000000000000000000000000000000060448201526064016101a5565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff16331461110c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f736200000000000000000000000000000000000000000000000000000000000060448201526064016101a5565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff1633146111d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f736200000000000000000000000000000000000000000000000000000000000060448201526064016101a5565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff16331461129c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f736200000000000000000000000000000000000000000000000000000000000060448201526064016101a5565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314611364576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f736200000000000000000000000000000000000000000000000000000000000060448201526064016101a5565b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000806113b783613135565b909250905060008113156114d9576040517ff99031a70000000000000000000000000000000000000000000000000000000081523260048201527f000000000000000000000000a65d73c6145ac2ae351c233f43d197ebbc04c01373ffffffffffffffffffffffffffffffffffffffff169063f99031a790602401602060405180830381865afa15801561144f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114739190614eb5565b6114d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f616200000000000000000000000000000000000000000000000000000000000060448201526064016101a5565b915091565b60005473ffffffffffffffffffffffffffffffffffffffff16331461155f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f736200000000000000000000000000000000000000000000000000000000000060448201526064016101a5565b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff163314806115df57503373728ac133a5c9250a61f7b27abbe7a823e786ff66145b611645576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f216f776e6572000000000000000000000000000000000000000000000000000060448201526064016101a5565b60005b848110156118da5760005b828110156118c757600085838151811061166f5761166f6152d9565b60200260200101519050806000036116a457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6000808989868181106116b9576116b96152d9565b90506020020160208101906116ce9190614ed7565b73ffffffffffffffffffffffffffffffffffffffff167f095ea7b300000000000000000000000000000000000000000000000000000000888887818110611717576117176152d9565b905060200201602081019061172c9190614ed7565b60405173ffffffffffffffffffffffffffffffffffffffff909116602482015260448101869052606401604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009094169390931790925290516117df91906153df565b6000604051808303816000865af19150503d806000811461181c576040519150601f19603f3d011682016040523d82523d6000602084013e611821565b606091505b509150915081801561184b57508051158061184b57508080602001905181019061184b9190614eb5565b6118b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f617070726f7665206661696c656400000000000000000000000000000000000060448201526064016101a5565b50505080806118bf90615363565b915050611653565b50806118d281615363565b915050611648565b505050505050565b60606118ed8261337b565b92915050565b60005473ffffffffffffffffffffffffffffffffffffffff1633148061192c57503373728ac133a5c9250a61f7b27abbe7a823e786ff66145b611992576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f216f776e6572000000000000000000000000000000000000000000000000000060448201526064016101a5565b60005b8381101561068b5760008585838181106119b1576119b16152d9565b90506020020160208101906119c69190614ed7565b73ffffffffffffffffffffffffffffffffffffffff1603611a3657478015611a30576000805460405173ffffffffffffffffffffffffffffffffffffffff9091169183156108fc02918491818181858888f19350505050158015611a2e573d6000803e3d6000fd5b505b50611cd3565b6000838383818110611a4a57611a4a6152d9565b90506020020135600014611a7657838383818110611a6a57611a6a6152d9565b90506020020135611b2d565b858583818110611a8857611a886152d9565b9050602002016020810190611a9d9190614ed7565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff91909116906370a0823190602401602060405180830381865afa158015611b09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b2d9190615308565b905080600003611b3d5750611cd3565b600080878785818110611b5257611b526152d9565b9050602002016020810190611b679190614ed7565b6000546040805173ffffffffffffffffffffffffffffffffffffffff9283166024820152604480820188905282518083039091018152606490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905290519290911691611bfd91906153df565b6000604051808303816000865af19150503d8060008114611c3a576040519150601f19603f3d011682016040523d82523d6000602084013e611c3f565b606091505b5091509150818015611c69575080511580611c69575080806020019051810190611c699190614eb5565b611ccf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f74616e73666572206661696c656400000000000000000000000000000000000060448201526064016101a5565b5050505b80611cdd81615363565b915050611995565b606083015160009060501c60ff1660018111611e5357611d04846134b1565b15611d4b57611d4b8560200151866080015183600703611d44577f0000000000000000000000000000000000000000000000000000000000000000612bb9565b8751612bb9565b600080866020015173ffffffffffffffffffffffffffffffffffffffff16876040015173ffffffffffffffffffffffffffffffffffffffff1610611d955760008760a00151611d9d565b8660a0015160005b8851919350915073ffffffffffffffffffffffffffffffffffffffff1663022c0d9f8383611dcb8b8a61352f565b604080516000815260208101918290527fffffffff0000000000000000000000000000000000000000000000000000000060e087901b16909152611e159392919060248101615445565b600060405180830381600087803b158015611e2f57600080fd5b505af1158015611e43573d6000803e3d6000fd5b5050505060019350505050612b20565b80600203611e7957611e6f611e68868561352f565b8685613620565b6000915050612b20565b806003036121c357604080516080810182526000602082018190529181018290526060810191909152308152611eaf868561352f565b73ffffffffffffffffffffffffffffffffffffffff166040820152611f306040805160c08101909152600080825260208201908152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001606081525090565b865181526000602082018190525060208701805173ffffffffffffffffffffffffffffffffffffffff908116604084810191909152808a0151821660608501526080808b0180519186019190915251925160065491517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015291831660248301529091169063dd62ed3e90604401602060405180830381865afa158015611fe1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120059190615308565b10156120f457602087015160065473ffffffffffffffffffffffffffffffffffffffff9182169163095ea7b3911661205e60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff615350565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff909216600483015260248201526044016020604051808303816000875af11580156120ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f29190614eb5565b505b60065460a08801516040517f52bbbe2900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216916352bbbe299161217391859187917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9060040161548a565b6020604051808303816000875af1158015612192573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121b69190615308565b5060019350505050612b20565b8060040361262d5760408086015190517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa15801561223c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122609190615308565b9050466001036123b757606086015160781c6002161561233557855160608088015160808901516040517f3df021240000000000000000000000000000000000000000000000000000000081529282901c60ff908116600f90810b600486015260689390931c1690910b602483015260448201526000606482015273ffffffffffffffffffffffffffffffffffffffff90911690633df02124906084015b600060405180830381600087803b15801561231857600080fd5b505af115801561232c573d6000803e3d6000fd5b50505050612508565b855160608088015160808901516040517f5b41b9080000000000000000000000000000000000000000000000000000000081529282901c60ff908116600485015260689290921c909116602483015260448201526000606482015273ffffffffffffffffffffffffffffffffffffffff90911690635b41b908906084016122fe565b606086015160781c6001161561244f57855160608088015160808901516040517fe2ad025a0000000000000000000000000000000000000000000000000000000081529282901c60ff908116600485015260689290921c909116602483015260448201526000606482015230608482015273ffffffffffffffffffffffffffffffffffffffff9091169063e2ad025a9060a4016122fe565b855160608088015173ffffffffffffffffffffffffffffffffffffffff90921691635b41b908911c60ff16606089015160681c60ff1660808a01516040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815260048101939093526024830191909152604482015260006064820152608401600060405180830381600087803b1580156124ef57600080fd5b505af1158015612503573d6000803e3d6000fd5b505050505b606086015160781c6002166126225760a086015160408088015190517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152839173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa15801561258c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125b09190615308565b6125ba9190615350565b1015612622576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f706f00000000000000000000000000000000000000000000000000000000000060448201526064016101a5565b600192505050612b20565b8060050361280d5761263e846134b1565b1561267e5761267e8560200151866080015183600703611d44577f0000000000000000000000000000000000000000000000000000000000000000612bb9565b606085015160a81c6001161561274a57845173ffffffffffffffffffffffffffffffffffffffff1663bd6015b46126b5878661352f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016020604051808303816000875af1158015612720573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127449190615308565b50612803565b845173ffffffffffffffffffffffffffffffffffffffff1663dd93f59a612771878661352f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024015b6020604051808303816000875af11580156127dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128019190615308565b505b6001915050612b20565b806006036128ef5761281e846134b1565b1561285e5761285e8560200151866080015183600703611d44577f0000000000000000000000000000000000000000000000000000000000000000612bb9565b846000015173ffffffffffffffffffffffffffffffffffffffff166353c059a061288e876060015160ff16151590565b612898888761352f565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168152911515600483015273ffffffffffffffffffffffffffffffffffffffff1660248201526044016127be565b80600703612b1a57612900846134b1565b15612940576129408560200151866080015183600703611d44577f0000000000000000000000000000000000000000000000000000000000000000612bb9565b602085015185516040517ff9609f0800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169263f9609f08926129d99260040173ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b6020604051808303816000875af11580156129f8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a1c9190615308565b50846000015173ffffffffffffffffffffffffffffffffffffffff16637132bb7f8660200151612a4c888761352f565b6040805173ffffffffffffffffffffffffffffffffffffffff9384166020820152929091169082015260026060820152608001604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181526000808452602084019092529181906040518563ffffffff1660e01b8152600401612ad894939291906155aa565b60408051808303816000875af1158015612af6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061280191906155fe565b60009150505b9392505050565b60008160c0015173ffffffffffffffffffffffffffffffffffffffff16826040015173ffffffffffffffffffffffffffffffffffffffff161480156118ed5750606082015160501c60ff1660031480612b8a5750606082015160501c60ff166005145b80612b9f5750606082015160501c60ff166006145b806118ed5750606082015160501c60ff1660071492915050565b6040805173ffffffffffffffffffffffffffffffffffffffff8381166024830152604480830186905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790529151600092839290871691612c5091906153df565b6000604051808303816000865af19150503d8060008114612c8d576040519150601f19603f3d011682016040523d82523d6000602084013e612c92565b606091505b5091509150818015612cbc575080511580612cbc575080806020019051810190612cbc9190614eb5565b61068b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f544500000000000000000000000000000000000000000000000000000000000060448201526064016101a5565b600060018351612d329190615350565b90505b6002612d4c848381518110610ab657610ab66152d9565b1161311e576000835167ffffffffffffffff811115612d6d57612d6d614ce6565b604051908082528060200260200182016040528015612dfa57816020015b604080516101008101825260008082526020808301829052928201819052606082018190526080820181905260a0820181905260c0820181905260e082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181612d8b5790505b50905060005b84518110156130bc576000828281518110612e1d57612e1d6152d9565b60200260200101519050600086518386612e379190615656565b612e419190614cd2565b90506000878281518110612e5757612e576152d9565b602090810291909101810151805185528082015160408083015173ffffffffffffffffffffffffffffffffffffffff9081169188019190915216918501919091528751909150879083908110612eaf57612eaf6152d9565b602002602001015187836001612ec59190615656565b81518110612ed557612ed56152d9565b602090810291909101015160a085015260808401528751600090612efa846001615656565b612f049190614cd2565b9050888181518110612f1857612f186152d9565b60209081029190910101515173ffffffffffffffffffffffffffffffffffffffff1660e085015288518990600090612f5257612f526152d9565b602090810291909101810151015173ffffffffffffffffffffffffffffffffffffffff1660c08501526060808301519085018190528951612fa99190612fa4908c9085908110610ab657610ab66152d9565b613773565b60608501819052612fbb908615613783565b6060858101829052830151612fdd919060281c62ffffff16620186a0146137af565b606085810182905283810151612ff992911c60ff1615156137db565b60608086019190915282015160501c60ff1660041480156130265750600189516130239190615350565b85145b156130a55761306b868a5187600161303e9190615656565b6130489190614cd2565b81518110613058576130586152d9565b6020026020010151606001516001613808565b8951879061307a886001615656565b6130849190614cd2565b81518110613094576130946152d9565b602002602001015160600181815250505b5050505080806130b490615363565b915050612e00565b506000816040516020016130d09190615669565b604051602081830303815290604052905061068b826000815181106130f7576130f76152d9565b602002602001015161311960408085516131119190615350565b859190613834565b613a21565b8061312881615713565b915050612d35565b505050565b60008060005a905060006131488561337b565b9050337343dd5faf6be7f39fac3edc90b9bad6f71fe1171a1480159061316e5750333014155b801561317b575046600114155b15613325576040850151158061319357506060850151155b1561326c578460400151816000815181106131b0576131b06152d9565b60200260200101516131c29190615656565b81600183516131d19190615350565b815181106131e1576131e16152d9565b60200260200101511015613267577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81600081518110613223576132236152d9565b6020026020010151826001845161323a9190615350565b8151811061324a5761324a6152d9565b602002602001015161325c919061539b565b935093505050915091565b613325565b846040015181600081518110613284576132846152d9565b60200260200101516132969190615656565b81600183516132a59190615350565b815181106132b5576132b56152d9565b60200260200101511015613325576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f6d696e000000000000000000000000000000000000000000000000000000000060448201526064016101a5565b600a8160008151811061333a5761333a6152d9565b6020026020010181815161334e9190615656565b905250845161335d9082612d22565b5a613368908361539b565b81600081518110613223576132236152d9565b80515160609061338c906001615656565b67ffffffffffffffff8111156133a4576133a4614ce6565b6040519080825280602002602001820160405280156133cd578160200160208202803683370190505b5090508160200151816000815181106133e8576133e86152d9565b60200260200101818152505060005b8251518110156134ab57600083600001518281518110613419576134196152d9565b6020026020010151905071f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0816000018181516134479190615350565b9150818152505061347181848481518110613464576134646152d9565b6020026020010151613c2a565b8361347d846001615656565b8151811061348d5761348d6152d9565b602090810291909101015250806134a381615363565b9150506133f7565b50919050565b60008160c0015173ffffffffffffffffffffffffffffffffffffffff16826040015173ffffffffffffffffffffffffffffffffffffffff1614806135155750606082015160019060501c60ff16111580156135155750606082015160a01c60101615155b806118ed5750606082015160501c60ff1660041492915050565b606082015160009060a01c600f168160018211158061354e5750816005145b806135595750816006145b806135645750816007145b8061357157506101008451145b80156135b157508460c0015173ffffffffffffffffffffffffffffffffffffffff16856040015173ffffffffffffffffffffffffffffffffffffffff1614155b6135bb57306135c1565b8460e001515b905073ffffffffffffffffffffffffffffffffffffffff811630148015906135e95750816007145b15613618577f0000000000000000000000000000000000000000000000000000000000000000925050506118ed565b949350505050565b606082015160a01c608016156136f357815160808301516040840151602085015173ffffffffffffffffffffffffffffffffffffffff938416936324b31a0c9388939092908216911610806136895773fffd8963efd1fc6a506488495d951d5263988d25613690565b6401000276a45b866040518663ffffffff1660e01b81526004016136b1959493929190615748565b60408051808303816000875af11580156136cf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061068b919061578f565b815160408301516020840151608085015173ffffffffffffffffffffffffffffffffffffffff9384169363128acb08938893908216911610908161374b5773fffd8963efd1fc6a506488495d951d5263988d25613752565b6401000276a45b866040518663ffffffff1660e01b81526004016136b19594939291906157b3565b6000612b2060a083901b84615656565b6000816137905782612b20565b612b208374100000000000000000000000000000000000000000615656565b6000816137bc5782612b20565b612b208374800000000000000000000000000000000000000000615656565b6000816137e85782612b20565b612b20837501000000000000000000000000000000000000000000615656565b6000816138155782612b20565b612b208374200000000000000000000000000000000000000000615656565b60608161384281601f615656565b10156138aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f7700000000000000000000000000000000000060448201526064016101a5565b826138b58382615656565b101561391d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f7700000000000000000000000000000000000060448201526064016101a5565b6139278284615656565b84511015613991576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e647300000000000000000000000000000060448201526064016101a5565b6060821580156139b05760405191506000825260208201604052613a18565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156139e95780518352602092830192016139d1565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b606082015160501c60ff166002811115613a97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f666500000000000000000000000000000000000000000000000000000000000060448201526064016101a5565b8260c0015173ffffffffffffffffffffffffffffffffffffffff16836040015173ffffffffffffffffffffffffffffffffffffffff1603613bc45760018111613bb957600080846020015173ffffffffffffffffffffffffffffffffffffffff16856040015173ffffffffffffffffffffffffffffffffffffffff1610613b245760008560a00151613b2c565b8460a0015160005b86516040517f022c0d9f00000000000000000000000000000000000000000000000000000000815292945090925073ffffffffffffffffffffffffffffffffffffffff169063022c0d9f90613b8b908590859030908a90600401615445565b600060405180830381600087803b158015613ba557600080fd5b505af11580156108c1573d6000803e3d6000fd5b613130308484613620565b60018111613c1657600080846020015173ffffffffffffffffffffffffffffffffffffffff16856040015173ffffffffffffffffffffffffffffffffffffffff1610613b245760008560a00151613b2c565b613130613c23848461352f565b8484613620565b606082015160009060501c60ff1660018111613db557606084015160009060281c62ffffff169050806201e24003613d0357845160208601516040517ff140a35a0000000000000000000000000000000000000000000000000000000081526004810187905273ffffffffffffffffffffffffffffffffffffffff918216602482015291169063f140a35a90604401602060405180830381865afa158015613cd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613cfa9190615308565b925050506118ed565b600080866000015173ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613d55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d799190615818565b506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150613daa878784846145f2565b9450505050506118ed565b8060020361403157606084015160281c62ffffff16620186a003613ea35760025484516040808701516020880151606089015192517f8f51522800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff948516600482015291841690841610602482015260109190911c62ffffff16604482015260648101869052911690638f515228906084015b602060405180830381865afa158015613e77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e9b9190615308565b9150506118ed565b606080850151901c60ff1660021480613ec65750606080850151901c60ff166003145b15613f8f5760048054602086015160408088015190517f2d9ebd1d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831694810194909452811660248401526044830186905260006064840181905292911690632d9ebd1d9060840160408051808303816000875af1158015613f60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f849190615868565b5092506118ed915050565b600180548551602087015160408089015160608a015182517fad3be54a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9586166004820152938516602485015290841660448401529081901c61ffff1690940b606482015262ffffff60109490941c93909316608484015260a48301869052169063ad3be54a9060c401613e5a565b8060030361410f576040805160a081018252600060208083018281528385018381526060850193845260065473ffffffffffffffffffffffffffffffffffffffff9081168652608086018a8152938b0151811682528a870151811685528a51835260055496517f7261903700000000000000000000000000000000000000000000000000000000815286518216600482015292516024840152905181166044830152925183166064820152905160848201529192169063726190379060a4016020604051808303816000875af1158015613cd6573d6000803e3d6000fd5b806004036143b75760004660010361427157606085015160781c600216156141f25784516060808701516040517f5e0d443f0000000000000000000000000000000000000000000000000000000081529181901c60ff908116600f90810b600485015260689290921c16900b60248201526044810186905273ffffffffffffffffffffffffffffffffffffffff90911690635e0d443f906064015b602060405180830381865afa1580156141c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141eb9190615308565b905061436e565b845160608087015173ffffffffffffffffffffffffffffffffffffffff9092169163556d6e9f911c60ff165b606088015160681c60ff166040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815260048101929092526024820152604481018790526064016141aa565b606085015160701c60ff16156142b157845160608087015173ffffffffffffffffffffffffffffffffffffffff9092169163556d6e9f911c60ff1661421e565b845160608087015173ffffffffffffffffffffffffffffffffffffffff909216916385f11d1e911c60ff16606088015160681c60ff166040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526004810192909252602482015260448101879052606401602060405180830381865afa158015614347573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061436b9190615308565b90505b606085015162ffffff601082901c81169160281c1681156143ab57806143948382615350565b61439e908561589f565b6143a891906158b6565b92505b829450505050506118ed565b8060050361448757606080850151901c60ff161561442b5783516040517f79a048760000000000000000000000000000000000000000000000000000000081523060048201526024810185905273ffffffffffffffffffffffffffffffffffffffff909116906379a0487690604401613e5a565b83516040517f66410a210000000000000000000000000000000000000000000000000000000081523060048201526024810185905273ffffffffffffffffffffffffffffffffffffffff909116906366410a2190604401613e5a565b80600603614570576000846000015173ffffffffffffffffffffffffffffffffffffffff1663e77366f8856144c2886060015160ff16151590565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526fffffffffffffffffffffffffffffffff909216600483015215156024820152604401606060405180830381865afa15801561452e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061455291906158ea565b506fffffffffffffffffffffffffffffffff1693506118ed92505050565b806007036145e157835160208501516040517fff9c8ac600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152602481018690526000604482015291169063ff9c8ac690606401613e5a565b60009150506118ed565b5092915050565b6060840151600090602881901c62ffffff169060501c60ff16600114614644576060860151819060101c62ffffff1661462b9083615350565b614635908761589f565b61463f91906158b6565b614671565b6060860151819060101c62ffffff1661465d908761589f565b61466791906158b6565b6146719086615350565b606087015190955060581c60ff16151590506146fb57600080866040015173ffffffffffffffffffffffffffffffffffffffff16876020015173ffffffffffffffffffffffffffffffffffffffff16106146cc5783856146cf565b84845b90925090506146de8683615656565b6146e8828861589f565b6146f291906158b6565b92505050614906565b60008061470c876060015160ff1690565b606088015160081c60ff1691509150816012146147335761472e82600a615a4d565b61473d565b670de0b6b3a76400005b9150806012146147575761475281600a615a4d565b614761565b670de0b6b3a76400005b9050600061477386868585600161495b565b90508261478887670de0b6b3a764000061589f565b61479291906158b6565b9550816147a786670de0b6b3a764000061589f565b6147b191906158b6565b9450600080896040015173ffffffffffffffffffffffffffffffffffffffff168a6020015173ffffffffffffffffffffffffffffffffffffffff16106147f85786886147fb565b87875b91509150896040015173ffffffffffffffffffffffffffffffffffffffff168a6020015173ffffffffffffffffffffffffffffffffffffffff161061485c578361484d8a670de0b6b3a764000061589f565b61485791906158b6565b614879565b8461486f8a670de0b6b3a764000061589f565b61487991906158b6565b9850600061489161488a848c615656565b8584614a4c565b61489b9083615350565b9050670de0b6b3a76400008b6040015173ffffffffffffffffffffffffffffffffffffffff168c6020015173ffffffffffffffffffffffffffffffffffffffff16106148e757866148e9565b855b6148f3908361589f565b6148fd91906158b6565b96505050505050505b846040015173ffffffffffffffffffffffffffffffffffffffff16856020015173ffffffffffffffffffffffffffffffffffffffff16106149475782614949565b815b81111561361857506000949350505050565b60008115614a365760008461497888670de0b6b3a764000061589f565b61498291906158b6565b905060008461499988670de0b6b3a764000061589f565b6149a391906158b6565b90506000670de0b6b3a76400006149ba838561589f565b6149c491906158b6565b90506000670de0b6b3a76400006149db848061589f565b6149e591906158b6565b670de0b6b3a76400006149f8868061589f565b614a0291906158b6565b614a0c9190615656565b9050670de0b6b3a7640000614a21828461589f565b614a2b91906158b6565b945050505050614a43565b614a40858761589f565b90505b95945050505050565b6000805b60ff811015614b5257826000614a668783614b5b565b905085811015614ab6576000614a7c8887614bf8565b614a868389615350565b614a9890670de0b6b3a764000061589f565b614aa291906158b6565b9050614aae8187615656565b955050614af8565b6000614ac28887614bf8565b614acc8884615350565b614ade90670de0b6b3a764000061589f565b614ae891906158b6565b9050614af48187615350565b9550505b81851115614b21576001614b0c8387615350565b11614b1c57849350505050612b20565b614b3d565b6001614b2d8684615350565b11614b3d57849350505050612b20565b50508080614b4a90615363565b915050614a50565b50909392505050565b6000670de0b6b3a764000082818581614b74828061589f565b614b7e91906158b6565b614b88919061589f565b614b9291906158b6565b614b9c919061589f565b614ba691906158b6565b670de0b6b3a7640000808481614bbc828061589f565b614bc691906158b6565b614bd0919061589f565b614bda91906158b6565b614be4908661589f565b614bee91906158b6565b612b209190615656565b6000670de0b6b3a76400008381614c0f828061589f565b614c1991906158b6565b614c23919061589f565b614c2d91906158b6565b670de0b6b3a764000080614c41858061589f565b614c4b91906158b6565b614c5686600361589f565b614be4919061589f565b60008085851115614c7057600080fd5b83861115614c7d57600080fd5b5050820193919092039150565b600060208284031215614c9c57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082614ce157614ce1614ca3565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715614d3857614d38614ce6565b60405290565b60405160a0810167ffffffffffffffff81118282101715614d3857614d38614ce6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715614da857614da8614ce6565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff81168114614dd257600080fd5b50565b8035614de081614db0565b919050565b6000610100808385031215614df957600080fd5b6040519081019067ffffffffffffffff82118183101715614e1c57614e1c614ce6565b816040528335815260208401359150614e3482614db0565b816020820152614e4660408501614dd5565b6040820152606084013560608201526080840135608082015260a084013560a0820152614e7560c08501614dd5565b60c0820152614e8660e08501614dd5565b60e0820152949350505050565b60008060408385031215614ea657600080fd5b50508035926020909101359150565b600060208284031215614ec757600080fd5b81518015158114612b2057600080fd5b600060208284031215614ee957600080fd5b8135612b2081614db0565b600067ffffffffffffffff821115614f0e57614f0e614ce6565b5060051b60200190565b600082601f830112614f2957600080fd5b81356020614f3e614f3983614ef4565b614d61565b82815260079290921b84018101918181019086841115614f5d57600080fd5b8286015b84811015614fc25760808189031215614f7a5760008081fd5b614f82614d15565b8135815284820135614f9381614db0565b81860152604082810135614fa681614db0565b9082015260608281013590820152835291830191608001614f61565b509695505050505050565b600082601f830112614fde57600080fd5b81356020614fee614f3983614ef4565b82815260059290921b8401810191818101908684111561500d57600080fd5b8286015b84811015614fc25780358352918301918301615011565b60008060006060848603121561503d57600080fd5b833567ffffffffffffffff8082111561505557600080fd5b61506187838801614f18565b9450602086013591508082111561507757600080fd5b61508387838801614fcd565b9350604086013591508082111561509957600080fd5b506150a686828701614fcd565b9150509250925092565b6000602082840312156150c257600080fd5b813567ffffffffffffffff808211156150da57600080fd5b9083019060a082860312156150ee57600080fd5b6150f6614d3e565b82358281111561510557600080fd5b61511187828601614f18565b8252506020830135602082015260408301356040820152606083013560608201526080830135608082015280935050505092915050565b60008083601f84011261515a57600080fd5b50813567ffffffffffffffff81111561517257600080fd5b6020830191508360208260051b850101111561518d57600080fd5b9250929050565b6000806000806000606086880312156151ac57600080fd5b853567ffffffffffffffff808211156151c457600080fd5b6151d089838a01615148565b909750955060208801359150808211156151e957600080fd5b6151f589838a01614fcd565b9450604088013591508082111561520b57600080fd5b5061521888828901615148565b969995985093965092949392505050565b6020808252825182820181905260009190848201906040850190845b8181101561526157835183529284019291840191600101615245565b50909695505050505050565b6000806000806040858703121561528357600080fd5b843567ffffffffffffffff8082111561529b57600080fd5b6152a788838901615148565b909650945060208701359150808211156152c057600080fd5b506152cd87828801615148565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561531a57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156118ed576118ed615321565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361539457615394615321565b5060010190565b81810360008312801583831316838312821617156145eb576145eb615321565b60005b838110156153d65781810151838201526020016153be565b50506000910152565b600082516153f18184602087016153bb565b9190910192915050565b600081518084526154138160208601602086016153bb565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b84815283602082015273ffffffffffffffffffffffffffffffffffffffff8316604082015260806060820152600061548060808301846153fb565b9695505050505050565b60e08152845160e082015260006020860151600281106154d3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b610100830152604086015173ffffffffffffffffffffffffffffffffffffffff16610120830152606086015161552261014084018273ffffffffffffffffffffffffffffffffffffffff169052565b50608086015161016083015260a086015160c06101808401526155496101a08401826153fb565b915050615598602083018673ffffffffffffffffffffffffffffffffffffffff808251168352602082015115156020840152806040830151166040840152506060810151151560608301525050565b60a082019390935260c0015292915050565b6080815260006155bd60808301876153fb565b73ffffffffffffffffffffffffffffffffffffffff86811660208501528516604084015282810360608401526155f381856153fb565b979650505050505050565b60006040828403121561561057600080fd5b6040516040810181811067ffffffffffffffff8211171561563357615633614ce6565b604052825161564181614db0565b81526020928301519281019290925250919050565b808201808211156118ed576118ed615321565b602080825282518282018190526000919060409081850190868401855b82811015615706578151805185528681015173ffffffffffffffffffffffffffffffffffffffff9081168887015286820151811687870152606080830151908701526080808301519087015260a0808301519087015260c08083015182169087015260e09182015116908501526101009093019290850190600101615686565b5091979650505050505050565b60008161572257615722615321565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b600073ffffffffffffffffffffffffffffffffffffffff8088168352866020840152851515604084015280851660608401525060a060808301526155f360a08301846153fb565b600080604083850312156157a257600080fd5b505080516020909101519092909150565b600073ffffffffffffffffffffffffffffffffffffffff8088168352861515602084015285604084015280851660608401525060a060808301526155f360a08301846153fb565b80516dffffffffffffffffffffffffffff81168114614de057600080fd5b60008060006060848603121561582d57600080fd5b615836846157fa565b9250615844602085016157fa565b9150604084015163ffffffff8116811461585d57600080fd5b809150509250925092565b6000806040838503121561587b57600080fd5b82519150602083015161ffff8116811461589457600080fd5b809150509250929050565b80820281158282048414176118ed576118ed615321565b6000826158c5576158c5614ca3565b500490565b80516fffffffffffffffffffffffffffffffff81168114614de057600080fd5b6000806000606084860312156158ff57600080fd5b615908846158ca565b9250615916602085016158ca565b9150615924604085016158ca565b90509250925092565b600181815b8085111561598657817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561596c5761596c615321565b8085161561597957918102915b93841c9390800290615932565b509250929050565b60008261599d575060016118ed565b816159aa575060006118ed565b81600181146159c057600281146159ca576159e6565b60019150506118ed565b60ff8411156159db576159db615321565b50506001821b6118ed565b5060208310610133831016604e8410600b8410161715615a09575081810a6118ed565b615a13838361592d565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115615a4557615a45615321565b029392505050565b6000612b20838361598e56fea2646970667358221220110d8390b6750722221cac6fbfe248441c087107881827b367cc0718c480a1ed64736f6c63430008130033