시간 제한메모리 제한제출정답맞힌 사람정답 비율
2 초 64 MB11000.000%

문제

상범이는 수상한 것들을 모으는 취미가 있다. 이 상범이는 최근에 엄청 이상한 것을 발견했다. 그 이상한 물건은 철제 구조물로, 몇 개의 철 막대가 구슬과 납땜되어진 물건이었다. 이를테면 다음 그림과 같은 모양으로:

상범이는 이 구조물을 보자마자 자신의 남자친구에게 줄 사진 액자를 만들 재료로 딱!이라고 생각했다.

상범이가 원하는 액자는 반드시 철제 막대로 이루어진 닫힌 고리여야 한다. 이를 위해서 상범이는 몇 개의 구슬을 떼어내서 고리의 끝을 분리하고, 그런 막대들을 다시 납땜하는 식으로 고치기 시작했다.

여기서 흥미로운 사실은, 상범이가 구슬을 떼어낼 때 막대를 어떤 식으로 분리할 지 마음대로 고를 수 있다는 것이다. 그러니까, 한 개의 구슬에 여러 개의 막대가 납땜되어있을 경우, 이 구슬을 제거하면서 일부 막대끼리는 붙여놓고, 어떤 건 분리하는 것이 가능하다.

예를 들어, 위의 그림에 나온 구조물을 상범이가 남자친구에게 줄 액자로 만들기 위해서는 A번 구슬을 떼어내면서 막대 1번을 분리한다. 그 다음 D번 구슬을 떼어내면서 막대 4-5번 쌍과 3-7번 쌍을 분리하고(4번과 5번은 여전히 납땜되어진 채로 두고, 3-7번도 납땜되어진 채로 둔다), E번 구슬을 떼어내면서 막대 7번을 분리한다. 마지막으로 끝이 연결되지 않은 1번과 7번 막대를 연결하면 상범이가 남자친구에게 선물할 액자인 1-7-3-2-4-5-6-8이란 이름의 구조물이 완성된다.

상범이는 의외로 게으르기 때문에 최소한의 동작(구슬을 떼어내는 것, 두 개의 막대를 연결하는 것)을 통해 액자를 완성하고싶다.

철제 구조물의 초기 상태가 주어졌을 때, 이 구조물은 얼마나 많은 동작을 통해야 액자가 될 수 있을지 구해보자.

입력

첫 번째 줄에 구슬의 수 N(0 ≤ N ≤ 1000)과 막대의 수 M(2 ≤ M ≤ 50,000)이 주어진다.

구슬의 번호는 1번부터 N번으로 매겨지며, 이어지는 M개의 줄에는 막대의 양 끝이 연결된 구슬의 번호를 나타내는 두 개의 정수가 주어진다.

철제 구조물의 초기 상태는 연결된 상태가 아닐 수도 있으며(즉, 여러 개의 구조물 조각으로 이루어져있을 수도 있다). 구슬 하나에 막대가 하나만 연결되어있을 수도 있는데, 이런 경우, 구슬은 연결된 막대가 다른 막대와 연결되기 전에 떼어내지 않아도 된다.

또한, 막대가 하나도 연결되지 않은 구슬도 있을 수 있다. 상범이는 구슬이 아닌 막대기에만 관심이 있으므로, 그런 구슬은 붙여도 되고 붙이지 않아도 된다.

출력

상범이가 남자친구에게 줄 액자를 만들기 위해 행해야 하는 동작의 최소 횟수를 나타내는 정수 한 개를 출력한다.

예제 입력 1

6 8
1 2
1 3
3 4
1 4
4 6
5 6
4 5
1 5

예제 출력 1

4

예제 입력 2

0 2
0 0
0 0

예제 출력 2

2

예제 입력 3

3 3
0 1
0 0
2 2

예제 출력 3

4
W3sicHJvYmxlbV9pZCI6IjM2MjMiLCJwcm9ibGVtX2xhbmciOiIwIiwidGl0bGUiOiJcdWMwYzFcdWJjOTRcdWM3NzRcdWM3NTggXHVjNTYxXHVjNzkwIiwiZGVzY3JpcHRpb24iOiI8cD5cdWMwYzFcdWJjOTRcdWM3NzRcdWIyOTQgXHVjMjE4XHVjMGMxXHVkNTVjIFx1YWM4M1x1YjRlNFx1Yzc0NCBcdWJhYThcdWM3M2NcdWIyOTQgXHVjZGU4XHViYmY4XHVhYzAwIFx1Yzc4OFx1YjJlNC4gXHVjNzc0Jm5ic3A7XHVjMGMxXHViYzk0XHVjNzc0XHViMjk0IFx1Y2Q1Y1x1YWRmY1x1YzVkMCBcdWM1YzRcdWNjYWQgXHVjNzc0XHVjMGMxXHVkNTVjIFx1YWM4M1x1Yzc0NCBcdWJjMWNcdWFjYWNcdWQ1ODhcdWIyZTQuIFx1YWRmOCBcdWM3NzRcdWMwYzFcdWQ1NWMgXHViYjNjXHVhYzc0XHVjNzQwIFx1Y2NhMFx1YzgxYyBcdWFkNmNcdWM4NzBcdWJiM2NcdWI4NWMsJm5ic3A7XHViYTg3IFx1YWMxY1x1Yzc1OCBcdWNjYTAgXHViOWM5XHViMzAwXHVhYzAwIFx1YWQ2Y1x1YzJhY1x1YWNmYyBcdWIwYTlcdWI1NWNcdWI0MThcdWM1YjRcdWM5YzQgXHViYjNjXHVhYzc0XHVjNzc0XHVjNWM4XHViMmU0LiBcdWM3NzRcdWI5N2NcdWQxNGNcdWJhNzQgXHViMmU0XHVjNzRjIFx1YWRmOFx1YjliY1x1YWNmYyBcdWFjMTlcdWM3NDAgXHViYWE4XHVjNTkxXHVjNzNjXHViODVjOjxcL3A+XHJcblxyXG48cCBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlcjtcIj48aW1nIGFsdD1cIlwiIHNyYz1cImh0dHBzOlwvXC91cGxvYWQuYWNtaWNwYy5uZXRcLzRlOTM0NjVmLWQyYzAtNDlmNi04Y2IwLWYxMmMyODU5MGQ5M1wvLVwvcHJldmlld1wvXCIgc3R5bGU9XCJ3aWR0aDogOThweDsgaGVpZ2h0OiAxMDBweDtcIiBcLz48XC9wPlxyXG5cclxuPHA+XHVjMGMxXHViYzk0XHVjNzc0XHViMjk0IFx1Yzc3NCBcdWFkNmNcdWM4NzBcdWJiM2NcdWM3NDQgXHViY2Y0XHVjNzkwXHViOWM4XHVjNzkwIFx1Yzc5MFx1YzJlMFx1Yzc1OCBcdWIwYThcdWM3OTBcdWNlNWNcdWFkNmNcdWM1ZDBcdWFjOGMgXHVjOTA0IFx1YzBhY1x1YzljNCBcdWM1NjFcdWM3OTBcdWI5N2MgXHViOWNjXHViNGU0IFx1YzdhY1x1YjhjY1x1Yjg1YyBcdWI1MzEhXHVjNzc0XHViNzdjXHVhY2UwIFx1YzBkZFx1YWMwMVx1ZDU4OFx1YjJlNC48XC9wPlxyXG5cclxuPHA+XHVjMGMxXHViYzk0XHVjNzc0XHVhYzAwIFx1YzZkMFx1ZDU1OFx1YjI5NCBcdWM1NjFcdWM3OTBcdWIyOTQgXHViYzE4XHViNGRjXHVjMmRjIFx1Y2NhMFx1YzgxYyBcdWI5YzlcdWIzMDBcdWI4NWMgXHVjNzc0XHViOGU4XHVjNWI0XHVjOWM0IFx1YjJlYlx1ZDc4YyBcdWFjZTBcdWI5YWNcdWM1ZWNcdWM1N2MgXHVkNTVjXHViMmU0LiZuYnNwO1x1Yzc3NFx1Yjk3YyBcdWM3MDRcdWQ1NzRcdWMxMWMgXHVjMGMxXHViYzk0XHVjNzc0XHViMjk0IFx1YmE4NyBcdWFjMWNcdWM3NTggXHVhZDZjXHVjMmFjXHVjNzQ0IFx1YjViY1x1YzViNFx1YjBiNFx1YzExYyBcdWFjZTBcdWI5YWNcdWM3NTggXHViMDVkXHVjNzQ0IFx1YmQ4NFx1YjlhY1x1ZDU1OFx1YWNlMCwmbmJzcDtcdWFkZjhcdWI3ZjAgXHViOWM5XHViMzAwXHViNGU0XHVjNzQ0Jm5ic3A7XHViMmU0XHVjMmRjIFx1YjBhOVx1YjU1Y1x1ZDU1OFx1YjI5NCBcdWMyZGRcdWM3M2NcdWI4NWMgXHVhY2UwXHVjZTU4XHVhZTMwIFx1YzJkY1x1Yzc5MVx1ZDU4OFx1YjJlNC48XC9wPlxyXG5cclxuPHA+XHVjNWVjXHVhZTMwXHVjMTFjIFx1ZDc2NVx1YmJmOFx1Yjg1Y1x1YzZiNCBcdWMwYWNcdWMyZTRcdWM3NDAsJm5ic3A7XHVjMGMxXHViYzk0XHVjNzc0XHVhYzAwIFx1YWQ2Y1x1YzJhY1x1Yzc0NCBcdWI1YmNcdWM1YjRcdWIwYmMgXHViNTRjIFx1YjljOVx1YjMwMFx1Yjk3YyBcdWM1YjRcdWI1YTQgXHVjMmRkXHVjNzNjXHViODVjIFx1YmQ4NFx1YjlhY1x1ZDU2MCBcdWM5YzAgXHViOWM4XHVjNzRjXHViMzAwXHViODVjIFx1YWNlMFx1Yjk3YyBcdWMyMTggXHVjNzg4XHViMmU0XHViMjk0IFx1YWM4M1x1Yzc3NFx1YjJlNC4gXHVhZGY4XHViN2VjXHViMmM4XHVhZTRjLCBcdWQ1NWMgXHVhYzFjXHVjNzU4IFx1YWQ2Y1x1YzJhY1x1YzVkMCBcdWM1ZWNcdWI3ZWMgXHVhYzFjXHVjNzU4IFx1YjljOVx1YjMwMFx1YWMwMCBcdWIwYTlcdWI1NWNcdWI0MThcdWM1YjRcdWM3ODhcdWM3NDQgXHVhY2JkXHVjNmIwLCZuYnNwO1x1Yzc3NCBcdWFkNmNcdWMyYWNcdWM3NDQgXHVjODFjXHVhYzcwXHVkNTU4XHViYTc0XHVjMTFjIFx1Yzc3Y1x1YmQ4MCBcdWI5YzlcdWIzMDBcdWIwN2NcdWI5YWNcdWIyOTQgXHViZDk5XHVjNWVjXHViMTkzXHVhY2UwLCBcdWM1YjRcdWI1YTQgXHVhYzc0IFx1YmQ4NFx1YjlhY1x1ZDU1OFx1YjI5NCBcdWFjODNcdWM3NzQgXHVhYzAwXHViMmE1XHVkNTU4XHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWM2MDhcdWI5N2MgXHViNGU0XHVjNWI0LCBcdWM3MDRcdWM3NTggXHVhZGY4XHViOWJjXHVjNWQwIFx1YjA5OFx1YzYyOCBcdWFkNmNcdWM4NzBcdWJiM2NcdWM3NDQgXHVjMGMxXHViYzk0XHVjNzc0XHVhYzAwJm5ic3A7XHViMGE4XHVjNzkwXHVjZTVjXHVhZDZjXHVjNWQwXHVhYzhjIFx1YzkwNCBcdWM1NjFcdWM3OTBcdWI4NWMgXHViOWNjXHViNGU0XHVhZTMwIFx1YzcwNFx1ZDU3NFx1YzExY1x1YjI5NCBBXHViYzg4IFx1YWQ2Y1x1YzJhY1x1Yzc0NCBcdWI1YmNcdWM1YjRcdWIwYjRcdWJhNzRcdWMxMWMgXHViOWM5XHViMzAwIDFcdWJjODhcdWM3NDQgXHViZDg0XHViOWFjXHVkNTVjXHViMmU0LiZuYnNwO1x1YWRmOCBcdWIyZTRcdWM3NGMgRFx1YmM4OCBcdWFkNmNcdWMyYWNcdWM3NDQgXHViNWJjXHVjNWI0XHViMGI0XHViYTc0XHVjMTFjIFx1YjljOVx1YjMwMCA0LTVcdWJjODggXHVjMzBkXHVhY2ZjIDMtN1x1YmM4OCBcdWMzMGRcdWM3NDQgXHViZDg0XHViOWFjXHVkNTU4XHVhY2UwKDRcdWJjODhcdWFjZmMgNVx1YmM4OFx1Yzc0MCBcdWM1ZWNcdWM4MDRcdWQ3ODggXHViMGE5XHViNTVjXHViNDE4XHVjNWI0XHVjOWM0IFx1Y2M0NFx1Yjg1YyBcdWI0NTBcdWFjZTAsIDMtN1x1YmM4OFx1YjNjNCBcdWIwYTlcdWI1NWNcdWI0MThcdWM1YjRcdWM5YzQgXHVjYzQ0XHViODVjIFx1YjQ1NFx1YjJlNCksJm5ic3A7RVx1YmM4OCBcdWFkNmNcdWMyYWNcdWM3NDQgXHViNWJjXHVjNWI0XHViMGI0XHViYTc0XHVjMTFjIFx1YjljOVx1YjMwMCA3XHViYzg4XHVjNzQ0IFx1YmQ4NFx1YjlhY1x1ZDU1Y1x1YjJlNC4mbmJzcDtcdWI5YzhcdWM5YzBcdWI5YzlcdWM3M2NcdWI4NWMgXHViMDVkXHVjNzc0IFx1YzVmMFx1YWNiMFx1YjQxOFx1YzljMCBcdWM1NGFcdWM3NDAmbmJzcDsxXHViYzg4XHVhY2ZjIDdcdWJjODggXHViOWM5XHViMzAwXHViOTdjIFx1YzVmMFx1YWNiMFx1ZDU1OFx1YmE3NCBcdWMwYzFcdWJjOTRcdWM3NzRcdWFjMDAgXHViMGE4XHVjNzkwXHVjZTVjXHVhZDZjXHVjNWQwXHVhYzhjIFx1YzEyMFx1YmIzY1x1ZDU2MCBcdWM1NjFcdWM3OTBcdWM3NzggMS03LTMtMi00LTUtNi04XHVjNzc0XHViNzgwIFx1Yzc3NFx1Yjk4NFx1Yzc1OCBcdWFkNmNcdWM4NzBcdWJiM2NcdWM3NzQgXHVjNjQ0XHVjMTMxXHViNDFjXHViMmU0LjxcL3A+XHJcblxyXG48cCBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlcjtcIj48aW1nIGFsdD1cIlwiIHNyYz1cImh0dHBzOlwvXC91cGxvYWQuYWNtaWNwYy5uZXRcLzJhMzA3YTJiLTVjYjktNDE0OC1iYzI4LWM0NzQyNWMzZWUzOFwvLVwvcHJldmlld1wvXCIgc3R5bGU9XCJ3aWR0aDogNjQzcHg7IGhlaWdodDogMTI0cHg7XCIgXC8+PFwvcD5cclxuXHJcbjxwPlx1YzBjMVx1YmM5NFx1Yzc3NFx1YjI5NCBcdWM3NThcdWM2NzhcdWI4NWMgXHVhYzhjXHVjNzNjXHViOTc0XHVhZTMwIFx1YjU0Y1x1YmIzOFx1YzVkMCBcdWNkNWNcdWMxOGNcdWQ1NWNcdWM3NTggXHViM2Q5XHVjNzkxKFx1YWQ2Y1x1YzJhY1x1Yzc0NCBcdWI1YmNcdWM1YjRcdWIwYjRcdWIyOTQgXHVhYzgzLCBcdWI0NTAgXHVhYzFjXHVjNzU4IFx1YjljOVx1YjMwMFx1Yjk3YyBcdWM1ZjBcdWFjYjBcdWQ1NThcdWIyOTQgXHVhYzgzKVx1Yzc0NCBcdWQxYjVcdWQ1NzQgXHVjNTYxXHVjNzkwXHViOTdjIFx1YzY0NFx1YzEzMVx1ZDU1OFx1YWNlMFx1YzJmNlx1YjJlNC48XC9wPlxyXG5cclxuPHA+XHVjY2EwXHVjODFjIFx1YWQ2Y1x1Yzg3MFx1YmIzY1x1Yzc1OCBcdWNkMDhcdWFlMzAgXHVjMGMxXHVkMGRjXHVhYzAwIFx1YzhmY1x1YzViNFx1Yzg0Y1x1Yzc0NCBcdWI1NGMsIFx1Yzc3NCBcdWFkNmNcdWM4NzBcdWJiM2NcdWM3NDAmbmJzcDtcdWM1YmNcdWI5YzhcdWIwOTggXHViOWNlXHVjNzQwIFx1YjNkOVx1Yzc5MVx1Yzc0NCBcdWQxYjVcdWQ1NzRcdWM1N2MgXHVjNTYxXHVjNzkwXHVhYzAwIFx1YjQyMCBcdWMyMTggXHVjNzg4XHVjNzQ0XHVjOWMwIFx1YWQ2Y1x1ZDU3NFx1YmNmNFx1Yzc5MC48XC9wPlxyXG4iLCJpbnB1dCI6IjxwPlx1Y2NhYiBcdWJjODhcdWM5ZjggXHVjOTA0XHVjNWQwIFx1YWQ2Y1x1YzJhY1x1Yzc1OCBcdWMyMTgmbmJzcDtOKDAgJmxlOyBOICZsZTsgMTAwMClcdWFjZmMgXHViOWM5XHViMzAwXHVjNzU4IFx1YzIxOCZuYnNwO00oMiAmbGU7IE0gJmxlOyA1MCwwMDApXHVjNzc0IFx1YzhmY1x1YzViNFx1YzljNFx1YjJlNC48XC9wPlxyXG5cclxuPHA+XHVhZDZjXHVjMmFjXHVjNzU4IFx1YmM4OFx1ZDYzOFx1YjI5NCAxXHViYzg4XHViZDgwXHVkMTMwIE5cdWJjODhcdWM3M2NcdWI4NWMgXHViOWU0XHVhY2E4XHVjOWMwXHViYTcwLCZuYnNwO1x1Yzc3NFx1YzViNFx1YzljMFx1YjI5NCBNXHVhYzFjXHVjNzU4IFx1YzkwNFx1YzVkMFx1YjI5NCBcdWI5YzlcdWIzMDBcdWM3NTggXHVjNTkxIFx1YjA1ZFx1Yzc3NCBcdWM1ZjBcdWFjYjBcdWI0MWMgXHVhZDZjXHVjMmFjXHVjNzU4IFx1YmM4OFx1ZDYzOFx1Yjk3YyBcdWIwOThcdWQwYzBcdWIwYjRcdWIyOTQgXHViNDUwIFx1YWMxY1x1Yzc1OCBcdWM4MTVcdWMyMThcdWFjMDAgXHVjOGZjXHVjNWI0XHVjOWM0XHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWNjYTBcdWM4MWMgXHVhZDZjXHVjODcwXHViYjNjXHVjNzU4IFx1Y2QwOFx1YWUzMCBcdWMwYzFcdWQwZGNcdWIyOTQgXHVjNWYwXHVhY2IwXHViNDFjIFx1YzBjMVx1ZDBkY1x1YWMwMCBcdWM1NDRcdWIyZDAgXHVjMjE4XHViM2M0IFx1Yzc4OFx1YzczY1x1YmE3MChcdWM5ODksIFx1YzVlY1x1YjdlYyBcdWFjMWNcdWM3NTggXHVhZDZjXHVjODcwXHViYjNjIFx1Yzg3MFx1YWMwMVx1YzczY1x1Yjg1YyBcdWM3NzRcdWI4ZThcdWM1YjRcdWM4MzhcdWM3ODhcdWM3NDQgXHVjMjE4XHViM2M0IFx1Yzc4OFx1YjJlNCkuJm5ic3A7XHVhZDZjXHVjMmFjIFx1ZDU1OFx1YjA5OFx1YzVkMCBcdWI5YzlcdWIzMDBcdWFjMDAgXHVkNTU4XHViMDk4XHViOWNjIFx1YzVmMFx1YWNiMFx1YjQxOFx1YzViNFx1Yzc4OFx1Yzc0NCBcdWMyMThcdWIzYzQgXHVjNzg4XHViMjk0XHViMzcwLCBcdWM3NzRcdWI3ZjAgXHVhY2JkXHVjNmIwLCZuYnNwO1x1YWQ2Y1x1YzJhY1x1Yzc0MCBcdWM1ZjBcdWFjYjBcdWI0MWMgXHViOWM5XHViMzAwXHVhYzAwJm5ic3A7XHViMmU0XHViOTc4IFx1YjljOVx1YjMwMFx1YzY0MCZuYnNwO1x1YzVmMFx1YWNiMFx1YjQxOFx1YWUzMCBcdWM4MDRcdWM1ZDAgXHViNWJjXHVjNWI0XHViMGI0XHVjOWMwIFx1YzU0YVx1YzU0NFx1YjNjNCBcdWI0MWNcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1YjYxMFx1ZDU1YywgXHViOWM5XHViMzAwXHVhYzAwIFx1ZDU1OFx1YjA5OFx1YjNjNCBcdWM1ZjBcdWFjYjBcdWI0MThcdWM5YzAgXHVjNTRhXHVjNzQwIFx1YWQ2Y1x1YzJhY1x1YjNjNCBcdWM3ODhcdWM3NDQgXHVjMjE4IFx1Yzc4OFx1YjJlNC4mbmJzcDtcdWMwYzFcdWJjOTRcdWM3NzRcdWIyOTQgXHVhZDZjXHVjMmFjXHVjNzc0IFx1YzU0NFx1YjJjYyBcdWI5YzlcdWIzMDBcdWFlMzBcdWM1ZDBcdWI5Y2MgXHVhZDAwXHVjMmVjXHVjNzc0IFx1Yzc4OFx1YzczY1x1YmJjMFx1Yjg1YywgXHVhZGY4XHViN2YwIFx1YWQ2Y1x1YzJhY1x1Yzc0MCBcdWJkOTlcdWM1ZWNcdWIzYzQgXHViNDE4XHVhY2UwIFx1YmQ5OVx1Yzc3NFx1YzljMCBcdWM1NGFcdWM1NDRcdWIzYzQgXHViNDFjXHViMmU0LjxcL3A+XHJcbiIsIm91dHB1dCI6IjxwPlx1YzBjMVx1YmM5NFx1Yzc3NFx1YWMwMCBcdWIwYThcdWM3OTBcdWNlNWNcdWFkNmNcdWM1ZDBcdWFjOGMgXHVjOTA0IFx1YzU2MVx1Yzc5MFx1Yjk3YyBcdWI5Y2NcdWI0ZTRcdWFlMzAgXHVjNzA0XHVkNTc0Jm5ic3A7XHVkNTg5XHVkNTc0XHVjNTdjIFx1ZDU1OFx1YjI5NCBcdWIzZDlcdWM3OTFcdWM3NTggXHVjZDVjXHVjMThjIFx1ZDY5Zlx1YzIxOFx1Yjk3YyBcdWIwOThcdWQwYzBcdWIwYjRcdWIyOTQgXHVjODE1XHVjMjE4IFx1ZDU1YyBcdWFjMWNcdWI5N2MgXHVjZDljXHViODI1XHVkNTVjXHViMmU0LjxcL3A+XHJcbiIsImhpbnQiOiIiLCJvcmlnaW5hbCI6IjAiLCJodG1sX3RpdGxlIjoiMCIsInByb2JsZW1fbGFuZ190Y29kZSI6IktvcmVhbiJ9LHsicHJvYmxlbV9pZCI6IjM2MjMiLCJwcm9ibGVtX2xhbmciOiIxIiwidGl0bGUiOiJJZGVhbCBGcmFtZSIsImRlc2NyaXB0aW9uIjoiPHA+UGV0ZXIgaXMgZm9uZCBvZiBjb2xsZWN0aW5nIHZhcmlvdXMgZnVubnkgdGhpbmdzLiBIZSBjYW4gc3BlbmQgaG91cnMgcmVzdG9yaW5nIGFuZCBwb2xpc2hpbmcgc29tZSB1c2VsZXNzIGl0ZW0gaGUgaGFkIGZvdW5kIGluIGEgZ2FyYmFnZSBoZWFwLjxcL3A+XHJcblxyXG48cD5SZWNlbnRseSBoZSBoYXMgZm91bmQgYSByZWFsbHkgbmljZSB0aGluZy4gSXQgaXMgYSBzbWFsbCBtZXRhbCBjb25zdHJ1Y3Rpb24gdGhhdCBjb25zaXN0cyBvZiBzZXZlcmFsIGlyb24gcm9kcyBzb2xkZXJlZCB0b2dldGhlciB3aXRoIGxpdHRsZSB0aW4gYmVhZHMuIEFuIGV4YW1wbGUgb2Ygc3VjaCBjb25zdHJ1Y3Rpb24gaXMgc2hvd24gb24gdGhlIHBpY3R1cmUgYmVsb3cuPFwvcD5cclxuXHJcbjxwIHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyO1wiPjxpbWcgYWx0PVwiXCIgc3JjPVwiaHR0cHM6XC9cL3VwbG9hZC5hY21pY3BjLm5ldFwvNGU5MzQ2NWYtZDJjMC00OWY2LThjYjAtZjEyYzI4NTkwZDkzXC8tXC9wcmV2aWV3XC9cIiBzdHlsZT1cIndpZHRoOiA5OHB4OyBoZWlnaHQ6IDEwMHB4O1wiIFwvPjxcL3A+XHJcblxyXG48cD5QZXRlciBoYXMgaW1tZWRpYXRlbHkgdW5kZXJzdG9vZCB0aGF0IHRoZXNlIG5pY2Ugcm9kcyBhcmUgZXhhY3RseSB3aGF0IGhlIG5lZWRzIGZvciB0aGUgZnJhbWUgYXJvdW5kIHRoZSBwaG90byBvZiBoaXMgZ2lybGZyaWVuZC4gVGhlIGZyYW1lIG11c3QgaGF2ZSBhIGZvcm0gb2YgYSBjbG9zZWQgY2hhaW4gb2Ygcm9kcy4gVG8gZG8gdGhlIHRyYW5zZm9ybWF0aW9uIFBldGVyIHdvdWxkIHVuc29sZGVyIHNvbWUgYmVhZHMsIHJlbGVhc2luZyB0aGUgcm9kcyBlbmRzLCBhbmQgYWZ0ZXIgdGhhdCBzb2xkZXIgc29tZSBmcmVlIHJvZCBlbmRzIHRvZ2V0aGVyIGFnYWluLiBXaGVuIHVuc29sZGVyaW5nIGEgYmVhZCwgUGV0ZXIgY2FuIHNlcGFyYXRlIHRoZSBlbmRzIG9mIHRoZSByb2RzIGNvbm5lY3RlZCBhdCB0aGF0IGJlYWQsIGluIGFyYml0cmFyeSB3YXkgJm1kYXNoOyB0aGF0IGlzLCBoZSBjYW4gY2hvb3NlIGFuIGFyYml0cmFyeSBwYXJ0aXRpb24gb2Ygcm9kcyBjb25uZWN0ZWQgdG8gdGhlIGJlYWQgaW50byBub24tZW1wdHkgZ3JvdXBzLCBzbyB0aGF0IG9uY2UgdGhlIGJlYWQgaXMgdW5zb2xkZXJlZCBvbmx5IHRoZSByb2RzIGJlbG9uZ2luZyB0byB0aGUgc2FtZSBncm91cCByZW1haW4gY29ubmVjdGVkIHRvIGVhY2ggb3RoZXIuPFwvcD5cclxuXHJcbjxwPkZvciBleGFtcGxlLCB0byB0dXJuIHRoZSBjb25zdHJ1Y3Rpb24gb24gdGhlIHBpY3R1cmUgYWJvdmUgdG8gYSBmcmFtZSwgaGUgY291bGQgdW5zb2xkZXIgdGhlIGJlYWQgQSwgc2VwYXJhdGluZyB0aGUgZW5kIG9mIHJvZCAxLCB1bnNvbGRlciB0aGUgYmVhZCBELCBzZXBhcmF0aW5nIHBhaXJzIG9yIHJvZHMgNCZuZGFzaDs1IGFuZCAzJm5kYXNoOzcgKGJ1dCBrZWVwaW5nIHRoZSByb2RzIGluIHBhaXJzIGNvbm5lY3RlZCksIGFuZCB1bnNvbGRlciB0aGUgYmVhZCBFLCBzZXBhcmF0aW5nIHRoZSBlbmQgb2YgdGhlIHJvZCA3LiBBZnRlciB0aGF0IGhlIG5lZWRzIHRvIHNvbGRlciB0aGUgZnJlZSBlbmRzIG9mIHJvZHMgMSBhbmQgNyB0byBnZXQgdGhlIGZyYW1lIDEmbmRhc2g7NyZuZGFzaDszJm5kYXNoOzImbmRhc2g7NCZuZGFzaDs1Jm5kYXNoOzYmbmRhc2g7OC48XC9wPlxyXG5cclxuPHAgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7XCI+PGltZyBhbHQ9XCJcIiBzcmM9XCJodHRwczpcL1wvdXBsb2FkLmFjbWljcGMubmV0XC8yYTMwN2EyYi01Y2I5LTQxNDgtYmMyOC1jNDc0MjVjM2VlMzhcLy1cL3ByZXZpZXdcL1wiIHN0eWxlPVwid2lkdGg6IDY0M3B4OyBoZWlnaHQ6IDEyNHB4O1wiIFwvPjxcL3A+XHJcblxyXG48cD5Ob3cgaGVscCBQZXRlciB0byBcdWZiMDFuZCB0aGUgd2F5IHRvIGNyZWF0ZSB0aGUgZnJhbWUgZnJvbSB0aGUgY29uc3RydWN0aW9uIGhlIGhhcyBnb3QgYnkgbWFraW5nIGFzIGZldyBvcGVyYXRpb25zIGFzIHBvc3NpYmxlLiBUaGVyZSBhcmUgdHdvIHR5cGVzIG9mIG9wZXJhdGlvbnM6IHVuc29sZGVyaW5nIGEgYmVhZCwgYW5kIHNvbGRlcmluZyB0d28gZnJlZSBlbmRzIG9mIHJvZHMgdG9nZXRoZXIuIFVuc29sZGVyaW5nIGlzIGNvdW50ZWQgYXMgb25lIG9wZXJhdGlvbiBubyBtYXR0ZXIgaG93IG1hbnkgcm9kcyB3ZXJlIGNvbm5lY3RlZCBpbiBhIGJlYWQgYW5kIGhvdyB0aGV5IHdlcmUgcmVhcnJhbmdlZC48XC9wPlxyXG4iLCJpbnB1dCI6IjxwPlRoZSBcdWZiMDFyc3QgbGluZSBvZiB0aGUgaW5wdXQgXHVmYjAxbGUgY29udGFpbnMgdHdvIGludGVnZXIgbnVtYmVycyBuIGFuZCBtICZtZGFzaDsgdGhlIG51bWJlciBvZiBiZWFkcyBhbmQgdGhlIG51bWJlciBvZiByb2RzLCByZXNwZWN0aXZlbHkgKDAgJmxlOyBuICZsZTsgMTAwMCwgMiAmbGU7IG0gJmxlOyA1MCAwMDApLiBMZXQgdGhlIGJlYWRzIGJlIG51bWJlcmVkIGZyb20gMSB0byBuLiBUaGUgZm9sbG93aW5nIG0gbGluZXMgY29udGFpbiB0d28gaW50ZWdlciBudW1iZXJzIGVhY2ggJm1kYXNoOyB0aGUgbnVtYmVycyBvZiB0aGUgYmVhZHMgY29ubmVjdGVkIGJ5IHRoZSBjb3JyZXNwb25kaW5nIHJvZC4gSWYgdGhlIGVuZCBvZiB0aGUgcm9kIGlzIG5vdCBjb25uZWN0ZWQgdG8gYW55IGJlYWQsIDAgaXMgdXNlZC48XC9wPlxyXG5cclxuPHA+VGhlIGNvbnN0cnVjdGlvbiBtYXkgYmUgbm90IGNvbm5lY3RlZCAoaS5lLiBpdCBjYW4gY29uc2lzdCBvZiBzZXZlcmFsIHBpZWNlcykuIFRoZXJlIGNhbiBiZSBiZWFkcyB0aGF0IGhhdmUgb25seSBvbmUgcm9kIHNvbGRlcmVkIGludG8gaXQuIFRoZXNlIGJlYWRzIG5lZWQgbm90IGJlIHVuc29sZGVyZWQgYmVmb3JlIHRoZSBjb3JyZXNwb25kaW5nIGVuZCBvZiB0aGUgcm9kIGlzIHNvbGRlcmVkIHRvIGFub3RoZXIgb25lLjxcL3A+XHJcblxyXG48cD5UaGVyZSBjYW4gYWxzbyBiZSBiZWFkcyB0aGF0IGhhdmUgbm8gcm9kcyBzb2xkZXJlZCBpbnRvIGl0LiBTaW5jZSBQZXRlciBpcyBvbmx5IGludGVyZXN0ZWQgaW4gcm9kcywgdGhlc2UgYmVhZHMgbmVlZCBub3QgYmUgc29sZGVyZWRcL3Vuc29sZGVyZWQuPFwvcD5cclxuIiwib3V0cHV0IjoiPHA+T3V0cHV0IG9uZSBpbnRlZ2VyIG51bWJlciAmbWRhc2g7IHRoZSBudW1iZXIgb2Ygb3BlcmF0aW9ucyBQZXRlciBuZWVkcyB0byBjcmVhdGUgdGhlIGZyYW1lIGZyb20gdGhlIGNvbnN0cnVjdGlvbiBkZXNjcmliZWQgaW4gdGhlIGlucHV0IFx1ZmIwMWxlLjxcL3A+XHJcbiIsImhpbnQiOiIiLCJvcmlnaW5hbCI6IjEiLCJodG1sX3RpdGxlIjoiMCIsInByb2JsZW1fbGFuZ190Y29kZSI6IkVuZ2xpc2gifV0=