60806040526040518060400160405280600481526020017f574f4e4b00000000000000000000000000000000000000000000000000000000815250600190816200004a9190620010fd565b506040518060400160405280600481526020017f574f4e4b0000000000000000000000000000000000000000000000000000000081525060029081620000919190620010fd565b506009600360006101000a81548160ff021916908360ff160217905550600360009054906101000a900460ff16600a620000cc919062001374565b64174876e800620000de9190620013c5565b600e556103e8600f55620001156103e862000106600a600e5462000c7a60201b90919060201c565b62000cfd60201b90919060201c565b601055620001466103e862000137600a600e5462000c7a60201b90919060201c565b62000cfd60201b90919060201c565b6011556001601260006101000a81548160ff021916908315150217905550605a6013556001601460016101000a81548160ff0219169083151502179055506001601460026101000a81548160ff021916908315150217905550348015620001ac57600080fd5b50620001cd620001c162000d4f60201b60201c565b62000d5760201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000232573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025891906200147a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002c0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e691906200147a565b6040518363ffffffff1660e01b815260040162000305929190620014bd565b6020604051808303816000875af115801562000325573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034b91906200147a565b601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600019600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555033600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160156000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060646004819055506101f4600581905550600e54600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600e5460405162000c6b9190620014fb565b60405180910390a350620016ca565b600080830362000c8e576000905062000cf7565b6000828462000c9e9190620013c5565b905082848262000caf919062001547565b1462000cf2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ce99062001606565b60405180910390fd5b809150505b92915050565b600062000d4783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000e1b60201b60201c565b905092915050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000808311829062000e65576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000e5c9190620016a6565b60405180910390fd5b506000838562000e76919062001547565b9050809150509392505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000f0557607f821691505b60208210810362000f1b5762000f1a62000ebd565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000f857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000f46565b62000f91868362000f46565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000fde62000fd862000fd28462000fa9565b62000fb3565b62000fa9565b9050919050565b6000819050919050565b62000ffa8362000fbd565b62001012620010098262000fe5565b84845462000f53565b825550505050565b600090565b620010296200101a565b6200103681848462000fef565b505050565b5b818110156200105e57620010526000826200101f565b6001810190506200103c565b5050565b601f821115620010ad57620010778162000f21565b620010828462000f36565b8101602085101562001092578190505b620010aa620010a18562000f36565b8301826200103b565b50505b505050565b600082821c905092915050565b6000620010d260001984600802620010b2565b1980831691505092915050565b6000620010ed8383620010bf565b9150826002028217905092915050565b620011088262000e83565b67ffffffffffffffff81111562001124576200112362000e8e565b5b62001130825462000eec565b6200113d82828562001062565b600060209050601f83116001811462001175576000841562001160578287015190505b6200116c8582620010df565b865550620011dc565b601f198416620011858662000f21565b60005b82811015620011af5784890151825560018201915060208501945060208101905062001188565b86831015620011cf5784890151620011cb601f891682620010bf565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562001272578086048111156200124a5762001249620011e4565b5b60018516156200125a5780820291505b80810290506200126a8562001213565b94506200122a565b94509492505050565b6000826200128d576001905062001360565b816200129d576000905062001360565b8160018114620012b65760028114620012c157620012f7565b600191505062001360565b60ff841115620012d657620012d5620011e4565b5b8360020a915084821115620012f057620012ef620011e4565b5b5062001360565b5060208310610133831016604e8410600b8410161715620013315782820a9050838111156200132b576200132a620011e4565b5b62001360565b62001340848484600162001220565b925090508184048111156200135a5762001359620011e4565b5b81810290505b9392505050565b600060ff82169050919050565b6000620013818262000fa9565b91506200138e8362001367565b9250620013bd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200127b565b905092915050565b6000620013d28262000fa9565b9150620013df8362000fa9565b9250828202620013ef8162000fa9565b91508282048414831517620014095762001408620011e4565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620014428262001415565b9050919050565b620014548162001435565b81146200146057600080fd5b50565b600081519050620014748162001449565b92915050565b60006020828403121562001493576200149262001410565b5b6000620014a38482850162001463565b91505092915050565b620014b78162001435565b82525050565b6000604082019050620014d46000830185620014ac565b620014e36020830184620014ac565b9392505050565b620014f58162000fa9565b82525050565b6000602082019050620015126000830184620014ea565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620015548262000fa9565b9150620015618362000fa9565b92508262001574576200157362001518565b5b828204905092915050565b600082825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000620015ee6021836200157f565b9150620015fb8262001590565b604082019050919050565b600060208201905081810360008301526200162181620015df565b9050919050565b60005b83811015620016485780820151818401526020810190506200162b565b60008484015250505050565b6000601f19601f8301169050919050565b6000620016728262000e83565b6200167e81856200157f565b93506200169081856020860162001628565b6200169b8162001654565b840191505092915050565b60006020820190508181036000830152620016c2818462001665565b905092915050565b613ff080620016da6000396000f3fe6080604052600436106102975760003560e01c80638da5cb5b1161015a578063dd62ed3e116100c1578063ec44acf21161007a578063ec44acf214610a0b578063ee828db314610a36578063f242ab4114610a5f578063f2fde38b14610a8a578063f71b9bbf14610ab3578063f872858a14610adc5761029e565b8063dd62ed3e1461090d578063dd8546521461094a578063df8408fe14610975578063e6b2603b1461099e578063e7d8320e146109b5578063e7f1bfcb146109e05761029e565b8063b161573b11610113578063b161573b146107ed578063c16dd4a41461082a578063c867d60b14610853578063cea9d26f14610890578063cf9522fd146108b9578063d27e0e6a146108e45761029e565b80638da5cb5b146106df5780638f02bb5b1461070a57806395d89b411461073357806395fc8fdf1461075e578063a9059cbb14610787578063ae85ade6146107c45761029e565b80634974d88f116101fe57806370a08231116101b757806370a08231146105cf578063715018a61461060c578063728d41c9146106235780637d1db4a51461064c578063807c2d9c146106775780638b42507f146106a25761029e565b80634974d88f146104c357806352f7c988146104ec5780635342acb4146105155780635c85974f146105525780635e42358c1461057b578063651a8987146105a65761029e565b80631f53ac02116102505780631f53ac02146103a157806323b872dd146103ca578063293230b814610407578063313ce5671461041e5780633bbac579146104495780633ecad271146104865761029e565b8063038d71ee146102a357806306fdde03146102ba5780630758d924146102e5578063095ea7b31461031057806310a60f021461034d57806318160ddd146103765761029e565b3661029e57005b600080fd5b3480156102af57600080fd5b506102b8610b07565b005b3480156102c657600080fd5b506102cf610bb8565b6040516102dc9190613062565b60405180910390f35b3480156102f157600080fd5b506102fa610c4a565b6040516103079190613103565b60405180910390f35b34801561031c57600080fd5b506103376004803603810190610332919061319c565b610c70565b60405161034491906131f7565b60405180910390f35b34801561035957600080fd5b50610374600480360381019061036f91906132a3565b610c8e565b005b34801561038257600080fd5b5061038b610daf565b6040516103989190613312565b60405180910390f35b3480156103ad57600080fd5b506103c860048036038101906103c3919061332d565b610db9565b005b3480156103d657600080fd5b506103f160048036038101906103ec919061335a565b610e79565b6040516103fe91906131f7565b60405180910390f35b34801561041357600080fd5b5061041c610f53565b005b34801561042a57600080fd5b5061043361103c565b60405161044091906133c9565b60405180910390f35b34801561045557600080fd5b50610470600480360381019061046b919061332d565b611053565b60405161047d91906131f7565b60405180910390f35b34801561049257600080fd5b506104ad60048036038101906104a8919061332d565b611073565b6040516104ba91906131f7565b60405180910390f35b3480156104cf57600080fd5b506104ea60048036038101906104e591906133e4565b611093565b005b3480156104f857600080fd5b50610513600480360381019061050e9190613411565b61112c565b005b34801561052157600080fd5b5061053c6004803603810190610537919061332d565b6111ba565b60405161054991906131f7565b60405180910390f35b34801561055e57600080fd5b5061057960048036038101906105749190613451565b6111da565b005b34801561058757600080fd5b50610590611260565b60405161059d91906131f7565b60405180910390f35b3480156105b257600080fd5b506105cd60048036038101906105c8919061347e565b611273565b005b3480156105db57600080fd5b506105f660048036038101906105f1919061332d565b61134a565b6040516106039190613312565b60405180910390f35b34801561061857600080fd5b50610621611393565b005b34801561062f57600080fd5b5061064a60048036038101906106459190613451565b61141b565b005b34801561065857600080fd5b506106616114a1565b60405161066e9190613312565b60405180910390f35b34801561068357600080fd5b5061068c6114a7565b6040516106999190613312565b60405180910390f35b3480156106ae57600080fd5b506106c960048036038101906106c4919061332d565b6114ad565b6040516106d691906131f7565b60405180910390f35b3480156106eb57600080fd5b506106f46114cd565b60405161070191906134cd565b60405180910390f35b34801561071657600080fd5b50610731600480360381019061072c9190613451565b6114f6565b005b34801561073f57600080fd5b5061074861157c565b6040516107559190613062565b60405180910390f35b34801561076a57600080fd5b50610785600480360381019061078091906132a3565b61160e565b005b34801561079357600080fd5b506107ae60048036038101906107a9919061319c565b61172f565b6040516107bb91906131f7565b60405180910390f35b3480156107d057600080fd5b506107eb60048036038101906107e6919061347e565b61174e565b005b3480156107f957600080fd5b50610814600480360381019061080f919061332d565b611825565b60405161082191906131f7565b60405180910390f35b34801561083657600080fd5b50610851600480360381019061084c919061347e565b611845565b005b34801561085f57600080fd5b5061087a6004803603810190610875919061332d565b611973565b60405161088791906131f7565b60405180910390f35b34801561089c57600080fd5b506108b760048036038101906108b29190613526565b611993565b005b3480156108c557600080fd5b506108ce611aa7565b6040516108db9190613312565b60405180910390f35b3480156108f057600080fd5b5061090b600480360381019061090691906133e4565b611aad565b005b34801561091957600080fd5b50610934600480360381019061092f9190613579565b611b46565b6040516109419190613312565b60405180910390f35b34801561095657600080fd5b5061095f611bcd565b60405161096c9190613312565b60405180910390f35b34801561098157600080fd5b5061099c6004803603810190610997919061347e565b611bd3565b005b3480156109aa57600080fd5b506109b3611caa565b005b3480156109c157600080fd5b506109ca611d83565b6040516109d79190613312565b60405180910390f35b3480156109ec57600080fd5b506109f5611d89565b604051610a0291906131f7565b60405180910390f35b348015610a1757600080fd5b50610a20611d9c565b604051610a2d91906131f7565b60405180910390f35b348015610a4257600080fd5b50610a5d6004803603810190610a5891906133e4565b611daf565b005b348015610a6b57600080fd5b50610a74611e48565b604051610a8191906134cd565b60405180910390f35b348015610a9657600080fd5b50610ab16004803603810190610aac919061332d565b611e6e565b005b348015610abf57600080fd5b50610ada6004803603810190610ad5919061332d565b611f65565b005b348015610ae857600080fd5b50610af1612025565b604051610afe91906131f7565b60405180910390f35b610b0f612038565b73ffffffffffffffffffffffffffffffffffffffff16610b2d6114cd565b73ffffffffffffffffffffffffffffffffffffffff1614610b83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7a90613605565b60405180910390fd5b6000600481905550600060058190555060006013819055506000601260006101000a81548160ff021916908315150217905550565b606060018054610bc790613654565b80601f0160208091040260200160405190810160405280929190818152602001828054610bf390613654565b8015610c405780601f10610c1557610100808354040283529160200191610c40565b820191906000526020600020905b815481529060010190602001808311610c2357829003601f168201915b5050505050905090565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610c84610c7d612038565b8484612040565b6001905092915050565b610c96612038565b73ffffffffffffffffffffffffffffffffffffffff16610cb46114cd565b73ffffffffffffffffffffffffffffffffffffffff1614610d0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0190613605565b60405180910390fd5b60005b83839050811015610da95781600d6000868685818110610d3057610d2f613685565b5b9050602002016020810190610d45919061332d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610da1906136e3565b915050610d0d565b50505050565b6000600e54905090565b610dc1612038565b73ffffffffffffffffffffffffffffffffffffffff16610ddf6114cd565b73ffffffffffffffffffffffffffffffffffffffff1614610e35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2c90613605565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000610e86848484612209565b50610f4884610e93612038565b610f4385604051806060016040528060288152602001613f9360289139600860008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ef9612038565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129069092919063ffffffff16565b612040565b600190509392505050565b610f5b612038565b73ffffffffffffffffffffffffffffffffffffffff16610f796114cd565b73ffffffffffffffffffffffffffffffffffffffff1614610fcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc690613605565b60405180910390fd5b601460009054906101000a900460ff161561101f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101690613777565b60405180910390fd5b6001601460006101000a81548160ff021916908315150217905550565b6000600360009054906101000a900460ff16905090565b600d6020528060005260406000206000915054906101000a900460ff1681565b600a6020528060005260406000206000915054906101000a900460ff1681565b61109b612038565b73ffffffffffffffffffffffffffffffffffffffff166110b96114cd565b73ffffffffffffffffffffffffffffffffffffffff161461110f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110690613605565b60405180910390fd5b80601460026101000a81548160ff02191690831515021790555050565b611134612038565b73ffffffffffffffffffffffffffffffffffffffff166111526114cd565b73ffffffffffffffffffffffffffffffffffffffff16146111a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119f90613605565b60405180910390fd5b81600481905550806005819055505050565b60096020528060005260406000206000915054906101000a900460ff1681565b6111e2612038565b73ffffffffffffffffffffffffffffffffffffffff166112006114cd565b73ffffffffffffffffffffffffffffffffffffffff1614611256576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124d90613605565b60405180910390fd5b8060108190555050565b601460019054906101000a900460ff1681565b61127b612038565b73ffffffffffffffffffffffffffffffffffffffff166112996114cd565b73ffffffffffffffffffffffffffffffffffffffff16146112ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e690613605565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61139b612038565b73ffffffffffffffffffffffffffffffffffffffff166113b96114cd565b73ffffffffffffffffffffffffffffffffffffffff161461140f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140690613605565b60405180910390fd5b611419600061296a565b565b611423612038565b73ffffffffffffffffffffffffffffffffffffffff166114416114cd565b73ffffffffffffffffffffffffffffffffffffffff1614611497576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148e90613605565b60405180910390fd5b8060118190555050565b60105481565b60115481565b600c6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6114fe612038565b73ffffffffffffffffffffffffffffffffffffffff1661151c6114cd565b73ffffffffffffffffffffffffffffffffffffffff1614611572576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156990613605565b60405180910390fd5b8060138190555050565b60606002805461158b90613654565b80601f01602080910402602001604051908101604052809291908181526020018280546115b790613654565b80156116045780601f106115d957610100808354040283529160200191611604565b820191906000526020600020905b8154815290600101906020018083116115e757829003601f168201915b5050505050905090565b611616612038565b73ffffffffffffffffffffffffffffffffffffffff166116346114cd565b73ffffffffffffffffffffffffffffffffffffffff161461168a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168190613605565b60405180910390fd5b60005b838390508110156117295781601560008686858181106116b0576116af613685565b5b90506020020160208101906116c5919061332d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611721906136e3565b91505061168d565b50505050565b600061174361173c612038565b8484612209565b506001905092915050565b611756612038565b73ffffffffffffffffffffffffffffffffffffffff166117746114cd565b73ffffffffffffffffffffffffffffffffffffffff16146117ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c190613605565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60156020528060005260406000206000915054906101000a900460ff1681565b61184d612038565b73ffffffffffffffffffffffffffffffffffffffff1661186b6114cd565b73ffffffffffffffffffffffffffffffffffffffff16146118c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b890613605565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600b6020528060005260406000206000915054906101000a900460ff1681565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1a906137e3565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401611a5e929190613803565b6020604051808303816000875af1158015611a7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa19190613841565b50505050565b60055481565b611ab5612038565b73ffffffffffffffffffffffffffffffffffffffff16611ad36114cd565b73ffffffffffffffffffffffffffffffffffffffff1614611b29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2090613605565b60405180910390fd5b80601260006101000a81548160ff02191690831515021790555050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60045481565b611bdb612038565b73ffffffffffffffffffffffffffffffffffffffff16611bf96114cd565b73ffffffffffffffffffffffffffffffffffffffff1614611c4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4690613605565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d31906137e3565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611d80573d6000803e3d6000fd5b50565b60135481565b601260009054906101000a900460ff1681565b601460009054906101000a900460ff1681565b611db7612038565b73ffffffffffffffffffffffffffffffffffffffff16611dd56114cd565b73ffffffffffffffffffffffffffffffffffffffff1614611e2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2290613605565b60405180910390fd5b80601460016101000a81548160ff02191690831515021790555050565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611e76612038565b73ffffffffffffffffffffffffffffffffffffffff16611e946114cd565b73ffffffffffffffffffffffffffffffffffffffff1614611eea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee190613605565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611f59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f50906138e0565b60405180910390fd5b611f628161296a565b50565b611f6d612038565b73ffffffffffffffffffffffffffffffffffffffff16611f8b6114cd565b73ffffffffffffffffffffffffffffffffffffffff1614611fe1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd890613605565b60405180910390fd5b80601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601460029054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036120af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a690613972565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361211e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211590613a04565b60405180910390fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516121fc9190613312565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612279576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227090613a96565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036122e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122df90613b28565b60405180910390fd5b6000821161232b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232290613b94565b60405180910390fd5b600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156123b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123af90613c00565b60405180910390fd5b600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612445576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243c90613c00565b60405180910390fd5b601560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156124e95750601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561253e57601460009054906101000a900460ff1661253d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253490613c6c565b60405180910390fd5b5b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156125e25750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156125fa5750601460019054906101000a900460ff165b1561264557601054821115612644576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263b90613cfe565b60405180910390fd5b5b6126ce826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129069092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061271d8585612a2e565b6127315761272c858585612b99565b612733565b825b9050601460029054906101000a900460ff16801561279b5750600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612800576011546127be826127b08761134a565b612e0390919063ffffffff16565b11156127ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f690613d6a565b60405180910390fd5b5b61285281600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e0390919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516128f29190613312565b60405180910390a360019150509392505050565b600083831115829061294e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129459190613062565b60405180910390fd5b506000838561295d9190613d8a565b9050809150509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612ad15750600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612adf5760019050612b93565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612b805750600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612b8e5760009050612b93565b600090505b92915050565b600080600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612c1e57612c17600f54612c0960045486612e6190919063ffffffff16565b612edb90919063ffffffff16565b9050612ce2565b600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612ca057612c99600f54612c8b60055486612e6190919063ffffffff16565b612edb90919063ffffffff16565b9050612ce1565b601260009054906101000a900460ff1615612ce057612cdd6064612ccf60135486612e6190919063ffffffff16565b612edb90919063ffffffff16565b90505b5b5b6000811115612de657612d3d81600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612e0390919063ffffffff16565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612ddd9190613312565b60405180910390a35b612df98184612f2590919063ffffffff16565b9150509392505050565b6000808284612e129190613dbe565b905083811015612e57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e4e90613e3e565b60405180910390fd5b8091505092915050565b6000808303612e735760009050612ed5565b60008284612e819190613e5e565b9050828482612e909190613ecf565b14612ed0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ec790613f72565b60405180910390fd5b809150505b92915050565b6000612f1d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612f6f565b905092915050565b6000612f6783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612906565b905092915050565b60008083118290612fb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fad9190613062565b60405180910390fd5b5060008385612fc59190613ecf565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561300c578082015181840152602081019050612ff1565b60008484015250505050565b6000601f19601f8301169050919050565b600061303482612fd2565b61303e8185612fdd565b935061304e818560208601612fee565b61305781613018565b840191505092915050565b6000602082019050818103600083015261307c8184613029565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006130c96130c46130bf84613084565b6130a4565b613084565b9050919050565b60006130db826130ae565b9050919050565b60006130ed826130d0565b9050919050565b6130fd816130e2565b82525050565b600060208201905061311860008301846130f4565b92915050565b600080fd5b600080fd5b600061313382613084565b9050919050565b61314381613128565b811461314e57600080fd5b50565b6000813590506131608161313a565b92915050565b6000819050919050565b61317981613166565b811461318457600080fd5b50565b60008135905061319681613170565b92915050565b600080604083850312156131b3576131b261311e565b5b60006131c185828601613151565b92505060206131d285828601613187565b9150509250929050565b60008115159050919050565b6131f1816131dc565b82525050565b600060208201905061320c60008301846131e8565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261323757613236613212565b5b8235905067ffffffffffffffff81111561325457613253613217565b5b6020830191508360208202830111156132705761326f61321c565b5b9250929050565b613280816131dc565b811461328b57600080fd5b50565b60008135905061329d81613277565b92915050565b6000806000604084860312156132bc576132bb61311e565b5b600084013567ffffffffffffffff8111156132da576132d9613123565b5b6132e686828701613221565b935093505060206132f98682870161328e565b9150509250925092565b61330c81613166565b82525050565b60006020820190506133276000830184613303565b92915050565b6000602082840312156133435761334261311e565b5b600061335184828501613151565b91505092915050565b6000806000606084860312156133735761337261311e565b5b600061338186828701613151565b935050602061339286828701613151565b92505060406133a386828701613187565b9150509250925092565b600060ff82169050919050565b6133c3816133ad565b82525050565b60006020820190506133de60008301846133ba565b92915050565b6000602082840312156133fa576133f961311e565b5b60006134088482850161328e565b91505092915050565b600080604083850312156134285761342761311e565b5b600061343685828601613187565b925050602061344785828601613187565b9150509250929050565b6000602082840312156134675761346661311e565b5b600061347584828501613187565b91505092915050565b600080604083850312156134955761349461311e565b5b60006134a385828601613151565b92505060206134b48582860161328e565b9150509250929050565b6134c781613128565b82525050565b60006020820190506134e260008301846134be565b92915050565b60006134f382613128565b9050919050565b613503816134e8565b811461350e57600080fd5b50565b600081359050613520816134fa565b92915050565b60008060006060848603121561353f5761353e61311e565b5b600061354d86828701613511565b935050602061355e86828701613151565b925050604061356f86828701613187565b9150509250925092565b600080604083850312156135905761358f61311e565b5b600061359e85828601613151565b92505060206135af85828601613151565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006135ef602083612fdd565b91506135fa826135b9565b602082019050919050565b6000602082019050818103600083015261361e816135e2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061366c57607f821691505b60208210810361367f5761367e613625565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006136ee82613166565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036137205761371f6136b4565b5b600182019050919050565b7f45524332303a20416c726561647920456e61626c656400000000000000000000600082015250565b6000613761601683612fdd565b915061376c8261372b565b602082019050919050565b6000602082019050818103600083015261379081613754565b9050919050565b7f4572726f723a2047756172646564210000000000000000000000000000000000600082015250565b60006137cd600f83612fdd565b91506137d882613797565b602082019050919050565b600060208201905081810360008301526137fc816137c0565b9050919050565b600060408201905061381860008301856134be565b6138256020830184613303565b9392505050565b60008151905061383b81613277565b92915050565b6000602082840312156138575761385661311e565b5b60006138658482850161382c565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006138ca602683612fdd565b91506138d58261386e565b604082019050919050565b600060208201905081810360008301526138f9816138bd565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061395c602483612fdd565b915061396782613900565b604082019050919050565b6000602082019050818103600083015261398b8161394f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006139ee602283612fdd565b91506139f982613992565b604082019050919050565b60006020820190508181036000830152613a1d816139e1565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613a80602583612fdd565b9150613a8b82613a24565b604082019050919050565b60006020820190508181036000830152613aaf81613a73565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613b12602383612fdd565b9150613b1d82613ab6565b604082019050919050565b60006020820190508181036000830152613b4181613b05565b9050919050565b7f416d6f756e74206973207a65726f000000000000000000000000000000000000600082015250565b6000613b7e600e83612fdd565b9150613b8982613b48565b602082019050919050565b60006020820190508181036000830152613bad81613b71565b9050919050565b7f45524332303a20426f7420646574656374656400000000000000000000000000600082015250565b6000613bea601383612fdd565b9150613bf582613bb4565b602082019050919050565b60006020820190508181036000830152613c1981613bdd565b9050919050565b7f45524332303a2074726164696e67206e6f7420656e61626c6520796574000000600082015250565b6000613c56601d83612fdd565b9150613c6182613c20565b602082019050919050565b60006020820190508181036000830152613c8581613c49565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b6000613ce8602883612fdd565b9150613cf382613c8c565b604082019050919050565b60006020820190508181036000830152613d1781613cdb565b9050919050565b7f57616c6c6574204c696d69742045786365656465642121000000000000000000600082015250565b6000613d54601783612fdd565b9150613d5f82613d1e565b602082019050919050565b60006020820190508181036000830152613d8381613d47565b9050919050565b6000613d9582613166565b9150613da083613166565b9250828203905081811115613db857613db76136b4565b5b92915050565b6000613dc982613166565b9150613dd483613166565b9250828201905080821115613dec57613deb6136b4565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613e28601b83612fdd565b9150613e3382613df2565b602082019050919050565b60006020820190508181036000830152613e5781613e1b565b9050919050565b6000613e6982613166565b9150613e7483613166565b9250828202613e8281613166565b91508282048414831517613e9957613e986136b4565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613eda82613166565b9150613ee583613166565b925082613ef557613ef4613ea0565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613f5c602183612fdd565b9150613f6782613f00565b604082019050919050565b60006020820190508181036000830152613f8b81613f4f565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212202ace92ef3192372ea4e6b4f4af3b6c14eb7e8c34c7588b2f20286dbe9ce6c6d964736f6c63430008130033