//
0x60806040523480156200001157600080fd5b5060405162001cab38038062001cab833981810160405281019062000037919062000287565b816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600560007397c3f47426a1bf6054d7ff78217450d96de2ffa673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016005600073ca61e1c002cd99787d2012d1a5bee511efcfebda73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000736fbcdc1169b5130c59e72e51ed68a84841c98cd173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016004600073a00744882684c3e4747faefd68d283ea44099d0373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505062000321565b600081519050620002818162000307565b92915050565b60008060408385031215620002a157620002a062000302565b5b6000620002b18582860162000270565b9250506020620002c48582860162000270565b9150509250929050565b6000620002db82620002e2565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200031281620002ce565b81146200031e57600080fd5b50565b61197a80620003316000396000f3fe60806040526004361061007b5760003560e01c8063a50ec3261161004e578063a50ec3261461010c578063b83511a114610116578063bedc9da01461013f578063d64c8434146101685761007b565b80630cbc764d146100805780631ad8fa5c146100a9578063552079dc146100d2578063921f37ef146100dc575b600080fd5b34801561008c57600080fd5b506100a760048036038101906100a29190611162565b610191565b005b3480156100b557600080fd5b506100d060048036038101906100cb9190610fd2565b6103d2565b005b6100da6105a1565b005b6100f660048036038101906100f19190611052565b6105a3565b6040516101039190611530565b60405180910390f35b6101146107a8565b005b34801561012257600080fd5b5061013d60048036038101906101389190610f7f565b6107aa565b005b34801561014b57600080fd5b5061016660048036038101906101619190610fd2565b6109bd565b005b34801561017457600080fd5b5061018f600480360381019061018a9190611012565b610b8e565b005b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806102385750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61024157600080fd5b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156102e35750600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b610322576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161031990611430565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff1682604051610348906113b2565b60006040518083038185875af1925050503d8060008114610385576040519150601f19603f3d011682016040523d82523d6000602084013e61038a565b606091505b50509050806103ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c5906114f0565b60405180910390fd5b5050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610460576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045790611490565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806105075750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b610546576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053d90611470565b60405180910390fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b565b6000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610631576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610628906113f0565b60405180910390fd5b6004600085856000818110610649576106486116da565b5b905060200201602081019061065e9190610f52565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166106e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106dc90611510565b60405180910390fd5b8673ffffffffffffffffffffffffffffffffffffffff166305a1450d878787873088306040518863ffffffff1660e01b815260040161072a979695949392919061154b565b600060405180830381600087803b15801561074457600080fd5b505af1158015610758573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061078191906110ec565b600081518110610794576107936116da565b5b602002602001015190509695505050505050565b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806108515750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61085a57600080fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166108e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108dd906114d0565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1663095ea7b385846040518363ffffffff1660e01b81526004016109239291906113c7565b602060405180830381600087803b15801561093d57600080fd5b505af1158015610951573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109759190611135565b9050806109b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ae90611410565b60405180910390fd5b50505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a44906114b0565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480610af45750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b610b33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2a90611470565b60405180910390fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610c355750600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610c3e57600080fd5b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015610ce05750600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b610d1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1690611430565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b8152600401610d5c9291906113c7565b602060405180830381600087803b158015610d7657600080fd5b505af1158015610d8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dae9190611135565b905080610df0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de790611450565b60405180910390fd5b505050565b6000610e08610e03846115da565b6115b5565b90508083825260208201905082856020860282011115610e2b57610e2a611742565b5b60005b85811015610e5b5781610e418882610f3d565b845260208401935060208301925050600181019050610e2e565b5050509392505050565b600081359050610e74816118ff565b92915050565b60008083601f840112610e9057610e8f61173d565b5b8235905067ffffffffffffffff811115610ead57610eac611738565b5b602083019150836020820283011115610ec957610ec8611742565b5b9250929050565b600082601f830112610ee557610ee461173d565b5b8151610ef5848260208601610df5565b91505092915050565b600081359050610f0d81611916565b92915050565b600081519050610f2281611916565b92915050565b600081359050610f378161192d565b92915050565b600081519050610f4c8161192d565b92915050565b600060208284031215610f6857610f6761174c565b5b6000610f7684828501610e65565b91505092915050565b600080600060608486031215610f9857610f9761174c565b5b6000610fa686828701610e65565b9350506020610fb786828701610e65565b9250506040610fc886828701610f28565b9150509250925092565b60008060408385031215610fe957610fe861174c565b5b6000610ff785828601610e65565b925050602061100885828601610efe565b9150509250929050565b600080604083850312156110295761102861174c565b5b600061103785828601610e65565b925050602061104885828601610f28565b9150509250929050565b60008060008060008060a0878903121561106f5761106e61174c565b5b600061107d89828a01610e65565b965050602061108e89828a01610f28565b955050604061109f89828a01610f28565b945050606087013567ffffffffffffffff8111156110c0576110bf611747565b5b6110cc89828a01610e7a565b935093505060806110df89828a01610f28565b9150509295509295509295565b6000602082840312156111025761110161174c565b5b600082015167ffffffffffffffff8111156111205761111f611747565b5b61112c84828501610ed0565b91505092915050565b60006020828403121561114b5761114a61174c565b5b600061115984828501610f13565b91505092915050565b6000602082840312156111785761117761174c565b5b600061118684828501610f28565b91505092915050565b600061119b83836111a7565b60208301905092915050565b6111b081611661565b82525050565b6111bf81611661565b82525050565b60006111d1838561161d565b93506111dc82611606565b8060005b85811015611215576111f2828461164a565b6111fc888261118f565b975061120783611610565b9250506001810190506111e0565b5085925050509392505050565b600061122f601883611639565b915061123a82611762565b602082019050919050565b6000611252601183611639565b915061125d8261178b565b602082019050919050565b6000611275600e83611639565b9150611280826117b4565b602082019050919050565b6000611298601583611639565b91506112a3826117dd565b602082019050919050565b60006112bb600f83611639565b91506112c682611806565b602082019050919050565b60006112de600b83611639565b91506112e98261182f565b602082019050919050565b600061130160008361162e565b915061130c82611858565b600082019050919050565b6000611324600b83611639565b915061132f8261185b565b602082019050919050565b6000611347601783611639565b915061135282611884565b602082019050919050565b600061136a600f83611639565b9150611375826118ad565b602082019050919050565b600061138d601583611639565b9150611398826118d6565b602082019050919050565b6113ac8161169f565b82525050565b60006113bd826112f4565b9150819050919050565b60006040820190506113dc60008301856111b6565b6113e960208301846113a3565b9392505050565b6000602082019050818103600083015261140981611222565b9050919050565b6000602082019050818103600083015261142981611245565b9050919050565b6000602082019050818103600083015261144981611268565b9050919050565b600060208201905081810360008301526114698161128b565b9050919050565b60006020820190508181036000830152611489816112ae565b9050919050565b600060208201905081810360008301526114a9816112d1565b9050919050565b600060208201905081810360008301526114c981611317565b9050919050565b600060208201905081810360008301526114e98161133a565b9050919050565b600060208201905081810360008301526115098161135d565b9050919050565b6000602082019050818103600083015261152981611380565b9050919050565b600060208201905061154560008301846113a3565b92915050565b600060c082019050611560600083018a6113a3565b61156d60208301896113a3565b81810360408301526115808187896111c5565b905061158f60608301866111b6565b61159c60808301856113a3565b6115a960a08301846111b6565b98975050505050505050565b60006115bf6115d0565b90506115cb82826116a9565b919050565b6000604051905090565b600067ffffffffffffffff8211156115f5576115f4611709565b5b602082029050602081019050919050565b6000819050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006116596020840184610e65565b905092915050565b600061166c8261167f565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6116b282611751565b810181811067ffffffffffffffff821117156116d1576116d0611709565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f74686973206163636f756e74206e6f7420616c6c6f7765640000000000000000600082015250565b7f617070726f7665206973206661696c6564000000000000000000000000000000600082015250565b7f6e6f7420616c6c6f77732c67756e000000000000000000000000000000000000600082015250565b7f7769746864726177206572633230206661696c65640000000000000000000000600082015250565b7f77616c6c65742069732077726f6e670000000000000000000000000000000000600082015250565b7f6f6e6c79206f776e4f6e65000000000000000000000000000000000000000000600082015250565b50565b7f6f6e6c79206f776e54776f000000000000000000000000000000000000000000600082015250565b7f74686520636f696e206973206e6f7420616c6c6f776564000000000000000000600082015250565b7f7769746864726177206661696c65640000000000000000000000000000000000600082015250565b7f7468697320636f696e206e6f7420616c6c6f7765640000000000000000000000600082015250565b61190881611661565b811461191357600080fd5b50565b61191f81611673565b811461192a57600080fd5b50565b6119368161169f565b811461194157600080fd5b5056fea2646970667358221220ce2b7afe8da50e23e27cb4b59cb30c3b3149b30f2588572d1e0f7dd04de39a2d64736f6c63430008060033000000000000000000000000ca61e1c002cd99787d2012d1a5bee511efcfebda00000000000000000000000036c0c558b46fdd2d6084265a49e1819a21771fa9