{
  "contractName": "APMRegistry",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "REPO_APP_NAME",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "APM_APP_NAME",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "ENS_SUB_APP_NAME",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "registrar",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_name",
          "type": "string"
        },
        {
          "name": "_dev",
          "type": "address"
        },
        {
          "name": "_initialSemanticVersion",
          "type": "uint16[3]"
        },
        {
          "name": "_contractAddress",
          "type": "address"
        },
        {
          "name": "_contentURI",
          "type": "bytes"
        }
      ],
      "name": "newRepoWithVersion",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "CREATE_REPO_ROLE",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "EVMSCRIPT_REGISTRY_APP_ID",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "appId",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getInitializationBlock",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "EVMSCRIPT_REGISTRY_APP",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_sender",
          "type": "address"
        },
        {
          "name": "_role",
          "type": "bytes32"
        },
        {
          "name": "params",
          "type": "uint256[]"
        }
      ],
      "name": "canPerform",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_name",
          "type": "string"
        },
        {
          "name": "_dev",
          "type": "address"
        }
      ],
      "name": "newRepo",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_registrar",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_kernel",
          "type": "address"
        },
        {
          "name": "_appId",
          "type": "bytes32"
        },
        {
          "name": "_initializePayload",
          "type": "bytes"
        }
      ],
      "name": "newAppProxyPinned",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "kernel",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_kernel",
          "type": "address"
        },
        {
          "name": "_appId",
          "type": "bytes32"
        }
      ],
      "name": "newAppProxy",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_kernel",
          "type": "address"
        },
        {
          "name": "_appId",
          "type": "bytes32"
        },
        {
          "name": "_initializePayload",
          "type": "bytes"
        }
      ],
      "name": "newAppProxy",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_script",
          "type": "bytes"
        }
      ],
      "name": "getExecutor",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_kernel",
          "type": "address"
        },
        {
          "name": "_appId",
          "type": "bytes32"
        }
      ],
      "name": "newAppProxyPinned",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "id",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "name": "name",
          "type": "string"
        },
        {
          "indexed": false,
          "name": "repo",
          "type": "address"
        }
      ],
      "name": "NewRepo",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "proxy",
          "type": "address"
        }
      ],
      "name": "NewAppProxy",
      "type": "event"
    }
  ],
  "bytecode": "0x6060604052341561000f57600080fd5b613eb98061001e6000396000f3006060604052600436106200011b576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063023d6c0314620001205780631219d5c814620001b4578063231cb6ab14620002485780632b20e39714620002dc57806332ab6af014620003345780635e1f3fa8146200048157806360b1e05714620004b557806380afdea814620004e95780638b3dd749146200051d5780639b3fdf4c1462000549578063a1658fad146200057d578063b0927de7146200061e578063c4d66de814620006dd578063d162f8b01462000719578063d4aae0c414620007e5578063e156a8f3146200083d578063ede658b014620008c6578063f92a79ff1462000992578063ff289fc51462000a32575b600080fd5b34156200012c57600080fd5b6200013662000abb565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015620001785780820151818401526020810190506200015b565b50505050905090810190601f168015620001a65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3415620001c057600080fd5b620001ca62000af4565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156200020c578082015181840152602081019050620001ef565b50505050905090810190601f1680156200023a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156200025457600080fd5b6200025e62000b2d565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015620002a057808201518184015260208101905062000283565b50505050905090810190601f168015620002ce5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3415620002e857600080fd5b620002f262000b66565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156200034057600080fd5b6200043f600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908060600190600380602002604051908101604052809291908260036020028082843782019150505050509190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505062000b8c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156200048d57600080fd5b620004976200125d565b60405180826000191660001916815260200191505060405180910390f35b3415620004c157600080fd5b620004cb62001264565b60405180826000191660001916815260200191505060405180910390f35b3415620004f557600080fd5b620004ff6200129d565b60405180826000191660001916815260200191505060405180910390f35b34156200052957600080fd5b62000533620012a3565b6040518082815260200191505060405180910390f35b34156200055557600080fd5b6200055f620012ad565b60405180826000191660001916815260200191505060405180910390f35b34156200058957600080fd5b62000604600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035600019169060200190919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190505062001348565b604051808215151515815260200191505060405180910390f35b34156200062a57600080fd5b6200069b600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505062001551565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415620006e957600080fd5b62000717600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050620015a5565b005b34156200072557600080fd5b620007a3600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356000191690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505062001be4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415620007f157600080fd5b620007fb62001d2f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156200084957600080fd5b62000884600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356000191690602001909190505062001d54565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415620008d257600080fd5b62000950600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356000191690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505062001d8f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156200099e57600080fd5b620009f0600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505062001eda565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341562000a3e57600080fd5b62000a79600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356000191690602001909190505062001fe8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6040805190810160405280600881526020017f61706d2d7265706f00000000000000000000000000000000000000000000000081525081565b6040805190810160405280600c81526020017f61706d2d7265676973747279000000000000000000000000000000000000000081525081565b6040805190810160405280600a81526020017f61706d2d656e737375620000000000000000000000000000000000000000000081525081565b606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060006001800262000bc23382600060405180591062000bab5750595b908082528060200260200182016040525062001348565b151562000bce57600080fd5b62000bda893062002023565b92508273ffffffffffffffffffffffffffffffffffffffff1663730534108888886040518463ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018084600360200280838360005b8381101562000c5357808201518184015260208101905062000c36565b505050509050018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b8381101562000cca57808201518184015260208101905062000cad565b50505050905090810190601f16801562000cf85780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b151562000d1957600080fd5b6102c65a03f1151562000d2b57600080fd5b5050506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663de2873596000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b151562000dbc57600080fd5b6102c65a03f1151562000dce57600080fd5b5050506040518051905091508173ffffffffffffffffffffffffffffffffffffffff16639d0effdb30858673ffffffffffffffffffffffffffffffffffffffff1663aa61924a6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b151562000e6557600080fd5b6102c65a03f1151562000e7757600080fd5b505050604051805190506040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019350505050600060405180830381600087803b151562000f4157600080fd5b6102c65a03f1151562000f5357600080fd5b5050508173ffffffffffffffffffffffffffffffffffffffff16630a8ed3db89858673ffffffffffffffffffffffffffffffffffffffff1663aa61924a6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b151562000fe157600080fd5b6102c65a03f1151562000ff357600080fd5b505050604051805190506040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019350505050600060405180830381600087803b1515620010bd57600080fd5b6102c65a03f11515620010cf57600080fd5b5050508173ffffffffffffffffffffffffffffffffffffffff1663afd925df89858673ffffffffffffffffffffffffffffffffffffffff1663aa61924a6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156200115d57600080fd5b6102c65a03f115156200116f57600080fd5b505050604051805190506040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019350505050600060405180830381600087803b15156200123957600080fd5b6102c65a03f115156200124b57600080fd5b50505082935050505095945050505050565b6001800281565b60405180807f65766d7265672e617261676f6e706d2e657468000000000000000000000000008152506013019050604051809103902081565b60015481565b6000600354905090565b60405180807f61707000000000000000000000000000000000000000000000000000000000008152506003019050604051809103902060405180807f65766d7265672e617261676f6e706d2e6574680000000000000000000000000081525060130190506040518091039020604051808360001916600019168152602001826000191660001916815260200192505050604051809103902081565b60006200135462002824565b600080845111156200136e57602084510290508391508082525b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806200154657506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fdef9106873088866000604051602001526040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001836000191660001916815260200180602001828103825283818151815260200191508051906020019080838360005b83811015620014d9578082015181840152602081019050620014bc565b50505050905090810190601f168015620015075780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15156200152957600080fd5b6102c65a03f115156200153b57600080fd5b505050604051805190505b925050509392505050565b60006001800262001584338260006040518059106200156d5750595b908082528060200260200182016040525062001348565b15156200159057600080fd5b6200159c848462002023565b91505092915050565b600080600354141515620015b857600080fd5b620015c2620024e3565b81606560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633f15457f6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156200169257600080fd5b6102c65a03f11515620016a457600080fd5b50505060405180519050606460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663db606931306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1515620017ab57600080fd5b6102c65a03f11515620017bd57600080fd5b5050506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663de2873596000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156200184e57600080fd5b6102c65a03f115156200186057600080fd5b5050506040518051905090508073ffffffffffffffffffffffffffffffffffffffff16636d6712d830606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fef47e386000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156200193b57600080fd5b6102c65a03f115156200194d57600080fd5b505050604051805190506000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019350505050602060405180830381600087803b151562001a2057600080fd5b6102c65a03f1151562001a3257600080fd5b50505060405180519050151562001a4857600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16636d6712d830838473ffffffffffffffffffffffffffffffffffffffff16633d6ab68f6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b151562001ad357600080fd5b6102c65a03f1151562001ae557600080fd5b505050604051805190506000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019350505050602060405180830381600087803b151562001bb857600080fd5b6102c65a03f1151562001bca57600080fd5b50505060405180519050151562001be057600080fd5b5050565b60008084848462001bf462002838565b808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001836000191660001916815260200180602001828103825283818151815260200191508051906020019080838360005b8381101562001c7357808201518184015260208101905062001c56565b50505050905090810190601f16801562001ca15780820380516001836020036101000a031916815260200191505b50945050505050604051809103906000f080151562001cbf57600080fd5b90507fe28f1412cafe58e22073759128eddcccfd9c1e3326665df874bdaf26077231a981604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1809150509392505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600062001d878383600060405180591062001d6c5750595b9080825280601f01601f191660200182016040525062001d8f565b905092915050565b60008084848462001d9f62002849565b808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001836000191660001916815260200180602001828103825283818151815260200191508051906020019080838360005b8381101562001e1e57808201518184015260208101905062001e01565b50505050905090810190601f16801562001e4c5780820380516001836020036101000a031916815260200191505b50945050505050604051809103906000f080151562001e6a57600080fd5b90507fe28f1412cafe58e22073759128eddcccfd9c1e3326665df874bdaf26077231a981604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1809150509392505050565b600062001ee662002507565b73ffffffffffffffffffffffffffffffffffffffff166304bf2a7f836000604051602001526040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b8381101562001f7857808201518184015260208101905062001f5b565b50505050905090810190601f16801562001fa65780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b151562001fc557600080fd5b6102c65a03f1151562001fd757600080fd5b505050604051805190509050919050565b60006200201b83836000604051805910620020005750595b9080825280601f01601f191660200182016040525062001be4565b905092915050565b60008060008085511115156200203857600080fd5b6200204262002667565b91506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663de2873596000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515620020d257600080fd5b6102c65a03f11515620020e457600080fd5b5050506040518051905073ffffffffffffffffffffffffffffffffffffffff1663be03847885848573ffffffffffffffffffffffffffffffffffffffff1663aa61924a6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156200217857600080fd5b6102c65a03f115156200218a57600080fd5b50505060405180519050886040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001945050505050600060405180830381600087803b15156200228857600080fd5b6102c65a03f115156200229a57600080fd5b505050606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166365b0bc85866040518082805190602001908083835b602083101515620023135780518252602082019150602081019050602083039250620022ec565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020846000604051602001526040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1515620023d757600080fd5b6102c65a03f11515620023e957600080fd5b5050506040518051905090507f526d4ccf8c3d7b6f0b6d4cc0de526d515c87d1ea3bd264ace0b5c2e70d1b2208818684604051808460001916600019168152602001806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828103825284818151815260200191508051906020019080838360005b838110156200249b5780820151818401526020810190506200247e565b50505050905090810190601f168015620024c95780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a1819250505092915050565b6000600354141515620024f557600080fd5b620024ff620026a4565b600381905550565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342c71f1d60405180807f61707000000000000000000000000000000000000000000000000000000000008152506003019050604051809103902060405180807f65766d7265672e617261676f6e706d2e657468000000000000000000000000008152506013019050604051809103902060405180836000191660001916815260200182600019166000191681526020019250505060405180910390206000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15156200264257600080fd5b6102c65a03f115156200265457600080fd5b5050506040518051905090508091505090565b60006200269f6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1662002699620026ac565b62001d54565b905090565b600043905090565b6000606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663faff50a86000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156200273d57600080fd5b6102c65a03f115156200274f57600080fd5b505050604051805190506040805190810160405280600881526020017f61706d2d7265706f0000000000000000000000000000000000000000000000008152506040518082805190602001908083835b602083101515620027c657805182526020820191506020810190506020830392506200279f565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518083600019166000191681526020018260001916600019168152602001925050506040518091039020905090565b602060405190810160405280600081525090565b604051610b2a806200285b83390190565b604051610b0980620033858339019056006060604052341561000f57600080fd5b604051610b2a380380610b2a833981016040528080519060200190919080519060200190919080518201919050508282826000836000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600181600019169055506100ab60015461023b64010000000002610655176401000000009004565b9050600082511115610173576100d38161036164010000000002610642176401000000009004565b15156100de57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff168260405180828051906020019080838360005b83811015610123578082015181840152602081019050610108565b50505050905090810190601f1680156101505780820380516001836020036101000a031916815260200191505b509150506000604051808303818561646e5a03f4915050151561017257600080fd5b5b5050505061019560015461023b64010000000002610655176401000000009004565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561023357600080fd5b505050610374565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342c71f1d60405180807f6261736500000000000000000000000000000000000000000000000000000000815250600401905060405180910390208460405180836000191660001916815260200182600019166000191681526020019250505060405180910390206000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b151561033f57600080fd5b6102c65a03f1151561035057600080fd5b505050604051805190509050919050565b600080823b905060008111915050919050565b6107a7806103836000396000f3006060604052600436106100af576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631113ed0d146100f5578063178e6079146101265780632501269914610157578063756f60491461018857806380afdea8146101b9578063a3b4b07f146101ea578063cbcc65eb1461021b578063d4aae0c41461024c578063daa3a163146102a1578063db8a61d4146102ce578063ea879634146102ff575b6100f36100ba610354565b6000368080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505061037e565b005b341561010057600080fd5b6101086103bc565b60405180826000191660001916815260200191505060405180910390f35b341561013157600080fd5b6101396103f5565b60405180826000191660001916815260200191505060405180910390f35b341561016257600080fd5b61016a61042e565b60405180826000191660001916815260200191505060405180910390f35b341561019357600080fd5b61019b6104c9565b60405180826000191660001916815260200191505060405180910390f35b34156101c457600080fd5b6101cc610502565b60405180826000191660001916815260200191505060405180910390f35b34156101f557600080fd5b6101fd610508565b60405180826000191660001916815260200191505060405180910390f35b341561022657600080fd5b61022e6105a3565b60405180826000191660001916815260200191505060405180910390f35b341561025757600080fd5b61025f6105dc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156102ac57600080fd5b6102b4610601565b604051808215151515815260200191505060405180910390f35b34156102d957600080fd5b6102e1610609565b60405180826000191660001916815260200191505060405180910390f35b341561030a57600080fd5b610312610354565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61038782610642565b151561039257600080fd5b600080825160208401856127105a03f43d604051816000823e82600081146103b8578282f35b8282fd5b60405180807f6b65726e656c2e617261676f6e706d2e657468000000000000000000000000008152506013019050604051809103902081565b60405180807f61707000000000000000000000000000000000000000000000000000000000008152506003019050604051809103902081565b60405180807f636f7265000000000000000000000000000000000000000000000000000000008152506004019050604051809103902060405180807f6b65726e656c2e617261676f6e706d2e6574680000000000000000000000000081525060130190506040518091039020604051808360001916600019168152602001826000191660001916815260200192505050604051809103902081565b60405180807f636f7265000000000000000000000000000000000000000000000000000000008152506004019050604051809103902081565b60015481565b60405180807f61707000000000000000000000000000000000000000000000000000000000008152506003019050604051809103902060405180807f61636c2e617261676f6e706d2e6574680000000000000000000000000000000081525060100190506040518091039020604051808360001916600019168152602001826000191660001916815260200192505050604051809103902081565b60405180807f61636c2e617261676f6e706d2e657468000000000000000000000000000000008152506010019050604051809103902081565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080905090565b60405180807f62617365000000000000000000000000000000000000000000000000000000008152506004019050604051809103902081565b600080823b905060008111915050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342c71f1d60405180807f6261736500000000000000000000000000000000000000000000000000000000815250600401905060405180910390208460405180836000191660001916815260200182600019166000191681526020019250505060405180910390206000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b151561075957600080fd5b6102c65a03f1151561076a57600080fd5b5050506040518051905090509190505600a165627a7a72305820b5d81f69b6750f0b2f8ca76fd9719ae3361420197c677ba94a2d64728dc49c4100296060604052341561000f57600080fd5b604051610b09380380610b09833981016040528080519060200190919080519060200190919080518201919050508282826000836000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600181600019169055506100ab60015461017f640100000000026106dd176401000000009004565b9050600082511115610173576100d3816102a564010000000002610803176401000000009004565b15156100de57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff168260405180828051906020019080838360005b83811015610123578082015181840152602081019050610108565b50505050905090810190601f1680156101505780820380516001836020036101000a031916815260200191505b509150506000604051808303818561646e5a03f4915050151561017257600080fd5b5b505050505050506102b8565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342c71f1d60405180807f6261736500000000000000000000000000000000000000000000000000000000815250600401905060405180910390208460405180836000191660001916815260200182600019166000191681526020019250505060405180910390206000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b151561028357600080fd5b6102c65a03f1151561029457600080fd5b505050604051805190509050919050565b600080823b905060008111915050919050565b610842806102c76000396000f3006060604052600436106100ba576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631113ed0d1461012c578063178e60791461015d578063250126991461018e5780633bc7ebac146101bf578063756f60491461021457806380afdea814610245578063a3b4b07f14610276578063cbcc65eb146102a7578063d4aae0c4146102d8578063daa3a1631461032d578063db8a61d41461035a578063ea8796341461038b575b60006100c46103e0565b905060008173ffffffffffffffffffffffffffffffffffffffff16141515156100ec57600080fd5b610129816000368080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050506103f2565b50005b341561013757600080fd5b61013f610430565b60405180826000191660001916815260200191505060405180910390f35b341561016857600080fd5b610170610469565b60405180826000191660001916815260200191505060405180910390f35b341561019957600080fd5b6101a16104a2565b60405180826000191660001916815260200191505060405180910390f35b34156101ca57600080fd5b6101d261053d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561021f57600080fd5b610227610563565b60405180826000191660001916815260200191505060405180910390f35b341561025057600080fd5b61025861059c565b60405180826000191660001916815260200191505060405180910390f35b341561028157600080fd5b6102896105a2565b60405180826000191660001916815260200191505060405180910390f35b34156102b257600080fd5b6102ba61063d565b60405180826000191660001916815260200191505060405180910390f35b34156102e357600080fd5b6102eb610676565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561033857600080fd5b61034061069b565b604051808215151515815260200191505060405180910390f35b341561036557600080fd5b61036d6106a4565b60405180826000191660001916815260200191505060405180910390f35b341561039657600080fd5b61039e6103e0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006103ed6001546106dd565b905090565b6103fb82610803565b151561040657600080fd5b600080825160208401856127105a03f43d604051816000823e826000811461042c578282f35b8282fd5b60405180807f6b65726e656c2e617261676f6e706d2e657468000000000000000000000000008152506013019050604051809103902081565b60405180807f61707000000000000000000000000000000000000000000000000000000000008152506003019050604051809103902081565b60405180807f636f7265000000000000000000000000000000000000000000000000000000008152506004019050604051809103902060405180807f6b65726e656c2e617261676f6e706d2e6574680000000000000000000000000081525060130190506040518091039020604051808360001916600019168152602001826000191660001916815260200192505050604051809103902081565b606460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60405180807f636f7265000000000000000000000000000000000000000000000000000000008152506004019050604051809103902081565b60015481565b60405180807f61707000000000000000000000000000000000000000000000000000000000008152506003019050604051809103902060405180807f61636c2e617261676f6e706d2e6574680000000000000000000000000000000081525060100190506040518091039020604051808360001916600019168152602001826000191660001916815260200192505050604051809103902081565b60405180807f61636c2e617261676f6e706d2e657468000000000000000000000000000000008152506010019050604051809103902081565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006001905090565b60405180807f62617365000000000000000000000000000000000000000000000000000000008152506004019050604051809103902081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342c71f1d60405180807f6261736500000000000000000000000000000000000000000000000000000000815250600401905060405180910390208460405180836000191660001916815260200182600019166000191681526020019250505060405180910390206000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15156107e157600080fd5b6102c65a03f115156107f257600080fd5b505050604051805190509050919050565b600080823b9050600081119150509190505600a165627a7a72305820ef3c6c95f97152c15964434ad01baaa1da415b559a1268635b7357c955f04b680029a165627a7a72305820bc46a8e56cf1925e1c652c90c0436b96f0ce072a9d763329a70e5c4b6d9c71c90029",
  "deployedBytecode": "0x6060604052600436106200011b576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063023d6c0314620001205780631219d5c814620001b4578063231cb6ab14620002485780632b20e39714620002dc57806332ab6af014620003345780635e1f3fa8146200048157806360b1e05714620004b557806380afdea814620004e95780638b3dd749146200051d5780639b3fdf4c1462000549578063a1658fad146200057d578063b0927de7146200061e578063c4d66de814620006dd578063d162f8b01462000719578063d4aae0c414620007e5578063e156a8f3146200083d578063ede658b014620008c6578063f92a79ff1462000992578063ff289fc51462000a32575b600080fd5b34156200012c57600080fd5b6200013662000abb565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015620001785780820151818401526020810190506200015b565b50505050905090810190601f168015620001a65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3415620001c057600080fd5b620001ca62000af4565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156200020c578082015181840152602081019050620001ef565b50505050905090810190601f1680156200023a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156200025457600080fd5b6200025e62000b2d565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015620002a057808201518184015260208101905062000283565b50505050905090810190601f168015620002ce5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3415620002e857600080fd5b620002f262000b66565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156200034057600080fd5b6200043f600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908060600190600380602002604051908101604052809291908260036020028082843782019150505050509190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505062000b8c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156200048d57600080fd5b620004976200125d565b60405180826000191660001916815260200191505060405180910390f35b3415620004c157600080fd5b620004cb62001264565b60405180826000191660001916815260200191505060405180910390f35b3415620004f557600080fd5b620004ff6200129d565b60405180826000191660001916815260200191505060405180910390f35b34156200052957600080fd5b62000533620012a3565b6040518082815260200191505060405180910390f35b34156200055557600080fd5b6200055f620012ad565b60405180826000191660001916815260200191505060405180910390f35b34156200058957600080fd5b62000604600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035600019169060200190919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190505062001348565b604051808215151515815260200191505060405180910390f35b34156200062a57600080fd5b6200069b600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505062001551565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415620006e957600080fd5b62000717600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050620015a5565b005b34156200072557600080fd5b620007a3600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356000191690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505062001be4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415620007f157600080fd5b620007fb62001d2f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156200084957600080fd5b62000884600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356000191690602001909190505062001d54565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3415620008d257600080fd5b62000950600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356000191690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505062001d8f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156200099e57600080fd5b620009f0600480803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505062001eda565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341562000a3e57600080fd5b62000a79600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356000191690602001909190505062001fe8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6040805190810160405280600881526020017f61706d2d7265706f00000000000000000000000000000000000000000000000081525081565b6040805190810160405280600c81526020017f61706d2d7265676973747279000000000000000000000000000000000000000081525081565b6040805190810160405280600a81526020017f61706d2d656e737375620000000000000000000000000000000000000000000081525081565b606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060006001800262000bc23382600060405180591062000bab5750595b908082528060200260200182016040525062001348565b151562000bce57600080fd5b62000bda893062002023565b92508273ffffffffffffffffffffffffffffffffffffffff1663730534108888886040518463ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018084600360200280838360005b8381101562000c5357808201518184015260208101905062000c36565b505050509050018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b8381101562000cca57808201518184015260208101905062000cad565b50505050905090810190601f16801562000cf85780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b151562000d1957600080fd5b6102c65a03f1151562000d2b57600080fd5b5050506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663de2873596000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b151562000dbc57600080fd5b6102c65a03f1151562000dce57600080fd5b5050506040518051905091508173ffffffffffffffffffffffffffffffffffffffff16639d0effdb30858673ffffffffffffffffffffffffffffffffffffffff1663aa61924a6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b151562000e6557600080fd5b6102c65a03f1151562000e7757600080fd5b505050604051805190506040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019350505050600060405180830381600087803b151562000f4157600080fd5b6102c65a03f1151562000f5357600080fd5b5050508173ffffffffffffffffffffffffffffffffffffffff16630a8ed3db89858673ffffffffffffffffffffffffffffffffffffffff1663aa61924a6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b151562000fe157600080fd5b6102c65a03f1151562000ff357600080fd5b505050604051805190506040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019350505050600060405180830381600087803b1515620010bd57600080fd5b6102c65a03f11515620010cf57600080fd5b5050508173ffffffffffffffffffffffffffffffffffffffff1663afd925df89858673ffffffffffffffffffffffffffffffffffffffff1663aa61924a6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156200115d57600080fd5b6102c65a03f115156200116f57600080fd5b505050604051805190506040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019350505050600060405180830381600087803b15156200123957600080fd5b6102c65a03f115156200124b57600080fd5b50505082935050505095945050505050565b6001800281565b60405180807f65766d7265672e617261676f6e706d2e657468000000000000000000000000008152506013019050604051809103902081565b60015481565b6000600354905090565b60405180807f61707000000000000000000000000000000000000000000000000000000000008152506003019050604051809103902060405180807f65766d7265672e617261676f6e706d2e6574680000000000000000000000000081525060130190506040518091039020604051808360001916600019168152602001826000191660001916815260200192505050604051809103902081565b60006200135462002824565b600080845111156200136e57602084510290508391508082525b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806200154657506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fdef9106873088866000604051602001526040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001836000191660001916815260200180602001828103825283818151815260200191508051906020019080838360005b83811015620014d9578082015181840152602081019050620014bc565b50505050905090810190601f168015620015075780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15156200152957600080fd5b6102c65a03f115156200153b57600080fd5b505050604051805190505b925050509392505050565b60006001800262001584338260006040518059106200156d5750595b908082528060200260200182016040525062001348565b15156200159057600080fd5b6200159c848462002023565b91505092915050565b600080600354141515620015b857600080fd5b620015c2620024e3565b81606560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633f15457f6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156200169257600080fd5b6102c65a03f11515620016a457600080fd5b50505060405180519050606460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663db606931306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1515620017ab57600080fd5b6102c65a03f11515620017bd57600080fd5b5050506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663de2873596000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156200184e57600080fd5b6102c65a03f115156200186057600080fd5b5050506040518051905090508073ffffffffffffffffffffffffffffffffffffffff16636d6712d830606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fef47e386000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156200193b57600080fd5b6102c65a03f115156200194d57600080fd5b505050604051805190506000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019350505050602060405180830381600087803b151562001a2057600080fd5b6102c65a03f1151562001a3257600080fd5b50505060405180519050151562001a4857600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16636d6712d830838473ffffffffffffffffffffffffffffffffffffffff16633d6ab68f6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b151562001ad357600080fd5b6102c65a03f1151562001ae557600080fd5b505050604051805190506000604051602001526040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182600019166000191681526020019350505050602060405180830381600087803b151562001bb857600080fd5b6102c65a03f1151562001bca57600080fd5b50505060405180519050151562001be057600080fd5b5050565b60008084848462001bf462002838565b808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001836000191660001916815260200180602001828103825283818151815260200191508051906020019080838360005b8381101562001c7357808201518184015260208101905062001c56565b50505050905090810190601f16801562001ca15780820380516001836020036101000a031916815260200191505b50945050505050604051809103906000f080151562001cbf57600080fd5b90507fe28f1412cafe58e22073759128eddcccfd9c1e3326665df874bdaf26077231a981604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1809150509392505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600062001d878383600060405180591062001d6c5750595b9080825280601f01601f191660200182016040525062001d8f565b905092915050565b60008084848462001d9f62002849565b808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001836000191660001916815260200180602001828103825283818151815260200191508051906020019080838360005b8381101562001e1e57808201518184015260208101905062001e01565b50505050905090810190601f16801562001e4c5780820380516001836020036101000a031916815260200191505b50945050505050604051809103906000f080151562001e6a57600080fd5b90507fe28f1412cafe58e22073759128eddcccfd9c1e3326665df874bdaf26077231a981604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1809150509392505050565b600062001ee662002507565b73ffffffffffffffffffffffffffffffffffffffff166304bf2a7f836000604051602001526040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018080602001828103825283818151815260200191508051906020019080838360005b8381101562001f7857808201518184015260208101905062001f5b565b50505050905090810190601f16801562001fa65780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b151562001fc557600080fd5b6102c65a03f1151562001fd757600080fd5b505050604051805190509050919050565b60006200201b83836000604051805910620020005750595b9080825280601f01601f191660200182016040525062001be4565b905092915050565b60008060008085511115156200203857600080fd5b6200204262002667565b91506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663de2873596000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515620020d257600080fd5b6102c65a03f11515620020e457600080fd5b5050506040518051905073ffffffffffffffffffffffffffffffffffffffff1663be03847885848573ffffffffffffffffffffffffffffffffffffffff1663aa61924a6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156200217857600080fd5b6102c65a03f115156200218a57600080fd5b50505060405180519050886040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001945050505050600060405180830381600087803b15156200228857600080fd5b6102c65a03f115156200229a57600080fd5b505050606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166365b0bc85866040518082805190602001908083835b602083101515620023135780518252602082019150602081019050602083039250620022ec565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020846000604051602001526040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b1515620023d757600080fd5b6102c65a03f11515620023e957600080fd5b5050506040518051905090507f526d4ccf8c3d7b6f0b6d4cc0de526d515c87d1ea3bd264ace0b5c2e70d1b2208818684604051808460001916600019168152602001806020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828103825284818151815260200191508051906020019080838360005b838110156200249b5780820151818401526020810190506200247e565b50505050905090810190601f168015620024c95780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a1819250505092915050565b6000600354141515620024f557600080fd5b620024ff620026a4565b600381905550565b6000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342c71f1d60405180807f61707000000000000000000000000000000000000000000000000000000000008152506003019050604051809103902060405180807f65766d7265672e617261676f6e706d2e657468000000000000000000000000008152506013019050604051809103902060405180836000191660001916815260200182600019166000191681526020019250505060405180910390206000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15156200264257600080fd5b6102c65a03f115156200265457600080fd5b5050506040518051905090508091505090565b60006200269f6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1662002699620026ac565b62001d54565b905090565b600043905090565b6000606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663faff50a86000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156200273d57600080fd5b6102c65a03f115156200274f57600080fd5b505050604051805190506040805190810160405280600881526020017f61706d2d7265706f0000000000000000000000000000000000000000000000008152506040518082805190602001908083835b602083101515620027c657805182526020820191506020810190506020830392506200279f565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206040518083600019166000191681526020018260001916600019168152602001925050506040518091039020905090565b602060405190810160405280600081525090565b604051610b2a806200285b83390190565b604051610b0980620033858339019056006060604052341561000f57600080fd5b604051610b2a380380610b2a833981016040528080519060200190919080519060200190919080518201919050508282826000836000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600181600019169055506100ab60015461023b64010000000002610655176401000000009004565b9050600082511115610173576100d38161036164010000000002610642176401000000009004565b15156100de57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff168260405180828051906020019080838360005b83811015610123578082015181840152602081019050610108565b50505050905090810190601f1680156101505780820380516001836020036101000a031916815260200191505b509150506000604051808303818561646e5a03f4915050151561017257600080fd5b5b5050505061019560015461023b64010000000002610655176401000000009004565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561023357600080fd5b505050610374565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342c71f1d60405180807f6261736500000000000000000000000000000000000000000000000000000000815250600401905060405180910390208460405180836000191660001916815260200182600019166000191681526020019250505060405180910390206000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b151561033f57600080fd5b6102c65a03f1151561035057600080fd5b505050604051805190509050919050565b600080823b905060008111915050919050565b6107a7806103836000396000f3006060604052600436106100af576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631113ed0d146100f5578063178e6079146101265780632501269914610157578063756f60491461018857806380afdea8146101b9578063a3b4b07f146101ea578063cbcc65eb1461021b578063d4aae0c41461024c578063daa3a163146102a1578063db8a61d4146102ce578063ea879634146102ff575b6100f36100ba610354565b6000368080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505061037e565b005b341561010057600080fd5b6101086103bc565b60405180826000191660001916815260200191505060405180910390f35b341561013157600080fd5b6101396103f5565b60405180826000191660001916815260200191505060405180910390f35b341561016257600080fd5b61016a61042e565b60405180826000191660001916815260200191505060405180910390f35b341561019357600080fd5b61019b6104c9565b60405180826000191660001916815260200191505060405180910390f35b34156101c457600080fd5b6101cc610502565b60405180826000191660001916815260200191505060405180910390f35b34156101f557600080fd5b6101fd610508565b60405180826000191660001916815260200191505060405180910390f35b341561022657600080fd5b61022e6105a3565b60405180826000191660001916815260200191505060405180910390f35b341561025757600080fd5b61025f6105dc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156102ac57600080fd5b6102b4610601565b604051808215151515815260200191505060405180910390f35b34156102d957600080fd5b6102e1610609565b60405180826000191660001916815260200191505060405180910390f35b341561030a57600080fd5b610312610354565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61038782610642565b151561039257600080fd5b600080825160208401856127105a03f43d604051816000823e82600081146103b8578282f35b8282fd5b60405180807f6b65726e656c2e617261676f6e706d2e657468000000000000000000000000008152506013019050604051809103902081565b60405180807f61707000000000000000000000000000000000000000000000000000000000008152506003019050604051809103902081565b60405180807f636f7265000000000000000000000000000000000000000000000000000000008152506004019050604051809103902060405180807f6b65726e656c2e617261676f6e706d2e6574680000000000000000000000000081525060130190506040518091039020604051808360001916600019168152602001826000191660001916815260200192505050604051809103902081565b60405180807f636f7265000000000000000000000000000000000000000000000000000000008152506004019050604051809103902081565b60015481565b60405180807f61707000000000000000000000000000000000000000000000000000000000008152506003019050604051809103902060405180807f61636c2e617261676f6e706d2e6574680000000000000000000000000000000081525060100190506040518091039020604051808360001916600019168152602001826000191660001916815260200192505050604051809103902081565b60405180807f61636c2e617261676f6e706d2e657468000000000000000000000000000000008152506010019050604051809103902081565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080905090565b60405180807f62617365000000000000000000000000000000000000000000000000000000008152506004019050604051809103902081565b600080823b905060008111915050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342c71f1d60405180807f6261736500000000000000000000000000000000000000000000000000000000815250600401905060405180910390208460405180836000191660001916815260200182600019166000191681526020019250505060405180910390206000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b151561075957600080fd5b6102c65a03f1151561076a57600080fd5b5050506040518051905090509190505600a165627a7a72305820b5d81f69b6750f0b2f8ca76fd9719ae3361420197c677ba94a2d64728dc49c4100296060604052341561000f57600080fd5b604051610b09380380610b09833981016040528080519060200190919080519060200190919080518201919050508282826000836000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600181600019169055506100ab60015461017f640100000000026106dd176401000000009004565b9050600082511115610173576100d3816102a564010000000002610803176401000000009004565b15156100de57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff168260405180828051906020019080838360005b83811015610123578082015181840152602081019050610108565b50505050905090810190601f1680156101505780820380516001836020036101000a031916815260200191505b509150506000604051808303818561646e5a03f4915050151561017257600080fd5b5b505050505050506102b8565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342c71f1d60405180807f6261736500000000000000000000000000000000000000000000000000000000815250600401905060405180910390208460405180836000191660001916815260200182600019166000191681526020019250505060405180910390206000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b151561028357600080fd5b6102c65a03f1151561029457600080fd5b505050604051805190509050919050565b600080823b905060008111915050919050565b610842806102c76000396000f3006060604052600436106100ba576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631113ed0d1461012c578063178e60791461015d578063250126991461018e5780633bc7ebac146101bf578063756f60491461021457806380afdea814610245578063a3b4b07f14610276578063cbcc65eb146102a7578063d4aae0c4146102d8578063daa3a1631461032d578063db8a61d41461035a578063ea8796341461038b575b60006100c46103e0565b905060008173ffffffffffffffffffffffffffffffffffffffff16141515156100ec57600080fd5b610129816000368080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050506103f2565b50005b341561013757600080fd5b61013f610430565b60405180826000191660001916815260200191505060405180910390f35b341561016857600080fd5b610170610469565b60405180826000191660001916815260200191505060405180910390f35b341561019957600080fd5b6101a16104a2565b60405180826000191660001916815260200191505060405180910390f35b34156101ca57600080fd5b6101d261053d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561021f57600080fd5b610227610563565b60405180826000191660001916815260200191505060405180910390f35b341561025057600080fd5b61025861059c565b60405180826000191660001916815260200191505060405180910390f35b341561028157600080fd5b6102896105a2565b60405180826000191660001916815260200191505060405180910390f35b34156102b257600080fd5b6102ba61063d565b60405180826000191660001916815260200191505060405180910390f35b34156102e357600080fd5b6102eb610676565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561033857600080fd5b61034061069b565b604051808215151515815260200191505060405180910390f35b341561036557600080fd5b61036d6106a4565b60405180826000191660001916815260200191505060405180910390f35b341561039657600080fd5b61039e6103e0565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006103ed6001546106dd565b905090565b6103fb82610803565b151561040657600080fd5b600080825160208401856127105a03f43d604051816000823e826000811461042c578282f35b8282fd5b60405180807f6b65726e656c2e617261676f6e706d2e657468000000000000000000000000008152506013019050604051809103902081565b60405180807f61707000000000000000000000000000000000000000000000000000000000008152506003019050604051809103902081565b60405180807f636f7265000000000000000000000000000000000000000000000000000000008152506004019050604051809103902060405180807f6b65726e656c2e617261676f6e706d2e6574680000000000000000000000000081525060130190506040518091039020604051808360001916600019168152602001826000191660001916815260200192505050604051809103902081565b606460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60405180807f636f7265000000000000000000000000000000000000000000000000000000008152506004019050604051809103902081565b60015481565b60405180807f61707000000000000000000000000000000000000000000000000000000000008152506003019050604051809103902060405180807f61636c2e617261676f6e706d2e6574680000000000000000000000000000000081525060100190506040518091039020604051808360001916600019168152602001826000191660001916815260200192505050604051809103902081565b60405180807f61636c2e617261676f6e706d2e657468000000000000000000000000000000008152506010019050604051809103902081565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006001905090565b60405180807f62617365000000000000000000000000000000000000000000000000000000008152506004019050604051809103902081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166342c71f1d60405180807f6261736500000000000000000000000000000000000000000000000000000000815250600401905060405180910390208460405180836000191660001916815260200182600019166000191681526020019250505060405180910390206000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15156107e157600080fd5b6102c65a03f115156107f257600080fd5b505050604051805190509050919050565b600080823b9050600081119150509190505600a165627a7a72305820ef3c6c95f97152c15964434ad01baaa1da415b559a1268635b7357c955f04b680029a165627a7a72305820bc46a8e56cf1925e1c652c90c0436b96f0ce072a9d763329a70e5c4b6d9c71c90029",
  "sourceMap": "530:3220:14:-;;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "530:3220:14:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;415:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;357:52:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;470:54:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;630:38:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2248:716;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;675:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;68:84:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;113:20:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;269:107:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;158:103:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;506:494:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1633:135:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;982:454;;;;;;;;;;;;;;;;;;;;;;;;;;;;796:272:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;86:21:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;176:157:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;339:281;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;824:169:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;626:164:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;415:49:14;;;;;;;;;;;;;;;;;;;;:::o;357:52::-;;;;;;;;;;;;;;;;;;;;:::o;470:54::-;;;;;;;;;;;;;;;;;;;;:::o;630:38::-;;;;;;;;;;;;;:::o;2248:716::-;2469:4;2489:9;2696:7;726:1;718:10;;306:47:20;317:10;329:5;350:1;336:16;;;;;;;;;;;;;;;;;;;;;;;;306:10;:47::i;:::-;298:56;;;;;;;;2501:21:14;2510:5;2517:4;2501:8;:21::i;:::-;2489:33;;2578:4;:15;;;2594:23;2619:16;2637:11;2578:71;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2710:6:14;;;;;;;;;;;:10;;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2696:27;;2733:3;:20;;;2754:4;2760;2766;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2733:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2803:3;:19;;;2823:4;2829;2835;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2803:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2872:3;:24;;;2897:4;2903;2909;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2872:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2953:4;2946:11;;2248:716;;;;;;;;;;:::o;675:53::-;726:1;718:10;;675:53;:::o;68:84:31:-;120:32;;;;;;;;;;;;;;;;;;;68:84;:::o;113:20:19:-;;;;:::o;269:107:25:-;324:7;350:19;;343:26;;269:107;:::o;158:103:31:-;217:16;;;;;;;;;;;;;;;;;;;120:32;;;;;;;;;;;;;;;;;;;207:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;158:103;:::o;506:494:20:-;597:4;613:16;;:::i;:::-;722:18;705:1;689:6;:13;:17;685:212;;;759:2;743:6;:13;:18;722:39;;809:6;802:13;;862:10;857:3;850:6;784:103;932:1;921:6;;;;;;;;;;;913:20;;;:80;;;;937:6;;;;;;;;;;;:20;;;958:7;975:4;982:5;989:3;937:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;913:80:20;906:87;;506:494;;;;;;;:::o;1633:135:14:-;1717:4;726:1;718:10;;306:47:20;317:10;329:5;350:1;336:16;;;;;;;;;;;;;;;;;;;;;;;;306:10;:47::i;:::-;298:56;;;;;;;;1740:21:14;1749:5;1756:4;1740:8;:21::i;:::-;1733:28;;1633:135;;;;;:::o;982:454::-;1241:7;163:1:25;140:19;;:24;132:33;;;;;;;;1062:13:14;:11;:13::i;:::-;1098:10;1086:9;;:22;;;;;;;;;;;;;;;;;;1124:9;;;;;;;;;;;:13;;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1118:3;;:21;;;;;;;;;;;;;;;;;;1150:9;;;;;;;;;;;:23;;;1174:4;1150:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1255:6;;;;;;;;;;;:10;;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1241:27;;1286:3;:17;;;1304:4;1310:9;;;;;;;;;;;1321;;;;;;;;;;;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1286:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1278:73;;;;;;;;1369:3;:17;;;1387:4;1393:3;1398;:27;;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1369:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1361:68;;;;;;;;982:454;;:::o;796:272:37:-;898:14;924:20;966:7;975:6;983:18;947:55;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;924:78:37;;1012:27;1032:5;1012:27;;;;;;;;;;;;;;;;;;;;;;1056:5;1049:12;;796:272;;;;;;:::o;86:21:19:-;;;;;;;;;;;;;:::o;176:157:37:-;246:19;284:42;296:7;305:6;323:1;313:12;;;;;;;;;;;;;;;;;;;;;;;;;;;284:11;:42::i;:::-;277:49;;176:157;;;;:::o;339:281::-;435:19;466:25;518:7;527:6;535:18;494:60;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;466:88:37;;564:27;584:5;564:27;;;;;;;;;;;;;;;;;;;;;;608:5;601:12;;339:281;;;;;;:::o;824:169:29:-;881:18;937:21;:19;:21::i;:::-;:39;;;977:7;937:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;911:75:29;;824:169;;;:::o;626:164:37:-;702:14;735:48;753:7;762:6;780:1;770:12;;;;;;;;;;;;;;;;;;;;;;;;;;;735:17;:48::i;:::-;728:55;;626:164;;;;:::o;2970:521:14:-;3034:4;3093:9;3358:12;3080:1;3064:5;3058:19;:23;3050:32;;;;;;;;3105:15;:13;:15::i;:::-;3093:27;;3135:6;;;;;;;;;;;:10;;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3131:34;;;3166:4;3172;3178;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3206:4;3131:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3373:9;;;;;;;;;;;:28;;;3412:5;3402:16;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;3420:4:14;3373:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3358:67;;3436:26;3444:4;3450:5;3457:4;3436:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3480:4:14;3473:11;;2970:521;;;;;;:::o;487:96:25:-;163:1;140:19;;:24;132:33;;;;;;;;560:16;:14;:16::i;:::-;538:19;:38;;;;487:96::o;1021:200:29:-;1075:18;1105:20;1128:6;;;;;;;;;;;:13;;;217:16:31;;;;;;;;;;;;;;;;;;;120:32;;;;;;;;;;;;;;;;;;;207:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1128:37:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1105:60;;1201:12;1175:39;;1021:200;;:::o;3497:111:14:-;3540:4;3568:32;3580:6;;;;;;;;;;;3588:11;:9;:11::i;:::-;3568;:32::i;:::-;3556:45;;3497:111;:::o;767:94:25:-;816:7;842:12;835:19;;767:94;:::o;3614:134:14:-;3658:7;3694:9;;;;;;;;;;;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3726:13;;;;;;;;;;;;;;;;;;3716:24;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;3684:57:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3677:64;;3614:134;:::o;530:3220::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o",
  "source": "pragma solidity 0.4.18;\n\nimport \"../lib/ens/AbstractENS.sol\";\nimport \"../ens/ENSSubdomainRegistrar.sol\";\nimport \"../factory/AppProxyFactory.sol\";\nimport \"../apps/AragonApp.sol\";\nimport \"../acl/ACL.sol\";\nimport \"./Repo.sol\";\n\n\ncontract APMRegistryConstants {\n    // Cant have a regular APM appId because it is used to build APM\n    // TODO: recheck this\n    string constant public APM_APP_NAME = \"apm-registry\";\n    string constant public REPO_APP_NAME = \"apm-repo\";\n    string constant public ENS_SUB_APP_NAME = \"apm-enssub\";\n}\n\n\ncontract APMRegistry is AragonApp, AppProxyFactory, APMRegistryConstants {\n    AbstractENS ens;\n    ENSSubdomainRegistrar public registrar;\n\n    bytes32 constant public CREATE_REPO_ROLE = bytes32(1);\n\n    event NewRepo(bytes32 id, string name, address repo);\n\n    /**\n    * NEEDS CREATE_NAME_ROLE and POINT_ROOTNODE_ROLE permissions on registrar\n    * @param _registrar ENSSubdomainRegistrar instance that holds registry root node ownership\n    */\n    function initialize(ENSSubdomainRegistrar _registrar) onlyInit public {\n        initialized();\n\n        registrar = _registrar;\n        ens = registrar.ens();\n\n        registrar.pointRootNode(this);\n\n        // Check APM has all permissions it needss\n        ACL acl = ACL(kernel.acl());\n        require(acl.hasPermission(this, registrar, registrar.CREATE_NAME_ROLE()));\n        require(acl.hasPermission(this, acl, acl.CREATE_PERMISSIONS_ROLE()));\n    }\n\n    /**\n    * @notice Create new repo in registry with `_name`\n    * @param _name Repo name, must be ununsed\n    * @param _dev Address that will be given permission to create versions\n    */\n    function newRepo(string _name, address _dev) auth(CREATE_REPO_ROLE) public returns (Repo) {\n        return _newRepo(_name, _dev);\n    }\n\n    /**\n    * @notice Create new repo in registry with `_name` and first repo version\n    * @param _name Repo name\n    * @param _dev Address that will be given permission to create versions\n    * @param _initialSemanticVersion Semantic version for new repo version\n    * @param _contractAddress address for smart contract logic for version (if set to 0, it uses last versions' contractAddress)\n    * @param _contentURI External URI for fetching new version's content\n    */\n    function newRepoWithVersion(\n        string _name,\n        address _dev,\n        uint16[3] _initialSemanticVersion,\n        address _contractAddress,\n        bytes _contentURI\n    ) auth(CREATE_REPO_ROLE) public returns (Repo)\n    {\n        Repo repo = _newRepo(_name, this); // need to have permissions to create version\n        repo.newVersion(_initialSemanticVersion, _contractAddress, _contentURI);\n\n        // Give permissions to _dev\n        ACL acl = ACL(kernel.acl());\n        acl.revokePermission(this, repo, repo.CREATE_VERSION_ROLE());\n        acl.grantPermission(_dev, repo, repo.CREATE_VERSION_ROLE());\n        acl.setPermissionManager(_dev, repo, repo.CREATE_VERSION_ROLE());\n        return repo;\n    }\n\n    function _newRepo(string _name, address _dev) internal returns (Repo) {\n        require(bytes(_name).length > 0);\n\n        Repo repo = newClonedRepo();\n\n        ACL(kernel.acl()).createPermission(_dev, repo, repo.CREATE_VERSION_ROLE(), _dev);\n\n        // Creates [name] subdomain in the rootNode and sets registry as resolver\n        // This will fail if repo name already exists\n        bytes32 node = registrar.createNameAndPoint(keccak256(_name), repo);\n\n        NewRepo(node, _name, repo);\n\n        return repo;\n    }\n\n    function newClonedRepo() internal returns (Repo) {\n        return Repo(newAppProxy(kernel, repoAppId()));\n    }\n\n    function repoAppId() internal view returns (bytes32) {\n        return keccak256(registrar.rootNode(), keccak256(REPO_APP_NAME));\n    }\n}\n",
  "sourcePath": "@aragon/os/contracts/apm/APMRegistry.sol",
  "ast": {
    "attributes": {
      "absolutePath": "@aragon/os/contracts/apm/APMRegistry.sol",
      "exportedSymbols": {
        "APMRegistry": [
          6279
        ],
        "APMRegistryConstants": [
          6019
        ]
      }
    },
    "children": [
      {
        "attributes": {
          "literals": [
            "solidity",
            "0.4",
            ".18"
          ]
        },
        "id": 6003,
        "name": "PragmaDirective",
        "src": "0:23:14"
      },
      {
        "attributes": {
          "SourceUnit": 10055,
          "absolutePath": "@aragon/os/contracts/lib/ens/AbstractENS.sol",
          "file": "../lib/ens/AbstractENS.sol",
          "scope": 6280,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 6004,
        "name": "ImportDirective",
        "src": "25:36:14"
      },
      {
        "attributes": {
          "SourceUnit": 7584,
          "absolutePath": "@aragon/os/contracts/ens/ENSSubdomainRegistrar.sol",
          "file": "../ens/ENSSubdomainRegistrar.sol",
          "scope": 6280,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 6005,
        "name": "ImportDirective",
        "src": "62:42:14"
      },
      {
        "attributes": {
          "SourceUnit": 9081,
          "absolutePath": "@aragon/os/contracts/factory/AppProxyFactory.sol",
          "file": "../factory/AppProxyFactory.sol",
          "scope": 6280,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 6006,
        "name": "ImportDirective",
        "src": "105:40:14"
      },
      {
        "attributes": {
          "SourceUnit": 6969,
          "absolutePath": "@aragon/os/contracts/apps/AragonApp.sol",
          "file": "../apps/AragonApp.sol",
          "scope": 6280,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 6007,
        "name": "ImportDirective",
        "src": "146:31:14"
      },
      {
        "attributes": {
          "SourceUnit": 5511,
          "absolutePath": "@aragon/os/contracts/acl/ACL.sol",
          "file": "../acl/ACL.sol",
          "scope": 6280,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 6008,
        "name": "ImportDirective",
        "src": "178:24:14"
      },
      {
        "attributes": {
          "SourceUnit": 6655,
          "absolutePath": "@aragon/os/contracts/apm/Repo.sol",
          "file": "./Repo.sol",
          "scope": 6280,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 6009,
        "name": "ImportDirective",
        "src": "203:20:14"
      },
      {
        "attributes": {
          "baseContracts": [
            null
          ],
          "contractDependencies": [
            null
          ],
          "contractKind": "contract",
          "documentation": null,
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            6019
          ],
          "name": "APMRegistryConstants",
          "scope": 6280
        },
        "children": [
          {
            "attributes": {
              "constant": true,
              "name": "APM_APP_NAME",
              "scope": 6019,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "string memory",
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "string",
                  "type": "string storage pointer"
                },
                "id": 6010,
                "name": "ElementaryTypeName",
                "src": "357:6:14"
              },
              {
                "attributes": {
                  "argumentTypes": null,
                  "hexvalue": "61706d2d7265676973747279",
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "subdenomination": null,
                  "token": "string",
                  "type": "literal_string \"apm-registry\"",
                  "value": "apm-registry"
                },
                "id": 6011,
                "name": "Literal",
                "src": "395:14:14"
              }
            ],
            "id": 6012,
            "name": "VariableDeclaration",
            "src": "357:52:14"
          },
          {
            "attributes": {
              "constant": true,
              "name": "REPO_APP_NAME",
              "scope": 6019,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "string memory",
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "string",
                  "type": "string storage pointer"
                },
                "id": 6013,
                "name": "ElementaryTypeName",
                "src": "415:6:14"
              },
              {
                "attributes": {
                  "argumentTypes": null,
                  "hexvalue": "61706d2d7265706f",
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "subdenomination": null,
                  "token": "string",
                  "type": "literal_string \"apm-repo\"",
                  "value": "apm-repo"
                },
                "id": 6014,
                "name": "Literal",
                "src": "454:10:14"
              }
            ],
            "id": 6015,
            "name": "VariableDeclaration",
            "src": "415:49:14"
          },
          {
            "attributes": {
              "constant": true,
              "name": "ENS_SUB_APP_NAME",
              "scope": 6019,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "string memory",
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "string",
                  "type": "string storage pointer"
                },
                "id": 6016,
                "name": "ElementaryTypeName",
                "src": "470:6:14"
              },
              {
                "attributes": {
                  "argumentTypes": null,
                  "hexvalue": "61706d2d656e73737562",
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "subdenomination": null,
                  "token": "string",
                  "type": "literal_string \"apm-enssub\"",
                  "value": "apm-enssub"
                },
                "id": 6017,
                "name": "Literal",
                "src": "512:12:14"
              }
            ],
            "id": 6018,
            "name": "VariableDeclaration",
            "src": "470:54:14"
          }
        ],
        "id": 6019,
        "name": "ContractDefinition",
        "src": "226:301:14"
      },
      {
        "attributes": {
          "contractDependencies": [
            5905,
            6019,
            6870,
            6968,
            7261,
            7846,
            7877,
            9080
          ],
          "contractKind": "contract",
          "documentation": null,
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            6279,
            6019,
            9080,
            6968,
            7846,
            7877,
            5905,
            7261,
            6870
          ],
          "name": "APMRegistry",
          "scope": 6280
        },
        "children": [
          {
            "attributes": {
              "arguments": [
                null
              ]
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "AragonApp",
                  "referencedDeclaration": 6968,
                  "type": "contract AragonApp"
                },
                "id": 6020,
                "name": "UserDefinedTypeName",
                "src": "554:9:14"
              }
            ],
            "id": 6021,
            "name": "InheritanceSpecifier",
            "src": "554:9:14"
          },
          {
            "attributes": {
              "arguments": [
                null
              ]
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "AppProxyFactory",
                  "referencedDeclaration": 9080,
                  "type": "contract AppProxyFactory"
                },
                "id": 6022,
                "name": "UserDefinedTypeName",
                "src": "565:15:14"
              }
            ],
            "id": 6023,
            "name": "InheritanceSpecifier",
            "src": "565:15:14"
          },
          {
            "attributes": {
              "arguments": [
                null
              ]
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "APMRegistryConstants",
                  "referencedDeclaration": 6019,
                  "type": "contract APMRegistryConstants"
                },
                "id": 6024,
                "name": "UserDefinedTypeName",
                "src": "582:20:14"
              }
            ],
            "id": 6025,
            "name": "InheritanceSpecifier",
            "src": "582:20:14"
          },
          {
            "attributes": {
              "constant": false,
              "name": "ens",
              "scope": 6279,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "contract AbstractENS",
              "value": null,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "AbstractENS",
                  "referencedDeclaration": 10054,
                  "type": "contract AbstractENS"
                },
                "id": 6026,
                "name": "UserDefinedTypeName",
                "src": "609:11:14"
              }
            ],
            "id": 6027,
            "name": "VariableDeclaration",
            "src": "609:15:14"
          },
          {
            "attributes": {
              "constant": false,
              "name": "registrar",
              "scope": 6279,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "contract ENSSubdomainRegistrar",
              "value": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "ENSSubdomainRegistrar",
                  "referencedDeclaration": 7583,
                  "type": "contract ENSSubdomainRegistrar"
                },
                "id": 6028,
                "name": "UserDefinedTypeName",
                "src": "630:21:14"
              }
            ],
            "id": 6029,
            "name": "VariableDeclaration",
            "src": "630:38:14"
          },
          {
            "attributes": {
              "constant": true,
              "name": "CREATE_REPO_ROLE",
              "scope": 6279,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "bytes32",
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "bytes32",
                  "type": "bytes32"
                },
                "id": 6030,
                "name": "ElementaryTypeName",
                "src": "675:7:14"
              },
              {
                "attributes": {
                  "argumentTypes": null,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "isStructConstructorCall": false,
                  "lValueRequested": false,
                  "names": [
                    null
                  ],
                  "type": "bytes32",
                  "type_conversion": true
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        }
                      ],
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "type": "type(bytes32)",
                      "value": "bytes32"
                    },
                    "id": 6031,
                    "name": "ElementaryTypeNameExpression",
                    "src": "718:7:14"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "hexvalue": "31",
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "subdenomination": null,
                      "token": "number",
                      "type": "int_const 1",
                      "value": "1"
                    },
                    "id": 6032,
                    "name": "Literal",
                    "src": "726:1:14"
                  }
                ],
                "id": 6033,
                "name": "FunctionCall",
                "src": "718:10:14"
              }
            ],
            "id": 6034,
            "name": "VariableDeclaration",
            "src": "675:53:14"
          },
          {
            "attributes": {
              "anonymous": false,
              "name": "NewRepo"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "id",
                      "scope": 6042,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 6035,
                        "name": "ElementaryTypeName",
                        "src": "749:7:14"
                      }
                    ],
                    "id": 6036,
                    "name": "VariableDeclaration",
                    "src": "749:10:14"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "name",
                      "scope": 6042,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "string memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "string",
                          "type": "string storage pointer"
                        },
                        "id": 6037,
                        "name": "ElementaryTypeName",
                        "src": "761:6:14"
                      }
                    ],
                    "id": 6038,
                    "name": "VariableDeclaration",
                    "src": "761:11:14"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "repo",
                      "scope": 6042,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 6039,
                        "name": "ElementaryTypeName",
                        "src": "774:7:14"
                      }
                    ],
                    "id": 6040,
                    "name": "VariableDeclaration",
                    "src": "774:12:14"
                  }
                ],
                "id": 6041,
                "name": "ParameterList",
                "src": "748:39:14"
              }
            ],
            "id": 6042,
            "name": "EventDefinition",
            "src": "735:53:14"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "initialize",
              "payable": false,
              "scope": 6279,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_registrar",
                      "scope": 6099,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract ENSSubdomainRegistrar",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "ENSSubdomainRegistrar",
                          "referencedDeclaration": 7583,
                          "type": "contract ENSSubdomainRegistrar"
                        },
                        "id": 6043,
                        "name": "UserDefinedTypeName",
                        "src": "1002:21:14"
                      }
                    ],
                    "id": 6044,
                    "name": "VariableDeclaration",
                    "src": "1002:32:14"
                  }
                ],
                "id": 6045,
                "name": "ParameterList",
                "src": "1001:34:14"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 6048,
                "name": "ParameterList",
                "src": "1052:0:14"
              },
              {
                "attributes": {
                  "arguments": [
                    null
                  ]
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 7232,
                      "type": "modifier ()",
                      "value": "onlyInit"
                    },
                    "id": 6046,
                    "name": "Identifier",
                    "src": "1036:8:14"
                  }
                ],
                "id": 6047,
                "name": "ModifierInvocation",
                "src": "1036:8:14"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 7251,
                              "type": "function ()",
                              "value": "initialized"
                            },
                            "id": 6049,
                            "name": "Identifier",
                            "src": "1062:11:14"
                          }
                        ],
                        "id": 6050,
                        "name": "FunctionCall",
                        "src": "1062:13:14"
                      }
                    ],
                    "id": 6051,
                    "name": "ExpressionStatement",
                    "src": "1062:13:14"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "contract ENSSubdomainRegistrar"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6029,
                              "type": "contract ENSSubdomainRegistrar",
                              "value": "registrar"
                            },
                            "id": 6052,
                            "name": "Identifier",
                            "src": "1086:9:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6044,
                              "type": "contract ENSSubdomainRegistrar",
                              "value": "_registrar"
                            },
                            "id": 6053,
                            "name": "Identifier",
                            "src": "1098:10:14"
                          }
                        ],
                        "id": 6054,
                        "name": "Assignment",
                        "src": "1086:22:14"
                      }
                    ],
                    "id": 6055,
                    "name": "ExpressionStatement",
                    "src": "1086:22:14"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "contract AbstractENS"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6027,
                              "type": "contract AbstractENS",
                              "value": "ens"
                            },
                            "id": 6056,
                            "name": "Identifier",
                            "src": "1118:3:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "contract AbstractENS",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "ens",
                                  "referencedDeclaration": 7318,
                                  "type": "function () view external returns (contract AbstractENS)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6029,
                                      "type": "contract ENSSubdomainRegistrar",
                                      "value": "registrar"
                                    },
                                    "id": 6057,
                                    "name": "Identifier",
                                    "src": "1124:9:14"
                                  }
                                ],
                                "id": 6058,
                                "name": "MemberAccess",
                                "src": "1124:13:14"
                              }
                            ],
                            "id": 6059,
                            "name": "FunctionCall",
                            "src": "1124:15:14"
                          }
                        ],
                        "id": 6060,
                        "name": "Assignment",
                        "src": "1118:21:14"
                      }
                    ],
                    "id": 6061,
                    "name": "ExpressionStatement",
                    "src": "1118:21:14"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_APMRegistry_$6279",
                                  "typeString": "contract APMRegistry"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "pointRootNode",
                              "referencedDeclaration": 7490,
                              "type": "function (address) external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6029,
                                  "type": "contract ENSSubdomainRegistrar",
                                  "value": "registrar"
                                },
                                "id": 6062,
                                "name": "Identifier",
                                "src": "1150:9:14"
                              }
                            ],
                            "id": 6064,
                            "name": "MemberAccess",
                            "src": "1150:23:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12657,
                              "type": "contract APMRegistry",
                              "value": "this"
                            },
                            "id": 6065,
                            "name": "Identifier",
                            "src": "1174:4:14"
                          }
                        ],
                        "id": 6066,
                        "name": "FunctionCall",
                        "src": "1150:29:14"
                      }
                    ],
                    "id": 6067,
                    "name": "ExpressionStatement",
                    "src": "1150:29:14"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        6069
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "acl",
                          "scope": 6099,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "contract ACL",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "ACL",
                              "referencedDeclaration": 5510,
                              "type": "contract ACL"
                            },
                            "id": 6068,
                            "name": "UserDefinedTypeName",
                            "src": "1241:3:14"
                          }
                        ],
                        "id": 6069,
                        "name": "VariableDeclaration",
                        "src": "1241:7:14"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "contract ACL",
                          "type_conversion": true
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IACL_$6001",
                                  "typeString": "contract IACL"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5510,
                              "type": "type(contract ACL)",
                              "value": "ACL"
                            },
                            "id": 6070,
                            "name": "Identifier",
                            "src": "1251:3:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "contract IACL",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "acl",
                                  "referencedDeclaration": 9518,
                                  "type": "function () view external returns (contract IACL)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6857,
                                      "type": "contract IKernel",
                                      "value": "kernel"
                                    },
                                    "id": 6071,
                                    "name": "Identifier",
                                    "src": "1255:6:14"
                                  }
                                ],
                                "id": 6072,
                                "name": "MemberAccess",
                                "src": "1255:10:14"
                              }
                            ],
                            "id": 6073,
                            "name": "FunctionCall",
                            "src": "1255:12:14"
                          }
                        ],
                        "id": 6074,
                        "name": "FunctionCall",
                        "src": "1251:17:14"
                      }
                    ],
                    "id": 6075,
                    "name": "VariableDeclarationStatement",
                    "src": "1241:27:14"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12593,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 6076,
                            "name": "Identifier",
                            "src": "1278:7:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_APMRegistry_$6279",
                                      "typeString": "contract APMRegistry"
                                    },
                                    {
                                      "typeIdentifier": "t_contract$_ENSSubdomainRegistrar_$7583",
                                      "typeString": "contract ENSSubdomainRegistrar"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "hasPermission",
                                  "referencedDeclaration": 4851,
                                  "type": "function (address,address,bytes32) view external returns (bool)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6069,
                                      "type": "contract ACL",
                                      "value": "acl"
                                    },
                                    "id": 6077,
                                    "name": "Identifier",
                                    "src": "1286:3:14"
                                  }
                                ],
                                "id": 6078,
                                "name": "MemberAccess",
                                "src": "1286:17:14"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12657,
                                  "type": "contract APMRegistry",
                                  "value": "this"
                                },
                                "id": 6079,
                                "name": "Identifier",
                                "src": "1304:4:14"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6029,
                                  "type": "contract ENSSubdomainRegistrar",
                                  "value": "registrar"
                                },
                                "id": 6080,
                                "name": "Identifier",
                                "src": "1310:9:14"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "bytes32",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        null
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "CREATE_NAME_ROLE",
                                      "referencedDeclaration": 7306,
                                      "type": "function () view external returns (bytes32)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 6029,
                                          "type": "contract ENSSubdomainRegistrar",
                                          "value": "registrar"
                                        },
                                        "id": 6081,
                                        "name": "Identifier",
                                        "src": "1321:9:14"
                                      }
                                    ],
                                    "id": 6082,
                                    "name": "MemberAccess",
                                    "src": "1321:26:14"
                                  }
                                ],
                                "id": 6083,
                                "name": "FunctionCall",
                                "src": "1321:28:14"
                              }
                            ],
                            "id": 6084,
                            "name": "FunctionCall",
                            "src": "1286:64:14"
                          }
                        ],
                        "id": 6085,
                        "name": "FunctionCall",
                        "src": "1278:73:14"
                      }
                    ],
                    "id": 6086,
                    "name": "ExpressionStatement",
                    "src": "1278:73:14"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12593,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 6087,
                            "name": "Identifier",
                            "src": "1361:7:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_APMRegistry_$6279",
                                      "typeString": "contract APMRegistry"
                                    },
                                    {
                                      "typeIdentifier": "t_contract$_ACL_$5510",
                                      "typeString": "contract ACL"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "hasPermission",
                                  "referencedDeclaration": 4851,
                                  "type": "function (address,address,bytes32) view external returns (bool)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6069,
                                      "type": "contract ACL",
                                      "value": "acl"
                                    },
                                    "id": 6088,
                                    "name": "Identifier",
                                    "src": "1369:3:14"
                                  }
                                ],
                                "id": 6089,
                                "name": "MemberAccess",
                                "src": "1369:17:14"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12657,
                                  "type": "contract APMRegistry",
                                  "value": "this"
                                },
                                "id": 6090,
                                "name": "Identifier",
                                "src": "1387:4:14"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6069,
                                  "type": "contract ACL",
                                  "value": "acl"
                                },
                                "id": 6091,
                                "name": "Identifier",
                                "src": "1393:3:14"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "bytes32",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        null
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "CREATE_PERMISSIONS_ROLE",
                                      "referencedDeclaration": 4425,
                                      "type": "function () view external returns (bytes32)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 6069,
                                          "type": "contract ACL",
                                          "value": "acl"
                                        },
                                        "id": 6092,
                                        "name": "Identifier",
                                        "src": "1398:3:14"
                                      }
                                    ],
                                    "id": 6093,
                                    "name": "MemberAccess",
                                    "src": "1398:27:14"
                                  }
                                ],
                                "id": 6094,
                                "name": "FunctionCall",
                                "src": "1398:29:14"
                              }
                            ],
                            "id": 6095,
                            "name": "FunctionCall",
                            "src": "1369:59:14"
                          }
                        ],
                        "id": 6096,
                        "name": "FunctionCall",
                        "src": "1361:68:14"
                      }
                    ],
                    "id": 6097,
                    "name": "ExpressionStatement",
                    "src": "1361:68:14"
                  }
                ],
                "id": 6098,
                "name": "Block",
                "src": "1052:384:14"
              }
            ],
            "id": 6099,
            "name": "FunctionDefinition",
            "src": "982:454:14"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "newRepo",
              "payable": false,
              "scope": 6279,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_name",
                      "scope": 6117,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "string memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "string",
                          "type": "string storage pointer"
                        },
                        "id": 6100,
                        "name": "ElementaryTypeName",
                        "src": "1650:6:14"
                      }
                    ],
                    "id": 6101,
                    "name": "VariableDeclaration",
                    "src": "1650:12:14"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_dev",
                      "scope": 6117,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 6102,
                        "name": "ElementaryTypeName",
                        "src": "1664:7:14"
                      }
                    ],
                    "id": 6103,
                    "name": "VariableDeclaration",
                    "src": "1664:12:14"
                  }
                ],
                "id": 6104,
                "name": "ParameterList",
                "src": "1649:28:14"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 6117,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract Repo",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "Repo",
                          "referencedDeclaration": 6654,
                          "type": "contract Repo"
                        },
                        "id": 6108,
                        "name": "UserDefinedTypeName",
                        "src": "1717:4:14"
                      }
                    ],
                    "id": 6109,
                    "name": "VariableDeclaration",
                    "src": "1717:4:14"
                  }
                ],
                "id": 6110,
                "name": "ParameterList",
                "src": "1716:6:14"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 6903,
                      "type": "modifier (bytes32)",
                      "value": "auth"
                    },
                    "id": 6105,
                    "name": "Identifier",
                    "src": "1678:4:14"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 6034,
                      "type": "bytes32",
                      "value": "CREATE_REPO_ROLE"
                    },
                    "id": 6106,
                    "name": "Identifier",
                    "src": "1683:16:14"
                  }
                ],
                "id": 6107,
                "name": "ModifierInvocation",
                "src": "1678:22:14"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 6110
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "contract Repo",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6249,
                              "type": "function (string memory,address) returns (contract Repo)",
                              "value": "_newRepo"
                            },
                            "id": 6111,
                            "name": "Identifier",
                            "src": "1740:8:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6101,
                              "type": "string memory",
                              "value": "_name"
                            },
                            "id": 6112,
                            "name": "Identifier",
                            "src": "1749:5:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6103,
                              "type": "address",
                              "value": "_dev"
                            },
                            "id": 6113,
                            "name": "Identifier",
                            "src": "1756:4:14"
                          }
                        ],
                        "id": 6114,
                        "name": "FunctionCall",
                        "src": "1740:21:14"
                      }
                    ],
                    "id": 6115,
                    "name": "Return",
                    "src": "1733:28:14"
                  }
                ],
                "id": 6116,
                "name": "Block",
                "src": "1723:45:14"
              }
            ],
            "id": 6117,
            "name": "FunctionDefinition",
            "src": "1633:135:14"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "newRepoWithVersion",
              "payable": false,
              "scope": 6279,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_name",
                      "scope": 6193,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "string memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "string",
                          "type": "string storage pointer"
                        },
                        "id": 6118,
                        "name": "ElementaryTypeName",
                        "src": "2285:6:14"
                      }
                    ],
                    "id": 6119,
                    "name": "VariableDeclaration",
                    "src": "2285:12:14"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_dev",
                      "scope": 6193,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 6120,
                        "name": "ElementaryTypeName",
                        "src": "2307:7:14"
                      }
                    ],
                    "id": 6121,
                    "name": "VariableDeclaration",
                    "src": "2307:12:14"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_initialSemanticVersion",
                      "scope": 6193,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint16[3] memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "type": "uint16[3] storage pointer"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint16",
                              "type": "uint16"
                            },
                            "id": 6122,
                            "name": "ElementaryTypeName",
                            "src": "2329:6:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "33",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 3",
                              "value": "3"
                            },
                            "id": 6123,
                            "name": "Literal",
                            "src": "2336:1:14"
                          }
                        ],
                        "id": 6124,
                        "name": "ArrayTypeName",
                        "src": "2329:9:14"
                      }
                    ],
                    "id": 6125,
                    "name": "VariableDeclaration",
                    "src": "2329:33:14"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_contractAddress",
                      "scope": 6193,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 6126,
                        "name": "ElementaryTypeName",
                        "src": "2372:7:14"
                      }
                    ],
                    "id": 6127,
                    "name": "VariableDeclaration",
                    "src": "2372:24:14"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_contentURI",
                      "scope": 6193,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes storage pointer"
                        },
                        "id": 6128,
                        "name": "ElementaryTypeName",
                        "src": "2406:5:14"
                      }
                    ],
                    "id": 6129,
                    "name": "VariableDeclaration",
                    "src": "2406:17:14"
                  }
                ],
                "id": 6130,
                "name": "ParameterList",
                "src": "2275:154:14"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 6193,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract Repo",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "Repo",
                          "referencedDeclaration": 6654,
                          "type": "contract Repo"
                        },
                        "id": 6134,
                        "name": "UserDefinedTypeName",
                        "src": "2469:4:14"
                      }
                    ],
                    "id": 6135,
                    "name": "VariableDeclaration",
                    "src": "2469:4:14"
                  }
                ],
                "id": 6136,
                "name": "ParameterList",
                "src": "2468:6:14"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 6903,
                      "type": "modifier (bytes32)",
                      "value": "auth"
                    },
                    "id": 6131,
                    "name": "Identifier",
                    "src": "2430:4:14"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 6034,
                      "type": "bytes32",
                      "value": "CREATE_REPO_ROLE"
                    },
                    "id": 6132,
                    "name": "Identifier",
                    "src": "2435:16:14"
                  }
                ],
                "id": 6133,
                "name": "ModifierInvocation",
                "src": "2430:22:14"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        6138
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "repo",
                          "scope": 6193,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "contract Repo",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "Repo",
                              "referencedDeclaration": 6654,
                              "type": "contract Repo"
                            },
                            "id": 6137,
                            "name": "UserDefinedTypeName",
                            "src": "2489:4:14"
                          }
                        ],
                        "id": 6138,
                        "name": "VariableDeclaration",
                        "src": "2489:9:14"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "contract Repo",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                },
                                {
                                  "typeIdentifier": "t_contract$_APMRegistry_$6279",
                                  "typeString": "contract APMRegistry"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6249,
                              "type": "function (string memory,address) returns (contract Repo)",
                              "value": "_newRepo"
                            },
                            "id": 6139,
                            "name": "Identifier",
                            "src": "2501:8:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6119,
                              "type": "string memory",
                              "value": "_name"
                            },
                            "id": 6140,
                            "name": "Identifier",
                            "src": "2510:5:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12657,
                              "type": "contract APMRegistry",
                              "value": "this"
                            },
                            "id": 6141,
                            "name": "Identifier",
                            "src": "2517:4:14"
                          }
                        ],
                        "id": 6142,
                        "name": "FunctionCall",
                        "src": "2501:21:14"
                      }
                    ],
                    "id": 6143,
                    "name": "VariableDeclarationStatement",
                    "src": "2489:33:14"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_array$_t_uint16_$3_memory_ptr",
                                  "typeString": "uint16[3] memory"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "newVersion",
                              "referencedDeclaration": 6437,
                              "type": "function (uint16[3] memory,address,bytes memory) external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6138,
                                  "type": "contract Repo",
                                  "value": "repo"
                                },
                                "id": 6144,
                                "name": "Identifier",
                                "src": "2578:4:14"
                              }
                            ],
                            "id": 6146,
                            "name": "MemberAccess",
                            "src": "2578:15:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6125,
                              "type": "uint16[3] memory",
                              "value": "_initialSemanticVersion"
                            },
                            "id": 6147,
                            "name": "Identifier",
                            "src": "2594:23:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6127,
                              "type": "address",
                              "value": "_contractAddress"
                            },
                            "id": 6148,
                            "name": "Identifier",
                            "src": "2619:16:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6129,
                              "type": "bytes memory",
                              "value": "_contentURI"
                            },
                            "id": 6149,
                            "name": "Identifier",
                            "src": "2637:11:14"
                          }
                        ],
                        "id": 6150,
                        "name": "FunctionCall",
                        "src": "2578:71:14"
                      }
                    ],
                    "id": 6151,
                    "name": "ExpressionStatement",
                    "src": "2578:71:14"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        6153
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "acl",
                          "scope": 6193,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "contract ACL",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "ACL",
                              "referencedDeclaration": 5510,
                              "type": "contract ACL"
                            },
                            "id": 6152,
                            "name": "UserDefinedTypeName",
                            "src": "2696:3:14"
                          }
                        ],
                        "id": 6153,
                        "name": "VariableDeclaration",
                        "src": "2696:7:14"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "contract ACL",
                          "type_conversion": true
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_IACL_$6001",
                                  "typeString": "contract IACL"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5510,
                              "type": "type(contract ACL)",
                              "value": "ACL"
                            },
                            "id": 6154,
                            "name": "Identifier",
                            "src": "2706:3:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "contract IACL",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "acl",
                                  "referencedDeclaration": 9518,
                                  "type": "function () view external returns (contract IACL)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6857,
                                      "type": "contract IKernel",
                                      "value": "kernel"
                                    },
                                    "id": 6155,
                                    "name": "Identifier",
                                    "src": "2710:6:14"
                                  }
                                ],
                                "id": 6156,
                                "name": "MemberAccess",
                                "src": "2710:10:14"
                              }
                            ],
                            "id": 6157,
                            "name": "FunctionCall",
                            "src": "2710:12:14"
                          }
                        ],
                        "id": 6158,
                        "name": "FunctionCall",
                        "src": "2706:17:14"
                      }
                    ],
                    "id": 6159,
                    "name": "VariableDeclarationStatement",
                    "src": "2696:27:14"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_APMRegistry_$6279",
                                  "typeString": "contract APMRegistry"
                                },
                                {
                                  "typeIdentifier": "t_contract$_Repo_$6654",
                                  "typeString": "contract Repo"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "revokePermission",
                              "referencedDeclaration": 4680,
                              "type": "function (address,address,bytes32) external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6153,
                                  "type": "contract ACL",
                                  "value": "acl"
                                },
                                "id": 6160,
                                "name": "Identifier",
                                "src": "2733:3:14"
                              }
                            ],
                            "id": 6162,
                            "name": "MemberAccess",
                            "src": "2733:20:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12657,
                              "type": "contract APMRegistry",
                              "value": "this"
                            },
                            "id": 6163,
                            "name": "Identifier",
                            "src": "2754:4:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6138,
                              "type": "contract Repo",
                              "value": "repo"
                            },
                            "id": 6164,
                            "name": "Identifier",
                            "src": "2760:4:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bytes32",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "CREATE_VERSION_ROLE",
                                  "referencedDeclaration": 6309,
                                  "type": "function () view external returns (bytes32)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6138,
                                      "type": "contract Repo",
                                      "value": "repo"
                                    },
                                    "id": 6165,
                                    "name": "Identifier",
                                    "src": "2766:4:14"
                                  }
                                ],
                                "id": 6166,
                                "name": "MemberAccess",
                                "src": "2766:24:14"
                              }
                            ],
                            "id": 6167,
                            "name": "FunctionCall",
                            "src": "2766:26:14"
                          }
                        ],
                        "id": 6168,
                        "name": "FunctionCall",
                        "src": "2733:60:14"
                      }
                    ],
                    "id": 6169,
                    "name": "ExpressionStatement",
                    "src": "2733:60:14"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_contract$_Repo_$6654",
                                  "typeString": "contract Repo"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "grantPermission",
                              "referencedDeclaration": 4604,
                              "type": "function (address,address,bytes32) external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6153,
                                  "type": "contract ACL",
                                  "value": "acl"
                                },
                                "id": 6170,
                                "name": "Identifier",
                                "src": "2803:3:14"
                              }
                            ],
                            "id": 6172,
                            "name": "MemberAccess",
                            "src": "2803:19:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6121,
                              "type": "address",
                              "value": "_dev"
                            },
                            "id": 6173,
                            "name": "Identifier",
                            "src": "2823:4:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6138,
                              "type": "contract Repo",
                              "value": "repo"
                            },
                            "id": 6174,
                            "name": "Identifier",
                            "src": "2829:4:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bytes32",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "CREATE_VERSION_ROLE",
                                  "referencedDeclaration": 6309,
                                  "type": "function () view external returns (bytes32)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6138,
                                      "type": "contract Repo",
                                      "value": "repo"
                                    },
                                    "id": 6175,
                                    "name": "Identifier",
                                    "src": "2835:4:14"
                                  }
                                ],
                                "id": 6176,
                                "name": "MemberAccess",
                                "src": "2835:24:14"
                              }
                            ],
                            "id": 6177,
                            "name": "FunctionCall",
                            "src": "2835:26:14"
                          }
                        ],
                        "id": 6178,
                        "name": "FunctionCall",
                        "src": "2803:59:14"
                      }
                    ],
                    "id": 6179,
                    "name": "ExpressionStatement",
                    "src": "2803:59:14"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_contract$_Repo_$6654",
                                  "typeString": "contract Repo"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "setPermissionManager",
                              "referencedDeclaration": 4700,
                              "type": "function (address,address,bytes32) external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6153,
                                  "type": "contract ACL",
                                  "value": "acl"
                                },
                                "id": 6180,
                                "name": "Identifier",
                                "src": "2872:3:14"
                              }
                            ],
                            "id": 6182,
                            "name": "MemberAccess",
                            "src": "2872:24:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6121,
                              "type": "address",
                              "value": "_dev"
                            },
                            "id": 6183,
                            "name": "Identifier",
                            "src": "2897:4:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6138,
                              "type": "contract Repo",
                              "value": "repo"
                            },
                            "id": 6184,
                            "name": "Identifier",
                            "src": "2903:4:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bytes32",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "CREATE_VERSION_ROLE",
                                  "referencedDeclaration": 6309,
                                  "type": "function () view external returns (bytes32)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6138,
                                      "type": "contract Repo",
                                      "value": "repo"
                                    },
                                    "id": 6185,
                                    "name": "Identifier",
                                    "src": "2909:4:14"
                                  }
                                ],
                                "id": 6186,
                                "name": "MemberAccess",
                                "src": "2909:24:14"
                              }
                            ],
                            "id": 6187,
                            "name": "FunctionCall",
                            "src": "2909:26:14"
                          }
                        ],
                        "id": 6188,
                        "name": "FunctionCall",
                        "src": "2872:64:14"
                      }
                    ],
                    "id": 6189,
                    "name": "ExpressionStatement",
                    "src": "2872:64:14"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 6136
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 6138,
                          "type": "contract Repo",
                          "value": "repo"
                        },
                        "id": 6190,
                        "name": "Identifier",
                        "src": "2953:4:14"
                      }
                    ],
                    "id": 6191,
                    "name": "Return",
                    "src": "2946:11:14"
                  }
                ],
                "id": 6192,
                "name": "Block",
                "src": "2479:485:14"
              }
            ],
            "id": 6193,
            "name": "FunctionDefinition",
            "src": "2248:716:14"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "_newRepo",
              "payable": false,
              "scope": 6279,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_name",
                      "scope": 6249,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "string memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "string",
                          "type": "string storage pointer"
                        },
                        "id": 6194,
                        "name": "ElementaryTypeName",
                        "src": "2988:6:14"
                      }
                    ],
                    "id": 6195,
                    "name": "VariableDeclaration",
                    "src": "2988:12:14"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_dev",
                      "scope": 6249,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 6196,
                        "name": "ElementaryTypeName",
                        "src": "3002:7:14"
                      }
                    ],
                    "id": 6197,
                    "name": "VariableDeclaration",
                    "src": "3002:12:14"
                  }
                ],
                "id": 6198,
                "name": "ParameterList",
                "src": "2987:28:14"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 6249,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract Repo",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "Repo",
                          "referencedDeclaration": 6654,
                          "type": "contract Repo"
                        },
                        "id": 6199,
                        "name": "UserDefinedTypeName",
                        "src": "3034:4:14"
                      }
                    ],
                    "id": 6200,
                    "name": "VariableDeclaration",
                    "src": "3034:4:14"
                  }
                ],
                "id": 6201,
                "name": "ParameterList",
                "src": "3033:6:14"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12593,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 6202,
                            "name": "Identifier",
                            "src": "3050:7:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": ">",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "length",
                                  "referencedDeclaration": null,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "bytes memory",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_string_memory_ptr",
                                              "typeString": "string memory"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "type": "type(bytes storage pointer)",
                                          "value": "bytes"
                                        },
                                        "id": 6203,
                                        "name": "ElementaryTypeNameExpression",
                                        "src": "3058:5:14"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 6195,
                                          "type": "string memory",
                                          "value": "_name"
                                        },
                                        "id": 6204,
                                        "name": "Identifier",
                                        "src": "3064:5:14"
                                      }
                                    ],
                                    "id": 6205,
                                    "name": "FunctionCall",
                                    "src": "3058:12:14"
                                  }
                                ],
                                "id": 6206,
                                "name": "MemberAccess",
                                "src": "3058:19:14"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 6207,
                                "name": "Literal",
                                "src": "3080:1:14"
                              }
                            ],
                            "id": 6208,
                            "name": "BinaryOperation",
                            "src": "3058:23:14"
                          }
                        ],
                        "id": 6209,
                        "name": "FunctionCall",
                        "src": "3050:32:14"
                      }
                    ],
                    "id": 6210,
                    "name": "ExpressionStatement",
                    "src": "3050:32:14"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        6212
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "repo",
                          "scope": 6249,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "contract Repo",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "Repo",
                              "referencedDeclaration": 6654,
                              "type": "contract Repo"
                            },
                            "id": 6211,
                            "name": "UserDefinedTypeName",
                            "src": "3093:4:14"
                          }
                        ],
                        "id": 6212,
                        "name": "VariableDeclaration",
                        "src": "3093:9:14"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "contract Repo",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6263,
                              "type": "function () returns (contract Repo)",
                              "value": "newClonedRepo"
                            },
                            "id": 6213,
                            "name": "Identifier",
                            "src": "3105:13:14"
                          }
                        ],
                        "id": 6214,
                        "name": "FunctionCall",
                        "src": "3105:15:14"
                      }
                    ],
                    "id": 6215,
                    "name": "VariableDeclarationStatement",
                    "src": "3093:27:14"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_contract$_Repo_$6654",
                                  "typeString": "contract Repo"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "createPermission",
                              "referencedDeclaration": 4583,
                              "type": "function (address,address,bytes32,address) external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "contract ACL",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_IACL_$6001",
                                          "typeString": "contract IACL"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 5510,
                                      "type": "type(contract ACL)",
                                      "value": "ACL"
                                    },
                                    "id": 6216,
                                    "name": "Identifier",
                                    "src": "3131:3:14"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        null
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "contract IACL",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            null
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "acl",
                                          "referencedDeclaration": 9518,
                                          "type": "function () view external returns (contract IACL)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 6857,
                                              "type": "contract IKernel",
                                              "value": "kernel"
                                            },
                                            "id": 6217,
                                            "name": "Identifier",
                                            "src": "3135:6:14"
                                          }
                                        ],
                                        "id": 6218,
                                        "name": "MemberAccess",
                                        "src": "3135:10:14"
                                      }
                                    ],
                                    "id": 6219,
                                    "name": "FunctionCall",
                                    "src": "3135:12:14"
                                  }
                                ],
                                "id": 6220,
                                "name": "FunctionCall",
                                "src": "3131:17:14"
                              }
                            ],
                            "id": 6221,
                            "name": "MemberAccess",
                            "src": "3131:34:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6197,
                              "type": "address",
                              "value": "_dev"
                            },
                            "id": 6222,
                            "name": "Identifier",
                            "src": "3166:4:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6212,
                              "type": "contract Repo",
                              "value": "repo"
                            },
                            "id": 6223,
                            "name": "Identifier",
                            "src": "3172:4:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bytes32",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "CREATE_VERSION_ROLE",
                                  "referencedDeclaration": 6309,
                                  "type": "function () view external returns (bytes32)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6212,
                                      "type": "contract Repo",
                                      "value": "repo"
                                    },
                                    "id": 6224,
                                    "name": "Identifier",
                                    "src": "3178:4:14"
                                  }
                                ],
                                "id": 6225,
                                "name": "MemberAccess",
                                "src": "3178:24:14"
                              }
                            ],
                            "id": 6226,
                            "name": "FunctionCall",
                            "src": "3178:26:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6197,
                              "type": "address",
                              "value": "_dev"
                            },
                            "id": 6227,
                            "name": "Identifier",
                            "src": "3206:4:14"
                          }
                        ],
                        "id": 6228,
                        "name": "FunctionCall",
                        "src": "3131:80:14"
                      }
                    ],
                    "id": 6229,
                    "name": "ExpressionStatement",
                    "src": "3131:80:14"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        6231
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "node",
                          "scope": 6249,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "bytes32",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes32",
                              "type": "bytes32"
                            },
                            "id": 6230,
                            "name": "ElementaryTypeName",
                            "src": "3358:7:14"
                          }
                        ],
                        "id": 6231,
                        "name": "VariableDeclaration",
                        "src": "3358:12:14"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes32",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_contract$_Repo_$6654",
                                  "typeString": "contract Repo"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "createNameAndPoint",
                              "referencedDeclaration": 7407,
                              "type": "function (bytes32,address) external returns (bytes32)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6029,
                                  "type": "contract ENSSubdomainRegistrar",
                                  "value": "registrar"
                                },
                                "id": 6232,
                                "name": "Identifier",
                                "src": "3373:9:14"
                              }
                            ],
                            "id": 6233,
                            "name": "MemberAccess",
                            "src": "3373:28:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bytes32",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12584,
                                  "type": "function () pure returns (bytes32)",
                                  "value": "keccak256"
                                },
                                "id": 6234,
                                "name": "Identifier",
                                "src": "3402:9:14"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6195,
                                  "type": "string memory",
                                  "value": "_name"
                                },
                                "id": 6235,
                                "name": "Identifier",
                                "src": "3412:5:14"
                              }
                            ],
                            "id": 6236,
                            "name": "FunctionCall",
                            "src": "3402:16:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6212,
                              "type": "contract Repo",
                              "value": "repo"
                            },
                            "id": 6237,
                            "name": "Identifier",
                            "src": "3420:4:14"
                          }
                        ],
                        "id": 6238,
                        "name": "FunctionCall",
                        "src": "3373:52:14"
                      }
                    ],
                    "id": 6239,
                    "name": "VariableDeclarationStatement",
                    "src": "3358:67:14"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                },
                                {
                                  "typeIdentifier": "t_contract$_Repo_$6654",
                                  "typeString": "contract Repo"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6042,
                              "type": "function (bytes32,string memory,address)",
                              "value": "NewRepo"
                            },
                            "id": 6240,
                            "name": "Identifier",
                            "src": "3436:7:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6231,
                              "type": "bytes32",
                              "value": "node"
                            },
                            "id": 6241,
                            "name": "Identifier",
                            "src": "3444:4:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6195,
                              "type": "string memory",
                              "value": "_name"
                            },
                            "id": 6242,
                            "name": "Identifier",
                            "src": "3450:5:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6212,
                              "type": "contract Repo",
                              "value": "repo"
                            },
                            "id": 6243,
                            "name": "Identifier",
                            "src": "3457:4:14"
                          }
                        ],
                        "id": 6244,
                        "name": "FunctionCall",
                        "src": "3436:26:14"
                      }
                    ],
                    "id": 6245,
                    "name": "ExpressionStatement",
                    "src": "3436:26:14"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 6201
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 6212,
                          "type": "contract Repo",
                          "value": "repo"
                        },
                        "id": 6246,
                        "name": "Identifier",
                        "src": "3480:4:14"
                      }
                    ],
                    "id": 6247,
                    "name": "Return",
                    "src": "3473:11:14"
                  }
                ],
                "id": 6248,
                "name": "Block",
                "src": "3040:451:14"
              }
            ],
            "id": 6249,
            "name": "FunctionDefinition",
            "src": "2970:521:14"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "newClonedRepo",
              "payable": false,
              "scope": 6279,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 6250,
                "name": "ParameterList",
                "src": "3519:2:14"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 6263,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract Repo",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "Repo",
                          "referencedDeclaration": 6654,
                          "type": "contract Repo"
                        },
                        "id": 6251,
                        "name": "UserDefinedTypeName",
                        "src": "3540:4:14"
                      }
                    ],
                    "id": 6252,
                    "name": "VariableDeclaration",
                    "src": "3540:4:14"
                  }
                ],
                "id": 6253,
                "name": "ParameterList",
                "src": "3539:6:14"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 6253
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "contract Repo",
                          "type_conversion": true
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_AppProxyUpgradeable_$6852",
                                  "typeString": "contract AppProxyUpgradeable"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6654,
                              "type": "type(contract Repo)",
                              "value": "Repo"
                            },
                            "id": 6254,
                            "name": "Identifier",
                            "src": "3563:4:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "contract AppProxyUpgradeable",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_IKernel_$9550",
                                      "typeString": "contract IKernel"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    9002,
                                    9031
                                  ],
                                  "referencedDeclaration": 9002,
                                  "type": "function (contract IKernel,bytes32) returns (contract AppProxyUpgradeable)",
                                  "value": "newAppProxy"
                                },
                                "id": 6255,
                                "name": "Identifier",
                                "src": "3568:11:14"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6857,
                                  "type": "contract IKernel",
                                  "value": "kernel"
                                },
                                "id": 6256,
                                "name": "Identifier",
                                "src": "3580:6:14"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "bytes32",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        null
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6278,
                                      "type": "function () view returns (bytes32)",
                                      "value": "repoAppId"
                                    },
                                    "id": 6257,
                                    "name": "Identifier",
                                    "src": "3588:9:14"
                                  }
                                ],
                                "id": 6258,
                                "name": "FunctionCall",
                                "src": "3588:11:14"
                              }
                            ],
                            "id": 6259,
                            "name": "FunctionCall",
                            "src": "3568:32:14"
                          }
                        ],
                        "id": 6260,
                        "name": "FunctionCall",
                        "src": "3563:38:14"
                      }
                    ],
                    "id": 6261,
                    "name": "Return",
                    "src": "3556:45:14"
                  }
                ],
                "id": 6262,
                "name": "Block",
                "src": "3546:62:14"
              }
            ],
            "id": 6263,
            "name": "FunctionDefinition",
            "src": "3497:111:14"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "repoAppId",
              "payable": false,
              "scope": 6279,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 6264,
                "name": "ParameterList",
                "src": "3632:2:14"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 6278,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 6265,
                        "name": "ElementaryTypeName",
                        "src": "3658:7:14"
                      }
                    ],
                    "id": 6266,
                    "name": "VariableDeclaration",
                    "src": "3658:7:14"
                  }
                ],
                "id": 6267,
                "name": "ParameterList",
                "src": "3657:9:14"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 6267
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes32",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 12584,
                              "type": "function () pure returns (bytes32)",
                              "value": "keccak256"
                            },
                            "id": 6268,
                            "name": "Identifier",
                            "src": "3684:9:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bytes32",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "rootNode",
                                  "referencedDeclaration": 7320,
                                  "type": "function () view external returns (bytes32)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6029,
                                      "type": "contract ENSSubdomainRegistrar",
                                      "value": "registrar"
                                    },
                                    "id": 6269,
                                    "name": "Identifier",
                                    "src": "3694:9:14"
                                  }
                                ],
                                "id": 6270,
                                "name": "MemberAccess",
                                "src": "3694:18:14"
                              }
                            ],
                            "id": 6271,
                            "name": "FunctionCall",
                            "src": "3694:20:14"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bytes32",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 12584,
                                  "type": "function () pure returns (bytes32)",
                                  "value": "keccak256"
                                },
                                "id": 6272,
                                "name": "Identifier",
                                "src": "3716:9:14"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6015,
                                  "type": "string memory",
                                  "value": "REPO_APP_NAME"
                                },
                                "id": 6273,
                                "name": "Identifier",
                                "src": "3726:13:14"
                              }
                            ],
                            "id": 6274,
                            "name": "FunctionCall",
                            "src": "3716:24:14"
                          }
                        ],
                        "id": 6275,
                        "name": "FunctionCall",
                        "src": "3684:57:14"
                      }
                    ],
                    "id": 6276,
                    "name": "Return",
                    "src": "3677:64:14"
                  }
                ],
                "id": 6277,
                "name": "Block",
                "src": "3667:81:14"
              }
            ],
            "id": 6278,
            "name": "FunctionDefinition",
            "src": "3614:134:14"
          }
        ],
        "id": 6279,
        "name": "ContractDefinition",
        "src": "530:3220:14"
      }
    ],
    "id": 6280,
    "name": "SourceUnit",
    "src": "0:3751:14"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.18+commit.9cf6e910.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "1.0.1",
  "updatedAt": "2018-03-14T08:41:25.086Z"
}