시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
1 초 512 MB 49 27 20 47.619%

문제

아이잔은 N개의 정수 S[0], S[1], ..., S[N-1]로 이루어진 수열 S를 가지고 있다. 수열은 0부터 N-1까지 서로 다른 N개의 정수로 이루어져있다. 아이잔은 두 수의 위치를 바꾸며 이 수열을 오름차순으로 정렬하려고 한다. 아이잔의 오랜 친구인 에르맥도 수열에서 두 수를 바꾸는데, 아이잔과는 다르게 정렬하려는 목적 없이 아무렇게나 바꾼다.

아이잔과 에르맥은 라운드를 거치며 수열을 조작한다. 각 라운드마다, 에르맥이 먼저 위치 바꾸기를 하고 그 다음 아이잔이 위치 바꾸기를 한다. 위치 바꾸기에 대해서 좀 더 자세히 말하자면, 바꿀 두 위치를 정하고 그 위치에 있는 값을 맞바꾼다. 이 때 정하는 두 위치가 다를 필요는 없다. 만약 정한 두 위치가 같으면 수열에 아무런 변화가 없다.

아이잔은 에르맥이 수열 S를 정렬하려는 목적 없이 아무렇게나 바꾼다는 사실을 알고 있다. 더 나아가서 라운드를 시작하기 전부터 에르맥이 어떻게 위치 바꾸기를 할 건지 미리 다 알고 있다. 에르맥은 M 라운드에 대한 계획을 가지고 있다. 라운드의 번호를 순서대로 0 부터 M-1 까지 매겼을 때, i번 라운드에서 에르맥이 바꿀 두 위치는 X[i]와 Y[i]이다.

아이잔은 수열 S를 오름차순으로 정렬하길 원한다. 각 라운드를 시작하기 전에 만약 수열이 이미 정렬되어 있다면 라운드를 더 이상 진행하지 않고 멈출 수 있다. 처음 수열 S에 대한 정보와 에르맥이 M 라운드 동안 어떻게 위치 바꾸기를 할지에 대한 정보가 주어졌을 때, 아이잔이 어떻게 위치 바꾸기를 해야할지 구하시오. 추가적으로, 어떤 부분 문제에 대해서는 가능한 가장 적은 라운드 만에 정렬을 해야할 수도 있다. 언제나 M 라운드 안에 정렬이 가능하도록 입력이 주어진다.

만약 어떤 라운드에서 에르맥이 위치 바꾸기를 한 뒤 수열이 정렬되어 있다면, 아이잔은 같은 두 위치를 맞바꿔주면 된다 (예를 들어 0번 위치와 0번 위치). 그러면 이 라운드의 끝에서 수열 S는 정렬되고 아이잔은 멈출 수 있다. 또한 처음부터 수열 S가 정렬되어 있다면 필요한 라운드의 최소 수는 0 이다.

예제 1

  • 처음 수열 S = 4, 3, 2, 1, 0
  • 에르맥은 M = 6라운드를 진행하려 한다.
  • 에르맥이 바꿀 위치에 대한 정보 X와 Y는 X = 0, 1, 2, 3, 0, 1이며, Y = 1, 2, 3, 4, 1, 2 이다. 다르게 얘기하면 에르맥은 (0, 1), (1,2), (2,3), (3,4), (0, 1) 그리고 (1, 2) 순서대로 위치를 바꿀 계획이다.

이러한 상황에서 아이잔은 3 라운드 만에 수열 S를 0, 1, 2, 3, 4로 정렬할 수 있다. 아이잔은 (0, 4), (1, 3) 그리고 (3, 4) 순서대로 위치 바꾸기를 하면 된다.

아래 표는 각 위치 바꾸기마다 수열 S의 내용이 어떻게 바뀌는지 나타내고 있다.

라운드 사람 바꿀 두 위치 수열
초기     4, 3, 2, 1, 0
0 에르맥 (0, 1) 3, 4, 2, 1, 0
0 아이잔 (0, 4) 0, 4, 2, 1, 3
1 에르맥 (1, 2) 0, 2, 4, 1, 3
1 아이잔 (1, 3) 0, 1, 4, 2, 3
2 에르맥 (2, 3) 0, 1, 2, 4, 3
2 아이잔 (3, 4) 0, 1, 2, 3, 4

예제 2

  • 처음 수열 S = 3, 0, 4, 2, 1
  • 에르맥은 M = 5라운드를 진행하려 한다.
  • 에르맥은 (1, 1), (4, 0), (2, 3), (1, 4) 그리고 (0, 4) 순서대로 위치를 바꿀 계획이다.

이러한 상황에서 아이잔은 3 라운드 만에 수열 S를 정렬할 수 있다. 아이잔은 (1, 4), (4, 2) 그리고 (2, 2) 순서대로 위치 바꾸기를 하면 된다.

아래 표는 각 위치 바꾸기마다 수열 S의 내용이 어떻게 바뀌는지 나타내고 있다.

라운드 사람 바꿀 두 위치 수열
초기     3, 0, 4, 2, 1
0 에르맥 (1, 1) 3, 0, 4, 2, 1
0 아이잔 (1, 4) 3, 1, 4, 2, 0
1 에르맥 (4, 0) 0, 1, 4, 2, 3
1 아이잔 (4, 2) 0, 1, 3, 2, 4
2 에르맥 (2, 3) 0, 1, 2, 3, 4
2 아이잔 (2, 2) 0, 1, 2, 3, 4

수열 S와 정수 M, 그리고 X, Y가 주어진다.

아이잔이 수열 S를 정렬하기 위해 어떻게 위치를 바꿀지에 대해 계산하자.

다음 함수 findSwapPairs를 구현해야 한다.

  • findSwapPairs(N, S, M, X, Y, P, Q) — 이 함수는 단 한 번 그레이더에 의해 호출된다.
    • N: 수열 S의 크기
    • S: 처음 수열 S에 대한 정보를 가지고 있는 정수 배열
    • M: 에르맥이 계획한 라운드 수
    • X, Y: 크기가 M인 정수 배열들. 0 ≤ i ≤ M-1 인 i에 대해 i번 라운드에서 에르맥은 두 위치 X[i], Y[i]에 있는 수를 맞바꾼다.
    • P, Q: 정수 배열들. 아이잔이 바꿀 위치에 대한 정보를 위해 필요한 배열이다. R이 여러분이 구한 정렬하기 위해 필요한 라운드 수라고 하자. 0과 R-1 사이의 i에 대해서 i번 라운드에 아이잔이 고른 맞바꿀 두 위치를 P[i]와 Q[i]에 저장한다. 배열 P와 Q는 이미 크기 M으로 메모리가 잡혀있다.
    • 이 함수는 위에 정의된 R 값을 리턴해야 한다.

M라운드 혹은 보다 더 일찍 정렬 가능하도록 입력이 주어진다.

입력

  • 1번 줄: N
  • 2번 줄: S[0] … S[N - 1]
  • 3번 줄: M
  • 4 ~ M + 3번 줄: X[i] Y[i]

1 ≤ N ≤ 500, M = 30N, R ≤ M

출력

findSwapPairs가 리턴한 값을 출력한다.

다음 양식에 따라 출력한다:

  • 1번 줄: findSwapPairs의 리턴값 R
  • 2+i번 줄 (0 ≤ i < R): P[i] Q[i]

예제 입력 1

5
4 3 2 1 0
6
0 1
1 2
2 3
3 4
0 1
1 2

예제 출력 1

3
0 4
1 3
3 4
W3sicHJvYmxlbV9pZCI6IjEwOTIzIiwicHJvYmxlbV9sYW5nIjoiMCIsInRpdGxlIjoiXHVjODE1XHViODJjXHVkNTU4XHVhZTMwIiwiZGVzY3JpcHRpb24iOiI8cD5cdWM1NDRcdWM3NzRcdWM3OTRcdWM3NDAgTlx1YWMxY1x1Yzc1OCBcdWM4MTVcdWMyMTggU1swXSwgU1sxXSwgLi4uLCBTW04tMV1cdWI4NWMgXHVjNzc0XHViOGU4XHVjNWI0XHVjOWM0IFx1YzIxOFx1YzVmNCBTXHViOTdjIFx1YWMwMFx1YzljMFx1YWNlMCBcdWM3ODhcdWIyZTQuIFx1YzIxOFx1YzVmNFx1Yzc0MCAwXHViZDgwXHVkMTMwIE4tMVx1YWU0Y1x1YzljMCBcdWMxMWNcdWI4NWMgXHViMmU0XHViOTc4IE5cdWFjMWNcdWM3NTggXHVjODE1XHVjMjE4XHViODVjIFx1Yzc3NFx1YjhlOFx1YzViNFx1YzgzOFx1Yzc4OFx1YjJlNC4gXHVjNTQ0XHVjNzc0XHVjNzk0XHVjNzQwIFx1YjQ1MCBcdWMyMThcdWM3NTggXHVjNzA0XHVjZTU4XHViOTdjIFx1YmMxNFx1YWZiOFx1YmE3MCBcdWM3NzQgXHVjMjE4XHVjNWY0XHVjNzQ0IFx1YzYyNFx1Yjk4NFx1Y2MyOFx1YzIxY1x1YzczY1x1Yjg1YyBcdWM4MTVcdWI4MmNcdWQ1NThcdWI4MjRcdWFjZTAgXHVkNTVjXHViMmU0LiBcdWM1NDRcdWM3NzRcdWM3OTRcdWM3NTggXHVjNjI0XHViNzljIFx1Y2U1Y1x1YWQ2Y1x1Yzc3OCBcdWM1ZDBcdWI5NzRcdWI5ZTVcdWIzYzQgXHVjMjE4XHVjNWY0XHVjNWQwXHVjMTFjIFx1YjQ1MCBcdWMyMThcdWI5N2MgXHViYzE0XHVhZmI4XHViMjk0XHViMzcwLCBcdWM1NDRcdWM3NzRcdWM3OTRcdWFjZmNcdWIyOTQgXHViMmU0XHViOTc0XHVhYzhjIFx1YzgxNVx1YjgyY1x1ZDU1OFx1YjgyNFx1YjI5NCBcdWJhYTlcdWM4MDEgXHVjNWM2XHVjNzc0IFx1YzU0NFx1YmIzNFx1YjgwN1x1YWM4Y1x1YjA5OCBcdWJjMTRcdWFmYmNcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1YzU0NFx1Yzc3NFx1Yzc5NFx1YWNmYyBcdWM1ZDBcdWI5NzRcdWI5ZTVcdWM3NDAgXHViNzdjXHVjNmI0XHViNGRjXHViOTdjIFx1YWM3MFx1Y2U1OFx1YmE3MCBcdWMyMThcdWM1ZjRcdWM3NDQgXHVjODcwXHVjNzkxXHVkNTVjXHViMmU0LiBcdWFjMDEgXHViNzdjXHVjNmI0XHViNGRjXHViOWM4XHViMmU0LCBcdWM1ZDBcdWI5NzRcdWI5ZTVcdWM3NzQgXHViYTNjXHVjODAwIFx1YzcwNFx1Y2U1OCBcdWJjMTRcdWFmYjhcdWFlMzBcdWI5N2MgXHVkNTU4XHVhY2UwIFx1YWRmOCBcdWIyZTRcdWM3NGMgXHVjNTQ0XHVjNzc0XHVjNzk0XHVjNzc0IFx1YzcwNFx1Y2U1OCBcdWJjMTRcdWFmYjhcdWFlMzBcdWI5N2MgXHVkNTVjXHViMmU0LiBcdWM3MDRcdWNlNTggXHViYzE0XHVhZmI4XHVhZTMwXHVjNWQwIFx1YjMwMFx1ZDU3NFx1YzExYyBcdWM4ODAgXHViMzU0IFx1Yzc5MFx1YzEzOFx1ZDc4OCBcdWI5ZDBcdWQ1NThcdWM3OTBcdWJhNzQsIFx1YmMxNFx1YWZjMCBcdWI0NTAgXHVjNzA0XHVjZTU4XHViOTdjIFx1YzgxNVx1ZDU1OFx1YWNlMCBcdWFkZjggXHVjNzA0XHVjZTU4XHVjNWQwIFx1Yzc4OFx1YjI5NCBcdWFjMTJcdWM3NDQgXHViOWRlXHViYzE0XHVhZmJjXHViMmU0LiBcdWM3NzQgXHViNTRjIFx1YzgxNVx1ZDU1OFx1YjI5NCBcdWI0NTAgXHVjNzA0XHVjZTU4XHVhYzAwIFx1YjJlNFx1Yjk3YyBcdWQ1NDRcdWM2OTRcdWIyOTQgXHVjNWM2XHViMmU0LiBcdWI5Y2NcdWM1N2QgXHVjODE1XHVkNTVjIFx1YjQ1MCBcdWM3MDRcdWNlNThcdWFjMDAgXHVhYzE5XHVjNzNjXHViYTc0IFx1YzIxOFx1YzVmNFx1YzVkMCBcdWM1NDRcdWJiMzRcdWI3ZjAgXHViY2MwXHVkNjU0XHVhYzAwIFx1YzVjNlx1YjJlNC48XC9wPlxyXG5cclxuPHA+XHVjNTQ0XHVjNzc0XHVjNzk0XHVjNzQwIFx1YzVkMFx1Yjk3NFx1YjllNVx1Yzc3NCBcdWMyMThcdWM1ZjQgU1x1Yjk3YyBcdWM4MTVcdWI4MmNcdWQ1NThcdWI4MjRcdWIyOTQgXHViYWE5XHVjODAxIFx1YzVjNlx1Yzc3NCBcdWM1NDRcdWJiMzRcdWI4MDdcdWFjOGNcdWIwOTggXHViYzE0XHVhZmJjXHViMmU0XHViMjk0IFx1YzBhY1x1YzJlNFx1Yzc0NCBcdWM1NGNcdWFjZTAgXHVjNzg4XHViMmU0LiBcdWIzNTQgXHViMDk4XHVjNTQ0XHVhYzAwXHVjMTFjIFx1Yjc3Y1x1YzZiNFx1YjRkY1x1Yjk3YyBcdWMyZGNcdWM3OTFcdWQ1NThcdWFlMzAgXHVjODA0XHViZDgwXHVkMTMwIFx1YzVkMFx1Yjk3NFx1YjllNVx1Yzc3NCBcdWM1YjRcdWI1YmJcdWFjOGMgXHVjNzA0XHVjZTU4IFx1YmMxNFx1YWZiOFx1YWUzMFx1Yjk3YyBcdWQ1NjAgXHVhYzc0XHVjOWMwIFx1YmJmOFx1YjlhYyBcdWIyZTQgXHVjNTRjXHVhY2UwIFx1Yzc4OFx1YjJlNC4gXHVjNWQwXHViOTc0XHViOWU1XHVjNzQwIE0gXHViNzdjXHVjNmI0XHViNGRjXHVjNWQwIFx1YjMwMFx1ZDU1YyBcdWFjYzRcdWQ2OGRcdWM3NDQgXHVhYzAwXHVjOWMwXHVhY2UwIFx1Yzc4OFx1YjJlNC4gXHViNzdjXHVjNmI0XHViNGRjXHVjNzU4IFx1YmM4OFx1ZDYzOFx1Yjk3YyBcdWMyMWNcdWMxMWNcdWIzMDBcdWI4NWMgMCBcdWJkODBcdWQxMzAgTS0xIFx1YWU0Y1x1YzljMCBcdWI5ZTRcdWFjYmNcdWM3NDQgXHViNTRjLCBpXHViYzg4IFx1Yjc3Y1x1YzZiNFx1YjRkY1x1YzVkMFx1YzExYyBcdWM1ZDBcdWI5NzRcdWI5ZTVcdWM3NzQgXHViYzE0XHVhZmMwIFx1YjQ1MCBcdWM3MDRcdWNlNThcdWIyOTQgWFtpXVx1YzY0MCBZW2ldXHVjNzc0XHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWM1NDRcdWM3NzRcdWM3OTRcdWM3NDAgXHVjMjE4XHVjNWY0IFNcdWI5N2MgXHVjNjI0XHViOTg0XHVjYzI4XHVjMjFjXHVjNzNjXHViODVjIFx1YzgxNVx1YjgyY1x1ZDU1OFx1YWUzOCBcdWM2ZDBcdWQ1NWNcdWIyZTQuIFx1YWMwMSBcdWI3N2NcdWM2YjRcdWI0ZGNcdWI5N2MgXHVjMmRjXHVjNzkxXHVkNTU4XHVhZTMwIFx1YzgwNFx1YzVkMCBcdWI5Y2NcdWM1N2QgXHVjMjE4XHVjNWY0XHVjNzc0IFx1Yzc3NFx1YmJmOCBcdWM4MTVcdWI4MmNcdWI0MThcdWM1YjQgXHVjNzg4XHViMmU0XHViYTc0IFx1Yjc3Y1x1YzZiNFx1YjRkY1x1Yjk3YyBcdWIzNTQgXHVjNzc0XHVjMGMxIFx1YzljNFx1ZDU4OVx1ZDU1OFx1YzljMCBcdWM1NGFcdWFjZTAgXHViYTQ4XHVjZDljIFx1YzIxOCBcdWM3ODhcdWIyZTQuIFx1Y2M5OFx1Yzc0YyBcdWMyMThcdWM1ZjQgU1x1YzVkMCBcdWIzMDBcdWQ1NWMgXHVjODE1XHViY2Y0XHVjNjQwIFx1YzVkMFx1Yjk3NFx1YjllNVx1Yzc3NCBNIFx1Yjc3Y1x1YzZiNFx1YjRkYyBcdWIzZDlcdWM1NDggXHVjNWI0XHViNWJiXHVhYzhjIFx1YzcwNFx1Y2U1OCBcdWJjMTRcdWFmYjhcdWFlMzBcdWI5N2MgXHVkNTYwXHVjOWMwXHVjNWQwIFx1YjMwMFx1ZDU1YyBcdWM4MTVcdWJjZjRcdWFjMDAgXHVjOGZjXHVjNWI0XHVjODRjXHVjNzQ0IFx1YjU0YywgXHVjNTQ0XHVjNzc0XHVjNzk0XHVjNzc0IFx1YzViNFx1YjViYlx1YWM4YyBcdWM3MDRcdWNlNTggXHViYzE0XHVhZmI4XHVhZTMwXHViOTdjIFx1ZDU3NFx1YzU3Y1x1ZDU2MFx1YzljMCBcdWFkNmNcdWQ1NThcdWMyZGNcdWM2MjQuIFx1Y2Q5NFx1YWMwMFx1YzgwMVx1YzczY1x1Yjg1YywgXHVjNWI0XHViNWE0IFx1YmQ4MFx1YmQ4NCBcdWJiMzhcdWM4MWNcdWM1ZDAgXHViMzAwXHVkNTc0XHVjMTFjXHViMjk0IFx1YWMwMFx1YjJhNVx1ZDU1YyBcdWFjMDBcdWM3YTUgXHVjODAxXHVjNzQwIFx1Yjc3Y1x1YzZiNFx1YjRkYyBcdWI5Y2NcdWM1ZDAgXHVjODE1XHViODJjXHVjNzQ0IFx1ZDU3NFx1YzU3Y1x1ZDU2MCBcdWMyMThcdWIzYzQgXHVjNzg4XHViMmU0LiBcdWM1YjhcdWM4MWNcdWIwOTggTSBcdWI3N2NcdWM2YjRcdWI0ZGMgXHVjNTQ4XHVjNWQwIFx1YzgxNVx1YjgyY1x1Yzc3NCBcdWFjMDBcdWIyYTVcdWQ1NThcdWIzYzRcdWI4NWQgXHVjNzg1XHViODI1XHVjNzc0IFx1YzhmY1x1YzViNFx1YzljNFx1YjJlNC48XC9wPlxyXG5cclxuPHA+XHViOWNjXHVjNTdkIFx1YzViNFx1YjVhNCBcdWI3N2NcdWM2YjRcdWI0ZGNcdWM1ZDBcdWMxMWMgXHVjNWQwXHViOTc0XHViOWU1XHVjNzc0IFx1YzcwNFx1Y2U1OCBcdWJjMTRcdWFmYjhcdWFlMzBcdWI5N2MgXHVkNTVjIFx1YjRhNCBcdWMyMThcdWM1ZjRcdWM3NzQgXHVjODE1XHViODJjXHViNDE4XHVjNWI0IFx1Yzc4OFx1YjJlNFx1YmE3NCwgXHVjNTQ0XHVjNzc0XHVjNzk0XHVjNzQwIFx1YWMxOVx1Yzc0MCBcdWI0NTAgXHVjNzA0XHVjZTU4XHViOTdjIFx1YjlkZVx1YmMxNFx1YWZkNFx1YzhmY1x1YmE3NCBcdWI0MWNcdWIyZTQgKFx1YzYwOFx1Yjk3YyBcdWI0ZTRcdWM1YjQgMFx1YmM4OCBcdWM3MDRcdWNlNThcdWM2NDAgMFx1YmM4OCBcdWM3MDRcdWNlNTgpLiBcdWFkZjhcdWI3ZWNcdWJhNzQgXHVjNzc0IFx1Yjc3Y1x1YzZiNFx1YjRkY1x1Yzc1OCBcdWIwNWRcdWM1ZDBcdWMxMWMgXHVjMjE4XHVjNWY0IFNcdWIyOTQgXHVjODE1XHViODJjXHViNDE4XHVhY2UwIFx1YzU0NFx1Yzc3NFx1Yzc5NFx1Yzc0MCBcdWJhNDhcdWNkOWMgXHVjMjE4IFx1Yzc4OFx1YjJlNC4gXHViNjEwXHVkNTVjIFx1Y2M5OFx1Yzc0Y1x1YmQ4MFx1ZDEzMCBcdWMyMThcdWM1ZjQgU1x1YWMwMCBcdWM4MTVcdWI4MmNcdWI0MThcdWM1YjQgXHVjNzg4XHViMmU0XHViYTc0IFx1ZDU0NFx1YzY5NFx1ZDU1YyBcdWI3N2NcdWM2YjRcdWI0ZGNcdWM3NTggXHVjZDVjXHVjMThjIFx1YzIxOFx1YjI5NCAwIFx1Yzc3NFx1YjJlNC48XC9wPlxyXG5cclxuPHA+XHVjNjA4XHVjODFjIDE8XC9wPlxyXG5cclxuPHVsPlxyXG5cdDxsaT5cdWNjOThcdWM3NGMgXHVjMjE4XHVjNWY0IFMgPSA0LCAzLCAyLCAxLCAwPFwvbGk+XHJcblx0PGxpPlx1YzVkMFx1Yjk3NFx1YjllNVx1Yzc0MCBNID0gNlx1Yjc3Y1x1YzZiNFx1YjRkY1x1Yjk3YyBcdWM5YzRcdWQ1ODlcdWQ1NThcdWI4MjQgXHVkNTVjXHViMmU0LjxcL2xpPlxyXG5cdDxsaT5cdWM1ZDBcdWI5NzRcdWI5ZTVcdWM3NzQgXHViYzE0XHVhZmMwIFx1YzcwNFx1Y2U1OFx1YzVkMCBcdWIzMDBcdWQ1NWMgXHVjODE1XHViY2Y0IFhcdWM2NDAgWVx1YjI5NCBYID0gMCwgMSwgMiwgMywgMCwgMVx1Yzc3NFx1YmE3MCwgWSA9IDEsIDIsIDMsIDQsIDEsIDIgXHVjNzc0XHViMmU0LiBcdWIyZTRcdWI5NzRcdWFjOGMgXHVjNTk4XHVhZTMwXHVkNTU4XHViYTc0IFx1YzVkMFx1Yjk3NFx1YjllNVx1Yzc0MCAoMCwgMSksICgxLDIpLCAoMiwzKSwgKDMsNCksICgwLCAxKSBcdWFkZjhcdWI5YWNcdWFjZTAgKDEsIDIpIFx1YzIxY1x1YzExY1x1YjMwMFx1Yjg1YyBcdWM3MDRcdWNlNThcdWI5N2MgXHViYzE0XHVhZmMwIFx1YWNjNFx1ZDY4ZFx1Yzc3NFx1YjJlNC48XC9saT5cclxuPFwvdWw+XHJcblxyXG48cD5cdWM3NzRcdWI3ZWNcdWQ1NWMgXHVjMGMxXHVkNjY5XHVjNWQwXHVjMTFjIFx1YzU0NFx1Yzc3NFx1Yzc5NFx1Yzc0MCAzIFx1Yjc3Y1x1YzZiNFx1YjRkYyBcdWI5Y2NcdWM1ZDAgXHVjMjE4XHVjNWY0IFNcdWI5N2MgMCwgMSwgMiwgMywgNFx1Yjg1YyBcdWM4MTVcdWI4MmNcdWQ1NjAgXHVjMjE4IFx1Yzc4OFx1YjJlNC4gXHVjNTQ0XHVjNzc0XHVjNzk0XHVjNzQwICgwLCA0KSwgKDEsIDMpIFx1YWRmOFx1YjlhY1x1YWNlMCAoMywgNCkgXHVjMjFjXHVjMTFjXHViMzAwXHViODVjIFx1YzcwNFx1Y2U1OCBcdWJjMTRcdWFmYjhcdWFlMzBcdWI5N2MgXHVkNTU4XHViYTc0IFx1YjQxY1x1YjJlNC48XC9wPlxyXG5cclxuPHA+XHVjNTQ0XHViNzk4IFx1ZDQ1Y1x1YjI5NCBcdWFjMDEgXHVjNzA0XHVjZTU4IFx1YmMxNFx1YWZiOFx1YWUzMFx1YjljOFx1YjJlNCBcdWMyMThcdWM1ZjQgU1x1Yzc1OCBcdWIwYjRcdWM2YTlcdWM3NzQgXHVjNWI0XHViNWJiXHVhYzhjIFx1YmMxNFx1YjAwY1x1YjI5NFx1YzljMCBcdWIwOThcdWQwYzBcdWIwYjRcdWFjZTAgXHVjNzg4XHViMmU0LjxcL3A+XHJcblxyXG48dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1ib3JkZXJlZFwiIHN0eWxlPVwid2lkdGg6MzAlXCI+XHJcblx0PHRoZWFkPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGg+XHViNzdjXHVjNmI0XHViNGRjPFwvdGg+XHJcblx0XHRcdDx0aD5cdWMwYWNcdWI3OGM8XC90aD5cclxuXHRcdFx0PHRoPlx1YmMxNFx1YWZjMCBcdWI0NTAgXHVjNzA0XHVjZTU4PFwvdGg+XHJcblx0XHRcdDx0aD5cdWMyMThcdWM1ZjQ8XC90aD5cclxuXHRcdDxcL3RyPlxyXG5cdDxcL3RoZWFkPlxyXG5cdDx0Ym9keT5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPlx1Y2QwOFx1YWUzMDxcL3RkPlxyXG5cdFx0XHQ8dGQ+Jm5ic3A7PFwvdGQ+XHJcblx0XHRcdDx0ZD4mbmJzcDs8XC90ZD5cclxuXHRcdFx0PHRkPjQsIDMsIDIsIDEsIDA8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQ+MDxcL3RkPlxyXG5cdFx0XHQ8dGQ+XHVjNWQwXHViOTc0XHViOWU1PFwvdGQ+XHJcblx0XHRcdDx0ZD4oMCwgMSk8XC90ZD5cclxuXHRcdFx0PHRkPjMsIDQsIDIsIDEsIDA8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQ+MDxcL3RkPlxyXG5cdFx0XHQ8dGQ+XHVjNTQ0XHVjNzc0XHVjNzk0PFwvdGQ+XHJcblx0XHRcdDx0ZD4oMCwgNCk8XC90ZD5cclxuXHRcdFx0PHRkPjAsIDQsIDIsIDEsIDM8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQ+MTxcL3RkPlxyXG5cdFx0XHQ8dGQ+XHVjNWQwXHViOTc0XHViOWU1PFwvdGQ+XHJcblx0XHRcdDx0ZD4oMSwgMik8XC90ZD5cclxuXHRcdFx0PHRkPjAsIDIsIDQsIDEsIDM8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQ+MTxcL3RkPlxyXG5cdFx0XHQ8dGQ+XHVjNTQ0XHVjNzc0XHVjNzk0PFwvdGQ+XHJcblx0XHRcdDx0ZD4oMSwgMyk8XC90ZD5cclxuXHRcdFx0PHRkPjAsIDEsIDQsIDIsIDM8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQ+MjxcL3RkPlxyXG5cdFx0XHQ8dGQ+XHVjNWQwXHViOTc0XHViOWU1PFwvdGQ+XHJcblx0XHRcdDx0ZD4oMiwgMyk8XC90ZD5cclxuXHRcdFx0PHRkPjAsIDEsIDIsIDQsIDM8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQ+MjxcL3RkPlxyXG5cdFx0XHQ8dGQ+XHVjNTQ0XHVjNzc0XHVjNzk0PFwvdGQ+XHJcblx0XHRcdDx0ZD4oMywgNCk8XC90ZD5cclxuXHRcdFx0PHRkPjAsIDEsIDIsIDMsIDQ8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdDxcL3Rib2R5PlxyXG48XC90YWJsZT5cclxuXHJcbjxwPlx1YzYwOFx1YzgxYyAyPFwvcD5cclxuXHJcbjx1bD5cclxuXHQ8bGk+XHVjYzk4XHVjNzRjIFx1YzIxOFx1YzVmNCBTID0gMywgMCwgNCwgMiwgMTxcL2xpPlxyXG5cdDxsaT5cdWM1ZDBcdWI5NzRcdWI5ZTVcdWM3NDAgTSA9IDVcdWI3N2NcdWM2YjRcdWI0ZGNcdWI5N2MgXHVjOWM0XHVkNTg5XHVkNTU4XHViODI0IFx1ZDU1Y1x1YjJlNC48XC9saT5cclxuXHQ8bGk+XHVjNWQwXHViOTc0XHViOWU1XHVjNzQwICgxLCAxKSwgKDQsIDApLCAoMiwgMyksICgxLCA0KSBcdWFkZjhcdWI5YWNcdWFjZTAgKDAsIDQpIFx1YzIxY1x1YzExY1x1YjMwMFx1Yjg1YyBcdWM3MDRcdWNlNThcdWI5N2MgXHViYzE0XHVhZmMwIFx1YWNjNFx1ZDY4ZFx1Yzc3NFx1YjJlNC48XC9saT5cclxuPFwvdWw+XHJcblxyXG48cD5cdWM3NzRcdWI3ZWNcdWQ1NWMgXHVjMGMxXHVkNjY5XHVjNWQwXHVjMTFjIFx1YzU0NFx1Yzc3NFx1Yzc5NFx1Yzc0MCAzIFx1Yjc3Y1x1YzZiNFx1YjRkYyBcdWI5Y2NcdWM1ZDAgXHVjMjE4XHVjNWY0IFNcdWI5N2MgXHVjODE1XHViODJjXHVkNTYwIFx1YzIxOCBcdWM3ODhcdWIyZTQuIFx1YzU0NFx1Yzc3NFx1Yzc5NFx1Yzc0MCAoMSwgNCksICg0LCAyKSBcdWFkZjhcdWI5YWNcdWFjZTAgKDIsIDIpIFx1YzIxY1x1YzExY1x1YjMwMFx1Yjg1YyBcdWM3MDRcdWNlNTggXHViYzE0XHVhZmI4XHVhZTMwXHViOTdjIFx1ZDU1OFx1YmE3NCBcdWI0MWNcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1YzU0NFx1Yjc5OCBcdWQ0NWNcdWIyOTQgXHVhYzAxIFx1YzcwNFx1Y2U1OCBcdWJjMTRcdWFmYjhcdWFlMzBcdWI5YzhcdWIyZTQgXHVjMjE4XHVjNWY0IFNcdWM3NTggXHViMGI0XHVjNmE5XHVjNzc0IFx1YzViNFx1YjViYlx1YWM4YyBcdWJjMTRcdWIwMGNcdWIyOTRcdWM5YzAgXHViMDk4XHVkMGMwXHViMGI0XHVhY2UwIFx1Yzc4OFx1YjJlNC48XC9wPlxyXG5cclxuPHRhYmxlIGNsYXNzPVwidGFibGUgdGFibGUtYm9yZGVyZWRcIiBzdHlsZT1cIndpZHRoOjMwJVwiPlxyXG5cdDx0aGVhZD5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRoPlx1Yjc3Y1x1YzZiNFx1YjRkYzxcL3RoPlxyXG5cdFx0XHQ8dGg+XHVjMGFjXHViNzhjPFwvdGg+XHJcblx0XHRcdDx0aD5cdWJjMTRcdWFmYzAgXHViNDUwIFx1YzcwNFx1Y2U1ODxcL3RoPlxyXG5cdFx0XHQ8dGg+XHVjMjE4XHVjNWY0PFwvdGg+XHJcblx0XHQ8XC90cj5cclxuXHQ8XC90aGVhZD5cclxuXHQ8dGJvZHk+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0ZD5cdWNkMDhcdWFlMzA8XC90ZD5cclxuXHRcdFx0PHRkPiZuYnNwOzxcL3RkPlxyXG5cdFx0XHQ8dGQ+Jm5ic3A7PFwvdGQ+XHJcblx0XHRcdDx0ZD4zLCAwLCA0LCAyLCAxPFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPjA8XC90ZD5cclxuXHRcdFx0PHRkPlx1YzVkMFx1Yjk3NFx1YjllNTxcL3RkPlxyXG5cdFx0XHQ8dGQ+KDEsIDEpPFwvdGQ+XHJcblx0XHRcdDx0ZD4zLCAwLCA0LCAyLCAxPFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPjA8XC90ZD5cclxuXHRcdFx0PHRkPlx1YzU0NFx1Yzc3NFx1Yzc5NDxcL3RkPlxyXG5cdFx0XHQ8dGQ+KDEsIDQpPFwvdGQ+XHJcblx0XHRcdDx0ZD4zLCAxLCA0LCAyLCAwPFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPjE8XC90ZD5cclxuXHRcdFx0PHRkPlx1YzVkMFx1Yjk3NFx1YjllNTxcL3RkPlxyXG5cdFx0XHQ8dGQ+KDQsIDApPFwvdGQ+XHJcblx0XHRcdDx0ZD4wLCAxLCA0LCAyLCAzPFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPjE8XC90ZD5cclxuXHRcdFx0PHRkPlx1YzU0NFx1Yzc3NFx1Yzc5NDxcL3RkPlxyXG5cdFx0XHQ8dGQ+KDQsIDIpPFwvdGQ+XHJcblx0XHRcdDx0ZD4wLCAxLCAzLCAyLCA0PFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPjI8XC90ZD5cclxuXHRcdFx0PHRkPlx1YzVkMFx1Yjk3NFx1YjllNTxcL3RkPlxyXG5cdFx0XHQ8dGQ+KDIsIDMpPFwvdGQ+XHJcblx0XHRcdDx0ZD4wLCAxLCAyLCAzLCA0PFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPjI8XC90ZD5cclxuXHRcdFx0PHRkPlx1YzU0NFx1Yzc3NFx1Yzc5NDxcL3RkPlxyXG5cdFx0XHQ8dGQ+KDIsIDIpPFwvdGQ+XHJcblx0XHRcdDx0ZD4wLCAxLCAyLCAzLCA0PFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHQ8XC90Ym9keT5cclxuPFwvdGFibGU+XHJcblxyXG48cD5cdWMyMThcdWM1ZjQgU1x1YzY0MCBcdWM4MTVcdWMyMTggTSwgXHVhZGY4XHViOWFjXHVhY2UwIFgsIFlcdWFjMDAgXHVjOGZjXHVjNWI0XHVjOWM0XHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWM1NDRcdWM3NzRcdWM3OTRcdWM3NzQgXHVjMjE4XHVjNWY0IFNcdWI5N2MgXHVjODE1XHViODJjXHVkNTU4XHVhZTMwIFx1YzcwNFx1ZDU3NCBcdWM1YjRcdWI1YmJcdWFjOGMgXHVjNzA0XHVjZTU4XHViOTdjIFx1YmMxNFx1YWZjMFx1YzljMFx1YzVkMCBcdWIzMDBcdWQ1NzQgXHVhY2M0XHVjMGIwXHVkNTU4XHVjNzkwLjxcL3A+XHJcblxyXG48cD5cdWIyZTRcdWM3NGMgXHVkNTY4XHVjMjE4IGZpbmRTd2FwUGFpcnNcdWI5N2MgXHVhZDZjXHVkNjA0XHVkNTc0XHVjNTdjIFx1ZDU1Y1x1YjJlNC48XC9wPlxyXG5cclxuPHVsPlxyXG5cdDxsaT5maW5kU3dhcFBhaXJzKE4sIFMsIE0sIFgsIFksIFAsIFEpICZtZGFzaDsgXHVjNzc0IFx1ZDU2OFx1YzIxOFx1YjI5NCBcdWIyZTggXHVkNTVjIFx1YmM4OCBcdWFkZjhcdWI4MDhcdWM3NzRcdWIzNTRcdWM1ZDAgXHVjNzU4XHVkNTc0IFx1ZDYzOFx1Y2Q5Y1x1YjQxY1x1YjJlNC5cclxuXHQ8dWw+XHJcblx0XHQ8bGk+TjogXHVjMjE4XHVjNWY0IFNcdWM3NTggXHVkMDZjXHVhZTMwPFwvbGk+XHJcblx0XHQ8bGk+UzogXHVjYzk4XHVjNzRjIFx1YzIxOFx1YzVmNCBTXHVjNWQwIFx1YjMwMFx1ZDU1YyBcdWM4MTVcdWJjZjRcdWI5N2MgXHVhYzAwXHVjOWMwXHVhY2UwIFx1Yzc4OFx1YjI5NCBcdWM4MTVcdWMyMTggXHViYzMwXHVjNWY0PFwvbGk+XHJcblx0XHQ8bGk+TTogXHVjNWQwXHViOTc0XHViOWU1XHVjNzc0IFx1YWNjNFx1ZDY4ZFx1ZDU1YyBcdWI3N2NcdWM2YjRcdWI0ZGMgXHVjMjE4PFwvbGk+XHJcblx0XHQ8bGk+WCwgWTogXHVkMDZjXHVhZTMwXHVhYzAwIE1cdWM3NzggXHVjODE1XHVjMjE4IFx1YmMzMFx1YzVmNFx1YjRlNC4gMCAmbGU7IGkgJmxlOyBNLTEgXHVjNzc4IGlcdWM1ZDAgXHViMzAwXHVkNTc0IGlcdWJjODggXHViNzdjXHVjNmI0XHViNGRjXHVjNWQwXHVjMTFjIFx1YzVkMFx1Yjk3NFx1YjllNVx1Yzc0MCBcdWI0NTAgXHVjNzA0XHVjZTU4IFhbaV0sIFlbaV1cdWM1ZDAgXHVjNzg4XHViMjk0IFx1YzIxOFx1Yjk3YyBcdWI5ZGVcdWJjMTRcdWFmYmNcdWIyZTQuPFwvbGk+XHJcblx0XHQ8bGk+UCwgUTogXHVjODE1XHVjMjE4IFx1YmMzMFx1YzVmNFx1YjRlNC4gXHVjNTQ0XHVjNzc0XHVjNzk0XHVjNzc0IFx1YmMxNFx1YWZjMCBcdWM3MDRcdWNlNThcdWM1ZDAgXHViMzAwXHVkNTVjIFx1YzgxNVx1YmNmNFx1Yjk3YyBcdWM3MDRcdWQ1NzQgXHVkNTQ0XHVjNjk0XHVkNTVjIFx1YmMzMFx1YzVmNFx1Yzc3NFx1YjJlNC4gUlx1Yzc3NCBcdWM1ZWNcdWI3ZWNcdWJkODRcdWM3NzQgXHVhZDZjXHVkNTVjIFx1YzgxNVx1YjgyY1x1ZDU1OFx1YWUzMCBcdWM3MDRcdWQ1NzQgXHVkNTQ0XHVjNjk0XHVkNTVjIFx1Yjc3Y1x1YzZiNFx1YjRkYyBcdWMyMThcdWI3N2NcdWFjZTAgXHVkNTU4XHVjNzkwLiAwXHVhY2ZjIFItMSBcdWMwYWNcdWM3NzRcdWM3NTggaVx1YzVkMCBcdWIzMDBcdWQ1NzRcdWMxMWMgaVx1YmM4OCBcdWI3N2NcdWM2YjRcdWI0ZGNcdWM1ZDAgXHVjNTQ0XHVjNzc0XHVjNzk0XHVjNzc0IFx1YWNlMFx1Yjk3OCBcdWI5ZGVcdWJjMTRcdWFmYzAgXHViNDUwIFx1YzcwNFx1Y2U1OFx1Yjk3YyBQW2ldXHVjNjQwIFFbaV1cdWM1ZDAgXHVjODAwXHVjN2E1XHVkNTVjXHViMmU0LiBcdWJjMzBcdWM1ZjQgUFx1YzY0MCBRXHViMjk0IFx1Yzc3NFx1YmJmOCBcdWQwNmNcdWFlMzAgTVx1YzczY1x1Yjg1YyBcdWJhNTRcdWJhYThcdWI5YWNcdWFjMDAgXHVjN2ExXHVkNjAwXHVjNzg4XHViMmU0LjxcL2xpPlxyXG5cdFx0PGxpPlx1Yzc3NCBcdWQ1NjhcdWMyMThcdWIyOTQgXHVjNzA0XHVjNWQwIFx1YzgxNVx1Yzc1OFx1YjQxYyBSIFx1YWMxMlx1Yzc0NCBcdWI5YWNcdWQxMzRcdWQ1NzRcdWM1N2MgXHVkNTVjXHViMmU0LjxcL2xpPlxyXG5cdDxcL3VsPlxyXG5cdDxcL2xpPlxyXG48XC91bD5cclxuXHJcbjxwPk1cdWI3N2NcdWM2YjRcdWI0ZGMgXHVkNjM5XHVjNzQwIFx1YmNmNFx1YjJlNCBcdWIzNTQgXHVjNzdjXHVjYzBkIFx1YzgxNVx1YjgyYyBcdWFjMDBcdWIyYTVcdWQ1NThcdWIzYzRcdWI4NWQgXHVjNzg1XHViODI1XHVjNzc0IFx1YzhmY1x1YzViNFx1YzljNFx1YjJlNC48XC9wPlxyXG4iLCJpbnB1dCI6Ijx1bD5cclxuXHQ8bGk+MVx1YmM4OCBcdWM5MDQ6IE48XC9saT5cclxuXHQ8bGk+Mlx1YmM4OCBcdWM5MDQ6IFNbMF0gJmhlbGxpcDsgU1tOIC0gMV08XC9saT5cclxuXHQ8bGk+M1x1YmM4OCBcdWM5MDQ6IE08XC9saT5cclxuXHQ8bGk+NCB+IE0gKyAzXHViYzg4IFx1YzkwNDogWFtpXSBZW2ldPFwvbGk+XHJcbjxcL3VsPlxyXG5cclxuPHA+MSAmbGU7IE4gJmxlOyA1MDAsIE0gPSAzME4sIFIgJmxlOyBNPFwvcD5cclxuIiwib3V0cHV0IjoiPHA+ZmluZFN3YXBQYWlyc1x1YWMwMCBcdWI5YWNcdWQxMzRcdWQ1NWMgXHVhYzEyXHVjNzQ0IFx1Y2Q5Y1x1YjgyNVx1ZDU1Y1x1YjJlNC48XC9wPlxyXG5cclxuPHA+XHViMmU0XHVjNzRjIFx1YzU5MVx1YzJkZFx1YzVkMCBcdWI1MzBcdWI3N2MgXHVjZDljXHViODI1XHVkNTVjXHViMmU0OjxcL3A+XHJcblxyXG48dWw+XHJcblx0PGxpPjFcdWJjODggXHVjOTA0OiBmaW5kU3dhcFBhaXJzXHVjNzU4IFx1YjlhY1x1ZDEzNFx1YWMxMiBSPFwvbGk+XHJcblx0PGxpPjIraVx1YmM4OCBcdWM5MDQgKDAgJmxlOyBpICZsdDsgUik6IFBbaV0gUVtpXTxcL2xpPlxyXG48XC91bD5cclxuIiwiaGludCI6IiIsIm9yaWdpbmFsIjoiMCIsInByb2JsZW1fbGFuZ19jb2RlIjoiXHVkNTVjXHVhZDZkXHVjNWI0In0seyJwcm9ibGVtX2lkIjoiMTA5MjMiLCJwcm9ibGVtX2xhbmciOiIxIiwidGl0bGUiOiJTb3J0aW5nIiwiZGVzY3JpcHRpb24iOiI8cD5BaXpoYW4gaGFzIGEgc2VxdWVuY2Ugb2YgTiBpbnRlZ2VycyBTWzBdLCBTWzFdLCAuLi4sIFNbTi0xXS4gVGhlIHNlcXVlbmNlIGNvbnNpc3RzIG9mIGRpc3RpbmN0IG51bWJlcnMgZnJvbSAwIHRvIE4tMS4gU2hlIGlzIHRyeWluZyB0byBzb3J0IHRoaXMgc2VxdWVuY2UgaW4gYXNjZW5kaW5nIG9yZGVyIGJ5IHN3YXBwaW5nIHNvbWUgcGFpcnMgb2YgZWxlbWVudHMuIEhlciBmcmllbmQgRXJtZWsgaXMgYWxzbyBnb2luZyB0byBzd2FwIHNvbWUgcGFpcnMgb2YgZWxlbWVudHMgJm1kYXNoOyBub3QgbmVjZXNzYXJpbHkgaW4gYSBoZWxwZnVsIHdheS48XC9wPlxyXG5cclxuPHA+RXJtZWsgYW5kIEFpemhhbiBhcmUgZ29pbmcgdG8gbW9kaWZ5IHRoZSBzZXF1ZW5jZSBpbiBhIHNlcmllcyBvZiByb3VuZHMuIEluIGVhY2ggcm91bmQsIGZpcnN0IEVybWVrIG1ha2VzIGEgc3dhcCBhbmQgdGhlbiBBaXpoYW4gbWFrZXMgYW5vdGhlciBzd2FwLiBNb3JlIHByZWNpc2VseSwgdGhlIHBlcnNvbiBtYWtpbmcgYSBzd2FwIGNob29zZXMgdHdvIHZhbGlkIGluZGljZXMgYW5kIHN3YXBzIHRoZSBlbGVtZW50cyBhdCB0aG9zZSBpbmRpY2VzLiBOb3RlIHRoYXQgdGhlIHR3byBpbmRpY2VzIGRvIG5vdCBoYXZlIHRvIGJlIGRpc3RpbmN0LiBJZiB0aGV5IGFyZSBlcXVhbCwgdGhlIGN1cnJlbnQgcGVyc29uIHN3YXBzIGFuIGVsZW1lbnQgd2l0aCBpdHNlbGYsIHdoaWNoIGRvZXMgbm90IGNoYW5nZSB0aGUgc2VxdWVuY2UuPFwvcD5cclxuXHJcbjxwPkFpemhhbiBrbm93cyB0aGF0IEVybWVrIGRvZXMgbm90IGFjdHVhbGx5IGNhcmUgYWJvdXQgc29ydGluZyB0aGUgc2VxdWVuY2UgUy4gU2hlIGFsc28ga25vd3MgdGhlIGV4YWN0IGluZGljZXMgRXJtZWsgaXMgZ29pbmcgdG8gY2hvb3NlLiBFcm1layBwbGFucyB0byB0YWtlIHBhcnQgaW4gTSByb3VuZHMgb2Ygc3dhcHBpbmcuIFdlIG51bWJlciB0aGVzZSByb3VuZHMgZnJvbSAwIHRvIE0tMS4gRm9yIGVhY2ggYmV0d2VlbiAwIGFuZCBNLTEgaW5jbHVzaXZlLCBFcm1layB3aWxsIGNob29zZSB0aGUgaW5kaWNlcyBYW2ldIGFuZCBZW2ldIGluIHJvdW5kIGkuPFwvcD5cclxuXHJcbjxwPkFpemhhbiB3YW50cyB0byBzb3J0IHRoZSBzZXF1ZW5jZSBTLiBCZWZvcmUgZWFjaCByb3VuZCwgaWYgQWl6aGFuIHNlZXMgdGhhdCB0aGUgc2VxdWVuY2UgaXMgYWxyZWFkeSBzb3J0ZWQgaW4gYXNjZW5kaW5nIG9yZGVyLCBzaGUgd2lsbCB0ZXJtaW5hdGUgdGhlIGVudGlyZSBwcm9jZXNzLiBHaXZlbiB0aGUgb3JpZ2luYWwgc2VxdWVuY2UgUyBhbmQgdGhlIGluZGljZXMgRXJtZWsgaXMgZ29pbmcgdG8gY2hvb3NlLCB5b3VyIHRhc2sgaXMgdG8gZmluZCBhIHNlcXVlbmNlIG9mIHN3YXBzLCB3aGljaCBBaXpoYW4gY2FuIHVzZSB0byBzb3J0IHRoZSBzZXF1ZW5jZSBTLiBJbiBhZGRpdGlvbiwgaW4gc29tZSBzdWJ0YXNrcyB5b3UgYXJlIHJlcXVpcmVkIHRvIGZpbmQgYSBzZXF1ZW5jZSBvZiBzd2FwcyB0aGF0IGlzIGFzIHNob3J0IGFzIHBvc3NpYmxlLiBZb3UgbWF5IGFzc3VtZSB0aGF0IGl0IGlzIHBvc3NpYmxlIHRvIHNvcnQgdGhlIHNlcXVlbmNlIFMgaW4gTSBvciBmZXdlciByb3VuZHMuPFwvcD5cclxuXHJcbjxwPk5vdGUgdGhhdCBpZiBBaXpoYW4gc2VlcyB0aGF0IHRoZSBzZXF1ZW5jZSBTIGlzIHNvcnRlZCBhZnRlciBFcm1layZyc3F1bztzIHN3YXAsIHNoZSBjYW4gY2hvb3NlIHRvIHN3YXAgdHdvIGVxdWFsIGluZGljZXMgKGUuZy4sIDAgYW5kIDApLiBBcyBhIHJlc3VsdCB0aGUgc2VxdWVuY2UgUyBpcyBhbHNvIHNvcnRlZCBhZnRlciB0aGUgZW50aXJlIHJvdW5kLCBzbyBBaXpoYW4gcmVhY2hlcyBoZXIgZ29hbC4gQWxzbyBub3RlIHRoYXQgaWYgdGhlIGluaXRpYWxzZXF1ZW5jZSBTIGlzIGFscmVhZHkgc29ydGVkLCB0aGUgbWluaW1hbCBudW1iZXIgb2Ygcm91bmRzIG5lZWRlZCB0byBzb3J0IGl0IGlzIDAuPFwvcD5cclxuXHJcbjxwPkV4YW1wbGUgMTxcL3A+XHJcblxyXG48cD5TdXBwb3NlIHRoYXQ6PFwvcD5cclxuXHJcbjx1bD5cclxuXHQ8bGk+VGhlIGluaXRpYWxzZXF1ZW5jZSBpcyBTID0gNCwgMywgMiwgMSwgMC48XC9saT5cclxuXHQ8bGk+RXJtZWsgaXMgd2lsbGluZyB0byBtYWtlIE0gPSA2IHN3YXBzLjxcL2xpPlxyXG5cdDxsaT5UaGUgc2VxdWVuY2VzIGFuZCB0aGF0IGRlc2NyaWJlIHRoZSBpbmRpY2VzIEVybWVrIGlzIGdvaW5nIHRvIGNob29zZSBhcmUgWCA9IDAsIDEsIDIsIDMsIDAsIDEgYW5kIFkgPSAxLCAyLCAzLCA0LCAxLCAyLiBJbiBvdGhlciB3b3JkcywgdGhlIHBhaXJzIG9mIGluZGljZXMgdGhhdCBFcm1layBwbGFucyB0byBjaG9vc2UgYXJlICgwLCAxKSwgKDEsIDIpLCAoMiwgMyksICgzLCA0KSwgKDAsIDEpLCBhbmQgKDEsIDIpLjxcL2xpPlxyXG48XC91bD5cclxuXHJcbjxwPkluIHRoaXMgc2V0dGluZyBBaXpoYW4gY2FuIHNvcnQgdGhlIHNlcXVlbmNlIFMgaW50byB0aGUgb3JkZXIgMCwgMSwgMiwgMywgNCBpbiB0aHJlZSByb3VuZHMuIFNoZSBjYW4gZG8gc28gYnkgY2hvb3NpbmcgdGhlIGluZGljZXMgKDAsIDQpLCAoMSwgMyksIGFuZCB0aGVuICgzLCA0KS48XC9wPlxyXG5cclxuPHA+VGhlIGZvbGxvd2luZyB0YWJsZSBzaG93cyBob3cgRXJtZWsgYW5kIEFpemhhbiBtb2RpZnkgdGhlIHNlcXVlbmNlLjxcL3A+XHJcblxyXG48dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1ib3JkZXJlZFwiIHN0eWxlPVwid2lkdGg6MzAlXCI+XHJcblx0PHRoZWFkPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGg+Um91bmQ8XC90aD5cclxuXHRcdFx0PHRoPlBsYXllcjxcL3RoPlxyXG5cdFx0XHQ8dGg+UGlhciBvZiBzd2FwcGVkIGluZGljZXM8XC90aD5cclxuXHRcdFx0PHRoPlNlcXVlbmNlPFwvdGg+XHJcblx0XHQ8XC90cj5cclxuXHQ8XC90aGVhZD5cclxuXHQ8dGJvZHk+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0ZD5iZWdpbm5pbmc8XC90ZD5cclxuXHRcdFx0PHRkPiZuYnNwOzxcL3RkPlxyXG5cdFx0XHQ8dGQ+Jm5ic3A7PFwvdGQ+XHJcblx0XHRcdDx0ZD40LCAzLCAyLCAxLCAwPFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPjA8XC90ZD5cclxuXHRcdFx0PHRkPkVybWVrPFwvdGQ+XHJcblx0XHRcdDx0ZD4oMCwgMSk8XC90ZD5cclxuXHRcdFx0PHRkPjMsIDQsIDIsIDEsIDA8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQ+MDxcL3RkPlxyXG5cdFx0XHQ8dGQ+QWl6aGFuPFwvdGQ+XHJcblx0XHRcdDx0ZD4oMCwgNCk8XC90ZD5cclxuXHRcdFx0PHRkPjAsIDQsIDIsIDEsIDM8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQ+MTxcL3RkPlxyXG5cdFx0XHQ8dGQ+RXJtZWs8XC90ZD5cclxuXHRcdFx0PHRkPigxLCAyKTxcL3RkPlxyXG5cdFx0XHQ8dGQ+MCwgMiwgNCwgMSwgMzxcL3RkPlxyXG5cdFx0PFwvdHI+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0ZD4xPFwvdGQ+XHJcblx0XHRcdDx0ZD5BaXpoYW48XC90ZD5cclxuXHRcdFx0PHRkPigxLCAzKTxcL3RkPlxyXG5cdFx0XHQ8dGQ+MCwgMSwgNCwgMiwgMzxcL3RkPlxyXG5cdFx0PFwvdHI+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0ZD4yPFwvdGQ+XHJcblx0XHRcdDx0ZD5Fcm1lazxcL3RkPlxyXG5cdFx0XHQ8dGQ+KDIsIDMpPFwvdGQ+XHJcblx0XHRcdDx0ZD4wLCAxLCAyLCA0LCAzPFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPjI8XC90ZD5cclxuXHRcdFx0PHRkPkFpemhhbjxcL3RkPlxyXG5cdFx0XHQ8dGQ+KDMsIDQpPFwvdGQ+XHJcblx0XHRcdDx0ZD4wLCAxLCAyLCAzLCA0PFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHQ8XC90Ym9keT5cclxuPFwvdGFibGU+XHJcblxyXG48cD5FeGFtcGxlIDI8XC9wPlxyXG5cclxuPHA+U3VwcG9zZSB0aGF0OjxcL3A+XHJcblxyXG48dWw+XHJcblx0PGxpPlRoZSBpbml0aWFsc2VxdWVuY2UgaXMgUyA9IDMsIDAsIDQsIDIsIDEuPFwvbGk+XHJcblx0PGxpPkVybWVrIGlzIHdpbGxpbmcgdG8gbWFrZSBNID0gNSBzd2Fwcy48XC9saT5cclxuXHQ8bGk+VGhlIHBhaXJzIG9mIGluZGljZXMgdGhhdCBFcm1layBwbGFucyB0byBjaG9vc2UgYXJlICgxLCAxKSwgKDQsIDApLCAoMiwgMyksICgxLCA0KSwgYW5kICgwLCA0KS48XC9saT5cclxuPFwvdWw+XHJcblxyXG48cD5JbiB0aGlzIHNldHRpbmcgQWl6aGFuIGNhbiBzb3J0IHRoZSBzZXF1ZW5jZSBTaW4gdGhyZWUgcm91bmRzLCBmb3IgZXhhbXBsZSBieSBjaG9vc2luZyB0aGUgcGFpcnMgb2YgaW5kaWNlcyAoMSwgNCksICg0LCAyKSwgYW5kIHRoZW4gKDIsIDIpLiBUaGUgZm9sbG93aW5nIHRhYmxlIHNob3dzIGhvdyBFcm1layBhbmQgQWl6aGFuIG1vZGlmeSB0aGUgc2VxdWVuY2UuPFwvcD5cclxuXHJcbjx0YWJsZSBjbGFzcz1cInRhYmxlIHRhYmxlLWJvcmRlcmVkXCIgc3R5bGU9XCJ3aWR0aDozMCVcIj5cclxuXHQ8dGhlYWQ+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0aD5Sb3VuZDxcL3RoPlxyXG5cdFx0XHQ8dGg+UGxheWVyPFwvdGg+XHJcblx0XHRcdDx0aD5QYWlyIG9mIHN3YXBwZWQgaW5kaWNlczxcL3RoPlxyXG5cdFx0XHQ8dGg+U2VxdWVuY2U8XC90aD5cclxuXHRcdDxcL3RyPlxyXG5cdDxcL3RoZWFkPlxyXG5cdDx0Ym9keT5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPlx1Y2QwOFx1YWUzMDxcL3RkPlxyXG5cdFx0XHQ8dGQ+Jm5ic3A7PFwvdGQ+XHJcblx0XHRcdDx0ZD4mbmJzcDs8XC90ZD5cclxuXHRcdFx0PHRkPjMsIDAsIDQsIDIsIDE8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQ+MDxcL3RkPlxyXG5cdFx0XHQ8dGQ+RXJtZWs8XC90ZD5cclxuXHRcdFx0PHRkPigxLCAxKTxcL3RkPlxyXG5cdFx0XHQ8dGQ+MywgMCwgNCwgMiwgMTxcL3RkPlxyXG5cdFx0PFwvdHI+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0ZD4wPFwvdGQ+XHJcblx0XHRcdDx0ZD5BaXpoYW48XC90ZD5cclxuXHRcdFx0PHRkPigxLCA0KTxcL3RkPlxyXG5cdFx0XHQ8dGQ+MywgMSwgNCwgMiwgMDxcL3RkPlxyXG5cdFx0PFwvdHI+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0ZD4xPFwvdGQ+XHJcblx0XHRcdDx0ZD5Fcm1lazxcL3RkPlxyXG5cdFx0XHQ8dGQ+KDQsIDApPFwvdGQ+XHJcblx0XHRcdDx0ZD4wLCAxLCA0LCAyLCAzPFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPjE8XC90ZD5cclxuXHRcdFx0PHRkPkFpemhhbjxcL3RkPlxyXG5cdFx0XHQ8dGQ+KDQsIDIpPFwvdGQ+XHJcblx0XHRcdDx0ZD4wLCAxLCAzLCAyLCA0PFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPjI8XC90ZD5cclxuXHRcdFx0PHRkPkVybWVrPFwvdGQ+XHJcblx0XHRcdDx0ZD4oMiwgMyk8XC90ZD5cclxuXHRcdFx0PHRkPjAsIDEsIDIsIDMsIDQ8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQ+MjxcL3RkPlxyXG5cdFx0XHQ8dGQ+QWl6aGFuPFwvdGQ+XHJcblx0XHRcdDx0ZD4oMiwgMik8XC90ZD5cclxuXHRcdFx0PHRkPjAsIDEsIDIsIDMsIDQ8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdDxcL3Rib2R5PlxyXG48XC90YWJsZT5cclxuXHJcbjxwPllvdSBhcmUgZ2l2ZW4gdGhlIHNlcXVlbmNlIFMsIHRoZSBudW1iZXIgTSwgYW5kIHRoZSBzZXF1ZW5jZXMgb2YgaW5kaWNlcyBYIGFuZCBZLiBDb21wdXRlIGEgc2VxdWVuY2Ugb2Ygc3dhcHMsIHdoaWNoIEFpemhhbiBjYW4gdXNlIHRvIHNvcnQgdGhlIHNlcXVlbmNlIFMuPFwvcD5cclxuXHJcbjxwPllvdSBuZWVkIHRvIGltcGxlbWVudCB0aGUgZnVuY3Rpb24gZmluZFN3YXBQYWlyczo8XC9wPlxyXG5cclxuPHVsPlxyXG5cdDxsaT5maW5kU3dhcFBhaXJzKE4sIFMsIE0sIFgsIFksIFAsIFEpICZtZGFzaDsgVGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCBieSB0aGUgZ3JhZGVyIGV4YWN0bHkgb25jZS5cclxuXHQ8dWw+XHJcblx0XHQ8bGk+TjogdGhlIGxlbmd0aCBvZiB0aGUgc2VxdWVuY2UgUy48XC9saT5cclxuXHRcdDxsaT5TOiBhbiBhcnJheSBvZiBpbnRlZ2VycyBjb250YWluaW5nIHRoZSBpbml0aWFsIHNlcXVlbmNlIFMuPFwvbGk+XHJcblx0XHQ8bGk+TTogdGhlIG51bWJlciBvZiBzd2FwcyBFcm1layBwbGFucyB0byBtYWtlLjxcL2xpPlxyXG5cdFx0PGxpPlgsIFk6IGFycmF5cyBvZiBpbnRlZ2VycyBvZiBsZW5ndGggTS4gRm9yIDAgJmxlOyBpICZsZTsgTS0xLCBpbiByb3VuZCBpIEVybWVrIHBsYW5zIHRvIHN3YXAgbnVtYmVycyBhdCBpbmRpY2VzIFhbaV0gYW5kIFlbaV0uPFwvbGk+XHJcblx0XHQ8bGk+UCwgUTogYXJyYXlzIG9mIGludGVnZXJzLiBVc2UgdGhlc2UgYXJyYXlzIHRvIHJlcG9ydCBvbmUgcG9zc2libGUgc2VxdWVuY2Ugb2Ygc3dhcHMgQWl6aGFuIGNhbiBtYWtlIHRvIHNvcnQgdGhlIHNlcXVlbmNlIFMuIERlbm90ZSBieSBSIHRoZSBsZW5ndGggb2YgdGhlIHNlcXVlbmNlIG9mIHN3YXBzIHRoYXQgeW91ciBwcm9ncmFtIGhhcyBmb3VuZC4gRm9yIGVhY2ggaSBiZXR3ZWVuIDAgYW5kIFItMSBpbmNsdXNpdmUsIHRoZSBpbmRpY2VzIEFpemhhbiBzaG91bGQgY2hvb3NlIGluIHJvdW5kIGkgc2hvdWxkIGJlIHN0b3JlZCBpbnRvIFBbaV0gYW5kIFFbaV0uIFlvdSBtYXkgYXNzdW1lIHRoYXQgdGhlIGFycmF5cyBQIGFuZCBRIGhhdmUgYWxyZWFkeSBiZWVuIGFsbG9jYXRlZCB0byBNIGVsZW1lbnRzIGVhY2guPFwvbGk+XHJcblx0XHQ8bGk+VGhpcyBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIHRoZSB2YWx1ZSBvZiBSIChkZWZpbmVkIGFib3ZlKS48XC9saT5cclxuXHQ8XC91bD5cclxuXHQ8XC9saT5cclxuPFwvdWw+XHJcbiIsImlucHV0IjoiPHVsPlxyXG5cdDxsaT5saW5lIDE6IE48XC9saT5cclxuXHQ8bGk+bGluZSAyOiBTWzBdICZoZWxsaXA7IFNbTiAtIDFdPFwvbGk+XHJcblx0PGxpPmxpbmUgMzogTTxcL2xpPlxyXG5cdDxsaT5saW5lcyA0LCAmaGVsbGlwOywgTSArIDM6IFhbaV0gWVtpXTxcL2xpPlxyXG48XC91bD5cclxuIiwib3V0cHV0IjoiPHA+VGhlIHNhbXBsZSBncmFkZXIgcHJpbnRzIHRoZSBmb2xsb3dpbmcgb3V0cHV0OjxcL3A+XHJcblxyXG48dWw+XHJcblx0PGxpPmxpbmUgMTogdGhlIHJldHVybiB2YWx1ZSBSIG9mIGZpbmRTd2FwUGFpcnM8XC9saT5cclxuXHQ8bGk+bGluZSAyK2ksIGZvciAwICZsZTsgaSAmbHQ7IFI6IFBbaV0gUVtpXTxcL2xpPlxyXG48XC91bD5cclxuIiwiaGludCI6IiIsIm9yaWdpbmFsIjoiMSIsInByb2JsZW1fbGFuZ19jb2RlIjoiXHVjNjAxXHVjNWI0In1d