60806040523480156200001157600080fd5b506040518060400160405280601281526020017f416472656e616c696e652e46696e616e636500000000000000000000000000008152506040518060400160405280600381526020017f41445200000000000000000000000000000000000000000000000000000000008152508160039080519060200190620000969291906200023b565b508060049080519060200190620000af9291906200023b565b506012600560006101000a81548160ff021916908360ff16021790555063647930ff600b81905550635fefb77f60078190555063621eb37f6008819055506363b21e7f60098190555063647930ff600a8190555069185a29990fe301e00000600c8190555069032d26d12e980b600000600d819055507343ddbf9d4147abbd42b0c94337455dd63ebe2cdc600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505060006200018e6200023360201b60201c565b905080600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620002e1565b600033905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200027e57805160ff1916838001178555620002af565b82800160010185558215620002af579182015b82811115620002ae57825182559160200191906001019062000291565b5b509050620002be9190620002c2565b5090565b5b80821115620002dd576000816000905550600101620002c3565b5090565b6126f180620002f16000396000f3fe60806040526004361061016a5760003560e01c806340c65003116100d1578063a9059cbb1161008a578063cb1fb01411610064578063cb1fb01414610acd578063dd62ed3e14610af8578063e773c82f14610b7d578063f2fde38b14610ba85761044b565b8063a9059cbb14610a06578063b071cbe614610a77578063c24a0f8b14610aa25761044b565b806340c650031461081d57806370a0823114610848578063715018a6146108ad5780638da5cb5b146108c457806395d89b4114610905578063a457c2d7146109955761044b565b806318160ddd1161012357806318160ddd1461063c57806323b872dd14610667578063313ce567146106f85780633659a8b214610726578063395093511461075157806340c10f19146107c25761044b565b806305e633e21461045057806306fdde031461047b578063095ea7b31461050b5780630ada89041461057c5780630b97bc86146105c05780630bccfdba146105eb5761044b565b3661044b57600b544211156101e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5072652d73616c65206f6620746f6b656e7320697320636f6d706c657465642181525060200191505060405180910390fd5b600c546002541115610244576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806126016025913960400191505060405180910390fd5b6000600754421161025a5760fa340290506102bf565b6007544211801561026c575060085442105b1561027c5760de340290506102be565b6008544211801561028e575060095442105b1561029e5760c8340290506102bd565b600954421180156102b05750600a5442105b156102bc5760a7340290505b5b5b5b6102cb60003383610bf9565b6102e081600254610bfe90919063ffffffff16565b600281905550610337816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bfe90919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156103e1573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a350005b600080fd5b34801561045c57600080fd5b50610465610c86565b6040518082815260200191505060405180910390f35b34801561048757600080fd5b50610490610c8c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104d05780820151818401526020810190506104b5565b50505050905090810190601f1680156104fd5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561051757600080fd5b506105646004803603604081101561052e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d2e565b60405180821515815260200191505060405180910390f35b6105be6004803603602081101561059257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d4c565b005b3480156105cc57600080fd5b506105d5611224565b6040518082815260200191505060405180910390f35b3480156105f757600080fd5b5061063a6004803603602081101561060e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061122a565b005b34801561064857600080fd5b50610651611300565b6040518082815260200191505060405180910390f35b34801561067357600080fd5b506106e06004803603606081101561068a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061130a565b60405180821515815260200191505060405180910390f35b34801561070457600080fd5b5061070d6113e3565b604051808260ff16815260200191505060405180910390f35b34801561073257600080fd5b5061073b6113fa565b6040518082815260200191505060405180910390f35b34801561075d57600080fd5b506107aa6004803603604081101561077457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611400565b60405180821515815260200191505060405180910390f35b3480156107ce57600080fd5b5061081b600480360360408110156107e557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114b3565b005b34801561082957600080fd5b5061083261158b565b6040518082815260200191505060405180910390f35b34801561085457600080fd5b506108976004803603602081101561086b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611591565b6040518082815260200191505060405180910390f35b3480156108b957600080fd5b506108c26115d9565b005b3480156108d057600080fd5b506108d9611764565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561091157600080fd5b5061091a61178e565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561095a57808201518184015260208101905061093f565b50505050905090810190601f1680156109875780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156109a157600080fd5b506109ee600480360360408110156109b857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611830565b60405180821515815260200191505060405180910390f35b348015610a1257600080fd5b50610a5f60048036036040811015610a2957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506118fd565b60405180821515815260200191505060405180910390f35b348015610a8357600080fd5b50610a8c61191b565b6040518082815260200191505060405180910390f35b348015610aae57600080fd5b50610ab7611921565b6040518082815260200191505060405180910390f35b348015610ad957600080fd5b50610ae2611927565b6040518082815260200191505060405180910390f35b348015610b0457600080fd5b50610b6760048036036040811015610b1b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061192d565b6040518082815260200191505060405180910390f35b348015610b8957600080fd5b50610b926119b4565b6040518082815260200191505060405180910390f35b348015610bb457600080fd5b50610bf760048036036020811015610bcb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506119ba565b005b505050565b600080828401905083811015610c7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600a5481565b606060038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610d245780601f10610cf957610100808354040283529160200191610d24565b820191906000526020600020905b815481529060010190602001808311610d0757829003601f168201915b5050505050905090565b6000610d42610d3b611bca565b8484611bd2565b6001905092915050565b600b54421115610dc4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5072652d73616c65206f6620746f6b656e7320697320636f6d706c657465642181525060200191505060405180910390fd5b600c546002541115610e21576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806126016025913960400191505060405180910390fd5b6000806000600290506007544211610e3e5760fa34029250610ea3565b60075442118015610e50575060085442105b15610e605760de34029250610ea2565b60085442118015610e72575060095442105b15610e825760c834029250610ea1565b60095442118015610e945750600a5442105b15610ea05760a7340292505b5b5b5b610eaf60003385610bf9565b610ec483600254610bfe90919063ffffffff16565b600281905550610f1b836000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bfe90919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015610fc5573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a38373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156110955750600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561121e576110a384611591565b9150683635c9adc5dea0000082106110be57600790506110ee565b681b1ae4d6e2ef50000082106110d757600590506110ed565b680ad78ebc5ac620000082106110ec57600390505b5b5b80606484816110f957fe5b0402925061110960008585610bf9565b61111e83600254610bfe90919063ffffffff16565b600281905550611175836000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bfe90919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a35b50505050565b60065481565b611232611bca565b73ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6112fd81611dc9565b50565b6000600254905090565b6000611317848484611ff2565b6113d884611323611bca565b6113d38560405180606001604052806028815260200161262660289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611389611bca565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122b39092919063ffffffff16565b611bd2565b600190509392505050565b6000600560009054906101000a900460ff16905090565b60085481565b60006114a961140d611bca565b846114a4856001600061141e611bca565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bfe90919063ffffffff16565b611bd2565b6001905092915050565b6114bb611bca565b73ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461157d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6115878282612373565b5050565b60075481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6115e1611bca565b73ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116a3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156118265780601f106117fb57610100808354040283529160200191611826565b820191906000526020600020905b81548152906001019060200180831161180957829003601f168201915b5050505050905090565b60006118f361183d611bca565b846118ee856040518060600160405280602581526020016126976025913960016000611867611bca565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122b39092919063ffffffff16565b611bd2565b6001905092915050565b600061191161190a611bca565b8484611ff2565b6001905092915050565b600c5481565b600b5481565b600d5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b6119c2611bca565b73ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a84576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611b0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061255e6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611c58576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806126736024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611cde576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806125846022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600060025414611e24576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001806125cc6035913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611ec7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b611ed5600082600d54610bf9565b611eec600d54600254610bfe90919063ffffffff16565b600281905550611f45600d546000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bfe90919063ffffffff16565b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600d546040518082815260200191505060405180910390a350565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612078576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061264e6025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156120fe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018061253b6023913960400191505060405180910390fd5b612109838383610bf9565b612174816040518060600160405280602681526020016125a6602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122b39092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612207816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bfe90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290612360576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561232557808201518184015260208101905061230a565b50505050905090810190601f1680156123525780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612416576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b61242260008383610bf9565b61243781600254610bfe90919063ffffffff16565b60028190555061248e816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bfe90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505056fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63655468652072657761726420666f7220612041445220686f6c6465727320796f752063616e206f6e6c792067657420312074696d65214d6178696d756d2070726573616c6520746f6b656e73202d203130302c303030204144522145524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b31a1f770e2e67f85e6978104e679ec4231cf9b7de61bfebdc85fb860d5dfaa764736f6c634300060c0033