# Name: smd_if v0.7 # Type: Client side plugin # Generic multiple if condition tests # Author: Stef Dawson # URL: http://stefdawson.com/ # ..................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YTo5OntzOjQ6Im5hbWUiO3M6Njoic21kX2lmIjtzOjY6ImF1dGhvciI7czoxMToiU3RlZiBE YXdzb24iO3M6MTA6ImF1dGhvcl91cmkiO3M6MjI6Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS8i O3M6NzoidmVyc2lvbiI7czozOiIwLjciO3M6MTE6ImRlc2NyaXB0aW9uIjtzOjM1OiJHZW5l cmljIG11bHRpcGxlIGlmIGNvbmRpdGlvbiB0ZXN0cyI7czo0OiJjb2RlIjtzOjk4MDA6ImZ1 bmN0aW9uIHNtZF9pZigkYXR0cywkdGhpbmcpIHsNCglnbG9iYWwgJHRoaXNhcnRpY2xlLCAk cHJldGV4dCwgJHRoaXNmaWxlLCAkdGhpc2xpbmssICR0aGlzaW1hZ2UsICR2YXJpYWJsZTsN Cg0KCWV4dHJhY3QobEF0dHMoYXJyYXkoDQoJCSdmaWVsZCcgPT4gJycsDQoJCSdvcGVyYXRv cicgPT4gJycsDQoJCSd2YWx1ZScgPT4gJycsDQoJCSdsb2dpYycgPT4gJ2FuZCcsDQoJCSdj YXNlX3NlbnNpdGl2ZScgPT4gMCwNCgkJJ3BhcmFtX2RlbGltJyA9PiAnLCcsDQoJCSdtb2Rf ZGVsaW0nID0+ICc6JywNCgkJJ2xpc3RfZGVsaW0nID0+ICcvJywNCgkJJ2RlYnVnJyA9PiAn MCcsDQoJKSwgJGF0dHMpKTsNCg0KCS8vIFNwZWNpYWwgZmllbGQgbmFtZXMgdGhhdCByZWZl ciB0byAkcHJldGV4dCBvciBlbHNld2hlcmUgLSBldmVyeXRoaW5nIGVsc2UgaXMgYXNzdW1l ZCB0bw0KCS8vIGV4aXN0IGluICR0aGlzYXJ0aWNsZSBzbyBjdXN0b20gZmllbGRzIGNhbiBi ZSB1c2VkDQoJJGFsbFB0eHQgPSBhcnJheSgNCgkJImlkIiA9PiAnJHByZXRleHRbImlkIl0n LA0KCQkic2VjdGlvbiIgPT4gJyRwcmV0ZXh0WyJzIl0nLA0KCQkiY2F0ZWdvcnkiID0+ICck cHJldGV4dFsiYyJdJywNCgkJInF1ZXJ5IiA9PiAnJHByZXRleHRbInEiXScsDQoJCSJwZyIg PT4gJyRwcmV0ZXh0WyJwZyJdJywNCgkJIm1vbnRoIiA9PiAnJHByZXRleHRbIm1vbnRoIl0n LA0KCQkiYXV0aG9yIiA9PiAnJHByZXRleHRbImF1dGhvciJdJywNCgkJInN0YXR1cyIgPT4g JyRwcmV0ZXh0WyJzdGF0dXMiXScsDQoJCSJwYWdlIiA9PiAnJHByZXRleHRbInBhZ2UiXScs DQoJCSJuZXh0X2lkIiA9PiAnJHByZXRleHRbIm5leHRfaWQiXScsDQoJCSJuZXh0X3RpdGxl IiA9PiAnJHByZXRleHRbIm5leHRfdGl0bGUiXScsDQoJCSJuZXh0X3V0aXRsZSIgPT4gJyRw cmV0ZXh0WyJuZXh0X3V0aXRsZSJdJywNCgkJInByZXZfaWQiID0+ICckcHJldGV4dFsicHJl dl9pZCJdJywNCgkJInByZXZfdGl0bGUiID0+ICckcHJldGV4dFsicHJldl90aXRsZSJdJywN CgkJInByZXZfdXRpdGxlIiA9PiAnJHByZXRleHRbInByZXZfdXRpdGxlIl0nLA0KCQkicGVy bWxpbmtfbW9kZSIgPT4gJyRwcmV0ZXh0WyJwZXJtbGlua19tb2RlIl0nLA0KCSk7DQoJLy8g RWFjaCBlbnRyeSBoYXMgdGhlIG9wZXJhdGlvbiB0byBiZSBldmFsKClkIGxhdGVyIGFuZCBh IGxpc3Qgb2YgZGlzYWxsb3dlZCBmaWVsZHMNCgkkYWxsT3BzID0gYXJyYXkoDQoJCSdlcScg PT4gYXJyYXkoJ2lzc2V0KFZBUk5BTUUpICYmIEZJRUxEID09PSBWQUxVRScsICcnKSwNCgkJ J25vdCcgPT4gYXJyYXkoJ2lzc2V0KFZBUk5BTUUpICYmIEZJRUxEICE9PSBWQUxVRScsICcn KSwNCgkJJ2d0JyA9PiBhcnJheSgnaXNzZXQoVkFSTkFNRSkgJiYgQ0FTVCBGSUVMRCA+IENB U1QgVkFMVUUnLCAnJyksDQoJCSdnZScgPT4gYXJyYXkoJ2lzc2V0KFZBUk5BTUUpICYmIENB U1QgRklFTEQgPj0gQ0FTVCBWQUxVRScsICcnKSwNCgkJJ2x0JyA9PiBhcnJheSgnaXNzZXQo VkFSTkFNRSkgJiYgQ0FTVCBGSUVMRCA8IENBU1QgVkFMVUUnLCAnJyksDQoJCSdsZScgPT4g YXJyYXkoJ2lzc2V0KFZBUk5BTUUpICYmIENBU1QgRklFTEQgPD0gQ0FTVCBWQUxVRScsICcn KSwNCgkJJ2luJyA9PiBhcnJheSgnaXNzZXQoVkFSTkFNRSkgJiYgaW5fYXJyYXkoRklFTEQs IGV4cGxvZGUoIicuJGxpc3RfZGVsaW0uJyIsIFZBTFVFKSkgIT09IGZhbHNlJywgJycpLA0K CQknbm90aW4nID0+IGFycmF5KCdpc3NldChWQVJOQU1FKSAmJiBpbl9hcnJheShGSUVMRCwg ZXhwbG9kZSgiJy4kbGlzdF9kZWxpbS4nIiwgVkFMVUUpKSA9PT0gZmFsc2UnLCAnJyksDQoJ CSdiZWdpbnMnID0+IGFycmF5KCdpc3NldChWQVJOQU1FKSAmJiBpc3NldChSQVdWQUwpICYm IHN0cnBvcyhGSUVMRCwgVkFMVUUpID09PSAwJywgJycpLA0KCQknY29udGFpbnMnID0+IGFy cmF5KCdpc3NldChWQVJOQU1FKSAmJiBpc3NldChSQVdWQUwpICYmIHN0cnBvcyhGSUVMRCwg VkFMVUUpICE9PSBmYWxzZScsICcnKSwNCgkJJ2VuZHMnID0+IGFycmF5KCdpc3NldChWQVJO QU1FKSAmJiBzdWJzdHIoRklFTEQsIHN0cmxlbihGSUVMRCkgLSBzdHJsZW4oVkFMVUUpKSA9 PT0gVkFMVUUnLCAnJyksDQoJCSdkZWZpbmVkJyA9PiBhcnJheSgnaXNzZXQoVkFSTkFNRSkn LCAncGFyZW50JyksDQoJCSd1bmRlZmluZWQnID0+IGFycmF5KCchaXNzZXQoVkFSTkFNRSkn LCAncGFyZW50JyksDQoJCSdpc2VtcHR5JyA9PiBhcnJheSgnaXNzZXQoVkFSTkFNRSkgJiYg RklFTEQgPT0gIiInLCAnJyksDQoJCSdpc3VzZWQnID0+IGFycmF5KCdpc3NldChWQVJOQU1F KSAmJiBGSUVMRCAhPSAiIicsICcnKSwNCgkJJ2lzbnVtJyA9PiBhcnJheSgnaXNzZXQoVkFS TkFNRSkgJiYgY3R5cGVfZGlnaXQoKHN0cmluZylGSUVMRCknLCAnJyksDQoJCSdpc2FscGhh JyA9PiBhcnJheSgnaXNzZXQoVkFSTkFNRSkgJiYgY3R5cGVfYWxwaGEoKHN0cmluZylGSUVM RCknLCAnJyksDQoJCSdpc2FsbnVtJyA9PiBhcnJheSgnaXNzZXQoVkFSTkFNRSkgJiYgY3R5 cGVfYWxudW0oKHN0cmluZylGSUVMRCknLCAnJyksDQoJCSdpc2xvd2VyJyA9PiBhcnJheSgn aXNzZXQoVkFSTkFNRSkgJiYgY3R5cGVfbG93ZXIoKHN0cmluZylGSUVMRCknLCAnJyksDQoJ CSdpc3VwcGVyJyA9PiBhcnJheSgnaXNzZXQoVkFSTkFNRSkgJiYgY3R5cGVfdXBwZXIoKHN0 cmluZylGSUVMRCknLCAnJyksDQoJCSdpc3B1bmN0JyA9PiBhcnJheSgnaXNzZXQoVkFSTkFN RSkgJiYgY3R5cGVfcHVuY3QoKHN0cmluZylGSUVMRCknLCAnJyksDQoJCSdpc3NwYWNlJyA9 PiBhcnJheSgnaXNzZXQoVkFSTkFNRSkgJiYgY3R5cGVfc3BhY2UoKHN0cmluZylGSUVMRCkn LCAnJyksDQoJKTsNCg0KCSRudW1lcmljT3BzID0gImd0LCBnZSwgbHQsIGxlIjsNCgkkY2Fz ZU9wcyA9ICJpc2xvd2VyLCBpc3VwcGVyIjsNCgkkc3BhY2VPcHMgPSAiaXNudW0sIGlzYWxw aGEsIGlzYWxudW0sIGlzbG93ZXIsIGlzdXBwZXIsIGlzcHVuY3QiOw0KCSRmaWVsZHMgPSBk b19saXN0KCRmaWVsZCwgJHBhcmFtX2RlbGltKTsNCgkkb3BzID0gZG9fbGlzdCgkb3BlcmF0 b3IsICRwYXJhbV9kZWxpbSk7DQoJJG51bU9wcyA9IGNvdW50KCRvcHMpOw0KCSR2YWxzID0g ZG9fbGlzdCgkdmFsdWUsICRwYXJhbV9kZWxpbSk7DQoJJG51bVZhbHMgPSBjb3VudCgkdmFs cyk7DQoJJHBhcmVudENhdHMgPSAnJzsgLy8gUGxhY2Vob2xkZXIgZm9yIHRoZSBjb25jYXRl bmF0ZWQgbGlzdCBvZiBjYXRlZ29yeSBsZWFmIG5vZGVzDQoJJHJlcGxhY2VtZW50cyA9IGFy cmF5KCk7DQoJJHR5cGUgPSAoJHRoaXNmaWxlKSA/ICJmaWxlIiA6ICgoJHRoaXNsaW5rKSA/ ICJsaW5rIiA6ICgoJHRoaXNpbWFnZSkgPyAiaW1hZ2UiIDogImFydGljbGUiKSk7DQoJJG91 dCA9IGFycmF5KCk7DQoNCglmb3IgKCRpZHggPSAwOyAkaWR4IDwgY291bnQoJGZpZWxkcyk7 ICRpZHgrKykgew0KCQkkZmxkID0gJGZpZWxkc1skaWR4XTsNCgkJJGZsZFBhcnRzID0gZXhw bG9kZSgkbW9kX2RlbGltLCAkZmxkKTsNCgkJJHZhbCA9ICgkaWR4IDwgJG51bVZhbHMpID8g JHZhbHNbJGlkeF0gOiAnJzsNCgkJJHZhbFBhcnRzID0gZXhwbG9kZSgkbW9kX2RlbGltLCAk dmFsKTsNCgkJJG9wID0gKCRpZHggPCAkbnVtT3BzICYmICRvcHNbJGlkeF0gIT0gJycpID8g JG9wc1skaWR4XSA6ICgoJGZsZFBhcnRzWzBdPT0icGFyZW50IikgPyAiY29udGFpbnMiIDog ImVxIik7DQoJCSRvcFBhcnRzID0gZXhwbG9kZSgkbW9kX2RlbGltLCAkb3ApOw0KCQkkb3Ag PSAkc3RvcmVkT3AgPSAoYXJyYXlfa2V5X2V4aXN0cygkb3BQYXJ0c1swXSwgJGFsbE9wcykp ID8gJG9wUGFydHNbMF0gOiAiZXEiOw0KCQkkY2FzdCA9ICgoY291bnQoJG9wUGFydHMpID09 IDIpICYmICgkb3BQYXJ0c1sxXSA9PT0gIk5VTSIpICYmIChpbl9saXN0KCRvcCwgJG51bWVy aWNPcHMpKSkgPyAnKGludCknIDogJyc7DQoJCSRraWxsU3BhY2VzID0gKChjb3VudCgkb3BQ YXJ0cykgPT0gMikgJiYgKCRvcFBhcnRzWzFdID09PSAiTk9TUEFDRSIpICYmIChpbl9saXN0 KCRvcCwgJHNwYWNlT3BzKSkpID8gdHJ1ZSA6IGZhbHNlOw0KCQkkY2FzZV9zZW5zaXRpdmUg PSAoaW5fbGlzdCgkb3AsICRjYXNlT3BzKSkgPyAxIDogJGNhc2Vfc2Vuc2l0aXZlOw0KCQlp ZiAoJGRlYnVnKSB7DQoJCQllY2hvICdURVNUICcuKCRpZHgrMSkubjsNCgkJCWRtcCgkZmxk UGFydHMsICRvcFBhcnRzLCAkdmFsUGFydHMpOw0KCQl9DQoJCS8vIEdldCB0aGUgb3BlcmF0 b3IgcmVwbGFjZW1lbnQgY29kZQ0KCQkkZXhjbHVkZSA9IGRvX2xpc3QoJGFsbE9wc1skb3Bd WzFdKTsNCgkJJG9wID0gJGFsbE9wc1skb3BdWzBdOw0KDQoJCS8vIEFzIGxvbmcgYXMgdGhl IGN1cnJlbnQgb3BlcmF0b3IgYWxsb3dzIHRoaXMgZmllbGQuLi4NCgkJaWYgKCFpbl9hcnJh eSgkZmxkUGFydHNbMF0sICRleGNsdWRlKSkgew0KCQkJLy8gTWFrZSB1cCB0aGUgdGVzdCBm aWVsZCB2YXJpYWJsZQ0KCQkJaWYgKGlzc2V0KCR0aGlzZmlsZVskZmxkUGFydHNbMF1dKSkg ew0KCQkJCSRyZmxkID0gJGZsZFBhcnRzWzBdOw0KCQkJCSRmbGQgPSAnJHRoaXNmaWxlWyIn LiRyZmxkLiciXSc7DQoJCQl9IGVsc2UgaWYgKGlzc2V0KCR0aGlzbGlua1skZmxkUGFydHNb MF1dKSkgew0KCQkJCSRyZmxkID0gJGZsZFBhcnRzWzBdOw0KCQkJCSRmbGQgPSAnJHRoaXNs aW5rWyInLiRyZmxkLiciXSc7DQoJCQl9IGVsc2UgaWYgKGlzc2V0KCR0aGlzaW1hZ2VbJGZs ZFBhcnRzWzBdXSkpIHsNCgkJCQkkcmZsZCA9ICRmbGRQYXJ0c1swXTsNCgkJCQkkZmxkID0g JyR0aGlzaW1hZ2VbIicuJHJmbGQuJyJdJzsNCgkJCX0gZWxzZSBpZiAoYXJyYXlfa2V5X2V4 aXN0cygkZmxkUGFydHNbMF0sICRhbGxQdHh0KSkgew0KCQkJCSRyZmxkID0gJGZsZFBhcnRz WzBdOw0KCQkJCSRmbGQgPSAkYWxsUHR4dFskcmZsZF07DQoJCQl9IGVsc2UgaWYgKCRmbGRQ YXJ0c1swXSA9PSAicGFyZW50Iikgew0KCQkJCSRsZXZlbCA9ICcnOw0KCQkJCWZvcmVhY2gg KCRmbGRQYXJ0cyBhcyAkcGFydCkgew0KCQkJCQlpZiAoJHBhcnQgPT0gInBhcmVudCIpIHsN CgkJCQkJCSR0aGVDYXQgPSAoJHRoaXNmaWxlKSA/ICR0aGlzZmlsZVsnY2F0ZWdvcnknXSA6 ICgoJHRoaXNsaW5rKSA/ICR0aGlzbGlua1snY2F0ZWdvcnknXSA6ICgoJHRoaXNpbWFnZSkg PyAkdGhpc2ltYWdlWydjYXRlZ29yeSddIDogJHByZXRleHRbJ2MnXSkpOw0KCQkJCQl9IGVs c2UgaWYgKHN0cnBvcygkcGFydCwgIkNBVCIpID09PSAwKSB7DQoJCQkJCQkkdGhlQ2F0ID0g JHRoaXNhcnRpY2xlWyJjYXRlZ29yeSIuc3Vic3RyKCRwYXJ0LCAzKV07DQoJCQkJCX0gZWxz ZSBpZiAoc3RycG9zKCRwYXJ0LCAiTFZMIikgPT09IDApIHsNCgkJCQkJCSRsZXZlbCA9IHN1 YnN0cigkcGFydCwgMyk7DQoJCQkJCX0NCgkJCQl9DQoNCgkJCQkkdHJlZSA9IGdldFRyZWVQ YXRoKGRvU2xhc2goJHRoZUNhdCksICR0eXBlKTsNCgkJCQlpZiAoJGRlYnVnKSB7DQoJCQkJ CWVjaG8gIkNBVEVHT1JZIFRSRUU6IjsNCgkJCQkJZG1wKCR0cmVlKTsNCgkJCQl9DQoJCQkJ JGl0ZW1zID0gYXJyYXkoKTsNCgkJCQlmb3JlYWNoICgkdHJlZSBhcyAkbGVhZikgew0KCQkJ CQlpZiAoJGxlYWZbJ25hbWUnXSA9PSAicm9vdCIgfHwgJGxlYWZbJ25hbWUnXSA9PSAkdGhl Q2F0KSB7DQoJCQkJCQljb250aW51ZTsNCgkJCQkJfSBlbHNlIGlmICgkbGV2ZWwgPT0gJycg fHwgJGxldmVsID09ICRsZWFmWydsZXZlbCddKSB7DQoJCQkJCQkkaXRlbXNbXSA9ICRsZWFm WyduYW1lJ107DQoJCQkJCX0NCgkJCQl9DQoJCQkJJHBhcmVudENhdHMgPSAkcmZsZCA9IGlt cGxvZGUoIiAiLCAkaXRlbXMpOw0KCQkJCSRmbGQgPSAnJHBhcmVudENhdHMnOw0KCQkJfSBl bHNlIGlmICgkZmxkUGFydHNbMF0gPT0gInR4cHZhciIpIHsNCgkJCQlpZiAoY291bnQoJGZs ZFBhcnRzKSA9PSAyKSB7DQoJCQkJCSRyZmxkID0gJGZsZFBhcnRzWzFdOw0KCQkJCQkkZmxk ID0gJyR2YXJpYWJsZVsiJy4kcmZsZC4nIl0nOw0KCQkJCX0NCgkJCX0gZWxzZSBpZiAoJGZs ZFBhcnRzWzBdID09ICJ1cmx2YXIiKSB7DQoJCQkJaWYgKGNvdW50KCRmbGRQYXJ0cykgPT0g Mikgew0KCQkJCQkkcmZsZCA9ICRmbGRQYXJ0c1sxXTsNCgkJCQkJJGZsZCA9ICckX0dFVFsi Jy4kcmZsZC4nIl0nOw0KCQkJCX0NCgkJCX0gZWxzZSBpZiAoJGZsZFBhcnRzWzBdID09ICJz dnJ2YXIiKSB7DQoJCQkJaWYgKGNvdW50KCRmbGRQYXJ0cykgPT0gMikgew0KCQkJCQkkcmZs ZCA9ICRmbGRQYXJ0c1sxXTsNCgkJCQkJJGZsZCA9ICckX1NFUlZFUlsiJy4kcmZsZC4nIl0n Ow0KCQkJCX0NCgkJCX0gZWxzZSBpZiAoaXNzZXQoJHRoaXNhcnRpY2xlWyRmbGRQYXJ0c1sw XV0pKSB7DQoJCQkJJHJmbGQgPSBzdHJ0b2xvd2VyKCRmbGRQYXJ0c1swXSk7DQoJCQkJJGZs ZCA9ICckdGhpc2FydGljbGVbIicuJHJmbGQuJyJdJzsNCgkJCX0gZWxzZSBpZiAoJGZsZFBh cnRzWzBdID09ICJOVUxMIikgew0KCQkJCSRzbWRfaWZfdmFyID0gJyc7DQoJCQkJJGZsZCA9 ICckc21kX2lmX3Zhcic7DQoJCQkJJHJmbGQgPSAiTlVMTCI7DQoJCQl9IGVsc2Ugew0KCQkJ CSRzbWRfaWZfdmFyID0gJGZsZFBhcnRzWzBdOw0KCQkJCSRmbGQgPSAnJHNtZF9pZl92YXIn Ow0KCQkJCSRyZmxkID0gImZpZWxkIjsNCgkJCX0NCgkJCSRyZmxkID0gInNtZF9pZl8iLiRy ZmxkOw0KDQoJCQkvLyBUYWtlIGEgY29weSBvZiAkZmxkIHRvIHVzZSBpbiBhbnkgaXNzZXQo KSByZXF1ZXN0cw0KCQkJJGZsZENsZWFuID0gJGZsZDsNCgkJCWlmICgka2lsbFNwYWNlcykg ew0KCQkJCSRmbGQgPSAncHJlZ19yZXBsYWNlKCIvXHMrLyIsIiIsJy4kZmxkLicpJzsNCgkJ CX0NCg0KCQkJLy8gRmluZCB0aGUgcmVhbCB2YWx1ZSB0byBjb21wYXJlIGFnYWluc3QgKG1h eSBiZSBhbm90aGVyIGZpZWxkKQ0KCQkJaWYgKCR2YWxQYXJ0c1swXSA9PSAidXJsdmFyIikg ew0KCQkJCWlmIChjb3VudCgkdmFsUGFydHMpID09IDIpIHsNCgkJCQkJJHZmbGQgPSAkdmFs UGFydHNbMV07DQoJCQkJCSR2YWwgPSAoaXNzZXQoJF9HRVRbJHZmbGRdKSAmJiAkX0dFVFsk dmZsZF0gIT0gIiIpID8gJyRfR0VUWyInLiR2ZmxkLiciXScgOiBkb1F1b3RlKHN0cl9yZXBs YWNlKCciJywgJ1wiJywgJHZmbGQpKTsNCgkJCQl9DQoJCQl9IGVsc2UgaWYgKCR2YWxQYXJ0 c1swXSA9PSAic3ZydmFyIikgew0KCQkJCWlmIChjb3VudCgkdmFsUGFydHMpID09IDIpIHsN CgkJCQkJJHZmbGQgPSAkdmFsUGFydHNbMV07DQoJCQkJCSR2YWwgPSAoaXNzZXQoJF9TRVJW RVJbJHZmbGRdKSAmJiAkX1NFUlZFUlskdmZsZF0gIT0gIiIpID8gJyRfU0VSVkVSWyInLiR2 ZmxkLiciXScgOiBkb1F1b3RlKHN0cl9yZXBsYWNlKCciJywgJ1wiJywgJHZmbGQpKTsNCgkJ CQl9DQoJCQl9IGVsc2UgaWYgKCR2YWxQYXJ0c1swXSA9PSAidHhwdmFyIikgew0KCQkJCWlm IChjb3VudCgkdmFsUGFydHMpID09IDIpIHsNCgkJCQkJJHZmbGQgPSAkdmFsUGFydHNbMV07 DQoJCQkJCSR2YWwgPSAoaXNzZXQoJHZhcmlhYmxlWyR2ZmxkXSkgJiYgJHZhcmlhYmxlWyR2 ZmxkXSAhPSAiIikgPyAnJHZhcmlhYmxlWyInLiR2ZmxkLiciXScgOiBkb1F1b3RlKHN0cl9y ZXBsYWNlKCciJywgJ1wiJywgJHZmbGQpKTsNCgkJCQl9DQoJCQl9IGVsc2UgaWYgKHN0cnBv cygkdmFsUGFydHNbMF0sICI/IikgPT09IDApIHsNCgkJCQkkdmFsUGFydHNbMF0gPSBzdWJz dHIoc3RydG9sb3dlcigkdmFsUGFydHNbMF0pLCAxKTsNCgkJCQkkdmZsZCA9ICR2YWxQYXJ0 c1swXTsNCgkJCQlpZiAoaXNzZXQoJHRoaXNmaWxlWyR2ZmxkXSkpIHsNCgkJCQkJJHZhbCA9 ICckdGhpc2ZpbGVbIicuJHZmbGQuJyJdJzsNCgkJCQl9IGVsc2UgaWYgKGlzc2V0KCR0aGlz bGlua1skdmZsZF0pKSB7DQoJCQkJCSR2YWwgPSAnJHRoaXNsaW5rWyInLiR2ZmxkLiciXSc7 DQoJCQkJfSBlbHNlIGlmIChpc3NldCgkdGhpc2ltYWdlWyR2ZmxkXSkpIHsNCgkJCQkJJHZh bCA9ICckdGhpc2ltYWdlWyInLiR2ZmxkLiciXSc7DQoJCQkJfSBlbHNlIGlmIChhcnJheV9r ZXlfZXhpc3RzKCR2ZmxkLCAkYWxsUHR4dCkpIHsNCgkJCQkJJHZhbCA9ICRhbGxQdHh0WyR2 ZmxkXTsNCgkJCQl9IGVsc2UgaWYgKGlzc2V0KCR0aGlzYXJ0aWNsZVskdmZsZF0pKSB7DQoJ CQkJCSR2YWwgPSAnJHRoaXNhcnRpY2xlWyInLiR2ZmxkLiciXSc7DQoJCQkJfSBlbHNlIHsN CgkJCQkJJHZhbCA9IGRvUXVvdGUoc3RyX3JlcGxhY2UoJyInLCAnXCInLCAkdmZsZCkpOw0K CQkJCX0NCgkJCX0gZWxzZSB7DQoJCQkJJHZmbGQgPSAidmFsIjsNCgkJCQkkdmFsID0gZG9R dW90ZShzdHJfcmVwbGFjZSgnIicsICdcIicsICR2YWxQYXJ0c1swXSkpOw0KCQkJfQ0KCQkJ JHZmbGQgPSAic21kX2lmXyIuJHZmbGQ7DQoNCg0KDQoNCg0KDQoNCg0KDQoJCQkvLyBSZXBs YWNlIHRoZSBzdHJpbmcgcGFydHMuLi4NCgkJCSRjbWQgPSBzdHJfcmVwbGFjZSgiQ0FTVCIs ICRjYXN0LCAkb3ApOw0KCQkJJGNtZCA9IHN0cl9yZXBsYWNlKCJGSUVMRCIsICgoJGNhc2Vf c2Vuc2l0aXZlKSA/ICRmbGQgOiAnc3RydG9sb3dlcignLiRmbGQuJyknKSwgJGNtZCk7DQoJ CQkkY21kID0gc3RyX3JlcGxhY2UoIlZBUk5BTUUiLCAkZmxkQ2xlYW4sICRjbWQpOw0KCQkJ JGNtZCA9IHN0cl9yZXBsYWNlKCJWQUxVRSIsICgoJGNhc2Vfc2Vuc2l0aXZlKSA/ICdWQUxV RScgOiAnc3RydG9sb3dlcihWQUxVRSknKSwgJGNtZCk7DQoJCQkkY21kID0gc3RyX3JlcGxh Y2UoIlJBV1ZBTCIsICJWQUxVRSIsICRjbWQpOyAvLyBUaGVzZSBlbnRyaWVzIG11c3QgbmV2 ZXIgaGF2ZSBzdHJ0b2xvd2VyIGFwcGxpZWQNCgkJCSRjbWQgPSAiQFwkcmVwbGFjZW1lbnRz Wyd7Ii4kcmZsZC4ifSddID0gIi4kZmxkLiI7IFxuQFwkcmVwbGFjZW1lbnRzWyd7Ii4kdmZs ZC4ifSddID0gIi4kdmFsLiI7IFxuXCRvdXRbXSA9ICgiLnN0cl9yZXBsYWNlKCJWQUxVRSIs ICgoJHZhbD09PSInJyIgJiYgc3RycG9zKCRvcCwgInN0cnBvcyIpICE9PSBmYWxzZSkgPyAi JyAnIiA6ICR2YWwpLCAkY21kKS4iKSA/ICd0cnVlJyA6ICdmYWxzZSc7IjsNCgkJCWlmICgk ZGVidWcpIHsNCgkJCQlkbXAoJGNtZCk7DQoJCQl9DQoJCQkvLyAuLi4gYW5kIGV2YWx1YXRl IHRoZSBleHByZXNzaW9uDQoJCQlldmFsKCRjbWQpOw0KCQl9DQoJfQ0KCWlmICgkZGVidWcp IHsNCgkJZWNobyAiUkVTVUxUOiI7DQoJCWRtcCgkb3V0KTsNCgkJZWNobyAiUkVQTEFDRU1F TlRTOiI7DQoJCWRtcCgkcmVwbGFjZW1lbnRzKTsNCgl9DQoJaWYgKCRkZWJ1ZyA+IDEpIHsN CgkJZWNobyAiUFJFVEVYVDoiOw0KCQlkbXAoJHByZXRleHQpOw0KCQllY2hvICJUSElTIEFS VElDTEU6IjsNCgkJZG1wKCR0aGlzYXJ0aWNsZSk7DQoJCWVjaG8gIlRISVMgRklMRToiOw0K CQlkbXAoJHRoaXNmaWxlKTsNCgkJZWNobyAiVEhJUyBMSU5LOiI7DQoJCWRtcCgkdGhpc2xp bmspOw0KCQllY2hvICJUSElTIElNQUdFOiI7DQoJCWRtcCgkdGhpc2ltYWdlKTsNCgl9DQoJ Ly8gQ2hlY2sgbG9naWMNCgkkcmVzdWx0ID0gKCRvdXQpID8gdHJ1ZSA6IGZhbHNlOw0KCWlm IChzdHJ0b2xvd2VyKCRsb2dpYykgPT0gImFuZCIgJiYgaW5fYXJyYXkoImZhbHNlIiwgJG91 dCkpIHsNCgkJJHJlc3VsdCA9IGZhbHNlOw0KCX0NCglpZiAoc3RydG9sb3dlcigkbG9naWMp ID09ICJvciIgJiYgIWluX2FycmF5KCJ0cnVlIiwgJG91dCkpIHsNCgkJJHJlc3VsdCA9IGZh bHNlOw0KCX0NCg0KCXJldHVybiBwYXJzZShFdmFsRWxzZShzdHJ0cigkdGhpbmcsICRyZXBs YWNlbWVudHMpLCAkcmVzdWx0KSk7DQp9IjtzOjQ6InR5cGUiO3M6MToiMCI7czo0OiJoZWxw IjtzOjI4MjU2OiIJPHA+PGRpdiBpZD0ic21kX2hlbHAiPjwvcD4KCgk8aDE+c21kX2lmPC9o MT4KCgk8cD5BIHJlYWxseSBzaW1wbGUsIGdlbmVyaWMgJiM4MjE2O2lmIGNvbmRpdGlvbiYj ODIxNzsgdGVzdGVyLiBDYW4gdGVzdCBhbnkgZmllbGQgb3IgdmFyaWFibGUgaW4gdGhlIGN1 cnJlbnQgYXJ0aWNsZSwgZmlsZSwgaW1hZ2UsIGxpbmssIDxzcGFuIGNsYXNzPSJjYXBzIj5V Ukw8L3NwYW4+IHZhciBvciA8Y29kZT4mbHQ7dHhwOnZhcmlhYmxlIC8mZ3Q7PC9jb2RlPiBj b250ZXh0IGZvciBhIHZhcmlldHkgb2YgYXR0cmlidXRlcyBhbmQgdGFrZSBhY3Rpb24gaWYg PHNwYW4gY2xhc3M9ImNhcHMiPlRSVUU8L3NwYW4+IG9yIDxzcGFuIGNsYXNzPSJjYXBzIj5G QUxTRTwvc3Bhbj4uPC9wPgoKCTxoMj5GZWF0dXJlczwvaDI+CgoJPHVsPgoJCTxsaT5TdXBw b3J0cyBtb3N0IG1ham9yIGFydGljbGUsIGZpbGUsIGltYWdlIGFuZCBsaW5rIHZhcmlhYmxl cyBzdWNoIGFzIHNlY3Rpb24sIGNhdGVnb3J5LCBjdXN0b20gZmllbGRzLCBpZCwgcXVlcnkg c3RyaW5nLCBhdXRob3IsIGJvZHksIGV4Y2VycHQsIHlhaGRlIHlhaGRlLCBwbHVzIHVybCB2 YXJzLCBzZXJ2ZXIgdmFycywgdHhwIHZhcnMsIGFuZCBzdWItY2F0ZWdvcnkvcGFyZW50IGNo ZWNraW5nPC9saT4KCQk8bGk+VGVzdHMgaW5jbHVkZSBlcXVhbGl0eSwgaW5lcXVhbGl0eSwg bGVzcyB0aGFuLCBncmVhdGVyIHRoYW4sIGVtcHR5LCB1c2VkLCBkZWZpbmVkLCBiZWdpbnMs IGVuZHMsIGNvbnRhaW5zLCBpcyBudW1lcmljIC8gYWxwaGEgLyBhbHBoYW51bWVyaWMgLyBs b3dlcmNhc2UgLyB1cHBlcmNhc2UsIGFtb25nIG90aGVyczwvbGk+CgkJPGxpPlRlc3RzIGZv ciBtb3JlIHRoYW4gb25lIGNvbmRpdGlvbiBhdCBvbmNlIGFuZCBhcHBsaWVzIGVpdGhlciA8 c3BhbiBjbGFzcz0iY2FwcyI+QU5EPC9zcGFuPiBsb2dpYyAoYWxsIHRlc3RzIG11c3QgcGFz cykgb3IgT1IgbG9naWMgKGFueSB0ZXN0IG11c3QgcGFzcyk8L2xpPgoJCTxsaT5BbGwgdGVz dGVkIGZpZWxkcyBhbmQgdmFsdWVzIGFyZSBhdmFpbGFibGUgdG8gdGhlIGNvbnRhaW5lciBz byB5b3UgY2FuIGRpc3BsYXkgdGhlbTwvbGk+CgkJPGxpPlVnbHkgYW5kIHZlcnkgZGlydHku IFVzZXMgPHNwYW4gY2xhc3M9ImNhcHMiPlBIUDwvc3Bhbj4mIzgyMTc7cyA8Y29kZT5ldmFs KCk8L2NvZGU+IGNvbW1hbmQgd2hpY2ggbW9zdCBwcm9ncmFtbWVycyBjb25jdXIgc2hvdWxk IGJlIHJlbmFtZWQgPGNvZGU+ZXZpbCgpPC9jb2RlPjwvbGk+Cgk8L3VsPgoKCTxoMj5BdXRo b3I8L2gyPgoKCTxwPjxhIGhyZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9jb21tZW50Rm9y bSI+U3RlZiBEYXdzb248L2E+LiBCYXNlZCBvbiBhbiBpZGVhIGJyZXdpbmcgaW4gdGhlIGJh Y2sgb2YgbXkgbWluZCB3aGlsZSBoYWNraW5nIGNoc19pZl91cmx2YXIuPC9wPgoKCTxoMj5J bnN0YWxsYXRpb24gLyBVbmluc3RhbGxhdGlvbjwvaDI+CgoJPHA+RG93bmxvYWQgdGhlIHBs dWdpbiBmcm9tIGVpdGhlciA8YSBocmVmPSJodHRwOi8vdGV4dHBhdHRlcm4ub3JnL3BsdWdp bnMvOTMwL3NtZF9pZiI+dGV4dHBhdHRlcm4ub3JnPC9hPiwgb3IgdGhlIDxhIGhyZWY9Imh0 dHA6Ly9zdGVmZGF3c29uLmNvbS9zdyI+c29mdHdhcmUgcGFnZTwvYT4sIHBhc3RlIHRoZSBj b2RlIGludG8gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IEFkbWluIC0mZ3Q7 IFBsdWdpbnMgcGFuZSwgaW5zdGFsbCBhbmQgZW5hYmxlIHRoZSBwbHVnaW4uIFZpc2l0IHRo ZSA8YSBocmVmPSJodHRwOi8vZm9ydW0udGV4dHBhdHRlcm4uY29tL3ZpZXd0b3BpYy5waHA/ aWQ9MjUzNTciPmZvcnVtIHRocmVhZDwvYT4gZm9yIG1vcmUgaW5mbyBvciB0byByZXBvcnQg b24gdGhlIHN1Y2Nlc3Mgb3Igb3RoZXJ3aXNlIG9mIHRoZSBwbHVnaW4uPC9wPgoKCTxwPlRv IHVuaW5zdGFsbCwgc2ltcGx5IGRlbGV0ZSBmcm9tIHRoZSBBZG1pbiAtJmd0OyBQbHVnaW5z IHBhZ2UuPC9wPgoKCTxoMj5Vc2FnZTwvaDI+CgoJPHA+VXNlIHRoZSB0YWcgaW4gYW55IHBh Z2UsIGZvcm0gb3IgYXJ0aWNsZSBjb250ZXh0LiBDYW4gYWxzbyBiZSB1c2VkIGluc2lkZSBm aWxlLCBpbWFnZSBvciBsaW5rIGxpc3RzIHRvIHRha2UgYWN0aW9uIGRlcGVuZGluZyBvbiBh dHRyaWJ1dGVzIG9mIHRoZSBjdXJyZW50IGl0ZW0uPC9wPgoKCTxoMyBjbGFzcz0idGFnIj5z bWRfaWY8L2gzPgoKCTxwIGNsYXNzPSJ0YWctc3VtbWFyeSI+QXQgdGhlIHBsYWNlIHlvdSB3 aXNoIHRvIGNvbXBhcmUgYSBmaWVsZCB3aXRoIGFub3RoZXIgdmFsdWUsIHB1dCB0aGlzIHRh ZyB3aXRoIGFsbCB0aHJlZSBtYW5kYXRvcnkgYXR0cmlidXRlcyAoc2hhZGVkIGJlbG93KS4g RWFjaCB0YWtlIGEgc2VyaWVzIG9mIGNvbW1hLXNlcGFyYXRlZCBsaXN0cyAmIzgyMTI7IHRo b3VnaCB0aGUgPGEgaHJlZj0iI3BhcmFtZGVsaW0iPmNvbW1hIGlzIG92ZXJyaWRhYmxlPC9h PiB3aXRoIHRoZSBwYXJhbV9kZWxpbSBhdHRyaWJ1dGUuIElmIHRoZSByZXN1bHQgb2YgYWxs IHRoZSBjb21wYXJpc29uIHRlc3RzIGlzIDxzcGFuIGNsYXNzPSJjYXBzIj5UUlVFPC9zcGFu PiB0aGUgY29udGFpbmVkIGJsb2NrIHdpbGwgYmUgZXhlY3V0ZWQuIElmIHRoZSByZXN1bHQg aXMgPHNwYW4gY2xhc3M9ImNhcHMiPkZBTFNFPC9zcGFuPiwgYW55IDxjb2RlPiZsdDt0eHA6 ZWxzZSAvJmd0OzwvY29kZT4gd2lsbCBiZSBleGVjdXRlZCBpbnN0ZWFkLiBXaXRob3V0IGFu eSA8Y29kZT4mbHQ7dHhwOmVsc2UgLyZndDs8L2NvZGU+IGJsb2NrLCBub3RoaW5nIGlzIG91 dHB1dCBpZiB0aGUgcmVzdWx0IGlzIDxzcGFuIGNsYXNzPSJjYXBzIj5GQUxTRTwvc3Bhbj4u PC9wPgoKCTxoNCBjbGFzcz0iYXR0cyAiIGlkPSJhdHRyaWJ1dGVzIj5BdHRyaWJ1dGVzPC9o ND4KCgk8dWw+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSBtYW5kIj5maWVsZDwvc3Bh bj4gOiB0aGUgPGEgaHJlZj0iI2ZpZWxkIj5maWVsZHM8L2E+IHRvIHRlc3Q8L2xpPgoJCTxs aT48c3BhbiBjbGFzcz0iYXR0LW5hbWUgbWFuZCI+b3BlcmF0b3I8L3NwYW4+IDogdGhlIDxh IGhyZWY9IiNvcGVyYXRvciI+b3BlcmF0aW9uczwvYT4gZm9yIGNvbXBhcmlzb24gd2l0aCB0 aGF0IGZpZWxkIChlLmcuIDxjb2RlPmVxPC9jb2RlPiwgPGNvZGU+bm90PC9jb2RlPiwgPGNv ZGU+YmVnaW5zPC9jb2RlPiwgZXRjKS4gRGVmYXVsdCBpcyB1c3VhbGx5IDxjb2RlPmVxPC9j b2RlPjwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFtZSBtYW5kIj52YWx1ZTwvc3Bh bj4gOiB0aGUgPGEgaHJlZj0iI3ZhbHVlIj52YWx1ZXM8L2E+IHdpdGggd2hpY2ggdG8gY29t cGFyZSB0aGUgZmllbGRzPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj5sb2dp Yzwvc3Bhbj4gOiBob3cgbXVsdGlwbGUgdGVzdHMgYXJlIGpvaW5lZDogPHNwYW4gY2xhc3M9 ImNhcHMiPkFORDwvc3Bhbj4gb3IgT1IuIERlZmF1bHQgaXMgPHNwYW4gY2xhc3M9ImNhcHMi PkFORDwvc3Bhbj48L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPmNhc2Vfc2Vu c2l0aXZlPC9zcGFuPiA6IDEgPSBjYXNlLXNlbnNpdGl2ZSBjb21wYXJpc29uOyAwID0gaWdu b3JlIGNhc2UuIERlZmF1bHQgaXMgMDwvbGk+CgkJPGxpPjxzcGFuIGNsYXNzPSJhdHQtbmFt ZSI+cGFyYW1fZGVsaW08L3NwYW4+IDogZGVsaW1pdGVyIHVzZWQgYmV0d2VlbiBlYWNoIGZp ZWxkLCBvcGVyYXRvciBvciB2YWx1ZSBpbiBhIG11bHRpLXRlc3QuIERlZmF1bHQgaXMgYSBj b21tYSAoLCk8L2xpPgoJCTxsaT48c3BhbiBjbGFzcz0iYXR0LW5hbWUiPm1vZF9kZWxpbTwv c3Bhbj4gOiBkZWxpbWl0ZXIgdXNlZCB3aGVuIHNwZWNpZnlpbmcgZmllbGQgb3Igb3BlcmF0 b3IgbW9kaWZpZXJzIGZvciB1cmx2YXIsIHN2cnZhciBhbmQgdHhwdmFyLiBEZWZhdWx0IGlz IGEgY29sb24gKDopPC9saT4KCQk8bGk+PHNwYW4gY2xhc3M9ImF0dC1uYW1lIj5saXN0X2Rl bGltPC9zcGFuPiA6IGRlbGltaXRlciB1c2VkIHdoZW4gc3BlY2lmeWluZyBhIGxpc3Qgb2Yg dmFsdWVzIHRvIGNoZWNrIHZpYSB0aGUgPGNvZGU+aW48L2NvZGU+IG9yIDxjb2RlPm5vdGlu PC9jb2RlPiBvcGVyYXRvcnMuIERlZmF1bHQgaXMgYSBmb3J3YXJkLXNsYXNoICgvKTwvbGk+ Cgk8L3VsPgoKCTxwPlRoZSBsaXN0cyBhcmUgcHJvY2Vzc2VkIGluIG9yZGVyLCBpLmUuIHRo ZSAxc3QgZmllbGQgdXNlcyB0aGUgMXN0IG9wZXJhdG9yIGluIHRoZSBsaXN0IGFuZCBjb21w YXJlcyBpdCB0byB0aGUgMXN0IHZhbHVlOyB0aGUgMm5kIGZpZWxkIHVzZXMgdGhlIDJuZCBv cGVyYXRvciBpbiB0aGUgbGlzdCBhbmQgY29tcGFyZXMgaXQgdG8gdGhlIDJuZCB2YWx1ZSwg YW5kIHNvIG9uLiBWYWx1ZXMgc2hvdWxkIHVzdWFsbHkgYmUgc3BlY2lmaWVkIHdpdGggcGxh Y2Vob2xkZXJzIHRvIG1haW50YWluIG9yZGVyOiBlLmcuIDxjb2RlPnZhbHVlPSZxdW90Oywg NCwsIHRvcCZxdW90OzwvY29kZT48L3A+CgoJPHA+Tm90ZSB0aGF0LCBhbHRob3VnaCB0aGUg Zmlyc3QgdGhyZWUgYXR0cmlidXRlcyBhcmUgY29uc2lkZXJlZCBtYW5kYXRvcnksIGlmIHlv dSBoYXBwZW4gdG8gcmVxdWlyZSB0aGUgZGVmYXVsdCBvcGVyYXRvciBmb3IgYWxsIHlvdXIg dGVzdHMsIHlvdSBjYW4gc2FmZWx5IG9taXQgPGNvZGU+b3BlcmF0b3I8L2NvZGU+LiBTaW1p bGFybHkgd2l0aCB2YWx1ZXM6IGlmIHlvdSBhcmUgZW50aXJlbHkgdGVzdGluZyB0aGUgZXhp c3RlbmNlIG9yIHR5cGUgb2YgdmFyaWFibGVzLCB5b3UgY2FuIG9taXQgdGhlIDxjb2RlPnZh bHVlPC9jb2RlPiBwYXJhbWV0ZXIgaWYgeW91IHdpc2guPC9wPgoKCTxoNCBjbGFzcz0iYXR0 LW5hbWUgIiBpZD0iZmllbGQiPmZpZWxkPC9oND4KCgk8cD5MaXN0IG9mIGZpZWxkIGxvY2F0 aW9ucyB0byBsb29rIGF0LiBQb3NzaWJsZSB2YWx1ZXMgYXJlOjwvcD4KCgk8dWw+CgkJPGxp Pjxjb2RlPnNlY3Rpb248L2NvZGU+PC9saT4KCQk8bGk+PGNvZGU+Y2F0ZWdvcnk8L2NvZGU+ IChvciA8Y29kZT5jYXRlZ29yeTE8L2NvZGU+LCBvciA8Y29kZT5jYXRlZ29yeTI8L2NvZGU+ IGlmIG9uIGFuIGFydGljbGUgcGFnZSk8L2xpPgoJCTxsaT48Y29kZT5hdXRob3JpZDwvY29k ZT4gb3IgPGNvZGU+YXV0aG9yPC9jb2RlPjwvbGk+CgkJPGxpPjxjb2RlPmlkPC9jb2RlPiAo ZmlsZS9saW5rL2ltYWdlL2FydGljbGUgSUQpLiBJbiBhbiBpbmRpdmlkdWFsIGFydGljbGUg Y29udGV4dCwgdXNlIDxjb2RlPnRoaXNpZDwvY29kZT4gaW5zdGVhZDwvbGk+CgkJPGxpPjxj b2RlPnF1ZXJ5PC9jb2RlPiAodGhlIHF1ZXJ5IHN0cmluZyBmcm9tIHRoZSBzZWFyY2ggZm9y bSk8L2xpPgoJCTxsaT48Y29kZT5wZzwvY29kZT4gKHRoZSBjdXJyZW50IHBhZ2UgbnVtYmVy IGluIGxpc3RzKTwvbGk+CgkJPGxpPjxjb2RlPm1vbnRoPC9jb2RlPiAoY3VycmVudCBtb250 aCBmaWVsZCBmcm9tIHRoZSBhZGRyZXNzIGJhcik8L2xpPgoJCTxsaT48Y29kZT5zdGF0dXM8 L2NvZGU+IChkb2N1bWVudCBzdGF0dXM6IDIwMCwgNDA0LCA0MDMsIGV0Yyk8L2xpPgoJCTxs aT48Y29kZT5wYWdlPC9jb2RlPiAodGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+ IFBhZ2UgdGVtcGxhdGUgdXNlZCBieSB0aGlzIHNlY3Rpb24pPC9saT4KCQk8bGk+PGNvZGU+ bmV4dF9pZDwvY29kZT4gLyA8Y29kZT5wcmV2X2lkPC9jb2RlPiAoSUQgb2YgbmV4dC9wcmV2 IGRvY3VtZW50IGlmIG9uIGFydGljbGUgcGFnZSk8L2xpPgoJCTxsaT48Y29kZT5uZXh0X3Rp dGxlPC9jb2RlPiAvIDxjb2RlPnByZXZfdGl0bGU8L2NvZGU+KFRpdGxlIG9mIG5leHQvcHJl diBkb2N1bWVudCBpZiBvbiBhcnRpY2xlIHBhZ2UpPC9saT4KCQk8bGk+PGNvZGU+bmV4dF91 dGl0bGU8L2NvZGU+IC8gPGNvZGU+cHJldl91dGl0bGU8L2NvZGU+ICh1cmwtdGl0bGUgb2Yg bmV4dC9wcmV2IGRvY3VtZW50IGlmIG9uIGFydGljbGUgcGFnZSk8L2xpPgoJCTxsaT48Y29k ZT5wZXJtbGlua19tb2RlPC9jb2RlPiAodGFrZSBhY3Rpb24gYmFzZWQgb24gb25lIG9mIHRo ZSBtZXNzeS9jbGVhbiA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiBzY2hlbWVzKTwv bGk+CgkJPGxpPjxjb2RlPm90aGVyIGFydGljbGUvZmlsZS9saW5rIGZpZWxkPC9jb2RlPiAo ZS5nLiBib2R5LCBleGNlcnB0LCBhcnRpY2xlX2ltYWdlLCBrZXl3b3JkcywgbGlua2FubWUs IGZpbGVuYW1lLCBkb3dubG9hZHMsICYjODIzMDspPC9saT4KCQk8bGk+PGNvZGU+bXlfY3Vz dG9tX2ZpZWxkX25hbWU8L2NvZGU+IChhbnkgY3VzdG9tIGZpZWxkcyB5b3UgaGF2ZSBkZWZp bmVkKTwvbGk+CgkJPGxpPjxjb2RlPnVybHZhcjp2YXJfbmFtZTwvY29kZT4gKGFueSB2YXJp YWJsZSBpbiB0aGUgYWRkcmVzcyBiYXIgYWZ0ZXIgdGhlIDxjb2RlPj88L2NvZGU+KTwvbGk+ CgkJPGxpPjxjb2RlPnN2cnZhcjp2YXJfbmFtZTwvY29kZT4gKGFueSBzdGFuZGFyZCBzZXJ2 ZXIgdmFyaWFibGUsIGUuZy4gPHNwYW4gY2xhc3M9ImNhcHMiPkhUVFA8L3NwYW4+X1VTRVJf QUdFTlQpPC9saT4KCQk8bGk+PGNvZGU+dHhwdmFyOm15X3ZhcjwvY29kZT4gKGFueSBUZXh0 cGF0dGVybiB2YXJpYWJsZSBzZXQgd2l0aCA8Y29kZT4mbHQ7dHhwOnZhcmlhYmxlIG5hbWU9 JnF1b3Q7bXlfdmFyJnF1b3Q7IC8mZ3Q7PC9jb2RlPik8L2xpPgoJCTxsaT48Y29kZT5wYXJl bnQ6b3B0aW9uYWxfbW9kaWZpZXJzPC9jb2RlPiAod2hldGhlciB0aGUgZ2l2ZW4gY2F0ZWdv cnkgaXMgYSBkZXNjZW5kZW50IG9mIGFub3RoZXIgY2F0ZWdvcnkpPC9saT4KCQk8bGk+PGNv ZGU+TlVMTDwvY29kZT4gKHVzZWZ1bCB3aGVuIGNvbXBhcmluZyBhcmJpdHJhcnkgdmFsdWVz IGZvciBlbXB0aW5lc3MpPC9saT4KCTwvdWw+CgoJPHA+SWYgeW91IHNwZWNpZnkgYSBmaWVs ZCBuYW1lIHRoYXQgZG9lcyBub3QgZXhpc3QsIHRoZSB0ZXh0IHlvdSB1c2Ugd2lsbCBiZSB0 YWtlbiB2ZXJiYXRpbSBpbiBtb3N0IGNhc2VzLjwvcD4KCgk8cD5UaGUgc3BlY2lhbCBmaWVs ZCA8Y29kZT5wYXJlbnQ8L2NvZGU+IGNoZWNrcyB0aGUgcGFyZW50IGNhdGVnb3J5IGZvciBh IG1hdGNoLiBVbmxpa2UgdGhlIG90aGVyIGZpZWxkIHR5cGVzLCB0aGUgZGVmYXVsdCA8YSBo cmVmPSIjb3BlcmF0b3IiPm9wZXJhdG9yPC9hPiBmb3IgcGFyZW50IGlzICYjODIxNjtjb250 YWlucyYjODIxNzsuIFRoaXMgaXMgYmVjYXVzZSB0aGUgZW50aXJlIHRyZWUgaXMgY2hlY2tl ZCBmb3IgYSBtYXRjaCwgc3RhcnRpbmcgZnJvbSB0aGUgdG9wIG9mIHRoZSB0cmVlIGRvd24g dG8gdGhlIGN1cnJlbnQgY2F0ZWdvcnkuIEludGVybmFsbHksIHRoZSBwbHVnaW4gbWFrZXMg dXAgYSAmIzgyMjA7YnJlYWRjcnVtYiB0cmFpbCYjODIyMTsgb2YgY2F0ZWdvcmllcyBpbiB0 aGUgY3VycmVudCBicmFuY2gsIGVhY2ggc2VwYXJhdGVkIGJ5IGEgc3BhY2UsIHNvIHRlc3Rp bmcgZm9yIGVxdWFsaXR5IHdvdWxkIHJlcXVpcmUgcHV0dGluZyB0aGVtIGFsbCBpbiB0aGUg PGEgaHJlZj0iI3ZhbHVlIj52YWx1ZTwvYT4gcGFyYW1ldGVyLjwvcD4KCgk8cD5Zb3UgYXJl IG9mIGNvdXJzZSBmcmVlIHRvIGNob29zZSBhbiBhbHRlcm5hdGl2ZSBvcGVyYXRvcjsgPGNv ZGU+YmVnaW5zPC9jb2RlPiBpcyB2ZXJ5IHVzZWZ1bCBmb3IgdGVzdGluZyBpZiB0aGUgdG9w IGxldmVsIGNhdGVnb3J5IG1hdGNoZXMgdGhlIG9uZSBnaXZlbiBpbiB0aGUgPGNvZGU+dmFs dWU8L2NvZGU+IGZpZWxkLjwvcD4KCgk8cD5JZiB5b3UgdXNlIDxjb2RlPnBhcmVudDpMVkxu PC9jb2RlPiwgdGhlIGNvbXBhcmlzb24gd2lsbCBiZSByZXN0cmljdGVkIHRvIHRoYXQgJiM4 MjIwO2xldmVsJiM4MjIxOyBvZiBzdWItY2F0ZWdvcnk7IExWTDEgaXMgdGhlICYjODIyMDt0 b3AmIzgyMjE7IGxldmVsLCBMVkwyIGlzIHRoZSBuZXh0IHN1Yi1jYXRlZ29yeSBsZXZlbCwg YW5kIHNvIG9uLiBXaGVuIHVzaW5nIHRoZXNlIG1vZGlmaWVycywgdGhlICYjODIxNjtlcSYj ODIxNzsgb3BlcmF0b3IgYmVjb21lcyBtb3JlIHVzZWZ1bCBiZWNhdXNlIHlvdSBhcmUgY29t cGFyaW5nIGEgc2luZ2xlIHBhcmVudCBjYXRlZ29yeS48L3A+CgoJPHA+V2hlbiB1c2luZyBh cnRpY2xlcywgeW91IGNhbiBmdXJ0aGVyIG1vZGlmeSB0aGUgYmVoYXZpb3VyIG9mIHRoZSBw YXJlbnQgdXNpbmcgdGhlIDxjb2RlPkNBVG48L2NvZGU+IHN5bnRheCAod2hlcmUgJiM4MjE2 O24mIzgyMTc7IGlzIDEgb3IgMikuIFNwZWNpZnlpbmcgJiM4MjIwO3BhcmVudCYjODIyMTsg d2l0aG91dCA8Y29kZT5DQVRuPC9jb2RlPiB3aWxsIHVzZSB0aGUgZ2xvYmFsIGNhdGVnb3J5 ICg8Y29kZT4/Yz08L2NvZGU+KS4gSWYgeW91IGFkZCA8Y29kZT46Q0FUbjwvY29kZT4gaXQg d2lsbCBpbnN0ZWFkIGNvbXBhcmUgdGhlIGFydGljbGUmIzgyMTc7cyBjYXRlZ29yeTEgb3Ig Y2F0ZWdvcnkyIHJlc3BlY3RpdmVseS48L3A+CgoJPHA+WW91IGNhbiB1c2UgPHNwYW4gY2xh c3M9ImNhcHMiPkNBVDwvc3Bhbj4gYW5kIDxzcGFuIGNsYXNzPSJjYXBzIj5MVkw8L3NwYW4+ IGluIGNvbWJpbmF0aW9uLCBpbmRlcGVuZGVudGx5IG9yIG5vdCBhdCBhbGwuIFRoaXMgYWxs b3dzIGNvbXBhcmlzb25zIHN1Y2ggYXMgJiM4MjIwO2lmIHRoZSAybmQgc3ViLWNhdGVnb3J5 IG9mIGNhdGVnb3J5MSBlcXVhbHMgYmxhaGJsYWgmIzgyMjE7IG9yICYjODIyMDtpZiBjYXRl Z29yeTIgaXMgYSBjaGlsZCBvZiBibGFoYmxhaCYjODIyMTsuIFNlZSA8YSBocmVmPSIjZWc0 Ij5FeGFtcGxlIDQ8L2E+LjwvcD4KCgk8cD5PbmUgb3RoZXIgc3BlY2lhbCBmaWVsZCBpcyA8 Y29kZT5OVUxMPC9jb2RlPi4gVGhpcyBpcyBleGFjdGx5IHdoYXQgaXQgc2F5cyBpdCBpczog ZW1wdHkuIFRoZSByZWFzb24gZm9yIGl0cyBpbmNsdXNpb24gaXMgdGhhdCBzb21ldGltZXMg eW91IHdpc2ggdG8gdGVzdCBzb21ldGhpbmcgdGhhdCBpc24mIzgyMTc7dCBhIHRydWUgdmFy aWFibGUgJiM4MjEyOyBlLmcuIGEgcmVwbGFjZW1lbnQgdmFyaWFibGUgZnJvbSBzbWRfdmFy cyBvciBzbWRfZWFjaCAmIzgyMTI7IHRvIHNlZSBpZiBpdCYjODIxNztzIGVtcHR5IG9yIG5v dC48L3A+CgoJPHA+SWYgeW91IHdlcmUgdG8gcHV0IHRoaXM6PC9wPgoKCTxwPjxjb2RlPiZs dDt0eHA6c21kX2lmIGZpZWxkPSZxdW90O3tyZXN1bHR9JnF1b3Q7IG9wZXJhdG9yPSZxdW90 O2lzZW1wdHkmcXVvdDsmZ3Q7PC9jb2RlPjwvcD4KCgk8cD55b3Ugd291bGQgbm90IGdldCB0 aGUgcmVzdWx0IHlvdSBleHBlY3QgKGl0JiM4MjE3O3MgcHJldHR5IGVzb3RlcmljIGJ1dCBp dCByZXZvbHZlcyBhcm91bmQgdGhlIGZhY3QgdGhhdCA8Y29kZT4mcXVvdDsmcXVvdDs8L2Nv ZGU+IChhcyBhIHZhcmlhYmxlIG5hbWUpIGlzIG5vdCBlbXB0eSwgaXQmIzgyMTc7cyBpbnZh bGlkKS4gVG8gZ2V0IHJvdW5kIHRoaXMgeW91IG1heSB1c2UgPHNwYW4gY2xhc3M9ImNhcHMi Pk5VTEw8L3NwYW4+IGFzIGEgcGxhY2Vob2xkZXIgYW5kIG1vdmUgdGhlIHRoaW5nIHlvdSB3 YW50IHRvIGNoZWNrIGludG8gdGhlIDxjb2RlPnZhbHVlPC9jb2RlPiBpbnN0ZWFkLCBlLmc6 PC9wPgoKCTxwPjxjb2RlPiZsdDt0eHA6c21kX2lmIGZpZWxkPSZxdW90O05VTEwmcXVvdDsg b3BlcmF0b3I9JnF1b3Q7ZXEmcXVvdDsgdmFsdWU9JnF1b3Q7e3Jlc3VsdH0mcXVvdDsmZ3Q7 PC9jb2RlPjwvcD4KCgk8cD53aWxsIHRlc3QgdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5OVUxM PC9zcGFuPiBvYmplY3QgKGkuZS4gJiM4MjE2O2VtcHRpbmVzcyYjODIxNzspIHRvIHNlZSBp ZiBpdCYjODIxNztzIGVxdWFsIHRvIHRoZSA8Y29kZT57cmVzdWx0fTwvY29kZT4gcmVwbGFj ZW1lbnQgdmFyaWFibGUuIFlvdSBjYW4gdXNlIHNpbWlsYXIgbG9naWMgdG8gdGVzdCBmb3Ig b3B0aW9uYWwgdmFyaWFibGVzIGJ5IHN3YXBwaW5nIHRoZSBmaWVsZCBhbmQgdmFsdWUsIGxp a2UgdGhpczo8L3A+CgoJPHA+PGNvZGU+Jmx0O3R4cDpzbWRfaWYgZmllbGQ9JnF1b3Q7NyZx dW90OyBvcGVyYXRvcj0mcXVvdDtndCZxdW90OyB2YWx1ZT0mcXVvdDt7cmVzdWx0fSZxdW90 OyZndDs8L2NvZGU+PC9wPgoKCTxwPlRoYXQgd291bGQgc2VlIGlmIHRoZSByZXBsYWNlbWVu dCB2YXJpYWJsZSA8Y29kZT57cmVzdWx0fTwvY29kZT4gd2FzIGxlc3MgdGhhbiBvciBlcXVh bCB0byA3ICh0aGF0JiM4MjE3O3Mgbm90IGEgdHlwbywgdGhlIGxvZ2ljIGlzIHJldmVyc2Vk IGluIHRoaXMgY2FzZTogaXQgaXMgaW50ZXJwcmV0ZWQgYXM6ICYjODIyMDtpcyA3IGdyZWF0 ZXIgdGhhbiB7cmVzdWx0fSYjODIyMTssIHdoaWNoIGlzIHRoZSBzYW1lIGFzICYjODIyMDtp cyB7cmVzdWx0fSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gNyYjODIyMTshKTwvcD4KCgk8aDQg Y2xhc3M9ImF0dC1uYW1lICIgaWQ9Im9wZXJhdG9yIj5vcGVyYXRvcjwvaDQ+CgoJPHA+TGlz dCBvZiBvcGVyYXRvcnMgdG8gYXBwbHksIGluIG9yZGVyLCB0byBlYWNoIGZpZWxkLiBDaG9v c2UgZnJvbTo8L3A+CgoJPHVsPgoJCTxsaT48Y29kZT5lcTwvY29kZT4gRXF1YWwgKHRoZSBk ZWZhdWx0IGZvciBhbGwgZXhjZXB0ICYjODIxNjtwYXJlbnQmIzgyMTc7KTwvbGk+CgkJPGxp Pjxjb2RlPm5vdDwvY29kZT4gTm90IGVxdWFsPC9saT4KCQk8bGk+PGNvZGU+bHQ8L2NvZGU+ IExlc3MgdGhhbjwvbGk+CgkJPGxpPjxjb2RlPmd0PC9jb2RlPiBHcmVhdGVyIHRoYW48L2xp PgoJCTxsaT48Y29kZT5sZTwvY29kZT4gTGVzcyB0aGFuIG9yIGVxdWFsIHRvPC9saT4KCQk8 bGk+PGNvZGU+Z2U8L2NvZGU+IEdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0bzwvbGk+CgkJPGxp Pjxjb2RlPmluPC9jb2RlPiBGaWVsZCBpcyBvbmUgb2YgYSBsaXN0IG9mIHZhbHVlczwvbGk+ CgkJPGxpPjxjb2RlPm5vdGluPC9jb2RlPiBGaWVsZCBpcyBub3Qgb25lIG9mIHRoZSBnaXZl biBsaXN0IG9mIHZhbHVlczwvbGk+CgkJPGxpPjxjb2RlPmJlZ2luczwvY29kZT4gRmllbGQg YmVnaW5zIHdpdGggYSBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzPC9saT4KCQk8bGk+PGNvZGU+ Y29udGFpbnM8L2NvZGU+IEZpZWxkIGNvbnRhaW5zIGEgc2VxdWVuY2Ugb2YgY2hhcmFjdGVy cyAoZGVmYXVsdCBmb3IgJiM4MjE2O3BhcmVudCYjODIxNzspPC9saT4KCQk8bGk+PGNvZGU+ ZW5kczwvY29kZT4gRmllbGQgZW5kcyB3aXRoIGEgc2VxdWVuY2Ugb2YgY2hhcmFjdGVyczwv bGk+CgkJPGxpPjxjb2RlPmlzZW1wdHk8L2NvZGU+IEZpZWxkIGlzIGVtcHR5IChjb250YWlu cyBub3RoaW5nKTwvbGk+CgkJPGxpPjxjb2RlPmlzdXNlZDwvY29kZT4gRmllbGQgaGFzIHNv bWUgdmFsdWU8L2xpPgoJCTxsaT48Y29kZT5kZWZpbmVkPC9jb2RlPiBGaWVsZCBpcyBzZXQg KHVzZWZ1bCB3aXRoIHVybHZhciB2YXJpYWJsZXMpPC9saT4KCQk8bGk+PGNvZGU+dW5kZWZp bmVkPC9jb2RlPiBGaWVsZCBpcyBub3Qgc2V0LCBvciBtaXNzaW5nIGZyb20gdGhlIDxzcGFu IGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+IGxpbmU8L2xpPgoJCTxsaT48Y29kZT5pc251bTwv Y29kZT4gRmllbGQgaXMgYSBudW1iZXI8L2xpPgoJCTxsaT48Y29kZT5pc2FscGhhPC9jb2Rl PiBGaWVsZCBjb250YWlucyBjaGFyYWN0ZXJzIG9ubHk8L2xpPgoJCTxsaT48Y29kZT5pc2Fs bnVtPC9jb2RlPiBGaWVsZCBjb250YWlucyBhbHBoYW51bWVyaWMgY2hhcmFjdGVycyBvbmx5 PC9saT4KCQk8bGk+PGNvZGU+aXNsb3dlcjwvY29kZT4gRXZlcnkgY2hhcmFjdGVyIGluIHRo ZSBmaWVsZCBpcyBsb3dlciBjYXNlPC9saT4KCQk8bGk+PGNvZGU+aXN1cHBlcjwvY29kZT4g RXZlcnkgY2hhcmFjdGVyIGluIHRoZSBmaWVsZCBpcyB1cHBlciBjYXNlPC9saT4KCQk8bGk+ PGNvZGU+aXNwdW5jdDwvY29kZT4gRXZlcnkgY2hhcmFjdGVyIGluIHRoZSBmaWVsZCBpcyBz b21lIHB1bmN0dWF0aW9uIG1hcms8L2xpPgoJCTxsaT48Y29kZT5pc3NwYWNlPC9jb2RlPiBF dmVyeSBjaGFyYWN0ZXIgaW4gdGhlIGZpZWxkIGlzIGEgd2hpdGVzcGFjZSBjaGFyYWN0ZXIg KG9yIHRhYiwgbmV3bGluZSwgZXRjKTwvbGk+Cgk8L3VsPgoKCTxwPldpdGggdGhlIGNvbXBh cmlzb24gb3BlcmF0b3JzIChndCwgbHQsIGdlLCBsZSkgeW91IG1heSBmaW5kIG9kZCBiZWhh dmlvdXIgd2hlbiBjb21wYXJpbmcgbnVtYmVycy4gRm9yIGV4YW1wbGUsIDxjb2RlPnVybHZh cjpwaWMgZ3QgNjwvY29kZT4gd2lsbCByZXR1cm4gPHNwYW4gY2xhc3M9ImNhcHMiPlRSVUU8 L3NwYW4+IGlmIDxjb2RlPnBpYzwvY29kZT4gaXMgc2V0IHRvICYjODIyMDtmcmVkJiM4MjIx Oy4gVGhpcyBpcyBiZWNhdXNlIHRoZSB3b3JkICYjODIyMDtmcmVkJiM4MjIxOyAob3IgYXQg bGVhc3QgdGhlICYjODIyMDtjaGFyYWN0ZXIgZiYjODIyMTspIGlzIGdyZWF0ZXIgaW4gdGhl IDxzcGFuIGNsYXNzPSJjYXBzIj5BU0NJSTwvc3Bhbj4gdGFibGUgdGhhbiB0aGUgJiM4MjIw O2NoYXJhY3RlciA2JiM4MjIxOy48L3A+CgoJPHA+VG8gY2lyY3VtdmVudCB0aGlzIHByb2Js ZW0sIHlvdSBtYXkgYXBwZW5kIDxjb2RlPjpOVU08L2NvZGU+IHRvIHRoZSBlbmQgb2YgYW55 IG9mIHRoZXNlIDQgb3BlcmF0b3JzIHRvIGZvcmNlIHRoZSBwbHVnaW4gdG8gY2hlY2sgdGhh dCB0aGUgdmFsdWVzIGFyZSBpbnRlZ2Vycy48L3A+CgoJPHA+QW55IG9mIHRoZSA8Y29kZT5p czwvY29kZT4gb3BlcmF0b3JzIChleGNlcHQgPGNvZGU+aXNzcGFjZTwvY29kZT4pIGNhbiB0 YWtlIGFuIGV4dHJhIHBhcmFtZXRlciBhcyB3ZWxsLiBTaW5jZSB0aGV5IGNvbXBhcmUgZXZl cnkgY2hhcmFjdGVyIGFnYWluc3QgdGhlIGdpdmVuIGJlaGF2aW91ciwgc3BhY2UgY2hhcmFj dGVycyBjYW4gbWVzcyB0aGluZ3MgdXAgYSBiaXQuIEZvciBleGFtcGxlIDxjb2RlPmZpZWxk PSZxdW90O2N1c3RvbTEmcXVvdDsgb3BlcmF0b3I9JnF1b3Q7aXNsb3dlciZxdW90OzwvY29k ZT4gd2lsbCBmYWlsIGlmIGN1c3RvbTEgY29udGFpbnMgJiM4MjIwO3RoaXMgaXMgYSB0ZXN0 JiM4MjIxOy4gVG8gY2lyY3VtdmVudCB0aGlzLCBhZGQgPGNvZGU+Ok5PU1BBQ0U8L2NvZGU+ IHRvIHRoZSBvcGVyYXRvciB3aGljaCB3aWxsIHJlbW92ZSBhbGwgc3BhY2VzIGZyb20gdGhl IHN0cmluZyBiZWZvcmUgdGVzdGluZyBpdC48L3A+CgoJPHA+Tm90ZSBhbHNvIHRoYXQgd2hp bGUgPGNvZGU+ZGVmaW5lZDwvY29kZT4gYW5kIDxjb2RlPnVuZGVmaW5lZDwvY29kZT4gZGlm ZmVyIHNlbWFudGljYWxseSBmcm9tIDxjb2RlPmlzdXNlZDwvY29kZT4gYW5kIDxjb2RlPmlz ZW1wdHk8L2NvZGU+IChyZXNwZWN0aXZlbHkpLCB0aGUgd2F5IDxzcGFuIGNsYXNzPSJjYXBz Ij5UWFA8L3NwYW4+IGFzc2lnbnMgdmFyaWFibGVzIG1lYW5zIHRoYXQsIGZvciB0aGUgbW9z dCBwYXJ0LCB0aGUgdGVybXMgYXJlIGludGVyY2hhbmdlYWJsZS4gV2hlbiBkZWFsaW5nIHdp dGggdXJsdmFycyBhbmQgc3ZydmFycywgdGhlIHR3byBzZXRzIG9mIG9wZXJhdG9ycyBiZWhh dmUgaW5kZXBlbmRlbnRseSwgYXMgeW91IHdvdWxkIGV4cGVjdC4gU2VlIDxhIGhyZWY9IiNl ZzUiPkV4YW1wbGUgNTwvYT4gZm9yIG1vcmUuIE5laXRoZXIgPGNvZGU+ZGVmaW5lZDwvY29k ZT4gbm9yIDxjb2RlPnVuZGVmaW5lZDwvY29kZT4gbWFrZSBzZW5zZSB3aXRoIDxjb2RlPnBh cmVudDwvY29kZT4sIHNvIHRoZXkgYXJlIGZvcmJpZGRlbi48L3A+CgoJPGg0IGNsYXNzPSJh dHQtbmFtZSAiIGlkPSJ2YWx1ZSI+dmFsdWU8L2g0PgoKCTxwPkxpc3Qgb2YgdmFsdWVzIHRv IGNvbXBhcmUgZWFjaCBmaWVsZCBpbiB0dXJuIHRvLiBDYW4gYmUgc3RhdGljIHZhbHVlcy90 ZXh0IG9yIHRoZSBuYW1lIG9mIGFueSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBm aWVsZCwgbGlrZSB0aG9zZSBnaXZlbiBpbiA8YSBocmVmPSIjZmllbGQiPmZpZWxkPC9hPiAo ZXhjZXB0ICYjODIyMDtwYXJlbnQmIzgyMjE7KS48L3A+CgoJPHA+VG8gZGlzdGluZ3Vpc2gg YSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBmaWVsZCBmcm9tIHN0YXRpYyB0ZXh0 LCBwcmVmaXggdGhlIGZpZWxkIG5hbWUgd2l0aCA8Y29kZT4/PC9jb2RlPi4gRm9yIGV4YW1w bGU6IDxjb2RlPnZhbHVlPSZxdW90O3RpdGxlJnF1b3Q7PC9jb2RlPiB3aWxsIGNvbXBhcmUg eW91ciBjaG9zZW4gZmllbGQgYWdhaW5zdCB0aGUgd29yZCAmIzgyMjA7dGl0bGUmIzgyMjE7 LCB3aGVyZWFzIDxjb2RlPnZhbHVlPSZxdW90Oz90aXRsZSZxdW90OzwvY29kZT4gd2lsbCBj b21wYXJlIHlvdXIgZmllbGQgYWdhaW5zdCB0aGUgY3VycmVudCBhcnRpY2xlJiM4MjE3O3Mg dGl0bGUuPC9wPgoKCTxwPk5vdGUgdGhhdCB5b3UgbWF5IGZpbmQgdXNpbmcgZG91YmxlLXF1 b3RlcyBpbiBmaWVsZHMgZ2l2ZXMgdW5leHBlY3RlZCByZXN1bHRzLiBUaGV5IGFyZSBiZXN0 IGF2b2lkZWQsIG9yIHdvcmtlZCBhcm91bmQgYnkgdXNpbmcgPGNvZGU+Y29udGFpbnM8L2Nv ZGU+IGluc3RlYWQgb2YgPGNvZGU+ZXE8L2NvZGU+LjwvcD4KCgk8aDQgY2xhc3M9ImF0dC1u YW1lICIgaWQ9ImxvZ2ljIj5sb2dpYzwvaDQ+CgoJPHA+Q2FuIGJlIG9uZSBvZiA8Y29kZT5h bmQ8L2NvZGU+ICh0aGUgZGVmYXVsdCkgb3IgPGNvZGU+b3I8L2NvZGU+LiBJZiB1c2luZyA8 Y29kZT5hbmQ8L2NvZGU+LCBhbGwgY29uZGl0aW9ucyBtdXN0IGJlIG1ldCBmb3IgYSA8c3Bh biBjbGFzcz0iY2FwcyI+VFJVRTwvc3Bhbj4gcmVzdWx0LiBJZiB1c2luZyA8Y29kZT5vcjwv Y29kZT4sIGFueSBvZiB0aGUgY29uZGl0aW9ucyB0aGF0IG1hdGNoIHdpbGwgZ2l2ZSBhIDxz cGFuIGNsYXNzPSJjYXBzIj5UUlVFPC9zcGFuPiByZXN1bHQuPC9wPgoKCTxoNCBjbGFzcz0i YXR0LW5hbWUgIiBpZD0iY2FzZXNlbnNlIj5jYXNlX3NlbnNpdGl2ZTwvaDQ+CgoJPHA+Qnkg ZGVmYXVsdCwgYWxsIGNvbXBhcmlzb25zIGFyZSBjYXNlLWluc2Vuc2l0aXZlICgwKS4gSWYg eW91IHdpc2ggdG8gbWFrZSB0aGVtIHNlbnNpdGl2ZSB0byBjYXB0aWxpc2F0aW9uLCBzcGVj aWZ5IDxjb2RlPmNhc2Vfc2Vuc2l0aXZlPSZxdW90OzEmcXVvdDs8L2NvZGU+LiBOb3RlIHRo YXQgaWYgdXNpbmcgPGNvZGU+aXNsb3dlcjwvY29kZT4gb3IgPGNvZGU+aXN1cHBlcjwvY29k ZT4gaW4gYSBjb21wYXJpc29uLCBjYXNlIHNlbnNpdGl2aXR5IHdpbGwgYXV0b21hdGljYWxs eSBiZSBzd2l0Y2hlZCBvbiB3aGlsZSB0aGUgdGVzdCBpcyB0YWtpbmcgcGxhY2UuPC9wPgoK CTxoNCBjbGFzcz0iYXR0LW5hbWUgIiBpZD0icGFyYW1kZWxpbSI+cGFyYW1fZGVsaW08L2g0 PgoKCTxwPllvdSBub3JtYWxseSBzcGVjaWZ5IGNvbW1hLXNlcGFyYXRlZCBsaXN0cyB0byB0 aGUgPGNvZGU+ZmllbGQ8L2NvZGU+LCA8Y29kZT5vcGVyYXRvcjwvY29kZT4gYW5kIDxjb2Rl PnZhbHVlPC9jb2RlPiBwYXJhbWV0ZXJzLiBTb21ldGltZXMgdGhpcyBtaWdodCBub3QgYmUg ZGVzaXJhYmxlIGlmIHlvdSBoYXZlIHVzZWQgdGhhdCBjaGFyYWN0ZXIgaW4gdGhlIG5hbWUg b2YgYSBjdXN0b20gZmllbGQsIGZvciBleGFtcGxlLiBUaGlzIG9wdGlvbiBhbGxvd3MgeW91 IHRvIGNoYW5nZSB0aGUgZGVsaW1pdGVyIHRvIGFsbW9zdCBhbnl0aGluZyB5b3UgbGlrZSwg ZS5nLiBzcGVjaWZ5aW5nIDxjb2RlPnBhcmFtX2RlbGltPSZxdW90Oy8vJnF1b3Q7PC9jb2Rl PiBtZWFucyB5b3Ugd291bGQgc3BlY2lmeSA8ZW0+YWxsPC9lbT4geW91ciBwYXJhbWV0ZXIg bGlzdHMgbGlrZSB0aGlzOjwvcD4KCgk8cD48Y29kZT5maWVsZD0mcXVvdDtzZWN0aW9uIC8v IHVybHZhcjp0eXBlJnF1b3Q7IG9wZXJhdG9yPSZxdW90O2VxIC8vIGJlZ2lucyZxdW90OyB2 YWx1ZT0mcXVvdDthbmltYWxzIC8vIHRpZ2VyJnF1b3Q7PC9jb2RlPjwvcD4KCgk8aDQgY2xh c3M9ImF0dC1uYW1lICIgaWQ9Im1vZGRlbGltIj5tb2RfZGVsaW08L2g0PgoKCTxwPlZlcnkg c2ltaWxhciB0byA8YSBocmVmPSIjcGFyYW1kZWxpbSI+cGFyYW1fZGVsaW08L2E+LCB0aGlz IGdvdmVybnMgdGhlIGRlbGltaXRlciB0byB1c2UgYmV0d2VlbiBhbiBvcHRpb24gYW5kIGl0 cyBtb2RpZmllciAoZS5nLiB0aGUgdGhpbmcgc2VwYXJhdGluZyB1cmx2YXIsIHN2cnZhciBv ciB0eHB2YXIgZnJvbSB0aGUgdmFyaWFibGUgbmFtZSwgb3IgcGFyZW50IGZyb20gPGNvZGU+ TFZMPC9jb2RlPiBhbmQgPGNvZGU+Q0FUPC9jb2RlPiwgYW5kIGFsc28gdGhlIGNoYXJhY3Rl cihzKSB0aGF0IHNlcGFyYXRlIGFuIG9wZXJhdG9yIGZyb20gdGhlIDxzcGFuIGNsYXNzPSJj YXBzIj5OVU08L3NwYW4+IG9yIDxzcGFuIGNsYXNzPSJjYXBzIj5OT1NQQUNFPC9zcGFuPiBt b2RpZmllcnMpLiBJdCBpcyB0aGUgY29sb24gKDopIGJ5IGRlZmF1bHQuPC9wPgoKCTxoNCBj bGFzcz0iYXR0LW5hbWUgIiBpZD0ibW9kZGVsaW0iPmxpc3RfZGVsaW08L2g0PgoKCTxwPkZv ciB1c2Ugd2l0aCB0aGUgPGNvZGU+aW48L2NvZGU+IGFuZCA8Y29kZT5ub3RpbjwvY29kZT4g b3BlcmF0b3JzLCB0aGlzIGlzIHRoZSBkZWxpbWl0ZXIgYmV0d2VlbiB2YWx1ZXMuIEl0IGlz IHRoZSBmb3J3YXJkLXNsYXNoICgvKSBieSBkZWZhdWx0LiBBIGNvbnRyaXZlZCBleGFtcGxl OjwvcD4KCjxwcmU+PGNvZGU+Jmx0O3R4cDpzbWRfaWYgZmllbGQ9JnF1b3Q7dHhwdmFyOmxl dmVsJnF1b3Q7IG9wZXJhdG9yPSZxdW90O2luJnF1b3Q7IHZhbHVlPSZxdW90OzEvMi8zLzUv OC8xMy8yMS8zNCZxdW90OyZndDsKICAmbHQ7cCZndDtSZXN1bHQgaXMgYSBGaWJvbmFjY2kg dmFsdWUhJmx0Oy9wJmd0OwombHQ7L3R4cDpzbWRfaWYmZ3Q7CjwvY29kZT48L3ByZT4KCgk8 cD5Ob3RlIHRoYXQgaW4gYWxsICYjODIxNjtkZWxpbSYjODIxNzsgYXR0cmlidXRlcywgc29t ZSBjaGFyYWN0ZXIgc2VxdWVuY2VzIG1heSBjYXVzZSBwcm9ibGVtcyAocXVvdGVzICYjODIx Mjsgc2luZ2xlIG9yIGRvdWJsZSAmIzgyMTI7IHNwcmluZyB0byBtaW5kOyBvdGhlcnMgbGlr ZSBwYXJlbnRoZXNlcyBtYXkgYWxzbyBjYXVzZSB0aGUgcGx1Z2luIHRvIGV4cGxvZGUpLjwv cD4KCgk8aDM+UmVwbGFjZW1lbnQgdGFnczwvaDM+CgoJPHA+RXZlcnkgZmllbGQgb3IgdmFs dWUgdGhhdCB5b3UgcmVmZXIgdG8gaW4geW91ciBzbWRfaWYgdGFnIGJlY29tZXMgYXZhaWxh YmxlIHdpdGhpbiB0aGUgY29udGFpbmluZyBibG9jayBzbyB5b3UgY2FuIGRpc3BsYXkgaXRz IGNvbnRlbnRzIGlmIHlvdSB3aXNoLiBNb3N0IG9mIHRoZSB0aW1lIHRoaXMgaXMgbm90IG11 Y2ggdXNlIGJ1dCBpdCBjYW4gYmUgdmVyeSB1c2VmdWwgd2l0aCB0aGUgPGNvZGU+aW48L2Nv ZGU+IG9wZXJhdG9yLiBGb3IgaW5zdGFuY2UsIGlmIHlvdSBoYXZlIGFza2VkIHNtZF9pZiB0 byB0ZXN0IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiB2YXJpYWJsZSBuYW1l ZCAmIzgyMTY7bGV2ZWwmIzgyMTc7IGFuZCB0b2xkIGl0IHRvIGNvbXBhcmUgaXQgdG8gdGhl IGN1c3RvbSBmaWVsZCBsYWJlbGxlZCAmIzgyMTY7YWxsb3dhYmxlX2xldmVscyYjODIxNzss IHR3byB0YWdzIGJlY29tZSBhdmFpbGFibGUgd2hpY2ggeW91IGNhbiB1c2Ugd2l0aGluIHRo ZSBjb250YWluaW5nIGJsb2NrOjwvcD4KCgk8dWw+CgkJPGxpPjxjb2RlPntzbWRfaWZfbGV2 ZWx9PC9jb2RlPiB3b3VsZCBkaXNwbGF5IHRoZSB2YWx1ZSBvZiB0aGUgJiM4MjE2O2xldmVs JiM4MjE3OyA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPiB2YXJpYWJsZTwvbGk+CgkJ PGxpPjxjb2RlPntzbWRfaWZfYWxsb3dhYmxlX2xldmVsc308L2NvZGU+IHdvdWxkIGRpc3Bs YXkgdGhlIGNvbnRlbnRzIG9mIHRoZSBjdXJyZW50IGFydGljbGUmIzgyMTc7cyBjdXN0b20g ZmllbGQ8L2xpPgoJPC91bD4KCgk8cD5UaGUgcmVwbGFjZW1lbnQgdGFncyBhcmUgYWx3YXlz IHByZWZpeGVkIHdpdGggPGNvZGU+c21kX2lmXzwvY29kZT4gc28gdGhleSBkb24mIzgyMTc7 dCBjbGFzaCB3aXRoIHRoZSBvbmVzIGluIHNtZF9nYWxsZXJ5IChmb3IgZXhhbXBsZSwgd2hl biB1c2luZyBzbWRfaWYgaW5zaWRlIGFuIHNtZF9nYWxsZXJ5IHRhZykuIElmIHlvdSBhcmUg Y29tcGFyaW5nIGEgZml4ZWQtdmFsdWUgZmllbGQgKHN1Y2ggYXMgPGNvZGU+ZmllbGQ9JnF1 b3Q7TlVMTCZxdW90OzwvY29kZT4gb3IgPGNvZGU+dmFsdWU9JnF1b3Q7MTImcXVvdDs8L2Nv ZGU+IG9yIHNtZF9nYWxsZXJ5JiM4MjE3O3MgPGNvZGU+dmFsdWU9JnF1b3Q7e2NhdGVnb3J5 fSZxdW90OzwvY29kZT4pIHRoZSBuYW1lIG9mIHRoZSByZXBsYWNlbWVudCB0YWdzIGFyZSA8 Y29kZT57c21kX2lmX2ZpZWxkfTwvY29kZT4gZm9yIGZpZWxkcyBhbmQgPGNvZGU+e3NtZF9p Zl92YWx9PC9jb2RlPiBmb3IgdmFsdWVzLjwvcD4KCgk8cD5TZWUgPGEgaHJlZj0iI2VnOCI+ RXhhbXBsZSA4PC9hPiBmb3IgbW9yZS48L3A+CgoJPGgyPkV4YW1wbGVzPC9oMj4KCgk8aDMg aWQ9ImVnMSI+RXhhbXBsZSAxPC9oMz4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFz cz0iYmxvY2siPiZsdDt0eHA6c21kX2lmIGZpZWxkPSZxdW90O3NlY3Rpb24sIGlkJnF1b3Q7 CiAgICAgb3BlcmF0b3I9JnF1b3Q7YmVnaW5zLCBndCZxdW90OwogICAgIHZhbHVlPSZxdW90 O2xpb24sIDEyJnF1b3Q7Jmd0OwogJmx0O3R4cDphcnRpY2xlIC8mZ3Q7CiZsdDt0eHA6ZWxz ZSAvJmd0OwogJmx0O3AmZ3Q7Tm90IHRvZGF5LCB0aGFua3MmbHQ7L3AmZ3Q7CiZsdDsvdHhw OnNtZF9pZiZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPkNoZWNrcyBpZiB0aGUgY3VycmVudCBz ZWN0aW9uIG5hbWUgYmVnaW5zIHdpdGggdGhlIHdvcmQgJiM4MjIwO2xpb24mIzgyMjE7IGFu ZCB0aGUgYXJ0aWNsZSBJRCBpcyBncmVhdGVyIHRoYW4gMTIuIERpc3BsYXlzIHRoZSBhcnRp Y2xlIGlmIGJvdGggY29uZGl0aW9ucyBhcmUgbWV0IG9yIGRpc3BsYXlzIHRoZSB0ZXh0ICYj ODIyMDtOb3QgdG9kYXksIHRoYW5rcyYjODIyMTsgaWYgbm90LjwvcD4KCgk8aDMgaWQ9ImVn MiI+RXhhbXBsZSAyPC9oMz4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxv Y2siPiZsdDt0eHA6c21kX2lmIGZpZWxkPSZxdW90O3N1bW1hcnksIGNhdGVnb3J5LCB1cmx2 YXI6cGljJnF1b3Q7CiAgICAgb3BlcmF0b3I9JnF1b3Q7aXN1c2VkLCBlcSwgaXNudW0mcXVv dDsKICAgICB2YWx1ZT0mcXVvdDssIGFuaW1hbCAsJnF1b3Q7ICZndDsKICZsdDt0eHA6YXJ0 aWNsZSAvJmd0OwombHQ7dHhwOmVsc2UgLyZndDsKICZsdDtwJmd0O05vdCB0b2RheSwgdGhh bmtzJmx0Oy9wJmd0OwombHQ7L3R4cDpzbWRfaWYmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5D aGVja3MgaWYgdGhlIGN1c3RvbSBmaWVsZCBsYWJlbGxlZCAmIzgyMjA7c3VtbWFyeSYjODIy MTsgaGFzIHNvbWUgZGF0YSBpbiBpdCwgY2hlY2tzIGlmIHRoZSBnbG9iYWwgY2F0ZWdvcnkg ZXF1YWxzICYjODIyMDthbmltYWwmIzgyMjE7IGFuZCB0ZXN0cyBpZiB0aGUgdXJsdmFyIDxj b2RlPnBpYzwvY29kZT4gaXMgbnVtZXJpYyAoZS5nLiA8Y29kZT4/cGljPTU8L2NvZGU+KS48 L3A+CgoJPHA+SWYgYWxsIHRoZXNlIGNvbmRpdGlvbnMgYXJlIG1ldCB0aGUgYXJ0aWNsZSBp cyBkaXNwbGF5ZWQsIGVsc2UgdGhlIG1lc3NhZ2UgaXMgc2hvd24uIE5vdGUgdGhhdCA8Y29k ZT5pc3VzZWQ8L2NvZGU+IGFuZCA8Y29kZT5pc251bTwvY29kZT4gZG9uJiM4MjE3O3QgdGFr ZSBhcmd1bWVudHMgZm9yIDxjb2RlPnZhbHVlPC9jb2RlPiBhbmQgdGhlaXIgcG9zaXRpb25z IGFyZSBoZWxkIGJ5IGVtcHR5IGNvbW1hcyAodGVjaG5pY2FsbHkgdGhlIGxhc3QgY29tbWEg aXNuJiM4MjE3O3QgbmVlZGVkIGJ1dCBpdCBoZWxwcyBrZWVwIGV2ZXJ5dGhpbmcgbmVhdCBp ZiB5b3UgYWRkIGZ1cnRoZXIgdGVzdHMgbGF0ZXIgb24pLjwvcD4KCgk8aDMgaWQ9ImVnMyI+ RXhhbXBsZSAzPC9oMz4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2si PiZsdDt0eHA6c21kX2lmIGZpZWxkPSZxdW90O2FydGljbGVfaW1hZ2UsIHN2cnZhcjpIVFRQ X1VTRVJfQUdFTlQmcXVvdDsKICAgICBvcGVyYXRvcj0mcXVvdDtlcSwgY29udGFpbnMmcXVv dDsKICAgICB2YWx1ZT0mcXVvdDt1cmx2YXI6cGljLCBTYWZhcmkmcXVvdDsKICAgICBsb2dp Yz0mcXVvdDtvciZxdW90OyZndDsKICZsdDt0eHA6YXJ0aWNsZSAvJmd0OwombHQ7dHhwOmVs c2UgLyZndDsKICZsdDtwJmd0O05vdCB0b2RheSwgdGhhbmtzJmx0Oy9wJmd0OwombHQ7L3R4 cDpzbWRfaWYmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5Db21wYXJlcyAoZm9yIGVxdWFsaXR5 KSB0aGUgY3VycmVudCBhcnRpY2xlIGltYWdlIGlkIHdpdGggdGhlIHZhbHVlIG9mIHRoZSB1 cmwgdmFyaWFibGUgPGNvZGU+cGljPC9jb2RlPiBhbmQgY2hlY2tzIGlmIHRoZSB2YWx1ZSBv ZiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPkhUVFA8L3NwYW4+X1VTRVJfQUdFTlQgc3RyaW5n IGNvbnRhaW5zICYjODIyMDtTYWZhcmkmIzgyMjE7LiBUaGlzIGV4YW1wbGUgdXNlcyB0aGUg JiM4MjE2O29yJiM4MjE3OyBsb2dpYywgaGVuY2UgaWYgPGVtPmVpdGhlcjwvZW0+IGNvbmRp dGlvbiBpcyBtZXQgdGhlIGFydGljbGUgaXMgc2hvd24sIG90aGVyd2lzZSB0aGUgJiM4MjE2 O25vdCB0b2RheSYjODIxNzsgbWVzc2FnZSBpcyBkaXNwbGF5ZWQuPC9wPgoKCTxoMyBpZD0i ZWc0Ij5FeGFtcGxlIDQ8L2gzPgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJi bG9jayI+Jmx0O3R4cDpzbWRfaWYgZmllbGQ9JnF1b3Q7cGFyZW50OkxWTDImcXVvdDsKICAg ICBvcGVyYXRvcj0mcXVvdDtlcSZxdW90OwogICAgIHZhbHVlPSZxdW90O21hbW1hbCZxdW90 OyZndDsKICZsdDt0eHA6YXJ0aWNsZSAvJmd0OwombHQ7dHhwOmVsc2UgLyZndDsKICZsdDtw Jmd0O05vdCB0b2RheSwgdGhhbmtzJmx0Oy9wJmd0OwombHQ7L3R4cDpzbWRfaWYmZ3Q7Cjwv Y29kZT48L3ByZT4KCgk8cD5DaGVja3MgdGhlIDJuZCBzdWItY2F0ZWdvcnkgb2YgdGhlIGds b2JhbCBjYXRlZ29yeSYjODIxNztzIHRyZWUgdG8gc2VlIGlmIGl0IGVxdWFscyAmIzgyMjA7 bWFtbWFsJiM4MjIxOy4gSWYgaXQgZG9lcywgc2hvdyB0aGUgYXJ0aWNsZTsgaWYgbm90IHNo b3cgdGhlIG1lc3NhZ2UuIFJlbW92aW5nIHRoZSA8Y29kZT46TFZMMjwvY29kZT4gKHdoaWNo IGFsbG93cyB5b3UgdG8gYWxzbyByZW1vdmUgdGhlIG9wZXJhdG9yIHBhcmFtZXRlciB0byBm b3JjZSB0aGUgY29tcGFyaXNvbiB0byBiZSB0aGUgZGVmYXVsdCAmIzgyMjA7Y29udGFpbnMm IzgyMjE7KSBjaGVja3MgaWYgdGhlIGN1cnJlbnQgZ2xvYmFsIGNhdGVnb3J5IGlzIGEgY2hp bGQgb2YgJiM4MjE2O21hbW1hbCYjODIxNzsgKGF0IGFueSBsZXZlbCkuPC9wPgoKCTxwPkNo YW5nZSB0aGUgZmllbGQgdG8gPGNvZGU+cGFyZW50OkNBVDE8L2NvZGU+IHRvIHNlZSBpZiB0 aGUgYXJ0aWNsZSYjODIxNztzIGNhdGVnb3J5MSBtYXRjaGVzICYjODIxNjttYW1tYWwmIzgy MTc7IGF0IGFueSBsZXZlbCwgb3IgdXNlIDxjb2RlPmZpZWxkPSZxdW90O3BhcmVudDpDQVQx OkxWTDImcXVvdDs8L2NvZGU+IHRvIGNvbWJpbmUgdGhlIGNoZWNrcy48L3A+CgoJPGgzIGlk PSJlZzUiPkV4YW1wbGUgNTwvaDM+Cgo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9 ImJsb2NrIj4mbHQ7dHhwOnNtZF9pZiBmaWVsZD0mcXVvdDt1cmx2YXI6cGljLCB1cmx2YXI6 cGFnZSZxdW90OwogICAgIG9wZXJhdG9yPSZxdW90O2d0Ok5VTSwgdW5kZWZpbmVkJnF1b3Q7 CiAgICAgdmFsdWU9JnF1b3Q7P2FydGljbGVfaW1hZ2UsJnF1b3Q7Jmd0OwogJmx0O3R4cDph cnRpY2xlIC8mZ3Q7CiZsdDt0eHA6ZWxzZSAvJmd0OwogJmx0O3AmZ3Q7Tm90IHRvZGF5LCB0 aGFua3MmbHQ7L3AmZ3Q7CiZsdDsvdHhwOnNtZF9pZiZndDsKPC9jb2RlPjwvcHJlPgoKCTxw PlRlc3RzIGlmIHRoZSB1cmwgdmFyaWFibGUgPGNvZGU+cGljPC9jb2RlPiBpcyBzdHJpY3Rs eSBudW1lcmljYWxseSBncmVhdGVyIHRoYW4gdGhlIHZhbHVlIGluIHRoZSBjdXJyZW50IGFy dGljbGUmIzgyMTc7cyA8Y29kZT5hcnRpY2xlX2ltYWdlPC9jb2RlPiBmaWVsZCBhbmQgdGhh dCB0aGUgdXJsIHZhcmlhYmxlIDxjb2RlPnBhZ2U8L2NvZGU+IGlzIG1pc3NpbmcgZnJvbSB0 aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gYWRkcmVzcy4gQ29tcGFyZSB0aGUg b3V0Y29tZSBvZiB0aGlzIHRlc3Qgd2l0aCB0aGUgb3RoZXIgb3BlcmF0b3JzIHVzaW5nIHRo ZSBmb2xsb3dpbmcgdGFibGUgd2hlbiB0ZXN0aW5nIHRoZSA8Y29kZT5wYWdlPC9jb2RlPiB1 cmx2YXI6PC9wPgoKCTx0YWJsZT4KCQk8dHI+CgkJCTx0aD48c3BhbiBjbGFzcz0iY2FwcyI+ PHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj48L3NwYW4+IDwvdGg+CgkJCTx0aD5kZWZp bmVkIDwvdGg+CgkJCTx0aD51bmRlZmluZWQgPC90aD4KCQkJPHRoPmlzdXNlZCA8L3RoPgoJ CQk8dGg+aXNlbXB0eSA8L3RoPgoJCTwvdHI+CgkJPHRyPgoJCQk8dGQ+IGluZGV4LnBocD9w YWcgPC90ZD4KCQkJPHRkPiA8c3BhbiBjbGFzcz0iY2FwcyI+PHNwYW4gY2xhc3M9ImNhcHMi PkZBTFNFPC9zcGFuPjwvc3Bhbj4gPC90ZD4KCQkJPHRkPiA8c3BhbiBjbGFzcz0iY2FwcyI+ PHNwYW4gY2xhc3M9ImNhcHMiPlRSVUU8L3NwYW4+PC9zcGFuPiA8L3RkPgoJCQk8dGQ+IDxz cGFuIGNsYXNzPSJjYXBzIj48c3BhbiBjbGFzcz0iY2FwcyI+RkFMU0U8L3NwYW4+PC9zcGFu PiA8L3RkPgoJCQk8dGQ+IDxzcGFuIGNsYXNzPSJjYXBzIj48c3BhbiBjbGFzcz0iY2FwcyI+ RkFMU0U8L3NwYW4+PC9zcGFuPiA8L3RkPgoJCTwvdHI+CgkJPHRyPgoJCQk8dGQ+IGluZGV4 LnBocD9wYWdlPSA8L3RkPgoJCQk8dGQ+IDxzcGFuIGNsYXNzPSJjYXBzIj48c3BhbiBjbGFz cz0iY2FwcyI+VFJVRTwvc3Bhbj48L3NwYW4+IDwvdGQ+CgkJCTx0ZD4gPHNwYW4gY2xhc3M9 ImNhcHMiPjxzcGFuIGNsYXNzPSJjYXBzIj5GQUxTRTwvc3Bhbj48L3NwYW4+IDwvdGQ+CgkJ CTx0ZD4gPHNwYW4gY2xhc3M9ImNhcHMiPjxzcGFuIGNsYXNzPSJjYXBzIj5GQUxTRTwvc3Bh bj48L3NwYW4+IDwvdGQ+CgkJCTx0ZD4gPHNwYW4gY2xhc3M9ImNhcHMiPjxzcGFuIGNsYXNz PSJjYXBzIj5UUlVFPC9zcGFuPjwvc3Bhbj4gPC90ZD4KCQk8L3RyPgoJCTx0cj4KCQkJPHRk PiBpbmRleC5waHA/cGFnZT00IDwvdGQ+CgkJCTx0ZD4gPHNwYW4gY2xhc3M9ImNhcHMiPjxz cGFuIGNsYXNzPSJjYXBzIj5UUlVFPC9zcGFuPjwvc3Bhbj4gPC90ZD4KCQkJPHRkPiA8c3Bh biBjbGFzcz0iY2FwcyI+PHNwYW4gY2xhc3M9ImNhcHMiPkZBTFNFPC9zcGFuPjwvc3Bhbj4g PC90ZD4KCQkJPHRkPiA8c3BhbiBjbGFzcz0iY2FwcyI+PHNwYW4gY2xhc3M9ImNhcHMiPlRS VUU8L3NwYW4+PC9zcGFuPiA8L3RkPgoJCQk8dGQ+IDxzcGFuIGNsYXNzPSJjYXBzIj48c3Bh biBjbGFzcz0iY2FwcyI+RkFMU0U8L3NwYW4+PC9zcGFuPiA8L3RkPgoJCTwvdHI+Cgk8L3Rh YmxlPgoKCTxoMyBpZD0iZWc2Ij5FeGFtcGxlIDY8L2gzPgoKCTxwPlB1dCB0aGlzIGluc2lk ZSB5b3VyIDxjb2RlPnBsYWlubGlua3M8L2NvZGU+IGZvcm0gYW5kIGV4ZWN1dGUgYSA8Y29k ZT4mbHQ7dHhwOmxpbmtsaXN0IC8mZ3Q7PC9jb2RlPiBmcm9tIGFuIGFydGljbGUgcGFnZS9m b3JtOjwvcD4KCjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0 eHA6c21kX2lmIGZpZWxkPSZxdW90O2lkLCBpZCZxdW90OwogICAgIG9wZXJhdG9yPSZxdW90 O2dlOk5VTSwgbGU6TlVNJnF1b3Q7CiAgICAgdmFsdWU9JnF1b3Q7dXJsdmFyOm1pbiwgdXJs dmFyOm1heCZxdW90OyZndDsKICAmbHQ7dHhwOmxpbmtkZXNjdGl0bGUgLyZndDsmbHQ7YnIg LyZndDsKJmx0Oy90eHA6c21kX2lmJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+VGhhdCB3aWxs IGxpc3Qgb25seSB0aGUgbGlua3MgdGhhdCBoYXZlIElEcyBiZXR3ZWVuIHRoZSA8Y29kZT5t aW48L2NvZGU+IGFuZCA8Y29kZT5tYXg8L2NvZGU+IHZhcmlhYmxlcyBzcGVjaWZpZWQgb24g dGhlIGFkZHJlc3MgYmFyLjwvcD4KCgk8aDMgaWQ9ImVnNyI+RXhhbXBsZSA3PC9oMz4KCjxw cmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX2lmIGZp ZWxkPSZxdW90O3VybHZhcjpwcm9kdWN0X2NvZGUmcXVvdDsKICAgICBvcGVyYXRvcj0mcXVv dDtpc2FsbnVtJnF1b3Q7Jmd0OwogICZsdDt0eHA6b3V0cHV0X2Zvcm0gZm9ybT0mcXVvdDtz aG93X3Byb2R1Y3QmcXVvdDsgLyZndDsKJmx0O3R4cDplbHNlIC8mZ3Q7CiAmbHQ7cCZndDtJ bnZhbGlkIHByb2R1Y3QgY29kZSZsdDsvcCZndDsKJmx0Oy90eHA6c21kX2lmJmd0Owo8L2Nv ZGU+PC9wcmU+CgoJPHA+VGVzdHMgdG8gc2VlIGlmIHRoZSBwcm9kdWN0X2NvZGUgPHNwYW4g Y2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gdmFyaWFibGUgaXMgYWxwaGFudW1lcmljIGFuZCBk aXNwbGF5cyBhIGZvcm0gaWYgc28uPC9wPgoKCTxoMyBpZD0iZWc4Ij5FeGFtcGxlIDg8L2gz PgoKPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRf aWYgZmllbGQ9JnF1b3Q7dXJsdmFyOnNvcnRfb3JkZXImcXVvdDsKICAgICBvcGVyYXRvcj0m cXVvdDtpbiZxdW90OwogICAgIHZhbHVlPSZxdW90O2lkL3ByaWNlL3NpemUvY29sb3VyJnF1 b3Q7Jmd0OwogICZsdDtwJmd0O1NvcnRpbmcgdmFsdWVzIGJ5IHtzbWRfaWZfc29ydF9vcmRl cn0mbHQ7L3AmZ3Q7CiAgLy8gRG8gc29tZSBzdHVmZgombHQ7dHhwOmVsc2UgLyZndDsKICAv LyBVc2UgYSBkZWZhdWx0IHNvcnQsIG9yIHNob3cgYW4gZXJyb3IgaGVyZQombHQ7L3R4cDpz bWRfaWYmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5CeSB1c2luZyB0aGUgcmVwbGFjZW1lbnQg dGFnIHtzbWRfaWZfc29ydF9vcmRlcn0geW91IGhhdmUgcGx1Y2tlZCB0aGUgdmFsdWUgZnJv bSB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gYmFyIGFuZCBpbnNlcnRlZCBp dCBpbnRvIHRoZSBhcnRpY2xlLiBVc2VmdWwgd2hlbiB1c2luZyB0aGUgPGNvZGU+aW48L2Nv ZGU+IG9yIDxjb2RlPm5vdGluPC9jb2RlPiBvcGVyYXRvcnMgYmVjYXVzZSwgYWx0aG91Z2gg eW91IGtub3cgdGhhdCB0aGUgZmllbGQgbWF0Y2hlZCBvbmUgb2YgdGhlIHZhbHVlcyBpbiB5 b3VyIGxpc3QsIHlvdSB3b3VsZCBvdGhlcndpc2Ugbm90IGtub3cgd2hpY2ggb25lIGhhcyBi ZWVuIGdpdmVuIG9uIHRoZSBhZGRyZXNzIGJhci48L3A+CgoJPGgyIGNsYXNzPSJjaGFuZ2Vs b2ciPkNoYW5nZWxvZzwvaDI+CgoJPHVsPgoJCTxsaT4zMCBEZWMgMDcgfCAwLjEgfCBJbml0 aWFsIHJlbGVhc2U8L2xpPgoJCTxsaT4zMCBEZWMgMDcgfCAwLjIgfCBBZGRlZCBwYXJlbnQg Y2F0ZWdvcnkgY2hlY2tpbmcgKHRoYW5rcyB0aGVfZ2hvc3QpPC9saT4KCQk8bGk+MDIgSmFu IDA4IHwgMC4zIHwgQWRkZWQgZGVmaW5lZC91bmRlZmluZWQgYW5kIHN0cmljdCBudW1lcmlj IGNvbXBhcmlzb25zPC9saT4KCQk8bGk+MDYgSmFuIDA4IHwgMC40IHwgQWRkZWQgPGNvZGU+ PzwvY29kZT4gbm90YXRpb24gdG8gYWxsb3cgdGhlIHZhbHVlIHRvIHJlYWQgPHNwYW4gY2xh c3M9ImNhcHMiPlRYUDwvc3Bhbj4gZmllbGRzOyBiZXR0ZXIgcXVvdGUgc3VwcG9ydCAoYm90 aCB0aGFua3MgTmVpbEEpPC9saT4KCQk8bGk+MDYgSmFuIDA4IHwgMC40MSB8IEZpeGVkIGxv d2VyIGNhc2UgZmllbGQgbmFtZXMgYW5kIHVuZGVmaW5lZCBpbmRleCBlcnJvciAodGhhbmtz IHBldGVyaik8L2xpPgoJCTxsaT4xNCBKYW4gMDggfCAwLjUgfCBBZGRlZCBjYXNlX3NlbnNp dGl2ZSBvcHRpb247IG1hZGUgJiM4MjE2O2NvbnRhaW5zJiM4MjE3OyB0aGUgZGVmYXVsdCBm b3IgJiM4MjE2O3BhcmVudCYjODIxNzsgdGVzdHM7IGltcHJvdmVkIGhlbHAgKGFsbCB0aGFu a3MgdGhlX2dob3N0KTsgYWRkZWQgZGVsaW0gb3B0aW9uczwvbGk+CgkJPGxpPjE1IEphbiAw OCB8IDAuNTEgfCBGaXhlZCBkZWZpbmVkL3VuZGVmaW5lZCBzeW50YXggZXJyb3I7IHRpZ2h0 ZW5lZCBpc3VzZWQvaXNlbXB0eSB0byBkaXN0aW5ndWlzaCB0aGVtIGZyb20gZGVmaW5lZC91 bmRlZmluZWQ8L2xpPgoJCTxsaT4yNSBNYXkgMDggfCAwLjYgfCBGaXhlZCAmIzgyMTY7dW5k ZWZpbmVkIGluZGV4JiM4MjE3OyBlcnJvcnMgKHRoYW5rcyByZWRib3QgYW5kIHRoZV9naG9z dCkgOyBhZGRlZCBtb3JlIHByZXRleHQgdmFyaWFibGVzIDsgYWRkZWQgbW9yZSA8Y29kZT5p czwvY29kZT4gY2hlY2tzIChhbmQgdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5OT1NQQUNFPC9z cGFuPiBtb2RpZmllcikgOyBhbGxvd2VkIGZpbGUgYW5kIGxpbmsgdGVzdHMgKGluY2x1ZGlu ZyBwYXJlbnQgY2F0ZWdvcmllcyk8L2xpPgoJCTxsaT4yNiBNYXkgMDggfCAwLjYxIHwgRml4 ZWQgc3R1cGlkIG92ZXJzaWdodCBpbiBmaWVsZCBuYW1lIGdlbmVyYXRpb24gdG8gYWxsb3cg YXJiaXRyYXJ5IG5hbWVzIGluc3RlYWQgb2YgZm9yY2luZyAkdGhpc2FydGljbGUgKHRoYW5r cyB0byBKb2FuYSBDYXJ2YWxobyBmb3IgbGVhZGluZyBtZSB0byB0aGlzKTwvbGk+CgkJPGxp PjExIEp1biAwOCB8IDAuNjIgfCBGaXhlZCBpbmNvcnJlY3QgcmVzdWx0IGlmIGV2YWwoKSBp cyBlbXB0eSA7IGFkZGVkIDxzcGFuIGNsYXNzPSJjYXBzIj5OVUxMPC9zcGFuPiBmaWVsZCBv YmplY3Q8L2xpPgoJCTxsaT4xMCBTZXAgMDggfCAwLjcgfCBGaXhlZCB3YXJuaW5nIGlmIGVt cHR5IGN1c3RvbSBmaWVsZCBpbiB2YWx1ZSAodGhhbmtzIHZpc3VhbHBlb3BsZSkgOyBhZGRl ZCB0eHB2YXIgc3VwcG9ydCAodGhhbmtzIHRoZV9naG9zdCkgOyBhZGRlZCB0aGlzaW1hZ2Ug c3VwcG9ydCAoZm9yIHRoZSBmdXR1cmUpIDsgYWRkZWQgb3BlcmF0b3JzIDxjb2RlPmluPC9j b2RlPiwgPGNvZGU+bm90aW48L2NvZGU+IGFuZCB0aGUgPGNvZGU+bGlzdF9kZWxpbTwvY29k ZT4gYXR0cmlidXRlOyBlbmFibGVkIHJlcGxhY2VtZW50IHRhZ3MgZm9yIG1hdGNoZWQgdmFy aWFibGVzPC9saT4KCTwvdWw+CgoJPHA+PC9kaXY+PC9wPgo8IS0tIC0tLSBCRUdJTiBQTFVH SU4gQ1NTIC0tLSAtLT4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KI3NtZF9oZWxwIHsgbGlu ZS1oZWlnaHQ6MS4zIDt9CiNzbWRfaGVscCBjb2RlIHsgZm9udC13ZWlnaHQ6Ym9sZDsgZm9u dDogMTA1JS8xMzAlICJDb3VyaWVyIE5ldyIsIGNvdXJpZXIsIG1vbm9zcGFjZTsgYmFja2dy b3VuZC1jb2xvcjogI0ZGRkZDQzt9CiNzbWRfaGVscCBjb2RlLmJsb2NrIHsgZm9udC13ZWln aHQ6bm9ybWFsOyBib3JkZXI6MXB4IGRvdHRlZCAjOTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiAj ZjBlNjhjOyBkaXNwbGF5OmJsb2NrOyBtYXJnaW46MTBweCAxMHB4IDIwcHg7IHBhZGRpbmc6 MTBweDsgfQojc21kX2hlbHAgYTpsaW5rLCAjc21kX2hlbHAgYTp2aXNpdGVkIHsgY29sb3I6 IGJsdWU7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlk IGJsdWU7IHBhZGRpbmctYm90dG9tOjFweDt9CiNzbWRfaGVscCBhOmhvdmVyLCAjc21kX2hl bHAgYTphY3RpdmUgeyBjb2xvcjogYmx1ZTsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBib3Jk ZXItYm90dG9tOiAycHggc29saWQgYmx1ZTsgcGFkZGluZy1ib3R0b206MXB4O30KI3NtZF9o ZWxwIGgxIHsgY29sb3I6ICMzNjk7IGZvbnQ6IDIwcHggR2VvcmdpYSwgc2Fucy1zZXJpZjsg bWFyZ2luOiAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7IH0KI3NtZF9oZWxwIGgyIHsgYm9yZGVy LWJvdHRvbTogMXB4IHNvbGlkIGJsYWNrOyBwYWRkaW5nOjEwcHggMCAwOyBjb2xvcjogIzM2 OTsgZm9udDogMTdweCBHZW9yZ2lhLCBzYW5zLXNlcmlmOyB9CiNzbWRfaGVscCBoMyB7IGNv bG9yOiAjNjkzOyBmb250OiBib2xkIDEycHggQXJpYWwsIHNhbnMtc2VyaWY7IGxldHRlci1z cGFjaW5nOiAxcHg7IG1hcmdpbjogMTBweCAwIDA7dGV4dC10cmFuc2Zvcm06IHVwcGVyY2Fz ZTt9CiNzbWRfaGVscCBoNCB7IGZvbnQ6IGJvbGQgMTFweCBBcmlhbCwgc2Fucy1zZXJpZjsg bGV0dGVyLXNwYWNpbmc6IDFweDsgbWFyZ2luOiAxMHB4IDAgMCA7dGV4dC10cmFuc2Zvcm06 IHVwcGVyY2FzZTsgfQojc21kX2hlbHAgLmF0dC1uYW1lIHsgZm9udC13ZWlnaHQ6Ym9sZDsg fQojc21kX2hlbHAgLm1hbmQgeyBiYWNrZ3JvdW5kOiNlZWU7IGJvcmRlcjoxcHggZG90dGVk ICM5OTk7IH0KI3NtZF9oZWxwIHRhYmxlIHt3aWR0aDoxMDAlOyB0ZXh0LWFsaWduOmNlbnRl cjsgcGFkZGluZy1ib3R0b206MWVtO30KI3NtZF9oZWxwIHRkLCAjc21kX2hlbHAgdGgge2Jv cmRlcjoxcHggc29saWQgIzk5OTsgcGFkZGluZzouNWVtIDA7fQo8L3N0eWxlPgo8IS0tIC0t LSBFTkQgUExVR0lOIENTUyAtLS0gLS0+CiI7czozOiJtZDUiO3M6MzI6IjBmYjM1NWJkZTRh ZDlhNGNiMjhiZmI2YWZiODJlNzUxIjt9