60806040526040518060400160405280600581526020017f7065706a6a000000000000000000000000000000000000000000000000000000815250600690816200004a919062000bd0565b506040518060400160405280600581526020017f5045504a4a0000000000000000000000000000000000000000000000000000008152506007908162000091919062000bd0565b506001600f5f6101000a81548160ff0219169083151502179055505f600f60016101000a81548160ff021916908315150217905550348015620000d2575f80fd5b5060068054620000e290620009d0565b80601f01602080910402602001604051908101604052809291908181526020018280546200011090620009d0565b80156200015f5780601f1062000135576101008083540402835291602001916200015f565b820191905f5260205f20905b8154815290600101906020018083116200014157829003601f168201915b5050505050600780546200017390620009d0565b80601f0160208091040260200160405190810160405280929190818152602001828054620001a190620009d0565b8015620001f05780601f10620001c657610100808354040283529160200191620001f0565b820191905f5260205f20905b815481529060010190602001808311620001d257829003601f168201915b5050505050816003908162000206919062000bd0565b50806004908162000218919062000bd0565b5050505f6200022c620004f760201b60201c565b90508060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505f601690505f80602290505f806c35193a1e7376a35c15b400000090506103e8601482620002f8919062000ce1565b62000304919062000d58565b600c819055506103e86014826200031c919062000ce1565b62000328919062000d58565b600e819055506103e860018262000340919062000ce1565b6200034c919062000d58565b600d81905550846011819055508360128190555060125460115462000372919062000d8f565b601081905550826014819055508160158190555060155460145462000398919062000d8f565b60138190555033600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000400620003f2620004fe60201b60201c565b60016200052660201b60201c565b620004133060016200052660201b60201c565b6200042861dead60016200052660201b60201c565b6200045c600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200052660201b60201c565b6200047e62000470620004fe60201b60201c565b60016200066f60201b60201c565b620004913060016200066f60201b60201c565b620004a661dead60016200066f60201b60201c565b620004da600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200066f60201b60201c565b620004ec30826200076860201b60201c565b505050505062000f86565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b62000536620004f760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620005c7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005be9062000e27565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000663919062000e63565b60405180910390a25050565b6200067f620004f760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000710576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007079062000e27565b60405180910390fd5b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620007d9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007d09062000ecc565b60405180910390fd5b620007ec5f83836200090560201b60201c565b62000803816002546200090a60201b90919060201c565b6002819055506200085a815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546200090a60201b90919060201c565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620008f9919062000efd565b60405180910390a35050565b505050565b5f8082846200091a919062000d8f565b90508381101562000962576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009599062000f66565b60405180910390fd5b8091505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620009e857607f821691505b602082108103620009fe57620009fd620009a3565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000a627fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000a25565b62000a6e868362000a25565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000ab862000ab262000aac8462000a86565b62000a8f565b62000a86565b9050919050565b5f819050919050565b62000ad38362000a98565b62000aeb62000ae28262000abf565b84845462000a31565b825550505050565b5f90565b62000b0162000af3565b62000b0e81848462000ac8565b505050565b5b8181101562000b355762000b295f8262000af7565b60018101905062000b14565b5050565b601f82111562000b845762000b4e8162000a04565b62000b598462000a16565b8101602085101562000b69578190505b62000b8162000b788562000a16565b83018262000b13565b50505b505050565b5f82821c905092915050565b5f62000ba65f198460080262000b89565b1980831691505092915050565b5f62000bc0838362000b95565b9150826002028217905092915050565b62000bdb826200096c565b67ffffffffffffffff81111562000bf75762000bf662000976565b5b62000c038254620009d0565b62000c1082828562000b39565b5f60209050601f83116001811462000c46575f841562000c31578287015190505b62000c3d858262000bb3565b86555062000cac565b601f19841662000c568662000a04565b5f5b8281101562000c7f5784890151825560018201915060208501945060208101905062000c58565b8683101562000c9f578489015162000c9b601f89168262000b95565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f62000ced8262000a86565b915062000cfa8362000a86565b925082820262000d0a8162000a86565b9150828204841483151762000d245762000d2362000cb4565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000d648262000a86565b915062000d718362000a86565b92508262000d845762000d8362000d2b565b5b828204905092915050565b5f62000d9b8262000a86565b915062000da88362000a86565b925082820190508082111562000dc35762000dc262000cb4565b5b92915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f62000e0f60208362000dc9565b915062000e1c8262000dd9565b602082019050919050565b5f6020820190508181035f83015262000e408162000e01565b9050919050565b5f8115159050919050565b62000e5d8162000e47565b82525050565b5f60208201905062000e785f83018462000e52565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000eb4601f8362000dc9565b915062000ec18262000e7e565b602082019050919050565b5f6020820190508181035f83015262000ee58162000ea6565b9050919050565b62000ef78162000a86565b82525050565b5f60208201905062000f125f83018462000eec565b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f62000f4e601b8362000dc9565b915062000f5b8262000f18565b602082019050919050565b5f6020820190508181035f83015262000f7f8162000f40565b9050919050565b6146748062000f945f395ff3fe60806040526004361061025f575f3560e01c806370a0823111610143578063a457c2d7116100b5578063c024666811610079578063c0246668146108c4578063c3f70b52146108ec578063c408c24514610916578063dd62ed3e1461092c578063df6f93be14610968578063f2fde38b1461099257610266565b8063a457c2d7146107bc578063a9059cbb146107f8578063b62496f514610834578063b69ef8a814610870578063be8575041461089a57610266565b80638da5cb5b116101075780638da5cb5b146106d6578063945674fe1461070057806395d89b411461072a5780639a7a23d6146107545780639ee2e9241461077c5780639fccce321461079257610266565b806370a0823114610630578063715018a61461066c578063751039fc146106825780637571336a1461069857806387dd95c0146106c057610266565b806322eb6631116101dc57806348d79155116101a057806348d791551461052457806349bd5a5e1461054e5780634fbee193146105785780635de0f2a0146105b45780635ec065e7146105de5780636c7e15c91461060657610266565b806322eb66311461042e57806323b872dd14610458578063313ce5671461049457806339509351146104be57806346469afb146104fa57610266565b806318160ddd1161022357806318160ddd146103605780631816467f1461038a5780631a8145bb146103b25780631bff7898146103dc5780631d9305bf1461040657610266565b806306fdde031461026a578063095ea7b3146102945780630e947809146102d057806310d5de53146102fa5780631694505e1461033657610266565b3661026657005b5f80fd5b348015610275575f80fd5b5061027e6109ba565b60405161028b9190613606565b60405180910390f35b34801561029f575f80fd5b506102ba60048036038101906102b591906136b7565b610a4a565b6040516102c7919061370f565b60405180910390f35b3480156102db575f80fd5b506102e4610a67565b6040516102f1919061370f565b60405180910390f35b348015610305575f80fd5b50610320600480360381019061031b9190613728565b610a79565b60405161032d919061370f565b60405180910390f35b348015610341575f80fd5b5061034a610a96565b60405161035791906137ae565b60405180910390f35b34801561036b575f80fd5b50610374610abb565b60405161038191906137d6565b60405180910390f35b348015610395575f80fd5b506103b060048036038101906103ab9190613728565b610ac4565b005b3480156103bd575f80fd5b506103c6610c18565b6040516103d391906137d6565b60405180910390f35b3480156103e7575f80fd5b506103f0610c1e565b6040516103fd91906137d6565b60405180910390f35b348015610411575f80fd5b5061042c600480360381019061042791906137ef565b610c24565b005b348015610439575f80fd5b50610442610d08565b60405161044f91906137d6565b60405180910390f35b348015610463575f80fd5b5061047e60048036038101906104799190613853565b610d0e565b60405161048b919061370f565b60405180910390f35b34801561049f575f80fd5b506104a8610de2565b6040516104b591906138be565b60405180910390f35b3480156104c9575f80fd5b506104e460048036038101906104df91906136b7565b610dea565b6040516104f1919061370f565b60405180910390f35b348015610505575f80fd5b5061050e610e98565b60405161051b91906137d6565b60405180910390f35b34801561052f575f80fd5b50610538610e9e565b60405161054591906137d6565b60405180910390f35b348015610559575f80fd5b50610562610ea4565b60405161056f91906138e6565b60405180910390f35b348015610583575f80fd5b5061059e60048036038101906105999190613728565b610ec9565b6040516105ab919061370f565b60405180910390f35b3480156105bf575f80fd5b506105c8610f1b565b6040516105d591906137d6565b60405180910390f35b3480156105e9575f80fd5b5061060460048036038101906105ff9190613929565b610f21565b005b348015610611575f80fd5b5061061a610fd4565b60405161062791906137d6565b60405180910390f35b34801561063b575f80fd5b5061065660048036038101906106519190613728565b610fda565b60405161066391906137d6565b60405180910390f35b348015610677575f80fd5b5061068061101f565b005b34801561068d575f80fd5b50610696611172565b005b3480156106a3575f80fd5b506106be60048036038101906106b99190613954565b611223565b005b3480156106cb575f80fd5b506106d4611311565b005b3480156106e1575f80fd5b506106ea6114ba565b6040516106f791906138e6565b60405180910390f35b34801561070b575f80fd5b506107146114e2565b604051610721919061370f565b60405180910390f35b348015610735575f80fd5b5061073e6114f5565b60405161074b9190613606565b60405180910390f35b34801561075f575f80fd5b5061077a60048036038101906107759190613954565b611585565b005b348015610787575f80fd5b506107906116b8565b005b34801561079d575f80fd5b506107a66117cb565b6040516107b391906137d6565b60405180910390f35b3480156107c7575f80fd5b506107e260048036038101906107dd91906136b7565b6117d1565b6040516107ef919061370f565b60405180910390f35b348015610803575f80fd5b5061081e600480360381019061081991906136b7565b611899565b60405161082b919061370f565b60405180910390f35b34801561083f575f80fd5b5061085a60048036038101906108559190613728565b6118b6565b604051610867919061370f565b60405180910390f35b34801561087b575f80fd5b506108846118d3565b60405161089191906137d6565b60405180910390f35b3480156108a5575f80fd5b506108ae6118d9565b6040516108bb91906137d6565b60405180910390f35b3480156108cf575f80fd5b506108ea60048036038101906108e59190613954565b6118df565b005b3480156108f7575f80fd5b50610900611a1b565b60405161090d91906137d6565b60405180910390f35b348015610921575f80fd5b5061092a611a21565b005b348015610937575f80fd5b50610952600480360381019061094d9190613992565b611e27565b60405161095f91906137d6565b60405180910390f35b348015610973575f80fd5b5061097c611ea9565b60405161098991906137d6565b60405180910390f35b34801561099d575f80fd5b506109b860048036038101906109b39190613728565b611eaf565b005b6060600380546109c9906139fd565b80601f01602080910402602001604051908101604052809291908181526020018280546109f5906139fd565b8015610a405780601f10610a1757610100808354040283529160200191610a40565b820191905f5260205f20905b815481529060010190602001808311610a2357829003601f168201915b5050505050905090565b5f610a5d610a56612003565b848461200a565b6001905092915050565b600f5f9054906101000a900460ff1681565b601a602052805f5260405f205f915054906101000a900460ff1681565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f600254905090565b610acc612003565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5190613a77565b60405180910390fd5b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b60135481565b610c2c612003565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb190613a77565b60405180910390fd5b8360118190555081601281905550601254601154610cd89190613ac2565b6010819055508260148190555080601581905550601554601454610cfc9190613ac2565b60138190555050505050565b60145481565b5f610d1a8484846121cd565b610dd784610d26612003565b610dd2856040518060600160405280602881526020016145f26028913960015f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610d89612003565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612af29092919063ffffffff16565b61200a565b600190509392505050565b5f6012905090565b5f610e8e610df6612003565b84610e898560015f610e06612003565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612b5490919063ffffffff16565b61200a565b6001905092915050565b60105481565b600e5481565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60195f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b600d5481565b610f29612003565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fae90613a77565b60405180910390fd5b80600f60016101000a81548160ff02191690831515021790555050565b60115481565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b611027612003565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ac90613a77565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61117a612003565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611208576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ff90613a77565b60405180910390fd5b5f600f5f6101000a81548160ff021916908315150217905550565b61122b612003565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b090613a77565b60405180910390fd5b80601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b611319612003565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139e90613a77565b60405180910390fd5b5f4790505f81116113ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e490613b65565b60405180910390fd5b5f600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161143390613bb0565b5f6040518083038185875af1925050503d805f811461146d576040519150601f19603f3d011682016040523d82523d5f602084013e611472565b606091505b50509050806114b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ad90613c0e565b60405180910390fd5b5050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600f60019054906101000a900460ff1681565b606060048054611504906139fd565b80601f0160208091040260200160405190810160405280929190818152602001828054611530906139fd565b801561157b5780601f106115525761010080835404028352916020019161157b565b820191905f5260205f20905b81548152906001019060200180831161155e57829003601f168201915b5050505050905090565b61158d612003565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461161b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161290613a77565b60405180910390fd5b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a190613c9c565b60405180910390fd5b6116b48282612bb1565b5050565b6116c0612003565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461174e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174590613a77565b60405180910390fd5b5f61175830610fda565b90505f811161179c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179390613d2a565b60405180910390fd5b6117c830600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836121cd565b50565b60175481565b5f61188f6117dd612003565b8461188a8560405180606001604052806025815260200161461a6025913960015f611806612003565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612af29092919063ffffffff16565b61200a565b6001905092915050565b5f6118ac6118a5612003565b84846121cd565b6001905092915050565b601b602052805f5260405f205f915054906101000a900460ff1681565b600a5481565b60155481565b6118e7612003565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611975576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196c90613a77565b60405180910390fd5b8060195f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611a0f919061370f565b60405180910390a25050565b600c5481565b611a29612003565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ab7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aae90613a77565b60405180910390fd5b5f737a250d5630b4cf539739df2c5dacb4c659f2488d9050611ada816001611223565b8060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b63573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b879190613d5c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bec573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c109190613d5c565b6040518363ffffffff1660e01b8152600401611c2d929190613d87565b6020604051808303815f875af1158015611c49573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c6d9190613d5c565b60095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611cd860095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001611223565b611d0460095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001612bb1565b5f4790505f60646058611d1630610fda565b611d209190613dae565b611d2a9190613e1c565b9050611d583060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168361200a565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198330845f80600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401611dde96959493929190613e85565b60606040518083038185885af1158015611dfa573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611e1f9190613ef8565b505050505050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60125481565b611eb7612003565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3c90613a77565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612078576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206f90613fb8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120dd90614046565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516121c091906137d6565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361223b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612232906140d4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a090614162565b60405180910390fd5b5f81036122c0576122bb83835f612c4f565b612aed565b600f5f9054906101000a900460ff16156126b5576122dc6114ba565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561234a575061231a6114ba565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561238257505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156123bc575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156123d55750600960149054906101000a900460ff16155b156126b457601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156124775750601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561251e57600c548111156124c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b8906141f0565b60405180910390fd5b600e546124cd83610fda565b826124d89190613ac2565b1115612519576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251090614258565b60405180910390fd5b6126b3565b601b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156125bb5750601a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561260a57600c54811115612605576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125fc906142e6565b60405180910390fd5b6126b2565b601a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166126b157600e5461266483610fda565b8261266f9190613ac2565b11156126b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a790614258565b60405180910390fd5b5b5b5b5b5b5f6126bf30610fda565b90505f600d5482101590508080156126e45750600960149054906101000a900460ff16155b80156127375750601b5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561278a575060195f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156127dd575060195f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612820576001600960146101000a81548160ff021916908315150217905550612805612ed8565b5f600960146101000a81548160ff0219169083151502179055505b5f600960149054906101000a900460ff1615905060195f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806128cf575060195f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156128d8575f90505b5f8115612add57601b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561293657505f601354115b156129ce576129636064612955601354886130fe90919063ffffffff16565b61317590919063ffffffff16565b9050601354601554826129769190613dae565b6129809190613e1c565b60165f8282546129909190613ac2565b92505081905550601354601454826129a89190613dae565b6129b29190613e1c565b60175f8282546129c29190613ac2565b92505081905550612aba565b601b5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612a2557505f601054115b15612ab957612a526064612a44601054886130fe90919063ffffffff16565b61317590919063ffffffff16565b905060105460125482612a659190613dae565b612a6f9190613e1c565b60165f828254612a7f9190613ac2565b9250508190555060105460115482612a979190613dae565b612aa19190613e1c565b60175f828254612ab19190613ac2565b925050819055505b5b5f811115612ace57612acd873083612c4f565b5b8085612ada9190614304565b94505b612ae8878787612c4f565b505050505b505050565b5f838311158290612b39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b309190613606565b60405180910390fd5b505f8385612b479190614304565b9050809150509392505050565b5f808284612b629190613ac2565b905083811015612ba7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b9e90614381565b60405180910390fd5b8091505092915050565b80601b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612cbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cb4906140d4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d2290614162565b60405180910390fd5b612d368383836131be565b612d9f816040518060600160405280602681526020016145cc602691395f808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612af29092919063ffffffff16565b5f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612e2e815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612b5490919063ffffffff16565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612ecb91906137d6565b60405180910390a3505050565b5f612ee230610fda565b90505f601754601654612ef59190613ac2565b90505f80831480612f0557505f82145b15612f12575050506130fc565b5f1515600f60019054906101000a900460ff16151503612f59576014600d54612f3b9190613dae565b831115612f54576014600d54612f519190613dae565b92505b612f65565b612f6230610fda565b92505b5f60038360165486612f779190613dae565b612f819190613e1c565b612f8b9190613e1c565b90505f612fa182866131c390919063ffffffff16565b90505f479050612fb08261320c565b5f612fc482476131c390919063ffffffff16565b90505f612fee87612fe0601754856130fe90919063ffffffff16565b61317590919063ffffffff16565b90505f8183612ffd9190614304565b90505f6016819055505f6017819055505f8611801561301b57505f81115b156130685761302a8682613442565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561858260165460405161305f9392919061439f565b60405180910390a15b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516130ad90613bb0565b5f6040518083038185875af1925050503d805f81146130e7576040519150601f19603f3d011682016040523d82523d5f602084013e6130ec565b606091505b5050809750505050505050505050505b565b5f80830361310e575f905061316f565b5f828461311b9190613dae565b905082848261312a9190613e1c565b1461316a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161316190614444565b60405180910390fd5b809150505b92915050565b5f6131b683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061351b565b905092915050565b505050565b5f61320483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612af2565b905092915050565b5f600267ffffffffffffffff81111561322857613227614462565b5b6040519080825280602002602001820160405280156132565781602001602082028036833780820191505090505b50905030815f8151811061326d5761326c61448f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613311573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133359190613d5c565b816001815181106133495761334861448f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506133af3060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461200a565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401613411959493929190614573565b5f604051808303815f87803b158015613428575f80fd5b505af115801561343a573d5f803e3d5ffd5b505050505050565b61346e3060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461200a565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8030426040518863ffffffff1660e01b81526004016134d396959493929190613e85565b60606040518083038185885af11580156134ef573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906135149190613ef8565b5050505050565b5f8083118290613561576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135589190613606565b60405180910390fd5b505f838561356f9190613e1c565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156135b3578082015181840152602081019050613598565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6135d88261357c565b6135e28185613586565b93506135f2818560208601613596565b6135fb816135be565b840191505092915050565b5f6020820190508181035f83015261361e81846135ce565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6136538261362a565b9050919050565b61366381613649565b811461366d575f80fd5b50565b5f8135905061367e8161365a565b92915050565b5f819050919050565b61369681613684565b81146136a0575f80fd5b50565b5f813590506136b18161368d565b92915050565b5f80604083850312156136cd576136cc613626565b5b5f6136da85828601613670565b92505060206136eb858286016136a3565b9150509250929050565b5f8115159050919050565b613709816136f5565b82525050565b5f6020820190506137225f830184613700565b92915050565b5f6020828403121561373d5761373c613626565b5b5f61374a84828501613670565b91505092915050565b5f819050919050565b5f61377661377161376c8461362a565b613753565b61362a565b9050919050565b5f6137878261375c565b9050919050565b5f6137988261377d565b9050919050565b6137a88161378e565b82525050565b5f6020820190506137c15f83018461379f565b92915050565b6137d081613684565b82525050565b5f6020820190506137e95f8301846137c7565b92915050565b5f805f806080858703121561380757613806613626565b5b5f613814878288016136a3565b9450506020613825878288016136a3565b9350506040613836878288016136a3565b9250506060613847878288016136a3565b91505092959194509250565b5f805f6060848603121561386a57613869613626565b5b5f61387786828701613670565b935050602061388886828701613670565b9250506040613899868287016136a3565b9150509250925092565b5f60ff82169050919050565b6138b8816138a3565b82525050565b5f6020820190506138d15f8301846138af565b92915050565b6138e081613649565b82525050565b5f6020820190506138f95f8301846138d7565b92915050565b613908816136f5565b8114613912575f80fd5b50565b5f81359050613923816138ff565b92915050565b5f6020828403121561393e5761393d613626565b5b5f61394b84828501613915565b91505092915050565b5f806040838503121561396a57613969613626565b5b5f61397785828601613670565b925050602061398885828601613915565b9150509250929050565b5f80604083850312156139a8576139a7613626565b5b5f6139b585828601613670565b92505060206139c685828601613670565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680613a1457607f821691505b602082108103613a2757613a266139d0565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613a61602083613586565b9150613a6c82613a2d565b602082019050919050565b5f6020820190508181035f830152613a8e81613a55565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613acc82613684565b9150613ad783613684565b9250828201905080821115613aef57613aee613a95565b5b92915050565b7f4554482062616c616e6365206d7573742062652067726561746572207468616e5f8201527f2030000000000000000000000000000000000000000000000000000000000000602082015250565b5f613b4f602283613586565b9150613b5a82613af5565b604082019050919050565b5f6020820190508181035f830152613b7c81613b43565b9050919050565b5f81905092915050565b50565b5f613b9b5f83613b83565b9150613ba682613b8d565b5f82019050919050565b5f613bba82613b90565b9150819050919050565b7f4661696c656420746f20636c656172204554482062616c616e636500000000005f82015250565b5f613bf8601b83613586565b9150613c0382613bc4565b602082019050919050565b5f6020820190508181035f830152613c2581613bec565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f613c86603983613586565b9150613c9182613c2c565b604082019050919050565b5f6020820190508181035f830152613cb381613c7a565b9050919050565b7f546f6b656e2062616c616e6365206d75737420626520677265617465722074685f8201527f616e203000000000000000000000000000000000000000000000000000000000602082015250565b5f613d14602483613586565b9150613d1f82613cba565b604082019050919050565b5f6020820190508181035f830152613d4181613d08565b9050919050565b5f81519050613d568161365a565b92915050565b5f60208284031215613d7157613d70613626565b5b5f613d7e84828501613d48565b91505092915050565b5f604082019050613d9a5f8301856138d7565b613da760208301846138d7565b9392505050565b5f613db882613684565b9150613dc383613684565b9250828202613dd181613684565b91508282048414831517613de857613de7613a95565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613e2682613684565b9150613e3183613684565b925082613e4157613e40613def565b5b828204905092915050565b5f819050919050565b5f613e6f613e6a613e6584613e4c565b613753565b613684565b9050919050565b613e7f81613e55565b82525050565b5f60c082019050613e985f8301896138d7565b613ea560208301886137c7565b613eb26040830187613e76565b613ebf6060830186613e76565b613ecc60808301856138d7565b613ed960a08301846137c7565b979650505050505050565b5f81519050613ef28161368d565b92915050565b5f805f60608486031215613f0f57613f0e613626565b5b5f613f1c86828701613ee4565b9350506020613f2d86828701613ee4565b9250506040613f3e86828701613ee4565b9150509250925092565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613fa2602483613586565b9150613fad82613f48565b604082019050919050565b5f6020820190508181035f830152613fcf81613f96565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f614030602283613586565b915061403b82613fd6565b604082019050919050565b5f6020820190508181035f83015261405d81614024565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6140be602583613586565b91506140c982614064565b604082019050919050565b5f6020820190508181035f8301526140eb816140b2565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61414c602383613586565b9150614157826140f2565b604082019050919050565b5f6020820190508181035f83015261417981614140565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f6141da603583613586565b91506141e582614180565b604082019050919050565b5f6020820190508181035f830152614207816141ce565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f614242601383613586565b915061424d8261420e565b602082019050919050565b5f6020820190508181035f83015261426f81614236565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f6142d0603683613586565b91506142db82614276565b604082019050919050565b5f6020820190508181035f8301526142fd816142c4565b9050919050565b5f61430e82613684565b915061431983613684565b925082820390508181111561433157614330613a95565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61436b601b83613586565b915061437682614337565b602082019050919050565b5f6020820190508181035f8301526143988161435f565b9050919050565b5f6060820190506143b25f8301866137c7565b6143bf60208301856137c7565b6143cc60408301846137c7565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61442e602183613586565b9150614439826143d4565b604082019050919050565b5f6020820190508181035f83015261445b81614422565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6144ee81613649565b82525050565b5f6144ff83836144e5565b60208301905092915050565b5f602082019050919050565b5f614521826144bc565b61452b81856144c6565b9350614536836144d6565b805f5b8381101561456657815161454d88826144f4565b97506145588361450b565b925050600181019050614539565b5085935050505092915050565b5f60a0820190506145865f8301886137c7565b6145936020830187613e76565b81810360408301526145a58186614517565b90506145b460608301856138d7565b6145c160808301846137c7565b969550505050505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220620f32c3fa8db8a841e4f1bf9852b4ade4c9a420b114841bd6c74087dfd2714e64736f6c63430008150033