60806040526000600760146101000a81548160ff0219169083151502179055506000600760156101000a81548160ff0219169083151502179055506000600760166101000a81548160ff02191690831515021790555062000065620004b860201b60201c565b600a6200007391906200086a565b6503d37ec7b500620000869190620008bb565b60085561271060056008546200009d9190620008bb565b620000a9919062000935565b60095560646004600854620000bf9190620008bb565b620000cb919062000935565b600a5573cd1ffa5a68d3e83eef46805e028e8af2c615759f600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073294aed6f5816a73fb4c8edb05d60d11d1d546d13600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600e556004600f5560405180604001604052806000815260200160008152506010600082015181600001556020820151816001015550506040518060400160405280600081526020016000815250601260008201518160000155602082015181600101555050348015620001ed57600080fd5b506040518060400160405280601281526020017f4261627920506570652050726f706865637900000000000000000000000000008152506040518060400160405280600781526020017f424142594b454b0000000000000000000000000000000000000000000000000081525081600390816200026b919062000bdd565b5080600490816200027d919062000bdd565b505050620002a062000294620004c160201b60201c565b620004c960201b60201c565b620002b4336008546200058f60201b60201c565b6001601460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160146000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160146000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016014600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000d9b565b60006012905090565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000601576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005f89062000d4b565b60405180910390fd5b6200061560008383620006cb60201b60201c565b80600281905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620006bf919062000d7e565b60405180910390a35050565b505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200075e57808604811115620007365762000735620006d0565b5b6001851615620007465780820291505b80810290506200075685620006ff565b945062000716565b94509492505050565b6000826200077957600190506200084c565b816200078957600090506200084c565b8160018114620007a25760028114620007ad57620007e3565b60019150506200084c565b60ff841115620007c257620007c1620006d0565b5b8360020a915084821115620007dc57620007db620006d0565b5b506200084c565b5060208310610133831016604e8410600b84101617156200081d5782820a905083811115620008175762000816620006d0565b5b6200084c565b6200082c84848460016200070c565b92509050818404811115620008465762000845620006d0565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620008778262000853565b915062000884836200085d565b9250620008b37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000767565b905092915050565b6000620008c88262000853565b9150620008d58362000853565b9250828202620008e58162000853565b91508282048414831517620008ff57620008fe620006d0565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620009428262000853565b91506200094f8362000853565b92508262000962576200096162000906565b5b828204905092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620009ef57607f821691505b60208210810362000a055762000a04620009a7565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000a6f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000a30565b62000a7b868362000a30565b95508019841693508086168417925050509392505050565b6000819050919050565b600062000abe62000ab862000ab28462000853565b62000a93565b62000853565b9050919050565b6000819050919050565b62000ada8362000a9d565b62000af262000ae98262000ac5565b84845462000a3d565b825550505050565b600090565b62000b0962000afa565b62000b1681848462000acf565b505050565b5b8181101562000b3e5762000b3260008262000aff565b60018101905062000b1c565b5050565b601f82111562000b8d5762000b578162000a0b565b62000b628462000a20565b8101602085101562000b72578190505b62000b8a62000b818562000a20565b83018262000b1b565b50505b505050565b600082821c905092915050565b600062000bb26000198460080262000b92565b1980831691505092915050565b600062000bcd838362000b9f565b9150826002028217905092915050565b62000be8826200096d565b67ffffffffffffffff81111562000c045762000c0362000978565b5b62000c108254620009d6565b62000c1d82828562000b42565b600060209050601f83116001811462000c55576000841562000c40578287015190505b62000c4c858262000bbf565b86555062000cbc565b601f19841662000c658662000a0b565b60005b8281101562000c8f5784890151825560018201915060208501945060208101905062000c68565b8683101562000caf578489015162000cab601f89168262000b9f565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f45524332303a2067656e65726174696f6e20746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600062000d3360258362000cc4565b915062000d408262000cd5565b604082019050919050565b6000602082019050818103600083015262000d668162000d24565b9050919050565b62000d788162000853565b82525050565b600060208201905062000d95600083018462000d6d565b92915050565b6147ca8062000dab6000396000f3fe6080604052600436106101fd5760003560e01c8063768dc7101161010d578063a457c2d7116100a0578063edaa11681161006f578063edaa116814610722578063f2fde38b1461074b578063f570d4de14610774578063f66895a31461079d578063f887ea40146107c957610204565b8063a457c2d714610640578063a8aa1b311461067d578063a9059cbb146106a8578063dd62ed3e146106e557610204565b80638cd4426d116100dc5780638cd4426d146105985780638da5cb5b146105c157806395d89b41146105ec5780639e252f001461061757610204565b8063768dc710146104f0578063832c2bd21461052d57806385141a7714610556578063883755631461058157610204565b8063395093511161019057806366a88d961161015f57806366a88d961461041a57806370a0823114610445578063715018a614610482578063728f8eea14610499578063751039fc146104c557610204565b8063395093511461036057806342b6fa111461039d5780634ada218b146103c65780635dbdb7e3146103f157610204565b806318160ddd116101cc57806318160ddd146102a457806323b872dd146102cf578063251ef0951461030c578063313ce5671461033557610204565b806301339c211461020957806306fdde0314610213578063095ea7b31461023e5780631340538f1461027b57610204565b3661020457005b600080fd5b6102116107f4565b005b34801561021f57600080fd5b50610228610be5565b6040516102359190613327565b60405180910390f35b34801561024a57600080fd5b50610265600480360381019061026091906133f1565b610c77565b604051610272919061344c565b60405180910390f35b34801561028757600080fd5b506102a2600480360381019061029d9190613493565b610c95565b005b3480156102b057600080fd5b506102b9610d2e565b6040516102c691906134cf565b60405180910390f35b3480156102db57600080fd5b506102f660048036038101906102f191906134ea565b610d38565b604051610303919061344c565b60405180910390f35b34801561031857600080fd5b50610333600480360381019061032e9190613685565b610e39565b005b34801561034157600080fd5b5061034a610f4a565b60405161035791906136ea565b60405180910390f35b34801561036c57600080fd5b50610387600480360381019061038291906133f1565b610f53565b604051610394919061344c565b60405180910390f35b3480156103a957600080fd5b506103c460048036038101906103bf9190613705565b610fff565b005b3480156103d257600080fd5b506103db6110a3565b6040516103e8919061344c565b60405180910390f35b3480156103fd57600080fd5b5061041860048036038101906104139190613732565b6110b6565b005b34801561042657600080fd5b5061042f61118d565b60405161043c91906134cf565b60405180910390f35b34801561045157600080fd5b5061046c60048036038101906104679190613732565b611193565b60405161047991906134cf565b60405180910390f35b34801561048e57600080fd5b506104976111db565b005b3480156104a557600080fd5b506104ae611263565b6040516104bc92919061375f565b60405180910390f35b3480156104d157600080fd5b506104da611275565b6040516104e7919061344c565b60405180910390f35b3480156104fc57600080fd5b5061051760048036038101906105129190613732565b611303565b604051610524919061344c565b60405180910390f35b34801561053957600080fd5b50610554600480360381019061054f9190613732565b611323565b005b34801561056257600080fd5b5061056b6113fa565b6040516105789190613797565b60405180910390f35b34801561058d57600080fd5b50610596611400565b005b3480156105a457600080fd5b506105bf60048036038101906105ba91906133f1565b61150b565b005b3480156105cd57600080fd5b506105d6611611565b6040516105e39190613797565b60405180910390f35b3480156105f857600080fd5b5061060161163b565b60405161060e9190613327565b60405180910390f35b34801561062357600080fd5b5061063e60048036038101906106399190613705565b6116cd565b005b34801561064c57600080fd5b50610667600480360381019061066291906133f1565b61179a565b604051610674919061344c565b60405180910390f35b34801561068957600080fd5b5061069261188e565b60405161069f9190613797565b60405180910390f35b3480156106b457600080fd5b506106cf60048036038101906106ca91906133f1565b6118b4565b6040516106dc919061344c565b60405180910390f35b3480156106f157600080fd5b5061070c600480360381019061070791906137b2565b6118cb565b60405161071991906134cf565b60405180910390f35b34801561072e57600080fd5b5061074960048036038101906107449190613705565b611952565b005b34801561075757600080fd5b50610772600480360381019061076d9190613732565b611a28565b005b34801561078057600080fd5b5061079b60048036038101906107969190613685565b611b1f565b005b3480156107a957600080fd5b506107b2611c30565b6040516107c092919061375f565b60405180910390f35b3480156107d557600080fd5b506107de611c42565b6040516107eb9190613851565b60405180910390f35b6107fc611c68565b73ffffffffffffffffffffffffffffffffffffffff1661081a611611565b73ffffffffffffffffffffffffffffffffffffffff1614610870576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610867906138b8565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fa91906138ed565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610961573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098591906138ed565b6040518363ffffffff1660e01b81526004016109a292919061391a565b6020604051808303816000875af11580156109c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e591906138ed565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7193430610b7530611193565b60008033426040518863ffffffff1660e01b8152600401610b9b9695949392919061397e565b60606040518083038185885af1158015610bb9573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610bde91906139f4565b5050505050565b606060038054610bf490613a76565b80601f0160208091040260200160405190810160405280929190818152602001828054610c2090613a76565b8015610c6d5780601f10610c4257610100808354040283529160200191610c6d565b820191906000526020600020905b815481529060010190602001808311610c5057829003601f168201915b5050505050905090565b6000610c8b610c84611c68565b8484611c70565b6001905092915050565b610c9d611c68565b73ffffffffffffffffffffffffffffffffffffffff16610cbb611611565b73ffffffffffffffffffffffffffffffffffffffff1614610d11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d08906138b8565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b6000600254905090565b6000610d45848484611e39565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d90611c68565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610e10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0790613b19565b60405180910390fd5b610e2d85610e1c611c68565b8584610e289190613b68565b611c70565b60019150509392505050565b610e41611c68565b73ffffffffffffffffffffffffffffffffffffffff16610e5f611611565b73ffffffffffffffffffffffffffffffffffffffff1614610eb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eac906138b8565b60405180910390fd5b60005b8151811015610f4657600060146000848481518110610eda57610ed9613b9c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610f3e90613bcb565b915050610eb8565b5050565b60006012905090565b6000610ff5610f60611c68565b848460016000610f6e611c68565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610ff09190613c13565b611c70565b6001905092915050565b611007611c68565b73ffffffffffffffffffffffffffffffffffffffff16611025611611565b73ffffffffffffffffffffffffffffffffffffffff161461107b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611072906138b8565b60405180910390fd5b611083610f4a565b600a61108f9190613d7a565b8161109a9190613dc5565b60098190555050565b600760169054906101000a900460ff1681565b6110be611c68565b73ffffffffffffffffffffffffffffffffffffffff166110dc611611565b73ffffffffffffffffffffffffffffffffffffffff1614611132576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611129906138b8565b60405180910390fd5b6001601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600a5481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6111e3611c68565b73ffffffffffffffffffffffffffffffffffffffff16611201611611565b73ffffffffffffffffffffffffffffffffffffffff1614611257576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124e906138b8565b60405180910390fd5b6112616000612729565b565b60108060000154908060010154905082565b600061127f611c68565b73ffffffffffffffffffffffffffffffffffffffff1661129d611611565b73ffffffffffffffffffffffffffffffffffffffff16146112f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ea906138b8565b60405180910390fd5b600854600a819055506001905090565b60146020528060005260406000206000915054906101000a900460ff1681565b61132b611c68565b73ffffffffffffffffffffffffffffffffffffffff16611349611611565b73ffffffffffffffffffffffffffffffffffffffff161461139f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611396906138b8565b60405180910390fd5b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61dead81565b611408611c68565b73ffffffffffffffffffffffffffffffffffffffff16611426611611565b73ffffffffffffffffffffffffffffffffffffffff161461147c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611473906138b8565b60405180910390fd5b600760169054906101000a900460ff16156114cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c390613e53565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760156101000a81548160ff02191690831515021790555043600d81905550565b611513611c68565b73ffffffffffffffffffffffffffffffffffffffff16611531611611565b73ffffffffffffffffffffffffffffffffffffffff1614611587576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157e906138b8565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6115ab611611565b836040518363ffffffff1660e01b81526004016115c9929190613e73565b6020604051808303816000875af11580156115e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061160c9190613eb1565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461164a90613a76565b80601f016020809104026020016040519081016040528092919081815260200182805461167690613a76565b80156116c35780601f10611698576101008083540402835291602001916116c3565b820191906000526020600020905b8154815290600101906020018083116116a657829003601f168201915b5050505050905090565b6116d5611c68565b73ffffffffffffffffffffffffffffffffffffffff166116f3611611565b73ffffffffffffffffffffffffffffffffffffffff1614611749576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611740906138b8565b60405180910390fd5b611751611611565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611796573d6000803e3d6000fd5b5050565b600080600160006117a9611c68565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611866576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185d90613f50565b60405180910390fd5b611883611871611c68565b85858461187e9190613b68565b611c70565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006118c1338484611e39565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61195a611c68565b73ffffffffffffffffffffffffffffffffffffffff16611978611611565b73ffffffffffffffffffffffffffffffffffffffff16146119ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c5906138b8565b60405180910390fd5b600760169054906101000a900460ff1615611a1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1590613fe2565b60405180910390fd5b80600e8190555050565b611a30611c68565b73ffffffffffffffffffffffffffffffffffffffff16611a4e611611565b73ffffffffffffffffffffffffffffffffffffffff1614611aa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9b906138b8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0a90614074565b60405180910390fd5b611b1c81612729565b50565b611b27611c68565b73ffffffffffffffffffffffffffffffffffffffff16611b45611611565b73ffffffffffffffffffffffffffffffffffffffff1614611b9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b92906138b8565b60405180910390fd5b60005b8151811015611c2c57600160146000848481518110611bc057611bbf613b9c565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611c2490613bcb565b915050611b9e565b5050565b60128060000154908060010154905082565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd690614106565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4590614198565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e2c91906134cf565b60405180910390a3505050565b60008111611e7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e739061422a565b60405180910390fd5b601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611f205750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f7557600760169054906101000a900460ff16611f74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6b90614296565b60405180910390fd5b5b611f7d611611565b73ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1603611fbf57611fba8383836127ef565b612724565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156120665750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561207f5750600760149054906101000a900460ff16155b156120dd57600a548161209184611193565b61209b9190613c13565b11156120dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120d390614302565b60405180910390fd5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156121855750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121db5750601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121f45750600760149054906101000a900460ff16155b156122a857600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146122a757600a548161225b84611193565b6122659190613c13565b11156122a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229d90614302565b60405180910390fd5b5b5b601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806123495750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156123c757601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156123b0576123ab838383612a6c565b612724565b633b9aca00436123c09190613c13565b600e819055505b60008060006123d461327d565b6000601460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561247a5750601460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156124945750600e54600d546124919190613c13565b43105b9050600760149054906101000a900460ff16806124fa5750601460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061254e5750601460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561255c5760009250612638565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161480156125b7575080155b156125dc576012600001546012600101546125d29190613c13565b9450849350612637565b80612624576010600001546010600101546125f79190613c13565b94508493506010604051806040016040529081600082015481526020016001820154815250509150612636565b801561263557600f549450600f5493505b5b5b5b606484876126469190613dc5565b6126509190614351565b9250600760159054906101000a900460ff1680156126bc5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b156126cc576126cb8583612c9b565b5b6126e2888885896126dd9190613b68565b6127ef565b600083111561271e57600085111561271d576000606486886127049190613dc5565b61270e9190614351565b905061271b8930836127ef565b505b5b50505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361285e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612855906143f4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128c490614486565b60405180910390fd5b6128d8838383612e61565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561295e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295590614518565b60405180910390fd5b818161296a9190613b68565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546129fa9190613c13565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612a5e91906134cf565b60405180910390a350505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612adb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ad2906143f4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612b4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b4190614486565b60405180910390fd5b612b55838383612e61565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050806000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612c299190613c13565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612c8d91906134cf565b60405180910390a350505050565b600760149054906101000a900460ff16612e5d576001600760146101000a81548160ff0219169083151502179055506000820315612e41576000612cde30611193565b90506009548110612e3f5760016009541115612cfa5760095490505b6000600284612d099190613dc5565b9050600081846020015184612d1e9190613dc5565b612d289190614351565b905060008184612d389190613b68565b90506000479050612d4882612e66565b60008147612d569190613b68565b90506000876020015186612d6a9190613b68565b82612d759190614351565b90506000886020015182612d899190613dc5565b90506000811115612d9f57612d9e86826130a9565b5b600080600e5443612db09190613b68565b119050600081612dc1576000612dde565b8a60000151600285612dd39190613dc5565b612ddd9190613dc5565b5b90506000811115612e3557612e3481600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661318990919063ffffffff16565b5b5050505050505050505b505b6000600760146101000a81548160ff0219169083151502179055505b5050565b505050565b6000600267ffffffffffffffff811115612e8357612e82613542565b5b604051908082528060200260200182016040528015612eb15781602001602082028036833780820191505090505b5090503081600081518110612ec957612ec8613b9c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f9491906138ed565b81600181518110612fa857612fa7613b9c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061300f30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611c70565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016130739594939291906145f6565b600060405180830381600087803b15801561308d57600080fd5b505af11580156130a1573d6000803e3d6000fd5b505050505050565b6130d630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611c70565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b815260040161313f9695949392919061397e565b60606040518083038185885af115801561315d573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061318291906139f4565b5050505050565b804710156131cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131c39061469c565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16826040516131f2906146ed565b60006040518083038185875af1925050503d806000811461322f576040519150601f19603f3d011682016040523d82523d6000602084013e613234565b606091505b5050905080613278576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161326f90614774565b60405180910390fd5b505050565b604051806040016040528060008152602001600081525090565b600081519050919050565b600082825260208201905092915050565b60005b838110156132d15780820151818401526020810190506132b6565b60008484015250505050565b6000601f19601f8301169050919050565b60006132f982613297565b61330381856132a2565b93506133138185602086016132b3565b61331c816132dd565b840191505092915050565b6000602082019050818103600083015261334181846132ee565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006133888261335d565b9050919050565b6133988161337d565b81146133a357600080fd5b50565b6000813590506133b58161338f565b92915050565b6000819050919050565b6133ce816133bb565b81146133d957600080fd5b50565b6000813590506133eb816133c5565b92915050565b6000806040838503121561340857613407613353565b5b6000613416858286016133a6565b9250506020613427858286016133dc565b9150509250929050565b60008115159050919050565b61344681613431565b82525050565b6000602082019050613461600083018461343d565b92915050565b61347081613431565b811461347b57600080fd5b50565b60008135905061348d81613467565b92915050565b6000602082840312156134a9576134a8613353565b5b60006134b78482850161347e565b91505092915050565b6134c9816133bb565b82525050565b60006020820190506134e460008301846134c0565b92915050565b60008060006060848603121561350357613502613353565b5b6000613511868287016133a6565b9350506020613522868287016133a6565b9250506040613533868287016133dc565b9150509250925092565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61357a826132dd565b810181811067ffffffffffffffff8211171561359957613598613542565b5b80604052505050565b60006135ac613349565b90506135b88282613571565b919050565b600067ffffffffffffffff8211156135d8576135d7613542565b5b602082029050602081019050919050565b600080fd5b60006136016135fc846135bd565b6135a2565b90508083825260208201905060208402830185811115613624576136236135e9565b5b835b8181101561364d578061363988826133a6565b845260208401935050602081019050613626565b5050509392505050565b600082601f83011261366c5761366b61353d565b5b813561367c8482602086016135ee565b91505092915050565b60006020828403121561369b5761369a613353565b5b600082013567ffffffffffffffff8111156136b9576136b8613358565b5b6136c584828501613657565b91505092915050565b600060ff82169050919050565b6136e4816136ce565b82525050565b60006020820190506136ff60008301846136db565b92915050565b60006020828403121561371b5761371a613353565b5b6000613729848285016133dc565b91505092915050565b60006020828403121561374857613747613353565b5b6000613756848285016133a6565b91505092915050565b600060408201905061377460008301856134c0565b61378160208301846134c0565b9392505050565b6137918161337d565b82525050565b60006020820190506137ac6000830184613788565b92915050565b600080604083850312156137c9576137c8613353565b5b60006137d7858286016133a6565b92505060206137e8858286016133a6565b9150509250929050565b6000819050919050565b600061381761381261380d8461335d565b6137f2565b61335d565b9050919050565b6000613829826137fc565b9050919050565b600061383b8261381e565b9050919050565b61384b81613830565b82525050565b60006020820190506138666000830184613842565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006138a26020836132a2565b91506138ad8261386c565b602082019050919050565b600060208201905081810360008301526138d181613895565b9050919050565b6000815190506138e78161338f565b92915050565b60006020828403121561390357613902613353565b5b6000613911848285016138d8565b91505092915050565b600060408201905061392f6000830185613788565b61393c6020830184613788565b9392505050565b6000819050919050565b600061396861396361395e84613943565b6137f2565b6133bb565b9050919050565b6139788161394d565b82525050565b600060c0820190506139936000830189613788565b6139a060208301886134c0565b6139ad604083018761396f565b6139ba606083018661396f565b6139c76080830185613788565b6139d460a08301846134c0565b979650505050505050565b6000815190506139ee816133c5565b92915050565b600080600060608486031215613a0d57613a0c613353565b5b6000613a1b868287016139df565b9350506020613a2c868287016139df565b9250506040613a3d868287016139df565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680613a8e57607f821691505b602082108103613aa157613aa0613a47565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613b036028836132a2565b9150613b0e82613aa7565b604082019050919050565b60006020820190508181036000830152613b3281613af6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613b73826133bb565b9150613b7e836133bb565b9250828203905081811115613b9657613b95613b39565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613bd6826133bb565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613c0857613c07613b39565b5b600182019050919050565b6000613c1e826133bb565b9150613c29836133bb565b9250828201905080821115613c4157613c40613b39565b5b92915050565b60008160011c9050919050565b6000808291508390505b6001851115613c9e57808604811115613c7a57613c79613b39565b5b6001851615613c895780820291505b8081029050613c9785613c47565b9450613c5e565b94509492505050565b600082613cb75760019050613d73565b81613cc55760009050613d73565b8160018114613cdb5760028114613ce557613d14565b6001915050613d73565b60ff841115613cf757613cf6613b39565b5b8360020a915084821115613d0e57613d0d613b39565b5b50613d73565b5060208310610133831016604e8410600b8410161715613d495782820a905083811115613d4457613d43613b39565b5b613d73565b613d568484846001613c54565b92509050818404811115613d6d57613d6c613b39565b5b81810290505b9392505050565b6000613d85826133bb565b9150613d90836136ce565b9250613dbd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613ca7565b905092915050565b6000613dd0826133bb565b9150613ddb836133bb565b9250828202613de9816133bb565b91508282048414831517613e0057613dff613b39565b5b5092915050565b7f54726164696e6720697320616c726561647920656e61626c6564000000000000600082015250565b6000613e3d601a836132a2565b9150613e4882613e07565b602082019050919050565b60006020820190508181036000830152613e6c81613e30565b9050919050565b6000604082019050613e886000830185613788565b613e9560208301846134c0565b9392505050565b600081519050613eab81613467565b92915050565b600060208284031215613ec757613ec6613353565b5b6000613ed584828501613e9c565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613f3a6025836132a2565b9150613f4582613ede565b604082019050919050565b60006020820190508181036000830152613f6981613f2d565b9050919050565b7f43616e2774206368616e6765207768656e2074726164696e672068617320737460008201527f6172746564000000000000000000000000000000000000000000000000000000602082015250565b6000613fcc6025836132a2565b9150613fd782613f70565b604082019050919050565b60006020820190508181036000830152613ffb81613fbf565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061405e6026836132a2565b915061406982614002565b604082019050919050565b6000602082019050818103600083015261408d81614051565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006140f06024836132a2565b91506140fb82614094565b604082019050919050565b6000602082019050818103600083015261411f816140e3565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006141826022836132a2565b915061418d82614126565b604082019050919050565b600060208201905081810360008301526141b181614175565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006142146029836132a2565b915061421f826141b8565b604082019050919050565b6000602082019050818103600083015261424381614207565b9050919050565b7f54726164696e67206e6f7420656e61626c656400000000000000000000000000600082015250565b60006142806013836132a2565b915061428b8261424a565b602082019050919050565b600060208201905081810360008301526142af81614273565b9050919050565b7f596f752061726520657863656564696e67206d617857616c6c65744c696d6974600082015250565b60006142ec6020836132a2565b91506142f7826142b6565b602082019050919050565b6000602082019050818103600083015261431b816142df565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061435c826133bb565b9150614367836133bb565b92508261437757614376614322565b5b828204905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006143de6025836132a2565b91506143e982614382565b604082019050919050565b6000602082019050818103600083015261440d816143d1565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006144706023836132a2565b915061447b82614414565b604082019050919050565b6000602082019050818103600083015261449f81614463565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006145026026836132a2565b915061450d826144a6565b604082019050919050565b60006020820190508181036000830152614531816144f5565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61456d8161337d565b82525050565b600061457f8383614564565b60208301905092915050565b6000602082019050919050565b60006145a382614538565b6145ad8185614543565b93506145b883614554565b8060005b838110156145e95781516145d08882614573565b97506145db8361458b565b9250506001810190506145bc565b5085935050505092915050565b600060a08201905061460b60008301886134c0565b614618602083018761396f565b818103604083015261462a8186614598565b90506146396060830185613788565b61464660808301846134c0565b9695505050505050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000614686601d836132a2565b915061469182614650565b602082019050919050565b600060208201905081810360008301526146b581614679565b9050919050565b600081905092915050565b50565b60006146d76000836146bc565b91506146e2826146c7565b600082019050919050565b60006146f8826146ca565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b600061475e603a836132a2565b915061476982614702565b604082019050919050565b6000602082019050818103600083015261478d81614751565b905091905056fea264697066735822122069336e29b11265c0c4438544955989e8ae8ad5c1426c81bd4abdb5d246b0004464736f6c63430008130033