60c06040526000600a60006101000a81548160ff0219169083151502179055506000600a60016101000a81548160ff0219169083151502179055503480156200004757600080fd5b506040518060400160405280601081526020017f4b6579776f72642070726f746f636f6c000000000000000000000000000000008152506040518060400160405280600781526020017f4b4559574f5244000000000000000000000000000000000000000000000000008152508160039081620000c5919062000c94565b508060049081620000d7919062000c94565b505050620000fa620000ee620004db60201b60201c565b620004e360201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905062000126816001620005a960201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001cc919062000de5565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000234573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025a919062000de5565b6040518363ffffffff1660e01b81526004016200027992919062000e28565b6020604051808303816000875af115801562000299573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002bf919062000de5565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200030760a0516001620005a960201b60201c565b6200031c60a05160016200069360201b60201c565b6000601490506000806028905060008069152d02c7e14af6800000905069043c33c193756480000060078190555069043c33c19375648000006009819055506127106005826200036d919062000e84565b62000379919062000f14565b60088190555084600c8190555083600d81905550600d54600c546200039f919062000f4c565b600b8190555082600f8190555081601081905550601054600f54620003c5919062000f4c565b600e81905550600e54601381905550734172f6058b835a6b34d5ed1d6685d204bdeaff65600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200044b6200043d6200073460201b60201c565b60016200075e60201b60201c565b6200045e3060016200075e60201b60201c565b6200047361dead60016200075e60201b60201c565b62000495620004876200073460201b60201c565b6001620005a960201b60201c565b620004a8306001620005a960201b60201c565b620004bd61dead6001620005a960201b60201c565b620004cf33826200089860201b60201c565b505050505050620010e4565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620005b9620004db60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620005df6200073460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000638576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200062f9062000fe8565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200076e620004db60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620007946200073460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620007ed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007e49062000fe8565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516200088c919062001027565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200090a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009019062001094565b60405180910390fd5b6200091e6000838362000a1060201b60201c565b806002600082825462000932919062000f4c565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000989919062000f4c565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620009f09190620010c7565b60405180910390a362000a0c6000838362000a1560201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000a9c57607f821691505b60208210810362000ab25762000ab162000a54565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000b1c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000add565b62000b28868362000add565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000b7562000b6f62000b698462000b40565b62000b4a565b62000b40565b9050919050565b6000819050919050565b62000b918362000b54565b62000ba962000ba08262000b7c565b84845462000aea565b825550505050565b600090565b62000bc062000bb1565b62000bcd81848462000b86565b505050565b5b8181101562000bf55762000be960008262000bb6565b60018101905062000bd3565b5050565b601f82111562000c445762000c0e8162000ab8565b62000c198462000acd565b8101602085101562000c29578190505b62000c4162000c388562000acd565b83018262000bd2565b50505b505050565b600082821c905092915050565b600062000c696000198460080262000c49565b1980831691505092915050565b600062000c84838362000c56565b9150826002028217905092915050565b62000c9f8262000a1a565b67ffffffffffffffff81111562000cbb5762000cba62000a25565b5b62000cc7825462000a83565b62000cd482828562000bf9565b600060209050601f83116001811462000d0c576000841562000cf7578287015190505b62000d03858262000c76565b86555062000d73565b601f19841662000d1c8662000ab8565b60005b8281101562000d465784890151825560018201915060208501945060208101905062000d1f565b8683101562000d66578489015162000d62601f89168262000c56565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000dad8262000d80565b9050919050565b62000dbf8162000da0565b811462000dcb57600080fd5b50565b60008151905062000ddf8162000db4565b92915050565b60006020828403121562000dfe5762000dfd62000d7b565b5b600062000e0e8482850162000dce565b91505092915050565b62000e228162000da0565b82525050565b600060408201905062000e3f600083018562000e17565b62000e4e602083018462000e17565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000e918262000b40565b915062000e9e8362000b40565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000eda5762000ed962000e55565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000f218262000b40565b915062000f2e8362000b40565b92508262000f415762000f4062000ee5565b5b828204905092915050565b600062000f598262000b40565b915062000f668362000b40565b925082820190508082111562000f815762000f8062000e55565b5b92915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000fd060208362000f87565b915062000fdd8262000f98565b602082019050919050565b60006020820190508181036000830152620010038162000fc1565b9050919050565b60008115159050919050565b62001021816200100a565b82525050565b60006020820190506200103e600083018462001016565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006200107c601f8362000f87565b9150620010898262001044565b602082019050919050565b60006020820190508181036000830152620010af816200106d565b9050919050565b620010c18162000b40565b82525050565b6000602082019050620010de6000830184620010b6565b92915050565b60805160a05161481a6200113460003960008181610db901526114a7015260008181610bd801528181612f52015281816130330152818161305a015281816130f6015261311d015261481a6000f3fe6080604052600436106102285760003560e01c80637f2feddc11610123578063bbc0c742116100ab578063d85ba0631161006f578063d85ba0631461083b578063dd62ed3e14610866578063e2f45605146108a3578063f2fde38b146108ce578063f8b45b05146108f75761022f565b8063bbc0c74214610742578063bfd792841461076d578063c0246668146107aa578063c8c8ebe4146107d3578063d257b34f146107fe5761022f565b806396188399116100f2578063961883991461064d5780639a7a23d614610676578063a457c2d71461069f578063a9059cbb146106dc578063b792507e146107195761022f565b80637f2feddc146105a35780638a8c523c146105e05780638da5cb5b146105f757806395d89b41146106225761022f565b806339509351116101b15780636ddd1713116101755780636ddd1713146104d057806370a08231146104fb578063715018a6146105385780637571336a1461054f57806375f0a874146105785761022f565b806339509351146103d757806349bd5a5e146104145780634fbee1931461043f57806366ca9b831461047c5780636a486a8e146104a55761022f565b80631694505e116101f85780631694505e146102ee57806318160ddd1461031957806323b872dd1461034457806327c8f83514610381578063313ce567146103ac5761022f565b8062b8cf2a1461023457806302dbd8f81461025d57806306fdde0314610286578063095ea7b3146102b15761022f565b3661022f57005b600080fd5b34801561024057600080fd5b5061025b60048036038101906102569190613397565b610922565b005b34801561026957600080fd5b50610284600480360381019061027f9190613416565b610a33565b005b34801561029257600080fd5b5061029b610b26565b6040516102a891906134d5565b60405180910390f35b3480156102bd57600080fd5b506102d860048036038101906102d391906134f7565b610bb8565b6040516102e59190613552565b60405180910390f35b3480156102fa57600080fd5b50610303610bd6565b60405161031091906135cc565b60405180910390f35b34801561032557600080fd5b5061032e610bfa565b60405161033b91906135f6565b60405180910390f35b34801561035057600080fd5b5061036b60048036038101906103669190613611565b610c04565b6040516103789190613552565b60405180910390f35b34801561038d57600080fd5b50610396610cfc565b6040516103a39190613673565b60405180910390f35b3480156103b857600080fd5b506103c1610d02565b6040516103ce91906136aa565b60405180910390f35b3480156103e357600080fd5b506103fe60048036038101906103f991906134f7565b610d0b565b60405161040b9190613552565b60405180910390f35b34801561042057600080fd5b50610429610db7565b6040516104369190613673565b60405180910390f35b34801561044b57600080fd5b50610466600480360381019061046191906136c5565b610ddb565b6040516104739190613552565b60405180910390f35b34801561048857600080fd5b506104a3600480360381019061049e9190613416565b610e31565b005b3480156104b157600080fd5b506104ba610f1b565b6040516104c791906135f6565b60405180910390f35b3480156104dc57600080fd5b506104e5610f21565b6040516104f29190613552565b60405180910390f35b34801561050757600080fd5b50610522600480360381019061051d91906136c5565b610f34565b60405161052f91906135f6565b60405180910390f35b34801561054457600080fd5b5061054d610f7c565b005b34801561055b57600080fd5b506105766004803603810190610571919061371e565b611004565b005b34801561058457600080fd5b5061058d6110db565b60405161059a9190613673565b60405180910390f35b3480156105af57600080fd5b506105ca60048036038101906105c591906136c5565b611101565b6040516105d791906135f6565b60405180910390f35b3480156105ec57600080fd5b506105f5611119565b005b34801561060357600080fd5b5061060c6111cd565b6040516106199190613673565b60405180910390f35b34801561062e57600080fd5b506106376111f7565b60405161064491906134d5565b60405180910390f35b34801561065957600080fd5b50610674600480360381019061066f9190613416565b611289565b005b34801561068257600080fd5b5061069d6004803603810190610698919061371e565b611429565b005b3480156106ab57600080fd5b506106c660048036038101906106c191906134f7565b611541565b6040516106d39190613552565b60405180910390f35b3480156106e857600080fd5b5061070360048036038101906106fe91906134f7565b61162c565b6040516107109190613552565b60405180910390f35b34801561072557600080fd5b50610740600480360381019061073b91906136c5565b61164a565b005b34801561074e57600080fd5b50610757611721565b6040516107649190613552565b60405180910390f35b34801561077957600080fd5b50610794600480360381019061078f91906136c5565b611734565b6040516107a19190613552565b60405180910390f35b3480156107b657600080fd5b506107d160048036038101906107cc919061371e565b611754565b005b3480156107df57600080fd5b506107e8611879565b6040516107f591906135f6565b60405180910390f35b34801561080a57600080fd5b506108256004803603810190610820919061375e565b61187f565b6040516108329190613552565b60405180910390f35b34801561084757600080fd5b506108506119d4565b60405161085d91906135f6565b60405180910390f35b34801561087257600080fd5b5061088d6004803603810190610888919061378b565b6119da565b60405161089a91906135f6565b60405180910390f35b3480156108af57600080fd5b506108b8611a61565b6040516108c591906135f6565b60405180910390f35b3480156108da57600080fd5b506108f560048036038101906108f091906136c5565b611a67565b005b34801561090357600080fd5b5061090c611b5e565b60405161091991906135f6565b60405180910390f35b61092a611b64565b73ffffffffffffffffffffffffffffffffffffffff166109486111cd565b73ffffffffffffffffffffffffffffffffffffffff161461099e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099590613817565b60405180910390fd5b60005b8151811015610a2f576001601760008484815181106109c3576109c2613837565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610a2790613895565b9150506109a1565b5050565b610a3b611b64565b73ffffffffffffffffffffffffffffffffffffffff16610a596111cd565b73ffffffffffffffffffffffffffffffffffffffff1614610aaf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa690613817565b60405180910390fd5b81600f8190555080601081905550601054600f54610acd91906138dd565b600e81905550600e546013819055506028600e541115610b22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b199061395d565b60405180910390fd5b5050565b606060038054610b35906139ac565b80601f0160208091040260200160405190810160405280929190818152602001828054610b61906139ac565b8015610bae5780601f10610b8357610100808354040283529160200191610bae565b820191906000526020600020905b815481529060010190602001808311610b9157829003601f168201915b5050505050905090565b6000610bcc610bc5611b64565b8484611b6c565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b6000610c11848484611d35565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c5c611b64565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd390613a4f565b60405180910390fd5b610cf085610ce8611b64565b858403611b6c565b60019150509392505050565b61dead81565b60006012905090565b6000610dad610d18611b64565b848460016000610d26611b64565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610da891906138dd565b611b6c565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610e39611b64565b73ffffffffffffffffffffffffffffffffffffffff16610e576111cd565b73ffffffffffffffffffffffffffffffffffffffff1614610ead576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea490613817565b60405180910390fd5b81600c8190555080600d81905550600d54600c54610ecb91906138dd565b600b819055506014600b541115610f17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0e90613abb565b60405180910390fd5b5050565b600e5481565b600a60019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610f84611b64565b73ffffffffffffffffffffffffffffffffffffffff16610fa26111cd565b73ffffffffffffffffffffffffffffffffffffffff1614610ff8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fef90613817565b60405180910390fd5b6110026000612874565b565b61100c611b64565b73ffffffffffffffffffffffffffffffffffffffff1661102a6111cd565b73ffffffffffffffffffffffffffffffffffffffff1614611080576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107790613817565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60186020528060005260406000206000915090505481565b611121611b64565b73ffffffffffffffffffffffffffffffffffffffff1661113f6111cd565b73ffffffffffffffffffffffffffffffffffffffff1614611195576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118c90613817565b60405180910390fd5b6001600a60006101000a81548160ff0219169083151502179055506001600a60016101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054611206906139ac565b80601f0160208091040260200160405190810160405280929190818152602001828054611232906139ac565b801561127f5780601f106112545761010080835404028352916020019161127f565b820191906000526020600020905b81548152906001019060200180831161126257829003601f168201915b5050505050905090565b611291611b64565b73ffffffffffffffffffffffffffffffffffffffff166112af6111cd565b73ffffffffffffffffffffffffffffffffffffffff1614611305576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fc90613817565b60405180910390fd5b670de0b6b3a76400006103e8600561131b610bfa565b6113259190613adb565b61132f9190613b64565b6113399190613b64565b82101561137b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137290613c07565b60405180910390fd5b670de0b6b3a76400006103e86005611391610bfa565b61139b9190613adb565b6113a59190613b64565b6113af9190613b64565b8110156113f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e890613c99565b60405180910390fd5b670de0b6b3a7640000816114059190613adb565b600981905550670de0b6b3a76400008261141f9190613adb565b6007819055505050565b611431611b64565b73ffffffffffffffffffffffffffffffffffffffff1661144f6111cd565b73ffffffffffffffffffffffffffffffffffffffff16146114a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149c90613817565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611533576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152a90613d2b565b60405180910390fd5b61153d828261293a565b5050565b60008060016000611550611b64565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561160d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160490613dbd565b60405180910390fd5b611621611618611b64565b85858403611b6c565b600191505092915050565b6000611640611639611b64565b8484611d35565b6001905092915050565b611652611b64565b73ffffffffffffffffffffffffffffffffffffffff166116706111cd565b73ffffffffffffffffffffffffffffffffffffffff16146116c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bd90613817565b60405180910390fd5b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600a60009054906101000a900460ff1681565b60176020528060005260406000206000915054906101000a900460ff1681565b61175c611b64565b73ffffffffffffffffffffffffffffffffffffffff1661177a6111cd565b73ffffffffffffffffffffffffffffffffffffffff16146117d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c790613817565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161186d9190613552565b60405180910390a25050565b60075481565b6000611889611b64565b73ffffffffffffffffffffffffffffffffffffffff166118a76111cd565b73ffffffffffffffffffffffffffffffffffffffff16146118fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f490613817565b60405180910390fd5b620186a0600161190b610bfa565b6119159190613adb565b61191f9190613b64565b821015611961576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195890613e4f565b60405180910390fd5b6103e8600561196e610bfa565b6119789190613adb565b6119829190613b64565b8211156119c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119bb90613ee1565b60405180910390fd5b8160088190555060019050919050565b600b5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60085481565b611a6f611b64565b73ffffffffffffffffffffffffffffffffffffffff16611a8d6111cd565b73ffffffffffffffffffffffffffffffffffffffff1614611ae3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ada90613817565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4990613f73565b60405180910390fd5b611b5b81612874565b50565b60095481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611bdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd290614005565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4190614097565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d2891906135f6565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611da4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9b90614129565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0a906141bb565b60405180910390fd5b60008103611e2c57611e27838360006129db565b61286f565b611e346111cd565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611ea25750611e726111cd565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611edb5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611f15575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611f2e5750600560149054906101000a900460ff16155b156123f457600a60009054906101000a900460ff1661202857601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611fe85750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612027576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201e90614227565b60405180910390fd5b5b601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156120cc5750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61210b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210290614293565b60405180910390fd5b601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156121ae5750601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612255576007548111156121f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ef90614325565b60405180910390fd5b60095461220483610f34565b8261220f91906138dd565b1115612250576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224790614391565b60405180910390fd5b6123f3565b601660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156122f85750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561234757600754811115612342576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161233990614423565b60405180910390fd5b6123f2565b601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166123f1576009546123a483610f34565b826123af91906138dd565b11156123f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123e790614391565b60405180910390fd5b5b5b5b5b60006123ff30610f34565b9050600060085482101590508080156124245750600a60019054906101000a900460ff165b801561243d5750600560149054906101000a900460ff16155b80156124935750601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156124e95750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561253f5750601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612583576001600560146101000a81548160ff021916908315150217905550612567612c5a565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806126395750601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561264357600090505b6000811561285657601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156126a657506000600e54115b15612740576126d360646126c5600e5488612e6790919063ffffffff16565b612e7d90919063ffffffff16565b9050600e54601054826126e69190613adb565b6126f09190613b64565b6012600082825461270191906138dd565b92505081905550600e54600f54826127199190613adb565b6127239190613b64565b6011600082825461273491906138dd565b92505081905550612832565b601660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561279b57506000600b54115b15612831576127c860646127ba600b5488612e6790919063ffffffff16565b612e7d90919063ffffffff16565b9050600b54600d54826127db9190613adb565b6127e59190613b64565b601260008282546127f691906138dd565b92505081905550600b54600c548261280e9190613adb565b6128189190613b64565b6011600082825461282991906138dd565b925050819055505b5b6000811115612847576128468730836129db565b5b80856128539190614443565b94505b6128618787876129db565b601354600e81905550505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612a4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4190614129565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612ab9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ab0906141bb565b60405180910390fd5b612ac4838383612e93565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612b4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b41906144e9565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612bdd91906138dd565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612c4191906135f6565b60405180910390a3612c54848484612e98565b50505050565b6000612c6530610f34565b90506000601154601254612c7991906138dd565b9050600080831480612c8b5750600082145b15612c9857505050612e65565b6014600854612ca79190613adb565b831115612cc0576014600854612cbd9190613adb565b92505b600060028360125486612cd39190613adb565b612cdd9190613b64565b612ce79190613b64565b90506000612cfe8286612e9d90919063ffffffff16565b90506000479050612d0e82612eb3565b6000612d238247612e9d90919063ffffffff16565b90506000612d4e87612d4060115485612e6790919063ffffffff16565b612e7d90919063ffffffff16565b905060008183612d5e9190614443565b905060006012819055506000601181905550600086118015612d805750600081115b15612dcd57612d8f86826130f0565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618582601254604051612dc493929190614509565b60405180910390a15b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051612e1390614571565b60006040518083038185875af1925050503d8060008114612e50576040519150601f19603f3d011682016040523d82523d6000602084013e612e55565b606091505b5050809750505050505050505050505b565b60008183612e759190613adb565b905092915050565b60008183612e8b9190613b64565b905092915050565b505050565b505050565b60008183612eab9190614443565b905092915050565b6000600267ffffffffffffffff811115612ed057612ecf6131f6565b5b604051908082528060200260200182016040528015612efe5781602001602082028036833780820191505090505b5090503081600081518110612f1657612f15613837565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fdf919061459b565b81600181518110612ff357612ff2613837565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613058307f000000000000000000000000000000000000000000000000000000000000000084611b6c565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016130ba9594939291906146c1565b600060405180830381600087803b1580156130d457600080fd5b505af11580156130e8573d6000803e3d6000fd5b505050505050565b61311b307f000000000000000000000000000000000000000000000000000000000000000084611b6c565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b81526004016131829695949392919061471b565b60606040518083038185885af11580156131a0573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906131c59190614791565b5050505050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61322e826131e5565b810181811067ffffffffffffffff8211171561324d5761324c6131f6565b5b80604052505050565b60006132606131cc565b905061326c8282613225565b919050565b600067ffffffffffffffff82111561328c5761328b6131f6565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006132cd826132a2565b9050919050565b6132dd816132c2565b81146132e857600080fd5b50565b6000813590506132fa816132d4565b92915050565b600061331361330e84613271565b613256565b905080838252602082019050602084028301858111156133365761333561329d565b5b835b8181101561335f578061334b88826132eb565b845260208401935050602081019050613338565b5050509392505050565b600082601f83011261337e5761337d6131e0565b5b813561338e848260208601613300565b91505092915050565b6000602082840312156133ad576133ac6131d6565b5b600082013567ffffffffffffffff8111156133cb576133ca6131db565b5b6133d784828501613369565b91505092915050565b6000819050919050565b6133f3816133e0565b81146133fe57600080fd5b50565b600081359050613410816133ea565b92915050565b6000806040838503121561342d5761342c6131d6565b5b600061343b85828601613401565b925050602061344c85828601613401565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613490578082015181840152602081019050613475565b60008484015250505050565b60006134a782613456565b6134b18185613461565b93506134c1818560208601613472565b6134ca816131e5565b840191505092915050565b600060208201905081810360008301526134ef818461349c565b905092915050565b6000806040838503121561350e5761350d6131d6565b5b600061351c858286016132eb565b925050602061352d85828601613401565b9150509250929050565b60008115159050919050565b61354c81613537565b82525050565b60006020820190506135676000830184613543565b92915050565b6000819050919050565b600061359261358d613588846132a2565b61356d565b6132a2565b9050919050565b60006135a482613577565b9050919050565b60006135b682613599565b9050919050565b6135c6816135ab565b82525050565b60006020820190506135e160008301846135bd565b92915050565b6135f0816133e0565b82525050565b600060208201905061360b60008301846135e7565b92915050565b60008060006060848603121561362a576136296131d6565b5b6000613638868287016132eb565b9350506020613649868287016132eb565b925050604061365a86828701613401565b9150509250925092565b61366d816132c2565b82525050565b60006020820190506136886000830184613664565b92915050565b600060ff82169050919050565b6136a48161368e565b82525050565b60006020820190506136bf600083018461369b565b92915050565b6000602082840312156136db576136da6131d6565b5b60006136e9848285016132eb565b91505092915050565b6136fb81613537565b811461370657600080fd5b50565b600081359050613718816136f2565b92915050565b60008060408385031215613735576137346131d6565b5b6000613743858286016132eb565b925050602061375485828601613709565b9150509250929050565b600060208284031215613774576137736131d6565b5b600061378284828501613401565b91505092915050565b600080604083850312156137a2576137a16131d6565b5b60006137b0858286016132eb565b92505060206137c1858286016132eb565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613801602083613461565b915061380c826137cb565b602082019050919050565b60006020820190508181036000830152613830816137f4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006138a0826133e0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036138d2576138d1613866565b5b600182019050919050565b60006138e8826133e0565b91506138f3836133e0565b925082820190508082111561390b5761390a613866565b5b92915050565b7f4d757374206b656570206665657320617420343025206f72206c657373000000600082015250565b6000613947601d83613461565b915061395282613911565b602082019050919050565b600060208201905081810360008301526139768161393a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806139c457607f821691505b6020821081036139d7576139d661397d565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613a39602883613461565b9150613a44826139dd565b604082019050919050565b60006020820190508181036000830152613a6881613a2c565b9050919050565b7f4d757374206b656570206665657320617420323025206f72206c657373000000600082015250565b6000613aa5601d83613461565b9150613ab082613a6f565b602082019050919050565b60006020820190508181036000830152613ad481613a98565b9050919050565b6000613ae6826133e0565b9150613af1836133e0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613b2a57613b29613866565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613b6f826133e0565b9150613b7a836133e0565b925082613b8a57613b89613b35565b5b828204905092915050565b7f43616e6e6f7420736574206d617854786e206c6f776572207468616e20302e3560008201527f2500000000000000000000000000000000000000000000000000000000000000602082015250565b6000613bf1602183613461565b9150613bfc82613b95565b604082019050919050565b60006020820190508181036000830152613c2081613be4565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e2060008201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b6000613c83602483613461565b9150613c8e82613c27565b604082019050919050565b60006020820190508181036000830152613cb281613c76565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000613d15603983613461565b9150613d2082613cb9565b604082019050919050565b60006020820190508181036000830152613d4481613d08565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613da7602583613461565b9150613db282613d4b565b604082019050919050565b60006020820190508181036000830152613dd681613d9a565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000613e39603583613461565b9150613e4482613ddd565b604082019050919050565b60006020820190508181036000830152613e6881613e2c565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000613ecb603483613461565b9150613ed682613e6f565b604082019050919050565b60006020820190508181036000830152613efa81613ebe565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613f5d602683613461565b9150613f6882613f01565b604082019050919050565b60006020820190508181036000830152613f8c81613f50565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613fef602483613461565b9150613ffa82613f93565b604082019050919050565b6000602082019050818103600083015261401e81613fe2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614081602283613461565b915061408c82614025565b604082019050919050565b600060208201905081810360008301526140b081614074565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614113602583613461565b915061411e826140b7565b604082019050919050565b6000602082019050818103600083015261414281614106565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006141a5602383613461565b91506141b082614149565b604082019050919050565b600060208201905081810360008301526141d481614198565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614211601683613461565b915061421c826141db565b602082019050919050565b6000602082019050818103600083015261424081614204565b9050919050565b7f596f7572206163636f756e7420697320626c61636b6c69737465642100000000600082015250565b600061427d601c83613461565b915061428882614247565b602082019050919050565b600060208201905081810360008301526142ac81614270565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b600061430f603583613461565b915061431a826142b3565b604082019050919050565b6000602082019050818103600083015261433e81614302565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b600061437b601383613461565b915061438682614345565b602082019050919050565b600060208201905081810360008301526143aa8161436e565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b600061440d603683613461565b9150614418826143b1565b604082019050919050565b6000602082019050818103600083015261443c81614400565b9050919050565b600061444e826133e0565b9150614459836133e0565b925082820390508181111561447157614470613866565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006144d3602683613461565b91506144de82614477565b604082019050919050565b60006020820190508181036000830152614502816144c6565b9050919050565b600060608201905061451e60008301866135e7565b61452b60208301856135e7565b61453860408301846135e7565b949350505050565b600081905092915050565b50565b600061455b600083614540565b91506145668261454b565b600082019050919050565b600061457c8261454e565b9150819050919050565b600081519050614595816132d4565b92915050565b6000602082840312156145b1576145b06131d6565b5b60006145bf84828501614586565b91505092915050565b6000819050919050565b60006145ed6145e86145e3846145c8565b61356d565b6133e0565b9050919050565b6145fd816145d2565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614638816132c2565b82525050565b600061464a838361462f565b60208301905092915050565b6000602082019050919050565b600061466e82614603565b614678818561460e565b93506146838361461f565b8060005b838110156146b457815161469b888261463e565b97506146a683614656565b925050600181019050614687565b5085935050505092915050565b600060a0820190506146d660008301886135e7565b6146e360208301876145f4565b81810360408301526146f58186614663565b90506147046060830185613664565b61471160808301846135e7565b9695505050505050565b600060c0820190506147306000830189613664565b61473d60208301886135e7565b61474a60408301876145f4565b61475760608301866145f4565b6147646080830185613664565b61477160a08301846135e7565b979650505050505050565b60008151905061478b816133ea565b92915050565b6000806000606084860312156147aa576147a96131d6565b5b60006147b88682870161477c565b93505060206147c98682870161477c565b92505060406147da8682870161477c565b915050925092509256fea2646970667358221220b5e3b723045ae495136ac7bd0dfd121398fe13b6bc42d5e3ce40c550c21da9a664736f6c63430008100033