시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초 128 MB31133.333%

문제

얼마전 남극 연구 탐사진들은 새로운 종을 발견하였다. 연구진은 테스트를 하기 위해 샘플을 하나 추출해 연구실로 보냈다.

이번에 발견된 새로운 종은 짧은 주기를 갖고 번식한다. 번식할 때 부모는 하나만 있으면 된다. 한 부모는 두 번 번식할 수 있으며, 그 이후에는 더 이상 번식할 수 없다.

따라서, 연구실에 있는 표본의 수는 급속도로 늘어났고, 가계도가 필요한 시점이 되었다.

연구진은 간단한 텍스트 에디터를 이용해 가계도를 그리려고 한다. 가계도는 다음과 같은 규칙을 지켜야 한다.

표번의 이름은 '-', '|', 'o'로 이루어진 박스로 둘러쌓여져 있어야 한다. 윗 변과 아랫 변의 중앙에는 '+' 마크가 있어야 한다. 변의 길이가 짝수인 경우에는 두 중앙 중 왼쪽 중앙에 '+'를 표시한다.

o--+--o
|anton|
o--+--o
o----+----o
|anamarija|
o----+----o
o-+--o
|pero|
o-+--o

박스를 링크를 이용해 연결해야 한다. 한 링크는 두 개 또는 그 이상의 박스를 연결할 수 있으며, '+'와 연결되어 있어야 한다. 부모 박스가 위에, 자식 박스가 아래에 있어야 한다. 박스와 링크는 겹칠 수 없다.

+
|
o
|
+
    +    
    |    
o---o---o
|       |
+       +
      +      
      |      
o-----o-----o
|           |
+           +

자식의 수가 1개인 경우에는 가장 왼쪽 그림에 나와있는 링크를 사용한다. 둘 이상의 자식을 가지는 경우에는 중간에 갈라진 링크를 사용해야 하며, 왼쪽에는 나이가 많은 자식, 오른쪽에는 적은 자식이 있어야 한다.

링크는 수평방향으로 늘어날 수 있으며, 좌우의 '-'의 개수는 같아야 한다. 링크는 수직방향으로 늘어날 수는 없다.

각 표본의 정보가 주어졌을 때, 가계도를 그리는데 필요한 문자의 개수를 구하는 프로그램을 작성하시오. 단, 공백의 개수는 세지 않으며, '-', '|', '+', 'o', 이름만 센다.

입력

첫째 줄에 실험실에 있는 표본의 수 N (1 ≤ N ≤ 300,000)이 주어진다. 각 표본은 1번부터 N번까지 태어난 순서대로 번호가 매겨져 있다. 즉, 가장 나이가 많은 표본은 1, 어린 표본은 N이다.

다음 N개 줄에는 각 표본의 이름과 부모의 번호가 주어진다. (첫 번째 표본의 부모는 알 수 없다) 이름은 알파벳 소문자로만 이루어진 문자열로 길이는 20을 넘지 않는다.

출력

첫째 줄에 가계도를 그리는데 필요한 글자의 수를 출력한다.

예제 입력 1

3
adam
kain 1
abel 1

예제 출력 1

64
   o-+--o   
   |adam|   
   o-+--o   
     |      
  o--o--o   
  |     |   
o-+--oo-+--o
|kain||abel|
o-+--oo-+--o

예제 입력 2

12
anton
ana 1
luka 1
mia 2
tea 3
jakov 3
semiramida 5
dominik 5
anamarija 4
eustahije 4
lovro 2
lovro 11

예제 출력 2

371
                             o--+--o                 
                             |anton|                 
                             o--+--o                 
                                |                    
                   o------------o------------o       
                   |                         |       
                 o-+-o                     o-+--o    
                 |ana|                     |luka|    
                 o-+-o                     o-+--o    
                   |                         |       
           o-------o-------o              o--o--o    
           |               |              |     |    
         o-+-o          o--+--o         o-+-oo--+--o 
         |mia|          |lovro|         |tea||jakov| 
         o-+-o          o--+--o         o-+-oo--+--o 
           |               |              |          
     o-----o-----o         o        o-----o-----o    
     |           |         |        |           |    
o----+----o o----+----o o--+--oo----+-----o o---+---o
|anamarija| |eustahije| |lovro||semiramida| |dominik|
o----+----o o----+----o o--+--oo----+-----o o---+---o
W3sicHJvYmxlbV9pZCI6IjI4ODMiLCJwcm9ibGVtX2xhbmciOiIwIiwidGl0bGUiOiJcdWIwYThcdWFkZjlcdWM3NTggXHVhY2ZjXHVkNTU5XHVjNzkwIiwiZGVzY3JpcHRpb24iOiI8cD5cdWM1YmNcdWI5YzhcdWM4MDQgXHViMGE4XHVhZGY5IFx1YzVmMFx1YWQ2YyBcdWQwZDBcdWMwYWNcdWM5YzRcdWI0ZTRcdWM3NDAgXHVjMGM4XHViODVjXHVjNmI0IFx1Yzg4NVx1Yzc0NCBcdWJjMWNcdWFjYWNcdWQ1NThcdWM2MDBcdWIyZTQuIFx1YzVmMFx1YWQ2Y1x1YzljNFx1Yzc0MCBcdWQxNGNcdWMyYTRcdWQyYjhcdWI5N2MgXHVkNTU4XHVhZTMwIFx1YzcwNFx1ZDU3NCBcdWMwZDhcdWQ1MGNcdWM3NDQgXHVkNTU4XHViMDk4IFx1Y2Q5NFx1Y2Q5Y1x1ZDU3NCBcdWM1ZjBcdWFkNmNcdWMyZTRcdWI4NWMgXHViY2Y0XHViMGM4XHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWM3NzRcdWJjODhcdWM1ZDAgXHViYzFjXHVhY2FjXHViNDFjIFx1YzBjOFx1Yjg1Y1x1YzZiNCBcdWM4ODVcdWM3NDAgXHVjOWU3XHVjNzQwIFx1YzhmY1x1YWUzMFx1Yjk3YyBcdWFjMTZcdWFjZTAgXHViYzg4XHVjMmRkXHVkNTVjXHViMmU0LiBcdWJjODhcdWMyZGRcdWQ1NjAgXHViNTRjIFx1YmQ4MFx1YmFhOFx1YjI5NCBcdWQ1NThcdWIwOThcdWI5Y2MgXHVjNzg4XHVjNzNjXHViYTc0IFx1YjQxY1x1YjJlNC4gXHVkNTVjIFx1YmQ4MFx1YmFhOFx1YjI5NCBcdWI0NTAgXHViYzg4IFx1YmM4OFx1YzJkZFx1ZDU2MCBcdWMyMTggXHVjNzg4XHVjNzNjXHViYTcwLCBcdWFkZjggXHVjNzc0XHVkNmM0XHVjNWQwXHViMjk0IFx1YjM1NCBcdWM3NzRcdWMwYzEgXHViYzg4XHVjMmRkXHVkNTYwIFx1YzIxOCBcdWM1YzZcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1YjUzMFx1Yjc3Y1x1YzExYywgXHVjNWYwXHVhZDZjXHVjMmU0XHVjNWQwIFx1Yzc4OFx1YjI5NCBcdWQ0NWNcdWJjZjhcdWM3NTggXHVjMjE4XHViMjk0IFx1YWUwOVx1YzE4ZFx1YjNjNFx1Yjg1YyBcdWIyOThcdWM1YjRcdWIwYWNcdWFjZTAsIFx1YWMwMFx1YWNjNFx1YjNjNFx1YWMwMCBcdWQ1NDRcdWM2OTRcdWQ1NWMgXHVjMmRjXHVjODEwXHVjNzc0IFx1YjQxOFx1YzVjOFx1YjJlNC48XC9wPlxyXG5cclxuPHA+XHVjNWYwXHVhZDZjXHVjOWM0XHVjNzQwIFx1YWMwNFx1YjJlOFx1ZDU1YyBcdWQxNGRcdWMyYTRcdWQyYjggXHVjNWQwXHViNTE0XHVkMTMwXHViOTdjIFx1Yzc3NFx1YzZhOVx1ZDU3NCBcdWFjMDBcdWFjYzRcdWIzYzRcdWI5N2MgXHVhZGY4XHViOWFjXHViODI0XHVhY2UwIFx1ZDU1Y1x1YjJlNC4gXHVhYzAwXHVhY2M0XHViM2M0XHViMjk0IFx1YjJlNFx1Yzc0Y1x1YWNmYyBcdWFjMTlcdWM3NDAgXHVhZGRjXHVjZTU5XHVjNzQ0IFx1YzljMFx1Y2YxY1x1YzU3YyBcdWQ1NWNcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1ZDQ1Y1x1YmM4OFx1Yzc1OCBcdWM3NzRcdWI5ODRcdWM3NDAgJiMzOTs8Y29kZT4tPFwvY29kZT4mIzM5OywgJiMzOTs8Y29kZT58PFwvY29kZT4mIzM5OywgJiMzOTs8Y29kZT5vPFwvY29kZT4mIzM5O1x1Yjg1YyBcdWM3NzRcdWI4ZThcdWM1YjRcdWM5YzQgXHViYzE1XHVjMmE0XHViODVjIFx1YjQ1OFx1YjdlY1x1YzMxM1x1YzVlY1x1YzgzOCBcdWM3ODhcdWM1YjRcdWM1N2MgXHVkNTVjXHViMmU0LiBcdWM3MTcgXHViY2MwXHVhY2ZjIFx1YzU0NFx1YjdhYiBcdWJjYzBcdWM3NTggXHVjOTExXHVjNTU5XHVjNWQwXHViMjk0ICYjMzk7PGNvZGU+KzxcL2NvZGU+JiMzOTsgXHViOWM4XHVkMDZjXHVhYzAwIFx1Yzc4OFx1YzViNFx1YzU3YyBcdWQ1NWNcdWIyZTQuIFx1YmNjMFx1Yzc1OCBcdWFlMzhcdWM3NzRcdWFjMDAgXHVjOWRkXHVjMjE4XHVjNzc4IFx1YWNiZFx1YzZiMFx1YzVkMFx1YjI5NCBcdWI0NTAgXHVjOTExXHVjNTU5IFx1YzkxMSBcdWM2N2NcdWNhYmQgXHVjOTExXHVjNTU5XHVjNWQwICYjMzk7PGNvZGU+KzxcL2NvZGU+JiMzOTtcdWI5N2MgXHVkNDVjXHVjMmRjXHVkNTVjXHViMmU0LjxcL3A+XHJcblxyXG48dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1ib3JkZXJlZCB0ZC1jZW50ZXJcIj5cclxuXHQ8dGJvZHk+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0ZD5cclxuXHRcdFx0PHByZT5cclxuby0tKy0tb1xyXG58YW50b258XHJcbm8tLSstLW88XC9wcmU+XHJcblx0XHRcdDxcL3RkPlxyXG5cdFx0XHQ8dGQ+XHJcblx0XHRcdDxwcmU+XHJcbm8tLS0tKy0tLS1vXHJcbnxhbmFtYXJpamF8XHJcbm8tLS0tKy0tLS1vPFwvcHJlPlxyXG5cdFx0XHQ8XC90ZD5cclxuXHRcdFx0PHRkPlxyXG5cdFx0XHQ8cHJlPlxyXG5vLSstLW9cclxufHBlcm98XHJcbm8tKy0tbzxcL3ByZT5cclxuXHRcdFx0PFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHQ8XC90Ym9keT5cclxuPFwvdGFibGU+XHJcblxyXG48cD5cdWJjMTVcdWMyYTRcdWI5N2MgXHViOWMxXHVkMDZjXHViOTdjIFx1Yzc3NFx1YzZhOVx1ZDU3NCBcdWM1ZjBcdWFjYjBcdWQ1NzRcdWM1N2MgXHVkNTVjXHViMmU0LiBcdWQ1NWMgXHViOWMxXHVkMDZjXHViMjk0IFx1YjQ1MCBcdWFjMWMgXHViNjEwXHViMjk0IFx1YWRmOCBcdWM3NzRcdWMwYzFcdWM3NTggXHViYzE1XHVjMmE0XHViOTdjIFx1YzVmMFx1YWNiMFx1ZDU2MCBcdWMyMTggXHVjNzg4XHVjNzNjXHViYTcwLCAmIzM5Ozxjb2RlPis8XC9jb2RlPiYjMzk7XHVjNjQwIFx1YzVmMFx1YWNiMFx1YjQxOFx1YzViNCBcdWM3ODhcdWM1YjRcdWM1N2MgXHVkNTVjXHViMmU0LiBcdWJkODBcdWJhYTggXHViYzE1XHVjMmE0XHVhYzAwIFx1YzcwNFx1YzVkMCwgXHVjNzkwXHVjMmRkIFx1YmMxNVx1YzJhNFx1YWMwMCBcdWM1NDRcdWI3OThcdWM1ZDAgXHVjNzg4XHVjNWI0XHVjNTdjIFx1ZDU1Y1x1YjJlNC4gXHViYzE1XHVjMmE0XHVjNjQwIFx1YjljMVx1ZDA2Y1x1YjI5NCBcdWFjYjlcdWNlNjAgXHVjMjE4IFx1YzVjNlx1YjJlNC48XC9wPlxyXG5cclxuPHRhYmxlIGNsYXNzPVwidGFibGUgdGFibGUtYm9yZGVyZWQgdGQtY2VudGVyXCI+XHJcblx0PHRib2R5PlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQ+XHJcblx0XHRcdDxwcmU+XHJcbitcclxufFxyXG5vXHJcbnxcclxuKzxcL3ByZT5cclxuXHRcdFx0PFwvdGQ+XHJcblx0XHRcdDx0ZD5cclxuXHRcdFx0PHByZT5cclxuICAgICsgICAgXHJcbiAgICB8ICAgIFxyXG5vLS0tby0tLW9cclxufCAgICAgICB8XHJcbisgICAgICAgKzxcL3ByZT5cclxuXHRcdFx0PFwvdGQ+XHJcblx0XHRcdDx0ZD5cclxuXHRcdFx0PHByZT5cclxuICAgICAgKyAgICAgIFxyXG4mbmJzcDsgICAgIHwgICAgICBcclxuby0tLS0tby0tLS0tb1xyXG58ICAgICAgICAgICB8XHJcbisgICAgICAgICAgICs8XC9wcmU+XHJcblx0XHRcdDxcL3RkPlxyXG5cdFx0PFwvdHI+XHJcblx0PFwvdGJvZHk+XHJcbjxcL3RhYmxlPlxyXG5cclxuPHA+XHVjNzkwXHVjMmRkXHVjNzU4IFx1YzIxOFx1YWMwMCAxXHVhYzFjXHVjNzc4IFx1YWNiZFx1YzZiMFx1YzVkMFx1YjI5NCBcdWFjMDBcdWM3YTUgXHVjNjdjXHVjYWJkIFx1YWRmOFx1YjliY1x1YzVkMCBcdWIwOThcdWM2NDBcdWM3ODhcdWIyOTQgXHViOWMxXHVkMDZjXHViOTdjIFx1YzBhY1x1YzZhOVx1ZDU1Y1x1YjJlNC4gXHViNDU4IFx1Yzc3NFx1YzBjMVx1Yzc1OCBcdWM3OTBcdWMyZGRcdWM3NDQgXHVhYzAwXHVjOWMwXHViMjk0IFx1YWNiZFx1YzZiMFx1YzVkMFx1YjI5NCBcdWM5MTFcdWFjMDRcdWM1ZDAgXHVhYzA4XHViNzdjXHVjOWM0IFx1YjljMVx1ZDA2Y1x1Yjk3YyBcdWMwYWNcdWM2YTlcdWQ1NzRcdWM1N2MgXHVkNTU4XHViYTcwLCBcdWM2N2NcdWNhYmRcdWM1ZDBcdWIyOTQgXHViMDk4XHVjNzc0XHVhYzAwIFx1YjljZVx1Yzc0MCBcdWM3OTBcdWMyZGQsIFx1YzYyNFx1Yjk3OFx1Y2FiZFx1YzVkMFx1YjI5NCBcdWM4MDFcdWM3NDAgXHVjNzkwXHVjMmRkXHVjNzc0IFx1Yzc4OFx1YzViNFx1YzU3YyBcdWQ1NWNcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1YjljMVx1ZDA2Y1x1YjI5NCBcdWMyMThcdWQzYzlcdWJjMjlcdWQ1YTVcdWM3M2NcdWI4NWMgXHViMjk4XHVjNWI0XHViMGEwIFx1YzIxOCBcdWM3ODhcdWM3M2NcdWJhNzAsIFx1Yzg4Y1x1YzZiMFx1Yzc1OCAmIzM5Ozxjb2RlPi08XC9jb2RlPiYjMzk7XHVjNzU4IFx1YWMxY1x1YzIxOFx1YjI5NCBcdWFjMTlcdWM1NDRcdWM1N2MgXHVkNTVjXHViMmU0LiBcdWI5YzFcdWQwNmNcdWIyOTQgXHVjMjE4XHVjOWMxXHViYzI5XHVkNWE1XHVjNzNjXHViODVjIFx1YjI5OFx1YzViNFx1YjBhMCBcdWMyMThcdWIyOTQgXHVjNWM2XHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWFjMDEgXHVkNDVjXHViY2Y4XHVjNzU4IFx1YzgxNVx1YmNmNFx1YWMwMCBcdWM4ZmNcdWM1YjRcdWM4NGNcdWM3NDQgXHViNTRjLCBcdWFjMDBcdWFjYzRcdWIzYzRcdWI5N2MgXHVhZGY4XHViOWFjXHViMjk0XHViMzcwIFx1ZDU0NFx1YzY5NFx1ZDU1YyBcdWJiMzhcdWM3OTBcdWM3NTggXHVhYzFjXHVjMjE4XHViOTdjIFx1YWQ2Y1x1ZDU1OFx1YjI5NCBcdWQ1MDRcdWI4NWNcdWFkZjhcdWI3YThcdWM3NDQgXHVjNzkxXHVjMTMxXHVkNTU4XHVjMmRjXHVjNjI0LiBcdWIyZTgsIFx1YWNmNVx1YmMzMVx1Yzc1OCBcdWFjMWNcdWMyMThcdWIyOTQgXHVjMTM4XHVjOWMwIFx1YzU0YVx1YzczY1x1YmE3MCwgJiMzOTs8Y29kZT4tPFwvY29kZT4mIzM5OywgJiMzOTs8Y29kZT58PFwvY29kZT4mIzM5OywgJiMzOTs8Y29kZT4rPFwvY29kZT4mIzM5OywgJiMzOTs8Y29kZT5vPFwvY29kZT4mIzM5OywgXHVjNzc0XHViOTg0XHViOWNjIFx1YzEzY1x1YjJlNC48XC9wPlxyXG4iLCJpbnB1dCI6IjxwPlx1Y2NhYlx1YzlmOCBcdWM5MDRcdWM1ZDAgXHVjMmU0XHVkNWQ4XHVjMmU0XHVjNWQwIFx1Yzc4OFx1YjI5NCBcdWQ0NWNcdWJjZjhcdWM3NTggXHVjMjE4IE4gKDEgJmxlOyBOICZsZTsgMzAwLDAwMClcdWM3NzQgXHVjOGZjXHVjNWI0XHVjOWM0XHViMmU0LiBcdWFjMDEgXHVkNDVjXHViY2Y4XHVjNzQwIDFcdWJjODhcdWJkODBcdWQxMzAgTlx1YmM4OFx1YWU0Y1x1YzljMCBcdWQwZGNcdWM1YjRcdWIwOWMgXHVjMjFjXHVjMTFjXHViMzAwXHViODVjIFx1YmM4OFx1ZDYzOFx1YWMwMCBcdWI5ZTRcdWFjYThcdWM4MzggXHVjNzg4XHViMmU0LiBcdWM5ODksIFx1YWMwMFx1YzdhNSBcdWIwOThcdWM3NzRcdWFjMDAgXHViOWNlXHVjNzQwIFx1ZDQ1Y1x1YmNmOFx1Yzc0MCAxLCBcdWM1YjRcdWI5YjAgXHVkNDVjXHViY2Y4XHVjNzQwIE5cdWM3NzRcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1YjJlNFx1Yzc0YyBOXHVhYzFjIFx1YzkwNFx1YzVkMFx1YjI5NCBcdWFjMDEgXHVkNDVjXHViY2Y4XHVjNzU4IFx1Yzc3NFx1Yjk4NFx1YWNmYyBcdWJkODBcdWJhYThcdWM3NTggXHViYzg4XHVkNjM4XHVhYzAwIFx1YzhmY1x1YzViNFx1YzljNFx1YjJlNC4gKFx1Y2NhYiBcdWJjODhcdWM5ZjggXHVkNDVjXHViY2Y4XHVjNzU4IFx1YmQ4MFx1YmFhOFx1YjI5NCBcdWM1NGMgXHVjMjE4IFx1YzVjNlx1YjJlNCkgXHVjNzc0XHViOTg0XHVjNzQwIFx1YzU0Y1x1ZDMwY1x1YmNiMyBcdWMxOGNcdWJiMzhcdWM3OTBcdWI4NWNcdWI5Y2MgXHVjNzc0XHViOGU4XHVjNWI0XHVjOWM0IFx1YmIzOFx1Yzc5MFx1YzVmNFx1Yjg1YyBcdWFlMzhcdWM3NzRcdWIyOTQgMjBcdWM3NDQgXHViMTE4XHVjOWMwIFx1YzU0YVx1YjI5NFx1YjJlNC48XC9wPlxyXG4iLCJvdXRwdXQiOiI8cD5cdWNjYWJcdWM5ZjggXHVjOTA0XHVjNWQwIFx1YWMwMFx1YWNjNFx1YjNjNFx1Yjk3YyBcdWFkZjhcdWI5YWNcdWIyOTRcdWIzNzAgXHVkNTQ0XHVjNjk0XHVkNTVjIFx1YWUwMFx1Yzc5MFx1Yzc1OCBcdWMyMThcdWI5N2MgXHVjZDljXHViODI1XHVkNTVjXHViMmU0LjxcL3A+XHJcbiIsImhpbnQiOiIiLCJvcmlnaW5hbCI6IjAiLCJodG1sX3RpdGxlIjoiMCIsInByb2JsZW1fbGFuZ190Y29kZSI6IktvcmVhbiIsInNhbXBsZV9leHBsYWluXzEiOiI8cHJlIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyO1wiPlxyXG4gICBvLSstLW8gICBcclxuJm5ic3A7ICB8YWRhbXwgICBcclxuJm5ic3A7ICBvLSstLW8gICBcclxuJm5ic3A7ICAgIHwgICAgICBcclxuJm5ic3A7IG8tLW8tLW8gICBcclxuJm5ic3A7IHwgICAgIHwgICBcclxuby0rLS1vby0rLS1vXHJcbnxrYWlufHxhYmVsfFxyXG5vLSstLW9vLSstLW88XC9wcmU+XHJcbiIsInNhbXBsZV9leHBsYWluXzIiOiI8cHJlIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8tLSstLW8gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxhbnRvbnwgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8tLSstLW8gICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgby0tLS0tLS0tLS0tLW8tLS0tLS0tLS0tLS1vICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIFxyXG4gICAgICAgICAgICAgICAgIG8tKy1vICAgICAgICAgICAgICAgICAgICAgby0rLS1vICAgIFxyXG4gICAgICAgICAgICAgICAgIHxhbmF8ICAgICAgICAgICAgICAgICAgICAgfGx1a2F8ICAgIFxyXG4gICAgICAgICAgICAgICAgIG8tKy1vICAgICAgICAgICAgICAgICAgICAgby0rLS1vICAgIFxyXG4gICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIFxyXG4gICAgICAgICAgIG8tLS0tLS0tby0tLS0tLS1vICAgICAgICAgICAgICBvLS1vLS1vICAgIFxyXG4gICAgICAgICAgIHwgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICB8ICAgICB8ICAgIFxyXG4gICAgICAgICBvLSstbyAgICAgICAgICBvLS0rLS1vICAgICAgICAgby0rLW9vLS0rLS1vIFxyXG4gICAgICAgICB8bWlhfCAgICAgICAgICB8bG92cm98ICAgICAgICAgfHRlYXx8amFrb3Z8IFxyXG4gICAgICAgICBvLSstbyAgICAgICAgICBvLS0rLS1vICAgICAgICAgby0rLW9vLS0rLS1vIFxyXG4gICAgICAgICAgIHwgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICB8ICAgICAgICAgIFxyXG4gICAgIG8tLS0tLW8tLS0tLW8gICAgICAgICBvICAgICAgICBvLS0tLS1vLS0tLS1vICAgIFxyXG4gICAgIHwgICAgICAgICAgIHwgICAgICAgICB8ICAgICAgICB8ICAgICAgICAgICB8ICAgIFxyXG5vLS0tLSstLS0tbyBvLS0tLSstLS0tbyBvLS0rLS1vby0tLS0rLS0tLS1vIG8tLS0rLS0tb1xyXG58YW5hbWFyaWphfCB8ZXVzdGFoaWplfCB8bG92cm98fHNlbWlyYW1pZGF8IHxkb21pbmlrfFxyXG5vLS0tLSstLS0tbyBvLS0tLSstLS0tbyBvLS0rLS1vby0tLS0rLS0tLS1vIG8tLS0rLS0tb1xyXG48XC9wcmU+XHJcbiJ9LHsicHJvYmxlbV9pZCI6IjI4ODMiLCJwcm9ibGVtX2xhbmciOiIxIiwidGl0bGUiOiJMT1pBIiwiZGVzY3JpcHRpb24iOiI8cD5TY2llbnRpc3RzIG9uIEFudGFyY3RpY2EgaGF2ZSBmb3VuZCBhIG5ldyBzcGVjaWVzISBUaGV5IGV4dHJhY3RlZCBvbmUgc2FtcGxlIGFuZCB0b29rIGl0IHRvIHRoZSBsYWJvcmF0b3J5IGZvciB0ZXN0aW5nLiZuYnNwOzxcL3A+XHJcblxyXG48cD5UaGV5IHF1aWNrbHkgbm90aWNlZCB0aGUgc3BlY2llcyByZXByb2R1Y2VzIHF1aXRlIG9mdGVuIGFuZCB0aGF0IG9ubHkgb25lIHBhcmVudCBpcyByZXF1aXJlZCBmb3IgcmVwcm9kdWN0aW9uLiBIb3dldmVyIGFmdGVyIHRoZSBwYXJlbnQgcmVwcm9kdWNlcyB0d2ljZSwgaXQgYmVjb21lcyBzdGVyaWxlIGFuZCBjYW5ub3QgcmVwcm9kdWNlIGFnYWluLiZuYnNwOzxcL3A+XHJcblxyXG48cD5JbiBzcGl0ZSBvZiB0aGlzIHRoZSBudW1iZXIgb2Ygc3BlY2ltZW5zIGluIHRoZSBsYWJvcmF0b3J5IHNreXJvY2tldGVkIGFuZCB0aGUgbmVlZCBmb3IgZmFtaWx5IHRyZWVzIGFwcGVhcmVkLiZuYnNwOzxcL3A+XHJcblxyXG48cD5UaGV5IGRlY2lkZWQgdG8gZHJhdyB0aGUgdHJlZSBpbiBhIHNpbXBsZSB0ZXh0IGVkaXRvciB1c2luZyBmb2xsb3dpbmcgY29udmVudGlvbnM6Jm5ic3A7PFwvcD5cclxuXHJcbjxwPlRoZSBuYW1lcyBvZiB0aGUgc3BlY2ltZW5zIHdpbGwgYmUgd3JpdHRlbiBpbnNpZGUgbmljZSBib3hlcyB1c2luZyBjaGFyYWN0ZXJzICYjMzk7PGNvZGU+LTxcL2NvZGU+JiMzOTssICYjMzk7PGNvZGU+fDxcL2NvZGU+JiMzOTsgYW5kICYjMzk7PGNvZGU+bzxcL2NvZGU+JiMzOTsuIFRoZSBjZW50ZXIgcG9pbnQgb2YgdGhlIHVwcGVyIGFuZCBsb3dlciBib3JkZXIgd2lsbCBiZSBtYXJrZWQgYnkgdGhlIGNoYXJhY3RlciAmIzM5Ozxjb2RlPis8XC9jb2RlPiYjMzk7LiBJZiB0aGUgbGVuZ3RoIG9mIHRoZSBib3JkZXIgaXMgZXZlbiwgJiMzOTs8Y29kZT4rPFwvY29kZT4mIzM5OyB3aWxsIGJlIG9uIHRoZSBsZWZ0IG9mIHRoZSB0d28gY2VudGVyIHBvaW50cy4mbmJzcDs8XC9wPlxyXG5cclxuPHRhYmxlIGNsYXNzPVwidGFibGUgdGFibGUtYm9yZGVyZWQgdGQtY2VudGVyXCI+XHJcblx0PHRib2R5PlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQ+XHJcblx0XHRcdDxwcmU+XHJcbm8tLSstLW9cclxufGFudG9ufFxyXG5vLS0rLS1vPFwvcHJlPlxyXG5cdFx0XHQ8XC90ZD5cclxuXHRcdFx0PHRkPlxyXG5cdFx0XHQ8cHJlPlxyXG5vLS0tLSstLS0tb1xyXG58YW5hbWFyaWphfFxyXG5vLS0tLSstLS0tbzxcL3ByZT5cclxuXHRcdFx0PFwvdGQ+XHJcblx0XHRcdDx0ZD5cclxuXHRcdFx0PHByZT5cclxuby0rLS1vXHJcbnxwZXJvfFxyXG5vLSstLW88XC9wcmU+XHJcblx0XHRcdDxcL3RkPlxyXG5cdFx0PFwvdHI+XHJcblx0PFwvdGJvZHk+XHJcbjxcL3RhYmxlPlxyXG5cclxuPHA+VGhlIGJveGVzIHdpbGwgYmUgY29ubmVjdGVkIHdpdGggbGlua3MuIE9uZSBsaW5rIGNvbm5lY3RzIHR3byBvciBtb3JlIGJveGVzIG9uIHRoZWlyIHJlc3BlY3RpdmUgJiMzOTs8Y29kZT4rPFwvY29kZT4mIzM5OyBjaGFyYWN0ZXJzLCB3aXRoIHRoZSBwYXJlbnQgc3BlY2ltZW4gcGxhY2VkIGFib3ZlIGl0JiMzOTtzIGNoaWxkcmVuLiBUaGUgYm94ZXMgYW5kIGxpbmtzIG11c3Qgbm90IG92ZXJsYXAuJm5ic3A7PFwvcD5cclxuXHJcbjx0YWJsZSBjbGFzcz1cInRhYmxlIHRhYmxlLWJvcmRlcmVkIHRkLWNlbnRlclwiPlxyXG5cdDx0Ym9keT5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPlxyXG5cdFx0XHQ8cHJlPlxyXG4rXHJcbnxcclxub1xyXG58XHJcbis8XC9wcmU+XHJcblx0XHRcdDxcL3RkPlxyXG5cdFx0XHQ8dGQ+XHJcblx0XHRcdDxwcmU+XHJcbiAgICArICAgIFxyXG4gICAgfCAgICBcclxuby0tLW8tLS1vXHJcbnwgICAgICAgfFxyXG4rICAgICAgICs8XC9wcmU+XHJcblx0XHRcdDxcL3RkPlxyXG5cdFx0XHQ8dGQ+XHJcblx0XHRcdDxwcmU+XHJcbiAgICAgICsgICAgICBcclxuJm5ic3A7ICAgICB8ICAgICAgXHJcbm8tLS0tLW8tLS0tLW9cclxufCAgICAgICAgICAgfFxyXG4rICAgICAgICAgICArPFwvcHJlPlxyXG5cdFx0XHQ8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdDxcL3Rib2R5PlxyXG48XC90YWJsZT5cclxuXHJcbjxwPklmIHRoZSBwYXJlbnQgaGFzIG9uZSBjaGlsZCwgYSBwb2ludCB0byBwb2ludCAobGVmdG1vc3QgZXhhbXBsZSkgbGluayBpcyB1c2VkLiBJZiB0aGUgcGFyZW50IGhhcyB0d28gY2hpbGRyZW4sIGEgYnJhbmNoaW5nIGxpbmsgaXMgdXNlZCwgd2l0aCB0aGUgb2xkZXIgY2hpbGQgb24gdGhlIGxlZnQsIGFuZCB0aGUgeW91bmdlciBvbiB0aGUgcmlnaHQuJm5ic3A7PFwvcD5cclxuXHJcbjxwPkJyYW5jaGluZyBsaW5rcyBtYXkgYmUgZXhwYW5kZWQgaW4gdGhlIGhvcml6b250YWwgZGlyZWN0aW9uIGFzIGxvbmcgYXMgdGhlIG51bWJlciBvZiAmIzM5Ozxjb2RlPi08XC9jb2RlPiYjMzk7IGNoYXJhY3RlcnMgb24gYm90aCBzaWRlcyBzdGF5cyBlcXVhbC4gTGlua3MgY2Fubm90IGJlIGV4cGFuZGVkIHZlcnRpY2FsbHkuJm5ic3A7PFwvcD5cclxuXHJcbjxwPkRvbiYjMzk7dCB3b3JyeSwgeW91IHdpbGwgbm90IGJlIGFza2VkIHRvIGRyYXcgdGhlIHRyZWUsIG9ubHkgZGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyByZXF1aXJlZCB0byBkcmF3IGl0LiBTcGFjZSBjaGFyYWN0ZXJzIGFyZSBub3QgY291bnRlZCwgb25seSAmIzM5Ozxjb2RlPi08XC9jb2RlPiYjMzk7LCAmIzM5Ozxjb2RlPnw8XC9jb2RlPiYjMzk7LCAmIzM5Ozxjb2RlPis8XC9jb2RlPiYjMzk7ICwgJiMzOTs8Y29kZT5vPFwvY29kZT4mIzM5OyBhbmQgbGV0dGVycyBpbiB0aGUgbmFtZXMuJm5ic3A7PFwvcD5cclxuIiwiaW5wdXQiOiI8cD5UaGUgZmlyc3QgbGluZSBvZiBpbnB1dCBjb250YWlucyBvbmUgaW50ZWdlciBOICgxICZsZTsgTiAmbGU7IDMwMCAwMDApLCBudW1iZXIgb2Ygc3BlY2ltZW5zIGluIHRoZSBsYWJvcmF0b3J5LiZuYnNwOzxcL3A+XHJcblxyXG48cD5UaGUgc3BlY2ltZW5zIGFyZSBtYXJrZWQgd2l0aCBudW1iZXJzIDEgdG8gTiBpbiB0aGUgb3JkZXIgb2YgYmlydGgsIHdpdGggdGhlIG9sZGVzdCBtYXJrZWQgMSBhbmQgeW91bmdlc3QgbWFya2VkIE4uJm5ic3A7PFwvcD5cclxuXHJcbjxwPlRoZSBuZXh0IE4gbGluZXMgY29udGFpbiBiaXJ0aCBub3RlcyBvZiBhbGwgc3BlY2ltZW5zIGluIHRoZSBvcmRlciBvZiBiaXJ0aC4gRWFjaCBzcGVjaW1lbiAoZXhjZXB0IHRoZSBmaXJzdCB3aG9zZSBwYXJlbnQgaXMgdW5rbm93bikgaXMgZGVzY3JpYmVkIHdpdGggdHdvIHBpZWNlcyBvZiBpbmZvcm1hdGlvbjombmJzcDs8XC9wPlxyXG5cclxuPHVsPlxyXG5cdDxsaT5uYW1lIC0gc2VxdWVuY2Ugb2YgYXQgbW9zdCAyMCBsb3dlcmNhc2UgZW5nbGlzaCBhbHBoYWJldCBjaGFyYWN0ZXJzJm5ic3A7PFwvbGk+XHJcblx0PGxpPnBhcmVudCAmbmRhc2g7IG9uZSBpbnRlZ2VyIGRlbm90aW5nIHRoZSBwYXJlbnQgb2YgdGhpcyBzcGVjaW1lbiZuYnNwOzxcL2xpPlxyXG48XC91bD5cclxuIiwib3V0cHV0IjoiPHA+VGhlIGZpcnN0IGFuZCBvbmx5IGxpbmUgb2YgaW5wdXQgc2hvdWxkIGNvbnRhaW4gdGhlIG1pbmltYWwgbnVtYmVyIG9mIGNoYXJhY3RlcnMgbmVlZGVkIHRvIGRyYXcgdGhlIGZhbWlseSB0cmVlLjxcL3A+XHJcbiIsImhpbnQiOiIiLCJvcmlnaW5hbCI6IjEiLCJodG1sX3RpdGxlIjoiMCIsInByb2JsZW1fbGFuZ190Y29kZSI6IkVuZ2xpc2giLCJzYW1wbGVfZXhwbGFpbl8xIjoiPHByZSBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlcjtcIj5cclxuICAgby0rLS1vICAgXHJcbiZuYnNwOyAgfGFkYW18ICAgXHJcbiZuYnNwOyAgby0rLS1vICAgXHJcbiZuYnNwOyAgICB8ICAgICAgXHJcbiZuYnNwOyBvLS1vLS1vICAgXHJcbiZuYnNwOyB8ICAgICB8ICAgXHJcbm8tKy0tb28tKy0tb1xyXG58a2Fpbnx8YWJlbHxcclxuby0rLS1vby0rLS1vPFwvcHJlPlxyXG4iLCJzYW1wbGVfZXhwbGFpbl8yIjoiPHByZSBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlcjtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvLS0rLS1vICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8YW50b258ICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvLS0rLS1vICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgIG8tLS0tLS0tLS0tLS1vLS0tLS0tLS0tLS0tbyAgICAgICBcclxuICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICBcclxuICAgICAgICAgICAgICAgICBvLSstbyAgICAgICAgICAgICAgICAgICAgIG8tKy0tbyAgICBcclxuICAgICAgICAgICAgICAgICB8YW5hfCAgICAgICAgICAgICAgICAgICAgIHxsdWthfCAgICBcclxuICAgICAgICAgICAgICAgICBvLSstbyAgICAgICAgICAgICAgICAgICAgIG8tKy0tbyAgICBcclxuICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICBcclxuICAgICAgICAgICBvLS0tLS0tLW8tLS0tLS0tbyAgICAgICAgICAgICAgby0tby0tbyAgICBcclxuICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAgICAgfCAgICBcclxuICAgICAgICAgby0rLW8gICAgICAgICAgby0tKy0tbyAgICAgICAgIG8tKy1vby0tKy0tbyBcclxuICAgICAgICAgfG1pYXwgICAgICAgICAgfGxvdnJvfCAgICAgICAgIHx0ZWF8fGpha292fCBcclxuICAgICAgICAgby0rLW8gICAgICAgICAgby0tKy0tbyAgICAgICAgIG8tKy1vby0tKy0tbyBcclxuICAgICAgICAgICB8ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAgICAgICAgICBcclxuICAgICBvLS0tLS1vLS0tLS1vICAgICAgICAgbyAgICAgICAgby0tLS0tby0tLS0tbyAgICBcclxuICAgICB8ICAgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgfCAgICAgICAgICAgfCAgICBcclxuby0tLS0rLS0tLW8gby0tLS0rLS0tLW8gby0tKy0tb28tLS0tKy0tLS0tbyBvLS0tKy0tLW9cclxufGFuYW1hcmlqYXwgfGV1c3RhaGlqZXwgfGxvdnJvfHxzZW1pcmFtaWRhfCB8ZG9taW5pa3xcclxuby0tLS0rLS0tLW8gby0tLS0rLS0tLW8gby0tKy0tb28tLS0tKy0tLS0tbyBvLS0tKy0tLW9cclxuPFwvcHJlPlxyXG4ifV0=