0x60806040523480156200001157600080fd5b50601260ff16600a620000259190620002c1565b6327bc86aa62000036919062000312565b600081905550601260ff16600a6200004f9190620002c1565b6327bc86aa62000060919062000312565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601260ff16600a620001069190620002c1565b6327bc86aa62000117919062000312565b6040516200012691906200036e565b60405180910390a36200038b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620001c2578086048111156200019a576200019962000134565b5b6001851615620001aa5780820291505b8081029050620001ba8562000163565b94506200017a565b94509492505050565b600082620001dd5760019050620002b0565b81620001ed5760009050620002b0565b8160018114620002065760028114620002115762000247565b6001915050620002b0565b60ff84111562000226576200022562000134565b5b8360020a91508482111562000240576200023f62000134565b5b50620002b0565b5060208310610133831016604e8410600b8410161715620002815782820a9050838111156200027b576200027a62000134565b5b620002b0565b62000290848484600162000170565b92509050818404811115620002aa57620002a962000134565b5b81810290505b9392505050565b6000819050919050565b6000620002ce82620002b7565b9150620002db83620002b7565b92506200030a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620001cb565b905092915050565b60006200031f82620002b7565b91506200032c83620002b7565b92508282026200033c81620002b7565b9150828204841483151762000356576200035562000134565b5b5092915050565b6200036881620002b7565b82525050565b60006020820190506200038560008301846200035d565b92915050565b6114a6806200039b6000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c80636618846311610071578063661884631461019157806370a08231146101c157806395d89b41146101f1578063a9059cbb1461020f578063d73dd6231461023f578063dd62ed3e1461026f576100b4565b806306fdde03146100b9578063095ea7b3146100d757806318160ddd1461010757806323b872dd14610125578063313ce56714610155578063378dc3dc14610173575b600080fd5b6100c161029f565b6040516100ce9190610fc7565b60405180910390f35b6100f160048036038101906100ec9190611082565b6102d8565b6040516100fe91906110dd565b60405180910390f35b61010f6103ca565b60405161011c9190611107565b60405180910390f35b61013f600480360381019061013a9190611122565b6103d3565b60405161014c91906110dd565b60405180910390f35b61015d610776565b60405161016a9190611191565b60405180910390f35b61017b61077b565b6040516101889190611107565b60405180910390f35b6101ab60048036038101906101a69190611082565b61079e565b6040516101b891906110dd565b60405180910390f35b6101db60048036038101906101d691906111ac565b610a28565b6040516101e89190611107565b60405180910390f35b6101f9610a71565b6040516102069190610fc7565b60405180910390f35b61022960048036038101906102249190611082565b610aaa565b60405161023691906110dd565b60405180910390f35b61025960048036038101906102549190611082565b610cbb565b60405161026691906110dd565b60405180910390f35b610289600480360381019061028491906111d9565b610eb0565b6040516102969190611107565b60405180910390f35b6040518060400160405280601f81526020017f454d494c49412046524f4d2052453a5a45524f2049532054484520424553540081525081565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516103b89190611107565b60405180910390a36001905092915050565b60008054905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361040d57600080fd5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561045957600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156104e257600080fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461052d9190611248565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546105bb919061127c565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546106869190611248565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516107639190611107565b60405180910390a3600190509392505050565b601281565b601260ff16600a61078c91906113e3565b6327bc86aa61079b919061142e565b81565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050808311156108af576000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061093c565b82816108bb9190611248565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051610a159190611107565b60405180910390a3600191505092915050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6040518060400160405280600681526020017f454d494c4941000000000000000000000000000000000000000000000000000081525081565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ae457600080fd5b81600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610b3057600080fd5b81600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b7b9190611248565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c09919061127c565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610ca99190611107565b60405180910390a36001905092915050565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d45919061127c565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051610e9e9190611107565b60405180910390a36001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610f71578082015181840152602081019050610f56565b60008484015250505050565b6000601f19601f8301169050919050565b6000610f9982610f37565b610fa38185610f42565b9350610fb3818560208601610f53565b610fbc81610f7d565b840191505092915050565b60006020820190508181036000830152610fe18184610f8e565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061101982610fee565b9050919050565b6110298161100e565b811461103457600080fd5b50565b60008135905061104681611020565b92915050565b6000819050919050565b61105f8161104c565b811461106a57600080fd5b50565b60008135905061107c81611056565b92915050565b6000806040838503121561109957611098610fe9565b5b60006110a785828601611037565b92505060206110b88582860161106d565b9150509250929050565b60008115159050919050565b6110d7816110c2565b82525050565b60006020820190506110f260008301846110ce565b92915050565b6111018161104c565b82525050565b600060208201905061111c60008301846110f8565b92915050565b60008060006060848603121561113b5761113a610fe9565b5b600061114986828701611037565b935050602061115a86828701611037565b925050604061116b8682870161106d565b9150509250925092565b600060ff82169050919050565b61118b81611175565b82525050565b60006020820190506111a66000830184611182565b92915050565b6000602082840312156111c2576111c1610fe9565b5b60006111d084828501611037565b91505092915050565b600080604083850312156111f0576111ef610fe9565b5b60006111fe85828601611037565b925050602061120f85828601611037565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006112538261104c565b915061125e8361104c565b925082820390508181111561127657611275611219565b5b92915050565b60006112878261104c565b91506112928361104c565b92508282019050808211156112aa576112a9611219565b5b92915050565b60008160011c9050919050565b6000808291508390505b6001851115611307578086048111156112e3576112e2611219565b5b60018516156112f25780820291505b8081029050611300856112b0565b94506112c7565b94509492505050565b60008261132057600190506113dc565b8161132e57600090506113dc565b8160018114611344576002811461134e5761137d565b60019150506113dc565b60ff8411156113605761135f611219565b5b8360020a91508482111561137757611376611219565b5b506113dc565b5060208310610133831016604e8410600b84101617156113b25782820a9050838111156113ad576113ac611219565b5b6113dc565b6113bf84848460016112bd565b925090508184048111156113d6576113d5611219565b5b81810290505b9392505050565b60006113ee8261104c565b91506113f98361104c565b92506114267fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484611310565b905092915050565b60006114398261104c565b91506114448361104c565b92508282026114528161104c565b9150828204841483151761146957611468611219565b5b509291505056fea264697066735822122097d021eac5afaf5df2a22c6ef999945f021ae9deea5939498550338ac1ad944e64736f6c63430008130033