시간 제한메모리 제한제출정답맞힌 사람정답 비율
5 초 512 MB122272221.359%

문제

이노폴리스에서는 자율 주행 택시가 운행하고 있다. 이 도시의 도로망은 n + 1개의 택시를 탈 수 있는 정류 장과 이들을 잇는 n개의 도로로 이루어져 있다. 도로 하나마다 가로등이 있다. i 번 가로등이 켜져 있다면, 정류장 i와 정류장 i + 1를 잇는 도로를 밝힌다. 만약 꺼져 있다면, 이 도로는 어둡다.

보안 문제로, 자율 주행 택시는 가로등이 켜진 도로만 달릴 수 있다. 다른 말로 하면, 택시가 정류장 a에서 정류장 b로 가려면 (a < b), 정류장 a과 정류장 a + 1를 잇는 도로, 정류장 a + 1과 정류장 a + 2를 잇는 도로, . . . , 정류장 b − 1과 정류장 b를 잇는 도로의 가로등이 켜져야 한다.

고장이 나거나, 수리를 하면 가로등이 켜지거나 꺼질 수 있다.

시점 0에서는 가로등의 초기 상황이 주어진다. 1, 2, . . . , q 시간이 지나면 다음 두 상황 중 하나가 벌어질 수 있다.

  • toggle i” — i 번 가로등이 반전된다. 즉, 이 가로등이 켜져 있었다면 꺼지고, 꺼져 있었다면 켜진다.
  • query a b” — 자율 주행 택시를 운영하는 곳의 대표가 다음을 궁금해한다. 시점 0에서 시작해서 현재에 이르기 까지 자율 주행 택시가 정류장 a에서 정류장 b까지 운행할 수 있었던 총 시간은 얼마일까?

자율 주행 택시를 운영하는 곳이 이 질의를 답하는 것을 도와주자

입력

첫 번째 줄에는 두 정수 n, q가 주어진다. (1 ≤ n, q ≤ 300 000) — 이는 가로등의 수와 이벤트의 개수이다.

두번째 줄에는 최초의 가로등 상태를 알려주는 문자열 s가 주어진다. (|s| = n), 만약 가로등 i가 켜져 있으면 si는 ‘1’이고, 가로등 i가 꺼져 있으면 si는 ‘0’이다.

다음 q 줄 각각은 이벤트를 설명한다. 이 중 i 번째 줄은 i 시간이 지났을 때 이벤트를 설명한다.

  • toggle i” (1 ≤ i ≤ n) — 가로등 i이 반전된다.
  • query a b” (1 ≤ a < b ≤ n + 1) — 정류장 a에서 정류장 b까지 자율 주행 택시가 운행할 수 있었던 총 시간 수를 계산한다.

이벤트 중 최소 하나는 query이다.

출력

각각의 query 이벤트마다 하나의 정수를 출력하고, 이 수는 질의에 대한 답이다.

예제 입력 1

5 7
11011
query 1 2
query 1 2
query 1 6
query 3 4
toggle 3
query 3 4
query 1 6

예제 출력 1

1
2
0
0
1
2

힌트

예제 입력의 결과는 다음과 같다.

시간 가로등 상태 이벤트 응답
1 11011    
    query 1 2 1
2 11011    
    query 1 2 1 and 2
3 11011    
    query 1 6 None
4 11011    
    query 3 4 None
5 11011    
    toggle 3  
6 11111    
    query 3 4 6
7 11111    
    query 1 6 6 and 7
W3sicHJvYmxlbV9pZCI6IjE3NjM2IiwicHJvYmxlbV9sYW5nIjoiMCIsInRpdGxlIjoiXHVhYzAwXHViODVjXHViNGYxIiwiZGVzY3JpcHRpb24iOiI8cD5cdWM3NzRcdWIxNzhcdWQzZjRcdWI5YWNcdWMyYTRcdWM1ZDBcdWMxMWNcdWIyOTQgXHVjNzkwXHVjNzI4IFx1YzhmY1x1ZDU4OSBcdWQwZGRcdWMyZGNcdWFjMDAgXHVjNmI0XHVkNTg5XHVkNTU4XHVhY2UwIFx1Yzc4OFx1YjJlNC4gXHVjNzc0IFx1YjNjNFx1YzJkY1x1Yzc1OCBcdWIzYzRcdWI4NWNcdWI5ZGRcdWM3NDAgbiArIDFcdWFjMWNcdWM3NTggXHVkMGRkXHVjMmRjXHViOTdjIFx1ZDBjOCBcdWMyMTggXHVjNzg4XHViMjk0IFx1YzgxNVx1Yjk1OCBcdWM3YTVcdWFjZmMgXHVjNzc0XHViNGU0XHVjNzQ0IFx1Yzc4N1x1YjI5NCBuXHVhYzFjXHVjNzU4IFx1YjNjNFx1Yjg1Y1x1Yjg1YyBcdWM3NzRcdWI4ZThcdWM1YjRcdWM4MzggXHVjNzg4XHViMmU0LiBcdWIzYzRcdWI4NWMgXHVkNTU4XHViMDk4XHViOWM4XHViMmU0IFx1YWMwMFx1Yjg1Y1x1YjRmMVx1Yzc3NCBcdWM3ODhcdWIyZTQuIGkgXHViYzg4IFx1YWMwMFx1Yjg1Y1x1YjRmMVx1Yzc3NCBcdWNmMWNcdWM4MzggXHVjNzg4XHViMmU0XHViYTc0LCBcdWM4MTVcdWI5NThcdWM3YTUgaVx1YzY0MCBcdWM4MTVcdWI5NThcdWM3YTUgaSArIDFcdWI5N2MgXHVjNzg3XHViMjk0IFx1YjNjNFx1Yjg1Y1x1Yjk3YyBcdWJjMWRcdWQ3OGNcdWIyZTQuIFx1YjljY1x1YzU3ZCBcdWFlYmNcdWM4MzggXHVjNzg4XHViMmU0XHViYTc0LCBcdWM3NzQgXHViM2M0XHViODVjXHViMjk0IFx1YzViNFx1YjQ2MVx1YjJlNC48XC9wPlxyXG5cclxuPHA+XHViY2Y0XHVjNTQ4IFx1YmIzOFx1YzgxY1x1Yjg1YywgXHVjNzkwXHVjNzI4IFx1YzhmY1x1ZDU4OSBcdWQwZGRcdWMyZGNcdWIyOTQgXHVhYzAwXHViODVjXHViNGYxXHVjNzc0IFx1Y2YxY1x1YzljNCBcdWIzYzRcdWI4NWNcdWI5Y2MgXHViMmVjXHViOWI0IFx1YzIxOCBcdWM3ODhcdWIyZTQuIFx1YjJlNFx1Yjk3OCBcdWI5ZDBcdWI4NWMgXHVkNTU4XHViYTc0LCBcdWQwZGRcdWMyZGNcdWFjMDAgXHVjODE1XHViOTU4XHVjN2E1IGFcdWM1ZDBcdWMxMWMgXHVjODE1XHViOTU4XHVjN2E1IGJcdWI4NWMgXHVhYzAwXHViODI0XHViYTc0IChhICZsdDsgYiksIFx1YzgxNVx1Yjk1OFx1YzdhNSBhXHVhY2ZjIFx1YzgxNVx1Yjk1OFx1YzdhNSBhICsgMVx1Yjk3YyBcdWM3ODdcdWIyOTQgXHViM2M0XHViODVjLCBcdWM4MTVcdWI5NThcdWM3YTUgYSArIDFcdWFjZmMgXHVjODE1XHViOTU4XHVjN2E1IGEgKyAyXHViOTdjIFx1Yzc4N1x1YjI5NCBcdWIzYzRcdWI4NWMsIC4gLiAuICwgXHVjODE1XHViOTU4XHVjN2E1IGIgJm1pbnVzOyAxXHVhY2ZjIFx1YzgxNVx1Yjk1OFx1YzdhNSBiXHViOTdjIFx1Yzc4N1x1YjI5NCBcdWIzYzRcdWI4NWNcdWM3NTggXHVhYzAwXHViODVjXHViNGYxXHVjNzc0IFx1Y2YxY1x1YzgzOFx1YzU3YyBcdWQ1NWNcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1YWNlMFx1YzdhNVx1Yzc3NCBcdWIwOThcdWFjNzBcdWIwOTgsIFx1YzIxOFx1YjlhY1x1Yjk3YyBcdWQ1NThcdWJhNzQgXHVhYzAwXHViODVjXHViNGYxXHVjNzc0IFx1Y2YxY1x1YzljMFx1YWM3MFx1YjA5OCBcdWFlYmNcdWM5YzggXHVjMjE4IFx1Yzc4OFx1YjJlNC48XC9wPlxyXG5cclxuPHA+XHVjMmRjXHVjODEwIDBcdWM1ZDBcdWMxMWNcdWIyOTQgXHVhYzAwXHViODVjXHViNGYxXHVjNzU4IFx1Y2QwOFx1YWUzMCBcdWMwYzFcdWQ2NjlcdWM3NzQgXHVjOGZjXHVjNWI0XHVjOWM0XHViMmU0LiAxLCAyLCAuIC4gLiAsIHEgXHVjMmRjXHVhYzA0XHVjNzc0IFx1YzljMFx1YjA5OFx1YmE3NCBcdWIyZTRcdWM3NGMgXHViNDUwIFx1YzBjMVx1ZDY2OSBcdWM5MTEgXHVkNTU4XHViMDk4XHVhYzAwIFx1YmM4Y1x1YzViNFx1YzljOCBcdWMyMTggXHVjNzg4XHViMmU0LjxcL3A+XHJcblxyXG48dWw+XHJcblx0PGxpPiZsZHF1bzs8Y29kZT50b2dnbGUgaTxcL2NvZGU+JnJkcXVvOyAmbWRhc2g7IGkgXHViYzg4IFx1YWMwMFx1Yjg1Y1x1YjRmMVx1Yzc3NCBcdWJjMThcdWM4MDRcdWI0MWNcdWIyZTQuIFx1Yzk4OSwgXHVjNzc0IFx1YWMwMFx1Yjg1Y1x1YjRmMVx1Yzc3NCBcdWNmMWNcdWM4MzggXHVjNzg4XHVjNWM4XHViMmU0XHViYTc0IFx1YWViY1x1YzljMFx1YWNlMCwgXHVhZWJjXHVjODM4IFx1Yzc4OFx1YzVjOFx1YjJlNFx1YmE3NCBcdWNmMWNcdWM5YzRcdWIyZTQuPFwvbGk+XHJcblx0PGxpPiZsZHF1bzs8Y29kZT5xdWVyeSBhIGI8XC9jb2RlPiZyZHF1bzsgJm1kYXNoOyBcdWM3OTBcdWM3MjggXHVjOGZjXHVkNTg5IFx1ZDBkZFx1YzJkY1x1Yjk3YyBcdWM2YjRcdWM2MDFcdWQ1NThcdWIyOTQgXHVhY2YzXHVjNzU4IFx1YjMwMFx1ZDQ1Y1x1YWMwMCBcdWIyZTRcdWM3NGNcdWM3NDQgXHVhZDgxXHVhZTA4XHVkNTc0XHVkNTVjXHViMmU0LiBcdWMyZGNcdWM4MTAgMFx1YzVkMFx1YzExYyBcdWMyZGNcdWM3OTFcdWQ1NzRcdWMxMWMgXHVkNjA0XHVjN2FjXHVjNWQwIFx1Yzc3NFx1Yjk3NFx1YWUzMCBcdWFlNGNcdWM5YzAgXHVjNzkwXHVjNzI4IFx1YzhmY1x1ZDU4OSBcdWQwZGRcdWMyZGNcdWFjMDAgXHVjODE1XHViOTU4XHVjN2E1IGFcdWM1ZDBcdWMxMWMgXHVjODE1XHViOTU4XHVjN2E1IGJcdWFlNGNcdWM5YzAgXHVjNmI0XHVkNTg5XHVkNTYwIFx1YzIxOCBcdWM3ODhcdWM1YzhcdWIzNTggXHVjZDFkIFx1YzJkY1x1YWMwNFx1Yzc0MCBcdWM1YmNcdWI5YzhcdWM3N2NcdWFlNGM/PFwvbGk+XHJcbjxcL3VsPlxyXG5cclxuPHA+XHVjNzkwXHVjNzI4IFx1YzhmY1x1ZDU4OSBcdWQwZGRcdWMyZGNcdWI5N2MgXHVjNmI0XHVjNjAxXHVkNTU4XHViMjk0IFx1YWNmM1x1Yzc3NCBcdWM3NzQgXHVjOWM4XHVjNzU4XHViOTdjIFx1YjJmNVx1ZDU1OFx1YjI5NCBcdWFjODNcdWM3NDQgXHViM2M0XHVjNjQwXHVjOGZjXHVjNzkwPFwvcD5cclxuIiwiaW5wdXQiOiI8cD5cdWNjYWIgXHViYzg4XHVjOWY4IFx1YzkwNFx1YzVkMFx1YjI5NCBcdWI0NTAgXHVjODE1XHVjMjE4IG4sIHFcdWFjMDAgXHVjOGZjXHVjNWI0XHVjOWM0XHViMmU0LiAoMSAmbGU7IG4sIHEgJmxlOyAzMDAgMDAwKSAmbWRhc2g7IFx1Yzc3NFx1YjI5NCBcdWFjMDBcdWI4NWNcdWI0ZjFcdWM3NTggXHVjMjE4XHVjNjQwIFx1Yzc3NFx1YmNhNFx1ZDJiOFx1Yzc1OCBcdWFjMWNcdWMyMThcdWM3NzRcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1YjQ1MFx1YmM4OFx1YzlmOCBcdWM5MDRcdWM1ZDBcdWIyOTQgXHVjZDVjXHVjZDA4XHVjNzU4IFx1YWMwMFx1Yjg1Y1x1YjRmMSBcdWMwYzFcdWQwZGNcdWI5N2MgXHVjNTRjXHViODI0XHVjOGZjXHViMjk0IFx1YmIzOFx1Yzc5MFx1YzVmNCBzXHVhYzAwIFx1YzhmY1x1YzViNFx1YzljNFx1YjJlNC4gKHxzfCA9IG4pLCBcdWI5Y2NcdWM1N2QgXHVhYzAwXHViODVjXHViNGYxIGlcdWFjMDAgXHVjZjFjXHVjODM4IFx1Yzc4OFx1YzczY1x1YmE3NCBzPHN1Yj5pPFwvc3ViPlx1YjI5NCAmbHNxdW87MSZyc3F1bztcdWM3NzRcdWFjZTAsIFx1YWMwMFx1Yjg1Y1x1YjRmMSBpXHVhYzAwIFx1YWViY1x1YzgzOCBcdWM3ODhcdWM3M2NcdWJhNzQgczxzdWI+aTxcL3N1Yj5cdWIyOTQgJmxzcXVvOzAmcnNxdW87XHVjNzc0XHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWIyZTRcdWM3NGMgcSBcdWM5MDQgXHVhYzAxXHVhYzAxXHVjNzQwIFx1Yzc3NFx1YmNhNFx1ZDJiOFx1Yjk3YyBcdWMxMjRcdWJhODVcdWQ1NWNcdWIyZTQuIFx1Yzc3NCBcdWM5MTEgaSBcdWJjODhcdWM5ZjggXHVjOTA0XHVjNzQwIGkgXHVjMmRjXHVhYzA0XHVjNzc0IFx1YzljMFx1YjBhY1x1Yzc0NCBcdWI1NGMgXHVjNzc0XHViY2E0XHVkMmI4XHViOTdjIFx1YzEyNFx1YmE4NVx1ZDU1Y1x1YjJlNC48XC9wPlxyXG5cclxuPHVsPlxyXG5cdDxsaT4mbGRxdW87PGNvZGU+dG9nZ2xlIGk8XC9jb2RlPiZyZHF1bzsgKDEgJmxlOyBpICZsZTsgbikgJm1kYXNoOyBcdWFjMDBcdWI4NWNcdWI0ZjEgaVx1Yzc3NCBcdWJjMThcdWM4MDRcdWI0MWNcdWIyZTQuPFwvbGk+XHJcblx0PGxpPiZsZHF1bzs8Y29kZT5xdWVyeSBhIGI8XC9jb2RlPiZyZHF1bzsgKDEgJmxlOyBhICZsdDsgYiAmbGU7IG4gKyAxKSAmbWRhc2g7IFx1YzgxNVx1Yjk1OFx1YzdhNSBhXHVjNWQwXHVjMTFjIFx1YzgxNVx1Yjk1OFx1YzdhNSBiXHVhZTRjXHVjOWMwIFx1Yzc5MFx1YzcyOCBcdWM4ZmNcdWQ1ODkgXHVkMGRkXHVjMmRjXHVhYzAwIFx1YzZiNFx1ZDU4OVx1ZDU2MCBcdWMyMTggXHVjNzg4XHVjNWM4XHViMzU4IFx1Y2QxZCBcdWMyZGNcdWFjMDQgXHVjMjE4XHViOTdjIFx1YWNjNFx1YzBiMFx1ZDU1Y1x1YjJlNC48XC9saT5cclxuPFwvdWw+XHJcblxyXG48cD5cdWM3NzRcdWJjYTRcdWQyYjggXHVjOTExIFx1Y2Q1Y1x1YzE4YyBcdWQ1NThcdWIwOThcdWIyOTQgPGNvZGU+cXVlcnk8XC9jb2RlPlx1Yzc3NFx1YjJlNC48XC9wPlxyXG4iLCJvdXRwdXQiOiI8cD5cdWFjMDFcdWFjMDFcdWM3NTggPGNvZGU+cXVlcnk8XC9jb2RlPiBcdWM3NzRcdWJjYTRcdWQyYjhcdWI5YzhcdWIyZTQgXHVkNTU4XHViMDk4XHVjNzU4IFx1YzgxNVx1YzIxOFx1Yjk3YyBcdWNkOWNcdWI4MjVcdWQ1NThcdWFjZTAsIFx1Yzc3NCBcdWMyMThcdWIyOTQgXHVjOWM4XHVjNzU4XHVjNWQwIFx1YjMwMFx1ZDU1YyBcdWIyZjVcdWM3NzRcdWIyZTQuPFwvcD5cclxuIiwiaGludCI6IjxwPlx1YzYwOFx1YzgxYyBcdWM3ODVcdWI4MjVcdWM3NTggXHVhY2IwXHVhY2ZjXHViMjk0IFx1YjJlNFx1Yzc0Y1x1YWNmYyBcdWFjMTlcdWIyZTQuPFwvcD5cclxuXHJcbjx0YWJsZSBjbGFzcz1cInRhYmxlIHRhYmxlLWJvcmRlcmVkXCIgc3R5bGU9XCJ3aWR0aDo1MCU7XCI+XHJcblx0PHRoZWFkPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGg+XHVjMmRjXHVhYzA0PFwvdGg+XHJcblx0XHRcdDx0aD5cdWFjMDBcdWI4NWNcdWI0ZjEgXHVjMGMxXHVkMGRjPFwvdGg+XHJcblx0XHRcdDx0aD5cdWM3NzRcdWJjYTRcdWQyYjg8XC90aD5cclxuXHRcdFx0PHRoPlx1Yzc1MVx1YjJmNTxcL3RoPlxyXG5cdFx0PFwvdHI+XHJcblx0PFwvdGhlYWQ+XHJcblx0PHRib2R5PlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQ+MTxcL3RkPlxyXG5cdFx0XHQ8dGQ+PGNvZGU+MTEwMTE8XC9jb2RlPjxcL3RkPlxyXG5cdFx0XHQ8dGQ+Jm5ic3A7PFwvdGQ+XHJcblx0XHRcdDx0ZD4mbmJzcDs8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQ+Jm5ic3A7PFwvdGQ+XHJcblx0XHRcdDx0ZD4mbmJzcDs8XC90ZD5cclxuXHRcdFx0PHRkPjxjb2RlPnF1ZXJ5IDEgMjxcL2NvZGU+PFwvdGQ+XHJcblx0XHRcdDx0ZD4xPFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPjI8XC90ZD5cclxuXHRcdFx0PHRkPjxjb2RlPjExMDExPFwvY29kZT48XC90ZD5cclxuXHRcdFx0PHRkPiZuYnNwOzxcL3RkPlxyXG5cdFx0XHQ8dGQ+Jm5ic3A7PFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPiZuYnNwOzxcL3RkPlxyXG5cdFx0XHQ8dGQ+Jm5ic3A7PFwvdGQ+XHJcblx0XHRcdDx0ZD48Y29kZT5xdWVyeSAxIDI8XC9jb2RlPjxcL3RkPlxyXG5cdFx0XHQ8dGQ+MSBhbmQgMjxcL3RkPlxyXG5cdFx0PFwvdHI+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0ZD4zPFwvdGQ+XHJcblx0XHRcdDx0ZD48Y29kZT4xMTAxMTxcL2NvZGU+PFwvdGQ+XHJcblx0XHRcdDx0ZD4mbmJzcDs8XC90ZD5cclxuXHRcdFx0PHRkPiZuYnNwOzxcL3RkPlxyXG5cdFx0PFwvdHI+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0ZD4mbmJzcDs8XC90ZD5cclxuXHRcdFx0PHRkPiZuYnNwOzxcL3RkPlxyXG5cdFx0XHQ8dGQ+PGNvZGU+cXVlcnkgMSA2PFwvY29kZT48XC90ZD5cclxuXHRcdFx0PHRkPk5vbmU8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQ+NDxcL3RkPlxyXG5cdFx0XHQ8dGQ+PGNvZGU+MTEwMTE8XC9jb2RlPjxcL3RkPlxyXG5cdFx0XHQ8dGQ+Jm5ic3A7PFwvdGQ+XHJcblx0XHRcdDx0ZD4mbmJzcDs8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQ+Jm5ic3A7PFwvdGQ+XHJcblx0XHRcdDx0ZD4mbmJzcDs8XC90ZD5cclxuXHRcdFx0PHRkPjxjb2RlPnF1ZXJ5IDMgNDxcL2NvZGU+PFwvdGQ+XHJcblx0XHRcdDx0ZD5Ob25lPFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPjU8XC90ZD5cclxuXHRcdFx0PHRkPjxjb2RlPjExMDExPFwvY29kZT48XC90ZD5cclxuXHRcdFx0PHRkPiZuYnNwOzxcL3RkPlxyXG5cdFx0XHQ8dGQ+Jm5ic3A7PFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPiZuYnNwOzxcL3RkPlxyXG5cdFx0XHQ8dGQ+Jm5ic3A7PFwvdGQ+XHJcblx0XHRcdDx0ZD48Y29kZT50b2dnbGUgMzxcL2NvZGU+PFwvdGQ+XHJcblx0XHRcdDx0ZD4mbmJzcDs8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQ+NjxcL3RkPlxyXG5cdFx0XHQ8dGQ+PGNvZGU+MTExMTE8XC9jb2RlPjxcL3RkPlxyXG5cdFx0XHQ8dGQ+Jm5ic3A7PFwvdGQ+XHJcblx0XHRcdDx0ZD4mbmJzcDs8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQ+Jm5ic3A7PFwvdGQ+XHJcblx0XHRcdDx0ZD4mbmJzcDs8XC90ZD5cclxuXHRcdFx0PHRkPjxjb2RlPnF1ZXJ5IDMgNDxcL2NvZGU+PFwvdGQ+XHJcblx0XHRcdDx0ZD42PFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPjc8XC90ZD5cclxuXHRcdFx0PHRkPjxjb2RlPjExMTExPFwvY29kZT48XC90ZD5cclxuXHRcdFx0PHRkPiZuYnNwOzxcL3RkPlxyXG5cdFx0XHQ8dGQ+Jm5ic3A7PFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPiZuYnNwOzxcL3RkPlxyXG5cdFx0XHQ8dGQ+Jm5ic3A7PFwvdGQ+XHJcblx0XHRcdDx0ZD48Y29kZT5xdWVyeSAxIDY8XC9jb2RlPjxcL3RkPlxyXG5cdFx0XHQ8dGQ+NiBhbmQgNzxcL3RkPlxyXG5cdFx0PFwvdHI+XHJcblx0PFwvdGJvZHk+XHJcbjxcL3RhYmxlPlxyXG4iLCJvcmlnaW5hbCI6IjEiLCJodG1sX3RpdGxlIjoiMCIsInByb2JsZW1fbGFuZ190Y29kZSI6IktvcmVhbiJ9LHsicHJvYmxlbV9pZCI6IjE3NjM2IiwicHJvYmxlbV9sYW5nIjoiMSIsInRpdGxlIjoiU3RyZWV0IExhbXBzIiwiZGVzY3JpcHRpb24iOiI8cD5UaGVyZSBpcyBhIHNlbGYtZHJpdmluZyB0YXhpIGluIElubm9wb2xpcyB0aGF0IGRyaXZlcyBvbiBhIGxvbmcgc3RyZWV0LiBUaGUgc3RyZWV0IGNvbnNpc3RzIG9mIG4gKyAxIHRheGkgc3RvcHMgYW5kIG4gc2VnbWVudHMgY29ubmVjdGluZyBhZGphY2VudCBzdG9wcy4gVGhlcmUgaXMgYSBzdHJlZXQgbGFtcCBvbiBlYWNoIHNlZ21lbnQuIFRoZSBpLXRoIGxhbXAgaWxsdW1pbmF0ZXMgdGhlIHNlZ21lbnQgY29ubmVjdGluZyBzdG9wIGkgYW5kIGkrIDEsIGlmIHRoZSBsYW1wIGlzIG9uLiBPdGhlcndpc2UsIGl0JnJzcXVvO3MgZGFyayBvbiB0aGUgc2VnbWVudC48XC9wPlxyXG5cclxuPHA+Rm9yIHRoZSBwdXJwb3NlIG9mIHNhZmV0eSB0aGUgc2VsZi1kcml2aW5nIHRheGkgY2FuIG9ubHkgZHJpdmUgb24gdGhlIHNlZ21lbnRzIHRoYXQgYXJlIGlsbHVtaW5hdGVkLiBJbiBvdGhlciB3b3JkcywgdGhlIHRheGkgY2FuIGRyaXZlIGZyb20gdGhlIHN0b3AgYSB0byB0aGUgc3RvcCBiIChhICZsdDsgYiksIGlmIHRoZSBzZWdtZW50cyBiZXR3ZWVuIGEgYW5kIGErIDEsIGEgKyAxIGFuZCBhICsgMiwgLiAuIC4gLCBiICZtaW51czsgMSBhbmQgYiBhcmUgaWxsdW1pbmF0ZWQuPFwvcD5cclxuXHJcbjxwPkFmdGVyIGJyZWFrZG93bnMgb3IgcmVwYWlycyB0aGUgc3RyZWV0IGxhbXBzIGNhbiB0dXJuIG9uIG9yIHR1cm4gb2ZmLiBZb3UgYXJlIGdpdmVuIHRoZSBpbml0aWFsIHN0YXRlIG9mIHRoZSBsYW1wcyBhdCB0aGUgbW9tZW50IDAuIEFmdGVyIHRoYXQgaW4gdGhlIGVuZCBvZiBob3VycyAxLCAyLCAuIC4gLiAsIHEgZXZlbnRzIHRha2UgcGxhY2UuIEV4YWN0bHkgb25lIGV2ZW50IHRha2VzIHBsYWNlIGluIHRoZSBlbmQgb2YgZWFjaCBob3VyLCB0aGVyZSBhcmUgdHdvIHR5cGVzIG9mIGV2ZW50czo8XC9wPlxyXG5cclxuPHVsPlxyXG5cdDxsaT4mbGRxdW87PGNvZGU+dG9nZ2xlIGk8XC9jb2RlPiZyZHF1bzsgJm1kYXNoOyB0aGUgaS10aCBsYW1wIGNoYW5nZXMgaXRzIHN0YXRlOiBpZiB0aGUgbGFtcCB3YXMgb24sIGl0IHR1cm5zIG9mZiwgaWYgdGhlIGxhbXAgd2FzIG9mZiwgaXQgdHVybnMgb24uPFwvbGk+XHJcblx0PGxpPiZsZHF1bzs8Y29kZT5xdWVyeSBhIGI8XC9jb2RlPiZyZHF1bzsgJm1kYXNoOyB0aGUgaGVhZCBvZiB0aGUgc2VsZi1kcml2aW5nIHRheGkgZGVwYXJ0bWVudCB3b25kZXJzLCB3aGF0IGlzIHRoZSB0b3RhbCB0aW1lIGluIGhvdXJzIGZyb20gMCB1cCB0byB0aGUgY3VycmVudCB0aW1lIHdoZW4gdGhlIHRheGkgd2FzIGFibGUgdG8gZHJpdmUgZnJvbSBzdG9wIGEgdG8gc3RvcCBiLjxcL2xpPlxyXG48XC91bD5cclxuXHJcbjxwPkhlbHAgdGhlIGhlYWQgb2Ygc2VsZi1kcml2aW5nIHRheGkgZGVwYXJ0bWVudCB0byBhbnN3ZXIgdGhlIHF1ZXN0aW9ucy48XC9wPlxyXG4iLCJpbnB1dCI6IjxwPlRoZSBmaXJzdCBsaW5lIGNvbnRhaW5zIHR3byBpbnRlZ2VycyBuIGFuZCBxICgxICZsZTsgbiwgcSAmbGU7IDMwMCAwMDApICZtZGFzaDsgdGhlIG51bWJlciBvZiBzdHJlZXQgbGFtcHMgYW5kIG51bWJlciBvZiBldmVudHMuPFwvcD5cclxuXHJcbjxwPlRoZSBzZWNvbmQgbGluZSBjb250YWlucyBhIHN0cmluZyBzIHRoYXQgZGVzY3JpYmVzIHRoZSBpbml0aWFsIHN0YXRlIG9mIHRoZSBsYW1wcyAofHN8ID0gbiksIHM8c3ViPmk8XC9zdWI+IGlzICZsc3F1bzsxJnJzcXVvOyBpZiB0aGUgaS10aCBsYW1wIGlzIG9uLCBhbmQgczxzdWI+aTxcL3N1Yj4gaXMgJmxzcXVvOzAmcnNxdW87IGlmIHRoZSBpLXRoIGxhbXAgaXMgb2ZmLjxcL3A+XHJcblxyXG48cD5FYWNoIG9mIHRoZSBmb2xsb3dpbmcgcSBsaW5lcyBkZXNjcmliZXMgZXZlbnRzLiBUaGUgaS10aCBvZiB0aGVzZSBsaW5lcyBkZXNjcmliZXMgYW4gZXZlbnQgdGhhdCB0YWtlcyBwbGFjZSBpbiB0aGUgZW5kIG9mIHRoZSBob3VyIGkuPFwvcD5cclxuXHJcbjx1bD5cclxuXHQ8bGk+JmxkcXVvOzxjb2RlPnRvZ2dsZSBpPFwvY29kZT4mcmRxdW87ICgxICZsZTsgaSAmbGU7IG4pICZtZGFzaDsgdGhlIGktdGggbGFtcCBjaGFuZ2VzIGl0cyBzdGF0ZS48XC9saT5cclxuXHQ8bGk+JmxkcXVvOzxjb2RlPnF1ZXJ5IGEgYjxcL2NvZGU+JnJkcXVvOyAoMSAmbGU7IGEgJmx0OyBiICZsZTsgbiArIDEpICZtZGFzaDsgY2FsY3VsYXRlIHRoZSBudW1iZXIgb2YgaG91cnMgdW50aWwgdGhlIGN1cnJlbnQgbW9tZW50IHdoZW4gdGhlIHRheGkgd2FzIGFibGUgdG8gZHJpdmUgZnJvbSBzdG9wIGEgdG8gc3RvcCBiLjxcL2xpPlxyXG48XC91bD5cclxuXHJcbjxwPkF0IGxlYXN0IG9uZSBvZiB0aGUgZXZlbnRzIGlzIDxjb2RlPnF1ZXJ5PFwvY29kZT4uPFwvcD5cclxuIiwib3V0cHV0IjoiPHA+Rm9yIGVhY2ggPGNvZGU+cXVlcnk8XC9jb2RlPiBldmVudCBwcmludCBhIHNpbmdsZSBpbnRlZ2VyOiB0aGUgYW5zd2VyIHRvIHRoZSBxdWVzdGlvbi48XC9wPlxyXG4iLCJoaW50IjoiPHA+SW4gdGhlIHNhbXBsZSB0ZXN0OjxcL3A+XHJcblxyXG48dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1ib3JkZXJlZFwiIHN0eWxlPVwid2lkdGg6NTAlO1wiPlxyXG5cdDx0aGVhZD5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRoPkhvdXI8XC90aD5cclxuXHRcdFx0PHRoPkxhbXAgc3RhdGVzPFwvdGg+XHJcblx0XHRcdDx0aD5RdWVyeTxcL3RoPlxyXG5cdFx0XHQ8dGg+QW5zd2VyPFwvdGg+XHJcblx0XHQ8XC90cj5cclxuXHQ8XC90aGVhZD5cclxuXHQ8dGJvZHk+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0ZD4xPFwvdGQ+XHJcblx0XHRcdDx0ZD48Y29kZT4xMTAxMTxcL2NvZGU+PFwvdGQ+XHJcblx0XHRcdDx0ZD4mbmJzcDs8XC90ZD5cclxuXHRcdFx0PHRkPiZuYnNwOzxcL3RkPlxyXG5cdFx0PFwvdHI+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0ZD4mbmJzcDs8XC90ZD5cclxuXHRcdFx0PHRkPiZuYnNwOzxcL3RkPlxyXG5cdFx0XHQ8dGQ+PGNvZGU+cXVlcnkgMSAyPFwvY29kZT48XC90ZD5cclxuXHRcdFx0PHRkPjE8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQ+MjxcL3RkPlxyXG5cdFx0XHQ8dGQ+PGNvZGU+MTEwMTE8XC9jb2RlPjxcL3RkPlxyXG5cdFx0XHQ8dGQ+Jm5ic3A7PFwvdGQ+XHJcblx0XHRcdDx0ZD4mbmJzcDs8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQ+Jm5ic3A7PFwvdGQ+XHJcblx0XHRcdDx0ZD4mbmJzcDs8XC90ZD5cclxuXHRcdFx0PHRkPjxjb2RlPnF1ZXJ5IDEgMjxcL2NvZGU+PFwvdGQ+XHJcblx0XHRcdDx0ZD4xIGFuZCAyPFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPjM8XC90ZD5cclxuXHRcdFx0PHRkPjxjb2RlPjExMDExPFwvY29kZT48XC90ZD5cclxuXHRcdFx0PHRkPiZuYnNwOzxcL3RkPlxyXG5cdFx0XHQ8dGQ+Jm5ic3A7PFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHRcdDx0cj5cclxuXHRcdFx0PHRkPiZuYnNwOzxcL3RkPlxyXG5cdFx0XHQ8dGQ+Jm5ic3A7PFwvdGQ+XHJcblx0XHRcdDx0ZD48Y29kZT5xdWVyeSAxIDY8XC9jb2RlPjxcL3RkPlxyXG5cdFx0XHQ8dGQ+Tm9uZTxcL3RkPlxyXG5cdFx0PFwvdHI+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0ZD40PFwvdGQ+XHJcblx0XHRcdDx0ZD48Y29kZT4xMTAxMTxcL2NvZGU+PFwvdGQ+XHJcblx0XHRcdDx0ZD4mbmJzcDs8XC90ZD5cclxuXHRcdFx0PHRkPiZuYnNwOzxcL3RkPlxyXG5cdFx0PFwvdHI+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0ZD4mbmJzcDs8XC90ZD5cclxuXHRcdFx0PHRkPiZuYnNwOzxcL3RkPlxyXG5cdFx0XHQ8dGQ+PGNvZGU+cXVlcnkgMyA0PFwvY29kZT48XC90ZD5cclxuXHRcdFx0PHRkPk5vbmU8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQ+NTxcL3RkPlxyXG5cdFx0XHQ8dGQ+PGNvZGU+MTEwMTE8XC9jb2RlPjxcL3RkPlxyXG5cdFx0XHQ8dGQ+Jm5ic3A7PFwvdGQ+XHJcblx0XHRcdDx0ZD4mbmJzcDs8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQ+Jm5ic3A7PFwvdGQ+XHJcblx0XHRcdDx0ZD4mbmJzcDs8XC90ZD5cclxuXHRcdFx0PHRkPjxjb2RlPnRvZ2dsZSAzPFwvY29kZT48XC90ZD5cclxuXHRcdFx0PHRkPiZuYnNwOzxcL3RkPlxyXG5cdFx0PFwvdHI+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0ZD42PFwvdGQ+XHJcblx0XHRcdDx0ZD48Y29kZT4xMTExMTxcL2NvZGU+PFwvdGQ+XHJcblx0XHRcdDx0ZD4mbmJzcDs8XC90ZD5cclxuXHRcdFx0PHRkPiZuYnNwOzxcL3RkPlxyXG5cdFx0PFwvdHI+XHJcblx0XHQ8dHI+XHJcblx0XHRcdDx0ZD4mbmJzcDs8XC90ZD5cclxuXHRcdFx0PHRkPiZuYnNwOzxcL3RkPlxyXG5cdFx0XHQ8dGQ+PGNvZGU+cXVlcnkgMyA0PFwvY29kZT48XC90ZD5cclxuXHRcdFx0PHRkPjY8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQ+NzxcL3RkPlxyXG5cdFx0XHQ8dGQ+PGNvZGU+MTExMTE8XC9jb2RlPjxcL3RkPlxyXG5cdFx0XHQ8dGQ+Jm5ic3A7PFwvdGQ+XHJcblx0XHRcdDx0ZD4mbmJzcDs8XC90ZD5cclxuXHRcdDxcL3RyPlxyXG5cdFx0PHRyPlxyXG5cdFx0XHQ8dGQ+Jm5ic3A7PFwvdGQ+XHJcblx0XHRcdDx0ZD4mbmJzcDs8XC90ZD5cclxuXHRcdFx0PHRkPjxjb2RlPnF1ZXJ5IDEgNjxcL2NvZGU+PFwvdGQ+XHJcblx0XHRcdDx0ZD42IGFuZCA3PFwvdGQ+XHJcblx0XHQ8XC90cj5cclxuXHQ8XC90Ym9keT5cclxuPFwvdGFibGU+XHJcbiIsIm9yaWdpbmFsIjoiMCIsImh0bWxfdGl0bGUiOiIwIiwicHJvYmxlbV9sYW5nX3Rjb2RlIjoiRW5nbGlzaCJ9XQ==