0x60806040526040518060400160405280600581526020017f2e6a736f6e000000000000000000000000000000000000000000000000000000815250600c90805190602001906200005192919062000417565b5067015a63bbc199c000600e55611388600f55601460105560036011556000601260006101000a81548160ff0219169083151502179055506000601260016101000a81548160ff0219169083151502179055506001601260026101000a81548160ff02191690831515021790555073d06ece4adf7a795469c9f6f272190262262e1187601260036101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200012157600080fd5b506040516200586a3803806200586a833981810160405281019062000147919062000545565b838381600090805190602001906200016192919062000417565b5080600190805190602001906200017a92919062000417565b5050506200019d62000191620001c960201b60201c565b620001d160201b60201c565b620001ae826200029760201b60201c565b620001bf816200034260201b60201c565b505050506200083a565b600033905090565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620002a7620001c960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620002cd620003ed60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000326576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200031d906200065a565b60405180910390fd5b80600b90805190602001906200033e92919062000417565b5050565b62000352620001c960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1662000378620003ed60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620003d1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003c8906200065a565b60405180910390fd5b80600d9080519060200190620003e992919062000417565b5050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054620004259062000722565b90600052602060002090601f01602090048101928262000449576000855562000495565b82601f106200046457805160ff191683800117855562000495565b8280016001018555821562000495579182015b828111156200049457825182559160200191906001019062000477565b5b509050620004a49190620004a8565b5090565b5b80821115620004c3576000816000905550600101620004a9565b5090565b6000620004de620004d884620006a5565b6200067c565b905082815260208101848484011115620004fd57620004fc620007f1565b5b6200050a848285620006ec565b509392505050565b600082601f8301126200052a5762000529620007ec565b5b81516200053c848260208601620004c7565b91505092915050565b60008060008060808587031215620005625762000561620007fb565b5b600085015167ffffffffffffffff811115620005835762000582620007f6565b5b620005918782880162000512565b945050602085015167ffffffffffffffff811115620005b557620005b4620007f6565b5b620005c38782880162000512565b935050604085015167ffffffffffffffff811115620005e757620005e6620007f6565b5b620005f58782880162000512565b925050606085015167ffffffffffffffff811115620006195762000618620007f6565b5b620006278782880162000512565b91505092959194509250565b600062000642602083620006db565b91506200064f8262000811565b602082019050919050565b60006020820190508181036000830152620006758162000633565b9050919050565b6000620006886200069b565b905062000696828262000758565b919050565b6000604051905090565b600067ffffffffffffffff821115620006c357620006c2620007bd565b5b620006ce8262000800565b9050602081019050919050565b600082825260208201905092915050565b60005b838110156200070c578082015181840152602081019050620006ef565b838111156200071c576000848401525b50505050565b600060028204905060018216806200073b57607f821691505b602082108114156200075257620007516200078e565b5b50919050565b620007638262000800565b810181811067ffffffffffffffff82111715620007855762000784620007bd565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b615020806200084a6000396000f3fe6080604052600436106102675760003560e01c80636c0360eb11610144578063ba4e5c49116100b6578063d5abeb011161007a578063d5abeb0114610947578063da3ef23f14610972578063e985e9c51461099b578063edec5f27146109d8578063f2c4ce1e14610a01578063f2fde38b14610a2a57610267565b8063ba4e5c491461084e578063ba7d2c761461088b578063c6682862146108b6578063c87b56dd146108e1578063d0eb26b01461091e57610267565b806395d89b411161010857806395d89b41146107735780639c70b5121461079e578063a0712d68146107c9578063a22cb465146107e5578063a475b5dd1461080e578063b88d4fde1461082557610267565b80636c0360eb146106a057806370a08231146106cb578063715018a6146107085780637f00c7a61461071f5780638da5cb5b1461074857610267565b80632f745c59116101dd57806344a0d68a116101a157806344a0d68a1461057e5780634f6ccce7146105a757806351830227146105e457806355f804b31461060f5780635c975abb146106385780636352211e1461066357610267565b80632f745c59146104755780633af32abf146104b25780633c952764146104ef57806342842e0e14610518578063438b63001461054157610267565b8063095ea7b31161022f578063095ea7b31461036557806313faede61461038e57806318160ddd146103b957806318cae269146103e4578063239c70ae1461042157806323b872dd1461044c57610267565b806301ffc9a71461026c57806302329a29146102a957806306fdde03146102d2578063081812fc146102fd578063081c8c441461033a575b600080fd5b34801561027857600080fd5b50610293600480360381019061028e91906139c3565b610a53565b6040516102a091906140c4565b60405180910390f35b3480156102b557600080fd5b506102d060048036038101906102cb9190613996565b610acd565b005b3480156102de57600080fd5b506102e7610b66565b6040516102f491906140df565b60405180910390f35b34801561030957600080fd5b50610324600480360381019061031f9190613a66565b610bf8565b604051610331919061403b565b60405180910390f35b34801561034657600080fd5b5061034f610c7d565b60405161035c91906140df565b60405180910390f35b34801561037157600080fd5b5061038c60048036038101906103879190613909565b610d0b565b005b34801561039a57600080fd5b506103a3610e23565b6040516103b09190614421565b60405180910390f35b3480156103c557600080fd5b506103ce610e29565b6040516103db9190614421565b60405180910390f35b3480156103f057600080fd5b5061040b60048036038101906104069190613786565b610e36565b6040516104189190614421565b60405180910390f35b34801561042d57600080fd5b50610436610e4e565b6040516104439190614421565b60405180910390f35b34801561045857600080fd5b50610473600480360381019061046e91906137f3565b610e54565b005b34801561048157600080fd5b5061049c60048036038101906104979190613909565b610eb4565b6040516104a99190614421565b60405180910390f35b3480156104be57600080fd5b506104d960048036038101906104d49190613786565b610f59565b6040516104e691906140c4565b60405180910390f35b3480156104fb57600080fd5b5061051660048036038101906105119190613996565b611008565b005b34801561052457600080fd5b5061053f600480360381019061053a91906137f3565b6110a1565b005b34801561054d57600080fd5b5061056860048036038101906105639190613786565b6110c1565b60405161057591906140a2565b60405180910390f35b34801561058a57600080fd5b506105a560048036038101906105a09190613a66565b61116f565b005b3480156105b357600080fd5b506105ce60048036038101906105c99190613a66565b6111f5565b6040516105db9190614421565b60405180910390f35b3480156105f057600080fd5b506105f9611266565b60405161060691906140c4565b60405180910390f35b34801561061b57600080fd5b5061063660048036038101906106319190613a1d565b611279565b005b34801561064457600080fd5b5061064d61130f565b60405161065a91906140c4565b60405180910390f35b34801561066f57600080fd5b5061068a60048036038101906106859190613a66565b611322565b604051610697919061403b565b60405180910390f35b3480156106ac57600080fd5b506106b56113d4565b6040516106c291906140df565b60405180910390f35b3480156106d757600080fd5b506106f260048036038101906106ed9190613786565b611462565b6040516106ff9190614421565b60405180910390f35b34801561071457600080fd5b5061071d61151a565b005b34801561072b57600080fd5b5061074660048036038101906107419190613a66565b6115a2565b005b34801561075457600080fd5b5061075d611628565b60405161076a919061403b565b60405180910390f35b34801561077f57600080fd5b50610788611652565b60405161079591906140df565b60405180910390f35b3480156107aa57600080fd5b506107b36116e4565b6040516107c091906140c4565b60405180910390f35b6107e360048036038101906107de9190613a66565b6116f7565b005b3480156107f157600080fd5b5061080c600480360381019061080791906138c9565b611af1565b005b34801561081a57600080fd5b50610823611b07565b005b34801561083157600080fd5b5061084c60048036038101906108479190613846565b611ba0565b005b34801561085a57600080fd5b5061087560048036038101906108709190613a66565b611c02565b604051610882919061403b565b60405180910390f35b34801561089757600080fd5b506108a0611c41565b6040516108ad9190614421565b60405180910390f35b3480156108c257600080fd5b506108cb611c47565b6040516108d891906140df565b60405180910390f35b3480156108ed57600080fd5b5061090860048036038101906109039190613a66565b611cd5565b60405161091591906140df565b60405180910390f35b34801561092a57600080fd5b5061094560048036038101906109409190613a66565b611e2e565b005b34801561095357600080fd5b5061095c611eb4565b6040516109699190614421565b60405180910390f35b34801561097e57600080fd5b5061099960048036038101906109949190613a1d565b611eba565b005b3480156109a757600080fd5b506109c260048036038101906109bd91906137b3565b611f50565b6040516109cf91906140c4565b60405180910390f35b3480156109e457600080fd5b506109ff60048036038101906109fa9190613949565b611fe4565b005b348015610a0d57600080fd5b50610a286004803603810190610a239190613a1d565b612084565b005b348015610a3657600080fd5b50610a516004803603810190610a4c9190613786565b61211a565b005b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610ac65750610ac582612212565b5b9050919050565b610ad56122f4565b73ffffffffffffffffffffffffffffffffffffffff16610af3611628565b73ffffffffffffffffffffffffffffffffffffffff1614610b49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4090614301565b60405180910390fd5b80601260006101000a81548160ff02191690831515021790555050565b606060008054610b759061472a565b80601f0160208091040260200160405190810160405280929190818152602001828054610ba19061472a565b8015610bee5780601f10610bc357610100808354040283529160200191610bee565b820191906000526020600020905b815481529060010190602001808311610bd157829003601f168201915b5050505050905090565b6000610c03826122fc565b610c42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c39906142e1565b60405180910390fd5b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600d8054610c8a9061472a565b80601f0160208091040260200160405190810160405280929190818152602001828054610cb69061472a565b8015610d035780601f10610cd857610100808354040283529160200191610d03565b820191906000526020600020905b815481529060010190602001808311610ce657829003601f168201915b505050505081565b6000610d1682611322565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7e90614361565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610da66122f4565b73ffffffffffffffffffffffffffffffffffffffff161480610dd55750610dd481610dcf6122f4565b611f50565b5b610e14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0b90614221565b60405180910390fd5b610e1e8383612368565b505050565b600e5481565b6000600880549050905090565b60146020528060005260406000206000915090505481565b60105481565b610e65610e5f6122f4565b82612421565b610ea4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9b906143a1565b60405180910390fd5b610eaf8383836124ff565b505050565b6000610ebf83611462565b8210610f00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef790614101565b60405180910390fd5b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b600080600090505b601380549050811015610ffd578273ffffffffffffffffffffffffffffffffffffffff1660138281548110610f9957610f986148c3565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610fea576001915050611003565b8080610ff59061478d565b915050610f61565b50600090505b919050565b6110106122f4565b73ffffffffffffffffffffffffffffffffffffffff1661102e611628565b73ffffffffffffffffffffffffffffffffffffffff1614611084576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107b90614301565b60405180910390fd5b80601260026101000a81548160ff02191690831515021790555050565b6110bc83838360405180602001604052806000815250611ba0565b505050565b606060006110ce83611462565b905060008167ffffffffffffffff8111156110ec576110eb6148f2565b5b60405190808252806020026020018201604052801561111a5781602001602082028036833780820191505090505b50905060005b82811015611164576111328582610eb4565b828281518110611145576111446148c3565b5b602002602001018181525050808061115c9061478d565b915050611120565b508092505050919050565b6111776122f4565b73ffffffffffffffffffffffffffffffffffffffff16611195611628565b73ffffffffffffffffffffffffffffffffffffffff16146111eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e290614301565b60405180910390fd5b80600e8190555050565b60006111ff610e29565b8210611240576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611237906143c1565b60405180910390fd5b60088281548110611254576112536148c3565b5b90600052602060002001549050919050565b601260019054906101000a900460ff1681565b6112816122f4565b73ffffffffffffffffffffffffffffffffffffffff1661129f611628565b73ffffffffffffffffffffffffffffffffffffffff16146112f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ec90614301565b60405180910390fd5b80600b908051906020019061130b929190613483565b5050565b601260009054906101000a900460ff1681565b6000806002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156113cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c290614261565b60405180910390fd5b80915050919050565b600b80546113e19061472a565b80601f016020809104026020016040519081016040528092919081815260200182805461140d9061472a565b801561145a5780601f1061142f5761010080835404028352916020019161145a565b820191906000526020600020905b81548152906001019060200180831161143d57829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ca90614241565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6115226122f4565b73ffffffffffffffffffffffffffffffffffffffff16611540611628565b73ffffffffffffffffffffffffffffffffffffffff1614611596576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158d90614301565b60405180910390fd5b6115a06000612766565b565b6115aa6122f4565b73ffffffffffffffffffffffffffffffffffffffff166115c8611628565b73ffffffffffffffffffffffffffffffffffffffff161461161e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161590614301565b60405180910390fd5b8060108190555050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600180546116619061472a565b80601f016020809104026020016040519081016040528092919081815260200182805461168d9061472a565b80156116da5780601f106116af576101008083540402835291602001916116da565b820191906000526020600020905b8154815290600101906020018083116116bd57829003601f168201915b5050505050905090565b601260029054906101000a900460ff1681565b601260009054906101000a900460ff1615611747576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173e90614321565b60405180910390fd5b6000611751610e29565b905060008211611796576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178d90614401565b60405180910390fd5b6010548211156117db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d2906142a1565b60405180910390fd5b600f5482826117ea919061455f565b111561182b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182290614281565b60405180910390fd5b611833611628565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146119b05760011515601260029054906101000a900460ff161515141561195f5761188a33610f59565b6118c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118c0906143e1565b60405180910390fd5b6000601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050601154838261191c919061455f565b111561195d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611954906141a1565b60405180910390fd5b505b81600e5461196d91906145e6565b3410156119af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a690614381565b60405180910390fd5b5b6000600190505b828111611a3b57601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190611a0e9061478d565b9190505550611a28338284611a23919061455f565b61282c565b8080611a339061478d565b9150506119b7565b506000601260039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166064600a34611a8691906145e6565b611a9091906145b5565b604051611a9c90614026565b60006040518083038185875af1925050503d8060008114611ad9576040519150601f19603f3d011682016040523d82523d6000602084013e611ade565b606091505b5050905080611aec57600080fd5b505050565b611b03611afc6122f4565b838361284a565b5050565b611b0f6122f4565b73ffffffffffffffffffffffffffffffffffffffff16611b2d611628565b73ffffffffffffffffffffffffffffffffffffffff1614611b83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7a90614301565b60405180910390fd5b6001601260016101000a81548160ff021916908315150217905550565b611bb1611bab6122f4565b83612421565b611bf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be7906143a1565b60405180910390fd5b611bfc848484846129b7565b50505050565b60138181548110611c1257600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b600c8054611c549061472a565b80601f0160208091040260200160405190810160405280929190818152602001828054611c809061472a565b8015611ccd5780601f10611ca257610100808354040283529160200191611ccd565b820191906000526020600020905b815481529060010190602001808311611cb057829003601f168201915b505050505081565b6060611ce0826122fc565b611d1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1690614341565b60405180910390fd5b60001515601260019054906101000a900460ff1615151415611dcd57600d8054611d489061472a565b80601f0160208091040260200160405190810160405280929190818152602001828054611d749061472a565b8015611dc15780601f10611d9657610100808354040283529160200191611dc1565b820191906000526020600020905b815481529060010190602001808311611da457829003601f168201915b50505050509050611e29565b6000611dd7612a13565b90506000815111611df75760405180602001604052806000815250611e25565b80611e0184612aa5565b600c604051602001611e1593929190613ff5565b6040516020818303038152906040525b9150505b919050565b611e366122f4565b73ffffffffffffffffffffffffffffffffffffffff16611e54611628565b73ffffffffffffffffffffffffffffffffffffffff1614611eaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea190614301565b60405180910390fd5b8060118190555050565b600f5481565b611ec26122f4565b73ffffffffffffffffffffffffffffffffffffffff16611ee0611628565b73ffffffffffffffffffffffffffffffffffffffff1614611f36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2d90614301565b60405180910390fd5b80600c9080519060200190611f4c929190613483565b5050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611fec6122f4565b73ffffffffffffffffffffffffffffffffffffffff1661200a611628565b73ffffffffffffffffffffffffffffffffffffffff1614612060576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205790614301565b60405180910390fd5b6013600061206e9190613509565b81816013919061207f92919061352a565b505050565b61208c6122f4565b73ffffffffffffffffffffffffffffffffffffffff166120aa611628565b73ffffffffffffffffffffffffffffffffffffffff1614612100576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f790614301565b60405180910390fd5b80600d9080519060200190612116929190613483565b5050565b6121226122f4565b73ffffffffffffffffffffffffffffffffffffffff16612140611628565b73ffffffffffffffffffffffffffffffffffffffff1614612196576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218d90614301565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612206576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121fd90614141565b60405180910390fd5b61220f81612766565b50565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806122dd57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806122ed57506122ec82612c06565b5b9050919050565b600033905090565b60008073ffffffffffffffffffffffffffffffffffffffff166002600084815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff166123db83611322565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600061242c826122fc565b61246b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246290614201565b60405180910390fd5b600061247683611322565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806124b857506124b78185611f50565b5b806124f657508373ffffffffffffffffffffffffffffffffffffffff166124de84610bf8565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661251f82611322565b73ffffffffffffffffffffffffffffffffffffffff1614612575576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256c90614161565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156125e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125dc906141c1565b60405180910390fd5b6125f0838383612c70565b6125fb600082612368565b6001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461264b9190614640565b925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546126a2919061455f565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4612761838383612d84565b505050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b612846828260405180602001604052806000815250612d89565b5050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156128b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b0906141e1565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516129aa91906140c4565b60405180910390a3505050565b6129c28484846124ff565b6129ce84848484612de4565b612a0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a0490614121565b60405180910390fd5b50505050565b6060600b8054612a229061472a565b80601f0160208091040260200160405190810160405280929190818152602001828054612a4e9061472a565b8015612a9b5780601f10612a7057610100808354040283529160200191612a9b565b820191906000526020600020905b815481529060010190602001808311612a7e57829003601f168201915b5050505050905090565b60606000821415612aed576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612c01565b600082905060005b60008214612b1f578080612b089061478d565b915050600a82612b1891906145b5565b9150612af5565b60008167ffffffffffffffff811115612b3b57612b3a6148f2565b5b6040519080825280601f01601f191660200182016040528015612b6d5781602001600182028036833780820191505090505b5090505b60008514612bfa57600182612b869190614640565b9150600a85612b9591906147d6565b6030612ba1919061455f565b60f81b818381518110612bb757612bb66148c3565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612bf391906145b5565b9450612b71565b8093505050505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b612c7b838383612f7b565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612cbe57612cb981612f80565b612cfd565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614612cfc57612cfb8382612fc9565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612d4057612d3b81613136565b612d7f565b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614612d7e57612d7d8282613207565b5b5b505050565b505050565b612d938383613286565b612da06000848484612de4565b612ddf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dd690614121565b60405180910390fd5b505050565b6000612e058473ffffffffffffffffffffffffffffffffffffffff16613460565b15612f6e578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612e2e6122f4565b8786866040518563ffffffff1660e01b8152600401612e509493929190614056565b602060405180830381600087803b158015612e6a57600080fd5b505af1925050508015612e9b57506040513d601f19601f82011682018060405250810190612e9891906139f0565b60015b612f1e573d8060008114612ecb576040519150601f19603f3d011682016040523d82523d6000602084013e612ed0565b606091505b50600081511415612f16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f0d90614121565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050612f73565b600190505b949350505050565b505050565b6008805490506009600083815260200190815260200160002081905550600881908060018154018082558091505060019003906000526020600020016000909190919091505550565b60006001612fd684611462565b612fe09190614640565b90506000600760008481526020019081526020016000205490508181146130c5576000600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816007600083815260200190815260200160002081905550505b6007600084815260200190815260200160002060009055600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b6000600160088054905061314a9190614640565b905060006009600084815260200190815260200160002054905060006008838154811061317a576131796148c3565b5b90600052602060002001549050806008838154811061319c5761319b6148c3565b5b9060005260206000200181905550816009600083815260200190815260200160002081905550600960008581526020019081526020016000206000905560088054806131eb576131ea614894565b5b6001900381819060005260206000200160009055905550505050565b600061321283611462565b905081600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806007600084815260200190815260200160002081905550505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156132f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132ed906142c1565b60405180910390fd5b6132ff816122fc565b1561333f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161333690614181565b60405180910390fd5b61334b60008383612c70565b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461339b919061455f565b92505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a461345c60008383612d84565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b82805461348f9061472a565b90600052602060002090601f0160209004810192826134b157600085556134f8565b82601f106134ca57805160ff19168380011785556134f8565b828001600101855582156134f8579182015b828111156134f75782518255916020019190600101906134dc565b5b50905061350591906135ca565b5090565b508054600082559060005260206000209081019061352791906135ca565b50565b8280548282559060005260206000209081019282156135b9579160200282015b828111156135b857823573ffffffffffffffffffffffffffffffffffffffff168260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019061354a565b5b5090506135c691906135ca565b5090565b5b808211156135e35760008160009055506001016135cb565b5090565b60006135fa6135f584614461565b61443c565b90508281526020810184848401111561361657613615614930565b5b6136218482856146e8565b509392505050565b600061363c61363784614492565b61443c565b90508281526020810184848401111561365857613657614930565b5b6136638482856146e8565b509392505050565b60008135905061367a81614f8e565b92915050565b60008083601f84011261369657613695614926565b5b8235905067ffffffffffffffff8111156136b3576136b2614921565b5b6020830191508360208202830111156136cf576136ce61492b565b5b9250929050565b6000813590506136e581614fa5565b92915050565b6000813590506136fa81614fbc565b92915050565b60008151905061370f81614fbc565b92915050565b600082601f83011261372a57613729614926565b5b813561373a8482602086016135e7565b91505092915050565b600082601f83011261375857613757614926565b5b8135613768848260208601613629565b91505092915050565b60008135905061378081614fd3565b92915050565b60006020828403121561379c5761379b61493a565b5b60006137aa8482850161366b565b91505092915050565b600080604083850312156137ca576137c961493a565b5b60006137d88582860161366b565b92505060206137e98582860161366b565b9150509250929050565b60008060006060848603121561380c5761380b61493a565b5b600061381a8682870161366b565b935050602061382b8682870161366b565b925050604061383c86828701613771565b9150509250925092565b600080600080608085870312156138605761385f61493a565b5b600061386e8782880161366b565b945050602061387f8782880161366b565b935050604061389087828801613771565b925050606085013567ffffffffffffffff8111156138b1576138b0614935565b5b6138bd87828801613715565b91505092959194509250565b600080604083850312156138e0576138df61493a565b5b60006138ee8582860161366b565b92505060206138ff858286016136d6565b9150509250929050565b600080604083850312156139205761391f61493a565b5b600061392e8582860161366b565b925050602061393f85828601613771565b9150509250929050565b600080602083850312156139605761395f61493a565b5b600083013567ffffffffffffffff81111561397e5761397d614935565b5b61398a85828601613680565b92509250509250929050565b6000602082840312156139ac576139ab61493a565b5b60006139ba848285016136d6565b91505092915050565b6000602082840312156139d9576139d861493a565b5b60006139e7848285016136eb565b91505092915050565b600060208284031215613a0657613a0561493a565b5b6000613a1484828501613700565b91505092915050565b600060208284031215613a3357613a3261493a565b5b600082013567ffffffffffffffff811115613a5157613a50614935565b5b613a5d84828501613743565b91505092915050565b600060208284031215613a7c57613a7b61493a565b5b6000613a8a84828501613771565b91505092915050565b6000613a9f8383613fd7565b60208301905092915050565b613ab481614674565b82525050565b6000613ac5826144e8565b613acf8185614516565b9350613ada836144c3565b8060005b83811015613b0b578151613af28882613a93565b9750613afd83614509565b925050600181019050613ade565b5085935050505092915050565b613b2181614686565b82525050565b6000613b32826144f3565b613b3c8185614527565b9350613b4c8185602086016146f7565b613b558161493f565b840191505092915050565b6000613b6b826144fe565b613b758185614543565b9350613b858185602086016146f7565b613b8e8161493f565b840191505092915050565b6000613ba4826144fe565b613bae8185614554565b9350613bbe8185602086016146f7565b80840191505092915050565b60008154613bd78161472a565b613be18186614554565b94506001821660008114613bfc5760018114613c0d57613c40565b60ff19831686528186019350613c40565b613c16856144d3565b60005b83811015613c3857815481890152600182019150602081019050613c19565b838801955050505b50505092915050565b6000613c56602b83614543565b9150613c6182614950565b604082019050919050565b6000613c79603283614543565b9150613c848261499f565b604082019050919050565b6000613c9c602683614543565b9150613ca7826149ee565b604082019050919050565b6000613cbf602583614543565b9150613cca82614a3d565b604082019050919050565b6000613ce2601c83614543565b9150613ced82614a8c565b602082019050919050565b6000613d05601c83614543565b9150613d1082614ab5565b602082019050919050565b6000613d28602483614543565b9150613d3382614ade565b604082019050919050565b6000613d4b601983614543565b9150613d5682614b2d565b602082019050919050565b6000613d6e602c83614543565b9150613d7982614b56565b604082019050919050565b6000613d91603883614543565b9150613d9c82614ba5565b604082019050919050565b6000613db4602a83614543565b9150613dbf82614bf4565b604082019050919050565b6000613dd7602983614543565b9150613de282614c43565b604082019050919050565b6000613dfa601683614543565b9150613e0582614c92565b602082019050919050565b6000613e1d602483614543565b9150613e2882614cbb565b604082019050919050565b6000613e40602083614543565b9150613e4b82614d0a565b602082019050919050565b6000613e63602c83614543565b9150613e6e82614d33565b604082019050919050565b6000613e86602083614543565b9150613e9182614d82565b602082019050919050565b6000613ea9601683614543565b9150613eb482614dab565b602082019050919050565b6000613ecc602f83614543565b9150613ed782614dd4565b604082019050919050565b6000613eef602183614543565b9150613efa82614e23565b604082019050919050565b6000613f12600083614538565b9150613f1d82614e72565b600082019050919050565b6000613f35601283614543565b9150613f4082614e75565b602082019050919050565b6000613f58603183614543565b9150613f6382614e9e565b604082019050919050565b6000613f7b602c83614543565b9150613f8682614eed565b604082019050919050565b6000613f9e601783614543565b9150613fa982614f3c565b602082019050919050565b6000613fc1601b83614543565b9150613fcc82614f65565b602082019050919050565b613fe0816146de565b82525050565b613fef816146de565b82525050565b60006140018286613b99565b915061400d8285613b99565b91506140198284613bca565b9150819050949350505050565b600061403182613f05565b9150819050919050565b60006020820190506140506000830184613aab565b92915050565b600060808201905061406b6000830187613aab565b6140786020830186613aab565b6140856040830185613fe6565b81810360608301526140978184613b27565b905095945050505050565b600060208201905081810360008301526140bc8184613aba565b905092915050565b60006020820190506140d96000830184613b18565b92915050565b600060208201905081810360008301526140f98184613b60565b905092915050565b6000602082019050818103600083015261411a81613c49565b9050919050565b6000602082019050818103600083015261413a81613c6c565b9050919050565b6000602082019050818103600083015261415a81613c8f565b9050919050565b6000602082019050818103600083015261417a81613cb2565b9050919050565b6000602082019050818103600083015261419a81613cd5565b9050919050565b600060208201905081810360008301526141ba81613cf8565b9050919050565b600060208201905081810360008301526141da81613d1b565b9050919050565b600060208201905081810360008301526141fa81613d3e565b9050919050565b6000602082019050818103600083015261421a81613d61565b9050919050565b6000602082019050818103600083015261423a81613d84565b9050919050565b6000602082019050818103600083015261425a81613da7565b9050919050565b6000602082019050818103600083015261427a81613dca565b9050919050565b6000602082019050818103600083015261429a81613ded565b9050919050565b600060208201905081810360008301526142ba81613e10565b9050919050565b600060208201905081810360008301526142da81613e33565b9050919050565b600060208201905081810360008301526142fa81613e56565b9050919050565b6000602082019050818103600083015261431a81613e79565b9050919050565b6000602082019050818103600083015261433a81613e9c565b9050919050565b6000602082019050818103600083015261435a81613ebf565b9050919050565b6000602082019050818103600083015261437a81613ee2565b9050919050565b6000602082019050818103600083015261439a81613f28565b9050919050565b600060208201905081810360008301526143ba81613f4b565b9050919050565b600060208201905081810360008301526143da81613f6e565b9050919050565b600060208201905081810360008301526143fa81613f91565b9050919050565b6000602082019050818103600083015261441a81613fb4565b9050919050565b60006020820190506144366000830184613fe6565b92915050565b6000614446614457565b9050614452828261475c565b919050565b6000604051905090565b600067ffffffffffffffff82111561447c5761447b6148f2565b5b6144858261493f565b9050602081019050919050565b600067ffffffffffffffff8211156144ad576144ac6148f2565b5b6144b68261493f565b9050602081019050919050565b6000819050602082019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600061456a826146de565b9150614575836146de565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156145aa576145a9614807565b5b828201905092915050565b60006145c0826146de565b91506145cb836146de565b9250826145db576145da614836565b5b828204905092915050565b60006145f1826146de565b91506145fc836146de565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561463557614634614807565b5b828202905092915050565b600061464b826146de565b9150614656836146de565b92508282101561466957614668614807565b5b828203905092915050565b600061467f826146be565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b838110156147155780820151818401526020810190506146fa565b83811115614724576000848401525b50505050565b6000600282049050600182168061474257607f821691505b6020821081141561475657614755614865565b5b50919050565b6147658261493f565b810181811067ffffffffffffffff82111715614784576147836148f2565b5b80604052505050565b6000614798826146de565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156147cb576147ca614807565b5b600182019050919050565b60006147e1826146de565b91506147ec836146de565b9250826147fc576147fb614836565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b7f6d6178204e465420706572206164647265737320657863656564656400000000600082015250565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b7f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760008201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000602082015250565b7f4552433732313a2062616c616e636520717565727920666f7220746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b7f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460008201527f656e7420746f6b656e0000000000000000000000000000000000000000000000602082015250565b7f6d6178204e4654206c696d697420657863656564656400000000000000000000600082015250565b7f6d6178206d696e7420616d6f756e74207065722073657373696f6e206578636560008201527f6564656400000000000000000000000000000000000000000000000000000000602082015250565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b7f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860008201527f697374656e7420746f6b656e0000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f74686520636f6e74726163742069732070617573656400000000000000000000600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b50565b7f696e73756666696369656e742066756e64730000000000000000000000000000600082015250565b7f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60008201527f776e6572206e6f7220617070726f766564000000000000000000000000000000602082015250565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b7f75736572206973206e6f742077686974656c6973746564000000000000000000600082015250565b7f6e65656420746f206d696e74206174206c656173742031204e46540000000000600082015250565b614f9781614674565b8114614fa257600080fd5b50565b614fae81614686565b8114614fb957600080fd5b50565b614fc581614692565b8114614fd057600080fd5b50565b614fdc816146de565b8114614fe757600080fd5b5056fea264697066735822122056a335eb1c0479a755d4f503ed2732a4fa9b4c0202512a021abcde6c4a0c56ee64736f6c63430008070033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000000c41747245766f6c7574696f6e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000241450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d50637a77535a744d32744338474e6e636f67694a52486f71536a465a41537a7a41434b4b4855654366466b612f000000000000000000000000000000000000000000000000000000000000000000000000000000000000