60806040526b033b2e3c9fd0803ce8000000600a556064600a546004620000279190620007a6565b62000033919062000820565b600b556064600a546004620000499190620007a6565b62000055919062000820565b600c55612710600a5460056200006c9190620007a6565b62000078919062000820565b600d556000600e60006101000a81548160ff0219169083151502179055506000600e60016101000a81548160ff0219169083151502179055506001600f556001601055600060115560016012556064601355348015620000d757600080fd5b506040518060400160405280600c81526020017f5361746f73686920436f696e00000000000000000000000000000000000000008152506040518060400160405280600781526020017f5341544f53484900000000000000000000000000000000000000000000000000815250816003908162000155919062000ac8565b50806004908162000167919062000ac8565b5050506200018a6200017e6200034760201b60201c565b6200034f60201b60201c565b6200019a6200034760201b60201c565b600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073cbffe58a2942f7447a2dc081926b5a5d4376218b600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620002423060016200041560201b60201c565b6200026462000256620004d060201b60201c565b60016200041560201b60201c565b62000299600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200041560201b60201c565b620002ae61dead60016200041560201b60201c565b620002c1306001620004fa60201b60201c565b620002e3620002d5620004d060201b60201c565b6001620004fa60201b60201c565b62000318600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620004fa60201b60201c565b6200032d61dead6001620004fa60201b60201c565b6200034133600a546200056560201b60201c565b62000d47565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b62000425620006d260201b60201c565b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fd5144d2a6c8ff9b87b7a40852df5102cab2ce561c06b56cc6fe7ccf1fa7f8c2d82604051620004c4919062000bcc565b60405180910390a25050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200050a620006d260201b60201c565b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620005d7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005ce9062000c4a565b60405180910390fd5b620005eb600083836200076360201b60201c565b8060026000828254620005ff919062000c6c565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620006b2919062000cb8565b60405180910390a3620006ce600083836200076860201b60201c565b5050565b620006e26200034760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000708620004d060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000761576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007589062000d25565b60405180910390fd5b565b505050565b505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620007b3826200076d565b9150620007c0836200076d565b9250828202620007d0816200076d565b91508282048414831517620007ea57620007e962000777565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200082d826200076d565b91506200083a836200076d565b9250826200084d576200084c620007f1565b5b828204905092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620008da57607f821691505b602082108103620008f057620008ef62000892565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200095a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200091b565b6200096686836200091b565b95508019841693508086168417925050509392505050565b6000819050919050565b6000620009a9620009a36200099d846200076d565b6200097e565b6200076d565b9050919050565b6000819050919050565b620009c58362000988565b620009dd620009d482620009b0565b84845462000928565b825550505050565b600090565b620009f4620009e5565b62000a01818484620009ba565b505050565b5b8181101562000a295762000a1d600082620009ea565b60018101905062000a07565b5050565b601f82111562000a785762000a4281620008f6565b62000a4d846200090b565b8101602085101562000a5d578190505b62000a7562000a6c856200090b565b83018262000a06565b50505b505050565b600082821c905092915050565b600062000a9d6000198460080262000a7d565b1980831691505092915050565b600062000ab8838362000a8a565b9150826002028217905092915050565b62000ad38262000858565b67ffffffffffffffff81111562000aef5762000aee62000863565b5b62000afb8254620008c1565b62000b0882828562000a2d565b600060209050601f83116001811462000b40576000841562000b2b578287015190505b62000b37858262000aaa565b86555062000ba7565b601f19841662000b5086620008f6565b60005b8281101562000b7a5784890151825560018201915060208501945060208101905062000b53565b8683101562000b9a578489015162000b96601f89168262000a8a565b8355505b6001600288020188555050505b505050505050565b60008115159050919050565b62000bc68162000baf565b82525050565b600060208201905062000be3600083018462000bbb565b92915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000c32601f8362000be9565b915062000c3f8262000bfa565b602082019050919050565b6000602082019050818103600083015262000c658162000c23565b9050919050565b600062000c79826200076d565b915062000c86836200076d565b925082820190508082111562000ca15762000ca062000777565b5b92915050565b62000cb2816200076d565b82525050565b600060208201905062000ccf600083018462000ca7565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000d0d60208362000be9565b915062000d1a8262000cd5565b602082019050919050565b6000602082019050818103600083015262000d408162000cfe565b9050919050565b613e0b8062000d576000396000f3fe60806040526004361061021e5760003560e01c80637963e1d211610123578063cf9522fd116100ab578063e2f456051161006f578063e2f45605146107be578063ed995307146107e9578063f2fde38b146107f3578063f8b45b051461081c578063ffb54a991461084757610225565b8063cf9522fd146106eb578063dbb859c814610716578063dd62ed3e1461072d578063dd8546521461076a578063df8408fe1461079557610225565b80639a7a23d6116100f25780639a7a23d6146105f4578063a457c2d71461061d578063a9059cbb1461065a578063afa4f3b214610697578063c8c8ebe4146106c057610225565b80637963e1d21461055e5780638a8c523c146105875780638da5cb5b1461059e57806395d89b41146105c957610225565b80633ff52513116101a6578063583e056811610175578063583e05681461048b5780636ddd1713146104b657806370a08231146104e1578063715018a61461051e5780637571336a1461053557610225565b80633ff52513146103cd578063414a8786146103f857806349bd5a5e146104235780634fbee1931461044e57610225565b806323b872dd116101ed57806323b872dd146102e6578063311028af14610323578063313ce5671461034e57806339509351146103795780633efb4783146103b657610225565b806306fdde031461022a578063095ea7b3146102555780630d1118ce1461029257806318160ddd146102bb57610225565b3661022557005b600080fd5b34801561023657600080fd5b5061023f610872565b60405161024c9190612b7e565b60405180910390f35b34801561026157600080fd5b5061027c60048036038101906102779190612c39565b610904565b6040516102899190612c94565b60405180910390f35b34801561029e57600080fd5b506102b960048036038101906102b49190612ced565b610927565b005b3480156102c757600080fd5b506102d0610949565b6040516102dd9190612d3c565b60405180910390f35b3480156102f257600080fd5b5061030d60048036038101906103089190612d57565b610953565b60405161031a9190612c94565b60405180910390f35b34801561032f57600080fd5b50610338610982565b6040516103459190612d3c565b60405180910390f35b34801561035a57600080fd5b50610363610988565b6040516103709190612dc6565b60405180910390f35b34801561038557600080fd5b506103a0600480360381019061039b9190612c39565b610991565b6040516103ad9190612c94565b60405180910390f35b3480156103c257600080fd5b506103cb6109c8565b005b3480156103d957600080fd5b506103e26109ed565b6040516103ef9190612d3c565b60405180910390f35b34801561040457600080fd5b5061040d6109f3565b60405161041a9190612d3c565b60405180910390f35b34801561042f57600080fd5b506104386109f9565b6040516104459190612df0565b60405180910390f35b34801561045a57600080fd5b5061047560048036038101906104709190612e0b565b610a1f565b6040516104829190612c94565b60405180910390f35b34801561049757600080fd5b506104a0610a75565b6040516104ad9190612e97565b60405180910390f35b3480156104c257600080fd5b506104cb610a9b565b6040516104d89190612c94565b60405180910390f35b3480156104ed57600080fd5b5061050860048036038101906105039190612e0b565b610aae565b6040516105159190612d3c565b60405180910390f35b34801561052a57600080fd5b50610533610af6565b005b34801561054157600080fd5b5061055c60048036038101906105579190612ede565b610b0a565b005b34801561056a57600080fd5b5061058560048036038101906105809190612f1e565b610b6d565b005b34801561059357600080fd5b5061059c610c55565b005b3480156105aa57600080fd5b506105b3610ce5565b6040516105c09190612df0565b60405180910390f35b3480156105d557600080fd5b506105de610d0f565b6040516105eb9190612b7e565b60405180910390f35b34801561060057600080fd5b5061061b60048036038101906106169190612ede565b610da1565b005b34801561062957600080fd5b50610644600480360381019061063f9190612c39565b610e47565b6040516106519190612c94565b60405180910390f35b34801561066657600080fd5b50610681600480360381019061067c9190612c39565b610ebe565b60405161068e9190612c94565b60405180910390f35b3480156106a357600080fd5b506106be60048036038101906106b99190612f1e565b610ee1565b005b3480156106cc57600080fd5b506106d5610f06565b6040516106e29190612d3c565b60405180910390f35b3480156106f757600080fd5b50610700610f0c565b60405161070d9190612d3c565b60405180910390f35b34801561072257600080fd5b5061072b610f12565b005b34801561073957600080fd5b50610754600480360381019061074f9190612f4b565b610fff565b6040516107619190612d3c565b60405180910390f35b34801561077657600080fd5b5061077f611086565b60405161078c9190612d3c565b60405180910390f35b3480156107a157600080fd5b506107bc60048036038101906107b79190612ede565b61108c565b005b3480156107ca57600080fd5b506107d361113d565b6040516107e09190612d3c565b60405180910390f35b6107f1611143565b005b3480156107ff57600080fd5b5061081a60048036038101906108159190612e0b565b611509565b005b34801561082857600080fd5b5061083161158c565b60405161083e9190612d3c565b60405180910390f35b34801561085357600080fd5b5061085c611592565b6040516108699190612c94565b60405180910390f35b60606003805461088190612fba565b80601f01602080910402602001604051908101604052809291908181526020018280546108ad90612fba565b80156108fa5780601f106108cf576101008083540402835291602001916108fa565b820191906000526020600020905b8154815290600101906020018083116108dd57829003601f168201915b5050505050905090565b60008061090f6115a5565b905061091c8185856115ad565b600191505092915050565b3361093181610a1f565b61093a57600080fd5b6109448383611776565b505050565b6000600254905090565b60008061095e6115a5565b905061096b858285611943565b6109768585856119cf565b60019150509392505050565b600a5481565b60006012905090565b60008061099c6115a5565b90506109bd8185856109ae8589610fff565b6109b8919061301a565b6115ad565b600191505092915050565b6109d0612311565b60006109da610949565b905080600b8190555080600c8190555050565b60125481565b60115481565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e60019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610afe612311565b610b08600061238f565b565b610b12612311565b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bae6115a5565b73ffffffffffffffffffffffffffffffffffffffff1614610bce57600080fd5b6000610bd8610949565b90506000610be530610aae565b9050600060648484610bf7919061304e565b610c0191906130bf565b905080821015610c46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3d9061313c565b60405180910390fd5b610c4f81612455565b50505050565b610c5d612311565b600e60009054906101000a900460ff1615610cad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca4906131a8565b60405180910390fd5b6001600e60016101000a81548160ff0219169083151502179055506001600e60006101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610d1e90612fba565b80601f0160208091040260200160405190810160405280929190818152602001828054610d4a90612fba565b8015610d975780601f10610d6c57610100808354040283529160200191610d97565b820191906000526020600020905b815481529060010190602001808311610d7a57829003601f168201915b5050505050905090565b610da9612311565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e309061323a565b60405180910390fd5b610e4382826126ba565b5050565b600080610e526115a5565b90506000610e608286610fff565b905083811015610ea5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9c906132cc565b60405180910390fd5b610eb282868684036115ad565b60019250505092915050565b600080610ec96115a5565b9050610ed68185856119cf565b600191505092915050565b610ee9612311565b670de0b6b3a764000081610efd919061304e565b600d8190555050565b600b5481565b60105481565b60004711610f55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4c90613338565b60405180910390fd5b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f966115a5565b73ffffffffffffffffffffffffffffffffffffffff1614610fb657600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610ffc573d6000803e3d6000fd5b50565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600f5481565b611094612311565b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167fd5144d2a6c8ff9b87b7a40852df5102cab2ce561c06b56cc6fe7ccf1fa7f8c2d826040516111319190612c94565b60405180910390a25050565b600d5481565b61114b612311565b737a250d5630b4cf539739df2c5dacb4c659f2488d600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506111cd600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001610b0a565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561123a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061125e919061336d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130b919061336d565b6040518363ffffffff1660e01b815260040161132892919061339a565b6020604051808303816000875af1158015611347573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061136b919061336d565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506113d8600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001610b0a565b611405600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016126ba565b61145230600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6115ad565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719343061149b30610aae565b60008033426040518863ffffffff1660e01b81526004016114c1969594939291906133fe565b60606040518083038185885af11580156114df573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906115049190613474565b505050565b611511612311565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611580576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157790613539565b60405180910390fd5b6115898161238f565b50565b600c5481565b600e60009054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361161c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611613906135cb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361168b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116829061365d565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117699190612d3c565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117dc906136ef565b60405180910390fd5b6117f18260008361275b565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611877576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186e90613781565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161192a9190612d3c565b60405180910390a361193e83600084612760565b505050565b600061194f8484610fff565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146119c957818110156119bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b2906137ed565b60405180910390fd5b6119c884848484036115ad565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a359061387f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611aad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa490613911565b60405180910390fd5b60008103611ac657611ac183836000612765565b61230c565b611ace610ce5565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611b3c5750611b0c610ce5565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611b755750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611baf575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611bc85750600960149054906101000a900460ff16155b15611fab57600e60009054906101000a900460ff16611cc257601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611c825750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611cc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb89061397d565b60405180910390fd5b5b601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611d655750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e0c57600b54811115611daf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da690613a0f565b60405180910390fd5b600c54611dbb83610aae565b82611dc6919061301a565b1115611e07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfe90613a7b565b60405180910390fd5b611faa565b601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611eaf5750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611efe57600b54811115611ef9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef090613b0d565b60405180910390fd5b611fa9565b601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611fa857600c54611f5b83610aae565b82611f66919061301a565b1115611fa7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9e90613a7b565b60405180910390fd5b5b5b5b5b6000611fb630610aae565b905060008082119050808015611fd85750600e60019054906101000a900460ff165b8015611ff15750600960149054906101000a900460ff16155b80156120475750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561209d5750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156120f35750601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612138576001600960146101000a81548160ff02191690831515021790555061211c836129db565b6000600960146101000a81548160ff0219169083151502179055505b6000600960149054906101000a900460ff16159050601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806121ee5750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156121f857600090505b600081156122fc57601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561229757612290601354612263601254612a79565b61226d919061304e565b61228260105488612ac290919063ffffffff16565b612ad890919063ffffffff16565b90506122d8565b6122d56013546122a8601154612a79565b6122b2919061304e565b6122c7600f5488612ac290919063ffffffff16565b612ad890919063ffffffff16565b90505b60008111156122ed576122ec873083612765565b5b80856122f99190613b2d565b94505b612307878787612765565b505050505b505050565b6123196115a5565b73ffffffffffffffffffffffffffffffffffffffff16612337610ce5565b73ffffffffffffffffffffffffffffffffffffffff161461238d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238490613bad565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600267ffffffffffffffff81111561247257612471613bcd565b5b6040519080825280602002602001820160405280156124a05781602001602082028036833780820191505090505b50905030816000815181106124b8576124b7613bfc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561255f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612583919061336d565b8160018151811061259757612596613bfc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506125fe30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846115ad565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401612684959493929190613ce9565b600060405180830381600087803b15801561269e57600080fd5b505af11580156126b2573d6000803e3d6000fd5b505050505050565b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b505050565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036127d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127cb9061387f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612843576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283a90613911565b60405180910390fd5b61284e83838361275b565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156128d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128cb90613db5565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516129c29190612d3c565b60405180910390a36129d5848484612760565b50505050565b60006129e630610aae565b905060008082036129f8575050612a76565b600082118015612a095750600d5482105b15612a1657819050612a6a565b6000612a406064612a3260105487612ac290919063ffffffff16565b612ad890919063ffffffff16565b90508084612a4e9190613b2d565b9350600d54841115612a6457600d549150612a68565b8391505b505b612a7381612455565b50505b50565b600080612a8761dead610aae565b118015612a945750600082115b612a9f576001612abb565b60646001601354612ab09190613b2d565b612aba91906130bf565b5b9050919050565b60008183612ad0919061304e565b905092915050565b60008183612ae691906130bf565b905092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b28578082015181840152602081019050612b0d565b60008484015250505050565b6000601f19601f8301169050919050565b6000612b5082612aee565b612b5a8185612af9565b9350612b6a818560208601612b0a565b612b7381612b34565b840191505092915050565b60006020820190508181036000830152612b988184612b45565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612bd082612ba5565b9050919050565b612be081612bc5565b8114612beb57600080fd5b50565b600081359050612bfd81612bd7565b92915050565b6000819050919050565b612c1681612c03565b8114612c2157600080fd5b50565b600081359050612c3381612c0d565b92915050565b60008060408385031215612c5057612c4f612ba0565b5b6000612c5e85828601612bee565b9250506020612c6f85828601612c24565b9150509250929050565b60008115159050919050565b612c8e81612c79565b82525050565b6000602082019050612ca96000830184612c85565b92915050565b6000612cba82612bc5565b9050919050565b612cca81612caf565b8114612cd557600080fd5b50565b600081359050612ce781612cc1565b92915050565b60008060408385031215612d0457612d03612ba0565b5b6000612d1285828601612cd8565b9250506020612d2385828601612c24565b9150509250929050565b612d3681612c03565b82525050565b6000602082019050612d516000830184612d2d565b92915050565b600080600060608486031215612d7057612d6f612ba0565b5b6000612d7e86828701612bee565b9350506020612d8f86828701612bee565b9250506040612da086828701612c24565b9150509250925092565b600060ff82169050919050565b612dc081612daa565b82525050565b6000602082019050612ddb6000830184612db7565b92915050565b612dea81612bc5565b82525050565b6000602082019050612e056000830184612de1565b92915050565b600060208284031215612e2157612e20612ba0565b5b6000612e2f84828501612bee565b91505092915050565b6000819050919050565b6000612e5d612e58612e5384612ba5565b612e38565b612ba5565b9050919050565b6000612e6f82612e42565b9050919050565b6000612e8182612e64565b9050919050565b612e9181612e76565b82525050565b6000602082019050612eac6000830184612e88565b92915050565b612ebb81612c79565b8114612ec657600080fd5b50565b600081359050612ed881612eb2565b92915050565b60008060408385031215612ef557612ef4612ba0565b5b6000612f0385828601612bee565b9250506020612f1485828601612ec9565b9150509250929050565b600060208284031215612f3457612f33612ba0565b5b6000612f4284828501612c24565b91505092915050565b60008060408385031215612f6257612f61612ba0565b5b6000612f7085828601612bee565b9250506020612f8185828601612bee565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612fd257607f821691505b602082108103612fe557612fe4612f8b565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061302582612c03565b915061303083612c03565b925082820190508082111561304857613047612feb565b5b92915050565b600061305982612c03565b915061306483612c03565b925082820261307281612c03565b9150828204841483151761308957613088612feb565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006130ca82612c03565b91506130d583612c03565b9250826130e5576130e4613090565b5b828204905092915050565b7f4e6f7420656e6f75676820746f6b656e73000000000000000000000000000000600082015250565b6000613126601183612af9565b9150613131826130f0565b602082019050919050565b6000602082019050818103600083015261315581613119565b9050919050565b7f54726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000613192601783612af9565b915061319d8261315c565b602082019050919050565b600060208201905081810360008301526131c181613185565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613224603983612af9565b915061322f826131c8565b604082019050919050565b6000602082019050818103600083015261325381613217565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006132b6602583612af9565b91506132c18261325a565b604082019050919050565b600060208201905081810360008301526132e5816132a9565b9050919050565b7f546f6b656e3a206e6f2045544820746f20636c65617200000000000000000000600082015250565b6000613322601683612af9565b915061332d826132ec565b602082019050919050565b6000602082019050818103600083015261335181613315565b9050919050565b60008151905061336781612bd7565b92915050565b60006020828403121561338357613382612ba0565b5b600061339184828501613358565b91505092915050565b60006040820190506133af6000830185612de1565b6133bc6020830184612de1565b9392505050565b6000819050919050565b60006133e86133e36133de846133c3565b612e38565b612c03565b9050919050565b6133f8816133cd565b82525050565b600060c0820190506134136000830189612de1565b6134206020830188612d2d565b61342d60408301876133ef565b61343a60608301866133ef565b6134476080830185612de1565b61345460a0830184612d2d565b979650505050505050565b60008151905061346e81612c0d565b92915050565b60008060006060848603121561348d5761348c612ba0565b5b600061349b8682870161345f565b93505060206134ac8682870161345f565b92505060406134bd8682870161345f565b9150509250925092565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613523602683612af9565b915061352e826134c7565b604082019050919050565b6000602082019050818103600083015261355281613516565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006135b5602483612af9565b91506135c082613559565b604082019050919050565b600060208201905081810360008301526135e4816135a8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613647602283612af9565b9150613652826135eb565b604082019050919050565b600060208201905081810360008301526136768161363a565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006136d9602183612af9565b91506136e48261367d565b604082019050919050565b60006020820190508181036000830152613708816136cc565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b600061376b602283612af9565b91506137768261370f565b604082019050919050565b6000602082019050818103600083015261379a8161375e565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006137d7601d83612af9565b91506137e2826137a1565b602082019050919050565b60006020820190508181036000830152613806816137ca565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613869602583612af9565b91506138748261380d565b604082019050919050565b600060208201905081810360008301526138988161385c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006138fb602383612af9565b91506139068261389f565b604082019050919050565b6000602082019050818103600083015261392a816138ee565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000613967601683612af9565b915061397282613931565b602082019050919050565b600060208201905081810360008301526139968161395a565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006139f9603583612af9565b9150613a048261399d565b604082019050919050565b60006020820190508181036000830152613a28816139ec565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000613a65601383612af9565b9150613a7082613a2f565b602082019050919050565b60006020820190508181036000830152613a9481613a58565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b6000613af7603683612af9565b9150613b0282613a9b565b604082019050919050565b60006020820190508181036000830152613b2681613aea565b9050919050565b6000613b3882612c03565b9150613b4383612c03565b9250828203905081811115613b5b57613b5a612feb565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613b97602083612af9565b9150613ba282613b61565b602082019050919050565b60006020820190508181036000830152613bc681613b8a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613c6081612bc5565b82525050565b6000613c728383613c57565b60208301905092915050565b6000602082019050919050565b6000613c9682613c2b565b613ca08185613c36565b9350613cab83613c47565b8060005b83811015613cdc578151613cc38882613c66565b9750613cce83613c7e565b925050600181019050613caf565b5085935050505092915050565b600060a082019050613cfe6000830188612d2d565b613d0b60208301876133ef565b8181036040830152613d1d8186613c8b565b9050613d2c6060830185612de1565b613d396080830184612d2d565b9695505050505050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613d9f602683612af9565b9150613daa82613d43565b604082019050919050565b60006020820190508181036000830152613dce81613d92565b905091905056fea264697066735822122085931bab581196056f7ce0ea9dc5969d7078875116a1327047813e9147397add64736f6c63430008130033