60806040525f60045534801562000014575f80fd5b506040518060400160405280600d81526020017f54616c7573204e6574776f726b00000000000000000000000000000000000000815250600190816200005b919062000448565b506040518060400160405280600581526020017f54414c555300000000000000000000000000000000000000000000000000000081525060029081620000a2919062000448565b506009600360146101000a81548160ff021916908360ff160217905550600360149054906101000a900460ff16600a620000dd9190620006b5565b633b9aca00620000ee919062000705565b5f819055503360035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f5460055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f54604051620001d6919062000760565b60405180910390a36200077b565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200026057607f821691505b6020821081036200027657620002756200021b565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620002da7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200029d565b620002e686836200029d565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620003306200032a6200032484620002fe565b62000307565b620002fe565b9050919050565b5f819050919050565b6200034b8362000310565b620003636200035a8262000337565b848454620002a9565b825550505050565b5f90565b620003796200036b565b6200038681848462000340565b505050565b5b81811015620003ad57620003a15f826200036f565b6001810190506200038c565b5050565b601f821115620003fc57620003c6816200027c565b620003d1846200028e565b81016020851015620003e1578190505b620003f9620003f0856200028e565b8301826200038b565b50505b505050565b5f82821c905092915050565b5f6200041e5f198460080262000401565b1980831691505092915050565b5f6200043883836200040d565b9150826002028217905092915050565b6200045382620001e4565b67ffffffffffffffff8111156200046f576200046e620001ee565b5b6200047b825462000248565b62000488828285620003b1565b5f60209050601f831160018114620004be575f8415620004a9578287015190505b620004b585826200042b565b86555062000524565b601f198416620004ce866200027c565b5f5b82811015620004f757848901518255600182019150602085019450602081019050620004d0565b8683101562000517578489015162000513601f8916826200040d565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620005b6578086048111156200058e576200058d6200052c565b5b60018516156200059e5780820291505b8081029050620005ae8562000559565b94506200056e565b94509492505050565b5f82620005d05760019050620006a2565b81620005df575f9050620006a2565b8160018114620005f85760028114620006035762000639565b6001915050620006a2565b60ff8411156200061857620006176200052c565b5b8360020a9150848211156200063257620006316200052c565b5b50620006a2565b5060208310610133831016604e8410600b8410161715620006735782820a9050838111156200066d576200066c6200052c565b5b620006a2565b62000682848484600162000565565b925090508184048111156200069c576200069b6200052c565b5b81810290505b9392505050565b5f60ff82169050919050565b5f620006c182620002fe565b9150620006ce83620006a9565b9250620006fd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620005bf565b905092915050565b5f6200071182620002fe565b91506200071e83620002fe565b92508282026200072e81620002fe565b915082820484148315176200074857620007476200052c565b5b5092915050565b6200075a81620002fe565b82525050565b5f602082019050620007755f8301846200074f565b92915050565b611a5780620007895f395ff3fe608060405234801561000f575f80fd5b50600436106100cd575f3560e01c8063622180231161008a578063a9059cbb11610064578063a9059cbb14610211578063d40ef58a14610241578063dd62ed3e1461025d578063ffb0a4a01461028d576100cd565b806362218023146101a757806370a08231146101c357806395d89b41146101f3576100cd565b806306fdde03146100d1578063095ea7b3146100ef57806318160ddd1461011f57806323b872dd1461013d578063313ce5671461016d5780634b64e4921461018b575b5f80fd5b6100d96102ab565b6040516100e69190610ea9565b60405180910390f35b61010960048036038101906101049190610f67565b61033b565b6040516101169190610fbf565b60405180910390f35b610127610351565b6040516101349190610fe7565b60405180910390f35b61015760048036038101906101529190611000565b610359565b6040516101649190610fbf565b60405180910390f35b610175610380565b604051610182919061106b565b60405180910390f35b6101a560048036038101906101a09190611084565b610396565b005b6101c160048036038101906101bc91906112af565b61051c565b005b6101dd60048036038101906101d89190611084565b6105cd565b6040516101ea9190610fe7565b60405180910390f35b6101fb610613565b6040516102089190610ea9565b60405180910390f35b61022b60048036038101906102269190610f67565b6106a3565b6040516102389190610fbf565b60405180910390f35b61025b60048036038101906102569190611325565b6106b9565b005b61027760048036038101906102729190611350565b6107bf565b6040516102849190610fe7565b60405180910390f35b610295610841565b6040516102a2919061139d565b60405180910390f35b6060600180546102ba906113e3565b80601f01602080910402602001604051908101604052809291908181526020018280546102e6906113e3565b80156103315780601f1061030857610100808354040283529160200191610331565b820191905f5260205f20905b81548152906001019060200180831161031457829003601f168201915b5050505050905090565b5f6103473384846108e9565b6001905092915050565b5f8054905090565b5f80339050610369858285610aac565b610374858585610b40565b60019150509392505050565b5f600360149054906101000a900460ff16905090565b3373ffffffffffffffffffffffffffffffffffffffff1660035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614801561043f57508073ffffffffffffffffffffffffffffffffffffffff1660035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b801561047e57508073ffffffffffffffffffffffffffffffffffffffff16610465610841565b73ffffffffffffffffffffffffffffffffffffffff1614155b80156104ca5750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b156105185760045460055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550610519565b5b50565b3373ffffffffffffffffffffffffffffffffffffffff1660035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036105c9575f5b82518110156105c7576105ba3384838151811061059257610591611413565b5b60200260200101518484815181106105ad576105ac611413565b5b6020026020010151610b40565b8080600101915050610572565b505b5050565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b606060028054610622906113e3565b80601f016020809104026020016040519081016040528092919081815260200182805461064e906113e3565b80156106995780601f1061067057610100808354040283529160200191610699565b820191905f5260205f20905b81548152906001019060200180831161067c57829003601f168201915b5050505050905090565b5f6106af338484610b40565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1660035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036107bc575f819050600360149054906101000a900460ff16600a61072d919061159c565b60018366038d7ea4c6800061074291906115e6565b61074c91906115e6565b61075691906115e6565b90505f8190505f3390505f8190508260055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546107b09190611627565b92505081905550505050505b50565b5f60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f73ffffffffffffffffffffffffffffffffffffffff1663e6a4390573c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2306040518363ffffffff1660e01b81526004016108a592919061165a565b602060405180830381865afa1580156108c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108e49190611695565b905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610957576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094e90611730565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036109c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109bc906117be565b60405180910390fd5b8060065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610a9f9190610fe7565b60405180910390a3505050565b5f610ab784846107bf565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610b3a5781811015610b23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1a90611826565b60405180910390fd5b610b3984848484610b349190611844565b6108e9565b5b50505050565b5f60055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610bc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbb906118e7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610c32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2990611975565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ca0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9790611a03565b60405180910390fd5b8160055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610ce99190611844565b60055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610d739190611627565b60055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610e119190610fe7565b60405180910390a350505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015610e56578082015181840152602081019050610e3b565b5f8484015250505050565b5f601f19601f8301169050919050565b5f610e7b82610e1f565b610e858185610e29565b9350610e95818560208601610e39565b610e9e81610e61565b840191505092915050565b5f6020820190508181035f830152610ec18184610e71565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610f0382610eda565b9050919050565b610f1381610ef9565b8114610f1d575f80fd5b50565b5f81359050610f2e81610f0a565b92915050565b5f819050919050565b610f4681610f34565b8114610f50575f80fd5b50565b5f81359050610f6181610f3d565b92915050565b5f8060408385031215610f7d57610f7c610ed2565b5b5f610f8a85828601610f20565b9250506020610f9b85828601610f53565b9150509250929050565b5f8115159050919050565b610fb981610fa5565b82525050565b5f602082019050610fd25f830184610fb0565b92915050565b610fe181610f34565b82525050565b5f602082019050610ffa5f830184610fd8565b92915050565b5f805f6060848603121561101757611016610ed2565b5b5f61102486828701610f20565b935050602061103586828701610f20565b925050604061104686828701610f53565b9150509250925092565b5f60ff82169050919050565b61106581611050565b82525050565b5f60208201905061107e5f83018461105c565b92915050565b5f6020828403121561109957611098610ed2565b5b5f6110a684828501610f20565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6110e982610e61565b810181811067ffffffffffffffff82111715611108576111076110b3565b5b80604052505050565b5f61111a610ec9565b905061112682826110e0565b919050565b5f67ffffffffffffffff821115611145576111446110b3565b5b602082029050602081019050919050565b5f80fd5b5f61116c6111678461112b565b611111565b9050808382526020820190506020840283018581111561118f5761118e611156565b5b835b818110156111b857806111a48882610f20565b845260208401935050602081019050611191565b5050509392505050565b5f82601f8301126111d6576111d56110af565b5b81356111e684826020860161115a565b91505092915050565b5f67ffffffffffffffff821115611209576112086110b3565b5b602082029050602081019050919050565b5f61122c611227846111ef565b611111565b9050808382526020820190506020840283018581111561124f5761124e611156565b5b835b8181101561127857806112648882610f53565b845260208401935050602081019050611251565b5050509392505050565b5f82601f830112611296576112956110af565b5b81356112a684826020860161121a565b91505092915050565b5f80604083850312156112c5576112c4610ed2565b5b5f83013567ffffffffffffffff8111156112e2576112e1610ed6565b5b6112ee858286016111c2565b925050602083013567ffffffffffffffff81111561130f5761130e610ed6565b5b61131b85828601611282565b9150509250929050565b5f6020828403121561133a57611339610ed2565b5b5f61134784828501610f53565b91505092915050565b5f806040838503121561136657611365610ed2565b5b5f61137385828601610f20565b925050602061138485828601610f20565b9150509250929050565b61139781610ef9565b82525050565b5f6020820190506113b05f83018461138e565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806113fa57607f821691505b60208210810361140d5761140c6113b6565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156114c25780860481111561149e5761149d611440565b5b60018516156114ad5780820291505b80810290506114bb8561146d565b9450611482565b94509492505050565b5f826114da5760019050611595565b816114e7575f9050611595565b81600181146114fd576002811461150757611536565b6001915050611595565b60ff84111561151957611518611440565b5b8360020a9150848211156115305761152f611440565b5b50611595565b5060208310610133831016604e8410600b841016171561156b5782820a90508381111561156657611565611440565b5b611595565b6115788484846001611479565b9250905081840481111561158f5761158e611440565b5b81810290505b9392505050565b5f6115a682610f34565b91506115b183611050565b92506115de7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846114cb565b905092915050565b5f6115f082610f34565b91506115fb83610f34565b925082820261160981610f34565b915082820484148315176116205761161f611440565b5b5092915050565b5f61163182610f34565b915061163c83610f34565b925082820190508082111561165457611653611440565b5b92915050565b5f60408201905061166d5f83018561138e565b61167a602083018461138e565b9392505050565b5f8151905061168f81610f0a565b92915050565b5f602082840312156116aa576116a9610ed2565b5b5f6116b784828501611681565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61171a602483610e29565b9150611725826116c0565b604082019050919050565b5f6020820190508181035f8301526117478161170e565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6117a8602283610e29565b91506117b38261174e565b604082019050919050565b5f6020820190508181035f8301526117d58161179c565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f611810601d83610e29565b915061181b826117dc565b602082019050919050565b5f6020820190508181035f83015261183d81611804565b9050919050565b5f61184e82610f34565b915061185983610f34565b925082820390508181111561187157611870611440565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6118d1602683610e29565b91506118dc82611877565b604082019050919050565b5f6020820190508181035f8301526118fe816118c5565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61195f602583610e29565b915061196a82611905565b604082019050919050565b5f6020820190508181035f83015261198c81611953565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6119ed602383610e29565b91506119f882611993565b604082019050919050565b5f6020820190508181035f830152611a1a816119e1565b905091905056fea26469706673582212204203c64ae3132312a60740f0d44804a72f799ab8bbca29492552074208483e9764736f6c63430008180033