<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>68323</bug_id>
          
          <creation_ts>2011-09-18 11:33:23 -0700</creation_ts>
          <short_desc>[mac] WebKit contains Objective-C classes that are not prefixed with its standard prefixes</short_desc>
          <delta_ts>2011-09-19 11:35:37 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit API</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>mitz</reporter>
          <assigned_to>mitz</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>469169</commentid>
    <comment_count>0</comment_count>
    <who name="">mitz</who>
    <bug_when>2011-09-18 11:33:23 -0700</bug_when>
    <thetext>$ nm -jgU JavaScriptCore.framework/JavaScriptCore|egrep &apos;^_OBJC_CLASS_\$_&apos;|egrep -v &apos;\$_(Web|DOM|WK|WTF)&apos;
_OBJC_CLASS_$_ProfilerServer

$ nm -jgU WebCore.framework/WebCore|egrep &apos;^_OBJC_CLASS_\$_&apos;|egrep -v &apos;\$_(Web|DOM|WK|WTF)&apos;
_OBJC_CLASS_$_AccessibilityObjectWrapper
_OBJC_CLASS_$_CascadeList
_OBJC_CLASS_$_CookieStorageObjCAdapter
_OBJC_CLASS_$_LanguageChangeObserver
_OBJC_CLASS_$_ScrollAnimationHelperDelegate
_OBJC_CLASS_$_ScrollbarPainterControllerDelegate
_OBJC_CLASS_$_ScrollbarPainterDelegate
_OBJC_CLASS_$_ScrollbarPartAnimation
_OBJC_CLASS_$_ScrollbarPrefsObserver

$ nm -jgU WebKit.framework/WebKit|egrep &apos;^_OBJC_CLASS_\$_&apos;|egrep -v &apos;\$_(Web|DOM|WK|WTF)&apos;
_OBJC_CLASS_$_NonBlockingPanel
_OBJC_CLASS_$_PDFPrefUpdatingProxy
_OBJC_CLASS_$_ThreadEnabler
_OBJC_CLASS_$__WebSafeForwarder

$ nm -jgU WebKit2.framework/WebKit2|egrep &apos;^_OBJC_CLASS_\$_&apos;|egrep -v &apos;\$_(Web|DOM|WK|WTF)&apos;
_OBJC_CLASS_$_AccessibilityWebPageObject
_OBJC_CLASS_$_FullKeyboardAccessWatcher</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469170</commentid>
    <comment_count>1</comment_count>
    <who name="">mitz</who>
    <bug_when>2011-09-18 11:34:27 -0700</bug_when>
    <thetext>If WTF is not to be considered a standard prefix, then there’s also
_OBJC_CLASS_$_WTFMainThreadCaller
in JavaScriptCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469175</commentid>
    <comment_count>2</comment_count>
      <attachid>107790</attachid>
    <who name="">mitz</who>
    <bug_when>2011-09-18 12:45:02 -0700</bug_when>
    <thetext>Created attachment 107790
WebKit2 part</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469179</commentid>
    <comment_count>3</comment_count>
      <attachid>107792</attachid>
    <who name="">mitz</who>
    <bug_when>2011-09-18 13:02:45 -0700</bug_when>
    <thetext>Created attachment 107792
WebKit1 part</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469188</commentid>
    <comment_count>4</comment_count>
      <attachid>107795</attachid>
    <who name="">mitz</who>
    <bug_when>2011-09-18 13:43:41 -0700</bug_when>
    <thetext>Created attachment 107795
WebCore part</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469208</commentid>
    <comment_count>5</comment_count>
      <attachid>107795</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-18 16:26:55 -0700</bug_when>
    <thetext>Comment on attachment 107795
WebCore part

Attachment 107795 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9735746

New failing tests:
scrollbars/scrollbar-middleclick-nopaste.html
scrollbars/scrollbar-orientation.html
platform/chromium/fast/text/text-stroke-with-border.html
scrollbars/overflow-scrollbar-combinations.html
svg/as-object/deep-nested-embedded-svg-size-changes-no-layout-triggers-1.html
scrollbars/disabled-scrollbar.html
scrollbars/scrollbar-buttons.html
svg/as-object/nested-embedded-svg-size-changes-no-layout-triggers-1.html
scrollbars/listbox-scrollbar-combinations.html
platform/mac-snowleopard/platform/mac/fast/text/international/Geeza-Pro-vertical-metrics-adjustment.html
svg/as-object/embedded-svg-size-changes-no-layout-triggers.html
scrollbars/scrollbar-click-does-not-blur-content.html
scrollbars/scrollbars-on-positioned-content.html
svg/as-object/deep-nested-embedded-svg-size-changes-no-layout-triggers-2.html
scrollbars/basic-scrollbar.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469209</commentid>
    <comment_count>6</comment_count>
      <attachid>107801</attachid>
    <who name="">mitz</who>
    <bug_when>2011-09-18 16:56:58 -0700</bug_when>
    <thetext>Created attachment 107801
JavaScriptCore part</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469569</commentid>
    <comment_count>7</comment_count>
    <who name="">mitz</who>
    <bug_when>2011-09-19 11:35:37 -0700</bug_when>
    <thetext>Fixed in &lt;http://trac.webkit.org/r95448&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107790</attachid>
            <date>2011-09-18 12:45:02 -0700</date>
            <delta_ts>2011-09-18 13:10:58 -0700</delta_ts>
            <desc>WebKit2 part</desc>
            <filename>bug-68323-20110918124501.patch</filename>
            <type>text/plain</type>
            <size>50027</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDk1Mzk3KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMDktMTggIERhbiBCZXJu
c3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KKworICAgICAgICBXZWJLaXQyIHBhcnQgb2YgW21hY10g
V2ViS2l0IGNvbnRhaW5zIE9iamVjdGl2ZS1DIGNsYXNzZXMgdGhhdCBhcmUgbm90IHByZWZpeGVk
IHdpdGggaXRzIHN0YW5kYXJkIHByZWZpeGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02ODMyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFJlbmFtZWQgRnVsbEtleWJvYXJkQWNjZXNzV2F0Y2hlciB0byBX
S0Z1bGxLZXlib2FyZEFjY2Vzc1dhdGNoZXIuCisgICAgICAgIFJlbmFtZWQgQWNjZXNzaWJpbGl0
eVdlYlBhZ2VPYmplY3QgdG8gV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdC4KKworICAgICAg
ICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
QWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0Lm1tOiBSZW1vdmVkLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9i
amVjdC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0LmguCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0Lm1tOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0FjY2Vzc2liaWxpdHlXZWJQYWdlT2Jq
ZWN0Lm1tLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXplKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6YWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9tYWMvRnVsbEtleWJvYXJkQWNjZXNzV2F0Y2hlci5oOiBSZW1vdmVkLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvbWFjL0Z1bGxLZXlib2FyZEFjY2Vzc1dhdGNoZXIubW06IFJlbW92
ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9tYWMvV0tGdWxsS2V5Ym9hcmRBY2Nlc3NXYXRjaGVy
Lmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL0Z1bGxLZXlib2Fy
ZEFjY2Vzc1dhdGNoZXIuaC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL21hYy9XS0Z1bGxLZXlib2Fy
ZEFjY2Vzc1dhdGNoZXIubW06IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
bWFjL0Z1bGxLZXlib2FyZEFjY2Vzc1dhdGNoZXIubW0uCisgICAgICAgICgrW1dLRnVsbEtleWJv
YXJkQWNjZXNzV2F0Y2hlciBmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkXSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9tYWMvV2ViUHJvY2Vzc01hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJv
Y2Vzczo6ZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCk6CisKIDIwMTEtMDktMTcgIE1paGFpIFBh
cnBhcml0YSAgPG1paGFpcEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRnJhbWVMb2FkZXJDbGll
bnQgQmFja0ZvcndhcmRMaXN0LXJlbGF0ZWQgbWV0aG9kcyBhcmUgdW5zdWVkCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiA5NTM4OSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjM4LDggKzIzOCw4IEBACiAJCTFDQThCOTQ1MTI3
Qzg4MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0E4Qjk0MzEyN0M4
ODJBMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9
OwogCQkxQ0E4Qjk0NjEyN0M4ODJBMDA1NzZDMkIgLyogV2ViSW5zcGVjdG9yUHJveHlNZXNzYWdl
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNBOEI5
NDQxMjdDODgyQTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWVzc2FnZXMuaCAqLzsgfTsK
IAkJMUNBOEI5NTQxMjdDODkxNTAwNTc2QzJCIC8qIFdlYkluc3BlY3Rvck1hYy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDOEUyREFEMTI3OEM1QjIw
MEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JNYWMubW0gKi87IH07Ci0JCTI5Q0Q1NUFBMTI4RTI5NEYw
MDEzM0M4NSAvKiBBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjlDRDU1QTgxMjhFMjk0RjAwMTMzQzg1IC8q
IEFjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0LmggKi87IH07Ci0JCTI5Q0Q1NUFCMTI4RTI5NEYw
MDEzM0M4NSAvKiBBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdC5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5Q0Q1NUE5MTI4RTI5NEYwMDEzM0M4NSAv
KiBBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdC5tbSAqLzsgfTsKKwkJMjlDRDU1QUExMjhFMjk0
RjAwMTMzQzg1IC8qIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5Q0Q1NUE4MTI4RTI5NEYwMDEzM0M4
NSAvKiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0LmggKi87IH07CisJCTI5Q0Q1NUFCMTI4
RTI5NEYwMDEzM0M4NSAvKiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0Lm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjlDRDU1QTkxMjhFMjk0RjAw
MTMzQzg1IC8qIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QubW0gKi87IH07CiAJCTMxRUEy
NUQyMTM0Rjc4QzAwMDVCMTQ1MiAvKiBOYXRpdmVXZWJNb3VzZUV2ZW50TWFjLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFFQTI1RDAxMzRGNzhCMjAw
NUIxNDUyIC8qIE5hdGl2ZVdlYk1vdXNlRXZlbnRNYWMubW0gKi87IH07CiAJCTMzMDkzNDQ3MTMx
NUI5MjIwMDk3QTdCQyAvKiBXZWJDb29raWVNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMzMDkzNDQzMTMxNUI5
MjIwMDk3QTdCQyAvKiBXZWJDb29raWVNYW5hZ2VyTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsK
IAkJMzMwOTM0NDgxMzE1QjkyMjAwOTdBN0JDIC8qIFdlYkNvb2tpZU1hbmFnZXJNZXNzYWdlcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzMwOTM0NDQx
MzE1QjkyMjAwOTdBN0JDIC8qIFdlYkNvb2tpZU1hbmFnZXJNZXNzYWdlcy5oICovOyB9OwpAQCAt
ODIzLDggKzgyMyw4IEBACiAJCUUxOEM5MkY0MTJEQjlFNzEwMENGMkFFQiAvKiBQcmludEluZm8u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE4Qzky
RjMxMkRCOUU3MTAwQ0YyQUVCIC8qIFByaW50SW5mby5jcHAgKi87IH07CiAJCUUxQTMxNzMyMTM0
Q0VBNkMwMDdDOUE0RiAvKiBBdHRyaWJ1dGVkU3RyaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUEzMTczMTEzNENFQTZDMDA3QzlBNEYgLyogQXR0
cmlidXRlZFN0cmluZy5oICovOyB9OwogCQlFMUEzMTczNTEzNENFQTgwMDA3QzlBNEYgLyogQXR0
cmlidXRlZFN0cmluZy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUxQTMxNzM0MTM0Q0VBODAwMDdDOUE0RiAvKiBBdHRyaWJ1dGVkU3RyaW5nLm1tICov
OyB9OwotCQlFMUJCMTZBNDEzMjAxQjlCMDBGNDk0MzEgLyogRnVsbEtleWJvYXJkQWNjZXNzV2F0
Y2hlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFC
QjE2ODgxMzIwMThCQTAwRjQ5NDMxIC8qIEZ1bGxLZXlib2FyZEFjY2Vzc1dhdGNoZXIuaCAqLzsg
fTsKLQkJRTFCQjE2QTUxMzIwMUI5QjAwRjQ5NDMxIC8qIEZ1bGxLZXlib2FyZEFjY2Vzc1dhdGNo
ZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUJC
MTY4OTEzMjAxOEJBMDBGNDk0MzEgLyogRnVsbEtleWJvYXJkQWNjZXNzV2F0Y2hlci5tbSAqLzsg
fTsKKwkJRTFCQjE2QTQxMzIwMUI5QjAwRjQ5NDMxIC8qIFdLRnVsbEtleWJvYXJkQWNjZXNzV2F0
Y2hlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFC
QjE2ODgxMzIwMThCQTAwRjQ5NDMxIC8qIFdLRnVsbEtleWJvYXJkQWNjZXNzV2F0Y2hlci5oICov
OyB9OworCQlFMUJCMTZBNTEzMjAxQjlCMDBGNDk0MzEgLyogV0tGdWxsS2V5Ym9hcmRBY2Nlc3NX
YXRjaGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTFCQjE2ODkxMzIwMThCQTAwRjQ5NDMxIC8qIFdLRnVsbEtleWJvYXJkQWNjZXNzV2F0Y2hlci5t
bSAqLzsgfTsKIAkJRTFDQzFCOTAxMkQ3RUFERjAwNjI1ODM4IC8qIFByaW50SW5mby5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFDQzFCOEUxMkQ3RUFE
RjAwNjI1ODM4IC8qIFByaW50SW5mby5oICovOyB9OwogCQlFMUNDMUI5MTEyRDdFQURGMDA2MjU4
MzggLyogUHJpbnRJbmZvTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTFDQzFCOEYxMkQ3RUFERjAwNjI1ODM4IC8qIFByaW50SW5mb01hYy5tbSAq
LzsgfTsKIAkJRTFFRTUzRTMxMUY4Q0ZDMDAwQ0NCRUU0IC8qIEluamVjdGVkQnVuZGxlUGFnZUVk
aXRvckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTFFRTUzREMxMUY4Q0Y5RjAwQ0NCRUU0IC8qIEluamVjdGVkQnVuZGxlUGFnZUVkaXRvckNs
aWVudC5oICovOyB9OwpAQCAtMTE2Niw4ICsxMTY2LDggQEAKIAkJMUNBOEI5MzUxMjdDNzc0RTAw
NTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gV2ViSW5zcGVjdG9yUHJveHlNYWMubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTFDQThCOTQzMTI3Qzg4MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQ
cm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTFDQThCOTQ0MTI3Qzg4MkEwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JQ
cm94eU1lc3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkluc3Bl
Y3RvclByb3h5TWVzc2FnZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMjlDRDU1
QTgxMjhFMjk0RjAwMTMzQzg1IC8qIEFjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTI5Q0Q1NUE5MTI4RTI5NEYwMDEzM0M4NSAv
KiBBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0Lm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkyOUNENTVBODEyOEUyOTRGMDAxMzNDODUgLyogV0tBY2Nlc3Np
YmlsaXR5V2ViUGFnZU9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
S0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTI5Q0Q1NUE5MTI4RTI5NEYwMDEzM0M4NSAvKiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2Jq
ZWN0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tBY2Nlc3Np
YmlsaXR5V2ViUGFnZU9iamVjdC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzFF
QTI1RDAxMzRGNzhCMjAwNUIxNDUyIC8qIE5hdGl2ZVdlYk1vdXNlRXZlbnRNYWMubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBOYXRpdmVXZWJNb3VzZUV2ZW50TWFjLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkzMUVBMjVEMzEzNEY3OEQ2MDA1QjE0NTIgLyogTmF0aXZlV2ViTW91
c2VFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOYXRpdmVXZWJNb3Vz
ZUV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMyREJDRjVFMDM3MEFERUUw
MEM5MTc4MyAvKiBXZWJLaXQyUHJlZml4LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYktpdDJQcmVmaXguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3OTYs
OCArMTc5Niw4IEBACiAJCUUxOEM5MkYzMTJEQjlFNzEwMENGMkFFQiAvKiBQcmludEluZm8uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJpbnRJbmZvLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFBMzE3MzExMzRDRUE2QzAwN0M5QTRGIC8qIEF0
dHJpYnV0ZWRTdHJpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXR0cmli
dXRlZFN0cmluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUEzMTczNDEzNENF
QTgwMDA3QzlBNEYgLyogQXR0cmlidXRlZFN0cmluZy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IEF0dHJpYnV0ZWRTdHJpbmcubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUUxQkIxNjg4MTMyMDE4QkEwMEY0OTQzMSAvKiBGdWxsS2V5Ym9hcmRBY2Nl
c3NXYXRjaGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZ1bGxLZXlib2Fy
ZEFjY2Vzc1dhdGNoZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTFCQjE2ODkx
MzIwMThCQTAwRjQ5NDMxIC8qIEZ1bGxLZXlib2FyZEFjY2Vzc1dhdGNoZXIubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgZmlsZUVuY29kaW5nID0gNDsgcGF0aCA9IEZ1bGxLZXlib2FyZEFjY2Vzc1dhdGNoZXIu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxQkIxNjg4MTMyMDE4QkEwMEY0OTQz
MSAvKiBXS0Z1bGxLZXlib2FyZEFjY2Vzc1dhdGNoZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0tGdWxsS2V5Ym9hcmRBY2Nlc3NXYXRjaGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUUxQkIxNjg5MTMyMDE4QkEwMEY0OTQzMSAvKiBXS0Z1bGxLZXlib2Fy
ZEFjY2Vzc1dhdGNoZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRG
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgZmlsZUVuY29kaW5nID0gNDsgcGF0aCA9
IFdLRnVsbEtleWJvYXJkQWNjZXNzV2F0Y2hlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTFDQzFCOEUxMkQ3RUFERjAwNjI1ODM4IC8qIFByaW50SW5mby5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBQcmludEluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTFDQzFCOEYxMkQ3RUFERjAwNjI1ODM4IC8qIFByaW50SW5mb01hYy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFByaW50SW5mb01hYy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFFRTUzREMxMUY4Q0Y5RjAwQ0NCRUU0IC8qIElu
amVjdGVkQnVuZGxlUGFnZUVkaXRvckNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJbmplY3RlZEJ1bmRsZVBhZ2VFZGl0b3JDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTIwNDgsMTYgKzIwNDgsMTYgQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJ
CTkzQzAxREFBMTM5QUM5MTcwMEVENTFENyAvKiBDb3JlSVBDQ2xpZW50UnVuTG9vcC5oICovLAog
CQkJCTkzQzAxREFCMTM5QUM5MTcwMEVENTFENyAvKiBDb3JlSVBDQ2xpZW50UnVuTG9vcC5tbSAq
LywKLQkJCQlFMUJCMTY4ODEzMjAxOEJBMDBGNDk0MzEgLyogRnVsbEtleWJvYXJkQWNjZXNzV2F0
Y2hlci5oICovLAotCQkJCUUxQkIxNjg5MTMyMDE4QkEwMEY0OTQzMSAvKiBGdWxsS2V5Ym9hcmRB
Y2Nlc3NXYXRjaGVyLm1tICovLAogCQkJCTUxMkRGNkQ2MTM4QzE4MUEwMEEyMkZDNiAvKiBLZXlj
aGFpbkl0ZW1TaGltTWV0aG9kcy5oICovLAogCQkJCTUxMkRGNkQ3MTM4QzE4MUEwMEEyMkZDNiAv
KiBLZXljaGFpbkl0ZW1TaGltTWV0aG9kcy5tbSAqLywKIAkJCQk1MTFGOEE3RDEzOEI0NkZFMDBB
OTVGNDQgLyogU2VjSXRlbVNoaW1NZXRob2RzLmggKi8sCiAJCQkJNTExRjhBN0UxMzhCNDZGRTAw
QTk1RjQ0IC8qIFNlY0l0ZW1TaGltTWV0aG9kcy5tbSAqLywKLQkJCQkxQTZGQTAxRDExRTE1MjYz
MDBEQjEzNzEgLyogV2ViUHJvY2Vzc01haW5NYWMubW0gKi8sCiAJCQkJQkMzMDY1QzMxMjU5MkY4
OTAwRTcxMjc4IC8qIFdlYlByb2Nlc3NNYWMubW0gKi8sCisJCQkJMUE2RkEwMUQxMUUxNTI2MzAw
REIxMzcxIC8qIFdlYlByb2Nlc3NNYWluTWFjLm1tICovLAogCQkJCTUxMUY4QTc3MTM4QjQ2MDkw
MEE5NUY0NCAvKiBXZWJQcm9jZXNzU2hpbS5oICovLAogCQkJCTUxMUY4QTc4MTM4QjQ2MDkwMEE5
NUY0NCAvKiBXZWJQcm9jZXNzU2hpbS5tbSAqLywKKwkJCQlFMUJCMTY4ODEzMjAxOEJBMDBGNDk0
MzEgLyogV0tGdWxsS2V5Ym9hcmRBY2Nlc3NXYXRjaGVyLmggKi8sCisJCQkJRTFCQjE2ODkxMzIw
MThCQTAwRjQ5NDMxIC8qIFdLRnVsbEtleWJvYXJkQWNjZXNzV2F0Y2hlci5tbSAqLywKIAkJCSk7
CiAJCQlwYXRoID0gbWFjOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTMxNTIsMTAg
KzMxNTIsMTAgQEAKIAkJQkM5NjNENkMxMTNERDE5NTAwNTc0QkUyIC8qIG1hYyAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJMjlDRDU1QTgxMjhFMjk0RjAw
MTMzQzg1IC8qIEFjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0LmggKi8sCi0JCQkJMjlDRDU1QTkx
MjhFMjk0RjAwMTMzQzg1IC8qIEFjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0Lm1tICovLAogCQkJ
CTFDOEUyREFEMTI3OEM1QjIwMEJDN0JEMCAvKiBXZWJJbnNwZWN0b3JNYWMubW0gKi8sCiAJCQkJ
QkM5NjNENkQxMTNERDFBNTAwNTc0QkUyIC8qIFdlYlBhZ2VNYWMubW0gKi8sCisJCQkJMjlDRDU1
QTgxMjhFMjk0RjAwMTMzQzg1IC8qIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QuaCAqLywK
KwkJCQkyOUNENTVBOTEyOEUyOTRGMDAxMzNDODUgLyogV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9i
amVjdC5tbSAqLywKIAkJCSk7CiAJCQlwYXRoID0gbWFjOwogCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKQEAgLTM2OTgsNyArMzY5OCw3IEBACiAJCQkJQkNFRTdEQzUxMjhCNjQ1RDAwOTgyN0RB
IC8qIEluamVjdGVkQnVuZGxlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlFRDgyQTdGMjEy
OEM2RkFGMDA0NDc3QjMgLyogV0tCdW5kbGVQYWdlT3ZlcmxheS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUNBOEI5NDYxMjdDODgyQTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclByb3h5TWVzc2FnZXMu
aCBpbiBIZWFkZXJzICovLAotCQkJCTI5Q0Q1NUFBMTI4RTI5NEYwMDEzM0M4NSAvKiBBY2Nlc3Np
YmlsaXR5V2ViUGFnZU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMjlDRDU1QUExMjhFMjk0
RjAwMTMzQzg1IC8qIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QuaCBpbiBIZWFkZXJzICov
LAogCQkJCTUxNTM1NjlEMTI5MUIxRDIwMDA3NDlEQyAvKiBXZWJQYWdlQ29udGV4dE1lbnVDbGll
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQUI0QThEMTI5NkYwQTIwMDIzOTUyRiAvKiBTYW5k
Ym94RXh0ZW5zaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzdCNjIwNjEyOUEwQTY3MDBEMTc0
QTQgLyogV2ViUGFnZUdyb3VwLmggaW4gSGVhZGVycyAqLywKQEAgLTM4MTMsNyArMzgxMyw3IEBA
CiAJCQkJQkNFODFEOEQxMzE5RjdFRjAwMjQxOTEwIC8qIEZvbnRJbmZvLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQ0U4MUQ5OTEzMUFFMDIxMDAyNDE5MTAgLyogRGljdGlvbmFyeVBvcHVwSW5mby5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMzdDNEU5RjYxMzFDNkU3RTAwMjlCRDVBIC8qIGNvbmZpZy5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJRTFCQjE2QTQxMzIwMUI5QjAwRjQ5NDMxIC8qIEZ1bGxLZXli
b2FyZEFjY2Vzc1dhdGNoZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUUxQkIxNkE0MTMyMDFCOUIw
MEY0OTQzMSAvKiBXS0Z1bGxLZXlib2FyZEFjY2Vzc1dhdGNoZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTMzQUExMDY3MTMxRjA2MDAwMEQ0QTU3NSAvKiBXZWJDb29raWVNYW5hZ2VyUHJveHlDbGll
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEQ0E4NUM5MTMyQUJBNEUwMEU5NjFERiAvKiBXS0Z1
bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0ZENTQ4QzEz
MkQ4MjY4MDA1NUQ4MTYgLyogV0tFcnJvckNGLmggaW4gSGVhZGVycyAqLywKQEAgLTQzNTUsNyAr
NDM1NSw3IEBACiAJCQkJMUNBOEI5NDUxMjdDODgyQTAwNTc2QzJCIC8qIFdlYkluc3BlY3RvclBy
b3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDQThCOTU0MTI3Qzg5
MTUwMDU3NkMyQiAvKiBXZWJJbnNwZWN0b3JNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlFRENB
NzFCNzEyOEREQThDMDAyMDFCMjYgLyogV0tCdW5kbGVQYWdlT3ZlcmxheS5jcHAgaW4gU291cmNl
cyAqLywKLQkJCQkyOUNENTVBQjEyOEUyOTRGMDAxMzNDODUgLyogQWNjZXNzaWJpbGl0eVdlYlBh
Z2VPYmplY3QubW0gaW4gU291cmNlcyAqLywKKwkJCQkyOUNENTVBQjEyOEUyOTRGMDAxMzNDODUg
LyogV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUx
NTM1NjlDMTI5MUIxRDIwMDA3NDlEQyAvKiBXZWJQYWdlQ29udGV4dE1lbnVDbGllbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMUFBQjRBQUExMjk2RjE1NDAwMjM5NTJGIC8qIFNhbmRib3hFeHRl
bnNpb25NYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQzdCNjIwNzEyOUEwQTY3MDBEMTc0QTQg
LyogV2ViUGFnZUdyb3VwLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNDQ3Miw3ICs0NDcyLDcgQEAK
IAkJCQkzMzA5MzQ1QTEzMTVCOTk4MDA5N0E3QkMgLyogV0tDb29raWVNYW5hZ2VyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUJDRTgxRDhDMTMxOUY3RUYwMDI0MTkxMCAvKiBGb250SW5mby5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCQ0U4MUQ5ODEzMUFFMDIxMDAyNDE5MTAgLyogRGljdGlvbmFy
eVBvcHVwSW5mby5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlFMUJCMTZBNTEzMjAxQjlCMDBGNDk0
MzEgLyogRnVsbEtleWJvYXJkQWNjZXNzV2F0Y2hlci5tbSBpbiBTb3VyY2VzICovLAorCQkJCUUx
QkIxNkE1MTMyMDFCOUIwMEY0OTQzMSAvKiBXS0Z1bGxLZXlib2FyZEFjY2Vzc1dhdGNoZXIubW0g
aW4gU291cmNlcyAqLywKIAkJCQkzM0FBMTA2NjEzMUYwNjAwMDBENEE1NzUgLyogV2ViQ29va2ll
TWFuYWdlclByb3h5Q2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNENzNCQTQ3MTMxQUND
OUEwMEVFREVEMiAvKiBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUNENzNCQTRFMTMxQUNEQjcwMEVFREVEMiAvKiBXZWJGdWxs
U2NyZWVuTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gOTUz
ODkpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02Nyw5ICs2Nyw5IEBACiAjaWYgUExBVEZPUk0oTUFDKQogI2luY2x1ZGUg
IkRpY3Rpb25hcnlQb3B1cEluZm8uaCIKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci1PQkpD
X0NMQVNTIEFjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0OwogT0JKQ19DTEFTUyBOU0RpY3Rpb25h
cnk7CiBPQkpDX0NMQVNTIE5TT2JqZWN0OworT0JKQ19DTEFTUyBXS0FjY2Vzc2liaWxpdHlXZWJQ
YWdlT2JqZWN0OwogI2VuZGlmCiAKIG5hbWVzcGFjZSBDb3JlSVBDIHsKQEAgLTMzMCw3ICszMzAs
NyBAQCBwdWJsaWM6CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9pZCByZWdpc3RlclVJUHJv
Y2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMoY29uc3QgQ29yZUlQQzo6RGF0YVJlZmVyZW5jZSYgZWxl
bWVuVG9rZW4sIGNvbnN0IENvcmVJUEM6OkRhdGFSZWZlcmVuY2UmIHdpbmRvd1Rva2VuKTsKLSAg
ICBBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdCogYWNjZXNzaWJpbGl0eVJlbW90ZU9iamVjdCgp
OworICAgIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QqIGFjY2Vzc2liaWxpdHlSZW1vdGVP
YmplY3QoKTsKICAgICBXZWJDb3JlOjpJbnRQb2ludCBhY2Nlc3NpYmlsaXR5UG9zaXRpb24oKSBj
b25zdCB7IHJldHVybiBtX2FjY2Vzc2liaWxpdHlQb3NpdGlvbjsgfSAgICAKICAgICAKICAgICB2
b2lkIHNlbmRDb21wbGV4VGV4dElucHV0VG9QbHVnaW4odWludDY0X3QgcGx1Z2luQ29tcGxleFRl
eHRJbnB1dElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdGV4dElucHV0KTsKQEAgLTYwNSw3ICs2
MDUsNyBAQCBwcml2YXRlOgogICAgIC8vIEFsbCBwbHVnLWluIHZpZXdzIG9uIHRoaXMgd2ViIHBh
Z2UuCiAgICAgSGFzaFNldDxQbHVnaW5WaWV3Kj4gbV9wbHVnaW5WaWV3czsKIAotICAgIFJldGFp
blB0cjxBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdD4gbV9tb2NrQWNjZXNzaWJpbGl0eUVsZW1l
bnQ7CisgICAgUmV0YWluUHRyPFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3Q+IG1fbW9ja0Fj
Y2Vzc2liaWxpdHlFbGVtZW50OwogCiAgICAgV2ViQ29yZTo6S2V5Ym9hcmRFdmVudCogbV9rZXli
b2FyZEV2ZW50QmVpbmdJbnRlcnByZXRlZDsKIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9BY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvQWNjZXNzaWJpbGl0eVdl
YlBhZ2VPYmplY3QuaAkocmV2aXNpb24gOTUzODkpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNDcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgQWNjZXNzaWJpbGl0eVdl
YlBhZ2VPYmplY3RfaAotI2RlZmluZSBBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdF9oCi0KLW5h
bWVzcGFjZSBXZWJLaXQgewotY2xhc3MgV2ViUGFnZTsKLX0KLQotQGludGVyZmFjZSBBY2Nlc3Np
YmlsaXR5V2ViUGFnZU9iamVjdCA6IE5TT2JqZWN0IHsKLSAgICBXZWJLaXQ6OldlYlBhZ2UqIG1f
cGFnZTsKLSAgICAKLSAgICBpZCBtX3BhcmVudDsKLSAgICBOU0FycmF5KiBtX2F0dHJpYnV0ZU5h
bWVzOwotICAgIE5TTXV0YWJsZUFycmF5KiBtX2FjY2Vzc2liaWxpdHlDaGlsZHJlbjsKLX0KLQot
LSAodm9pZClzZXRXZWJQYWdlOihXZWJLaXQ6OldlYlBhZ2UqKXBhZ2U7Ci0KLS0gKHZvaWQpc2V0
UmVtb3RlUGFyZW50OihpZClwYXJlbnQ7Ci0KLUBlbmQKLQotI2VuZGlmIC8vIEFjY2Vzc2liaWxp
dHlXZWJQYWdlT2JqZWN0X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9BY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVj
dC5tbQkocmV2aXNpb24gOTUzODkpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDE5NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJB
Y2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdC5oIgotCi0jaW1wb3J0ICJXZWJGcmFtZS5oIgotI2lt
cG9ydCAiV2ViUGFnZS5oIgotI2ltcG9ydCA8V2ViQ29yZS9BWE9iamVjdENhY2hlLmg+Ci0jaW1w
b3J0IDxXZWJDb3JlL0ZyYW1lLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0ZyYW1lVmlldy5oPgotI2lt
cG9ydCA8V2ViQ29yZS9QYWdlLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1Njcm9sbFZpZXcuaD4KLSNp
bXBvcnQgPFdlYkNvcmUvU2Nyb2xsYmFyLmg+Ci0jaW1wb3J0IDxXZWJLaXRTeXN0ZW1JbnRlcmZh
Y2UuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci11c2luZyBuYW1lc3BhY2UgV2ViS2l0
OwotCi1AaW1wbGVtZW50YXRpb24gQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QKLQotLSAoaWQp
YWNjZXNzaWJpbGl0eVJvb3RPYmplY3RXcmFwcGVyCi17Ci0gICAgV2ViQ29yZTo6UGFnZSogcGFn
ZSA9IG1fcGFnZS0+Y29yZVBhZ2UoKTsKLSAgICBpZiAoIXBhZ2UpCi0gICAgICAgIHJldHVybiBu
aWw7Ci0gICAgCi0gICAgV2ViQ29yZTo6RnJhbWUqIGNvcmUgPSBwYWdlLT5tYWluRnJhbWUoKTsK
LSAgICBpZiAoIWNvcmUgfHwgIWNvcmUtPmRvY3VtZW50KCkpCi0gICAgICAgIHJldHVybiBuaWw7
Ci0gICAgCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcm9vdCA9IGNvcmUtPmRvY3VtZW50KCkt
PmF4T2JqZWN0Q2FjaGUoKS0+cm9vdE9iamVjdCgpOwotICAgIGlmICghcm9vdCkKLSAgICAgICAg
cmV0dXJuIG5pbDsKLSAgICAKLSAgICByZXR1cm4gcm9vdC0+d3JhcHBlcigpOwotfQotCi0tICh2
b2lkKXNldFdlYlBhZ2U6KFdlYlBhZ2UqKXBhZ2UKLXsKLSAgICBtX3BhZ2UgPSBwYWdlOwotfQot
Ci0tICh2b2lkKXNldFJlbW90ZVBhcmVudDooaWQpcGFyZW50Ci17Ci0gICAgaWYgKHBhcmVudCAh
PSBtX3BhcmVudCkgewotICAgICAgICBbbV9wYXJlbnQgcmVsZWFzZV07Ci0gICAgICAgIG1fcGFy
ZW50ID0gW3BhcmVudCByZXRhaW5dOwotICAgIH0KLX0KLQotLSAodm9pZClkZWFsbG9jCi17Ci0g
ICAgV0tVbnJlZ2lzdGVyVW5pcXVlSWRGb3JFbGVtZW50KHNlbGYpOwotICAgIFttX2FjY2Vzc2li
aWxpdHlDaGlsZHJlbiByZWxlYXNlXTsKLSAgICBbbV9hdHRyaWJ1dGVOYW1lcyByZWxlYXNlXTsK
LSAgICBbbV9wYXJlbnQgcmVsZWFzZV07Ci0gICAgW3N1cGVyIGRlYWxsb2NdOwotfQotCi0tIChC
T09MKWFjY2Vzc2liaWxpdHlJc0lnbm9yZWQKLXsKLSAgICByZXR1cm4gTk87Ci19Ci0KLS0gKE5T
QXJyYXkgKilhY2Nlc3NpYmlsaXR5QXR0cmlidXRlTmFtZXMKLXsKLSAgICBpZiAoIW1fYXR0cmli
dXRlTmFtZXMpCi0gICAgICAgIG1fYXR0cmlidXRlTmFtZXMgPSBbW05TQXJyYXkgYWxsb2NdIGlu
aXRXaXRoT2JqZWN0czoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0
eVJvbGVBdHRyaWJ1dGUsIE5TQWNjZXNzaWJpbGl0eVJvbGVEZXNjcmlwdGlvbkF0dHJpYnV0ZSwg
TlNBY2Nlc3NpYmlsaXR5Rm9jdXNlZEF0dHJpYnV0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIE5TQWNjZXNzaWJpbGl0eVBhcmVudEF0dHJpYnV0ZSwgTlNBY2Nlc3NpYmlsaXR5V2luZG93
QXR0cmlidXRlLCBOU0FjY2Vzc2liaWxpdHlUb3BMZXZlbFVJRWxlbWVudEF0dHJpYnV0ZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eVBvc2l0aW9uQXR0cmlidXRl
LCBOU0FjY2Vzc2liaWxpdHlTaXplQXR0cmlidXRlLCBOU0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0
dHJpYnV0ZSwgbmlsXTsKLQotICAgIHJldHVybiBtX2F0dHJpYnV0ZU5hbWVzOwotfQotCi0tIChC
T09MKWFjY2Vzc2liaWxpdHlJc0F0dHJpYnV0ZVNldHRhYmxlOihOU1N0cmluZyAqKWF0dHJpYnV0
ZQotewotICAgIHJldHVybiBOTzsKLX0KLQotLSAodm9pZClhY2Nlc3NpYmlsaXR5U2V0VmFsdWU6
KGlkKXZhbHVlIGZvckF0dHJpYnV0ZTooTlNTdHJpbmcgKilhdHRyaWJ1dGUgCi17Ci0gICAgcmV0
dXJuOwotfQotCi0tIChOU0FycmF5ICopYWNjZXNzaWJpbGl0eUFjdGlvbk5hbWVzCi17Ci0gICAg
cmV0dXJuIFtOU0FycmF5IGFycmF5XTsKLX0KLQotLSAoTlNBcnJheSAqKWFjY2Vzc2liaWxpdHlD
aGlsZHJlbgotewotICAgIGlkIHdyYXBwZXIgPSBbc2VsZiBhY2Nlc3NpYmlsaXR5Um9vdE9iamVj
dFdyYXBwZXJdOwotICAgIGlmICghd3JhcHBlcikKLSAgICAgICAgcmV0dXJuIFtOU0FycmF5IGFy
cmF5XTsKLSAgICAKLSAgICByZXR1cm4gW05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0OndyYXBwZXJd
OwotfQotCi0tIChpZClhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6KE5TU3RyaW5nICopYXR0
cmlidXRlCi17Ci0gICAgaWYgKCFXZWJDb3JlOjpBWE9iamVjdENhY2hlOjphY2Nlc3NpYmlsaXR5
RW5hYmxlZCgpKQotICAgICAgICBXZWJDb3JlOjpBWE9iamVjdENhY2hlOjplbmFibGVBY2Nlc3Np
YmlsaXR5KCk7Ci0gICAgCi0gICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOk5TQWNj
ZXNzaWJpbGl0eVBhcmVudEF0dHJpYnV0ZV0pCi0gICAgICAgIHJldHVybiBtX3BhcmVudDsKLSAg
ICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5V2luZG93QXR0
cmlidXRlXSkKLSAgICAgICAgcmV0dXJuIFttX3BhcmVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWU6TlNBY2Nlc3NpYmlsaXR5V2luZG93QXR0cmlidXRlXTsKLSAgICBpZiAoW2F0dHJpYnV0
ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5VG9wTGV2ZWxVSUVsZW1lbnRBdHRyaWJ1
dGVdKQotICAgICAgICByZXR1cm4gW21fcGFyZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1
ZTpOU0FjY2Vzc2liaWxpdHlUb3BMZXZlbFVJRWxlbWVudEF0dHJpYnV0ZV07Ci0gICAgaWYgKFth
dHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVJvbGVBdHRyaWJ1dGVdKQot
ICAgICAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlOwotICAgIGlmIChbYXR0cmli
dXRlIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlSb2xlRGVzY3JpcHRpb25BdHRyaWJ1
dGVdKQotICAgICAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5Um9sZURlc2NyaXB0aW9uKE5TQWNj
ZXNzaWJpbGl0eUdyb3VwUm9sZSwgbmlsKTsKLSAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9T
dHJpbmc6TlNBY2Nlc3NpYmlsaXR5Rm9jdXNlZEF0dHJpYnV0ZV0pCi0gICAgICAgIHJldHVybiBb
TlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6Tk9dOwotCi0gICAgaWYgKCFtX3BhZ2UpCi0gICAgICAg
IHJldHVybiBuaWw7Ci0KLSAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nl
c3NpYmlsaXR5UG9zaXRpb25BdHRyaWJ1dGVdKSB7Ci0gICAgICAgIFdlYkNvcmU6OkludFBvaW50
IHBvaW50ID0gbV9wYWdlLT5hY2Nlc3NpYmlsaXR5UG9zaXRpb24oKTsKLSAgICAgICAgcmV0dXJu
IFtOU1ZhbHVlIHZhbHVlV2l0aFBvaW50Ok5TTWFrZVBvaW50KHBvaW50LngoKSwgcG9pbnQueSgp
KV07Ci0gICAgfQotICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2li
aWxpdHlTaXplQXR0cmlidXRlXSkgewotICAgICAgICBjb25zdCBJbnRTaXplJiBzID0gbV9wYWdl
LT5zaXplKCk7Ci0gICAgICAgIHJldHVybiBbTlNWYWx1ZSB2YWx1ZVdpdGhTaXplOk5TTWFrZVNp
emUocy53aWR0aCgpLCBzLmhlaWdodCgpKV07Ci0gICAgfQotICAgIGlmIChbYXR0cmlidXRlIGlz
RXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZV0pCi0gICAgICAg
IHJldHVybiBbc2VsZiBhY2Nlc3NpYmlsaXR5Q2hpbGRyZW5dOwotCi0gICAgcmV0dXJuIFtzdXBl
ciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6YXR0cmlidXRlXTsKLX0KLQotLSAoQk9PTClh
Y2Nlc3NpYmlsaXR5U2hvdWxkVXNlVW5pcXVlSWQKLXsKLSAgICByZXR1cm4gWUVTOwotfQotCi0t
IChpZClhY2Nlc3NpYmlsaXR5SGl0VGVzdDooTlNQb2ludClwb2ludCAKLXsKLSAgICAvLyBIaXQt
dGVzdCBwb2ludCBjb21lcyBpbiBhcyBib3R0b20tc2NyZWVuIGNvb3JkaW5hdGVzLiBOZWVkcyB0
byBiZSBub3JtYWxpemVkIHRvIHRoZSBmcmFtZSBvZiB0aGUgd2ViIHBhZ2UuCi0gICAgTlNQb2lu
dCByZW1vdGVQb3NpdGlvbiA9IFtbc2VsZiBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNB
Y2Nlc3NpYmlsaXR5UG9zaXRpb25BdHRyaWJ1dGVdIHBvaW50VmFsdWVdOwotICAgIE5TU2l6ZSBy
ZW1vdGVTaXplID0gW1tzZWxmIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2li
aWxpdHlTaXplQXR0cmlidXRlXSBzaXplVmFsdWVdOwotICAgIAotICAgIC8vIEdldCB0aGUgeSBw
b3NpdGlvbiBvZiB0aGUgV0tWaWV3ICh3ZSBoYXZlIHRvIHNjcmVlbi1mbGlwIGFuZCBnbyBmcm9t
IGJvdHRvbSBsZWZ0IHRvIHRvcCBsZWZ0KS4KLSAgICBDR0Zsb2F0IHNjcmVlbkhlaWdodCA9IFso
TlNTY3JlZW4gKilbW05TU2NyZWVuIHNjcmVlbnNdIG9iamVjdEF0SW5kZXg6MF0gZnJhbWVdLnNp
emUuaGVpZ2h0OwotICAgIHJlbW90ZVBvc2l0aW9uLnkgPSAoc2NyZWVuSGVpZ2h0IC0gcmVtb3Rl
UG9zaXRpb24ueSkgLSByZW1vdGVTaXplLmhlaWdodDsKLSAgICAKLSAgICBwb2ludC55ID0gc2Ny
ZWVuSGVpZ2h0IC0gcG9pbnQueTsKLQotICAgIC8vIFJlLWNlbnRlciBwb2ludCBpbnRvIHRoZSB3
ZWIgcGFnZSdzIGZyYW1lLgotICAgIHBvaW50LnkgLT0gcmVtb3RlUG9zaXRpb24ueTsKLSAgICBw
b2ludC54IC09IHJlbW90ZVBvc2l0aW9uLng7Ci0gICAgCi0gICAgaWYgKG1fcGFnZSAmJiBtX3Bh
Z2UtPm1haW5GcmFtZSgpICYmIG1fcGFnZS0+bWFpbkZyYW1lKCktPmNvcmVGcmFtZSgpKSB7Ci0g
ICAgICAgIFdlYkNvcmU6OkZyYW1lVmlldyogZnYgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT5jb3Jl
RnJhbWUoKS0+dmlldygpOwotICAgICAgICBpZiAoZnYpIHsKLSAgICAgICAgICAgIHBvaW50Lnkg
Kz0gZnYtPnNjcm9sbFBvc2l0aW9uKCkueSgpOwotICAgICAgICAgICAgcG9pbnQueCArPSBmdi0+
c2Nyb2xsUG9zaXRpb24oKS54KCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgcmV0dXJu
IFtbc2VsZiBhY2Nlc3NpYmlsaXR5Um9vdE9iamVjdFdyYXBwZXJdIGFjY2Vzc2liaWxpdHlIaXRU
ZXN0OnBvaW50XTsKLX0KLQotLSAoaWQpYWNjZXNzaWJpbGl0eUZvY3VzZWRVSUVsZW1lbnQgCi17
Ci0gICAgcmV0dXJuIFtbc2VsZiBhY2Nlc3NpYmlsaXR5Um9vdE9iamVjdFdyYXBwZXJdIGFjY2Vz
c2liaWxpdHlGb2N1c2VkVUlFbGVtZW50XTsKLX0KLQotCi1AZW5kCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dL
QWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QuaAkocmV2aXNpb24gOTUzODkpCShmcm9tIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmpl
Y3QuaDo5NTM4OSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tB
Y2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIEFjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0X2gKKyNk
ZWZpbmUgQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RfaAorCituYW1lc3BhY2UgV2ViS2l0IHsK
K2NsYXNzIFdlYlBhZ2U7Cit9CisKK0BpbnRlcmZhY2UgQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmpl
Y3QgOiBOU09iamVjdCB7CisgICAgV2ViS2l0OjpXZWJQYWdlKiBtX3BhZ2U7CisgICAgCisgICAg
aWQgbV9wYXJlbnQ7CisgICAgTlNBcnJheSogbV9hdHRyaWJ1dGVOYW1lczsKKyAgICBOU011dGFi
bGVBcnJheSogbV9hY2Nlc3NpYmlsaXR5Q2hpbGRyZW47Cit9CisKKy0gKHZvaWQpc2V0V2ViUGFn
ZTooV2ViS2l0OjpXZWJQYWdlKilwYWdlOworCistICh2b2lkKXNldFJlbW90ZVBhcmVudDooaWQp
cGFyZW50OworCitAZW5kCisKKyNlbmRpZiAvLyBBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdF9o
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJp
bGl0eVdlYlBhZ2VPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QuaAkocmV2aXNpb24g
OTUzODkpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNz
aWJpbGl0eVdlYlBhZ2VPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTQgKzIzLDE0IEBA
CiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBBY2Nl
c3NpYmlsaXR5V2ViUGFnZU9iamVjdF9oCi0jZGVmaW5lIEFjY2Vzc2liaWxpdHlXZWJQYWdlT2Jq
ZWN0X2gKKyNpZm5kZWYgV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdF9oCisjZGVmaW5lIFdL
QWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RfaAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNz
IFdlYlBhZ2U7CiB9CiAKLUBpbnRlcmZhY2UgQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QgOiBO
U09iamVjdCB7CitAaW50ZXJmYWNlIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QgOiBOU09i
amVjdCB7CiAgICAgV2ViS2l0OjpXZWJQYWdlKiBtX3BhZ2U7CiAgICAgCiAgICAgaWQgbV9wYXJl
bnQ7CkBAIC00NCw0ICs0NCw0IEBAIEBpbnRlcmZhY2UgQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmpl
Y3QgOiAKIAogQGVuZAogCi0jZW5kaWYgLy8gQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RfaAor
I2VuZGlmIC8vIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RfaApJbmRleDogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
V0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdC5tbQkocmV2aXNpb24gOTUzODkpCShmcm9tIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvQWNjZXNzaWJpbGl0eVdlYlBhZ2VP
YmplY3QubW06OTUzODkpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwxOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkFjY2Vz
c2liaWxpdHlXZWJQYWdlT2JqZWN0LmgiCisKKyNpbXBvcnQgIldlYkZyYW1lLmgiCisjaW1wb3J0
ICJXZWJQYWdlLmgiCisjaW1wb3J0IDxXZWJDb3JlL0FYT2JqZWN0Q2FjaGUuaD4KKyNpbXBvcnQg
PFdlYkNvcmUvRnJhbWUuaD4KKyNpbXBvcnQgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CisjaW1wb3J0
IDxXZWJDb3JlL1BhZ2UuaD4KKyNpbXBvcnQgPFdlYkNvcmUvU2Nyb2xsVmlldy5oPgorI2ltcG9y
dCA8V2ViQ29yZS9TY3JvbGxiYXIuaD4KKyNpbXBvcnQgPFdlYktpdFN5c3RlbUludGVyZmFjZS5o
PgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisK
K0BpbXBsZW1lbnRhdGlvbiBBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdAorCistIChpZClhY2Nl
c3NpYmlsaXR5Um9vdE9iamVjdFdyYXBwZXIKK3sKKyAgICBXZWJDb3JlOjpQYWdlKiBwYWdlID0g
bV9wYWdlLT5jb3JlUGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuIG5pbDsK
KyAgICAKKyAgICBXZWJDb3JlOjpGcmFtZSogY29yZSA9IHBhZ2UtPm1haW5GcmFtZSgpOworICAg
IGlmICghY29yZSB8fCAhY29yZS0+ZG9jdW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAg
ICAKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiByb290ID0gY29yZS0+ZG9jdW1lbnQoKS0+YXhP
YmplY3RDYWNoZSgpLT5yb290T2JqZWN0KCk7CisgICAgaWYgKCFyb290KQorICAgICAgICByZXR1
cm4gbmlsOworICAgIAorICAgIHJldHVybiByb290LT53cmFwcGVyKCk7Cit9CisKKy0gKHZvaWQp
c2V0V2ViUGFnZTooV2ViUGFnZSopcGFnZQoreworICAgIG1fcGFnZSA9IHBhZ2U7Cit9CisKKy0g
KHZvaWQpc2V0UmVtb3RlUGFyZW50OihpZClwYXJlbnQKK3sKKyAgICBpZiAocGFyZW50ICE9IG1f
cGFyZW50KSB7CisgICAgICAgIFttX3BhcmVudCByZWxlYXNlXTsKKyAgICAgICAgbV9wYXJlbnQg
PSBbcGFyZW50IHJldGFpbl07CisgICAgfQorfQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBX
S1VucmVnaXN0ZXJVbmlxdWVJZEZvckVsZW1lbnQoc2VsZik7CisgICAgW21fYWNjZXNzaWJpbGl0
eUNoaWxkcmVuIHJlbGVhc2VdOworICAgIFttX2F0dHJpYnV0ZU5hbWVzIHJlbGVhc2VdOworICAg
IFttX3BhcmVudCByZWxlYXNlXTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKEJPT0wp
YWNjZXNzaWJpbGl0eUlzSWdub3JlZAoreworICAgIHJldHVybiBOTzsKK30KKworLSAoTlNBcnJh
eSAqKWFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVOYW1lcworeworICAgIGlmICghbV9hdHRyaWJ1dGVO
YW1lcykKKyAgICAgICAgbV9hdHRyaWJ1dGVOYW1lcyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdp
dGhPYmplY3RzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5Um9s
ZUF0dHJpYnV0ZSwgTlNBY2Nlc3NpYmlsaXR5Um9sZURlc2NyaXB0aW9uQXR0cmlidXRlLCBOU0Fj
Y2Vzc2liaWxpdHlGb2N1c2VkQXR0cmlidXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
TlNBY2Nlc3NpYmlsaXR5UGFyZW50QXR0cmlidXRlLCBOU0FjY2Vzc2liaWxpdHlXaW5kb3dBdHRy
aWJ1dGUsIE5TQWNjZXNzaWJpbGl0eVRvcExldmVsVUlFbGVtZW50QXR0cmlidXRlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5UG9zaXRpb25BdHRyaWJ1dGUsIE5T
QWNjZXNzaWJpbGl0eVNpemVBdHRyaWJ1dGUsIE5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmli
dXRlLCBuaWxdOworCisgICAgcmV0dXJuIG1fYXR0cmlidXRlTmFtZXM7Cit9CisKKy0gKEJPT0wp
YWNjZXNzaWJpbGl0eUlzQXR0cmlidXRlU2V0dGFibGU6KE5TU3RyaW5nICopYXR0cmlidXRlCit7
CisgICAgcmV0dXJuIE5POworfQorCistICh2b2lkKWFjY2Vzc2liaWxpdHlTZXRWYWx1ZTooaWQp
dmFsdWUgZm9yQXR0cmlidXRlOihOU1N0cmluZyAqKWF0dHJpYnV0ZSAKK3sKKyAgICByZXR1cm47
Cit9CisKKy0gKE5TQXJyYXkgKilhY2Nlc3NpYmlsaXR5QWN0aW9uTmFtZXMKK3sKKyAgICByZXR1
cm4gW05TQXJyYXkgYXJyYXldOworfQorCistIChOU0FycmF5ICopYWNjZXNzaWJpbGl0eUNoaWxk
cmVuCit7CisgICAgaWQgd3JhcHBlciA9IFtzZWxmIGFjY2Vzc2liaWxpdHlSb290T2JqZWN0V3Jh
cHBlcl07CisgICAgaWYgKCF3cmFwcGVyKQorICAgICAgICByZXR1cm4gW05TQXJyYXkgYXJyYXld
OworICAgIAorICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6d3JhcHBlcl07Cit9
CisKKy0gKGlkKWFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTooTlNTdHJpbmcgKilhdHRyaWJ1
dGUKK3sKKyAgICBpZiAoIVdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmFjY2Vzc2liaWxpdHlFbmFi
bGVkKCkpCisgICAgICAgIFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OmVuYWJsZUFjY2Vzc2liaWxp
dHkoKTsKKyAgICAKKyAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3Np
YmlsaXR5UGFyZW50QXR0cmlidXRlXSkKKyAgICAgICAgcmV0dXJuIG1fcGFyZW50OworICAgIGlm
IChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlXaW5kb3dBdHRyaWJ1
dGVdKQorICAgICAgICByZXR1cm4gW21fcGFyZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1
ZTpOU0FjY2Vzc2liaWxpdHlXaW5kb3dBdHRyaWJ1dGVdOworICAgIGlmIChbYXR0cmlidXRlIGlz
RXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlUb3BMZXZlbFVJRWxlbWVudEF0dHJpYnV0ZV0p
CisgICAgICAgIHJldHVybiBbbV9wYXJlbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5T
QWNjZXNzaWJpbGl0eVRvcExldmVsVUlFbGVtZW50QXR0cmlidXRlXTsKKyAgICBpZiAoW2F0dHJp
YnV0ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Um9sZUF0dHJpYnV0ZV0pCisgICAg
ICAgIHJldHVybiBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGU7CisgICAgaWYgKFthdHRyaWJ1dGUg
aXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVJvbGVEZXNjcmlwdGlvbkF0dHJpYnV0ZV0p
CisgICAgICAgIHJldHVybiBOU0FjY2Vzc2liaWxpdHlSb2xlRGVzY3JpcHRpb24oTlNBY2Nlc3Np
YmlsaXR5R3JvdXBSb2xlLCBuaWwpOworICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmlu
ZzpOU0FjY2Vzc2liaWxpdHlGb2N1c2VkQXR0cmlidXRlXSkKKyAgICAgICAgcmV0dXJuIFtOU051
bWJlciBudW1iZXJXaXRoQm9vbDpOT107CisKKyAgICBpZiAoIW1fcGFnZSkKKyAgICAgICAgcmV0
dXJuIG5pbDsKKworICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2li
aWxpdHlQb3NpdGlvbkF0dHJpYnV0ZV0pIHsKKyAgICAgICAgV2ViQ29yZTo6SW50UG9pbnQgcG9p
bnQgPSBtX3BhZ2UtPmFjY2Vzc2liaWxpdHlQb3NpdGlvbigpOworICAgICAgICByZXR1cm4gW05T
VmFsdWUgdmFsdWVXaXRoUG9pbnQ6TlNNYWtlUG9pbnQocG9pbnQueCgpLCBwb2ludC55KCkpXTsK
KyAgICB9CisgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0
eVNpemVBdHRyaWJ1dGVdKSB7CisgICAgICAgIGNvbnN0IEludFNpemUmIHMgPSBtX3BhZ2UtPnNp
emUoKTsKKyAgICAgICAgcmV0dXJuIFtOU1ZhbHVlIHZhbHVlV2l0aFNpemU6TlNNYWtlU2l6ZShz
LndpZHRoKCksIHMuaGVpZ2h0KCkpXTsKKyAgICB9CisgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVh
bFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlXSkKKyAgICAgICAgcmV0
dXJuIFtzZWxmIGFjY2Vzc2liaWxpdHlDaGlsZHJlbl07CisKKyAgICByZXR1cm4gW3N1cGVyIGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTphdHRyaWJ1dGVdOworfQorCistIChCT09MKWFjY2Vz
c2liaWxpdHlTaG91bGRVc2VVbmlxdWVJZAoreworICAgIHJldHVybiBZRVM7Cit9CisKKy0gKGlk
KWFjY2Vzc2liaWxpdHlIaXRUZXN0OihOU1BvaW50KXBvaW50IAoreworICAgIC8vIEhpdC10ZXN0
IHBvaW50IGNvbWVzIGluIGFzIGJvdHRvbS1zY3JlZW4gY29vcmRpbmF0ZXMuIE5lZWRzIHRvIGJl
IG5vcm1hbGl6ZWQgdG8gdGhlIGZyYW1lIG9mIHRoZSB3ZWIgcGFnZS4KKyAgICBOU1BvaW50IHJl
bW90ZVBvc2l0aW9uID0gW1tzZWxmIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vz
c2liaWxpdHlQb3NpdGlvbkF0dHJpYnV0ZV0gcG9pbnRWYWx1ZV07CisgICAgTlNTaXplIHJlbW90
ZVNpemUgPSBbW3NlbGYgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0
eVNpemVBdHRyaWJ1dGVdIHNpemVWYWx1ZV07CisgICAgCisgICAgLy8gR2V0IHRoZSB5IHBvc2l0
aW9uIG9mIHRoZSBXS1ZpZXcgKHdlIGhhdmUgdG8gc2NyZWVuLWZsaXAgYW5kIGdvIGZyb20gYm90
dG9tIGxlZnQgdG8gdG9wIGxlZnQpLgorICAgIENHRmxvYXQgc2NyZWVuSGVpZ2h0ID0gWyhOU1Nj
cmVlbiAqKVtbTlNTY3JlZW4gc2NyZWVuc10gb2JqZWN0QXRJbmRleDowXSBmcmFtZV0uc2l6ZS5o
ZWlnaHQ7CisgICAgcmVtb3RlUG9zaXRpb24ueSA9IChzY3JlZW5IZWlnaHQgLSByZW1vdGVQb3Np
dGlvbi55KSAtIHJlbW90ZVNpemUuaGVpZ2h0OworICAgIAorICAgIHBvaW50LnkgPSBzY3JlZW5I
ZWlnaHQgLSBwb2ludC55OworCisgICAgLy8gUmUtY2VudGVyIHBvaW50IGludG8gdGhlIHdlYiBw
YWdlJ3MgZnJhbWUuCisgICAgcG9pbnQueSAtPSByZW1vdGVQb3NpdGlvbi55OworICAgIHBvaW50
LnggLT0gcmVtb3RlUG9zaXRpb24ueDsKKyAgICAKKyAgICBpZiAobV9wYWdlICYmIG1fcGFnZS0+
bWFpbkZyYW1lKCkgJiYgbV9wYWdlLT5tYWluRnJhbWUoKS0+Y29yZUZyYW1lKCkpIHsKKyAgICAg
ICAgV2ViQ29yZTo6RnJhbWVWaWV3KiBmdiA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPmNvcmVGcmFt
ZSgpLT52aWV3KCk7CisgICAgICAgIGlmIChmdikgeworICAgICAgICAgICAgcG9pbnQueSArPSBm
di0+c2Nyb2xsUG9zaXRpb24oKS55KCk7CisgICAgICAgICAgICBwb2ludC54ICs9IGZ2LT5zY3Jv
bGxQb3NpdGlvbigpLngoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICByZXR1cm4gW1tz
ZWxmIGFjY2Vzc2liaWxpdHlSb290T2JqZWN0V3JhcHBlcl0gYWNjZXNzaWJpbGl0eUhpdFRlc3Q6
cG9pbnRdOworfQorCistIChpZClhY2Nlc3NpYmlsaXR5Rm9jdXNlZFVJRWxlbWVudCAKK3sKKyAg
ICByZXR1cm4gW1tzZWxmIGFjY2Vzc2liaWxpdHlSb290T2JqZWN0V3JhcHBlcl0gYWNjZXNzaWJp
bGl0eUZvY3VzZWRVSUVsZW1lbnRdOworfQorCisKK0BlbmQKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdC5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNj
ZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3QubW0JKHJldmlzaW9uIDk1Mzg5KQorKysgU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAogI2ltcG9ydCAiY29u
ZmlnLmgiCi0jaW1wb3J0ICJBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdC5oIgorI2ltcG9ydCAi
V0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdC5oIgogCiAjaW1wb3J0ICJXZWJGcmFtZS5oIgog
I2ltcG9ydCAiV2ViUGFnZS5oIgpAQCAtMzksNyArMzksNyBAQAogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCi1AaW1wbGVtZW50YXRpb24gQWNjZXNz
aWJpbGl0eVdlYlBhZ2VPYmplY3QKK0BpbXBsZW1lbnRhdGlvbiBXS0FjY2Vzc2liaWxpdHlXZWJQ
YWdlT2JqZWN0CiAKIC0gKGlkKWFjY2Vzc2liaWxpdHlSb290T2JqZWN0V3JhcHBlcgogewpJbmRl
eDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFn
ZU1hYy5tbQkocmV2aXNpb24gOTUzODkpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDExICsyNiwxMSBA
QAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXZWJQYWdlLmgiCiAKLSNpbXBvcnQgIkFj
Y2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0LmgiCiAjaW1wb3J0ICJBdHRyaWJ1dGVkU3RyaW5nLmgi
CiAjaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCiAjaW1wb3J0ICJFZGl0b3JTdGF0ZS5oIgogI2lt
cG9ydCAiUGx1Z2luVmlldy5oIgorI2ltcG9ydCAiV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVj
dC5oIgogI2ltcG9ydCAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW1wb3J0ICJXZWJFdmVu
dC5oIgogI2ltcG9ydCAiV2ViRXZlbnRDb252ZXJzaW9uLmgiCkBAIC02OSw3ICs2OSw3IEBAIHZv
aWQgV2ViUGFnZTo6cGxhdGZvcm1Jbml0aWFsaXplKCkKICAgICBtX3BhZ2UtPmFkZFNjaGVkdWxl
UGFpcihTY2hlZHVsZVBhaXI6OmNyZWF0ZShbTlNSdW5Mb29wIGN1cnJlbnRSdW5Mb29wXSwga0NG
UnVuTG9vcENvbW1vbk1vZGVzKSk7CiAjZW5kaWYKIAotICAgIEFjY2Vzc2liaWxpdHlXZWJQYWdl
T2JqZWN0KiBtb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQgPSBbW1tBY2Nlc3NpYmlsaXR5V2ViUGFn
ZU9iamVjdCBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIFdLQWNjZXNzaWJpbGl0eVdl
YlBhZ2VPYmplY3QqIG1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudCA9IFtbW1dLQWNjZXNzaWJpbGl0
eVdlYlBhZ2VPYmplY3QgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKIAogICAgIC8vIEdldCB0
aGUgcGlkIGZvciB0aGUgc3RhcnRpbmcgcHJvY2Vzcy4KICAgICBwaWRfdCBwaWQgPSBXZWJQcm9j
ZXNzOjpzaGFyZWQoKS5wcmVzZW50ZXJBcHBsaWNhdGlvblBpZCgpOyAgICAKQEAgLTYyMSw3ICs2
MjEsNyBAQCB2b2lkIFdlYlBhZ2U6OnJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyCiAgICAgcmVz
dWx0ID0gdHJ1ZTsKIH0KICAgICAKLUFjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0KiBXZWJQYWdl
OjphY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkKK1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmpl
Y3QqIFdlYlBhZ2U6OmFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKQogewogICAgIHJldHVybiBt
X21vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudC5nZXQoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvbWFjL0Z1bGxLZXlib2FyZEFjY2Vzc1dhdGNoZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9GdWxsS2V5Ym9hcmRBY2Nlc3NXYXRjaGVy
LmgJKHJldmlzaW9uIDk1Mzg5KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvRnVs
bEtleWJvYXJkQWNjZXNzV2F0Y2hlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQwICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaWZuZGVmIEZ1bGxLZXlib2FyZEFjY2Vzc1dhdGNoZXJfaAotI2RlZmlu
ZSBGdWxsS2V5Ym9hcmRBY2Nlc3NXYXRjaGVyX2gKLQotI2ltcG9ydCA8Q29jb2EvQ29jb2EuaD4K
LQotQGludGVyZmFjZSBGdWxsS2V5Ym9hcmRBY2Nlc3NXYXRjaGVyIDogTlNPYmplY3QgewotQHBy
aXZhdGUKLSAgICBCT09MIGZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQ7Ci19Ci0KLSsgKEJPT0wp
ZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZDsKLQotQGVuZDsKLQotI2VuZGlmIC8vIEZ1bGxLZXli
b2FyZEFjY2Vzc1dhdGNoZXJfaApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMv
RnVsbEtleWJvYXJkQWNjZXNzV2F0Y2hlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL21hYy9GdWxsS2V5Ym9hcmRBY2Nlc3NXYXRjaGVyLm1tCShyZXZpc2lvbiA5
NTM4OSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL0Z1bGxLZXlib2FyZEFjY2Vz
c1dhdGNoZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNzAgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiRnVsbEtleWJvYXJkQWNjZXNzV2F0Y2hlci5o
IgotCi1OU1N0cmluZyAqIGNvbnN0IEtleWJvYXJkVUlNb2RlRGlkQ2hhbmdlTm90aWZpY2F0aW9u
ID0gQCJjb20uYXBwbGUuS2V5Ym9hcmRVSU1vZGVEaWRDaGFuZ2UiOwotY29uc3QgQ0ZTdHJpbmdS
ZWYgQXBwbGVLZXlib2FyZFVJTW9kZSA9IENGU1RSKCJBcHBsZUtleWJvYXJkVUlNb2RlIik7Ci1j
b25zdCBDRlN0cmluZ1JlZiBVbml2ZXJzYWxBY2Nlc3NEb21haW4gPSBDRlNUUigiY29tLmFwcGxl
LnVuaXZlcnNhbGFjY2VzcyIpOwotCi1AaW1wbGVtZW50YXRpb24gRnVsbEtleWJvYXJkQWNjZXNz
V2F0Y2hlcgotCi0tICh2b2lkKXJldHJpZXZlS2V5Ym9hcmRVSU1vZGVGcm9tUHJlZmVyZW5jZXM6
KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCi17Ci0gICAgQ0ZQcmVmZXJlbmNlc0FwcFN5
bmNocm9uaXplKFVuaXZlcnNhbEFjY2Vzc0RvbWFpbik7Ci0KLSAgICBCb29sZWFuIGtleUV4aXN0
c0FuZEhhc1ZhbGlkRm9ybWF0OwotICAgIGludCBtb2RlID0gQ0ZQcmVmZXJlbmNlc0dldEFwcElu
dGVnZXJWYWx1ZShBcHBsZUtleWJvYXJkVUlNb2RlLCBVbml2ZXJzYWxBY2Nlc3NEb21haW4sICZr
ZXlFeGlzdHNBbmRIYXNWYWxpZEZvcm1hdCk7Ci0gICAgaWYgKGtleUV4aXN0c0FuZEhhc1ZhbGlk
Rm9ybWF0KSB7Ci0gICAgICAgIC8vIFRoZSBrZXlib2FyZCBhY2Nlc3MgbW9kZSBpcyByZXBvcnRl
ZCBieSB0d28gYml0czoKLSAgICAgICAgLy8gQml0IDAgaXMgc2V0IGlmIGZlYXR1cmUgaXMgb24K
LSAgICAgICAgLy8gQml0IDEgaXMgc2V0IGlmIGZ1bGwga2V5Ym9hcmQgYWNjZXNzIHdvcmtzIGZv
ciBhbnkgY29udHJvbCwgbm90IGp1c3QgdGV4dCBib3hlcyBhbmQgbGlzdHMuCi0gICAgICAgIGZ1
bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQgPSAobW9kZSAmIDB4Mik7Ci0gICAgfQotfQotCi0tIChp
ZClpbml0Ci17Ci0gICAgc2VsZiA9IFtzdXBlciBpbml0XTsKLSAgICBpZiAoIXNlbGYpCi0gICAg
ICAgIHJldHVybiBuaWw7Ci0KLSAgICBbc2VsZiByZXRyaWV2ZUtleWJvYXJkVUlNb2RlRnJvbVBy
ZWZlcmVuY2VzOm5pbF07Ci0KLSAgICBbW05TRGlzdHJpYnV0ZWROb3RpZmljYXRpb25DZW50ZXIg
ZGVmYXVsdENlbnRlcl0gCi0gICAgICAgIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVj
dG9yKHJldHJpZXZlS2V5Ym9hcmRVSU1vZGVGcm9tUHJlZmVyZW5jZXM6KSAKLSAgICAgICAgbmFt
ZTpLZXlib2FyZFVJTW9kZURpZENoYW5nZU5vdGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsKLQotICAg
IHJldHVybiBzZWxmOwotfQotCi0rIChCT09MKWZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQKLXsK
LSAgICBzdGF0aWMgRnVsbEtleWJvYXJkQWNjZXNzV2F0Y2hlciAqd2F0Y2hlciA9IFtbRnVsbEtl
eWJvYXJkQWNjZXNzV2F0Y2hlciBhbGxvY10gaW5pdF07Ci0gICAgcmV0dXJuIHdhdGNoZXItPmZ1
bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQ7Ci19Ci0KLUBlbmQKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvbWFjL1dLRnVsbEtleWJvYXJkQWNjZXNzV2F0Y2hlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvbWFjL1dLRnVsbEtleWJvYXJkQWNjZXNzV2F0
Y2hlci5oCShyZXZpc2lvbiA5NTM4OSkJKGZyb20gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9t
YWMvRnVsbEtleWJvYXJkQWNjZXNzV2F0Y2hlci5oOjk1Mzg5KQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9tYWMvV0tGdWxsS2V5Ym9hcmRBY2Nlc3NXYXRjaGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRnVsbEtleWJvYXJkQWNj
ZXNzV2F0Y2hlcl9oCisjZGVmaW5lIEZ1bGxLZXlib2FyZEFjY2Vzc1dhdGNoZXJfaAorCisjaW1w
b3J0IDxDb2NvYS9Db2NvYS5oPgorCitAaW50ZXJmYWNlIEZ1bGxLZXlib2FyZEFjY2Vzc1dhdGNo
ZXIgOiBOU09iamVjdCB7CitAcHJpdmF0ZQorICAgIEJPT0wgZnVsbEtleWJvYXJkQWNjZXNzRW5h
YmxlZDsKK30KKworKyAoQk9PTClmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkOworCitAZW5kOwor
CisjZW5kaWYgLy8gRnVsbEtleWJvYXJkQWNjZXNzV2F0Y2hlcl9oCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL21hYy9XS0Z1bGxLZXlib2FyZEFjY2Vzc1dhdGNoZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9XS0Z1bGxLZXlib2FyZEFjY2Vz
c1dhdGNoZXIuaAkocmV2aXNpb24gOTUzODkpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L21hYy9XS0Z1bGxLZXlib2FyZEFjY2Vzc1dhdGNoZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjMs
MTIgKzIzLDEyIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAot
I2lmbmRlZiBGdWxsS2V5Ym9hcmRBY2Nlc3NXYXRjaGVyX2gKLSNkZWZpbmUgRnVsbEtleWJvYXJk
QWNjZXNzV2F0Y2hlcl9oCisjaWZuZGVmIFdLRnVsbEtleWJvYXJkQWNjZXNzV2F0Y2hlcl9oCisj
ZGVmaW5lIFdLRnVsbEtleWJvYXJkQWNjZXNzV2F0Y2hlcl9oCiAKICNpbXBvcnQgPENvY29hL0Nv
Y29hLmg+CiAKLUBpbnRlcmZhY2UgRnVsbEtleWJvYXJkQWNjZXNzV2F0Y2hlciA6IE5TT2JqZWN0
IHsKK0BpbnRlcmZhY2UgV0tGdWxsS2V5Ym9hcmRBY2Nlc3NXYXRjaGVyIDogTlNPYmplY3Qgewog
QHByaXZhdGUKICAgICBCT09MIGZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQ7CiB9CkBAIC0zNyw0
ICszNyw0IEBAIEBpbnRlcmZhY2UgRnVsbEtleWJvYXJkQWNjZXNzV2F0Y2hlciA6IE4KIAogQGVu
ZDsKIAotI2VuZGlmIC8vIEZ1bGxLZXlib2FyZEFjY2Vzc1dhdGNoZXJfaAorI2VuZGlmIC8vIFdL
RnVsbEtleWJvYXJkQWNjZXNzV2F0Y2hlcl9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL21hYy9XS0Z1bGxLZXlib2FyZEFjY2Vzc1dhdGNoZXIubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvV0tGdWxsS2V5Ym9hcmRBY2Nlc3NXYXRjaGVyLm1t
CShyZXZpc2lvbiA5NTM4OSkJKGZyb20gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvRnVs
bEtleWJvYXJkQWNjZXNzV2F0Y2hlci5tbTo5NTM4OSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvbWFjL1dLRnVsbEtleWJvYXJkQWNjZXNzV2F0Y2hlci5tbQkod29ya2luZyBjb3B5KQpA
QCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0
ICJGdWxsS2V5Ym9hcmRBY2Nlc3NXYXRjaGVyLmgiCisKK05TU3RyaW5nICogY29uc3QgS2V5Ym9h
cmRVSU1vZGVEaWRDaGFuZ2VOb3RpZmljYXRpb24gPSBAImNvbS5hcHBsZS5LZXlib2FyZFVJTW9k
ZURpZENoYW5nZSI7Citjb25zdCBDRlN0cmluZ1JlZiBBcHBsZUtleWJvYXJkVUlNb2RlID0gQ0ZT
VFIoIkFwcGxlS2V5Ym9hcmRVSU1vZGUiKTsKK2NvbnN0IENGU3RyaW5nUmVmIFVuaXZlcnNhbEFj
Y2Vzc0RvbWFpbiA9IENGU1RSKCJjb20uYXBwbGUudW5pdmVyc2FsYWNjZXNzIik7CisKK0BpbXBs
ZW1lbnRhdGlvbiBGdWxsS2V5Ym9hcmRBY2Nlc3NXYXRjaGVyCisKKy0gKHZvaWQpcmV0cmlldmVL
ZXlib2FyZFVJTW9kZUZyb21QcmVmZXJlbmNlczooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRp
b24KK3sKKyAgICBDRlByZWZlcmVuY2VzQXBwU3luY2hyb25pemUoVW5pdmVyc2FsQWNjZXNzRG9t
YWluKTsKKworICAgIEJvb2xlYW4ga2V5RXhpc3RzQW5kSGFzVmFsaWRGb3JtYXQ7CisgICAgaW50
IG1vZGUgPSBDRlByZWZlcmVuY2VzR2V0QXBwSW50ZWdlclZhbHVlKEFwcGxlS2V5Ym9hcmRVSU1v
ZGUsIFVuaXZlcnNhbEFjY2Vzc0RvbWFpbiwgJmtleUV4aXN0c0FuZEhhc1ZhbGlkRm9ybWF0KTsK
KyAgICBpZiAoa2V5RXhpc3RzQW5kSGFzVmFsaWRGb3JtYXQpIHsKKyAgICAgICAgLy8gVGhlIGtl
eWJvYXJkIGFjY2VzcyBtb2RlIGlzIHJlcG9ydGVkIGJ5IHR3byBiaXRzOgorICAgICAgICAvLyBC
aXQgMCBpcyBzZXQgaWYgZmVhdHVyZSBpcyBvbgorICAgICAgICAvLyBCaXQgMSBpcyBzZXQgaWYg
ZnVsbCBrZXlib2FyZCBhY2Nlc3Mgd29ya3MgZm9yIGFueSBjb250cm9sLCBub3QganVzdCB0ZXh0
IGJveGVzIGFuZCBsaXN0cy4KKyAgICAgICAgZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCA9ICht
b2RlICYgMHgyKTsKKyAgICB9Cit9CisKKy0gKGlkKWluaXQKK3sKKyAgICBzZWxmID0gW3N1cGVy
IGluaXRdOworICAgIGlmICghc2VsZikKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIFtzZWxm
IHJldHJpZXZlS2V5Ym9hcmRVSU1vZGVGcm9tUHJlZmVyZW5jZXM6bmlsXTsKKworICAgIFtbTlNE
aXN0cmlidXRlZE5vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSAKKyAgICAgICAgYWRk
T2JzZXJ2ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IocmV0cmlldmVLZXlib2FyZFVJTW9kZUZy
b21QcmVmZXJlbmNlczopIAorICAgICAgICBuYW1lOktleWJvYXJkVUlNb2RlRGlkQ2hhbmdlTm90
aWZpY2F0aW9uIG9iamVjdDpuaWxdOworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKysgKEJPT0wp
ZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZAoreworICAgIHN0YXRpYyBGdWxsS2V5Ym9hcmRBY2Nl
c3NXYXRjaGVyICp3YXRjaGVyID0gW1tGdWxsS2V5Ym9hcmRBY2Nlc3NXYXRjaGVyIGFsbG9jXSBp
bml0XTsKKyAgICByZXR1cm4gd2F0Y2hlci0+ZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZDsKK30K
KworQGVuZApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMvV0tGdWxsS2V5Ym9h
cmRBY2Nlc3NXYXRjaGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvbWFjL1dLRnVsbEtleWJvYXJkQWNjZXNzV2F0Y2hlci5tbQkocmV2aXNpb24gOTUzODkpCisr
KyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL21hYy9XS0Z1bGxLZXlib2FyZEFjY2Vzc1dhdGNo
ZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTI0LDEzICsyNCwxMyBAQAogICovCiAKICNpbXBvcnQg
ImNvbmZpZy5oIgotI2ltcG9ydCAiRnVsbEtleWJvYXJkQWNjZXNzV2F0Y2hlci5oIgorI2ltcG9y
dCAiV0tGdWxsS2V5Ym9hcmRBY2Nlc3NXYXRjaGVyLmgiCiAKIE5TU3RyaW5nICogY29uc3QgS2V5
Ym9hcmRVSU1vZGVEaWRDaGFuZ2VOb3RpZmljYXRpb24gPSBAImNvbS5hcHBsZS5LZXlib2FyZFVJ
TW9kZURpZENoYW5nZSI7CiBjb25zdCBDRlN0cmluZ1JlZiBBcHBsZUtleWJvYXJkVUlNb2RlID0g
Q0ZTVFIoIkFwcGxlS2V5Ym9hcmRVSU1vZGUiKTsKIGNvbnN0IENGU3RyaW5nUmVmIFVuaXZlcnNh
bEFjY2Vzc0RvbWFpbiA9IENGU1RSKCJjb20uYXBwbGUudW5pdmVyc2FsYWNjZXNzIik7CiAKLUBp
bXBsZW1lbnRhdGlvbiBGdWxsS2V5Ym9hcmRBY2Nlc3NXYXRjaGVyCitAaW1wbGVtZW50YXRpb24g
V0tGdWxsS2V5Ym9hcmRBY2Nlc3NXYXRjaGVyCiAKIC0gKHZvaWQpcmV0cmlldmVLZXlib2FyZFVJ
TW9kZUZyb21QcmVmZXJlbmNlczooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KIHsKQEAg
LTYzLDcgKzYzLDcgQEAgLSAoaWQpaW5pdAogCiArIChCT09MKWZ1bGxLZXlib2FyZEFjY2Vzc0Vu
YWJsZWQKIHsKLSAgICBzdGF0aWMgRnVsbEtleWJvYXJkQWNjZXNzV2F0Y2hlciAqd2F0Y2hlciA9
IFtbRnVsbEtleWJvYXJkQWNjZXNzV2F0Y2hlciBhbGxvY10gaW5pdF07CisgICAgc3RhdGljIFdL
RnVsbEtleWJvYXJkQWNjZXNzV2F0Y2hlciAqd2F0Y2hlciA9IFtbV0tGdWxsS2V5Ym9hcmRBY2Nl
c3NXYXRjaGVyIGFsbG9jXSBpbml0XTsKICAgICByZXR1cm4gd2F0Y2hlci0+ZnVsbEtleWJvYXJk
QWNjZXNzRW5hYmxlZDsKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9tYWMv
V2ViUHJvY2Vzc01hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L21hYy9XZWJQcm9jZXNzTWFjLm1tCShyZXZpc2lvbiA5NTM4OSkKKysrIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvbWFjL1dlYlByb2Nlc3NNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDgg
KzI2LDggQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzcy5oIgogCi0j
aW1wb3J0ICJGdWxsS2V5Ym9hcmRBY2Nlc3NXYXRjaGVyLmgiCiAjaW1wb3J0ICJTYW5kYm94RXh0
ZW5zaW9uLmgiCisjaW1wb3J0ICJXS0Z1bGxLZXlib2FyZEFjY2Vzc1dhdGNoZXIuaCIKICNpbXBv
cnQgIldlYlBhZ2UuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIK
ICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCkBAIC0xMzQsNyArMTM0LDcgQEAg
dm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybUNsZWFyUmVzb3VyY2VDYQogCiBib29sIFdlYlByb2Nl
c3M6OmZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQoKQogewotICAgIHJldHVybiBbRnVsbEtleWJv
YXJkQWNjZXNzV2F0Y2hlciBmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkXTsKKyAgICByZXR1cm4g
W1dLRnVsbEtleWJvYXJkQWNjZXNzV2F0Y2hlciBmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkXTsK
IH0KIAogI2lmIEVOQUJMRShXRUJfUFJPQ0VTU19TQU5EQk9YKQo=
</data>
<flag name="review"
          id="104571"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107792</attachid>
            <date>2011-09-18 13:02:45 -0700</date>
            <delta_ts>2011-09-18 13:11:23 -0700</delta_ts>
            <desc>WebKit1 part</desc>
            <filename>bug-68323-20110918130244.patch</filename>
            <type>text/plain</type>
            <size>98184</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiA5NTM5NykKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDktMTggIERhbiBCZXJuc3Rl
aW4gIDxtaXR6QGFwcGxlLmNvbT4KKworICAgICAgICBXZWJLaXQgcGFydCBvZiBbbWFjXSBXZWJL
aXQgY29udGFpbnMgT2JqZWN0aXZlLUMgY2xhc3NlcyB0aGF0IGFyZSBub3QgcHJlZml4ZWQgd2l0
aCBpdHMgc3RhbmRhcmQgcHJlZml4ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTY4MzIzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVXBkYXRlZCBmb3IgdGhlIHJlbmFtaW5nIG9mIE5vbkJsb2NraW5nUGFu
ZWwgdG8gV2ViTm9uQmxvY2tpbmdQYW5lbC4KKworICAgICAgICAqIEVuZ2xpc2gubHByb2ovV2Vi
SmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsLm5pYi9jbGFzc2VzLm5pYjogUmVtb3ZlZC4KKyAgICAg
ICAgKiBFbmdsaXNoLmxwcm9qL1dlYkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbC5uaWIvZGVzaWdu
YWJsZS5uaWI6IEFkZGVkLgorICAgICAgICAqIEVuZ2xpc2gubHByb2ovV2ViSmF2YVNjcmlwdFRl
eHRJbnB1dFBhbmVsLm5pYi9pbmZvLm5pYjogUmVtb3ZlZC4KKyAgICAgICAgKiBFbmdsaXNoLmxw
cm9qL1dlYkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbC5uaWIva2V5ZWRvYmplY3RzLm5pYjoKKwog
MjAxMS0wOS0xNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIERG
RyBKSVQgc2hvdWxkIGlubGluZSBNYXRoLmFicwpJbmRleDogU291cmNlL1dlYktpdC9FbmdsaXNo
Lmxwcm9qL1dlYkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbC5uaWIvY2xhc3Nlcy5uaWIKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9FbmdsaXNoLmxwcm9qL1dlYkphdmFTY3JpcHRUZXh0SW5w
dXRQYW5lbC5uaWIvY2xhc3Nlcy5uaWIJKHJldmlzaW9uIDk1Mzg5KQorKysgU291cmNlL1dlYktp
dC9FbmdsaXNoLmxwcm9qL1dlYkphdmFTY3JpcHRUZXh0SW5wdXRQYW5lbC5uaWIvY2xhc3Nlcy5u
aWIJKHdvcmtpbmcgY29weSkKQEAgLTEsMTkxICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIg
ZW5jb2Rpbmc9IlVURi04Ij8+Ci08IURPQ1RZUEUgcGxpc3QgUFVCTElDICItLy9BcHBsZS8vRFRE
IFBMSVNUIDEuMC8vRU4iICJodHRwOi8vd3d3LmFwcGxlLmNvbS9EVERzL1Byb3BlcnR5TGlzdC0x
LjAuZHRkIj4KLTxwbGlzdCB2ZXJzaW9uPSIxLjAiPgotPGRpY3Q+Ci0JPGtleT5JQkNsYXNzZXM8
L2tleT4KLQk8YXJyYXk+Ci0JCTxkaWN0PgotCQkJPGtleT5DTEFTUzwva2V5PgotCQkJPHN0cmlu
Zz5OU0NvbnRyb2w8L3N0cmluZz4KLQkJCTxrZXk+TEFOR1VBR0U8L2tleT4KLQkJCTxzdHJpbmc+
T2JqQzwvc3RyaW5nPgotCQkJPGtleT5TVVBFUkNMQVNTPC9rZXk+Ci0JCQk8c3RyaW5nPk5TVmll
dzwvc3RyaW5nPgotCQk8L2RpY3Q+Ci0JCTxkaWN0PgotCQkJPGtleT5BQ1RJT05TPC9rZXk+Ci0J
CQk8ZGljdD4KLQkJCQk8a2V5PndlYlZpZXdDbG9zZTwva2V5PgotCQkJCTxzdHJpbmc+V2ViVmll
dzwvc3RyaW5nPgotCQkJCTxrZXk+d2ViVmlld0ZvY3VzPC9rZXk+Ci0JCQkJPHN0cmluZz5XZWJW
aWV3PC9zdHJpbmc+Ci0JCQkJPGtleT53ZWJWaWV3UnVuTW9kYWw8L2tleT4KLQkJCQk8c3RyaW5n
PldlYlZpZXc8L3N0cmluZz4KLQkJCQk8a2V5PndlYlZpZXdTaG93PC9rZXk+Ci0JCQkJPHN0cmlu
Zz5XZWJWaWV3PC9zdHJpbmc+Ci0JCQkJPGtleT53ZWJWaWV3VW5mb2N1czwva2V5PgotCQkJCTxz
dHJpbmc+V2ViVmlldzwvc3RyaW5nPgotCQkJPC9kaWN0PgotCQkJPGtleT5DTEFTUzwva2V5Pgot
CQkJPHN0cmluZz5OU09iamVjdDwvc3RyaW5nPgotCQkJPGtleT5MQU5HVUFHRTwva2V5PgotCQkJ
PHN0cmluZz5PYmpDPC9zdHJpbmc+Ci0JCTwvZGljdD4KLQkJPGRpY3Q+Ci0JCQk8a2V5PkNMQVNT
PC9rZXk+Ci0JCQk8c3RyaW5nPk5TV2luZG93PC9zdHJpbmc+Ci0JCQk8a2V5PkxBTkdVQUdFPC9r
ZXk+Ci0JCQk8c3RyaW5nPk9iakM8L3N0cmluZz4KLQkJCTxrZXk+U1VQRVJDTEFTUzwva2V5Pgot
CQkJPHN0cmluZz5OU1Jlc3BvbmRlcjwvc3RyaW5nPgotCQk8L2RpY3Q+Ci0JCTxkaWN0PgotCQkJ
PGtleT5DTEFTUzwva2V5PgotCQkJPHN0cmluZz5Ob25CbG9ja2luZ1BhbmVsPC9zdHJpbmc+Ci0J
CQk8a2V5PkxBTkdVQUdFPC9rZXk+Ci0JCQk8c3RyaW5nPk9iakM8L3N0cmluZz4KLQkJCTxrZXk+
U1VQRVJDTEFTUzwva2V5PgotCQkJPHN0cmluZz5OU1BhbmVsPC9zdHJpbmc+Ci0JCTwvZGljdD4K
LQkJPGRpY3Q+Ci0JCQk8a2V5PkFDVElPTlM8L2tleT4KLQkJCTxkaWN0PgotCQkJCTxrZXk+X29w
ZW5GcmFtZUluTmV3V2luZG93RnJvbU1lbnU8L2tleT4KLQkJCQk8c3RyaW5nPk5TTWVudUl0ZW08
L3N0cmluZz4KLQkJCQk8a2V5Pl9zZWFyY2hXaXRoR29vZ2xlRnJvbU1lbnU8L2tleT4KLQkJCQk8
c3RyaW5nPmlkPC9zdHJpbmc+Ci0JCQkJPGtleT5fc2VhcmNoV2l0aFNwb3RsaWdodEZyb21NZW51
PC9rZXk+Ci0JCQkJPHN0cmluZz5pZDwvc3RyaW5nPgotCQkJCTxrZXk+YWxpZ25DZW50ZXI8L2tl
eT4KLQkJCQk8c3RyaW5nPmlkPC9zdHJpbmc+Ci0JCQkJPGtleT5hbGlnbkp1c3RpZmllZDwva2V5
PgotCQkJCTxzdHJpbmc+aWQ8L3N0cmluZz4KLQkJCQk8a2V5PmFsaWduTGVmdDwva2V5PgotCQkJ
CTxzdHJpbmc+aWQ8L3N0cmluZz4KLQkJCQk8a2V5PmFsaWduUmlnaHQ8L2tleT4KLQkJCQk8c3Ry
aW5nPmlkPC9zdHJpbmc+Ci0JCQkJPGtleT5jaGFuZ2VBdHRyaWJ1dGVzPC9rZXk+Ci0JCQkJPHN0
cmluZz5pZDwvc3RyaW5nPgotCQkJCTxrZXk+Y2hhbmdlQ29sb3I8L2tleT4KLQkJCQk8c3RyaW5n
PmlkPC9zdHJpbmc+Ci0JCQkJPGtleT5jaGFuZ2VEb2N1bWVudEJhY2tncm91bmRDb2xvcjwva2V5
PgotCQkJCTxzdHJpbmc+aWQ8L3N0cmluZz4KLQkJCQk8a2V5PmNoYW5nZUZvbnQ8L2tleT4KLQkJ
CQk8c3RyaW5nPmlkPC9zdHJpbmc+Ci0JCQkJPGtleT5jaGVja1NwZWxsaW5nPC9rZXk+Ci0JCQkJ
PHN0cmluZz5pZDwvc3RyaW5nPgotCQkJCTxrZXk+Y29weTwva2V5PgotCQkJCTxzdHJpbmc+aWQ8
L3N0cmluZz4KLQkJCQk8a2V5PmNvcHlGb250PC9rZXk+Ci0JCQkJPHN0cmluZz5pZDwvc3RyaW5n
PgotCQkJCTxrZXk+Y3V0PC9rZXk+Ci0JCQkJPHN0cmluZz5pZDwvc3RyaW5nPgotCQkJCTxrZXk+
ZGVsZXRlPC9rZXk+Ci0JCQkJPHN0cmluZz5pZDwvc3RyaW5nPgotCQkJCTxrZXk+Z29CYWNrPC9r
ZXk+Ci0JCQkJPHN0cmluZz5pZDwvc3RyaW5nPgotCQkJCTxrZXk+Z29Gb3J3YXJkPC9rZXk+Ci0J
CQkJPHN0cmluZz5pZDwvc3RyaW5nPgotCQkJCTxrZXk+bWFrZVRleHRMYXJnZXI8L2tleT4KLQkJ
CQk8c3RyaW5nPmlkPC9zdHJpbmc+Ci0JCQkJPGtleT5tYWtlVGV4dFNtYWxsZXI8L2tleT4KLQkJ
CQk8c3RyaW5nPmlkPC9zdHJpbmc+Ci0JCQkJPGtleT5tYWtlVGV4dFN0YW5kYXJkU2l6ZTwva2V5
PgotCQkJCTxzdHJpbmc+aWQ8L3N0cmluZz4KLQkJCQk8a2V5Pm1vdmVUb0JlZ2lubmluZ09mU2Vu
dGVuY2U8L2tleT4KLQkJCQk8c3RyaW5nPmlkPC9zdHJpbmc+Ci0JCQkJPGtleT5tb3ZlVG9CZWdp
bm5pbmdPZlNlbnRlbmNlQW5kTW9kaWZ5U2VsZWN0aW9uPC9rZXk+Ci0JCQkJPHN0cmluZz5pZDwv
c3RyaW5nPgotCQkJCTxrZXk+bW92ZVRvRW5kT2ZTZW50ZW5jZTwva2V5PgotCQkJCTxzdHJpbmc+
aWQ8L3N0cmluZz4KLQkJCQk8a2V5Pm1vdmVUb0VuZE9mU2VudGVuY2VBbmRNb2RpZnlTZWxlY3Rp
b248L2tleT4KLQkJCQk8c3RyaW5nPmlkPC9zdHJpbmc+Ci0JCQkJPGtleT5vdXRkZW50PC9rZXk+
Ci0JCQkJPHN0cmluZz5pZDwvc3RyaW5nPgotCQkJCTxrZXk+cGFzdGU8L2tleT4KLQkJCQk8c3Ry
aW5nPmlkPC9zdHJpbmc+Ci0JCQkJPGtleT5wYXN0ZUFzUGxhaW5UZXh0PC9rZXk+Ci0JCQkJPHN0
cmluZz5pZDwvc3RyaW5nPgotCQkJCTxrZXk+cGFzdGVBc1JpY2hUZXh0PC9rZXk+Ci0JCQkJPHN0
cmluZz5pZDwvc3RyaW5nPgotCQkJCTxrZXk+cGFzdGVGb250PC9rZXk+Ci0JCQkJPHN0cmluZz5p
ZDwvc3RyaW5nPgotCQkJCTxrZXk+cGVyZm9ybUZpbmRQYW5lbEFjdGlvbjwva2V5PgotCQkJCTxz
dHJpbmc+aWQ8L3N0cmluZz4KLQkJCQk8a2V5PnJlbG9hZDwva2V5PgotCQkJCTxzdHJpbmc+aWQ8
L3N0cmluZz4KLQkJCQk8a2V5PnJlc2V0UGFnZVpvb208L2tleT4KLQkJCQk8c3RyaW5nPmlkPC9z
dHJpbmc+Ci0JCQkJPGtleT5zZWxlY3RTZW50ZW5jZTwva2V5PgotCQkJCTxzdHJpbmc+aWQ8L3N0
cmluZz4KLQkJCQk8a2V5PnNob3dHdWVzc1BhbmVsPC9rZXk+Ci0JCQkJPHN0cmluZz5pZDwvc3Ry
aW5nPgotCQkJCTxrZXk+c3RhcnRTcGVha2luZzwva2V5PgotCQkJCTxzdHJpbmc+aWQ8L3N0cmlu
Zz4KLQkJCQk8a2V5PnN0b3BMb2FkaW5nPC9rZXk+Ci0JCQkJPHN0cmluZz5pZDwvc3RyaW5nPgot
CQkJCTxrZXk+c3RvcFNwZWFraW5nPC9rZXk+Ci0JCQkJPHN0cmluZz5pZDwvc3RyaW5nPgotCQkJ
CTxrZXk+dGFrZVN0cmluZ1VSTEZyb208L2tleT4KLQkJCQk8c3RyaW5nPmlkPC9zdHJpbmc+Ci0J
CQkJPGtleT50b2dnbGVDb250aW51b3VzU3BlbGxDaGVja2luZzwva2V5PgotCQkJCTxzdHJpbmc+
aWQ8L3N0cmluZz4KLQkJCQk8a2V5PnRvZ2dsZUdyYW1tYXJDaGVja2luZzwva2V5PgotCQkJCTxz
dHJpbmc+aWQ8L3N0cmluZz4KLQkJCQk8a2V5PnRvZ2dsZVNtYXJ0SW5zZXJ0RGVsZXRlPC9rZXk+
Ci0JCQkJPHN0cmluZz5pZDwvc3RyaW5nPgotCQkJCTxrZXk+em9vbVBhZ2VJbjwva2V5PgotCQkJ
CTxzdHJpbmc+aWQ8L3N0cmluZz4KLQkJCQk8a2V5Pnpvb21QYWdlT3V0PC9rZXk+Ci0JCQkJPHN0
cmluZz5pZDwvc3RyaW5nPgotCQkJPC9kaWN0PgotCQkJPGtleT5DTEFTUzwva2V5PgotCQkJPHN0
cmluZz5XZWJWaWV3PC9zdHJpbmc+Ci0JCQk8a2V5PkxBTkdVQUdFPC9rZXk+Ci0JCQk8c3RyaW5n
Pk9iakM8L3N0cmluZz4KLQkJCTxrZXk+U1VQRVJDTEFTUzwva2V5PgotCQkJPHN0cmluZz5OU1Zp
ZXc8L3N0cmluZz4KLQkJPC9kaWN0PgotCQk8ZGljdD4KLQkJCTxrZXk+Q0xBU1M8L2tleT4KLQkJ
CTxzdHJpbmc+TlNWaWV3PC9zdHJpbmc+Ci0JCQk8a2V5PkxBTkdVQUdFPC9rZXk+Ci0JCQk8c3Ry
aW5nPk9iakM8L3N0cmluZz4KLQkJCTxrZXk+U1VQRVJDTEFTUzwva2V5PgotCQkJPHN0cmluZz5O
U1Jlc3BvbmRlcjwvc3RyaW5nPgotCQk8L2RpY3Q+Ci0JCTxkaWN0PgotCQkJPGtleT5DTEFTUzwv
a2V5PgotCQkJPHN0cmluZz5GaXJzdFJlc3BvbmRlcjwvc3RyaW5nPgotCQkJPGtleT5MQU5HVUFH
RTwva2V5PgotCQkJPHN0cmluZz5PYmpDPC9zdHJpbmc+Ci0JCQk8a2V5PlNVUEVSQ0xBU1M8L2tl
eT4KLQkJCTxzdHJpbmc+TlNPYmplY3Q8L3N0cmluZz4KLQkJPC9kaWN0PgotCQk8ZGljdD4KLQkJ
CTxrZXk+QUNUSU9OUzwva2V5PgotCQkJPGRpY3Q+Ci0JCQkJPGtleT5wcmVzc2VkQ2FuY2VsPC9r
ZXk+Ci0JCQkJPHN0cmluZz5pZDwvc3RyaW5nPgotCQkJCTxrZXk+cHJlc3NlZE9LPC9rZXk+Ci0J
CQkJPHN0cmluZz5pZDwvc3RyaW5nPgotCQkJPC9kaWN0PgotCQkJPGtleT5DTEFTUzwva2V5Pgot
CQkJPHN0cmluZz5XZWJKYXZhU2NyaXB0VGV4dElucHV0UGFuZWw8L3N0cmluZz4KLQkJCTxrZXk+
TEFOR1VBR0U8L2tleT4KLQkJCTxzdHJpbmc+T2JqQzwvc3RyaW5nPgotCQkJPGtleT5PVVRMRVRT
PC9rZXk+Ci0JCQk8ZGljdD4KLQkJCQk8a2V5PnByb21wdDwva2V5PgotCQkJCTxzdHJpbmc+TlNU
ZXh0RmllbGQ8L3N0cmluZz4KLQkJCQk8a2V5PnRleHRJbnB1dDwva2V5PgotCQkJCTxzdHJpbmc+
TlNUZXh0RmllbGQ8L3N0cmluZz4KLQkJCTwvZGljdD4KLQkJCTxrZXk+U1VQRVJDTEFTUzwva2V5
PgotCQkJPHN0cmluZz5OU1dpbmRvd0NvbnRyb2xsZXI8L3N0cmluZz4KLQkJPC9kaWN0PgotCTwv
YXJyYXk+Ci0JPGtleT5JQlZlcnNpb248L2tleT4KLQk8c3RyaW5nPjE8L3N0cmluZz4KLTwvZGlj
dD4KLTwvcGxpc3Q+CkluZGV4OiBTb3VyY2UvV2ViS2l0L0VuZ2xpc2gubHByb2ovV2ViSmF2YVNj
cmlwdFRleHRJbnB1dFBhbmVsLm5pYi9kZXNpZ25hYmxlLm5pYgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L0VuZ2xpc2gubHByb2ovV2ViSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsLm5pYi9k
ZXNpZ25hYmxlLm5pYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJLaXQvRW5nbGlzaC5scHJv
ai9XZWJKYXZhU2NyaXB0VGV4dElucHV0UGFuZWwubmliL2Rlc2lnbmFibGUubmliCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDQ0MCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRG
LTgiPz4KKzxhcmNoaXZlIHR5cGU9ImNvbS5hcHBsZS5JbnRlcmZhY2VCdWlsZGVyMy5Db2NvYS5Y
SUIiIHZlcnNpb249IjguMDAiPgorCTxkYXRhPgorCQk8aW50IGtleT0iSUJEb2N1bWVudC5TeXN0
ZW1UYXJnZXQiPjEwNTA8L2ludD4KKwkJPHN0cmluZyBrZXk9IklCRG9jdW1lbnQuU3lzdGVtVmVy
c2lvbiI+MTFDNTc8L3N0cmluZz4KKwkJPHN0cmluZyBrZXk9IklCRG9jdW1lbnQuSW50ZXJmYWNl
QnVpbGRlclZlcnNpb24iPjE5Mzg8L3N0cmluZz4KKwkJPHN0cmluZyBrZXk9IklCRG9jdW1lbnQu
QXBwS2l0VmVyc2lvbiI+MTEzOC4yMTwvc3RyaW5nPgorCQk8c3RyaW5nIGtleT0iSUJEb2N1bWVu
dC5ISVRvb2xib3hWZXJzaW9uIj41NjcuMDA8L3N0cmluZz4KKwkJPG9iamVjdCBjbGFzcz0iTlNN
dXRhYmxlRGljdGlvbmFyeSIga2V5PSJJQkRvY3VtZW50LlBsdWdpblZlcnNpb25zIj4KKwkJCTxz
dHJpbmcga2V5PSJOUy5rZXkuMCI+Y29tLmFwcGxlLkludGVyZmFjZUJ1aWxkZXIuQ29jb2FQbHVn
aW48L3N0cmluZz4KKwkJCTxzdHJpbmcga2V5PSJOUy5vYmplY3QuMCI+MTkzODwvc3RyaW5nPgor
CQk8L29iamVjdD4KKwkJPGFycmF5IGtleT0iSUJEb2N1bWVudC5JbnRlZ3JhdGVkQ2xhc3NEZXBl
bmRlbmNpZXMiPgorCQkJPHN0cmluZz5OU1RleHRGaWVsZDwvc3RyaW5nPgorCQkJPHN0cmluZz5O
U1ZpZXc8L3N0cmluZz4KKwkJCTxzdHJpbmc+TlNXaW5kb3dUZW1wbGF0ZTwvc3RyaW5nPgorCQkJ
PHN0cmluZz5OU1RleHRGaWVsZENlbGw8L3N0cmluZz4KKwkJCTxzdHJpbmc+TlNCdXR0b25DZWxs
PC9zdHJpbmc+CisJCQk8c3RyaW5nPk5TQnV0dG9uPC9zdHJpbmc+CisJCQk8c3RyaW5nPk5TQ3Vz
dG9tT2JqZWN0PC9zdHJpbmc+CisJCTwvYXJyYXk+CisJCTxhcnJheSBrZXk9IklCRG9jdW1lbnQu
UGx1Z2luRGVwZW5kZW5jaWVzIj4KKwkJCTxzdHJpbmc+Y29tLmFwcGxlLkludGVyZmFjZUJ1aWxk
ZXIuQ29jb2FQbHVnaW48L3N0cmluZz4KKwkJPC9hcnJheT4KKwkJPG9iamVjdCBjbGFzcz0iTlNN
dXRhYmxlRGljdGlvbmFyeSIga2V5PSJJQkRvY3VtZW50Lk1ldGFkYXRhIj4KKwkJCTxzdHJpbmcg
a2V5PSJOUy5rZXkuMCI+UGx1Z2luRGVwZW5kZW5jeVJlY2FsY3VsYXRpb25WZXJzaW9uPC9zdHJp
bmc+CisJCQk8aW50ZWdlciB2YWx1ZT0iMSIga2V5PSJOUy5vYmplY3QuMCIvPgorCQk8L29iamVj
dD4KKwkJPGFycmF5IGNsYXNzPSJOU011dGFibGVBcnJheSIga2V5PSJJQkRvY3VtZW50LlJvb3RP
YmplY3RzIiBpZD0iMzAxMDcwMzc1Ij4KKwkJCTxvYmplY3QgY2xhc3M9Ik5TQ3VzdG9tT2JqZWN0
IiBpZD0iMTAxNjcwNTk3NSI+CisJCQkJPHN0cmluZyBrZXk9Ik5TQ2xhc3NOYW1lIj5XZWJKYXZh
U2NyaXB0VGV4dElucHV0UGFuZWw8L3N0cmluZz4KKwkJCTwvb2JqZWN0PgorCQkJPG9iamVjdCBj
bGFzcz0iTlNDdXN0b21PYmplY3QiIGlkPSI1MTM5MTUxIj4KKwkJCQk8c3RyaW5nIGtleT0iTlND
bGFzc05hbWUiPkZpcnN0UmVzcG9uZGVyPC9zdHJpbmc+CisJCQk8L29iamVjdD4KKwkJCTxvYmpl
Y3QgY2xhc3M9Ik5TQ3VzdG9tT2JqZWN0IiBpZD0iNDM4NDE4MDY2Ij4KKwkJCQk8c3RyaW5nIGtl
eT0iTlNDbGFzc05hbWUiPk5TQXBwbGljYXRpb248L3N0cmluZz4KKwkJCTwvb2JqZWN0PgorCQkJ
PG9iamVjdCBjbGFzcz0iTlNXaW5kb3dUZW1wbGF0ZSIgaWQ9Ijk4MTgxMzAiPgorCQkJCTxpbnQg
a2V5PSJOU1dpbmRvd1N0eWxlTWFzayI+MTwvaW50PgorCQkJCTxpbnQga2V5PSJOU1dpbmRvd0Jh
Y2tpbmciPjI8L2ludD4KKwkJCQk8c3RyaW5nIGtleT0iTlNXaW5kb3dSZWN0Ij57ezUzMSwgNzcz
fSwgezQyNiwgMTYxfX08L3N0cmluZz4KKwkJCQk8aW50IGtleT0iTlNXVEZsYWdzIj4xODgxNjY5
NjMyPC9pbnQ+CisJCQkJPHN0cmluZyBrZXk9Ik5TV2luZG93VGl0bGUiPkphdmFTY3JpcHQ8L3N0
cmluZz4KKwkJCQk8c3RyaW5nIGtleT0iTlNXaW5kb3dDbGFzcyI+V2ViTm9uQmxvY2tpbmdQYW5l
bDwvc3RyaW5nPgorCQkJCTxvYmplY3QgY2xhc3M9Ik5TTXV0YWJsZVN0cmluZyIga2V5PSJOU1Zp
ZXdDbGFzcyI+CisJCQkJCTxjaGFyYWN0ZXJzIGtleT0iTlMuYnl0ZXMiPlZpZXc8L2NoYXJhY3Rl
cnM+CisJCQkJPC9vYmplY3Q+CisJCQkJPG5pbCBrZXk9Ik5TVXNlckludGVyZmFjZUl0ZW1JZGVu
dGlmaWVyIi8+CisJCQkJPHN0cmluZyBrZXk9Ik5TV2luZG93Q29udGVudE1pblNpemUiPns5NCwg
N308L3N0cmluZz4KKwkJCQk8b2JqZWN0IGNsYXNzPSJOU1ZpZXciIGtleT0iTlNXaW5kb3dWaWV3
IiBpZD0iNzc2MDI3NDU4Ij4KKwkJCQkJPHJlZmVyZW5jZSBrZXk9Ik5TTmV4dFJlc3BvbmRlciIv
PgorCQkJCQk8aW50IGtleT0iTlN2RmxhZ3MiPjI1NjwvaW50PgorCQkJCQk8YXJyYXkgY2xhc3M9
Ik5TTXV0YWJsZUFycmF5IiBrZXk9Ik5TU3Vidmlld3MiPgorCQkJCQkJPG9iamVjdCBjbGFzcz0i
TlNCdXR0b24iIGlkPSI3MDcwNTU3MjMiPgorCQkJCQkJCTxyZWZlcmVuY2Uga2V5PSJOU05leHRS
ZXNwb25kZXIiIHJlZj0iNzc2MDI3NDU4Ii8+CisJCQkJCQkJPGludCBrZXk9Ik5TdkZsYWdzIj4y
ODk8L2ludD4KKwkJCQkJCQk8c3RyaW5nIGtleT0iTlNGcmFtZSI+e3syMzIsIDExfSwgezkwLCAz
NH19PC9zdHJpbmc+CisJCQkJCQkJPHJlZmVyZW5jZSBrZXk9Ik5TU3VwZXJ2aWV3IiByZWY9Ijc3
NjAyNzQ1OCIvPgorCQkJCQkJCTxyZWZlcmVuY2Uga2V5PSJOU1dpbmRvdyIvPgorCQkJCQkJCTxy
ZWZlcmVuY2Uga2V5PSJOU05leHRLZXlWaWV3IiByZWY9IjU0NzEwMDA3MCIvPgorCQkJCQkJCTxi
b29sIGtleT0iTlNFbmFibGVkIj5ZRVM8L2Jvb2w+CisJCQkJCQkJPG9iamVjdCBjbGFzcz0iTlNC
dXR0b25DZWxsIiBrZXk9Ik5TQ2VsbCIgaWQ9IjYyOTg0OTk5MiI+CisJCQkJCQkJCTxpbnQga2V5
PSJOU0NlbGxGbGFncyI+NjcyMzk0MjQ8L2ludD4KKwkJCQkJCQkJPGludCBrZXk9Ik5TQ2VsbEZs
YWdzMiI+MTM0MjE3NzI4PC9pbnQ+CisJCQkJCQkJCTxzdHJpbmcga2V5PSJOU0NvbnRlbnRzIj5D
YW5jZWw8L3N0cmluZz4KKwkJCQkJCQkJPG9iamVjdCBjbGFzcz0iTlNGb250IiBrZXk9Ik5TU3Vw
cG9ydCIgaWQ9Ijg0MzMxMDc5MCI+CisJCQkJCQkJCQk8c3RyaW5nIGtleT0iTlNOYW1lIj5MdWNp
ZGFHcmFuZGU8L3N0cmluZz4KKwkJCQkJCQkJCTxkb3VibGUga2V5PSJOU1NpemUiPjEzPC9kb3Vi
bGU+CisJCQkJCQkJCQk8aW50IGtleT0iTlNmRmxhZ3MiPjE1NTg8L2ludD4KKwkJCQkJCQkJPC9v
YmplY3Q+CisJCQkJCQkJCTxyZWZlcmVuY2Uga2V5PSJOU0NvbnRyb2xWaWV3IiByZWY9IjcwNzA1
NTcyMyIvPgorCQkJCQkJCQk8aW50IGtleT0iTlNCdXR0b25GbGFncyI+LTIwMzgyODQwMzM8L2lu
dD4KKwkJCQkJCQkJPGludCBrZXk9Ik5TQnV0dG9uRmxhZ3MyIj4xPC9pbnQ+CisJCQkJCQkJCTxv
YmplY3QgY2xhc3M9Ik5TRm9udCIga2V5PSJOU0FsdGVybmF0ZUltYWdlIiBpZD0iMzcxNjMwNTg1
Ij4KKwkJCQkJCQkJCTxzdHJpbmcga2V5PSJOU05hbWUiPkhlbHZldGljYTwvc3RyaW5nPgorCQkJ
CQkJCQkJPGRvdWJsZSBrZXk9Ik5TU2l6ZSI+MTM8L2RvdWJsZT4KKwkJCQkJCQkJCTxpbnQga2V5
PSJOU2ZGbGFncyI+MTY8L2ludD4KKwkJCQkJCQkJPC9vYmplY3Q+CisJCQkJCQkJCTxzdHJpbmcg
a2V5PSJOU0FsdGVybmF0ZUNvbnRlbnRzIi8+CisJCQkJCQkJCTxzdHJpbmcgdHlwZT0iYmFzZTY0
LVVURjgiIGtleT0iTlNLZXlFcXVpdmFsZW50Ij5Hdzwvc3RyaW5nPgorCQkJCQkJCQk8aW50IGtl
eT0iTlNQZXJpb2RpY0RlbGF5Ij4yMDA8L2ludD4KKwkJCQkJCQkJPGludCBrZXk9Ik5TUGVyaW9k
aWNJbnRlcnZhbCI+MjU8L2ludD4KKwkJCQkJCQk8L29iamVjdD4KKwkJCQkJCTwvb2JqZWN0Pgor
CQkJCQkJPG9iamVjdCBjbGFzcz0iTlNCdXR0b24iIGlkPSI1NDcxMDAwNzAiPgorCQkJCQkJCTxy
ZWZlcmVuY2Uga2V5PSJOU05leHRSZXNwb25kZXIiIHJlZj0iNzc2MDI3NDU4Ii8+CisJCQkJCQkJ
PGludCBrZXk9Ik5TdkZsYWdzIj4yODk8L2ludD4KKwkJCQkJCQk8c3RyaW5nIGtleT0iTlNGcmFt
ZSI+e3szMjIsIDExfSwgezkwLCAzNH19PC9zdHJpbmc+CisJCQkJCQkJPHJlZmVyZW5jZSBrZXk9
Ik5TU3VwZXJ2aWV3IiByZWY9Ijc3NjAyNzQ1OCIvPgorCQkJCQkJCTxyZWZlcmVuY2Uga2V5PSJO
U1dpbmRvdyIvPgorCQkJCQkJCTxyZWZlcmVuY2Uga2V5PSJOU05leHRLZXlWaWV3Ii8+CisJCQkJ
CQkJPGJvb2wga2V5PSJOU0VuYWJsZWQiPllFUzwvYm9vbD4KKwkJCQkJCQk8b2JqZWN0IGNsYXNz
PSJOU0J1dHRvbkNlbGwiIGtleT0iTlNDZWxsIiBpZD0iOTcwMDk2MTM5Ij4KKwkJCQkJCQkJPGlu
dCBrZXk9Ik5TQ2VsbEZsYWdzIj42NzIzOTQyNDwvaW50PgorCQkJCQkJCQk8aW50IGtleT0iTlND
ZWxsRmxhZ3MyIj4xMzQyMTc3Mjg8L2ludD4KKwkJCQkJCQkJPHN0cmluZyBrZXk9Ik5TQ29udGVu
dHMiPk9LPC9zdHJpbmc+CisJCQkJCQkJCTxyZWZlcmVuY2Uga2V5PSJOU1N1cHBvcnQiIHJlZj0i
ODQzMzEwNzkwIi8+CisJCQkJCQkJCTxyZWZlcmVuY2Uga2V5PSJOU0NvbnRyb2xWaWV3IiByZWY9
IjU0NzEwMDA3MCIvPgorCQkJCQkJCQk8aW50IGtleT0iTlNCdXR0b25GbGFncyI+LTIwMzU5MjQ3
Mzc8L2ludD4KKwkJCQkJCQkJPGludCBrZXk9Ik5TQnV0dG9uRmxhZ3MyIj4xPC9pbnQ+CisJCQkJ
CQkJCTxyZWZlcmVuY2Uga2V5PSJOU0FsdGVybmF0ZUltYWdlIiByZWY9IjM3MTYzMDU4NSIvPgor
CQkJCQkJCQk8c3RyaW5nIGtleT0iTlNBbHRlcm5hdGVDb250ZW50cyIvPgorCQkJCQkJCQk8b2Jq
ZWN0IGNsYXNzPSJOU011dGFibGVTdHJpbmciIGtleT0iTlNLZXlFcXVpdmFsZW50Ij4KKwkJCQkJ
CQkJCTxieXRlcyBrZXk9Ik5TLmJ5dGVzIj5EUTwvYnl0ZXM+CisJCQkJCQkJCTwvb2JqZWN0Pgor
CQkJCQkJCQk8aW50IGtleT0iTlNQZXJpb2RpY0RlbGF5Ij4yMDA8L2ludD4KKwkJCQkJCQkJPGlu
dCBrZXk9Ik5TUGVyaW9kaWNJbnRlcnZhbCI+MjU8L2ludD4KKwkJCQkJCQk8L29iamVjdD4KKwkJ
CQkJCTwvb2JqZWN0PgorCQkJCQkJPG9iamVjdCBjbGFzcz0iTlNUZXh0RmllbGQiIGlkPSIxMTE5
MzE4NzgiPgorCQkJCQkJCTxyZWZlcmVuY2Uga2V5PSJOU05leHRSZXNwb25kZXIiIHJlZj0iNzc2
MDI3NDU4Ii8+CisJCQkJCQkJPGludCBrZXk9Ik5TdkZsYWdzIj4yNjY8L2ludD4KKwkJCQkJCQk8
c3RyaW5nIGtleT0iTlNGcmFtZSI+e3sxNywgMTA3fSwgezM5MiwgMzR9fTwvc3RyaW5nPgorCQkJ
CQkJCTxyZWZlcmVuY2Uga2V5PSJOU1N1cGVydmlldyIgcmVmPSI3NzYwMjc0NTgiLz4KKwkJCQkJ
CQk8cmVmZXJlbmNlIGtleT0iTlNXaW5kb3ciLz4KKwkJCQkJCQk8cmVmZXJlbmNlIGtleT0iTlNO
ZXh0S2V5VmlldyIgcmVmPSIzMDcwNzEyNDQiLz4KKwkJCQkJCQk8Ym9vbCBrZXk9Ik5TRW5hYmxl
ZCI+WUVTPC9ib29sPgorCQkJCQkJCTxvYmplY3QgY2xhc3M9Ik5TVGV4dEZpZWxkQ2VsbCIga2V5
PSJOU0NlbGwiIGlkPSI4ODEzNTMwODQiPgorCQkJCQkJCQk8aW50IGtleT0iTlNDZWxsRmxhZ3Mi
PjY5MzM2NTc3PC9pbnQ+CisJCQkJCQkJCTxpbnQga2V5PSJOU0NlbGxGbGFnczIiPjA8L2ludD4K
KwkJCQkJCQkJPHN0cmluZyB0eXBlPSJiYXNlNjQtVVRGOCIga2V5PSJOU0NvbnRlbnRzIj5RU0J0
WlhOellXZGxJR1p5YjIwZ1NtRjJZVk5qY21sd2RDQjNhV3hzSUdKbElHaGxjbVV1Q2tsMElHTmhi
aUJpWlNCaGJua2diblZ0WW1WeQorSUc5bUlHeHBibVZ6SUd4dmJtY3VBPC9zdHJpbmc+CisJCQkJ
CQkJCTxvYmplY3QgY2xhc3M9Ik5TRm9udCIga2V5PSJOU1N1cHBvcnQiIGlkPSI0MTk3MDg4MzYi
PgorCQkJCQkJCQkJPHN0cmluZyBrZXk9Ik5TTmFtZSI+THVjaWRhR3JhbmRlPC9zdHJpbmc+CisJ
CQkJCQkJCQk8ZG91YmxlIGtleT0iTlNTaXplIj4xMzwvZG91YmxlPgorCQkJCQkJCQkJPGludCBr
ZXk9Ik5TZkZsYWdzIj4xMDQ0PC9pbnQ+CisJCQkJCQkJCTwvb2JqZWN0PgorCQkJCQkJCQk8cmVm
ZXJlbmNlIGtleT0iTlNDb250cm9sVmlldyIgcmVmPSIxMTE5MzE4NzgiLz4KKwkJCQkJCQkJPG9i
amVjdCBjbGFzcz0iTlNDb2xvciIga2V5PSJOU0JhY2tncm91bmRDb2xvciI+CisJCQkJCQkJCQk8
aW50IGtleT0iTlNDb2xvclNwYWNlIj42PC9pbnQ+CisJCQkJCQkJCQk8c3RyaW5nIGtleT0iTlND
YXRhbG9nTmFtZSI+U3lzdGVtPC9zdHJpbmc+CisJCQkJCQkJCQk8c3RyaW5nIGtleT0iTlNDb2xv
ck5hbWUiPmNvbnRyb2xDb2xvcjwvc3RyaW5nPgorCQkJCQkJCQkJPG9iamVjdCBjbGFzcz0iTlND
b2xvciIga2V5PSJOU0NvbG9yIj4KKwkJCQkJCQkJCQk8aW50IGtleT0iTlNDb2xvclNwYWNlIj4z
PC9pbnQ+CisJCQkJCQkJCQkJPGJ5dGVzIGtleT0iTlNXaGl0ZSI+TUM0Mk5qWTJOalkyTmpZM0FB
PC9ieXRlcz4KKwkJCQkJCQkJCTwvb2JqZWN0PgorCQkJCQkJCQk8L29iamVjdD4KKwkJCQkJCQkJ
PG9iamVjdCBjbGFzcz0iTlNDb2xvciIga2V5PSJOU1RleHRDb2xvciI+CisJCQkJCQkJCQk8aW50
IGtleT0iTlNDb2xvclNwYWNlIj42PC9pbnQ+CisJCQkJCQkJCQk8c3RyaW5nIGtleT0iTlNDYXRh
bG9nTmFtZSI+U3lzdGVtPC9zdHJpbmc+CisJCQkJCQkJCQk8c3RyaW5nIGtleT0iTlNDb2xvck5h
bWUiPmNvbnRyb2xUZXh0Q29sb3I8L3N0cmluZz4KKwkJCQkJCQkJCTxvYmplY3QgY2xhc3M9Ik5T
Q29sb3IiIGtleT0iTlNDb2xvciI+CisJCQkJCQkJCQkJPGludCBrZXk9Ik5TQ29sb3JTcGFjZSI+
MzwvaW50PgorCQkJCQkJCQkJCTxieXRlcyBrZXk9Ik5TV2hpdGUiPk1BQTwvYnl0ZXM+CisJCQkJ
CQkJCQk8L29iamVjdD4KKwkJCQkJCQkJPC9vYmplY3Q+CisJCQkJCQkJPC9vYmplY3Q+CisJCQkJ
CQk8L29iamVjdD4KKwkJCQkJCTxvYmplY3QgY2xhc3M9Ik5TVGV4dEZpZWxkIiBpZD0iMzA3MDcx
MjQ0Ij4KKwkJCQkJCQk8cmVmZXJlbmNlIGtleT0iTlNOZXh0UmVzcG9uZGVyIiByZWY9Ijc3NjAy
NzQ1OCIvPgorCQkJCQkJCTxpbnQga2V5PSJOU3ZGbGFncyI+MjkwPC9pbnQ+CisJCQkJCQkJPHN0
cmluZyBrZXk9Ik5TRnJhbWUiPnt7MjAsIDYwfSwgezM4NiwgMzl9fTwvc3RyaW5nPgorCQkJCQkJ
CTxyZWZlcmVuY2Uga2V5PSJOU1N1cGVydmlldyIgcmVmPSI3NzYwMjc0NTgiLz4KKwkJCQkJCQk8
cmVmZXJlbmNlIGtleT0iTlNXaW5kb3ciLz4KKwkJCQkJCQk8cmVmZXJlbmNlIGtleT0iTlNOZXh0
S2V5VmlldyIgcmVmPSI3MDcwNTU3MjMiLz4KKwkJCQkJCQk8Ym9vbCBrZXk9Ik5TRW5hYmxlZCI+
WUVTPC9ib29sPgorCQkJCQkJCTxvYmplY3QgY2xhc3M9Ik5TVGV4dEZpZWxkQ2VsbCIga2V5PSJO
U0NlbGwiIGlkPSI1ODcyMzEwNTkiPgorCQkJCQkJCQk8aW50IGtleT0iTlNDZWxsRmxhZ3MiPjM0
MTk2NjMzNzwvaW50PgorCQkJCQkJCQk8aW50IGtleT0iTlNDZWxsRmxhZ3MyIj4wPC9pbnQ+CisJ
CQkJCQkJCTxzdHJpbmcga2V5PSJOU0NvbnRlbnRzIi8+CisJCQkJCQkJCTxyZWZlcmVuY2Uga2V5
PSJOU1N1cHBvcnQiIHJlZj0iNDE5NzA4ODM2Ii8+CisJCQkJCQkJCTxyZWZlcmVuY2Uga2V5PSJO
U0NvbnRyb2xWaWV3IiByZWY9IjMwNzA3MTI0NCIvPgorCQkJCQkJCQk8Ym9vbCBrZXk9Ik5TRHJh
d3NCYWNrZ3JvdW5kIj5ZRVM8L2Jvb2w+CisJCQkJCQkJCTxvYmplY3QgY2xhc3M9Ik5TQ29sb3Ii
IGtleT0iTlNCYWNrZ3JvdW5kQ29sb3IiPgorCQkJCQkJCQkJPGludCBrZXk9Ik5TQ29sb3JTcGFj
ZSI+MTwvaW50PgorCQkJCQkJCQkJPGJ5dGVzIGtleT0iTlNSR0IiPk1TQXhJREVBQTwvYnl0ZXM+
CisJCQkJCQkJCTwvb2JqZWN0PgorCQkJCQkJCQk8b2JqZWN0IGNsYXNzPSJOU0NvbG9yIiBrZXk9
Ik5TVGV4dENvbG9yIj4KKwkJCQkJCQkJCTxpbnQga2V5PSJOU0NvbG9yU3BhY2UiPjE8L2ludD4K
KwkJCQkJCQkJCTxieXRlcyBrZXk9Ik5TUkdCIj5NQ0F3SURBQUE8L2J5dGVzPgorCQkJCQkJCQk8
L29iamVjdD4KKwkJCQkJCQk8L29iamVjdD4KKwkJCQkJCTwvb2JqZWN0PgorCQkJCQk8L2FycmF5
PgorCQkJCQk8c3RyaW5nIGtleT0iTlNGcmFtZVNpemUiPns0MjYsIDE2MX08L3N0cmluZz4KKwkJ
CQkJPHJlZmVyZW5jZSBrZXk9Ik5TU3VwZXJ2aWV3Ii8+CisJCQkJCTxyZWZlcmVuY2Uga2V5PSJO
U1dpbmRvdyIvPgorCQkJCQk8cmVmZXJlbmNlIGtleT0iTlNOZXh0S2V5VmlldyIgcmVmPSIxMTE5
MzE4NzgiLz4KKwkJCQk8L29iamVjdD4KKwkJCQk8c3RyaW5nIGtleT0iTlNTY3JlZW5SZWN0Ij57
ezAsIDB9LCB7MjU2MCwgMTQxOH19PC9zdHJpbmc+CisJCQkJPHN0cmluZyBrZXk9Ik5TTWluU2l6
ZSI+ezk0LCAyOX08L3N0cmluZz4KKwkJCQk8c3RyaW5nIGtleT0iTlNNYXhTaXplIj57MTAwMDAw
MDAwMDAwMDAsIDEwMDAwMDAwMDAwMDAwfTwvc3RyaW5nPgorCQkJCTxib29sIGtleT0iTlNXaW5k
b3dJc1Jlc3RvcmFibGUiPllFUzwvYm9vbD4KKwkJCTwvb2JqZWN0PgorCQk8L2FycmF5PgorCQk8
b2JqZWN0IGNsYXNzPSJJQk9iamVjdENvbnRhaW5lciIga2V5PSJJQkRvY3VtZW50Lk9iamVjdHMi
PgorCQkJPGFycmF5IGNsYXNzPSJOU011dGFibGVBcnJheSIga2V5PSJjb25uZWN0aW9uUmVjb3Jk
cyI+CisJCQkJPG9iamVjdCBjbGFzcz0iSUJDb25uZWN0aW9uUmVjb3JkIj4KKwkJCQkJPG9iamVj
dCBjbGFzcz0iSUJPdXRsZXRDb25uZWN0aW9uIiBrZXk9ImNvbm5lY3Rpb24iPgorCQkJCQkJPHN0
cmluZyBrZXk9ImxhYmVsIj53aW5kb3c8L3N0cmluZz4KKwkJCQkJCTxyZWZlcmVuY2Uga2V5PSJz
b3VyY2UiIHJlZj0iMTAxNjcwNTk3NSIvPgorCQkJCQkJPHJlZmVyZW5jZSBrZXk9ImRlc3RpbmF0
aW9uIiByZWY9Ijk4MTgxMzAiLz4KKwkJCQkJPC9vYmplY3Q+CisJCQkJCTxpbnQga2V5PSJjb25u
ZWN0aW9uSUQiPjUyPC9pbnQ+CisJCQkJPC9vYmplY3Q+CisJCQkJPG9iamVjdCBjbGFzcz0iSUJD
b25uZWN0aW9uUmVjb3JkIj4KKwkJCQkJPG9iamVjdCBjbGFzcz0iSUJBY3Rpb25Db25uZWN0aW9u
IiBrZXk9ImNvbm5lY3Rpb24iPgorCQkJCQkJPHN0cmluZyBrZXk9ImxhYmVsIj5wcmVzc2VkQ2Fu
Y2VsOjwvc3RyaW5nPgorCQkJCQkJPHJlZmVyZW5jZSBrZXk9InNvdXJjZSIgcmVmPSIxMDE2NzA1
OTc1Ii8+CisJCQkJCQk8cmVmZXJlbmNlIGtleT0iZGVzdGluYXRpb24iIHJlZj0iNzA3MDU1NzIz
Ii8+CisJCQkJCTwvb2JqZWN0PgorCQkJCQk8aW50IGtleT0iY29ubmVjdGlvbklEIj41MzwvaW50
PgorCQkJCTwvb2JqZWN0PgorCQkJCTxvYmplY3QgY2xhc3M9IklCQ29ubmVjdGlvblJlY29yZCI+
CisJCQkJCTxvYmplY3QgY2xhc3M9IklCQWN0aW9uQ29ubmVjdGlvbiIga2V5PSJjb25uZWN0aW9u
Ij4KKwkJCQkJCTxzdHJpbmcga2V5PSJsYWJlbCI+cHJlc3NlZE9LOjwvc3RyaW5nPgorCQkJCQkJ
PHJlZmVyZW5jZSBrZXk9InNvdXJjZSIgcmVmPSIxMDE2NzA1OTc1Ii8+CisJCQkJCQk8cmVmZXJl
bmNlIGtleT0iZGVzdGluYXRpb24iIHJlZj0iNTQ3MTAwMDcwIi8+CisJCQkJCTwvb2JqZWN0Pgor
CQkJCQk8aW50IGtleT0iY29ubmVjdGlvbklEIj41NDwvaW50PgorCQkJCTwvb2JqZWN0PgorCQkJ
CTxvYmplY3QgY2xhc3M9IklCQ29ubmVjdGlvblJlY29yZCI+CisJCQkJCTxvYmplY3QgY2xhc3M9
IklCT3V0bGV0Q29ubmVjdGlvbiIga2V5PSJjb25uZWN0aW9uIj4KKwkJCQkJCTxzdHJpbmcga2V5
PSJsYWJlbCI+cHJvbXB0PC9zdHJpbmc+CisJCQkJCQk8cmVmZXJlbmNlIGtleT0ic291cmNlIiBy
ZWY9IjEwMTY3MDU5NzUiLz4KKwkJCQkJCTxyZWZlcmVuY2Uga2V5PSJkZXN0aW5hdGlvbiIgcmVm
PSIxMTE5MzE4NzgiLz4KKwkJCQkJPC9vYmplY3Q+CisJCQkJCTxpbnQga2V5PSJjb25uZWN0aW9u
SUQiPjUxPC9pbnQ+CisJCQkJPC9vYmplY3Q+CisJCQkJPG9iamVjdCBjbGFzcz0iSUJDb25uZWN0
aW9uUmVjb3JkIj4KKwkJCQkJPG9iamVjdCBjbGFzcz0iSUJPdXRsZXRDb25uZWN0aW9uIiBrZXk9
ImNvbm5lY3Rpb24iPgorCQkJCQkJPHN0cmluZyBrZXk9ImxhYmVsIj50ZXh0SW5wdXQ8L3N0cmlu
Zz4KKwkJCQkJCTxyZWZlcmVuY2Uga2V5PSJzb3VyY2UiIHJlZj0iMTAxNjcwNTk3NSIvPgorCQkJ
CQkJPHJlZmVyZW5jZSBrZXk9ImRlc3RpbmF0aW9uIiByZWY9IjMwNzA3MTI0NCIvPgorCQkJCQk8
L29iamVjdD4KKwkJCQkJPGludCBrZXk9ImNvbm5lY3Rpb25JRCI+NTA8L2ludD4KKwkJCQk8L29i
amVjdD4KKwkJCQk8b2JqZWN0IGNsYXNzPSJJQkNvbm5lY3Rpb25SZWNvcmQiPgorCQkJCQk8b2Jq
ZWN0IGNsYXNzPSJJQk91dGxldENvbm5lY3Rpb24iIGtleT0iY29ubmVjdGlvbiI+CisJCQkJCQk8
c3RyaW5nIGtleT0ibGFiZWwiPm5leHRLZXlWaWV3PC9zdHJpbmc+CisJCQkJCQk8cmVmZXJlbmNl
IGtleT0ic291cmNlIiByZWY9IjcwNzA1NTcyMyIvPgorCQkJCQkJPHJlZmVyZW5jZSBrZXk9ImRl
c3RpbmF0aW9uIiByZWY9IjU0NzEwMDA3MCIvPgorCQkJCQk8L29iamVjdD4KKwkJCQkJPGludCBr
ZXk9ImNvbm5lY3Rpb25JRCI+NDI8L2ludD4KKwkJCQk8L29iamVjdD4KKwkJCQk8b2JqZWN0IGNs
YXNzPSJJQkNvbm5lY3Rpb25SZWNvcmQiPgorCQkJCQk8b2JqZWN0IGNsYXNzPSJJQk91dGxldENv
bm5lY3Rpb24iIGtleT0iY29ubmVjdGlvbiI+CisJCQkJCQk8c3RyaW5nIGtleT0ibGFiZWwiPmlu
aXRpYWxGaXJzdFJlc3BvbmRlcjwvc3RyaW5nPgorCQkJCQkJPHJlZmVyZW5jZSBrZXk9InNvdXJj
ZSIgcmVmPSI5ODE4MTMwIi8+CisJCQkJCQk8cmVmZXJlbmNlIGtleT0iZGVzdGluYXRpb24iIHJl
Zj0iMzA3MDcxMjQ0Ii8+CisJCQkJCTwvb2JqZWN0PgorCQkJCQk8aW50IGtleT0iY29ubmVjdGlv
bklEIj40ODwvaW50PgorCQkJCTwvb2JqZWN0PgorCQkJCTxvYmplY3QgY2xhc3M9IklCQ29ubmVj
dGlvblJlY29yZCI+CisJCQkJCTxvYmplY3QgY2xhc3M9IklCT3V0bGV0Q29ubmVjdGlvbiIga2V5
PSJjb25uZWN0aW9uIj4KKwkJCQkJCTxzdHJpbmcga2V5PSJsYWJlbCI+ZGVsZWdhdGU8L3N0cmlu
Zz4KKwkJCQkJCTxyZWZlcmVuY2Uga2V5PSJzb3VyY2UiIHJlZj0iOTgxODEzMCIvPgorCQkJCQkJ
PHJlZmVyZW5jZSBrZXk9ImRlc3RpbmF0aW9uIiByZWY9IjEwMTY3MDU5NzUiLz4KKwkJCQkJPC9v
YmplY3Q+CisJCQkJCTxpbnQga2V5PSJjb25uZWN0aW9uSUQiPjIzPC9pbnQ+CisJCQkJPC9vYmpl
Y3Q+CisJCQkJPG9iamVjdCBjbGFzcz0iSUJDb25uZWN0aW9uUmVjb3JkIj4KKwkJCQkJPG9iamVj
dCBjbGFzcz0iSUJPdXRsZXRDb25uZWN0aW9uIiBrZXk9ImNvbm5lY3Rpb24iPgorCQkJCQkJPHN0
cmluZyBrZXk9ImxhYmVsIj5uZXh0S2V5Vmlldzwvc3RyaW5nPgorCQkJCQkJPHJlZmVyZW5jZSBr
ZXk9InNvdXJjZSIgcmVmPSIzMDcwNzEyNDQiLz4KKwkJCQkJCTxyZWZlcmVuY2Uga2V5PSJkZXN0
aW5hdGlvbiIgcmVmPSI3MDcwNTU3MjMiLz4KKwkJCQkJPC9vYmplY3Q+CisJCQkJCTxpbnQga2V5
PSJjb25uZWN0aW9uSUQiPjQ5PC9pbnQ+CisJCQkJPC9vYmplY3Q+CisJCQk8L2FycmF5PgorCQkJ
PG9iamVjdCBjbGFzcz0iSUJNdXRhYmxlT3JkZXJlZFNldCIga2V5PSJvYmplY3RSZWNvcmRzIj4K
KwkJCQk8YXJyYXkga2V5PSJvcmRlcmVkT2JqZWN0cyI+CisJCQkJCTxvYmplY3QgY2xhc3M9IklC
T2JqZWN0UmVjb3JkIj4KKwkJCQkJCTxpbnQga2V5PSJvYmplY3RJRCI+MDwvaW50PgorCQkJCQkJ
PGFycmF5IGtleT0ib2JqZWN0IiBpZD0iMCIvPgorCQkJCQkJPHJlZmVyZW5jZSBrZXk9ImNoaWxk
cmVuIiByZWY9IjMwMTA3MDM3NSIvPgorCQkJCQkJPG5pbCBrZXk9InBhcmVudCIvPgorCQkJCQk8
L29iamVjdD4KKwkJCQkJPG9iamVjdCBjbGFzcz0iSUJPYmplY3RSZWNvcmQiPgorCQkJCQkJPGlu
dCBrZXk9Im9iamVjdElEIj4tMjwvaW50PgorCQkJCQkJPHJlZmVyZW5jZSBrZXk9Im9iamVjdCIg
cmVmPSIxMDE2NzA1OTc1Ii8+CisJCQkJCQk8cmVmZXJlbmNlIGtleT0icGFyZW50IiByZWY9IjAi
Lz4KKwkJCQkJCTxzdHJpbmcga2V5PSJvYmplY3ROYW1lIj5GaWxlJ3MgT3duZXI8L3N0cmluZz4K
KwkJCQkJPC9vYmplY3Q+CisJCQkJCTxvYmplY3QgY2xhc3M9IklCT2JqZWN0UmVjb3JkIj4KKwkJ
CQkJCTxpbnQga2V5PSJvYmplY3RJRCI+LTE8L2ludD4KKwkJCQkJCTxyZWZlcmVuY2Uga2V5PSJv
YmplY3QiIHJlZj0iNTEzOTE1MSIvPgorCQkJCQkJPHJlZmVyZW5jZSBrZXk9InBhcmVudCIgcmVm
PSIwIi8+CisJCQkJCQk8c3RyaW5nIGtleT0ib2JqZWN0TmFtZSI+Rmlyc3QgUmVzcG9uZGVyPC9z
dHJpbmc+CisJCQkJCTwvb2JqZWN0PgorCQkJCQk8b2JqZWN0IGNsYXNzPSJJQk9iamVjdFJlY29y
ZCI+CisJCQkJCQk8aW50IGtleT0ib2JqZWN0SUQiPi0zPC9pbnQ+CisJCQkJCQk8cmVmZXJlbmNl
IGtleT0ib2JqZWN0IiByZWY9IjQzODQxODA2NiIvPgorCQkJCQkJPHJlZmVyZW5jZSBrZXk9InBh
cmVudCIgcmVmPSIwIi8+CisJCQkJCQk8c3RyaW5nIGtleT0ib2JqZWN0TmFtZSI+QXBwbGljYXRp
b248L3N0cmluZz4KKwkJCQkJPC9vYmplY3Q+CisJCQkJCTxvYmplY3QgY2xhc3M9IklCT2JqZWN0
UmVjb3JkIj4KKwkJCQkJCTxpbnQga2V5PSJvYmplY3RJRCI+MTA8L2ludD4KKwkJCQkJCTxyZWZl
cmVuY2Uga2V5PSJvYmplY3QiIHJlZj0iOTgxODEzMCIvPgorCQkJCQkJPGFycmF5IGNsYXNzPSJO
U011dGFibGVBcnJheSIga2V5PSJjaGlsZHJlbiI+CisJCQkJCQkJPHJlZmVyZW5jZSByZWY9Ijc3
NjAyNzQ1OCIvPgorCQkJCQkJPC9hcnJheT4KKwkJCQkJCTxyZWZlcmVuY2Uga2V5PSJwYXJlbnQi
IHJlZj0iMCIvPgorCQkJCQkJPHN0cmluZyBrZXk9Im9iamVjdE5hbWUiPlBhbmVsMTwvc3RyaW5n
PgorCQkJCQk8L29iamVjdD4KKwkJCQkJPG9iamVjdCBjbGFzcz0iSUJPYmplY3RSZWNvcmQiPgor
CQkJCQkJPGludCBrZXk9Im9iamVjdElEIj43PC9pbnQ+CisJCQkJCQk8cmVmZXJlbmNlIGtleT0i
b2JqZWN0IiByZWY9Ijc3NjAyNzQ1OCIvPgorCQkJCQkJPGFycmF5IGNsYXNzPSJOU011dGFibGVB
cnJheSIga2V5PSJjaGlsZHJlbiI+CisJCQkJCQkJPHJlZmVyZW5jZSByZWY9IjcwNzA1NTcyMyIv
PgorCQkJCQkJCTxyZWZlcmVuY2UgcmVmPSI1NDcxMDAwNzAiLz4KKwkJCQkJCQk8cmVmZXJlbmNl
IHJlZj0iMTExOTMxODc4Ii8+CisJCQkJCQkJPHJlZmVyZW5jZSByZWY9IjMwNzA3MTI0NCIvPgor
CQkJCQkJPC9hcnJheT4KKwkJCQkJCTxyZWZlcmVuY2Uga2V5PSJwYXJlbnQiIHJlZj0iOTgxODEz
MCIvPgorCQkJCQk8L29iamVjdD4KKwkJCQkJPG9iamVjdCBjbGFzcz0iSUJPYmplY3RSZWNvcmQi
PgorCQkJCQkJPGludCBrZXk9Im9iamVjdElEIj4yPC9pbnQ+CisJCQkJCQk8cmVmZXJlbmNlIGtl
eT0ib2JqZWN0IiByZWY9IjcwNzA1NTcyMyIvPgorCQkJCQkJPGFycmF5IGNsYXNzPSJOU011dGFi
bGVBcnJheSIga2V5PSJjaGlsZHJlbiI+CisJCQkJCQkJPHJlZmVyZW5jZSByZWY9IjYyOTg0OTk5
MiIvPgorCQkJCQkJPC9hcnJheT4KKwkJCQkJCTxyZWZlcmVuY2Uga2V5PSJwYXJlbnQiIHJlZj0i
Nzc2MDI3NDU4Ii8+CisJCQkJCTwvb2JqZWN0PgorCQkJCQk8b2JqZWN0IGNsYXNzPSJJQk9iamVj
dFJlY29yZCI+CisJCQkJCQk8aW50IGtleT0ib2JqZWN0SUQiPjEyPC9pbnQ+CisJCQkJCQk8cmVm
ZXJlbmNlIGtleT0ib2JqZWN0IiByZWY9IjU0NzEwMDA3MCIvPgorCQkJCQkJPGFycmF5IGNsYXNz
PSJOU011dGFibGVBcnJheSIga2V5PSJjaGlsZHJlbiI+CisJCQkJCQkJPHJlZmVyZW5jZSByZWY9
Ijk3MDA5NjEzOSIvPgorCQkJCQkJPC9hcnJheT4KKwkJCQkJCTxyZWZlcmVuY2Uga2V5PSJwYXJl
bnQiIHJlZj0iNzc2MDI3NDU4Ii8+CisJCQkJCTwvb2JqZWN0PgorCQkJCQk8b2JqZWN0IGNsYXNz
PSJJQk9iamVjdFJlY29yZCI+CisJCQkJCQk8aW50IGtleT0ib2JqZWN0SUQiPjQ0PC9pbnQ+CisJ
CQkJCQk8cmVmZXJlbmNlIGtleT0ib2JqZWN0IiByZWY9IjExMTkzMTg3OCIvPgorCQkJCQkJPGFy
cmF5IGNsYXNzPSJOU011dGFibGVBcnJheSIga2V5PSJjaGlsZHJlbiI+CisJCQkJCQkJPHJlZmVy
ZW5jZSByZWY9Ijg4MTM1MzA4NCIvPgorCQkJCQkJPC9hcnJheT4KKwkJCQkJCTxyZWZlcmVuY2Ug
a2V5PSJwYXJlbnQiIHJlZj0iNzc2MDI3NDU4Ii8+CisJCQkJCTwvb2JqZWN0PgorCQkJCQk8b2Jq
ZWN0IGNsYXNzPSJJQk9iamVjdFJlY29yZCI+CisJCQkJCQk8aW50IGtleT0ib2JqZWN0SUQiPjQ3
PC9pbnQ+CisJCQkJCQk8cmVmZXJlbmNlIGtleT0ib2JqZWN0IiByZWY9IjMwNzA3MTI0NCIvPgor
CQkJCQkJPGFycmF5IGNsYXNzPSJOU011dGFibGVBcnJheSIga2V5PSJjaGlsZHJlbiI+CisJCQkJ
CQkJPHJlZmVyZW5jZSByZWY9IjU4NzIzMTA1OSIvPgorCQkJCQkJPC9hcnJheT4KKwkJCQkJCTxy
ZWZlcmVuY2Uga2V5PSJwYXJlbnQiIHJlZj0iNzc2MDI3NDU4Ii8+CisJCQkJCTwvb2JqZWN0Pgor
CQkJCQk8b2JqZWN0IGNsYXNzPSJJQk9iamVjdFJlY29yZCI+CisJCQkJCQk8aW50IGtleT0ib2Jq
ZWN0SUQiPjEwMDAwMjwvaW50PgorCQkJCQkJPHJlZmVyZW5jZSBrZXk9Im9iamVjdCIgcmVmPSI2
Mjk4NDk5OTIiLz4KKwkJCQkJCTxyZWZlcmVuY2Uga2V5PSJwYXJlbnQiIHJlZj0iNzA3MDU1NzIz
Ii8+CisJCQkJCTwvb2JqZWN0PgorCQkJCQk8b2JqZWN0IGNsYXNzPSJJQk9iamVjdFJlY29yZCI+
CisJCQkJCQk8aW50IGtleT0ib2JqZWN0SUQiPjEwMDAxMjwvaW50PgorCQkJCQkJPHJlZmVyZW5j
ZSBrZXk9Im9iamVjdCIgcmVmPSI5NzAwOTYxMzkiLz4KKwkJCQkJCTxyZWZlcmVuY2Uga2V5PSJw
YXJlbnQiIHJlZj0iNTQ3MTAwMDcwIi8+CisJCQkJCTwvb2JqZWN0PgorCQkJCQk8b2JqZWN0IGNs
YXNzPSJJQk9iamVjdFJlY29yZCI+CisJCQkJCQk8aW50IGtleT0ib2JqZWN0SUQiPjEwMDA0NDwv
aW50PgorCQkJCQkJPHJlZmVyZW5jZSBrZXk9Im9iamVjdCIgcmVmPSI4ODEzNTMwODQiLz4KKwkJ
CQkJCTxyZWZlcmVuY2Uga2V5PSJwYXJlbnQiIHJlZj0iMTExOTMxODc4Ii8+CisJCQkJCTwvb2Jq
ZWN0PgorCQkJCQk8b2JqZWN0IGNsYXNzPSJJQk9iamVjdFJlY29yZCI+CisJCQkJCQk8aW50IGtl
eT0ib2JqZWN0SUQiPjEwMDA0NzwvaW50PgorCQkJCQkJPHJlZmVyZW5jZSBrZXk9Im9iamVjdCIg
cmVmPSI1ODcyMzEwNTkiLz4KKwkJCQkJCTxyZWZlcmVuY2Uga2V5PSJwYXJlbnQiIHJlZj0iMzA3
MDcxMjQ0Ii8+CisJCQkJCTwvb2JqZWN0PgorCQkJCTwvYXJyYXk+CisJCQk8L29iamVjdD4KKwkJ
CTxkaWN0aW9uYXJ5IGNsYXNzPSJOU011dGFibGVEaWN0aW9uYXJ5IiBrZXk9ImZsYXR0ZW5lZFBy
b3BlcnRpZXMiPgorCQkJCTxzdHJpbmcga2V5PSItMS5JQlBsdWdpbkRlcGVuZGVuY3kiPmNvbS5h
cHBsZS5JbnRlcmZhY2VCdWlsZGVyLkNvY29hUGx1Z2luPC9zdHJpbmc+CisJCQkJPHN0cmluZyBr
ZXk9Ii0yLklCUGx1Z2luRGVwZW5kZW5jeSI+Y29tLmFwcGxlLkludGVyZmFjZUJ1aWxkZXIuQ29j
b2FQbHVnaW48L3N0cmluZz4KKwkJCQk8c3RyaW5nIGtleT0iLTMuSUJQbHVnaW5EZXBlbmRlbmN5
Ij5jb20uYXBwbGUuSW50ZXJmYWNlQnVpbGRlci5Db2NvYVBsdWdpbjwvc3RyaW5nPgorCQkJCTxz
dHJpbmcga2V5PSIxMC5JQlBsdWdpbkRlcGVuZGVuY3kiPmNvbS5hcHBsZS5JbnRlcmZhY2VCdWls
ZGVyLkNvY29hUGx1Z2luPC9zdHJpbmc+CisJCQkJPHN0cmluZyBrZXk9IjEwMDAwMi5JQlBsdWdp
bkRlcGVuZGVuY3kiPmNvbS5hcHBsZS5JbnRlcmZhY2VCdWlsZGVyLkNvY29hUGx1Z2luPC9zdHJp
bmc+CisJCQkJPHN0cmluZyBrZXk9IjEwMDAxMi5JQlBsdWdpbkRlcGVuZGVuY3kiPmNvbS5hcHBs
ZS5JbnRlcmZhY2VCdWlsZGVyLkNvY29hUGx1Z2luPC9zdHJpbmc+CisJCQkJPHN0cmluZyBrZXk9
IjEwMDA0NC5JQlBsdWdpbkRlcGVuZGVuY3kiPmNvbS5hcHBsZS5JbnRlcmZhY2VCdWlsZGVyLkNv
Y29hUGx1Z2luPC9zdHJpbmc+CisJCQkJPHN0cmluZyBrZXk9IjEwMDA0Ny5JQlBsdWdpbkRlcGVu
ZGVuY3kiPmNvbS5hcHBsZS5JbnRlcmZhY2VCdWlsZGVyLkNvY29hUGx1Z2luPC9zdHJpbmc+CisJ
CQkJPHN0cmluZyBrZXk9IjEyLklCUGx1Z2luRGVwZW5kZW5jeSI+Y29tLmFwcGxlLkludGVyZmFj
ZUJ1aWxkZXIuQ29jb2FQbHVnaW48L3N0cmluZz4KKwkJCQk8c3RyaW5nIGtleT0iMi5JQlBsdWdp
bkRlcGVuZGVuY3kiPmNvbS5hcHBsZS5JbnRlcmZhY2VCdWlsZGVyLkNvY29hUGx1Z2luPC9zdHJp
bmc+CisJCQkJPHN0cmluZyBrZXk9IjQ0LklCUGx1Z2luRGVwZW5kZW5jeSI+Y29tLmFwcGxlLklu
dGVyZmFjZUJ1aWxkZXIuQ29jb2FQbHVnaW48L3N0cmluZz4KKwkJCQk8c3RyaW5nIGtleT0iNDcu
SUJQbHVnaW5EZXBlbmRlbmN5Ij5jb20uYXBwbGUuSW50ZXJmYWNlQnVpbGRlci5Db2NvYVBsdWdp
bjwvc3RyaW5nPgorCQkJCTxzdHJpbmcga2V5PSI3LklCUGx1Z2luRGVwZW5kZW5jeSI+Y29tLmFw
cGxlLkludGVyZmFjZUJ1aWxkZXIuQ29jb2FQbHVnaW48L3N0cmluZz4KKwkJCTwvZGljdGlvbmFy
eT4KKwkJCTxkaWN0aW9uYXJ5IGNsYXNzPSJOU011dGFibGVEaWN0aW9uYXJ5IiBrZXk9InVubG9j
YWxpemVkUHJvcGVydGllcyIvPgorCQkJPG5pbCBrZXk9ImFjdGl2ZUxvY2FsaXphdGlvbiIvPgor
CQkJPGRpY3Rpb25hcnkgY2xhc3M9Ik5TTXV0YWJsZURpY3Rpb25hcnkiIGtleT0ibG9jYWxpemF0
aW9ucyIvPgorCQkJPG5pbCBrZXk9InNvdXJjZUlEIi8+CisJCQk8aW50IGtleT0ibWF4SUQiPjEw
MDA0NzwvaW50PgorCQk8L29iamVjdD4KKwkJPG9iamVjdCBjbGFzcz0iSUJDbGFzc0Rlc2NyaWJl
ciIga2V5PSJJQkRvY3VtZW50LkNsYXNzZXMiPgorCQkJPGFycmF5IGNsYXNzPSJOU011dGFibGVB
cnJheSIga2V5PSJyZWZlcmVuY2VkUGFydGlhbENsYXNzRGVzY3JpcHRpb25zIj4KKwkJCQk8b2Jq
ZWN0IGNsYXNzPSJJQlBhcnRpYWxDbGFzc0Rlc2NyaXB0aW9uIj4KKwkJCQkJPHN0cmluZyBrZXk9
ImNsYXNzTmFtZSI+V2ViSmF2YVNjcmlwdFRleHRJbnB1dFBhbmVsPC9zdHJpbmc+CisJCQkJCTxz
dHJpbmcga2V5PSJzdXBlcmNsYXNzTmFtZSI+TlNXaW5kb3dDb250cm9sbGVyPC9zdHJpbmc+CisJ
CQkJCTxkaWN0aW9uYXJ5IGNsYXNzPSJOU011dGFibGVEaWN0aW9uYXJ5IiBrZXk9ImFjdGlvbnMi
PgorCQkJCQkJPHN0cmluZyBrZXk9InByZXNzZWRDYW5jZWw6Ij5pZDwvc3RyaW5nPgorCQkJCQkJ
PHN0cmluZyBrZXk9InByZXNzZWRPSzoiPmlkPC9zdHJpbmc+CisJCQkJCTwvZGljdGlvbmFyeT4K
KwkJCQkJPGRpY3Rpb25hcnkgY2xhc3M9Ik5TTXV0YWJsZURpY3Rpb25hcnkiIGtleT0iYWN0aW9u
SW5mb3NCeU5hbWUiPgorCQkJCQkJPG9iamVjdCBjbGFzcz0iSUJBY3Rpb25JbmZvIiBrZXk9InBy
ZXNzZWRDYW5jZWw6Ij4KKwkJCQkJCQk8c3RyaW5nIGtleT0ibmFtZSI+cHJlc3NlZENhbmNlbDo8
L3N0cmluZz4KKwkJCQkJCQk8c3RyaW5nIGtleT0iY2FuZGlkYXRlQ2xhc3NOYW1lIj5pZDwvc3Ry
aW5nPgorCQkJCQkJPC9vYmplY3Q+CisJCQkJCQk8b2JqZWN0IGNsYXNzPSJJQkFjdGlvbkluZm8i
IGtleT0icHJlc3NlZE9LOiI+CisJCQkJCQkJPHN0cmluZyBrZXk9Im5hbWUiPnByZXNzZWRPSzo8
L3N0cmluZz4KKwkJCQkJCQk8c3RyaW5nIGtleT0iY2FuZGlkYXRlQ2xhc3NOYW1lIj5pZDwvc3Ry
aW5nPgorCQkJCQkJPC9vYmplY3Q+CisJCQkJCTwvZGljdGlvbmFyeT4KKwkJCQkJPGRpY3Rpb25h
cnkgY2xhc3M9Ik5TTXV0YWJsZURpY3Rpb25hcnkiIGtleT0ib3V0bGV0cyI+CisJCQkJCQk8c3Ry
aW5nIGtleT0icHJvbXB0Ij5OU1RleHRGaWVsZDwvc3RyaW5nPgorCQkJCQkJPHN0cmluZyBrZXk9
InRleHRJbnB1dCI+TlNUZXh0RmllbGQ8L3N0cmluZz4KKwkJCQkJPC9kaWN0aW9uYXJ5PgorCQkJ
CQk8ZGljdGlvbmFyeSBjbGFzcz0iTlNNdXRhYmxlRGljdGlvbmFyeSIga2V5PSJ0b09uZU91dGxl
dEluZm9zQnlOYW1lIj4KKwkJCQkJCTxvYmplY3QgY2xhc3M9IklCVG9PbmVPdXRsZXRJbmZvIiBr
ZXk9InByb21wdCI+CisJCQkJCQkJPHN0cmluZyBrZXk9Im5hbWUiPnByb21wdDwvc3RyaW5nPgor
CQkJCQkJCTxzdHJpbmcga2V5PSJjYW5kaWRhdGVDbGFzc05hbWUiPk5TVGV4dEZpZWxkPC9zdHJp
bmc+CisJCQkJCQk8L29iamVjdD4KKwkJCQkJCTxvYmplY3QgY2xhc3M9IklCVG9PbmVPdXRsZXRJ
bmZvIiBrZXk9InRleHRJbnB1dCI+CisJCQkJCQkJPHN0cmluZyBrZXk9Im5hbWUiPnRleHRJbnB1
dDwvc3RyaW5nPgorCQkJCQkJCTxzdHJpbmcga2V5PSJjYW5kaWRhdGVDbGFzc05hbWUiPk5TVGV4
dEZpZWxkPC9zdHJpbmc+CisJCQkJCQk8L29iamVjdD4KKwkJCQkJPC9kaWN0aW9uYXJ5PgorCQkJ
CQk8b2JqZWN0IGNsYXNzPSJJQkNsYXNzRGVzY3JpcHRpb25Tb3VyY2UiIGtleT0ic291cmNlSWRl
bnRpZmllciI+CisJCQkJCQk8c3RyaW5nIGtleT0ibWFqb3JLZXkiPklCUHJvamVjdFNvdXJjZTwv
c3RyaW5nPgorCQkJCQkJPHN0cmluZyBrZXk9Im1pbm9yS2V5Ij4uL0NsYXNzZXMvV2ViSmF2YVNj
cmlwdFRleHRJbnB1dFBhbmVsLmg8L3N0cmluZz4KKwkJCQkJPC9vYmplY3Q+CisJCQkJPC9vYmpl
Y3Q+CisJCQkJPG9iamVjdCBjbGFzcz0iSUJQYXJ0aWFsQ2xhc3NEZXNjcmlwdGlvbiI+CisJCQkJ
CTxzdHJpbmcga2V5PSJjbGFzc05hbWUiPldlYk5vbkJsb2NraW5nUGFuZWw8L3N0cmluZz4KKwkJ
CQkJPHN0cmluZyBrZXk9InN1cGVyY2xhc3NOYW1lIj5OU1BhbmVsPC9zdHJpbmc+CisJCQkJCTxv
YmplY3QgY2xhc3M9IklCQ2xhc3NEZXNjcmlwdGlvblNvdXJjZSIga2V5PSJzb3VyY2VJZGVudGlm
aWVyIj4KKwkJCQkJCTxzdHJpbmcga2V5PSJtYWpvcktleSI+SUJQcm9qZWN0U291cmNlPC9zdHJp
bmc+CisJCQkJCQk8c3RyaW5nIGtleT0ibWlub3JLZXkiPi4vQ2xhc3Nlcy9XZWJOb25CbG9ja2lu
Z1BhbmVsLmg8L3N0cmluZz4KKwkJCQkJPC9vYmplY3Q+CisJCQkJPC9vYmplY3Q+CisJCQk8L2Fy
cmF5PgorCQk8L29iamVjdD4KKwkJPGludCBrZXk9IklCRG9jdW1lbnQubG9jYWxpemF0aW9uTW9k
ZSI+MDwvaW50PgorCQk8c3RyaW5nIGtleT0iSUJEb2N1bWVudC5UYXJnZXRSdW50aW1lSWRlbnRp
ZmllciI+SUJDb2NvYUZyYW1ld29yazwvc3RyaW5nPgorCQk8b2JqZWN0IGNsYXNzPSJOU011dGFi
bGVEaWN0aW9uYXJ5IiBrZXk9IklCRG9jdW1lbnQuUGx1Z2luRGVjbGFyZWREZXBlbmRlbmNpZXMi
PgorCQkJPHN0cmluZyBrZXk9Ik5TLmtleS4wIj5jb20uYXBwbGUuSW50ZXJmYWNlQnVpbGRlci5D
b2NvYVBsdWdpbi5tYWNvc3g8L3N0cmluZz4KKwkJCTxpbnRlZ2VyIHZhbHVlPSIxMDUwIiBrZXk9
Ik5TLm9iamVjdC4wIi8+CisJCTwvb2JqZWN0PgorCQk8Ym9vbCBrZXk9IklCRG9jdW1lbnQuUGx1
Z2luRGVjbGFyZWREZXBlbmRlbmNpZXNUcmFja1N5c3RlbVRhcmdldFZlcnNpb24iPllFUzwvYm9v
bD4KKwkJPGludCBrZXk9IklCRG9jdW1lbnQuZGVmYXVsdFByb3BlcnR5QWNjZXNzQ29udHJvbCI+
MzwvaW50PgorCTwvZGF0YT4KKzwvYXJjaGl2ZT4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvRW5nbGlz
aC5scHJvai9XZWJKYXZhU2NyaXB0VGV4dElucHV0UGFuZWwubmliL2luZm8ubmliCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvRW5nbGlzaC5scHJvai9XZWJKYXZhU2NyaXB0VGV4dElucHV0
UGFuZWwubmliL2luZm8ubmliCShyZXZpc2lvbiA5NTM4OSkKKysrIFNvdXJjZS9XZWJLaXQvRW5n
bGlzaC5scHJvai9XZWJKYXZhU2NyaXB0VGV4dElucHV0UGFuZWwubmliL2luZm8ubmliCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDE4ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9
IlVURi04Ij8+Ci08IURPQ1RZUEUgcGxpc3QgUFVCTElDICItLy9BcHBsZS8vRFREIFBMSVNUIDEu
MC8vRU4iICJodHRwOi8vd3d3LmFwcGxlLmNvbS9EVERzL1Byb3BlcnR5TGlzdC0xLjAuZHRkIj4K
LTxwbGlzdCB2ZXJzaW9uPSIxLjAiPgotPGRpY3Q+Ci0JPGtleT5JQkZyYW1ld29yayBWZXJzaW9u
PC9rZXk+Ci0JPHN0cmluZz42Mjk8L3N0cmluZz4KLQk8a2V5PklCTGFzdEtub3duUmVsYXRpdmVQ
cm9qZWN0UGF0aDwva2V5PgotCTxzdHJpbmc+Li4vLi4vV2ViS2l0Lnhjb2RlcHJvajwvc3RyaW5n
PgotCTxrZXk+SUJPbGRlc3RPUzwva2V5PgotCTxpbnRlZ2VyPjU8L2ludGVnZXI+Ci0JPGtleT5J
Qk9wZW5PYmplY3RzPC9rZXk+Ci0JPGFycmF5Lz4KLQk8a2V5PklCU3lzdGVtIFZlcnNpb248L2tl
eT4KLQk8c3RyaW5nPjlDNzAxMDwvc3RyaW5nPgotCTxrZXk+dGFyZ2V0RnJhbWV3b3JrPC9rZXk+
Ci0JPHN0cmluZz5JQkNvY29hRnJhbWV3b3JrPC9zdHJpbmc+Ci08L2RpY3Q+Ci08L3BsaXN0PgpJ
bmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gOTUzOTcpCisrKyBTb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNSBAQAorMjAxMS0wOS0xOCAg
RGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgorCisgICAgICAgIFdlYktpdCBwYXJ0IG9m
IFttYWNdIFdlYktpdCBjb250YWlucyBPYmplY3RpdmUtQyBjbGFzc2VzIHRoYXQgYXJlIG5vdCBw
cmVmaXhlZCB3aXRoIGl0cyBzdGFuZGFyZCBwcmVmaXhlcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjgzMjMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWVkIE5vbkJsb2NraW5nUGFuZWwgdG8gV2Vi
Tm9uQmxvY2tpbmdQYW5lbC4KKyAgICAgICAgUmVuYW1lZCBUaHJlYWRFbmFibGVyIHRvIFdlYkNv
Y29hVGhyZWFkaW5nRW5hYmxlci4KKyAgICAgICAgUmVuYW1lZCBQREZQcmVmVXBkYXRpbmdQcm94
eSB0byBXZWJQREZQcmVmVXBkYXRpbmdQcm94eS4KKworICAgICAgICAqIE1pc2MvV2ViSWNvbkRh
dGFiYXNlLm1tOgorICAgICAgICAoK1tXZWJDb2NvYVRocmVhZGluZ0VuYWJsZXIgZW5hYmxlVGhy
ZWFkaW5nXSk6CisgICAgICAgIChpbXBvcnRUb1dlYkNvcmVGb3JtYXQpOgorICAgICAgICAqIFBh
bmVscy9FbmdsaXNoLmxwcm9qL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubmliL2Rlc2lnbmFibGUu
bmliOgorICAgICAgICAqIFBhbmVscy9FbmdsaXNoLmxwcm9qL1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWwubmliL2tleWVkb2JqZWN0cy5uaWI6CisgICAgICAgICogUGFuZWxzL1dlYkF1dGhlbnRpY2F0
aW9uUGFuZWwuaDoKKyAgICAgICAgKiBQYW5lbHMvV2ViQXV0aGVudGljYXRpb25QYW5lbC5tOgor
ICAgICAgICAqIFdlYlZpZXcvV2ViUERGVmlldy5tbToKKyAgICAgICAgKC1bV2ViUERGVmlldyBp
bml0V2l0aEZyYW1lOl0pOgorICAgICAgICAoLVtXZWJQREZWaWV3IF91cGRhdGVQcmVmZXJlbmNl
c1Nvb25dKToKKwogMjAxMS0wOS0xNyAgTWloYWkgUGFycGFyaXRhICA8bWloYWlwQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBGcmFtZUxvYWRlckNsaWVudCBCYWNrRm9yd2FyZExpc3QtcmVsYXRl
ZCBtZXRob2RzIGFyZSB1bnN1ZWQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViSWNv
bkRhdGFiYXNlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViSWNv
bkRhdGFiYXNlLm1tCShyZXZpc2lvbiA5NTM4OSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL01pc2Mv
V2ViSWNvbkRhdGFiYXNlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01NjEsMTQgKzU2MSwxNCBAQCAt
IChOU1N0cmluZyAqKV9kYXRhYmFzZURpcmVjdG9yeQogQGltcGxlbWVudGF0aW9uIFdlYkljb25E
YXRhYmFzZVByaXZhdGUKIEBlbmQKIAotQGludGVyZmFjZSBUaHJlYWRFbmFibGVyIDogTlNPYmpl
Y3QgeworQGludGVyZmFjZSBXZWJDb2NvYVRocmVhZGluZ0VuYWJsZXIgOiBOU09iamVjdCB7CiB9
CiArICh2b2lkKWVuYWJsZVRocmVhZGluZzsKIAogLSAodm9pZCl0aHJlYWRFbmFibGluZ1NlbGVj
dG9yOihpZClhcmc7CiBAZW5kCiAKLUBpbXBsZW1lbnRhdGlvbiBUaHJlYWRFbmFibGVyCitAaW1w
bGVtZW50YXRpb24gV2ViQ29jb2FUaHJlYWRpbmdFbmFibGVyCiAKIC0gKHZvaWQpdGhyZWFkRW5h
YmxpbmdTZWxlY3RvcjooaWQpYXJnCiB7CkBAIC01NzcsNyArNTc3LDcgQEAgLSAodm9pZCl0aHJl
YWRFbmFibGluZ1NlbGVjdG9yOihpZClhcmcKIAogKyAodm9pZCllbmFibGVUaHJlYWRpbmcKIHsK
LSAgICBUaHJlYWRFbmFibGVyICplbmFibGVyID0gW1tUaHJlYWRFbmFibGVyIGFsbG9jXSBpbml0
XTsKKyAgICBXZWJDb2NvYVRocmVhZGluZ0VuYWJsZXIgKmVuYWJsZXIgPSBbW1dlYkNvY29hVGhy
ZWFkaW5nRW5hYmxlciBhbGxvY10gaW5pdF07CiAgICAgW05TVGhyZWFkIGRldGFjaE5ld1RocmVh
ZFNlbGVjdG9yOkBzZWxlY3Rvcih0aHJlYWRFbmFibGluZ1NlbGVjdG9yOikgdG9UYXJnZXQ6ZW5h
YmxlciB3aXRoT2JqZWN0Om5pbF07CiAgICAgW2VuYWJsZXIgcmVsZWFzZV07CiB9CkBAIC01ODks
NyArNTg5LDcgQEAgYm9vbCBpbXBvcnRUb1dlYkNvcmVGb3JtYXQoKQogICAgIC8vIFNpbmNlIHRo
aXMgaXMgcnVubmluZyBvbiBhIHNlY29uZGFyeSBQT1NJWCB0aHJlYWQgYW5kIENvY29hIGNhbm5v
dCBiZSB1c2VkIG11bHRpdGhyZWFkZWQgdW5sZXNzIGFuIE5TVGhyZWFkIGhhcyBiZWVuIGRldGFj
aGVkLAogICAgIC8vIG1ha2Ugc3VyZSB0aGF0IGhhcHBlbnMgaGVyZSBmb3IgYWxsIFdlYktpdCBj
bGllbnRzCiAgICAgaWYgKCFbTlNUaHJlYWQgaXNNdWx0aVRocmVhZGVkXSkKLSAgICAgICAgW1Ro
cmVhZEVuYWJsZXIgZW5hYmxlVGhyZWFkaW5nXTsKKyAgICAgICAgW1dlYkNvY29hVGhyZWFkaW5n
RW5hYmxlciBlbmFibGVUaHJlYWRpbmddOwogICAgIEFTU0VSVChbTlNUaHJlYWQgaXNNdWx0aVRo
cmVhZGVkXSk7ICAgIAogICAgIAogICAgIC8vIEdldCB0aGUgZGlyZWN0b3J5IHRoZSBvbGQgaWNv
biBkYXRhYmFzZSAqc2hvdWxkKiBiZSBpbgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvUGFuZWxz
L1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21h
Yy9QYW5lbHMvV2ViQXV0aGVudGljYXRpb25QYW5lbC5oCShyZXZpc2lvbiA5NTM4OSkKKysrIFNv
dXJjZS9XZWJLaXQvbWFjL1BhbmVscy9XZWJBdXRoZW50aWNhdGlvblBhbmVsLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY0LDYgKzY0LDYgQEAgQGludGVyZmFjZSBXZWJBdXRoZW50aWNhdGlvblBhbmVs
IDogTlNPYgogQGVuZAogCiAvLyBUaGlzIGlzIGluIHRoZSBoZWFkZXIgc28gaXQgY2FuIGJlIHVz
ZWQgZnJvbSB0aGUgbmliIGZpbGUKLUBpbnRlcmZhY2UgTm9uQmxvY2tpbmdQYW5lbCA6IE5TUGFu
ZWwKK0BpbnRlcmZhY2UgV2ViTm9uQmxvY2tpbmdQYW5lbCA6IE5TUGFuZWwKIEBlbmQKIApJbmRl
eDogU291cmNlL1dlYktpdC9tYWMvUGFuZWxzL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9QYW5lbHMvV2ViQXV0aGVudGljYXRpb25QYW5l
bC5tCShyZXZpc2lvbiA5NTM4OSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1BhbmVscy9XZWJBdXRo
ZW50aWNhdGlvblBhbmVsLm0JKHdvcmtpbmcgY29weSkKQEAgLTI2OSw3ICsyNjksNyBAQCAtICh2
b2lkKXNoZWV0RGlkRW5kOihOU1dpbmRvdyAqKXNoZWV0IHJlCiAKIEBlbmQKIAotQGltcGxlbWVu
dGF0aW9uIE5vbkJsb2NraW5nUGFuZWwKK0BpbXBsZW1lbnRhdGlvbiBXZWJOb25CbG9ja2luZ1Bh
bmVsCiAKIC0gKEJPT0wpX2Jsb2Nrc0FjdGlvbldoZW5Nb2RhbDooU0VMKXRoZUFjdGlvbgogewpJ
bmRleDogU291cmNlL1dlYktpdC9tYWMvUGFuZWxzL0VuZ2xpc2gubHByb2ovV2ViQXV0aGVudGlj
YXRpb25QYW5lbC5uaWIvZGVzaWduYWJsZS5uaWIKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9tYWMvUGFuZWxzL0VuZ2xpc2gubHByb2ovV2ViQXV0aGVudGljYXRpb25QYW5lbC5uaWIvZGVz
aWduYWJsZS5uaWIJKHJldmlzaW9uIDk1Mzg5KQorKysgU291cmNlL1dlYktpdC9tYWMvUGFuZWxz
L0VuZ2xpc2gubHByb2ovV2ViQXV0aGVudGljYXRpb25QYW5lbC5uaWIvZGVzaWduYWJsZS5uaWIJ
KHdvcmtpbmcgY29weSkKQEAgLTIsMTcgKzIsMjUgQEAKIDxhcmNoaXZlIHR5cGU9ImNvbS5hcHBs
ZS5JbnRlcmZhY2VCdWlsZGVyMy5Db2NvYS5YSUIiIHZlcnNpb249IjcuMTAiPgogCTxkYXRhPgog
CQk8aW50IGtleT0iSUJEb2N1bWVudC5TeXN0ZW1UYXJnZXQiPjEwNTA8L2ludD4KLQkJPHN0cmlu
ZyBrZXk9IklCRG9jdW1lbnQuU3lzdGVtVmVyc2lvbiI+MTBKNTY3PC9zdHJpbmc+Ci0JCTxzdHJp
bmcga2V5PSJJQkRvY3VtZW50LkludGVyZmFjZUJ1aWxkZXJWZXJzaW9uIj44MjM8L3N0cmluZz4K
LQkJPHN0cmluZyBrZXk9IklCRG9jdW1lbnQuQXBwS2l0VmVyc2lvbiI+MTAzOC4zNTwvc3RyaW5n
PgotCQk8c3RyaW5nIGtleT0iSUJEb2N1bWVudC5ISVRvb2xib3hWZXJzaW9uIj40NjIuMDA8L3N0
cmluZz4KKwkJPHN0cmluZyBrZXk9IklCRG9jdW1lbnQuU3lzdGVtVmVyc2lvbiI+MTFDNTc8L3N0
cmluZz4KKwkJPHN0cmluZyBrZXk9IklCRG9jdW1lbnQuSW50ZXJmYWNlQnVpbGRlclZlcnNpb24i
PjE5Mzg8L3N0cmluZz4KKwkJPHN0cmluZyBrZXk9IklCRG9jdW1lbnQuQXBwS2l0VmVyc2lvbiI+
MTEzOC4yMTwvc3RyaW5nPgorCQk8c3RyaW5nIGtleT0iSUJEb2N1bWVudC5ISVRvb2xib3hWZXJz
aW9uIj41NjcuMDA8L3N0cmluZz4KIAkJPG9iamVjdCBjbGFzcz0iTlNNdXRhYmxlRGljdGlvbmFy
eSIga2V5PSJJQkRvY3VtZW50LlBsdWdpblZlcnNpb25zIj4KIAkJCTxzdHJpbmcga2V5PSJOUy5r
ZXkuMCI+Y29tLmFwcGxlLkludGVyZmFjZUJ1aWxkZXIuQ29jb2FQbHVnaW48L3N0cmluZz4KLQkJ
CTxzdHJpbmcga2V5PSJOUy5vYmplY3QuMCI+ODIzPC9zdHJpbmc+CisJCQk8c3RyaW5nIGtleT0i
TlMub2JqZWN0LjAiPjE5Mzg8L3N0cmluZz4KIAkJPC9vYmplY3Q+Ci0JCTxvYmplY3QgY2xhc3M9
Ik5TTXV0YWJsZUFycmF5IiBrZXk9IklCRG9jdW1lbnQuRWRpdGVkT2JqZWN0SURzIj4KKwkJPG9i
amVjdCBjbGFzcz0iTlNBcnJheSIga2V5PSJJQkRvY3VtZW50LkludGVncmF0ZWRDbGFzc0RlcGVu
ZGVuY2llcyI+CiAJCQk8Ym9vbCBrZXk9IkVuY29kZWRXaXRoWE1MQ29kZXIiPllFUzwvYm9vbD4K
LQkJCTxpbnRlZ2VyIHZhbHVlPSI2Ii8+CisJCQk8c3RyaW5nPk5TVGV4dEZpZWxkPC9zdHJpbmc+
CisJCQk8c3RyaW5nPk5TVmlldzwvc3RyaW5nPgorCQkJPHN0cmluZz5OU1dpbmRvd1RlbXBsYXRl
PC9zdHJpbmc+CisJCQk8c3RyaW5nPk5TVGV4dEZpZWxkQ2VsbDwvc3RyaW5nPgorCQkJPHN0cmlu
Zz5OU0J1dHRvbkNlbGw8L3N0cmluZz4KKwkJCTxzdHJpbmc+TlNJbWFnZUNlbGw8L3N0cmluZz4K
KwkJCTxzdHJpbmc+TlNJbWFnZVZpZXc8L3N0cmluZz4KKwkJCTxzdHJpbmc+TlNCdXR0b248L3N0
cmluZz4KKwkJCTxzdHJpbmc+TlNDdXN0b21PYmplY3Q8L3N0cmluZz4KIAkJPC9vYmplY3Q+CiAJ
CTxvYmplY3QgY2xhc3M9Ik5TQXJyYXkiIGtleT0iSUJEb2N1bWVudC5QbHVnaW5EZXBlbmRlbmNp
ZXMiPgogCQkJPGJvb2wga2V5PSJFbmNvZGVkV2l0aFhNTENvZGVyIj5ZRVM8L2Jvb2w+CkBAIC0z
OSwxMSArNDcsMTEgQEAKIAkJCQk8c3RyaW5nIGtleT0iTlNXaW5kb3dSZWN0Ij57ezkzLCA5N30s
IHs0MjQsIDI1NH19PC9zdHJpbmc+CiAJCQkJPGludCBrZXk9Ik5TV1RGbGFncyI+MTg4NjkxMjUx
MjwvaW50PgogCQkJCTxzdHJpbmcga2V5PSJOU1dpbmRvd1RpdGxlIj5Mb2cgSW48L3N0cmluZz4K
LQkJCQk8c3RyaW5nIGtleT0iTlNXaW5kb3dDbGFzcyI+Tm9uQmxvY2tpbmdQYW5lbDwvc3RyaW5n
PgorCQkJCTxzdHJpbmcga2V5PSJOU1dpbmRvd0NsYXNzIj5XZWJOb25CbG9ja2luZ1BhbmVsPC9z
dHJpbmc+CiAJCQkJPG9iamVjdCBjbGFzcz0iTlNNdXRhYmxlU3RyaW5nIiBrZXk9Ik5TVmlld0Ns
YXNzIj4KIAkJCQkJPGNoYXJhY3RlcnMga2V5PSJOUy5ieXRlcyI+VmlldzwvY2hhcmFjdGVycz4K
IAkJCQk8L29iamVjdD4KLQkJCQk8c3RyaW5nIGtleT0iTlNXaW5kb3dDb250ZW50TWF4U2l6ZSI+
ezEuNzk3NjllKzMwOCwgMS43OTc2OWUrMzA4fTwvc3RyaW5nPgorCQkJCTxuaWwga2V5PSJOU1Vz
ZXJJbnRlcmZhY2VJdGVtSWRlbnRpZmllciIvPgogCQkJCTxvYmplY3QgY2xhc3M9Ik5TVmlldyIg
a2V5PSJOU1dpbmRvd1ZpZXciIGlkPSIzMjcyMzUwNTIiPgogCQkJCQk8cmVmZXJlbmNlIGtleT0i
TlNOZXh0UmVzcG9uZGVyIi8+CiAJCQkJCTxpbnQga2V5PSJOU3ZGbGFncyI+MjU2PC9pbnQ+CkBA
IC01NCw2ICs2Miw4IEBACiAJCQkJCQkJPGludCBrZXk9Ik5TdkZsYWdzIj4yNjY8L2ludD4KIAkJ
CQkJCQk8c3RyaW5nIGtleT0iTlNGcmFtZSI+e3sxMDEsIDIwMH0sIHszMDYsIDM0fX08L3N0cmlu
Zz4KIAkJCQkJCQk8cmVmZXJlbmNlIGtleT0iTlNTdXBlcnZpZXciIHJlZj0iMzI3MjM1MDUyIi8+
CisJCQkJCQkJPHJlZmVyZW5jZSBrZXk9Ik5TV2luZG93Ii8+CisJCQkJCQkJPHJlZmVyZW5jZSBr
ZXk9Ik5TTmV4dEtleVZpZXciIHJlZj0iMTAwMDI4MDU1NyIvPgogCQkJCQkJCTxpbnQga2V5PSJO
U1RhZyI+MTwvaW50PgogCQkJCQkJCTxib29sIGtleT0iTlNFbmFibGVkIj5ZRVM8L2Jvb2w+CiAJ
CQkJCQkJPG9iamVjdCBjbGFzcz0iTlNUZXh0RmllbGRDZWxsIiBrZXk9Ik5TQ2VsbCIgaWQ9IjI0
MDAwNDc3MyI+CkBAIC05Miw2ICsxMDIsOCBAQAogCQkJCQkJCTxpbnQga2V5PSJOU3ZGbGFncyI+
MjkwPC9pbnQ+CiAJCQkJCQkJPHN0cmluZyBrZXk9Ik5TRnJhbWUiPnt7MTAxLCAxNDd9LCB7MzA2
LCAyMH19PC9zdHJpbmc+CiAJCQkJCQkJPHJlZmVyZW5jZSBrZXk9Ik5TU3VwZXJ2aWV3IiByZWY9
IjMyNzIzNTA1MiIvPgorCQkJCQkJCTxyZWZlcmVuY2Uga2V5PSJOU1dpbmRvdyIvPgorCQkJCQkJ
CTxyZWZlcmVuY2Uga2V5PSJOU05leHRLZXlWaWV3IiByZWY9IjQ3NzMwMDQyMCIvPgogCQkJCQkJ
CTxpbnQga2V5PSJOU1RhZyI+MjwvaW50PgogCQkJCQkJCTxib29sIGtleT0iTlNFbmFibGVkIj5Z
RVM8L2Jvb2w+CiAJCQkJCQkJPG9iamVjdCBjbGFzcz0iTlNUZXh0RmllbGRDZWxsIiBrZXk9Ik5T
Q2VsbCIgaWQ9IjIxMzY0MTA2NSI+CkBAIC0xMTQsNiArMTI2LDggQEAKIAkJCQkJCQk8aW50IGtl
eT0iTlN2RmxhZ3MiPjI4OTwvaW50PgogCQkJCQkJCTxzdHJpbmcga2V5PSJOU0ZyYW1lIj57ezMy
NiwgMTJ9LCB7ODQsIDMyfX08L3N0cmluZz4KIAkJCQkJCQk8cmVmZXJlbmNlIGtleT0iTlNTdXBl
cnZpZXciIHJlZj0iMzI3MjM1MDUyIi8+CisJCQkJCQkJPHJlZmVyZW5jZSBrZXk9Ik5TV2luZG93
Ii8+CisJCQkJCQkJPHJlZmVyZW5jZSBrZXk9Ik5TTmV4dEtleVZpZXciLz4KIAkJCQkJCQk8Ym9v
bCBrZXk9Ik5TRW5hYmxlZCI+WUVTPC9ib29sPgogCQkJCQkJCTxvYmplY3QgY2xhc3M9Ik5TQnV0
dG9uQ2VsbCIga2V5PSJOU0NlbGwiIGlkPSI1NjgyMjQxNzkiPgogCQkJCQkJCQk8aW50IGtleT0i
TlNDZWxsRmxhZ3MiPjY3MjM5NDI0PC9pbnQ+CkBAIC0xMzksNiArMTUzLDggQEAKIAkJCQkJCQk8
aW50IGtleT0iTlN2RmxhZ3MiPjI4OTwvaW50PgogCQkJCQkJCTxzdHJpbmcga2V5PSJOU0ZyYW1l
Ij57ezI0MiwgMTJ9LCB7ODQsIDMyfX08L3N0cmluZz4KIAkJCQkJCQk8cmVmZXJlbmNlIGtleT0i
TlNTdXBlcnZpZXciIHJlZj0iMzI3MjM1MDUyIi8+CisJCQkJCQkJPHJlZmVyZW5jZSBrZXk9Ik5T
V2luZG93Ii8+CisJCQkJCQkJPHJlZmVyZW5jZSBrZXk9Ik5TTmV4dEtleVZpZXciIHJlZj0iMzA1
MTc1MTc2Ii8+CiAJCQkJCQkJPGJvb2wga2V5PSJOU0VuYWJsZWQiPllFUzwvYm9vbD4KIAkJCQkJ
CQk8b2JqZWN0IGNsYXNzPSJOU0J1dHRvbkNlbGwiIGtleT0iTlNDZWxsIiBpZD0iNTU1MjUzMzQi
PgogCQkJCQkJCQk8aW50IGtleT0iTlNDZWxsRmxhZ3MiPjY3MjM5NDI0PC9pbnQ+CkBAIC0xNjAs
NiArMTc2LDggQEAKIAkJCQkJCQk8aW50IGtleT0iTlN2RmxhZ3MiPjI5MDwvaW50PgogCQkJCQkJ
CTxzdHJpbmcga2V5PSJOU0ZyYW1lIj57ezE3NCwgMTE3fSwgezIzMCwgMjJ9fTwvc3RyaW5nPgog
CQkJCQkJCTxyZWZlcmVuY2Uga2V5PSJOU1N1cGVydmlldyIgcmVmPSIzMjcyMzUwNTIiLz4KKwkJ
CQkJCQk8cmVmZXJlbmNlIGtleT0iTlNXaW5kb3ciLz4KKwkJCQkJCQk8cmVmZXJlbmNlIGtleT0i
TlNOZXh0S2V5VmlldyIgcmVmPSI4MzMxMTU3MjgiLz4KIAkJCQkJCQk8aW50IGtleT0iTlNUYWci
PjM8L2ludD4KIAkJCQkJCQk8Ym9vbCBrZXk9Ik5TRW5hYmxlZCI+WUVTPC9ib29sPgogCQkJCQkJ
CTxvYmplY3QgY2xhc3M9Ik5TVGV4dEZpZWxkQ2VsbCIga2V5PSJOU0NlbGwiIGlkPSI0Mzk2NDY0
NTMiPgpAQCAtMTkyLDYgKzIxMCw4IEBACiAJCQkJCQkJPGludCBrZXk9Ik5TdkZsYWdzIj4yOTA8
L2ludD4KIAkJCQkJCQk8c3RyaW5nIGtleT0iTlNGcmFtZSI+e3sxNzQsIDg3fSwgezIzMCwgMjJ9
fTwvc3RyaW5nPgogCQkJCQkJCTxyZWZlcmVuY2Uga2V5PSJOU1N1cGVydmlldyIgcmVmPSIzMjcy
MzUwNTIiLz4KKwkJCQkJCQk8cmVmZXJlbmNlIGtleT0iTlNXaW5kb3ciLz4KKwkJCQkJCQk8cmVm
ZXJlbmNlIGtleT0iTlNOZXh0S2V5VmlldyIgcmVmPSI2NTc4NTQxNTEiLz4KIAkJCQkJCQk8aW50
IGtleT0iTlNUYWciPjQ8L2ludD4KIAkJCQkJCQk8Ym9vbCBrZXk9Ik5TRW5hYmxlZCI+WUVTPC9i
b29sPgogCQkJCQkJCTxvYmplY3QgY2xhc3M9Ik5TVGV4dEZpZWxkQ2VsbCIga2V5PSJOU0NlbGwi
IGlkPSI3NDM5MTMxMTgiPgpAQCAtMjExLDYgKzIzMSw4IEBACiAJCQkJCQkJPGludCBrZXk9Ik5T
dkZsYWdzIj4yOTI8L2ludD4KIAkJCQkJCQk8c3RyaW5nIGtleT0iTlNGcmFtZSI+e3sxMDEsIDEx
OX0sIHs2OCwgMTd9fTwvc3RyaW5nPgogCQkJCQkJCTxyZWZlcmVuY2Uga2V5PSJOU1N1cGVydmll
dyIgcmVmPSIzMjcyMzUwNTIiLz4KKwkJCQkJCQk8cmVmZXJlbmNlIGtleT0iTlNXaW5kb3ciLz4K
KwkJCQkJCQk8cmVmZXJlbmNlIGtleT0iTlNOZXh0S2V5VmlldyIgcmVmPSI3MTk3MjU5NyIvPgog
CQkJCQkJCTxib29sIGtleT0iTlNFbmFibGVkIj5ZRVM8L2Jvb2w+CiAJCQkJCQkJPG9iamVjdCBj
bGFzcz0iTlNUZXh0RmllbGRDZWxsIiBrZXk9Ik5TQ2VsbCIgaWQ9IjE1OTU5NjY1NCI+CiAJCQkJ
CQkJCTxpbnQga2V5PSJOU0NlbGxGbGFncyI+NjcyMzk0MjQ8L2ludD4KQEAgLTIyNyw2ICsyNDks
OCBAQAogCQkJCQkJCTxpbnQga2V5PSJOU3ZGbGFncyI+MjkyPC9pbnQ+CiAJCQkJCQkJPHN0cmlu
ZyBrZXk9Ik5TRnJhbWUiPnt7MTAxLCA4OX0sIHs2OCwgMTd9fTwvc3RyaW5nPgogCQkJCQkJCTxy
ZWZlcmVuY2Uga2V5PSJOU1N1cGVydmlldyIgcmVmPSIzMjcyMzUwNTIiLz4KKwkJCQkJCQk8cmVm
ZXJlbmNlIGtleT0iTlNXaW5kb3ciLz4KKwkJCQkJCQk8cmVmZXJlbmNlIGtleT0iTlNOZXh0S2V5
VmlldyIgcmVmPSIzNjgyNzA2ODkiLz4KIAkJCQkJCQk8Ym9vbCBrZXk9Ik5TRW5hYmxlZCI+WUVT
PC9ib29sPgogCQkJCQkJCTxvYmplY3QgY2xhc3M9Ik5TVGV4dEZpZWxkQ2VsbCIga2V5PSJOU0Nl
bGwiIGlkPSI3NjY4Nzg1MDgiPgogCQkJCQkJCQk8aW50IGtleT0iTlNDZWxsRmxhZ3MiPjY3MjM5
NDI0PC9pbnQ+CkBAIC0yNTUsNiArMjc5LDggQEAKIAkJCQkJCQk8L29iamVjdD4KIAkJCQkJCQk8
c3RyaW5nIGtleT0iTlNGcmFtZSI+e3syMCwgMTcwfSwgezY0LCA2NH19PC9zdHJpbmc+CiAJCQkJ
CQkJPHJlZmVyZW5jZSBrZXk9Ik5TU3VwZXJ2aWV3IiByZWY9IjMyNzIzNTA1MiIvPgorCQkJCQkJ
CTxyZWZlcmVuY2Uga2V5PSJOU1dpbmRvdyIvPgorCQkJCQkJCTxyZWZlcmVuY2Uga2V5PSJOU05l
eHRLZXlWaWV3IiByZWY9IjcwNTMzMzYxMCIvPgogCQkJCQkJCTxib29sIGtleT0iTlNFbmFibGVk
Ij5ZRVM8L2Jvb2w+CiAJCQkJCQkJPG9iamVjdCBjbGFzcz0iTlNJbWFnZUNlbGwiIGtleT0iTlND
ZWxsIiBpZD0iMzc1NTAyOTA1Ij4KIAkJCQkJCQkJPGludCBrZXk9Ik5TQ2VsbEZsYWdzIj4xMzA1
NjA8L2ludD4KQEAgLTI3MSw2ICsyOTcsOCBAQAogCQkJCQkJCTxpbnQga2V5PSJOU3ZGbGFncyI+
MjkyPC9pbnQ+CiAJCQkJCQkJPHN0cmluZyBrZXk9Ik5TRnJhbWUiPnt7MTAyLCA1OH0sIHsyODAs
IDE4fX08L3N0cmluZz4KIAkJCQkJCQk8cmVmZXJlbmNlIGtleT0iTlNTdXBlcnZpZXciIHJlZj0i
MzI3MjM1MDUyIi8+CisJCQkJCQkJPHJlZmVyZW5jZSBrZXk9Ik5TV2luZG93Ii8+CisJCQkJCQkJ
PHJlZmVyZW5jZSBrZXk9Ik5TTmV4dEtleVZpZXciIHJlZj0iNDk0MTkzMjM3Ii8+CiAJCQkJCQkJ
PGJvb2wga2V5PSJOU0VuYWJsZWQiPllFUzwvYm9vbD4KIAkJCQkJCQk8b2JqZWN0IGNsYXNzPSJO
U0J1dHRvbkNlbGwiIGtleT0iTlNDZWxsIiBpZD0iMzU4NjE0MDAxIj4KIAkJCQkJCQkJPGludCBr
ZXk9Ik5TQ2VsbEZsYWdzIj42NzIzOTQyNDwvaW50PgpAQCAtMjk0LDYgKzMyMiw4IEBACiAJCQkJ
CQkJPGludCBrZXk9Ik5TdkZsYWdzIj4yOTA8L2ludD4KIAkJCQkJCQk8c3RyaW5nIGtleT0iTlNG
cmFtZSI+e3sxMTMsIDE3NX0sIHsyODIsIDE3fX08L3N0cmluZz4KIAkJCQkJCQk8cmVmZXJlbmNl
IGtleT0iTlNTdXBlcnZpZXciIHJlZj0iMzI3MjM1MDUyIi8+CisJCQkJCQkJPHJlZmVyZW5jZSBr
ZXk9Ik5TV2luZG93Ii8+CisJCQkJCQkJPHJlZmVyZW5jZSBrZXk9Ik5TTmV4dEtleVZpZXciIHJl
Zj0iMTk5MDE4MzQ3Ii8+CiAJCQkJCQkJPGludCBrZXk9Ik5TVGFnIj4zPC9pbnQ+CiAJCQkJCQkJ
PGJvb2wga2V5PSJOU0VuYWJsZWQiPllFUzwvYm9vbD4KIAkJCQkJCQk8b2JqZWN0IGNsYXNzPSJO
U1RleHRGaWVsZENlbGwiIGtleT0iTlNDZWxsIiBpZD0iOTY3MjU4NDMiPgpAQCAtMzE0LDEwICsz
NDQsMTMgQEAKIAkJCQkJPC9vYmplY3Q+CiAJCQkJCTxzdHJpbmcga2V5PSJOU0ZyYW1lU2l6ZSI+
ezQyNCwgMjU0fTwvc3RyaW5nPgogCQkJCQk8cmVmZXJlbmNlIGtleT0iTlNTdXBlcnZpZXciLz4K
KwkJCQkJPHJlZmVyZW5jZSBrZXk9Ik5TV2luZG93Ii8+CisJCQkJCTxyZWZlcmVuY2Uga2V5PSJO
U05leHRLZXlWaWV3IiByZWY9IjI4NTE3MzA0MCIvPgogCQkJCTwvb2JqZWN0PgotCQkJCTxzdHJp
bmcga2V5PSJOU1NjcmVlblJlY3QiPnt7MCwgMH0sIHsyNTYwLCAxNTc4fX08L3N0cmluZz4KLQkJ
CQk8c3RyaW5nIGtleT0iTlNNYXhTaXplIj57MS43OTc2OWUrMzA4LCAxLjc5NzY5ZSszMDh9PC9z
dHJpbmc+CisJCQkJPHN0cmluZyBrZXk9Ik5TU2NyZWVuUmVjdCI+e3swLCAwfSwgezI1NjAsIDE0
MTh9fTwvc3RyaW5nPgorCQkJCTxzdHJpbmcga2V5PSJOU01heFNpemUiPnsxMDAwMDAwMDAwMDAw
MCwgMTAwMDAwMDAwMDAwMDB9PC9zdHJpbmc+CiAJCQkJPHN0cmluZyBrZXk9Ik5TRnJhbWVBdXRv
c2F2ZU5hbWUiPkF1dGhlbnRpY2F0aW9uIFBhbmVsPC9zdHJpbmc+CisJCQkJPGJvb2wga2V5PSJO
U1dpbmRvd0lzUmVzdG9yYWJsZSI+WUVTPC9ib29sPgogCQkJPC9vYmplY3Q+CiAJCTwvb2JqZWN0
PgogCQk8b2JqZWN0IGNsYXNzPSJJQk9iamVjdENvbnRhaW5lciIga2V5PSJJQkRvY3VtZW50Lk9i
amVjdHMiPgpAQCAtMzI1LDE0ICszNTgsNiBAQAogCQkJCTxib29sIGtleT0iRW5jb2RlZFdpdGhY
TUxDb2RlciI+WUVTPC9ib29sPgogCQkJCTxvYmplY3QgY2xhc3M9IklCQ29ubmVjdGlvblJlY29y
ZCI+CiAJCQkJCTxvYmplY3QgY2xhc3M9IklCT3V0bGV0Q29ubmVjdGlvbiIga2V5PSJjb25uZWN0
aW9uIj4KLQkJCQkJCTxzdHJpbmcga2V5PSJsYWJlbCI+aW5pdGlhbEZpcnN0UmVzcG9uZGVyPC9z
dHJpbmc+Ci0JCQkJCQk8cmVmZXJlbmNlIGtleT0ic291cmNlIiByZWY9IjExODUxMjU3OSIvPgot
CQkJCQkJPHJlZmVyZW5jZSBrZXk9ImRlc3RpbmF0aW9uIiByZWY9IjcxOTcyNTk3Ii8+Ci0JCQkJ
CTwvb2JqZWN0PgotCQkJCQk8aW50IGtleT0iY29ubmVjdGlvbklEIj4yNjwvaW50PgotCQkJCTwv
b2JqZWN0PgotCQkJCTxvYmplY3QgY2xhc3M9IklCQ29ubmVjdGlvblJlY29yZCI+Ci0JCQkJCTxv
YmplY3QgY2xhc3M9IklCT3V0bGV0Q29ubmVjdGlvbiIga2V5PSJjb25uZWN0aW9uIj4KIAkJCQkJ
CTxzdHJpbmcga2V5PSJsYWJlbCI+cGFuZWw8L3N0cmluZz4KIAkJCQkJCTxyZWZlcmVuY2Uga2V5
PSJzb3VyY2UiIHJlZj0iMjM4NjYyNjYxIi8+CiAJCQkJCQk8cmVmZXJlbmNlIGtleT0iZGVzdGlu
YXRpb24iIHJlZj0iMTE4NTEyNTc5Ii8+CkBAIC00MTMsNiArNDM4LDE0IEBACiAJCQkJPC9vYmpl
Y3Q+CiAJCQkJPG9iamVjdCBjbGFzcz0iSUJDb25uZWN0aW9uUmVjb3JkIj4KIAkJCQkJPG9iamVj
dCBjbGFzcz0iSUJPdXRsZXRDb25uZWN0aW9uIiBrZXk9ImNvbm5lY3Rpb24iPgorCQkJCQkJPHN0
cmluZyBrZXk9ImxhYmVsIj5pbml0aWFsRmlyc3RSZXNwb25kZXI8L3N0cmluZz4KKwkJCQkJCTxy
ZWZlcmVuY2Uga2V5PSJzb3VyY2UiIHJlZj0iMTE4NTEyNTc5Ii8+CisJCQkJCQk8cmVmZXJlbmNl
IGtleT0iZGVzdGluYXRpb24iIHJlZj0iNzE5NzI1OTciLz4KKwkJCQkJPC9vYmplY3Q+CisJCQkJ
CTxpbnQga2V5PSJjb25uZWN0aW9uSUQiPjI2PC9pbnQ+CisJCQkJPC9vYmplY3Q+CisJCQkJPG9i
amVjdCBjbGFzcz0iSUJDb25uZWN0aW9uUmVjb3JkIj4KKwkJCQkJPG9iamVjdCBjbGFzcz0iSUJP
dXRsZXRDb25uZWN0aW9uIiBrZXk9ImNvbm5lY3Rpb24iPgogCQkJCQkJPHN0cmluZyBrZXk9Imxh
YmVsIj5uZXh0S2V5Vmlldzwvc3RyaW5nPgogCQkJCQkJPHJlZmVyZW5jZSBrZXk9InNvdXJjZSIg
cmVmPSI3MDUzMzM2MTAiLz4KIAkJCQkJCTxyZWZlcmVuY2Uga2V5PSJkZXN0aW5hdGlvbiIgcmVm
PSIxMDAwMjgwNTU3Ii8+CkBAIC00MjIsMjYgKzQ1NSwyNiBAQAogCQkJCTxvYmplY3QgY2xhc3M9
IklCQ29ubmVjdGlvblJlY29yZCI+CiAJCQkJCTxvYmplY3QgY2xhc3M9IklCT3V0bGV0Q29ubmVj
dGlvbiIga2V5PSJjb25uZWN0aW9uIj4KIAkJCQkJCTxzdHJpbmcga2V5PSJsYWJlbCI+bmV4dEtl
eVZpZXc8L3N0cmluZz4KLQkJCQkJCTxyZWZlcmVuY2Uga2V5PSJzb3VyY2UiIHJlZj0iMTAwMDI4
MDU1NyIvPgotCQkJCQkJPHJlZmVyZW5jZSBrZXk9ImRlc3RpbmF0aW9uIiByZWY9IjE5OTAxODM0
NyIvPgorCQkJCQkJPHJlZmVyZW5jZSBrZXk9InNvdXJjZSIgcmVmPSIxOTkwMTgzNDciLz4KKwkJ
CQkJCTxyZWZlcmVuY2Uga2V5PSJkZXN0aW5hdGlvbiIgcmVmPSI0NzczMDA0MjAiLz4KIAkJCQkJ
PC9vYmplY3Q+Ci0JCQkJCTxpbnQga2V5PSJjb25uZWN0aW9uSUQiPjEwMDA1OTwvaW50PgorCQkJ
CQk8aW50IGtleT0iY29ubmVjdGlvbklEIj4xMDAwNjA8L2ludD4KIAkJCQk8L29iamVjdD4KIAkJ
CQk8b2JqZWN0IGNsYXNzPSJJQkNvbm5lY3Rpb25SZWNvcmQiPgogCQkJCQk8b2JqZWN0IGNsYXNz
PSJJQk91dGxldENvbm5lY3Rpb24iIGtleT0iY29ubmVjdGlvbiI+CiAJCQkJCQk8c3RyaW5nIGtl
eT0ibGFiZWwiPm5leHRLZXlWaWV3PC9zdHJpbmc+Ci0JCQkJCQk8cmVmZXJlbmNlIGtleT0ic291
cmNlIiByZWY9IjE5OTAxODM0NyIvPgotCQkJCQkJPHJlZmVyZW5jZSBrZXk9ImRlc3RpbmF0aW9u
IiByZWY9IjQ3NzMwMDQyMCIvPgorCQkJCQkJPHJlZmVyZW5jZSBrZXk9InNvdXJjZSIgcmVmPSIz
MDUxNzUxNzYiLz4KKwkJCQkJCTxyZWZlcmVuY2Uga2V5PSJkZXN0aW5hdGlvbiIgcmVmPSI3MDUz
MzM2MTAiLz4KIAkJCQkJPC9vYmplY3Q+Ci0JCQkJCTxpbnQga2V5PSJjb25uZWN0aW9uSUQiPjEw
MDA2MDwvaW50PgorCQkJCQk8aW50IGtleT0iY29ubmVjdGlvbklEIj4xMDAwNjc8L2ludD4KIAkJ
CQk8L29iamVjdD4KIAkJCQk8b2JqZWN0IGNsYXNzPSJJQkNvbm5lY3Rpb25SZWNvcmQiPgogCQkJ
CQk8b2JqZWN0IGNsYXNzPSJJQk91dGxldENvbm5lY3Rpb24iIGtleT0iY29ubmVjdGlvbiI+CiAJ
CQkJCQk8c3RyaW5nIGtleT0ibGFiZWwiPm5leHRLZXlWaWV3PC9zdHJpbmc+Ci0JCQkJCQk8cmVm
ZXJlbmNlIGtleT0ic291cmNlIiByZWY9IjQ3NzMwMDQyMCIvPgotCQkJCQkJPHJlZmVyZW5jZSBr
ZXk9ImRlc3RpbmF0aW9uIiByZWY9IjcxOTcyNTk3Ii8+CisJCQkJCQk8cmVmZXJlbmNlIGtleT0i
c291cmNlIiByZWY9IjQ5NDE5MzIzNyIvPgorCQkJCQkJPHJlZmVyZW5jZSBrZXk9ImRlc3RpbmF0
aW9uIiByZWY9IjMwNTE3NTE3NiIvPgogCQkJCQk8L29iamVjdD4KLQkJCQkJPGludCBrZXk9ImNv
bm5lY3Rpb25JRCI+MTAwMDYxPC9pbnQ+CisJCQkJCTxpbnQga2V5PSJjb25uZWN0aW9uSUQiPjEw
MDA2NjwvaW50PgogCQkJCTwvb2JqZWN0PgogCQkJCTxvYmplY3QgY2xhc3M9IklCQ29ubmVjdGlv
blJlY29yZCI+CiAJCQkJCTxvYmplY3QgY2xhc3M9IklCT3V0bGV0Q29ubmVjdGlvbiIga2V5PSJj
b25uZWN0aW9uIj4KQEAgLTQ1NCw0MiArNDg3LDQyIEBACiAJCQkJPG9iamVjdCBjbGFzcz0iSUJD
b25uZWN0aW9uUmVjb3JkIj4KIAkJCQkJPG9iamVjdCBjbGFzcz0iSUJPdXRsZXRDb25uZWN0aW9u
IiBrZXk9ImNvbm5lY3Rpb24iPgogCQkJCQkJPHN0cmluZyBrZXk9ImxhYmVsIj5uZXh0S2V5Vmll
dzwvc3RyaW5nPgotCQkJCQkJPHJlZmVyZW5jZSBrZXk9InNvdXJjZSIgcmVmPSI4MzMxMTU3Mjgi
Lz4KLQkJCQkJCTxyZWZlcmVuY2Uga2V5PSJkZXN0aW5hdGlvbiIgcmVmPSIzNjgyNzA2ODkiLz4K
KwkJCQkJCTxyZWZlcmVuY2Uga2V5PSJzb3VyY2UiIHJlZj0iMzY4MjcwNjg5Ii8+CisJCQkJCQk8
cmVmZXJlbmNlIGtleT0iZGVzdGluYXRpb24iIHJlZj0iNjU3ODU0MTUxIi8+CiAJCQkJCTwvb2Jq
ZWN0PgotCQkJCQk8aW50IGtleT0iY29ubmVjdGlvbklEIj4xMDAwNjM8L2ludD4KKwkJCQkJPGlu
dCBrZXk9ImNvbm5lY3Rpb25JRCI+MTAwMDY0PC9pbnQ+CiAJCQkJPC9vYmplY3Q+CiAJCQkJPG9i
amVjdCBjbGFzcz0iSUJDb25uZWN0aW9uUmVjb3JkIj4KIAkJCQkJPG9iamVjdCBjbGFzcz0iSUJP
dXRsZXRDb25uZWN0aW9uIiBrZXk9ImNvbm5lY3Rpb24iPgogCQkJCQkJPHN0cmluZyBrZXk9Imxh
YmVsIj5uZXh0S2V5Vmlldzwvc3RyaW5nPgotCQkJCQkJPHJlZmVyZW5jZSBrZXk9InNvdXJjZSIg
cmVmPSIzNjgyNzA2ODkiLz4KLQkJCQkJCTxyZWZlcmVuY2Uga2V5PSJkZXN0aW5hdGlvbiIgcmVm
PSI2NTc4NTQxNTEiLz4KKwkJCQkJCTxyZWZlcmVuY2Uga2V5PSJzb3VyY2UiIHJlZj0iNDc3MzAw
NDIwIi8+CisJCQkJCQk8cmVmZXJlbmNlIGtleT0iZGVzdGluYXRpb24iIHJlZj0iNzE5NzI1OTci
Lz4KIAkJCQkJPC9vYmplY3Q+Ci0JCQkJCTxpbnQga2V5PSJjb25uZWN0aW9uSUQiPjEwMDA2NDwv
aW50PgorCQkJCQk8aW50IGtleT0iY29ubmVjdGlvbklEIj4xMDAwNjE8L2ludD4KIAkJCQk8L29i
amVjdD4KIAkJCQk8b2JqZWN0IGNsYXNzPSJJQkNvbm5lY3Rpb25SZWNvcmQiPgogCQkJCQk8b2Jq
ZWN0IGNsYXNzPSJJQk91dGxldENvbm5lY3Rpb24iIGtleT0iY29ubmVjdGlvbiI+CiAJCQkJCQk8
c3RyaW5nIGtleT0ibGFiZWwiPm5leHRLZXlWaWV3PC9zdHJpbmc+Ci0JCQkJCQk8cmVmZXJlbmNl
IGtleT0ic291cmNlIiByZWY9IjY1Nzg1NDE1MSIvPgotCQkJCQkJPHJlZmVyZW5jZSBrZXk9ImRl
c3RpbmF0aW9uIiByZWY9IjQ5NDE5MzIzNyIvPgorCQkJCQkJPHJlZmVyZW5jZSBrZXk9InNvdXJj
ZSIgcmVmPSI4MzMxMTU3MjgiLz4KKwkJCQkJCTxyZWZlcmVuY2Uga2V5PSJkZXN0aW5hdGlvbiIg
cmVmPSIzNjgyNzA2ODkiLz4KIAkJCQkJPC9vYmplY3Q+Ci0JCQkJCTxpbnQga2V5PSJjb25uZWN0
aW9uSUQiPjEwMDA2NTwvaW50PgorCQkJCQk8aW50IGtleT0iY29ubmVjdGlvbklEIj4xMDAwNjM8
L2ludD4KIAkJCQk8L29iamVjdD4KIAkJCQk8b2JqZWN0IGNsYXNzPSJJQkNvbm5lY3Rpb25SZWNv
cmQiPgogCQkJCQk8b2JqZWN0IGNsYXNzPSJJQk91dGxldENvbm5lY3Rpb24iIGtleT0iY29ubmVj
dGlvbiI+CiAJCQkJCQk8c3RyaW5nIGtleT0ibGFiZWwiPm5leHRLZXlWaWV3PC9zdHJpbmc+Ci0J
CQkJCQk8cmVmZXJlbmNlIGtleT0ic291cmNlIiByZWY9IjQ5NDE5MzIzNyIvPgotCQkJCQkJPHJl
ZmVyZW5jZSBrZXk9ImRlc3RpbmF0aW9uIiByZWY9IjMwNTE3NTE3NiIvPgorCQkJCQkJPHJlZmVy
ZW5jZSBrZXk9InNvdXJjZSIgcmVmPSI2NTc4NTQxNTEiLz4KKwkJCQkJCTxyZWZlcmVuY2Uga2V5
PSJkZXN0aW5hdGlvbiIgcmVmPSI0OTQxOTMyMzciLz4KIAkJCQkJPC9vYmplY3Q+Ci0JCQkJCTxp
bnQga2V5PSJjb25uZWN0aW9uSUQiPjEwMDA2NjwvaW50PgorCQkJCQk8aW50IGtleT0iY29ubmVj
dGlvbklEIj4xMDAwNjU8L2ludD4KIAkJCQk8L29iamVjdD4KIAkJCQk8b2JqZWN0IGNsYXNzPSJJ
QkNvbm5lY3Rpb25SZWNvcmQiPgogCQkJCQk8b2JqZWN0IGNsYXNzPSJJQk91dGxldENvbm5lY3Rp
b24iIGtleT0iY29ubmVjdGlvbiI+CiAJCQkJCQk8c3RyaW5nIGtleT0ibGFiZWwiPm5leHRLZXlW
aWV3PC9zdHJpbmc+Ci0JCQkJCQk8cmVmZXJlbmNlIGtleT0ic291cmNlIiByZWY9IjMwNTE3NTE3
NiIvPgotCQkJCQkJPHJlZmVyZW5jZSBrZXk9ImRlc3RpbmF0aW9uIiByZWY9IjcwNTMzMzYxMCIv
PgorCQkJCQkJPHJlZmVyZW5jZSBrZXk9InNvdXJjZSIgcmVmPSIxMDAwMjgwNTU3Ii8+CisJCQkJ
CQk8cmVmZXJlbmNlIGtleT0iZGVzdGluYXRpb24iIHJlZj0iMTk5MDE4MzQ3Ii8+CiAJCQkJCTwv
b2JqZWN0PgotCQkJCQk8aW50IGtleT0iY29ubmVjdGlvbklEIj4xMDAwNjc8L2ludD4KKwkJCQkJ
PGludCBrZXk9ImNvbm5lY3Rpb25JRCI+MTAwMDU5PC9pbnQ+CiAJCQkJPC9vYmplY3Q+CiAJCQk8
L29iamVjdD4KIAkJCTxvYmplY3QgY2xhc3M9IklCTXV0YWJsZU9yZGVyZWRTZXQiIGtleT0ib2Jq
ZWN0UmVjb3JkcyI+CkBAIC03MTAsMTAgKzc0MywxMCBAQAogCQkJCTxib29sIGtleT0iRW5jb2Rl
ZFdpdGhYTUxDb2RlciI+WUVTPC9ib29sPgogCQkJCTxvYmplY3QgY2xhc3M9Ik5TQXJyYXkiIGtl
eT0iZGljdC5zb3J0ZWRLZXlzIj4KIAkJCQkJPGJvb2wga2V5PSJFbmNvZGVkV2l0aFhNTENvZGVy
Ij5ZRVM8L2Jvb2w+CisJCQkJCTxzdHJpbmc+LTEuSUJQbHVnaW5EZXBlbmRlbmN5PC9zdHJpbmc+
CisJCQkJCTxzdHJpbmc+LTIuSUJQbHVnaW5EZXBlbmRlbmN5PC9zdHJpbmc+CiAJCQkJCTxzdHJp
bmc+LTMuSUJQbHVnaW5EZXBlbmRlbmN5PC9zdHJpbmc+Ci0JCQkJCTxzdHJpbmc+LTMuSW1wb3J0
ZWRGcm9tSUIyPC9zdHJpbmc+CiAJCQkJCTxzdHJpbmc+MTAuSUJQbHVnaW5EZXBlbmRlbmN5PC9z
dHJpbmc+Ci0JCQkJCTxzdHJpbmc+MTAuSW1wb3J0ZWRGcm9tSUIyPC9zdHJpbmc+CiAJCQkJCTxz
dHJpbmc+MTAwMDEwLklCUGx1Z2luRGVwZW5kZW5jeTwvc3RyaW5nPgogCQkJCQk8c3RyaW5nPjEw
MDAxMS5JQlBsdWdpbkRlcGVuZGVuY3k8L3N0cmluZz4KIAkJCQkJPHN0cmluZz4xMDAwMTIuSUJQ
bHVnaW5EZXBlbmRlbmN5PC9zdHJpbmc+CkBAIC03MjUsNDUgKzc1OCwyNSBAQAogCQkJCQk8c3Ry
aW5nPjEwMDAxOS5JQlBsdWdpbkRlcGVuZGVuY3k8L3N0cmluZz4KIAkJCQkJPHN0cmluZz4xMDAw
MzkuSUJQbHVnaW5EZXBlbmRlbmN5PC9zdHJpbmc+CiAJCQkJCTxzdHJpbmc+MTAwMDQ3LklCUGx1
Z2luRGVwZW5kZW5jeTwvc3RyaW5nPgotCQkJCQk8c3RyaW5nPjEwMDA0Ny5JbXBvcnRlZEZyb21J
QjI8L3N0cmluZz4KIAkJCQkJPHN0cmluZz4xMDAwNTAuSUJQbHVnaW5EZXBlbmRlbmN5PC9zdHJp
bmc+CiAJCQkJCTxzdHJpbmc+MTEuSUJQbHVnaW5EZXBlbmRlbmN5PC9zdHJpbmc+Ci0JCQkJCTxz
dHJpbmc+MTEuSW1wb3J0ZWRGcm9tSUIyPC9zdHJpbmc+CiAJCQkJCTxzdHJpbmc+MTIuSUJQbHVn
aW5EZXBlbmRlbmN5PC9zdHJpbmc+Ci0JCQkJCTxzdHJpbmc+MTIuSW1wb3J0ZWRGcm9tSUIyPC9z
dHJpbmc+CiAJCQkJCTxzdHJpbmc+MTMuSUJQbHVnaW5EZXBlbmRlbmN5PC9zdHJpbmc+Ci0JCQkJ
CTxzdHJpbmc+MTMuSW1wb3J0ZWRGcm9tSUIyPC9zdHJpbmc+CiAJCQkJCTxzdHJpbmc+MTQuSUJQ
bHVnaW5EZXBlbmRlbmN5PC9zdHJpbmc+Ci0JCQkJCTxzdHJpbmc+MTQuSW1wb3J0ZWRGcm9tSUIy
PC9zdHJpbmc+CiAJCQkJCTxzdHJpbmc+MTUuQ3VzdG9tQ2xhc3NOYW1lPC9zdHJpbmc+CiAJCQkJ
CTxzdHJpbmc+MTUuSUJQbHVnaW5EZXBlbmRlbmN5PC9zdHJpbmc+Ci0JCQkJCTxzdHJpbmc+MTUu
SW1wb3J0ZWRGcm9tSUIyPC9zdHJpbmc+CiAJCQkJCTxzdHJpbmc+MTYuSUJQbHVnaW5EZXBlbmRl
bmN5PC9zdHJpbmc+Ci0JCQkJCTxzdHJpbmc+MTYuSW1wb3J0ZWRGcm9tSUIyPC9zdHJpbmc+CiAJ
CQkJCTxzdHJpbmc+MTcuSUJQbHVnaW5EZXBlbmRlbmN5PC9zdHJpbmc+Ci0JCQkJCTxzdHJpbmc+
MTcuSW1wb3J0ZWRGcm9tSUIyPC9zdHJpbmc+CiAJCQkJCTxzdHJpbmc+MTkuSUJQbHVnaW5EZXBl
bmRlbmN5PC9zdHJpbmc+Ci0JCQkJCTxzdHJpbmc+MTkuSW1wb3J0ZWRGcm9tSUIyPC9zdHJpbmc+
CiAJCQkJCTxzdHJpbmc+MzkuSUJQbHVnaW5EZXBlbmRlbmN5PC9zdHJpbmc+Ci0JCQkJCTxzdHJp
bmc+MzkuSW1wb3J0ZWRGcm9tSUIyPC9zdHJpbmc+Ci0JCQkJCTxzdHJpbmc+NS5JQkVkaXRvcldp
bmRvd0xhc3RDb250ZW50UmVjdDwvc3RyaW5nPgogCQkJCQk8c3RyaW5nPjUuSUJQbHVnaW5EZXBl
bmRlbmN5PC9zdHJpbmc+Ci0JCQkJCTxzdHJpbmc+NS5JQlZpZXdFZGl0b3JXaW5kb3dDb250cm9s
bGVyLnNob3dpbmdMYXlvdXRSZWN0YW5nbGVzPC9zdHJpbmc+CiAJCQkJCTxzdHJpbmc+NS5JQldp
bmRvd1RlbXBsYXRlRWRpdGVkQ29udGVudFJlY3Q8L3N0cmluZz4KLQkJCQkJPHN0cmluZz41Lklt
cG9ydGVkRnJvbUlCMjwvc3RyaW5nPgotCQkJCQk8c3RyaW5nPjUud2luZG93VGVtcGxhdGUuaGFz
TWF4U2l6ZTwvc3RyaW5nPgotCQkJCQk8c3RyaW5nPjUud2luZG93VGVtcGxhdGUuaGFzTWluU2l6
ZTwvc3RyaW5nPgotCQkJCQk8c3RyaW5nPjUud2luZG93VGVtcGxhdGUubWF4U2l6ZTwvc3RyaW5n
PgotCQkJCQk8c3RyaW5nPjUud2luZG93VGVtcGxhdGUubWluU2l6ZTwvc3RyaW5nPgogCQkJCQk8
c3RyaW5nPjYuSUJQbHVnaW5EZXBlbmRlbmN5PC9zdHJpbmc+Ci0JCQkJCTxzdHJpbmc+Ni5JbXBv
cnRlZEZyb21JQjI8L3N0cmluZz4KIAkJCQk8L29iamVjdD4KIAkJCQk8b2JqZWN0IGNsYXNzPSJO
U011dGFibGVBcnJheSIga2V5PSJkaWN0LnZhbHVlcyI+CiAJCQkJCTxib29sIGtleT0iRW5jb2Rl
ZFdpdGhYTUxDb2RlciI+WUVTPC9ib29sPgogCQkJCQk8c3RyaW5nPmNvbS5hcHBsZS5JbnRlcmZh
Y2VCdWlsZGVyLkNvY29hUGx1Z2luPC9zdHJpbmc+Ci0JCQkJCTxpbnRlZ2VyIHZhbHVlPSIxIi8+
CiAJCQkJCTxzdHJpbmc+Y29tLmFwcGxlLkludGVyZmFjZUJ1aWxkZXIuQ29jb2FQbHVnaW48L3N0
cmluZz4KLQkJCQkJPGludGVnZXIgdmFsdWU9IjEiLz4KIAkJCQkJPHN0cmluZz5jb20uYXBwbGUu
SW50ZXJmYWNlQnVpbGRlci5Db2NvYVBsdWdpbjwvc3RyaW5nPgogCQkJCQk8c3RyaW5nPmNvbS5h
cHBsZS5JbnRlcmZhY2VCdWlsZGVyLkNvY29hUGx1Z2luPC9zdHJpbmc+CiAJCQkJCTxzdHJpbmc+
Y29tLmFwcGxlLkludGVyZmFjZUJ1aWxkZXIuQ29jb2FQbHVnaW48L3N0cmluZz4KQEAgLTc3NSw1
NCArNzg4LDM0IEBACiAJCQkJCTxzdHJpbmc+Y29tLmFwcGxlLkludGVyZmFjZUJ1aWxkZXIuQ29j
b2FQbHVnaW48L3N0cmluZz4KIAkJCQkJPHN0cmluZz5jb20uYXBwbGUuSW50ZXJmYWNlQnVpbGRl
ci5Db2NvYVBsdWdpbjwvc3RyaW5nPgogCQkJCQk8c3RyaW5nPmNvbS5hcHBsZS5JbnRlcmZhY2VC
dWlsZGVyLkNvY29hUGx1Z2luPC9zdHJpbmc+Ci0JCQkJCTxpbnRlZ2VyIHZhbHVlPSIxIi8+CiAJ
CQkJCTxzdHJpbmc+Y29tLmFwcGxlLkludGVyZmFjZUJ1aWxkZXIuQ29jb2FQbHVnaW48L3N0cmlu
Zz4KIAkJCQkJPHN0cmluZz5jb20uYXBwbGUuSW50ZXJmYWNlQnVpbGRlci5Db2NvYVBsdWdpbjwv
c3RyaW5nPgotCQkJCQk8aW50ZWdlciB2YWx1ZT0iMSIvPgogCQkJCQk8c3RyaW5nPmNvbS5hcHBs
ZS5JbnRlcmZhY2VCdWlsZGVyLkNvY29hUGx1Z2luPC9zdHJpbmc+Ci0JCQkJCTxpbnRlZ2VyIHZh
bHVlPSIxIi8+CiAJCQkJCTxzdHJpbmc+Y29tLmFwcGxlLkludGVyZmFjZUJ1aWxkZXIuQ29jb2FQ
bHVnaW48L3N0cmluZz4KLQkJCQkJPGludGVnZXIgdmFsdWU9IjEiLz4KIAkJCQkJPHN0cmluZz5j
b20uYXBwbGUuSW50ZXJmYWNlQnVpbGRlci5Db2NvYVBsdWdpbjwvc3RyaW5nPgotCQkJCQk8aW50
ZWdlciB2YWx1ZT0iMSIvPgorCQkJCQk8c3RyaW5nPmNvbS5hcHBsZS5JbnRlcmZhY2VCdWlsZGVy
LkNvY29hUGx1Z2luPC9zdHJpbmc+CisJCQkJCTxzdHJpbmc+Y29tLmFwcGxlLkludGVyZmFjZUJ1
aWxkZXIuQ29jb2FQbHVnaW48L3N0cmluZz4KIAkJCQkJPHN0cmluZz5OU1NlY3VyZVRleHRGaWVs
ZDwvc3RyaW5nPgogCQkJCQk8c3RyaW5nPmNvbS5hcHBsZS5JbnRlcmZhY2VCdWlsZGVyLkNvY29h
UGx1Z2luPC9zdHJpbmc+Ci0JCQkJCTxpbnRlZ2VyIHZhbHVlPSIxIi8+CiAJCQkJCTxzdHJpbmc+
Y29tLmFwcGxlLkludGVyZmFjZUJ1aWxkZXIuQ29jb2FQbHVnaW48L3N0cmluZz4KLQkJCQkJPGlu
dGVnZXIgdmFsdWU9IjEiLz4KIAkJCQkJPHN0cmluZz5jb20uYXBwbGUuSW50ZXJmYWNlQnVpbGRl
ci5Db2NvYVBsdWdpbjwvc3RyaW5nPgotCQkJCQk8aW50ZWdlciB2YWx1ZT0iMSIvPgogCQkJCQk8
c3RyaW5nPmNvbS5hcHBsZS5JbnRlcmZhY2VCdWlsZGVyLkNvY29hUGx1Z2luPC9zdHJpbmc+Ci0J
CQkJCTxpbnRlZ2VyIHZhbHVlPSIxIi8+CiAJCQkJCTxzdHJpbmc+Y29tLmFwcGxlLkludGVyZmFj
ZUJ1aWxkZXIuQ29jb2FQbHVnaW48L3N0cmluZz4KLQkJCQkJPGludGVnZXIgdmFsdWU9IjEiLz4K
LQkJCQkJPHN0cmluZz57ezI4OCwgODQzfSwgezQyNCwgMjU0fX08L3N0cmluZz4KIAkJCQkJPHN0
cmluZz5jb20uYXBwbGUuSW50ZXJmYWNlQnVpbGRlci5Db2NvYVBsdWdpbjwvc3RyaW5nPgotCQkJ
CQk8aW50ZWdlciB2YWx1ZT0iMSIvPgogCQkJCQk8c3RyaW5nPnt7Mjg4LCA4NDN9LCB7NDI0LCAy
NTR9fTwvc3RyaW5nPgotCQkJCQk8aW50ZWdlciB2YWx1ZT0iMSIvPgotCQkJCQk8aW50ZWdlciB2
YWx1ZT0iMCIvPgotCQkJCQk8aW50ZWdlciB2YWx1ZT0iMCIvPgotCQkJCQk8c3RyaW5nPns0MjQs
IDI4Mn08L3N0cmluZz4KLQkJCQkJPHN0cmluZz57NDI0LCAyODJ9PC9zdHJpbmc+CiAJCQkJCTxz
dHJpbmc+Y29tLmFwcGxlLkludGVyZmFjZUJ1aWxkZXIuQ29jb2FQbHVnaW48L3N0cmluZz4KLQkJ
CQkJPGludGVnZXIgdmFsdWU9IjEiLz4KIAkJCQk8L29iamVjdD4KIAkJCTwvb2JqZWN0PgogCQkJ
PG9iamVjdCBjbGFzcz0iTlNNdXRhYmxlRGljdGlvbmFyeSIga2V5PSJ1bmxvY2FsaXplZFByb3Bl
cnRpZXMiPgogCQkJCTxib29sIGtleT0iRW5jb2RlZFdpdGhYTUxDb2RlciI+WUVTPC9ib29sPgog
CQkJCTxyZWZlcmVuY2Uga2V5PSJkaWN0LnNvcnRlZEtleXMiIHJlZj0iNDk4NTQ0MzAwIi8+Ci0J
CQkJPG9iamVjdCBjbGFzcz0iTlNNdXRhYmxlQXJyYXkiIGtleT0iZGljdC52YWx1ZXMiPgotCQkJ
CQk8Ym9vbCBrZXk9IkVuY29kZWRXaXRoWE1MQ29kZXIiPllFUzwvYm9vbD4KLQkJCQk8L29iamVj
dD4KKwkJCQk8cmVmZXJlbmNlIGtleT0iZGljdC52YWx1ZXMiIHJlZj0iNDk4NTQ0MzAwIi8+CiAJ
CQk8L29iamVjdD4KIAkJCTxuaWwga2V5PSJhY3RpdmVMb2NhbGl6YXRpb24iLz4KIAkJCTxvYmpl
Y3QgY2xhc3M9Ik5TTXV0YWJsZURpY3Rpb25hcnkiIGtleT0ibG9jYWxpemF0aW9ucyI+CiAJCQkJ
PGJvb2wga2V5PSJFbmNvZGVkV2l0aFhNTENvZGVyIj5ZRVM8L2Jvb2w+CiAJCQkJPHJlZmVyZW5j
ZSBrZXk9ImRpY3Quc29ydGVkS2V5cyIgcmVmPSI0OTg1NDQzMDAiLz4KLQkJCQk8b2JqZWN0IGNs
YXNzPSJOU011dGFibGVBcnJheSIga2V5PSJkaWN0LnZhbHVlcyI+Ci0JCQkJCTxib29sIGtleT0i
RW5jb2RlZFdpdGhYTUxDb2RlciI+WUVTPC9ib29sPgotCQkJCTwvb2JqZWN0PgorCQkJCTxyZWZl
cmVuY2Uga2V5PSJkaWN0LnZhbHVlcyIgcmVmPSI0OTg1NDQzMDAiLz4KIAkJCTwvb2JqZWN0Pgog
CQkJPG5pbCBrZXk9InNvdXJjZUlEIi8+CiAJCQk8aW50IGtleT0ibWF4SUQiPjEwMDA2NzwvaW50
PgpAQCAtODMxLDE3NiArODI0LDYgQEAKIAkJCTxvYmplY3QgY2xhc3M9Ik5TTXV0YWJsZUFycmF5
IiBrZXk9InJlZmVyZW5jZWRQYXJ0aWFsQ2xhc3NEZXNjcmlwdGlvbnMiPgogCQkJCTxib29sIGtl
eT0iRW5jb2RlZFdpdGhYTUxDb2RlciI+WUVTPC9ib29sPgogCQkJCTxvYmplY3QgY2xhc3M9IklC
UGFydGlhbENsYXNzRGVzY3JpcHRpb24iPgotCQkJCQk8c3RyaW5nIGtleT0iY2xhc3NOYW1lIj5G
aXJzdFJlc3BvbmRlcjwvc3RyaW5nPgotCQkJCQk8c3RyaW5nIGtleT0ic3VwZXJjbGFzc05hbWUi
Pk5TT2JqZWN0PC9zdHJpbmc+Ci0JCQkJCTxvYmplY3QgY2xhc3M9IklCQ2xhc3NEZXNjcmlwdGlv
blNvdXJjZSIga2V5PSJzb3VyY2VJZGVudGlmaWVyIj4KLQkJCQkJCTxzdHJpbmcga2V5PSJtYWpv
cktleSI+SUJVc2VyU291cmNlPC9zdHJpbmc+Ci0JCQkJCQk8c3RyaW5nIGtleT0ibWlub3JLZXki
Lz4KLQkJCQkJPC9vYmplY3Q+Ci0JCQkJPC9vYmplY3Q+Ci0JCQkJPG9iamVjdCBjbGFzcz0iSUJQ
YXJ0aWFsQ2xhc3NEZXNjcmlwdGlvbiI+Ci0JCQkJCTxzdHJpbmcga2V5PSJjbGFzc05hbWUiPk5T
Q29udHJvbDwvc3RyaW5nPgotCQkJCQk8b2JqZWN0IGNsYXNzPSJJQkNsYXNzRGVzY3JpcHRpb25T
b3VyY2UiIGtleT0ic291cmNlSWRlbnRpZmllciI+Ci0JCQkJCQk8c3RyaW5nIGtleT0ibWFqb3JL
ZXkiPklCUHJvamVjdFNvdXJjZTwvc3RyaW5nPgotCQkJCQkJPHN0cmluZyBrZXk9Im1pbm9yS2V5
Ij5tYWMvTWlzYy9XZWJOU0NvbnRyb2xFeHRyYXMuaDwvc3RyaW5nPgotCQkJCQk8L29iamVjdD4K
LQkJCQk8L29iamVjdD4KLQkJCQk8b2JqZWN0IGNsYXNzPSJJQlBhcnRpYWxDbGFzc0Rlc2NyaXB0
aW9uIj4KLQkJCQkJPHN0cmluZyBrZXk9ImNsYXNzTmFtZSI+TlNDb250cm9sPC9zdHJpbmc+Ci0J
CQkJCTxzdHJpbmcga2V5PSJzdXBlcmNsYXNzTmFtZSI+TlNWaWV3PC9zdHJpbmc+Ci0JCQkJCTxv
YmplY3QgY2xhc3M9IklCQ2xhc3NEZXNjcmlwdGlvblNvdXJjZSIga2V5PSJzb3VyY2VJZGVudGlm
aWVyIj4KLQkJCQkJCTxzdHJpbmcga2V5PSJtYWpvcktleSI+SUJVc2VyU291cmNlPC9zdHJpbmc+
Ci0JCQkJCQk8c3RyaW5nIGtleT0ibWlub3JLZXkiLz4KLQkJCQkJPC9vYmplY3Q+Ci0JCQkJPC9v
YmplY3Q+Ci0JCQkJPG9iamVjdCBjbGFzcz0iSUJQYXJ0aWFsQ2xhc3NEZXNjcmlwdGlvbiI+Ci0J
CQkJCTxzdHJpbmcga2V5PSJjbGFzc05hbWUiPk5TT2JqZWN0PC9zdHJpbmc+Ci0JCQkJCTxvYmpl
Y3QgY2xhc3M9IklCQ2xhc3NEZXNjcmlwdGlvblNvdXJjZSIga2V5PSJzb3VyY2VJZGVudGlmaWVy
Ij4KLQkJCQkJCTxzdHJpbmcga2V5PSJtYWpvcktleSI+SUJQcm9qZWN0U291cmNlPC9zdHJpbmc+
Ci0JCQkJCQk8c3RyaW5nIGtleT0ibWlub3JLZXkiPm1hYy9NaXNjL1dlYkRvd25sb2FkLmg8L3N0
cmluZz4KLQkJCQkJPC9vYmplY3Q+Ci0JCQkJPC9vYmplY3Q+Ci0JCQkJPG9iamVjdCBjbGFzcz0i
SUJQYXJ0aWFsQ2xhc3NEZXNjcmlwdGlvbiI+Ci0JCQkJCTxzdHJpbmcga2V5PSJjbGFzc05hbWUi
Pk5TT2JqZWN0PC9zdHJpbmc+Ci0JCQkJCTxvYmplY3QgY2xhc3M9IklCQ2xhc3NEZXNjcmlwdGlv
blNvdXJjZSIga2V5PSJzb3VyY2VJZGVudGlmaWVyIj4KLQkJCQkJCTxzdHJpbmcga2V5PSJtYWpv
cktleSI+SUJQcm9qZWN0U291cmNlPC9zdHJpbmc+Ci0JCQkJCQk8c3RyaW5nIGtleT0ibWlub3JL
ZXkiPm1hYy9NaXNjL1dlYkljb25EYXRhYmFzZURlbGVnYXRlLmg8L3N0cmluZz4KLQkJCQkJPC9v
YmplY3Q+Ci0JCQkJPC9vYmplY3Q+Ci0JCQkJPG9iamVjdCBjbGFzcz0iSUJQYXJ0aWFsQ2xhc3NE
ZXNjcmlwdGlvbiI+Ci0JCQkJCTxzdHJpbmcga2V5PSJjbGFzc05hbWUiPk5TT2JqZWN0PC9zdHJp
bmc+Ci0JCQkJCTxvYmplY3QgY2xhc3M9IklCQ2xhc3NEZXNjcmlwdGlvblNvdXJjZSIga2V5PSJz
b3VyY2VJZGVudGlmaWVyIj4KLQkJCQkJCTxzdHJpbmcga2V5PSJtYWpvcktleSI+SUJQcm9qZWN0
U291cmNlPC9zdHJpbmc+Ci0JCQkJCQk8c3RyaW5nIGtleT0ibWlub3JLZXkiPm1hYy9NaXNjL1dl
Yk5TT2JqZWN0RXh0cmFzLmg8L3N0cmluZz4KLQkJCQkJPC9vYmplY3Q+Ci0JCQkJPC9vYmplY3Q+
Ci0JCQkJPG9iamVjdCBjbGFzcz0iSUJQYXJ0aWFsQ2xhc3NEZXNjcmlwdGlvbiI+Ci0JCQkJCTxz
dHJpbmcga2V5PSJjbGFzc05hbWUiPk5TT2JqZWN0PC9zdHJpbmc+Ci0JCQkJCTxvYmplY3QgY2xh
c3M9IklCQ2xhc3NEZXNjcmlwdGlvblNvdXJjZSIga2V5PSJzb3VyY2VJZGVudGlmaWVyIj4KLQkJ
CQkJCTxzdHJpbmcga2V5PSJtYWpvcktleSI+SUJQcm9qZWN0U291cmNlPC9zdHJpbmc+Ci0JCQkJ
CQk8c3RyaW5nIGtleT0ibWlub3JLZXkiPm1hYy9QbHVnaW5zL1dlYkphdmFQbHVnSW4uaDwvc3Ry
aW5nPgotCQkJCQk8L29iamVjdD4KLQkJCQk8L29iamVjdD4KLQkJCQk8b2JqZWN0IGNsYXNzPSJJ
QlBhcnRpYWxDbGFzc0Rlc2NyaXB0aW9uIj4KLQkJCQkJPHN0cmluZyBrZXk9ImNsYXNzTmFtZSI+
TlNPYmplY3Q8L3N0cmluZz4KLQkJCQkJPG9iamVjdCBjbGFzcz0iSUJDbGFzc0Rlc2NyaXB0aW9u
U291cmNlIiBrZXk9InNvdXJjZUlkZW50aWZpZXIiPgotCQkJCQkJPHN0cmluZyBrZXk9Im1ham9y
S2V5Ij5JQlByb2plY3RTb3VyY2U8L3N0cmluZz4KLQkJCQkJCTxzdHJpbmcga2V5PSJtaW5vcktl
eSI+bWFjL1BsdWdpbnMvV2ViUGx1Z2luLmg8L3N0cmluZz4KLQkJCQkJPC9vYmplY3Q+Ci0JCQkJ
PC9vYmplY3Q+Ci0JCQkJPG9iamVjdCBjbGFzcz0iSUJQYXJ0aWFsQ2xhc3NEZXNjcmlwdGlvbiI+
Ci0JCQkJCTxzdHJpbmcga2V5PSJjbGFzc05hbWUiPk5TT2JqZWN0PC9zdHJpbmc+Ci0JCQkJCTxv
YmplY3QgY2xhc3M9IklCQ2xhc3NEZXNjcmlwdGlvblNvdXJjZSIga2V5PSJzb3VyY2VJZGVudGlm
aWVyIj4KLQkJCQkJCTxzdHJpbmcga2V5PSJtYWpvcktleSI+SUJQcm9qZWN0U291cmNlPC9zdHJp
bmc+Ci0JCQkJCQk8c3RyaW5nIGtleT0ibWlub3JLZXkiPm1hYy9QbHVnaW5zL1dlYlBsdWdpbkNv
bnRhaW5lci5oPC9zdHJpbmc+Ci0JCQkJCTwvb2JqZWN0PgotCQkJCTwvb2JqZWN0PgotCQkJCTxv
YmplY3QgY2xhc3M9IklCUGFydGlhbENsYXNzRGVzY3JpcHRpb24iPgotCQkJCQk8c3RyaW5nIGtl
eT0iY2xhc3NOYW1lIj5OU09iamVjdDwvc3RyaW5nPgotCQkJCQk8b2JqZWN0IGNsYXNzPSJJQkNs
YXNzRGVzY3JpcHRpb25Tb3VyY2UiIGtleT0ic291cmNlSWRlbnRpZmllciI+Ci0JCQkJCQk8c3Ry
aW5nIGtleT0ibWFqb3JLZXkiPklCUHJvamVjdFNvdXJjZTwvc3RyaW5nPgotCQkJCQkJPHN0cmlu
ZyBrZXk9Im1pbm9yS2V5Ij5tYWMvUGx1Z2lucy9XZWJQbHVnaW5Db250YWluZXJQcml2YXRlLmg8
L3N0cmluZz4KLQkJCQkJPC9vYmplY3Q+Ci0JCQkJPC9vYmplY3Q+Ci0JCQkJPG9iamVjdCBjbGFz
cz0iSUJQYXJ0aWFsQ2xhc3NEZXNjcmlwdGlvbiI+Ci0JCQkJCTxzdHJpbmcga2V5PSJjbGFzc05h
bWUiPk5TT2JqZWN0PC9zdHJpbmc+Ci0JCQkJCTxvYmplY3QgY2xhc3M9IklCQ2xhc3NEZXNjcmlw
dGlvblNvdXJjZSIga2V5PSJzb3VyY2VJZGVudGlmaWVyIj4KLQkJCQkJCTxzdHJpbmcga2V5PSJt
YWpvcktleSI+SUJQcm9qZWN0U291cmNlPC9zdHJpbmc+Ci0JCQkJCQk8c3RyaW5nIGtleT0ibWlu
b3JLZXkiPm1hYy9QbHVnaW5zL1dlYlBsdWdpbkRhdGFiYXNlLmg8L3N0cmluZz4KLQkJCQkJPC9v
YmplY3Q+Ci0JCQkJPC9vYmplY3Q+Ci0JCQkJPG9iamVjdCBjbGFzcz0iSUJQYXJ0aWFsQ2xhc3NE
ZXNjcmlwdGlvbiI+Ci0JCQkJCTxzdHJpbmcga2V5PSJjbGFzc05hbWUiPk5TT2JqZWN0PC9zdHJp
bmc+Ci0JCQkJCTxvYmplY3QgY2xhc3M9IklCQ2xhc3NEZXNjcmlwdGlvblNvdXJjZSIga2V5PSJz
b3VyY2VJZGVudGlmaWVyIj4KLQkJCQkJCTxzdHJpbmcga2V5PSJtYWpvcktleSI+SUJQcm9qZWN0
U291cmNlPC9zdHJpbmc+Ci0JCQkJCQk8c3RyaW5nIGtleT0ibWlub3JLZXkiPm1hYy9QbHVnaW5z
L1dlYlBsdWdpblByaXZhdGUuaDwvc3RyaW5nPgotCQkJCQk8L29iamVjdD4KLQkJCQk8L29iamVj
dD4KLQkJCQk8b2JqZWN0IGNsYXNzPSJJQlBhcnRpYWxDbGFzc0Rlc2NyaXB0aW9uIj4KLQkJCQkJ
PHN0cmluZyBrZXk9ImNsYXNzTmFtZSI+TlNPYmplY3Q8L3N0cmluZz4KLQkJCQkJPG9iamVjdCBj
bGFzcz0iSUJDbGFzc0Rlc2NyaXB0aW9uU291cmNlIiBrZXk9InNvdXJjZUlkZW50aWZpZXIiPgot
CQkJCQkJPHN0cmluZyBrZXk9Im1ham9yS2V5Ij5JQlByb2plY3RTb3VyY2U8L3N0cmluZz4KLQkJ
CQkJCTxzdHJpbmcga2V5PSJtaW5vcktleSI+bWFjL1dlYkluc3BlY3Rvci9XZWJOb2RlSGlnaGxp
Z2h0Lmg8L3N0cmluZz4KLQkJCQkJPC9vYmplY3Q+Ci0JCQkJPC9vYmplY3Q+Ci0JCQkJPG9iamVj
dCBjbGFzcz0iSUJQYXJ0aWFsQ2xhc3NEZXNjcmlwdGlvbiI+Ci0JCQkJCTxzdHJpbmcga2V5PSJj
bGFzc05hbWUiPk5TT2JqZWN0PC9zdHJpbmc+Ci0JCQkJCTxvYmplY3QgY2xhc3M9IklCQ2xhc3NE
ZXNjcmlwdGlvblNvdXJjZSIga2V5PSJzb3VyY2VJZGVudGlmaWVyIj4KLQkJCQkJCTxzdHJpbmcg
a2V5PSJtYWpvcktleSI+SUJQcm9qZWN0U291cmNlPC9zdHJpbmc+Ci0JCQkJCQk8c3RyaW5nIGtl
eT0ibWlub3JLZXkiPm1hYy9XZWJWaWV3L1dlYkVkaXRpbmdEZWxlZ2F0ZS5oPC9zdHJpbmc+Ci0J
CQkJCTwvb2JqZWN0PgotCQkJCTwvb2JqZWN0PgotCQkJCTxvYmplY3QgY2xhc3M9IklCUGFydGlh
bENsYXNzRGVzY3JpcHRpb24iPgotCQkJCQk8c3RyaW5nIGtleT0iY2xhc3NOYW1lIj5OU09iamVj
dDwvc3RyaW5nPgotCQkJCQk8b2JqZWN0IGNsYXNzPSJJQkNsYXNzRGVzY3JpcHRpb25Tb3VyY2Ui
IGtleT0ic291cmNlSWRlbnRpZmllciI+Ci0JCQkJCQk8c3RyaW5nIGtleT0ibWFqb3JLZXkiPklC
UHJvamVjdFNvdXJjZTwvc3RyaW5nPgotCQkJCQkJPHN0cmluZyBrZXk9Im1pbm9yS2V5Ij5tYWMv
V2ViVmlldy9XZWJFZGl0aW5nRGVsZWdhdGVQcml2YXRlLmg8L3N0cmluZz4KLQkJCQkJPC9vYmpl
Y3Q+Ci0JCQkJPC9vYmplY3Q+Ci0JCQkJPG9iamVjdCBjbGFzcz0iSUJQYXJ0aWFsQ2xhc3NEZXNj
cmlwdGlvbiI+Ci0JCQkJCTxzdHJpbmcga2V5PSJjbGFzc05hbWUiPk5TT2JqZWN0PC9zdHJpbmc+
Ci0JCQkJCTxvYmplY3QgY2xhc3M9IklCQ2xhc3NEZXNjcmlwdGlvblNvdXJjZSIga2V5PSJzb3Vy
Y2VJZGVudGlmaWVyIj4KLQkJCQkJCTxzdHJpbmcga2V5PSJtYWpvcktleSI+SUJQcm9qZWN0U291
cmNlPC9zdHJpbmc+Ci0JCQkJCQk8c3RyaW5nIGtleT0ibWlub3JLZXkiPm1hYy9XZWJWaWV3L1dl
YkZyYW1lSW50ZXJuYWwuaDwvc3RyaW5nPgotCQkJCQk8L29iamVjdD4KLQkJCQk8L29iamVjdD4K
LQkJCQk8b2JqZWN0IGNsYXNzPSJJQlBhcnRpYWxDbGFzc0Rlc2NyaXB0aW9uIj4KLQkJCQkJPHN0
cmluZyBrZXk9ImNsYXNzTmFtZSI+TlNPYmplY3Q8L3N0cmluZz4KLQkJCQkJPG9iamVjdCBjbGFz
cz0iSUJDbGFzc0Rlc2NyaXB0aW9uU291cmNlIiBrZXk9InNvdXJjZUlkZW50aWZpZXIiPgotCQkJ
CQkJPHN0cmluZyBrZXk9Im1ham9yS2V5Ij5JQlByb2plY3RTb3VyY2U8L3N0cmluZz4KLQkJCQkJ
CTxzdHJpbmcga2V5PSJtaW5vcktleSI+bWFjL1dlYlZpZXcvV2ViRnJhbWVMb2FkRGVsZWdhdGUu
aDwvc3RyaW5nPgotCQkJCQk8L29iamVjdD4KLQkJCQk8L29iamVjdD4KLQkJCQk8b2JqZWN0IGNs
YXNzPSJJQlBhcnRpYWxDbGFzc0Rlc2NyaXB0aW9uIj4KLQkJCQkJPHN0cmluZyBrZXk9ImNsYXNz
TmFtZSI+TlNPYmplY3Q8L3N0cmluZz4KLQkJCQkJPG9iamVjdCBjbGFzcz0iSUJDbGFzc0Rlc2Ny
aXB0aW9uU291cmNlIiBrZXk9InNvdXJjZUlkZW50aWZpZXIiPgotCQkJCQkJPHN0cmluZyBrZXk9
Im1ham9yS2V5Ij5JQlByb2plY3RTb3VyY2U8L3N0cmluZz4KLQkJCQkJCTxzdHJpbmcga2V5PSJt
aW5vcktleSI+bWFjL1dlYlZpZXcvV2ViRnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlLmg8L3N0cmlu
Zz4KLQkJCQkJPC9vYmplY3Q+Ci0JCQkJPC9vYmplY3Q+Ci0JCQkJPG9iamVjdCBjbGFzcz0iSUJQ
YXJ0aWFsQ2xhc3NEZXNjcmlwdGlvbiI+Ci0JCQkJCTxzdHJpbmcga2V5PSJjbGFzc05hbWUiPk5T
T2JqZWN0PC9zdHJpbmc+Ci0JCQkJCTxvYmplY3QgY2xhc3M9IklCQ2xhc3NEZXNjcmlwdGlvblNv
dXJjZSIga2V5PSJzb3VyY2VJZGVudGlmaWVyIj4KLQkJCQkJCTxzdHJpbmcga2V5PSJtYWpvcktl
eSI+SUJQcm9qZWN0U291cmNlPC9zdHJpbmc+Ci0JCQkJCQk8c3RyaW5nIGtleT0ibWlub3JLZXki
Pm1hYy9XZWJWaWV3L1dlYkhpc3RvcnlEZWxlZ2F0ZS5oPC9zdHJpbmc+Ci0JCQkJCTwvb2JqZWN0
PgotCQkJCTwvb2JqZWN0PgotCQkJCTxvYmplY3QgY2xhc3M9IklCUGFydGlhbENsYXNzRGVzY3Jp
cHRpb24iPgotCQkJCQk8c3RyaW5nIGtleT0iY2xhc3NOYW1lIj5OU09iamVjdDwvc3RyaW5nPgot
CQkJCQk8b2JqZWN0IGNsYXNzPSJJQkNsYXNzRGVzY3JpcHRpb25Tb3VyY2UiIGtleT0ic291cmNl
SWRlbnRpZmllciI+Ci0JCQkJCQk8c3RyaW5nIGtleT0ibWFqb3JLZXkiPklCUHJvamVjdFNvdXJj
ZTwvc3RyaW5nPgotCQkJCQkJPHN0cmluZyBrZXk9Im1pbm9yS2V5Ij5tYWMvV2ViVmlldy9XZWJQ
b2xpY3lEZWxlZ2F0ZS5oPC9zdHJpbmc+Ci0JCQkJCTwvb2JqZWN0PgotCQkJCTwvb2JqZWN0Pgot
CQkJCTxvYmplY3QgY2xhc3M9IklCUGFydGlhbENsYXNzRGVzY3JpcHRpb24iPgotCQkJCQk8c3Ry
aW5nIGtleT0iY2xhc3NOYW1lIj5OU09iamVjdDwvc3RyaW5nPgotCQkJCQk8b2JqZWN0IGNsYXNz
PSJJQkNsYXNzRGVzY3JpcHRpb25Tb3VyY2UiIGtleT0ic291cmNlSWRlbnRpZmllciI+Ci0JCQkJ
CQk8c3RyaW5nIGtleT0ibWFqb3JLZXkiPklCUHJvamVjdFNvdXJjZTwvc3RyaW5nPgotCQkJCQkJ
PHN0cmluZyBrZXk9Im1pbm9yS2V5Ij5tYWMvV2ViVmlldy9XZWJQb2xpY3lEZWxlZ2F0ZVByaXZh
dGUuaDwvc3RyaW5nPgotCQkJCQk8L29iamVjdD4KLQkJCQk8L29iamVjdD4KLQkJCQk8b2JqZWN0
IGNsYXNzPSJJQlBhcnRpYWxDbGFzc0Rlc2NyaXB0aW9uIj4KLQkJCQkJPHN0cmluZyBrZXk9ImNs
YXNzTmFtZSI+TlNPYmplY3Q8L3N0cmluZz4KLQkJCQkJPG9iamVjdCBjbGFzcz0iSUJDbGFzc0Rl
c2NyaXB0aW9uU291cmNlIiBrZXk9InNvdXJjZUlkZW50aWZpZXIiPgotCQkJCQkJPHN0cmluZyBr
ZXk9Im1ham9yS2V5Ij5JQlByb2plY3RTb3VyY2U8L3N0cmluZz4KLQkJCQkJCTxzdHJpbmcga2V5
PSJtaW5vcktleSI+bWFjL1dlYlZpZXcvV2ViUmVzb3VyY2VMb2FkRGVsZWdhdGUuaDwvc3RyaW5n
PgotCQkJCQk8L29iamVjdD4KLQkJCQk8L29iamVjdD4KLQkJCQk8b2JqZWN0IGNsYXNzPSJJQlBh
cnRpYWxDbGFzc0Rlc2NyaXB0aW9uIj4KLQkJCQkJPHN0cmluZyBrZXk9ImNsYXNzTmFtZSI+TlNP
YmplY3Q8L3N0cmluZz4KLQkJCQkJPG9iamVjdCBjbGFzcz0iSUJDbGFzc0Rlc2NyaXB0aW9uU291
cmNlIiBrZXk9InNvdXJjZUlkZW50aWZpZXIiPgotCQkJCQkJPHN0cmluZyBrZXk9Im1ham9yS2V5
Ij5JQlByb2plY3RTb3VyY2U8L3N0cmluZz4KLQkJCQkJCTxzdHJpbmcga2V5PSJtaW5vcktleSI+
bWFjL1dlYlZpZXcvV2ViUmVzb3VyY2VMb2FkRGVsZWdhdGVQcml2YXRlLmg8L3N0cmluZz4KLQkJ
CQkJPC9vYmplY3Q+Ci0JCQkJPC9vYmplY3Q+Ci0JCQkJPG9iamVjdCBjbGFzcz0iSUJQYXJ0aWFs
Q2xhc3NEZXNjcmlwdGlvbiI+Ci0JCQkJCTxzdHJpbmcga2V5PSJjbGFzc05hbWUiPk5TT2JqZWN0
PC9zdHJpbmc+Ci0JCQkJCTxvYmplY3QgY2xhc3M9IklCQ2xhc3NEZXNjcmlwdGlvblNvdXJjZSIg
a2V5PSJzb3VyY2VJZGVudGlmaWVyIj4KLQkJCQkJCTxzdHJpbmcga2V5PSJtYWpvcktleSI+SUJQ
cm9qZWN0U291cmNlPC9zdHJpbmc+Ci0JCQkJCQk8c3RyaW5nIGtleT0ibWlub3JLZXkiPm1hYy9X
ZWJWaWV3L1dlYlNjcmlwdERlYnVnRGVsZWdhdGUuaDwvc3RyaW5nPgotCQkJCQk8L29iamVjdD4K
LQkJCQk8L29iamVjdD4KLQkJCQk8b2JqZWN0IGNsYXNzPSJJQlBhcnRpYWxDbGFzc0Rlc2NyaXB0
aW9uIj4KIAkJCQkJPHN0cmluZyBrZXk9ImNsYXNzTmFtZSI+TlNPYmplY3Q8L3N0cmluZz4KIAkJ
CQkJPG9iamVjdCBjbGFzcz0iTlNNdXRhYmxlRGljdGlvbmFyeSIga2V5PSJhY3Rpb25zIj4KIAkJ
CQkJCTxib29sIGtleT0iRW5jb2RlZFdpdGhYTUxDb2RlciI+WUVTPC9ib29sPgpAQCAtMTA1Nyw4
MSArODgwLDcgQEAKIAkJCQkJPC9vYmplY3Q+CiAJCQkJCTxvYmplY3QgY2xhc3M9IklCQ2xhc3NE
ZXNjcmlwdGlvblNvdXJjZSIga2V5PSJzb3VyY2VJZGVudGlmaWVyIj4KIAkJCQkJCTxzdHJpbmcg
a2V5PSJtYWpvcktleSI+SUJQcm9qZWN0U291cmNlPC9zdHJpbmc+Ci0JCQkJCQk8c3RyaW5nIGtl
eT0ibWlub3JLZXkiPm1hYy9XZWJWaWV3L1dlYlVJRGVsZWdhdGUuaDwvc3RyaW5nPgotCQkJCQk8
L29iamVjdD4KLQkJCQk8L29iamVjdD4KLQkJCQk8b2JqZWN0IGNsYXNzPSJJQlBhcnRpYWxDbGFz
c0Rlc2NyaXB0aW9uIj4KLQkJCQkJPHN0cmluZyBrZXk9ImNsYXNzTmFtZSI+TlNPYmplY3Q8L3N0
cmluZz4KLQkJCQkJPG9iamVjdCBjbGFzcz0iSUJDbGFzc0Rlc2NyaXB0aW9uU291cmNlIiBrZXk9
InNvdXJjZUlkZW50aWZpZXIiPgotCQkJCQkJPHN0cmluZyBrZXk9Im1ham9yS2V5Ij5JQlByb2pl
Y3RTb3VyY2U8L3N0cmluZz4KLQkJCQkJCTxzdHJpbmcga2V5PSJtaW5vcktleSI+bWFjL1dlYlZp
ZXcvV2ViVUlEZWxlZ2F0ZVByaXZhdGUuaDwvc3RyaW5nPgotCQkJCQk8L29iamVjdD4KLQkJCQk8
L29iamVjdD4KLQkJCQk8b2JqZWN0IGNsYXNzPSJJQlBhcnRpYWxDbGFzc0Rlc2NyaXB0aW9uIj4K
LQkJCQkJPHN0cmluZyBrZXk9ImNsYXNzTmFtZSI+TlNPYmplY3Q8L3N0cmluZz4KLQkJCQkJPG9i
amVjdCBjbGFzcz0iSUJDbGFzc0Rlc2NyaXB0aW9uU291cmNlIiBrZXk9InNvdXJjZUlkZW50aWZp
ZXIiIGlkPSIxNTM5NzIxMzIiPgotCQkJCQkJPHN0cmluZyBrZXk9Im1ham9yS2V5Ij5JQlByb2pl
Y3RTb3VyY2U8L3N0cmluZz4KLQkJCQkJCTxzdHJpbmcga2V5PSJtaW5vcktleSI+bWFjL1dlYlZp
ZXcvV2ViVmlld1ByaXZhdGUuaDwvc3RyaW5nPgotCQkJCQk8L29iamVjdD4KLQkJCQk8L29iamVj
dD4KLQkJCQk8b2JqZWN0IGNsYXNzPSJJQlBhcnRpYWxDbGFzc0Rlc2NyaXB0aW9uIj4KLQkJCQkJ
PHN0cmluZyBrZXk9ImNsYXNzTmFtZSI+TlNPYmplY3Q8L3N0cmluZz4KLQkJCQkJPG9iamVjdCBj
bGFzcz0iSUJDbGFzc0Rlc2NyaXB0aW9uU291cmNlIiBrZXk9InNvdXJjZUlkZW50aWZpZXIiPgot
CQkJCQkJPHN0cmluZyBrZXk9Im1ham9yS2V5Ij5JQlVzZXJTb3VyY2U8L3N0cmluZz4KLQkJCQkJ
CTxzdHJpbmcga2V5PSJtaW5vcktleSIvPgotCQkJCQk8L29iamVjdD4KLQkJCQk8L29iamVjdD4K
LQkJCQk8b2JqZWN0IGNsYXNzPSJJQlBhcnRpYWxDbGFzc0Rlc2NyaXB0aW9uIj4KLQkJCQkJPHN0
cmluZyBrZXk9ImNsYXNzTmFtZSI+TlNWaWV3PC9zdHJpbmc+Ci0JCQkJCTxvYmplY3QgY2xhc3M9
IklCQ2xhc3NEZXNjcmlwdGlvblNvdXJjZSIga2V5PSJzb3VyY2VJZGVudGlmaWVyIj4KLQkJCQkJ
CTxzdHJpbmcga2V5PSJtYWpvcktleSI+SUJQcm9qZWN0U291cmNlPC9zdHJpbmc+Ci0JCQkJCQk8
c3RyaW5nIGtleT0ibWlub3JLZXkiPm1hYy9NaXNjL1dlYk5TVmlld0V4dHJhcy5oPC9zdHJpbmc+
Ci0JCQkJCTwvb2JqZWN0PgotCQkJCTwvb2JqZWN0PgotCQkJCTxvYmplY3QgY2xhc3M9IklCUGFy
dGlhbENsYXNzRGVzY3JpcHRpb24iPgotCQkJCQk8c3RyaW5nIGtleT0iY2xhc3NOYW1lIj5OU1Zp
ZXc8L3N0cmluZz4KLQkJCQkJPG9iamVjdCBjbGFzcz0iSUJDbGFzc0Rlc2NyaXB0aW9uU291cmNl
IiBrZXk9InNvdXJjZUlkZW50aWZpZXIiPgotCQkJCQkJPHN0cmluZyBrZXk9Im1ham9yS2V5Ij5J
QlByb2plY3RTb3VyY2U8L3N0cmluZz4KLQkJCQkJCTxzdHJpbmcga2V5PSJtaW5vcktleSI+bWFj
L1BsdWdpbnMvV2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5oPC9zdHJpbmc+Ci0JCQkJCTwvb2Jq
ZWN0PgotCQkJCTwvb2JqZWN0PgotCQkJCTxvYmplY3QgY2xhc3M9IklCUGFydGlhbENsYXNzRGVz
Y3JpcHRpb24iPgotCQkJCQk8c3RyaW5nIGtleT0iY2xhc3NOYW1lIj5OU1ZpZXc8L3N0cmluZz4K
LQkJCQkJPHN0cmluZyBrZXk9InN1cGVyY2xhc3NOYW1lIj5OU1Jlc3BvbmRlcjwvc3RyaW5nPgot
CQkJCQk8b2JqZWN0IGNsYXNzPSJJQkNsYXNzRGVzY3JpcHRpb25Tb3VyY2UiIGtleT0ic291cmNl
SWRlbnRpZmllciI+Ci0JCQkJCQk8c3RyaW5nIGtleT0ibWFqb3JLZXkiPklCVXNlclNvdXJjZTwv
c3RyaW5nPgotCQkJCQkJPHN0cmluZyBrZXk9Im1pbm9yS2V5Ii8+Ci0JCQkJCTwvb2JqZWN0Pgot
CQkJCTwvb2JqZWN0PgotCQkJCTxvYmplY3QgY2xhc3M9IklCUGFydGlhbENsYXNzRGVzY3JpcHRp
b24iPgotCQkJCQk8c3RyaW5nIGtleT0iY2xhc3NOYW1lIj5OU1dpbmRvdzwvc3RyaW5nPgotCQkJ
CQk8b2JqZWN0IGNsYXNzPSJJQkNsYXNzRGVzY3JpcHRpb25Tb3VyY2UiIGtleT0ic291cmNlSWRl
bnRpZmllciI+Ci0JCQkJCQk8c3RyaW5nIGtleT0ibWFqb3JLZXkiPklCUHJvamVjdFNvdXJjZTwv
c3RyaW5nPgotCQkJCQkJPHN0cmluZyBrZXk9Im1pbm9yS2V5Ij5tYWMvTWlzYy9XZWJOU1dpbmRv
d0V4dHJhcy5oPC9zdHJpbmc+Ci0JCQkJCTwvb2JqZWN0PgotCQkJCTwvb2JqZWN0PgotCQkJCTxv
YmplY3QgY2xhc3M9IklCUGFydGlhbENsYXNzRGVzY3JpcHRpb24iPgotCQkJCQk8c3RyaW5nIGtl
eT0iY2xhc3NOYW1lIj5OU1dpbmRvdzwvc3RyaW5nPgotCQkJCQk8c3RyaW5nIGtleT0ic3VwZXJj
bGFzc05hbWUiPk5TUmVzcG9uZGVyPC9zdHJpbmc+Ci0JCQkJCTxvYmplY3QgY2xhc3M9IklCQ2xh
c3NEZXNjcmlwdGlvblNvdXJjZSIga2V5PSJzb3VyY2VJZGVudGlmaWVyIj4KLQkJCQkJCTxzdHJp
bmcga2V5PSJtYWpvcktleSI+SUJVc2VyU291cmNlPC9zdHJpbmc+Ci0JCQkJCQk8c3RyaW5nIGtl
eT0ibWlub3JLZXkiLz4KLQkJCQkJPC9vYmplY3Q+Ci0JCQkJPC9vYmplY3Q+Ci0JCQkJPG9iamVj
dCBjbGFzcz0iSUJQYXJ0aWFsQ2xhc3NEZXNjcmlwdGlvbiI+Ci0JCQkJCTxzdHJpbmcga2V5PSJj
bGFzc05hbWUiPk5vbkJsb2NraW5nUGFuZWw8L3N0cmluZz4KLQkJCQkJPHN0cmluZyBrZXk9InN1
cGVyY2xhc3NOYW1lIj5OU1BhbmVsPC9zdHJpbmc+Ci0JCQkJCTxvYmplY3QgY2xhc3M9IklCQ2xh
c3NEZXNjcmlwdGlvblNvdXJjZSIga2V5PSJzb3VyY2VJZGVudGlmaWVyIiBpZD0iMTA2NDcwMzQz
NiI+Ci0JCQkJCQk8c3RyaW5nIGtleT0ibWFqb3JLZXkiPklCUHJvamVjdFNvdXJjZTwvc3RyaW5n
PgotCQkJCQkJPHN0cmluZyBrZXk9Im1pbm9yS2V5Ij5tYWMvUGFuZWxzL1dlYkF1dGhlbnRpY2F0
aW9uUGFuZWwuaDwvc3RyaW5nPgotCQkJCQk8L29iamVjdD4KLQkJCQk8L29iamVjdD4KLQkJCQk8
b2JqZWN0IGNsYXNzPSJJQlBhcnRpYWxDbGFzc0Rlc2NyaXB0aW9uIj4KLQkJCQkJPHN0cmluZyBr
ZXk9ImNsYXNzTmFtZSI+Tm9uQmxvY2tpbmdQYW5lbDwvc3RyaW5nPgotCQkJCQk8c3RyaW5nIGtl
eT0ic3VwZXJjbGFzc05hbWUiPk5TUGFuZWw8L3N0cmluZz4KLQkJCQkJPG9iamVjdCBjbGFzcz0i
SUJDbGFzc0Rlc2NyaXB0aW9uU291cmNlIiBrZXk9InNvdXJjZUlkZW50aWZpZXIiPgotCQkJCQkJ
PHN0cmluZyBrZXk9Im1ham9yS2V5Ij5JQlVzZXJTb3VyY2U8L3N0cmluZz4KLQkJCQkJCTxzdHJp
bmcga2V5PSJtaW5vcktleSIvPgorCQkJCQkJPHN0cmluZyBrZXk9Im1pbm9yS2V5Ij4uL0NsYXNz
ZXMvTlNPYmplY3QuaDwvc3RyaW5nPgogCQkJCQk8L29iamVjdD4KIAkJCQk8L29iamVjdD4KIAkJ
CQk8b2JqZWN0IGNsYXNzPSJJQlBhcnRpYWxDbGFzc0Rlc2NyaXB0aW9uIj4KQEAgLTEyNTAsMTUg
Kzk5OSwyOCBAQAogCQkJCQkJCTwvb2JqZWN0PgogCQkJCQkJPC9vYmplY3Q+CiAJCQkJCTwvb2Jq
ZWN0PgotCQkJCQk8cmVmZXJlbmNlIGtleT0ic291cmNlSWRlbnRpZmllciIgcmVmPSIxMDY0NzAz
NDM2Ii8+CisJCQkJCTxvYmplY3QgY2xhc3M9IklCQ2xhc3NEZXNjcmlwdGlvblNvdXJjZSIga2V5
PSJzb3VyY2VJZGVudGlmaWVyIj4KKwkJCQkJCTxzdHJpbmcga2V5PSJtYWpvcktleSI+SUJQcm9q
ZWN0U291cmNlPC9zdHJpbmc+CisJCQkJCQk8c3RyaW5nIGtleT0ibWlub3JLZXkiPi4vQ2xhc3Nl
cy9XZWJBdXRoZW50aWNhdGlvblBhbmVsLmg8L3N0cmluZz4KKwkJCQkJPC9vYmplY3Q+CisJCQkJ
PC9vYmplY3Q+CisJCQkJPG9iamVjdCBjbGFzcz0iSUJQYXJ0aWFsQ2xhc3NEZXNjcmlwdGlvbiI+
CisJCQkJCTxzdHJpbmcga2V5PSJjbGFzc05hbWUiPldlYk5vbkJsb2NraW5nUGFuZWw8L3N0cmlu
Zz4KKwkJCQkJPHN0cmluZyBrZXk9InN1cGVyY2xhc3NOYW1lIj5OU1BhbmVsPC9zdHJpbmc+CisJ
CQkJCTxvYmplY3QgY2xhc3M9IklCQ2xhc3NEZXNjcmlwdGlvblNvdXJjZSIga2V5PSJzb3VyY2VJ
ZGVudGlmaWVyIj4KKwkJCQkJCTxzdHJpbmcga2V5PSJtYWpvcktleSI+SUJQcm9qZWN0U291cmNl
PC9zdHJpbmc+CisJCQkJCQk8c3RyaW5nIGtleT0ibWlub3JLZXkiPi4vQ2xhc3Nlcy9XZWJOb25C
bG9ja2luZ1BhbmVsLmg8L3N0cmluZz4KKwkJCQkJPC9vYmplY3Q+CiAJCQkJPC9vYmplY3Q+CiAJ
CQkJPG9iamVjdCBjbGFzcz0iSUJQYXJ0aWFsQ2xhc3NEZXNjcmlwdGlvbiI+CiAJCQkJCTxzdHJp
bmcga2V5PSJjbGFzc05hbWUiPldlYlZpZXc8L3N0cmluZz4KLQkJCQkJPHN0cmluZyBrZXk9InN1
cGVyY2xhc3NOYW1lIj5OU1ZpZXc8L3N0cmluZz4KIAkJCQkJPG9iamVjdCBjbGFzcz0iTlNNdXRh
YmxlRGljdGlvbmFyeSIga2V5PSJhY3Rpb25zIj4KIAkJCQkJCTxib29sIGtleT0iRW5jb2RlZFdp
dGhYTUxDb2RlciI+WUVTPC9ib29sPgogCQkJCQkJPG9iamVjdCBjbGFzcz0iTlNBcnJheSIga2V5
PSJkaWN0LnNvcnRlZEtleXMiPgogCQkJCQkJCTxib29sIGtleT0iRW5jb2RlZFdpdGhYTUxDb2Rl
ciI+WUVTPC9ib29sPgorCQkJCQkJCTxzdHJpbmc+X29wZW5GcmFtZUluTmV3V2luZG93RnJvbU1l
bnU6PC9zdHJpbmc+CisJCQkJCQkJPHN0cmluZz5fc2VhcmNoV2l0aEdvb2dsZUZyb21NZW51Ojwv
c3RyaW5nPgorCQkJCQkJCTxzdHJpbmc+X3NlYXJjaFdpdGhTcG90bGlnaHRGcm9tTWVudTo8L3N0
cmluZz4KIAkJCQkJCQk8c3RyaW5nPmFsaWduQ2VudGVyOjwvc3RyaW5nPgogCQkJCQkJCTxzdHJp
bmc+YWxpZ25KdXN0aWZpZWQ6PC9zdHJpbmc+CiAJCQkJCQkJPHN0cmluZz5hbGlnbkxlZnQ6PC9z
dHJpbmc+CkBAIC0xMjcyLDMzICsxMDM0LDM2IEBACiAJCQkJCQkJPHN0cmluZz5jb3B5Rm9udDo8
L3N0cmluZz4KIAkJCQkJCQk8c3RyaW5nPmN1dDo8L3N0cmluZz4KIAkJCQkJCQk8c3RyaW5nPmRl
bGV0ZTo8L3N0cmluZz4KLQkJCQkJCQk8c3RyaW5nPmdvQmFjazo8L3N0cmluZz4KLQkJCQkJCQk8
c3RyaW5nPmdvRm9yd2FyZDo8L3N0cmluZz4KLQkJCQkJCQk8c3RyaW5nPm1ha2VUZXh0TGFyZ2Vy
Ojwvc3RyaW5nPgotCQkJCQkJCTxzdHJpbmc+bWFrZVRleHRTbWFsbGVyOjwvc3RyaW5nPgotCQkJ
CQkJCTxzdHJpbmc+bWFrZVRleHRTdGFuZGFyZFNpemU6PC9zdHJpbmc+CiAJCQkJCQkJPHN0cmlu
Zz5tb3ZlVG9CZWdpbm5pbmdPZlNlbnRlbmNlOjwvc3RyaW5nPgogCQkJCQkJCTxzdHJpbmc+bW92
ZVRvQmVnaW5uaW5nT2ZTZW50ZW5jZUFuZE1vZGlmeVNlbGVjdGlvbjo8L3N0cmluZz4KIAkJCQkJ
CQk8c3RyaW5nPm1vdmVUb0VuZE9mU2VudGVuY2U6PC9zdHJpbmc+CiAJCQkJCQkJPHN0cmluZz5t
b3ZlVG9FbmRPZlNlbnRlbmNlQW5kTW9kaWZ5U2VsZWN0aW9uOjwvc3RyaW5nPgorCQkJCQkJCTxz
dHJpbmc+b3V0ZGVudDo8L3N0cmluZz4KIAkJCQkJCQk8c3RyaW5nPnBhc3RlOjwvc3RyaW5nPgog
CQkJCQkJCTxzdHJpbmc+cGFzdGVBc1BsYWluVGV4dDo8L3N0cmluZz4KIAkJCQkJCQk8c3RyaW5n
PnBhc3RlQXNSaWNoVGV4dDo8L3N0cmluZz4KIAkJCQkJCQk8c3RyaW5nPnBhc3RlRm9udDo8L3N0
cmluZz4KIAkJCQkJCQk8c3RyaW5nPnBlcmZvcm1GaW5kUGFuZWxBY3Rpb246PC9zdHJpbmc+Ci0J
CQkJCQkJPHN0cmluZz5yZWxvYWQ6PC9zdHJpbmc+CiAJCQkJCQkJPHN0cmluZz5yZWxvYWRGcm9t
T3JpZ2luOjwvc3RyaW5nPgorCQkJCQkJCTxzdHJpbmc+cmVzZXRQYWdlWm9vbTo8L3N0cmluZz4K
IAkJCQkJCQk8c3RyaW5nPnNlbGVjdFNlbnRlbmNlOjwvc3RyaW5nPgogCQkJCQkJCTxzdHJpbmc+
c2hvd0d1ZXNzUGFuZWw6PC9zdHJpbmc+CiAJCQkJCQkJPHN0cmluZz5zdGFydFNwZWFraW5nOjwv
c3RyaW5nPgotCQkJCQkJCTxzdHJpbmc+c3RvcExvYWRpbmc6PC9zdHJpbmc+CiAJCQkJCQkJPHN0
cmluZz5zdG9wU3BlYWtpbmc6PC9zdHJpbmc+Ci0JCQkJCQkJPHN0cmluZz50YWtlU3RyaW5nVVJM
RnJvbTo8L3N0cmluZz4KLQkJCQkJCQk8c3RyaW5nPnRvZ2dsZUNvbnRpbnVvdXNTcGVsbENoZWNr
aW5nOjwvc3RyaW5nPgotCQkJCQkJCTxzdHJpbmc+dG9nZ2xlU21hcnRJbnNlcnREZWxldGU6PC9z
dHJpbmc+CisJCQkJCQkJPHN0cmluZz50b2dnbGVBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uOjwv
c3RyaW5nPgorCQkJCQkJCTxzdHJpbmc+dG9nZ2xlQXV0b21hdGljTGlua0RldGVjdGlvbjo8L3N0
cmluZz4KKwkJCQkJCQk8c3RyaW5nPnRvZ2dsZUF1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uOjwv
c3RyaW5nPgorCQkJCQkJCTxzdHJpbmc+dG9nZ2xlQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9u
Ojwvc3RyaW5nPgorCQkJCQkJCTxzdHJpbmc+dG9nZ2xlQXV0b21hdGljVGV4dFJlcGxhY2VtZW50
Ojwvc3RyaW5nPgorCQkJCQkJCTxzdHJpbmc+dG9nZ2xlR3JhbW1hckNoZWNraW5nOjwvc3RyaW5n
PgorCQkJCQkJCTxzdHJpbmc+em9vbVBhZ2VJbjo8L3N0cmluZz4KKwkJCQkJCQk8c3RyaW5nPnpv
b21QYWdlT3V0Ojwvc3RyaW5nPgogCQkJCQkJPC9vYmplY3Q+CiAJCQkJCQk8b2JqZWN0IGNsYXNz
PSJOU011dGFibGVBcnJheSIga2V5PSJkaWN0LnZhbHVlcyI+CiAJCQkJCQkJPGJvb2wga2V5PSJF
bmNvZGVkV2l0aFhNTENvZGVyIj5ZRVM8L2Jvb2w+CisJCQkJCQkJPHN0cmluZz5OU01lbnVJdGVt
PC9zdHJpbmc+CisJCQkJCQkJPHN0cmluZz5pZDwvc3RyaW5nPgorCQkJCQkJCTxzdHJpbmc+aWQ8
L3N0cmluZz4KIAkJCQkJCQk8c3RyaW5nPmlkPC9zdHJpbmc+CiAJCQkJCQkJPHN0cmluZz5pZDwv
c3RyaW5nPgogCQkJCQkJCTxzdHJpbmc+aWQ8L3N0cmluZz4KQEAgLTEzNDIsNiArMTEwNyw5IEBA
CiAJCQkJCQk8Ym9vbCBrZXk9IkVuY29kZWRXaXRoWE1MQ29kZXIiPllFUzwvYm9vbD4KIAkJCQkJ
CTxvYmplY3QgY2xhc3M9Ik5TQXJyYXkiIGtleT0iZGljdC5zb3J0ZWRLZXlzIj4KIAkJCQkJCQk8
Ym9vbCBrZXk9IkVuY29kZWRXaXRoWE1MQ29kZXIiPllFUzwvYm9vbD4KKwkJCQkJCQk8c3RyaW5n
Pl9vcGVuRnJhbWVJbk5ld1dpbmRvd0Zyb21NZW51Ojwvc3RyaW5nPgorCQkJCQkJCTxzdHJpbmc+
X3NlYXJjaFdpdGhHb29nbGVGcm9tTWVudTo8L3N0cmluZz4KKwkJCQkJCQk8c3RyaW5nPl9zZWFy
Y2hXaXRoU3BvdGxpZ2h0RnJvbU1lbnU6PC9zdHJpbmc+CiAJCQkJCQkJPHN0cmluZz5hbGlnbkNl
bnRlcjo8L3N0cmluZz4KIAkJCQkJCQk8c3RyaW5nPmFsaWduSnVzdGlmaWVkOjwvc3RyaW5nPgog
CQkJCQkJCTxzdHJpbmc+YWxpZ25MZWZ0Ojwvc3RyaW5nPgpAQCAtMTM1NSwzNCArMTEyMyw0NiBA
QAogCQkJCQkJCTxzdHJpbmc+Y29weUZvbnQ6PC9zdHJpbmc+CiAJCQkJCQkJPHN0cmluZz5jdXQ6
PC9zdHJpbmc+CiAJCQkJCQkJPHN0cmluZz5kZWxldGU6PC9zdHJpbmc+Ci0JCQkJCQkJPHN0cmlu
Zz5nb0JhY2s6PC9zdHJpbmc+Ci0JCQkJCQkJPHN0cmluZz5nb0ZvcndhcmQ6PC9zdHJpbmc+Ci0J
CQkJCQkJPHN0cmluZz5tYWtlVGV4dExhcmdlcjo8L3N0cmluZz4KLQkJCQkJCQk8c3RyaW5nPm1h
a2VUZXh0U21hbGxlcjo8L3N0cmluZz4KLQkJCQkJCQk8c3RyaW5nPm1ha2VUZXh0U3RhbmRhcmRT
aXplOjwvc3RyaW5nPgogCQkJCQkJCTxzdHJpbmc+bW92ZVRvQmVnaW5uaW5nT2ZTZW50ZW5jZTo8
L3N0cmluZz4KIAkJCQkJCQk8c3RyaW5nPm1vdmVUb0JlZ2lubmluZ09mU2VudGVuY2VBbmRNb2Rp
ZnlTZWxlY3Rpb246PC9zdHJpbmc+CiAJCQkJCQkJPHN0cmluZz5tb3ZlVG9FbmRPZlNlbnRlbmNl
Ojwvc3RyaW5nPgogCQkJCQkJCTxzdHJpbmc+bW92ZVRvRW5kT2ZTZW50ZW5jZUFuZE1vZGlmeVNl
bGVjdGlvbjo8L3N0cmluZz4KKwkJCQkJCQk8c3RyaW5nPm91dGRlbnQ6PC9zdHJpbmc+CiAJCQkJ
CQkJPHN0cmluZz5wYXN0ZTo8L3N0cmluZz4KIAkJCQkJCQk8c3RyaW5nPnBhc3RlQXNQbGFpblRl
eHQ6PC9zdHJpbmc+CiAJCQkJCQkJPHN0cmluZz5wYXN0ZUFzUmljaFRleHQ6PC9zdHJpbmc+CiAJ
CQkJCQkJPHN0cmluZz5wYXN0ZUZvbnQ6PC9zdHJpbmc+CiAJCQkJCQkJPHN0cmluZz5wZXJmb3Jt
RmluZFBhbmVsQWN0aW9uOjwvc3RyaW5nPgotCQkJCQkJCTxzdHJpbmc+cmVsb2FkOjwvc3RyaW5n
PgogCQkJCQkJCTxzdHJpbmc+cmVsb2FkRnJvbU9yaWdpbjo8L3N0cmluZz4KKwkJCQkJCQk8c3Ry
aW5nPnJlc2V0UGFnZVpvb206PC9zdHJpbmc+CiAJCQkJCQkJPHN0cmluZz5zZWxlY3RTZW50ZW5j
ZTo8L3N0cmluZz4KIAkJCQkJCQk8c3RyaW5nPnNob3dHdWVzc1BhbmVsOjwvc3RyaW5nPgogCQkJ
CQkJCTxzdHJpbmc+c3RhcnRTcGVha2luZzo8L3N0cmluZz4KLQkJCQkJCQk8c3RyaW5nPnN0b3BM
b2FkaW5nOjwvc3RyaW5nPgogCQkJCQkJCTxzdHJpbmc+c3RvcFNwZWFraW5nOjwvc3RyaW5nPgot
CQkJCQkJCTxzdHJpbmc+dGFrZVN0cmluZ1VSTEZyb206PC9zdHJpbmc+Ci0JCQkJCQkJPHN0cmlu
Zz50b2dnbGVDb250aW51b3VzU3BlbGxDaGVja2luZzo8L3N0cmluZz4KLQkJCQkJCQk8c3RyaW5n
PnRvZ2dsZVNtYXJ0SW5zZXJ0RGVsZXRlOjwvc3RyaW5nPgorCQkJCQkJCTxzdHJpbmc+dG9nZ2xl
QXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbjo8L3N0cmluZz4KKwkJCQkJCQk8c3RyaW5nPnRvZ2ds
ZUF1dG9tYXRpY0xpbmtEZXRlY3Rpb246PC9zdHJpbmc+CisJCQkJCQkJPHN0cmluZz50b2dnbGVB
dXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbjo8L3N0cmluZz4KKwkJCQkJCQk8c3RyaW5nPnRvZ2ds
ZUF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbjo8L3N0cmluZz4KKwkJCQkJCQk8c3RyaW5nPnRv
Z2dsZUF1dG9tYXRpY1RleHRSZXBsYWNlbWVudDo8L3N0cmluZz4KKwkJCQkJCQk8c3RyaW5nPnRv
Z2dsZUdyYW1tYXJDaGVja2luZzo8L3N0cmluZz4KKwkJCQkJCQk8c3RyaW5nPnpvb21QYWdlSW46
PC9zdHJpbmc+CisJCQkJCQkJPHN0cmluZz56b29tUGFnZU91dDo8L3N0cmluZz4KIAkJCQkJCTwv
b2JqZWN0PgogCQkJCQkJPG9iamVjdCBjbGFzcz0iTlNNdXRhYmxlQXJyYXkiIGtleT0iZGljdC52
YWx1ZXMiPgogCQkJCQkJCTxib29sIGtleT0iRW5jb2RlZFdpdGhYTUxDb2RlciI+WUVTPC9ib29s
PgogCQkJCQkJCTxvYmplY3QgY2xhc3M9IklCQWN0aW9uSW5mbyI+CisJCQkJCQkJCTxzdHJpbmcg
a2V5PSJuYW1lIj5fb3BlbkZyYW1lSW5OZXdXaW5kb3dGcm9tTWVudTo8L3N0cmluZz4KKwkJCQkJ
CQkJPHN0cmluZyBrZXk9ImNhbmRpZGF0ZUNsYXNzTmFtZSI+TlNNZW51SXRlbTwvc3RyaW5nPgor
CQkJCQkJCTwvb2JqZWN0PgorCQkJCQkJCTxvYmplY3QgY2xhc3M9IklCQWN0aW9uSW5mbyI+CisJ
CQkJCQkJCTxzdHJpbmcga2V5PSJuYW1lIj5fc2VhcmNoV2l0aEdvb2dsZUZyb21NZW51Ojwvc3Ry
aW5nPgorCQkJCQkJCQk8c3RyaW5nIGtleT0iY2FuZGlkYXRlQ2xhc3NOYW1lIj5pZDwvc3RyaW5n
PgorCQkJCQkJCTwvb2JqZWN0PgorCQkJCQkJCTxvYmplY3QgY2xhc3M9IklCQWN0aW9uSW5mbyI+
CisJCQkJCQkJCTxzdHJpbmcga2V5PSJuYW1lIj5fc2VhcmNoV2l0aFNwb3RsaWdodEZyb21NZW51
Ojwvc3RyaW5nPgorCQkJCQkJCQk8c3RyaW5nIGtleT0iY2FuZGlkYXRlQ2xhc3NOYW1lIj5pZDwv
c3RyaW5nPgorCQkJCQkJCTwvb2JqZWN0PgorCQkJCQkJCTxvYmplY3QgY2xhc3M9IklCQWN0aW9u
SW5mbyI+CiAJCQkJCQkJCTxzdHJpbmcga2V5PSJuYW1lIj5hbGlnbkNlbnRlcjo8L3N0cmluZz4K
IAkJCQkJCQkJPHN0cmluZyBrZXk9ImNhbmRpZGF0ZUNsYXNzTmFtZSI+aWQ8L3N0cmluZz4KIAkJ
CQkJCQk8L29iamVjdD4KQEAgLTE0MzUsMjYgKzEyMTUsNiBAQAogCQkJCQkJCQk8c3RyaW5nIGtl
eT0iY2FuZGlkYXRlQ2xhc3NOYW1lIj5pZDwvc3RyaW5nPgogCQkJCQkJCTwvb2JqZWN0PgogCQkJ
CQkJCTxvYmplY3QgY2xhc3M9IklCQWN0aW9uSW5mbyI+Ci0JCQkJCQkJCTxzdHJpbmcga2V5PSJu
YW1lIj5nb0JhY2s6PC9zdHJpbmc+Ci0JCQkJCQkJCTxzdHJpbmcga2V5PSJjYW5kaWRhdGVDbGFz
c05hbWUiPmlkPC9zdHJpbmc+Ci0JCQkJCQkJPC9vYmplY3Q+Ci0JCQkJCQkJPG9iamVjdCBjbGFz
cz0iSUJBY3Rpb25JbmZvIj4KLQkJCQkJCQkJPHN0cmluZyBrZXk9Im5hbWUiPmdvRm9yd2FyZDo8
L3N0cmluZz4KLQkJCQkJCQkJPHN0cmluZyBrZXk9ImNhbmRpZGF0ZUNsYXNzTmFtZSI+aWQ8L3N0
cmluZz4KLQkJCQkJCQk8L29iamVjdD4KLQkJCQkJCQk8b2JqZWN0IGNsYXNzPSJJQkFjdGlvbklu
Zm8iPgotCQkJCQkJCQk8c3RyaW5nIGtleT0ibmFtZSI+bWFrZVRleHRMYXJnZXI6PC9zdHJpbmc+
Ci0JCQkJCQkJCTxzdHJpbmcga2V5PSJjYW5kaWRhdGVDbGFzc05hbWUiPmlkPC9zdHJpbmc+Ci0J
CQkJCQkJPC9vYmplY3Q+Ci0JCQkJCQkJPG9iamVjdCBjbGFzcz0iSUJBY3Rpb25JbmZvIj4KLQkJ
CQkJCQkJPHN0cmluZyBrZXk9Im5hbWUiPm1ha2VUZXh0U21hbGxlcjo8L3N0cmluZz4KLQkJCQkJ
CQkJPHN0cmluZyBrZXk9ImNhbmRpZGF0ZUNsYXNzTmFtZSI+aWQ8L3N0cmluZz4KLQkJCQkJCQk8
L29iamVjdD4KLQkJCQkJCQk8b2JqZWN0IGNsYXNzPSJJQkFjdGlvbkluZm8iPgotCQkJCQkJCQk8
c3RyaW5nIGtleT0ibmFtZSI+bWFrZVRleHRTdGFuZGFyZFNpemU6PC9zdHJpbmc+Ci0JCQkJCQkJ
CTxzdHJpbmcga2V5PSJjYW5kaWRhdGVDbGFzc05hbWUiPmlkPC9zdHJpbmc+Ci0JCQkJCQkJPC9v
YmplY3Q+Ci0JCQkJCQkJPG9iamVjdCBjbGFzcz0iSUJBY3Rpb25JbmZvIj4KIAkJCQkJCQkJPHN0
cmluZyBrZXk9Im5hbWUiPm1vdmVUb0JlZ2lubmluZ09mU2VudGVuY2U6PC9zdHJpbmc+CiAJCQkJ
CQkJCTxzdHJpbmcga2V5PSJjYW5kaWRhdGVDbGFzc05hbWUiPmlkPC9zdHJpbmc+CiAJCQkJCQkJ
PC9vYmplY3Q+CkBAIC0xNDcxLDYgKzEyMzEsMTAgQEAKIAkJCQkJCQkJPHN0cmluZyBrZXk9ImNh
bmRpZGF0ZUNsYXNzTmFtZSI+aWQ8L3N0cmluZz4KIAkJCQkJCQk8L29iamVjdD4KIAkJCQkJCQk8
b2JqZWN0IGNsYXNzPSJJQkFjdGlvbkluZm8iPgorCQkJCQkJCQk8c3RyaW5nIGtleT0ibmFtZSI+
b3V0ZGVudDo8L3N0cmluZz4KKwkJCQkJCQkJPHN0cmluZyBrZXk9ImNhbmRpZGF0ZUNsYXNzTmFt
ZSI+aWQ8L3N0cmluZz4KKwkJCQkJCQk8L29iamVjdD4KKwkJCQkJCQk8b2JqZWN0IGNsYXNzPSJJ
QkFjdGlvbkluZm8iPgogCQkJCQkJCQk8c3RyaW5nIGtleT0ibmFtZSI+cGFzdGU6PC9zdHJpbmc+
CiAJCQkJCQkJCTxzdHJpbmcga2V5PSJjYW5kaWRhdGVDbGFzc05hbWUiPmlkPC9zdHJpbmc+CiAJ
CQkJCQkJPC9vYmplY3Q+CkBAIC0xNDkxLDExICsxMjU1LDExIEBACiAJCQkJCQkJCTxzdHJpbmcg
a2V5PSJjYW5kaWRhdGVDbGFzc05hbWUiPmlkPC9zdHJpbmc+CiAJCQkJCQkJPC9vYmplY3Q+CiAJ
CQkJCQkJPG9iamVjdCBjbGFzcz0iSUJBY3Rpb25JbmZvIj4KLQkJCQkJCQkJPHN0cmluZyBrZXk9
Im5hbWUiPnJlbG9hZDo8L3N0cmluZz4KKwkJCQkJCQkJPHN0cmluZyBrZXk9Im5hbWUiPnJlbG9h
ZEZyb21PcmlnaW46PC9zdHJpbmc+CiAJCQkJCQkJCTxzdHJpbmcga2V5PSJjYW5kaWRhdGVDbGFz
c05hbWUiPmlkPC9zdHJpbmc+CiAJCQkJCQkJPC9vYmplY3Q+CiAJCQkJCQkJPG9iamVjdCBjbGFz
cz0iSUJBY3Rpb25JbmZvIj4KLQkJCQkJCQkJPHN0cmluZyBrZXk9Im5hbWUiPnJlbG9hZEZyb21P
cmlnaW46PC9zdHJpbmc+CisJCQkJCQkJCTxzdHJpbmcga2V5PSJuYW1lIj5yZXNldFBhZ2Vab29t
Ojwvc3RyaW5nPgogCQkJCQkJCQk8c3RyaW5nIGtleT0iY2FuZGlkYXRlQ2xhc3NOYW1lIj5pZDwv
c3RyaW5nPgogCQkJCQkJCTwvb2JqZWN0PgogCQkJCQkJCTxvYmplY3QgY2xhc3M9IklCQWN0aW9u
SW5mbyI+CkBAIC0xNTExLDEzNSArMTI3NSwxMCBAQAogCQkJCQkJCQk8c3RyaW5nIGtleT0iY2Fu
ZGlkYXRlQ2xhc3NOYW1lIj5pZDwvc3RyaW5nPgogCQkJCQkJCTwvb2JqZWN0PgogCQkJCQkJCTxv
YmplY3QgY2xhc3M9IklCQWN0aW9uSW5mbyI+Ci0JCQkJCQkJCTxzdHJpbmcga2V5PSJuYW1lIj5z
dG9wTG9hZGluZzo8L3N0cmluZz4KLQkJCQkJCQkJPHN0cmluZyBrZXk9ImNhbmRpZGF0ZUNsYXNz
TmFtZSI+aWQ8L3N0cmluZz4KLQkJCQkJCQk8L29iamVjdD4KLQkJCQkJCQk8b2JqZWN0IGNsYXNz
PSJJQkFjdGlvbkluZm8iPgogCQkJCQkJCQk8c3RyaW5nIGtleT0ibmFtZSI+c3RvcFNwZWFraW5n
Ojwvc3RyaW5nPgogCQkJCQkJCQk8c3RyaW5nIGtleT0iY2FuZGlkYXRlQ2xhc3NOYW1lIj5pZDwv
c3RyaW5nPgogCQkJCQkJCTwvb2JqZWN0PgogCQkJCQkJCTxvYmplY3QgY2xhc3M9IklCQWN0aW9u
SW5mbyI+Ci0JCQkJCQkJCTxzdHJpbmcga2V5PSJuYW1lIj50YWtlU3RyaW5nVVJMRnJvbTo8L3N0
cmluZz4KLQkJCQkJCQkJPHN0cmluZyBrZXk9ImNhbmRpZGF0ZUNsYXNzTmFtZSI+aWQ8L3N0cmlu
Zz4KLQkJCQkJCQk8L29iamVjdD4KLQkJCQkJCQk8b2JqZWN0IGNsYXNzPSJJQkFjdGlvbkluZm8i
PgotCQkJCQkJCQk8c3RyaW5nIGtleT0ibmFtZSI+dG9nZ2xlQ29udGludW91c1NwZWxsQ2hlY2tp
bmc6PC9zdHJpbmc+Ci0JCQkJCQkJCTxzdHJpbmcga2V5PSJjYW5kaWRhdGVDbGFzc05hbWUiPmlk
PC9zdHJpbmc+Ci0JCQkJCQkJPC9vYmplY3Q+Ci0JCQkJCQkJPG9iamVjdCBjbGFzcz0iSUJBY3Rp
b25JbmZvIj4KLQkJCQkJCQkJPHN0cmluZyBrZXk9Im5hbWUiPnRvZ2dsZVNtYXJ0SW5zZXJ0RGVs
ZXRlOjwvc3RyaW5nPgotCQkJCQkJCQk8c3RyaW5nIGtleT0iY2FuZGlkYXRlQ2xhc3NOYW1lIj5p
ZDwvc3RyaW5nPgotCQkJCQkJCTwvb2JqZWN0PgotCQkJCQkJPC9vYmplY3Q+Ci0JCQkJCTwvb2Jq
ZWN0PgotCQkJCQk8b2JqZWN0IGNsYXNzPSJJQkNsYXNzRGVzY3JpcHRpb25Tb3VyY2UiIGtleT0i
c291cmNlSWRlbnRpZmllciI+Ci0JCQkJCQk8c3RyaW5nIGtleT0ibWFqb3JLZXkiPklCUHJvamVj
dFNvdXJjZTwvc3RyaW5nPgotCQkJCQkJPHN0cmluZyBrZXk9Im1pbm9yS2V5Ij5tYWMvV2ViVmll
dy9XZWJWaWV3Lmg8L3N0cmluZz4KLQkJCQkJPC9vYmplY3Q+Ci0JCQkJPC9vYmplY3Q+Ci0JCQkJ
PG9iamVjdCBjbGFzcz0iSUJQYXJ0aWFsQ2xhc3NEZXNjcmlwdGlvbiI+Ci0JCQkJCTxzdHJpbmcg
a2V5PSJjbGFzc05hbWUiPldlYlZpZXc8L3N0cmluZz4KLQkJCQkJPG9iamVjdCBjbGFzcz0iTlNN
dXRhYmxlRGljdGlvbmFyeSIga2V5PSJhY3Rpb25zIj4KLQkJCQkJCTxib29sIGtleT0iRW5jb2Rl
ZFdpdGhYTUxDb2RlciI+WUVTPC9ib29sPgotCQkJCQkJPG9iamVjdCBjbGFzcz0iTlNBcnJheSIg
a2V5PSJkaWN0LnNvcnRlZEtleXMiPgotCQkJCQkJCTxib29sIGtleT0iRW5jb2RlZFdpdGhYTUxD
b2RlciI+WUVTPC9ib29sPgotCQkJCQkJCTxzdHJpbmc+X29wZW5GcmFtZUluTmV3V2luZG93RnJv
bU1lbnU6PC9zdHJpbmc+Ci0JCQkJCQkJPHN0cmluZz5fc2VhcmNoV2l0aEdvb2dsZUZyb21NZW51
Ojwvc3RyaW5nPgotCQkJCQkJCTxzdHJpbmc+X3NlYXJjaFdpdGhTcG90bGlnaHRGcm9tTWVudTo8
L3N0cmluZz4KLQkJCQkJCTwvb2JqZWN0PgotCQkJCQkJPG9iamVjdCBjbGFzcz0iTlNNdXRhYmxl
QXJyYXkiIGtleT0iZGljdC52YWx1ZXMiPgotCQkJCQkJCTxib29sIGtleT0iRW5jb2RlZFdpdGhY
TUxDb2RlciI+WUVTPC9ib29sPgotCQkJCQkJCTxzdHJpbmc+TlNNZW51SXRlbTwvc3RyaW5nPgot
CQkJCQkJCTxzdHJpbmc+aWQ8L3N0cmluZz4KLQkJCQkJCQk8c3RyaW5nPmlkPC9zdHJpbmc+Ci0J
CQkJCQk8L29iamVjdD4KLQkJCQkJPC9vYmplY3Q+Ci0JCQkJCTxvYmplY3QgY2xhc3M9Ik5TTXV0
YWJsZURpY3Rpb25hcnkiIGtleT0iYWN0aW9uSW5mb3NCeU5hbWUiPgotCQkJCQkJPGJvb2wga2V5
PSJFbmNvZGVkV2l0aFhNTENvZGVyIj5ZRVM8L2Jvb2w+Ci0JCQkJCQk8b2JqZWN0IGNsYXNzPSJO
U0FycmF5IiBrZXk9ImRpY3Quc29ydGVkS2V5cyI+Ci0JCQkJCQkJPGJvb2wga2V5PSJFbmNvZGVk
V2l0aFhNTENvZGVyIj5ZRVM8L2Jvb2w+Ci0JCQkJCQkJPHN0cmluZz5fb3BlbkZyYW1lSW5OZXdX
aW5kb3dGcm9tTWVudTo8L3N0cmluZz4KLQkJCQkJCQk8c3RyaW5nPl9zZWFyY2hXaXRoR29vZ2xl
RnJvbU1lbnU6PC9zdHJpbmc+Ci0JCQkJCQkJPHN0cmluZz5fc2VhcmNoV2l0aFNwb3RsaWdodEZy
b21NZW51Ojwvc3RyaW5nPgotCQkJCQkJPC9vYmplY3Q+Ci0JCQkJCQk8b2JqZWN0IGNsYXNzPSJO
U011dGFibGVBcnJheSIga2V5PSJkaWN0LnZhbHVlcyI+Ci0JCQkJCQkJPGJvb2wga2V5PSJFbmNv
ZGVkV2l0aFhNTENvZGVyIj5ZRVM8L2Jvb2w+Ci0JCQkJCQkJPG9iamVjdCBjbGFzcz0iSUJBY3Rp
b25JbmZvIj4KLQkJCQkJCQkJPHN0cmluZyBrZXk9Im5hbWUiPl9vcGVuRnJhbWVJbk5ld1dpbmRv
d0Zyb21NZW51Ojwvc3RyaW5nPgotCQkJCQkJCQk8c3RyaW5nIGtleT0iY2FuZGlkYXRlQ2xhc3NO
YW1lIj5OU01lbnVJdGVtPC9zdHJpbmc+Ci0JCQkJCQkJPC9vYmplY3Q+Ci0JCQkJCQkJPG9iamVj
dCBjbGFzcz0iSUJBY3Rpb25JbmZvIj4KLQkJCQkJCQkJPHN0cmluZyBrZXk9Im5hbWUiPl9zZWFy
Y2hXaXRoR29vZ2xlRnJvbU1lbnU6PC9zdHJpbmc+Ci0JCQkJCQkJCTxzdHJpbmcga2V5PSJjYW5k
aWRhdGVDbGFzc05hbWUiPmlkPC9zdHJpbmc+Ci0JCQkJCQkJPC9vYmplY3Q+Ci0JCQkJCQkJPG9i
amVjdCBjbGFzcz0iSUJBY3Rpb25JbmZvIj4KLQkJCQkJCQkJPHN0cmluZyBrZXk9Im5hbWUiPl9z
ZWFyY2hXaXRoU3BvdGxpZ2h0RnJvbU1lbnU6PC9zdHJpbmc+Ci0JCQkJCQkJCTxzdHJpbmcga2V5
PSJjYW5kaWRhdGVDbGFzc05hbWUiPmlkPC9zdHJpbmc+Ci0JCQkJCQkJPC9vYmplY3Q+Ci0JCQkJ
CQk8L29iamVjdD4KLQkJCQkJPC9vYmplY3Q+Ci0JCQkJCTxvYmplY3QgY2xhc3M9IklCQ2xhc3NE
ZXNjcmlwdGlvblNvdXJjZSIga2V5PSJzb3VyY2VJZGVudGlmaWVyIj4KLQkJCQkJCTxzdHJpbmcg
a2V5PSJtYWpvcktleSI+SUJQcm9qZWN0U291cmNlPC9zdHJpbmc+Ci0JCQkJCQk8c3RyaW5nIGtl
eT0ibWlub3JLZXkiPm1hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5oPC9zdHJpbmc+Ci0JCQkJ
CTwvb2JqZWN0PgotCQkJCTwvb2JqZWN0PgotCQkJCTxvYmplY3QgY2xhc3M9IklCUGFydGlhbENs
YXNzRGVzY3JpcHRpb24iPgotCQkJCQk8c3RyaW5nIGtleT0iY2xhc3NOYW1lIj5XZWJWaWV3PC9z
dHJpbmc+Ci0JCQkJCTxvYmplY3QgY2xhc3M9Ik5TTXV0YWJsZURpY3Rpb25hcnkiIGtleT0iYWN0
aW9ucyI+Ci0JCQkJCQk8Ym9vbCBrZXk9IkVuY29kZWRXaXRoWE1MQ29kZXIiPllFUzwvYm9vbD4K
LQkJCQkJCTxvYmplY3QgY2xhc3M9Ik5TQXJyYXkiIGtleT0iZGljdC5zb3J0ZWRLZXlzIj4KLQkJ
CQkJCQk8Ym9vbCBrZXk9IkVuY29kZWRXaXRoWE1MQ29kZXIiPllFUzwvYm9vbD4KLQkJCQkJCQk8
c3RyaW5nPm91dGRlbnQ6PC9zdHJpbmc+Ci0JCQkJCQkJPHN0cmluZz5yZXNldFBhZ2Vab29tOjwv
c3RyaW5nPgotCQkJCQkJCTxzdHJpbmc+dG9nZ2xlQXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbjo8
L3N0cmluZz4KLQkJCQkJCQk8c3RyaW5nPnRvZ2dsZUF1dG9tYXRpY0xpbmtEZXRlY3Rpb246PC9z
dHJpbmc+Ci0JCQkJCQkJPHN0cmluZz50b2dnbGVBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbjo8
L3N0cmluZz4KLQkJCQkJCQk8c3RyaW5nPnRvZ2dsZUF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlv
bjo8L3N0cmluZz4KLQkJCQkJCQk8c3RyaW5nPnRvZ2dsZUF1dG9tYXRpY1RleHRSZXBsYWNlbWVu
dDo8L3N0cmluZz4KLQkJCQkJCQk8c3RyaW5nPnRvZ2dsZUdyYW1tYXJDaGVja2luZzo8L3N0cmlu
Zz4KLQkJCQkJCQk8c3RyaW5nPnpvb21QYWdlSW46PC9zdHJpbmc+Ci0JCQkJCQkJPHN0cmluZz56
b29tUGFnZU91dDo8L3N0cmluZz4KLQkJCQkJCTwvb2JqZWN0PgotCQkJCQkJPG9iamVjdCBjbGFz
cz0iTlNNdXRhYmxlQXJyYXkiIGtleT0iZGljdC52YWx1ZXMiPgotCQkJCQkJCTxib29sIGtleT0i
RW5jb2RlZFdpdGhYTUxDb2RlciI+WUVTPC9ib29sPgotCQkJCQkJCTxzdHJpbmc+aWQ8L3N0cmlu
Zz4KLQkJCQkJCQk8c3RyaW5nPmlkPC9zdHJpbmc+Ci0JCQkJCQkJPHN0cmluZz5pZDwvc3RyaW5n
PgotCQkJCQkJCTxzdHJpbmc+aWQ8L3N0cmluZz4KLQkJCQkJCQk8c3RyaW5nPmlkPC9zdHJpbmc+
Ci0JCQkJCQkJPHN0cmluZz5pZDwvc3RyaW5nPgotCQkJCQkJCTxzdHJpbmc+aWQ8L3N0cmluZz4K
LQkJCQkJCQk8c3RyaW5nPmlkPC9zdHJpbmc+Ci0JCQkJCQkJPHN0cmluZz5pZDwvc3RyaW5nPgot
CQkJCQkJCTxzdHJpbmc+aWQ8L3N0cmluZz4KLQkJCQkJCTwvb2JqZWN0PgotCQkJCQk8L29iamVj
dD4KLQkJCQkJPG9iamVjdCBjbGFzcz0iTlNNdXRhYmxlRGljdGlvbmFyeSIga2V5PSJhY3Rpb25J
bmZvc0J5TmFtZSI+Ci0JCQkJCQk8Ym9vbCBrZXk9IkVuY29kZWRXaXRoWE1MQ29kZXIiPllFUzwv
Ym9vbD4KLQkJCQkJCTxvYmplY3QgY2xhc3M9Ik5TQXJyYXkiIGtleT0iZGljdC5zb3J0ZWRLZXlz
Ij4KLQkJCQkJCQk8Ym9vbCBrZXk9IkVuY29kZWRXaXRoWE1MQ29kZXIiPllFUzwvYm9vbD4KLQkJ
CQkJCQk8c3RyaW5nPm91dGRlbnQ6PC9zdHJpbmc+Ci0JCQkJCQkJPHN0cmluZz5yZXNldFBhZ2Va
b29tOjwvc3RyaW5nPgotCQkJCQkJCTxzdHJpbmc+dG9nZ2xlQXV0b21hdGljRGFzaFN1YnN0aXR1
dGlvbjo8L3N0cmluZz4KLQkJCQkJCQk8c3RyaW5nPnRvZ2dsZUF1dG9tYXRpY0xpbmtEZXRlY3Rp
b246PC9zdHJpbmc+Ci0JCQkJCQkJPHN0cmluZz50b2dnbGVBdXRvbWF0aWNRdW90ZVN1YnN0aXR1
dGlvbjo8L3N0cmluZz4KLQkJCQkJCQk8c3RyaW5nPnRvZ2dsZUF1dG9tYXRpY1NwZWxsaW5nQ29y
cmVjdGlvbjo8L3N0cmluZz4KLQkJCQkJCQk8c3RyaW5nPnRvZ2dsZUF1dG9tYXRpY1RleHRSZXBs
YWNlbWVudDo8L3N0cmluZz4KLQkJCQkJCQk8c3RyaW5nPnRvZ2dsZUdyYW1tYXJDaGVja2luZzo8
L3N0cmluZz4KLQkJCQkJCQk8c3RyaW5nPnpvb21QYWdlSW46PC9zdHJpbmc+Ci0JCQkJCQkJPHN0
cmluZz56b29tUGFnZU91dDo8L3N0cmluZz4KLQkJCQkJCTwvb2JqZWN0PgotCQkJCQkJPG9iamVj
dCBjbGFzcz0iTlNNdXRhYmxlQXJyYXkiIGtleT0iZGljdC52YWx1ZXMiPgotCQkJCQkJCTxib29s
IGtleT0iRW5jb2RlZFdpdGhYTUxDb2RlciI+WUVTPC9ib29sPgotCQkJCQkJCTxvYmplY3QgY2xh
c3M9IklCQWN0aW9uSW5mbyI+Ci0JCQkJCQkJCTxzdHJpbmcga2V5PSJuYW1lIj5vdXRkZW50Ojwv
c3RyaW5nPgotCQkJCQkJCQk8c3RyaW5nIGtleT0iY2FuZGlkYXRlQ2xhc3NOYW1lIj5pZDwvc3Ry
aW5nPgotCQkJCQkJCTwvb2JqZWN0PgotCQkJCQkJCTxvYmplY3QgY2xhc3M9IklCQWN0aW9uSW5m
byI+Ci0JCQkJCQkJCTxzdHJpbmcga2V5PSJuYW1lIj5yZXNldFBhZ2Vab29tOjwvc3RyaW5nPgot
CQkJCQkJCQk8c3RyaW5nIGtleT0iY2FuZGlkYXRlQ2xhc3NOYW1lIj5pZDwvc3RyaW5nPgotCQkJ
CQkJCTwvb2JqZWN0PgotCQkJCQkJCTxvYmplY3QgY2xhc3M9IklCQWN0aW9uSW5mbyI+CiAJCQkJ
CQkJCTxzdHJpbmcga2V5PSJuYW1lIj50b2dnbGVBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uOjwv
c3RyaW5nPgogCQkJCQkJCQk8c3RyaW5nIGtleT0iY2FuZGlkYXRlQ2xhc3NOYW1lIj5pZDwvc3Ry
aW5nPgogCQkJCQkJCTwvb2JqZWN0PgpAQCAtMTY3MywzOCArMTMxMiw5IEBACiAJCQkJCQkJPC9v
YmplY3Q+CiAJCQkJCQk8L29iamVjdD4KIAkJCQkJPC9vYmplY3Q+Ci0JCQkJCTxyZWZlcmVuY2Ug
a2V5PSJzb3VyY2VJZGVudGlmaWVyIiByZWY9IjE1Mzk3MjEzMiIvPgotCQkJCTwvb2JqZWN0Pgot
CQkJCTxvYmplY3QgY2xhc3M9IklCUGFydGlhbENsYXNzRGVzY3JpcHRpb24iPgotCQkJCQk8c3Ry
aW5nIGtleT0iY2xhc3NOYW1lIj5XZWJWaWV3PC9zdHJpbmc+Ci0JCQkJCTxzdHJpbmcga2V5PSJz
dXBlcmNsYXNzTmFtZSI+TlNWaWV3PC9zdHJpbmc+CiAJCQkJCTxvYmplY3QgY2xhc3M9IklCQ2xh
c3NEZXNjcmlwdGlvblNvdXJjZSIga2V5PSJzb3VyY2VJZGVudGlmaWVyIj4KLQkJCQkJCTxzdHJp
bmcga2V5PSJtYWpvcktleSI+SUJVc2VyU291cmNlPC9zdHJpbmc+Ci0JCQkJCQk8c3RyaW5nIGtl
eT0ibWlub3JLZXkiLz4KLQkJCQkJPC9vYmplY3Q+Ci0JCQkJPC9vYmplY3Q+Ci0JCQk8L29iamVj
dD4KLQkJCTxvYmplY3QgY2xhc3M9Ik5TTXV0YWJsZUFycmF5IiBrZXk9InJlZmVyZW5jZWRQYXJ0
aWFsQ2xhc3NEZXNjcmlwdGlvbnNWMy4yKyI+Ci0JCQkJPGJvb2wga2V5PSJFbmNvZGVkV2l0aFhN
TENvZGVyIj5ZRVM8L2Jvb2w+Ci0JCQkJPG9iamVjdCBjbGFzcz0iSUJQYXJ0aWFsQ2xhc3NEZXNj
cmlwdGlvbiI+Ci0JCQkJCTxzdHJpbmcga2V5PSJjbGFzc05hbWUiPk5TT2JqZWN0PC9zdHJpbmc+
Ci0JCQkJCTxvYmplY3QgY2xhc3M9IklCQ2xhc3NEZXNjcmlwdGlvblNvdXJjZSIga2V5PSJzb3Vy
Y2VJZGVudGlmaWVyIj4KLQkJCQkJCTxzdHJpbmcga2V5PSJtYWpvcktleSI+SUJGcmFtZXdvcmtT
b3VyY2U8L3N0cmluZz4KLQkJCQkJCTxzdHJpbmcga2V5PSJtaW5vcktleSI+UXVhcnR6Q29yZS5m
cmFtZXdvcmsvSGVhZGVycy9DQUFuaW1hdGlvbi5oPC9zdHJpbmc+Ci0JCQkJCTwvb2JqZWN0Pgot
CQkJCTwvb2JqZWN0PgotCQkJCTxvYmplY3QgY2xhc3M9IklCUGFydGlhbENsYXNzRGVzY3JpcHRp
b24iPgotCQkJCQk8c3RyaW5nIGtleT0iY2xhc3NOYW1lIj5OU09iamVjdDwvc3RyaW5nPgotCQkJ
CQk8b2JqZWN0IGNsYXNzPSJJQkNsYXNzRGVzY3JpcHRpb25Tb3VyY2UiIGtleT0ic291cmNlSWRl
bnRpZmllciI+Ci0JCQkJCQk8c3RyaW5nIGtleT0ibWFqb3JLZXkiPklCRnJhbWV3b3JrU291cmNl
PC9zdHJpbmc+Ci0JCQkJCQk8c3RyaW5nIGtleT0ibWlub3JLZXkiPlF1YXJ0ekNvcmUuZnJhbWV3
b3JrL0hlYWRlcnMvQ0FMYXllci5oPC9zdHJpbmc+Ci0JCQkJCTwvb2JqZWN0PgotCQkJCTwvb2Jq
ZWN0PgotCQkJCTxvYmplY3QgY2xhc3M9IklCUGFydGlhbENsYXNzRGVzY3JpcHRpb24iPgotCQkJ
CQk8c3RyaW5nIGtleT0iY2xhc3NOYW1lIj5OU09iamVjdDwvc3RyaW5nPgotCQkJCQk8b2JqZWN0
IGNsYXNzPSJJQkNsYXNzRGVzY3JpcHRpb25Tb3VyY2UiIGtleT0ic291cmNlSWRlbnRpZmllciI+
Ci0JCQkJCQk8c3RyaW5nIGtleT0ibWFqb3JLZXkiPklCRnJhbWV3b3JrU291cmNlPC9zdHJpbmc+
Ci0JCQkJCQk8c3RyaW5nIGtleT0ibWlub3JLZXkiPlF1YXJ0ekNvcmUuZnJhbWV3b3JrL0hlYWRl
cnMvQ0lJbWFnZVByb3ZpZGVyLmg8L3N0cmluZz4KKwkJCQkJCTxzdHJpbmcga2V5PSJtYWpvcktl
eSI+SUJQcm9qZWN0U291cmNlPC9zdHJpbmc+CisJCQkJCQk8c3RyaW5nIGtleT0ibWlub3JLZXki
Pi4vQ2xhc3Nlcy9XZWJWaWV3Lmg8L3N0cmluZz4KIAkJCQkJPC9vYmplY3Q+CiAJCQkJPC9vYmpl
Y3Q+CiAJCQk8L29iamVjdD4KQEAgLTE3MjAsNyArMTMzMCw2IEBACiAJCQk8aW50ZWdlciB2YWx1
ZT0iMzAwMCIga2V5PSJOUy5vYmplY3QuMCIvPgogCQk8L29iamVjdD4KIAkJPGJvb2wga2V5PSJJ
QkRvY3VtZW50LlBsdWdpbkRlY2xhcmVkRGVwZW5kZW5jaWVzVHJhY2tTeXN0ZW1UYXJnZXRWZXJz
aW9uIj5ZRVM8L2Jvb2w+Ci0JCTxzdHJpbmcga2V5PSJJQkRvY3VtZW50Lkxhc3RLbm93blJlbGF0
aXZlUHJvamVjdFBhdGgiPi4uLy4uLy4uL1dlYktpdC54Y29kZXByb2o8L3N0cmluZz4KIAkJPGlu
dCBrZXk9IklCRG9jdW1lbnQuZGVmYXVsdFByb3BlcnR5QWNjZXNzQ29udHJvbCI+MzwvaW50Pgog
CTwvZGF0YT4KIDwvYXJjaGl2ZT4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
UERGVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlBE
RlZpZXcubW0JKHJldmlzaW9uIDk1Mzg5KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJQREZWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC05OCw5ICs5OCw5IEBAIC0gKHZvaWQpX3Vw
ZGF0ZVByZWZlcmVuY2VzU29vbjsKIC0gKE5TU2V0ICopX3Zpc2libGVQREZQYWdlczsKIEBlbmQ7
CiAKLS8vIFBERlByZWZVcGRhdGluZ1Byb3h5IGlzIGEgY2xhc3MgdGhhdCBmb3J3YXJkcyBldmVy
eXRoaW5nIGl0IGdldHMgdG8gYSB0YXJnZXQgYW5kIHVwZGF0ZXMgdGhlIFBERiB2aWV3aW5nIHBy
ZWZzCisvLyBXZWJQREZQcmVmVXBkYXRpbmdQcm94eSBpcyBhIGNsYXNzIHRoYXQgZm9yd2FyZHMg
ZXZlcnl0aGluZyBpdCBnZXRzIHRvIGEgdGFyZ2V0IGFuZCB1cGRhdGVzIHRoZSBQREYgdmlld2lu
ZyBwcmVmcwogLy8gYWZ0ZXIgZWFjaCBvZiB0aG9zZSBtZXNzYWdlcy4gIFdlIHVzZSBpdCBhcyBh
IHdheSB0byBob29rIGFsbCB0aGUgcGxhY2VzIHRoYXQgdGhlIFBERiB2aWV3aW5nIGF0dHJzIGNo
YW5nZS4KLUBpbnRlcmZhY2UgUERGUHJlZlVwZGF0aW5nUHJveHkgOiBOU1Byb3h5IHsKK0BpbnRl
cmZhY2UgV2ViUERGUHJlZlVwZGF0aW5nUHJveHkgOiBOU1Byb3h5IHsKICAgICBXZWJQREZWaWV3
ICp2aWV3OwogfQogLSAoaWQpaW5pdFdpdGhWaWV3OihXZWJQREZWaWV3ICopdmlldzsKQEAgLTMz
OCw3ICszMzgsNyBAQCAtIChpZClpbml0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUKICAgICAgICAg
d3JpdHRlbiA9IE5POwogICAgICAgICAvLyBNZXNzYWdpbmcgdGhpcyBwcm94eSBpcyB0aGUgc2Ft
ZSBhcyBtZXNzYWdpbmcgUERGU3Vidmlldywgd2l0aCB0aGUgc2lkZSBlZmZlY3QgdGhhdCB0aGUK
ICAgICAgICAgLy8gUERGIHZpZXdpbmcgZGVmYXVsdHMgYXJlIHVwZGF0ZWQgYWZ0ZXJ3YXJkcwot
ICAgICAgICBQREZTdWJ2aWV3UHJveHkgPSAoUERGVmlldyAqKVtbUERGUHJlZlVwZGF0aW5nUHJv
eHkgYWxsb2NdIGluaXRXaXRoVmlldzpzZWxmXTsKKyAgICAgICAgUERGU3Vidmlld1Byb3h5ID0g
KFBERlZpZXcgKilbW1dlYlBERlByZWZVcGRhdGluZ1Byb3h5IGFsbG9jXSBpbml0V2l0aFZpZXc6
c2VsZl07CiAgICAgfQogICAgIAogICAgIHJldHVybiBzZWxmOwpAQCAtMTQzOSw3ICsxNDM5LDcg
QEAgLSAodm9pZClfdXBkYXRlUHJlZmVyZW5jZXM6KFdlYlByZWZlcmVuYwogCiAtICh2b2lkKV91
cGRhdGVQcmVmZXJlbmNlc1Nvb24KIHsgICAKLSAgICAvLyBDb25zb2xpZGF0ZSBjYWxsczsgZHVl
IHRvIHRoZSBQREZQcmVmVXBkYXRpbmdQcm94eSBtZXRob2QsIHRoaXMgY2FuIGJlIGNhbGxlZCBt
dWx0aXBsZSB0aW1lcyB3aXRoIGEgc2luZ2xlIHVzZXIgYWN0aW9uCisgICAgLy8gQ29uc29saWRh
dGUgY2FsbHM7IGR1ZSB0byB0aGUgV2ViUERGUHJlZlVwZGF0aW5nUHJveHkgbWV0aG9kLCB0aGlz
IGNhbiBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgd2l0aCBhIHNpbmdsZSB1c2VyIGFjdGlvbgog
ICAgIC8vIHN1Y2ggYXMgc2hvd2luZyB0aGUgY29udGV4dCBtZW51LgogICAgIGlmIChfd2lsbFVw
ZGF0ZVByZWZlcmVuY2VzU29vbikKICAgICAgICAgcmV0dXJuOwpAQCAtMTQ4OCw3ICsxNDg4LDcg
QEAgLSAoTlNTZXQgKilfdmlzaWJsZVBERlBhZ2VzCiAKIEBlbmQKIAotQGltcGxlbWVudGF0aW9u
IFBERlByZWZVcGRhdGluZ1Byb3h5CitAaW1wbGVtZW50YXRpb24gV2ViUERGUHJlZlVwZGF0aW5n
UHJveHkKIAogLSAoaWQpaW5pdFdpdGhWaWV3OihXZWJQREZWaWV3ICopYVZpZXcKIHsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvRW5nbGlzaC5scHJvai9XZWJKYXZhU2NyaXB0VGV4dElucHV0UGFuZWwu
bmliL2tleWVkb2JqZWN0cy5uaWIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJr
ZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGFwcGxpY2F0aW9uL29jdGV0LXN0
cmVhbQoKWW5Cc2FYTjBNRERVQUFFQUFnQURBQVFBQlFBR0FmZ0IrVmdrZG1WeWMybHZibGdrYjJK
cVpXTjBjMWtrWVhKamFHbDJaWEpVSkhSdgpjQklBQVlhZ3J4QnpBQWNBQ0FBZkFDTUFKQUFxQUM0
QU1nQStBRVlBV0FCakFBY0FaQUJ1QUg0QWZ3Q0hBSWdBaXdDVkFKWUFsd0NjCkFKOEFwQUNsQUtn
QXJRQ3pBTFFBdUFDOUFMNEF5QURTQU5NQTJBRGJBTndBNFFEK0FQOEJBQUVCQVFVQkNRQUhBUW9C
RVFFU0FSc0IKTUFFeEFUWUJPd0U4QVQwQlFnRkZBQWNCUmdGUEFWQUJVd0ZYQVZnQldnRmJBVndC
WFFGZ0FXRUJaZ0ZuQVd3QmJRRnlBWE1CZUFGOQpBWDRCZ2dHSEFZZ0JsZ0daQVpvQm5BR3FBY0lC
MmdIYkFkd0IzUUhlQWQ4QjRBSGhBZUlCNHdIa0FlVUI1Z0huQWVnQjZRSHFBZXNCCjdBSHRBZTRC
N3dIeUFmVlZKRzUxYkd6YkFBa0FDZ0FMQUF3QURRQU9BQThBRUFBUkFCSUFFd0FVQUJVQUZnQVhB
QmdBR1FBYUFCc0EKSEFBZEFCMWZFQkJPVTFacGMybGliR1ZYYVc1a2IzZHpYVTVUVDJKcVpXTjBj
MHRsZVhOV1RsTlNiMjkwWEU1VFQybGtjMVpoYkhWbApjMVlrWTJ4aGMzTmFUbE5QYVdSelMyVjVj
MTFPVTBOdmJtNWxZM1JwYjI1elh4QVBUbE5QWW1wbFkzUnpWbUZzZFdWelh4QVpUbE5CClkyTmxj
M05wWW1sc2FYUjVRMjl1Ym1WamRHOXljMThRRjA1VFFXTmpaWE56YVdKcGJHbDBlVTlwWkhOTFpY
bHpYeEFaVGxOQlkyTmwKYzNOcFltbHNhWFI1VDJsa2MxWmhiSFZsYzRBRmdGU0FBb0JhZ0hLQVdZ
QUhnRmlBY0lCeGdISFNBQTBBSUFBaEFDSmJUbE5EYkdGegpjMDVoYldXQUJJQURYeEFiVjJWaVNt
RjJZVk5qY21sd2RGUmxlSFJKYm5CMWRGQmhibVZzMGdBbEFDWUFKd0FvV2lSamJHRnpjMjVoCmJX
VllKR05zWVhOelpYTmVUbE5EZFhOMGIyMVBZbXBsWTNTaUFDY0FLVmhPVTA5aWFtVmpkTklBRFFB
ckFDd0FMVnBPVXk1dlltcGwKWTNSemdBYWcwZ0FsQUNZQUx3QXdYRTVUVFhWMFlXSnNaVk5sZEtN
QUx3QXhBQ2xWVGxOVFpYVFNBQTBBS3dBekFEU0FRS2tBTlFBMgpBRGNBT0FBNUFEb0FPd0E4QUQy
QUNJQWZnQ2VBU0lCS2dFeUFUb0JQZ0ZMVUFBMEFQd0JBQUVFQVFnQkRBRVFBRmxkT1UweGhZbVZz
ClhVNVRSR1Z6ZEdsdVlYUnBiMjVZVGxOVGIzVnlZMldBSG9BZGdBbUFBdGtBUndCSUFFa0FTZ0JM
QUV3QURRQk5BRTRBVHdCUUFGRUEKVWdCVEFGUUFWUUJUQUZkWlRsTkZibUZpYkdWa1hVNVRUbVY0
ZEV0bGVWWnBaWGRYVGxOR2NtRnRaVlpPVTBObGJHeGJUbE5UZFhCbApjblpwWlhkWVRsTjJSbXho
WjNOZkVBOU9VMDVsZUhSU1pYTndiMjVrWlhKWVRsTlhhVzVrYjNjSmdBMkFDNEFPZ0FvUkFRcUFI
SUFLCmdBellBRWdBRFFCTEFFd0FUUUJaQUU0QVdnQkVBRndBWFFCZUFGMEFZQUJYQUdKYlRsTkdj
bUZ0WlZOcGVtVmFUbE5UZFdKMmFXVjMKYzRBSmdFS0FMeEVCQUlBdmdFR0FESUF3WHhBV2Uzc3hO
eXdnTVRBM2ZTd2dlek01TWl3Z016UjlmZGtBUndCSUFFa0FTZ0JMQUV3QQpEUUJOQUU0QVR3Qm1B
R2NBYUFCVEFHb0FWUUJUQUZjSmdDR0FJSUFpZ0FvUkFTS0FISUFLZ0F6WUFHOEFjQUJ4QUhJQURR
QnpBSFFBCmRRQjJBSGNBZUFCRUFIb0Fld0I4QUgxYlRsTkRaV3hzUm14aFozTmNUbE5EWld4c1Jt
eGhaM015V2s1VFEyOXVkR1Z1ZEhOZFRsTkQKYjI1MGNtOXNWbWxsZDF0T1UxUmxlSFJEYjJ4dmNs
bE9VMU4xY0hCdmNuUmZFQkZPVTBKaFkydG5jbTkxYm1SRGIyeHZjaElFSWY0QgpFQUNBRDRBSmdC
dUFHSUFRZ0JOZkVFdEJJRzFsYzNOaFoyVWdabkp2YlNCS1lYWmhVMk55YVhCMElIZHBiR3dnWW1V
Z2FHVnlaUzRLClNYUWdZMkZ1SUdKbElHRnVlU0J1ZFcxaVpYSWdiMllnYkdsdVpYTWdiRzl1Wnk3
VUFBMEFnQUNCQUlJQWd3Q0VBSVVBaGxaT1UwNWgKYldWV1RsTlRhWHBsV0U1VFprWnNZV2R6Z0JL
QUVTTkFLZ0FBQUFBQUFCRUVGRnhNZFdOcFpHRkhjbUZ1WkdYU0FDVUFKZ0NKQUlwVwpUbE5HYjI1
MG9nQ0pBQ25WQUl3QURRQ05BSTRBandDUUFKRUFrZ0NUQUpSZFRsTkRZWFJoYkc5blRtRnRaVnRP
VTBOdmJHOXlUbUZ0ClpWeE9VME52Ykc5eVUzQmhZMlZYVGxORGIyeHZjb0FVZ0JlQUZSQUdnQlpX
VTNsemRHVnRYR052Ym5SeWIyeERiMnh2Y3RNQURRQ08KQUpnQWtRQ2FBSnRYVGxOWGFHbDBaWUFY
RUFOTk1DNDJOalkyTmpZMk5qWTNBTklBSlFBbUFKMEFubGRPVTBOdmJHOXlvZ0NkQUNuVgpBSXdB
RFFDTkFJNEFqd0NRQUpFQW9nQ1RBS09BRklBWGdCbUFHbDhRRUdOdmJuUnliMnhVWlhoMFEyOXNi
M0xUQUEwQWpnQ1lBSkVBCm1nQ25nQmRDTUFEU0FDVUFKZ0NwQUtwZkVBOU9VMVJsZUhSR2FXVnNa
RU5sYkd5a0FLa0Fxd0NzQUNsY1RsTkJZM1JwYjI1RFpXeHMKVms1VFEyVnNiTklBSlFBbUFLNEFy
MXRPVTFSbGVIUkdhV1ZzWktVQXJnQ3dBTEVBc2dBcFdVNVRRMjl1ZEhKdmJGWk9VMVpwWlhkYgpU
bE5TWlhOd2IyNWtaWEpXY0hKdmJYQjAwZ0FsQUNZQXRRQzJYeEFVVGxOT2FXSlBkWFJzWlhSRGIy
NXVaV04wYjNLakFMVUF0d0FwClhrNVRUbWxpUTI5dWJtVmpkRzl5MUFBTkFEOEFRQUJCQUVJQXVn
QlFBQmFBSG9BbWdBMkFBbDhRRlh0N01qQXNJRFl3ZlN3Z2V6TTQKTml3Z016bDlmZGtBUndCSUFF
a0FTZ0JMQUV3QURRQk5BRTRBVHdEQUFNRUF3Z0JUQU1RQXhRQlRBRmNKZ0RLQU1ZQXpnQW9SQVNH
QQpPb0FLZ0F6WkFHOEFjQUJ4QUhJQURRQnpBSFFBeVFCMUFNb0Fkd0RMQUZBQWVnRE9BSHdBVHdE
Ulh4QVJUbE5FY21GM2MwSmhZMnRuCmNtOTFibVFTRkdIK0FZQWpnQTJBRzRBbGdCQUpnQ1JRMHdB
TkFJNEExQUNSQU5ZQTExVk9VMUpIUW9BWEVBRkdNU0F4SURFQTB3QU4KQUk0QTFBQ1JBTllBMm9B
WFJqQWdNQ0F3QUZsMFpYaDBTVzV3ZFhUVUFBMEFQd0JBQUVFQVFnRGVBTjhBRm9BZWdFZUFLSUFD
M3hBUApBT0lBNHdEa0FPVUE1Z0RuQU9nQTZRQU5BT29BNndEc0FPMEE3Z0R2QVBBQThRRHlBUE1B
VXdEMUFFOEE5d0Q0QVBrQStnRDdBUHdBCi9RRFdYRTVUVjJsdVpHOTNVbVZqZEYxT1UxZHBibVJ2
ZDFScGRHeGxYeEFkVGxOVmMyVnlTVzUwWlhKbVlXTmxTWFJsYlVsa1pXNTAKYVdacFpYSlpUbE5O
WVhoVGFYcGxYRTVUVjJsdVpHOTNWbWxsZDFsT1UwMXBibE5wZW1WZkVCUk9VMWRwYm1SdmQwbHpV
bVZ6ZEc5eQpZV0pzWlZ4T1UxTmpjbVZsYmxKbFkzUmZFQlpPVTFkcGJtUnZkME52Ym5SbGJuUk5h
VzVUYVhwbFh4QVBUbE5YYVc1a2IzZENZV05yCmFXNW5XVTVUVjFSR2JHRm5jMTFPVTFkcGJtUnZk
ME5zWVhOelcwNVRWbWxsZDBOc1lYTnpYeEFSVGxOWGFXNWtiM2RUZEhsc1pVMWgKYzJ1QUtZQXFn
QUNBUllBS2dFUUpnRU9BUm9BdUVBSVNjQ2dBQUlBcmdDeGZFQmg3ZXpVek1Td2dOemN6ZlN3Z2V6
UXlOaXdnTVRZeApmWDFhU21GMllWTmpjbWx3ZEY4UUUxZGxZazV2YmtKc2IyTnJhVzVuVUdGdVpX
elNBQTBCQWdFREFRUlpUbE11YzNSeWFXNW5nQzFVClZtbGxkOUlBSlFBbUFRWUJCMThRRDA1VFRY
VjBZV0pzWlZOMGNtbHVaNk1CQmdFSUFDbFlUbE5UZEhKcGJtZFhlemswTENBM2ZkSUEKRFFBckFE
TUJESUJBcEFCbUFNQUFSQUJRZ0NHQU1vQUpnQTFmRUJWN2V6SXpNaXdnTVRGOUxDQjdPVEFzSURN
MGZYM1pBRWNBU0FCSgpBRW9BU3dCTUFBMEFUUUJPQUU4QkZBRVZBUllBVXdERUFNVUFVd0JYQ1lB
OGdEdUFQWUFLZ0RxQUNvQU0zUUVjQUc4QkhRQndBUjRCCkh3RWdBSEVBY2dBTkFIUUJJUUVpQVNN
QkpBRWxBU1lBeXdFb0FTa0JLZ0JtQVN3QkxRRXVBUzlmRUJKT1UxQmxjbWx2WkdsalNXNTAKWlhK
MllXeGRUbE5DZFhSMGIyNUdiR0ZuYzE4UUUwNVRRV3gwWlhKdVlYUmxRMjl1ZEdWdWRITmZFQTlP
VTB0bGVVVnhkV2wyWVd4bApiblJmRUJCT1UwRnNkR1Z5Ym1GMFpVbHRZV2RsWHhBUFRsTlFaWEpw
YjJScFkwUmxiR0Y1WGs1VFFuVjBkRzl1Um14aFozTXlFQmtTCkJBSCtBQlAvLy8vL2hvSkEveElJ
QUFBQWdDT0FPSUEyZ0RTQUlZQTVnRFVReUJBQlZrTmhibU5sYk5RQURRQ0FBSUVBZ2dDREFJUUIK
TkFFMWdCS0FFU05BS2dBQUFBQUFBQkVHRnRRQURRQ0FBSUVBZ2dDREFUZ0JPUUU2Z0JLQU55TkFL
Z0FBQUFBQUFCQVFXVWhsYkhabApkR2xqWVZFYjBnQWxBQ1lCUGdFL1hFNVRRblYwZEc5dVEyVnNi
S1FCUGdGQUFVRUFLVnhPVTBGamRHbHZia05sYkd4V1RsTkRaV3hzCjBnQWxBQ1lCUXdGRVdFNVRR
blYwZEc5dXBRRkRBTEFBc1FDeUFDbGZFQlY3ZXpNeU1pd2dNVEY5TENCN09UQXNJRE0wZlgzZEFS
d0EKYndFZEFIQUJIZ0VmQVNBQWNRQnlBQTBBZEFFaEFTSUJJd0VrQVVjQkpnRExBVWtCS1FGTEFN
QUJMQUV0QVM0Qkx4UC8vLy8vaHFaQQovNEFqZ0QrQU5vQStnREtBT1lBMVVrOUwwZ0FOQVFJQkF3
RlNnQzFSRGRJQUpRQW1BVlFCVlY1T1UwMTFkR0ZpYkdWQmNuSmhlYU1CClZBRldBQ2xYVGxOQmNu
SmhlVnA3TkRJMkxDQXhOakY5MGdBbEFDWUFzUUZab3dDeEFMSUFLVjhRRm50N01Dd2dNSDBzSUhz
eU5UWXcKTENBeE5ERTRmWDFZZXprMExDQXlPWDFmRUNCN01UQXdNREF3TURBd01EQXdNREFzSURF
d01EQXdNREF3TURBd01EQXdmZElBSlFBbQpBVjRCWDE4UUVFNVRWMmx1Wkc5M1ZHVnRjR3hoZEdX
aUFWNEFLVlozYVc1a2IzZlVBQTBBUHdCQUFFRUFRZ0ZqQU1BQVpvQWVnRW1BCk1vQWhXMjVsZUhS
TFpYbFdhV1YzMUFBTkFEOEFRQUJCQUVJQmFRQVdBTitBSG9CTGdBS0FLRmhrWld4bFoyRjBaZFFB
RFFBL0FFQUEKUVFCQ0FXOEFVQURmZ0I2QVRZQU5nQ2hmRUJWcGJtbDBhV0ZzUm1seWMzUlNaWE53
YjI1a1pYTFVBQTBBUHdCQUFFRUFRZ0ZqQUdZQQpVSUFlZ0VtQUlZQU4xQUFOQUQ4QVFBQkJBWGtC
ZWdBV0FHYUFVWUJRZ0FLQUlWNXdjbVZ6YzJWa1EyRnVZMlZzT3RJQUpRQW1BWDhCCmdGOFFGVTVU
VG1saVEyOXVkSEp2YkVOdmJtNWxZM1J2Y3FNQmZ3R0JBQ2xlVGxOT2FXSkRiMjV1WldOMGIzTFVB
QTBBUHdCQUFFRUIKZVFHRUFCWUF3SUJSZ0ZPQUFvQXlXbkJ5WlhOelpXUlBTenJTQUEwQUt3R0pB
WXFBVjZzQml3RGZBRk1BWmdEQ0FNQUJGZ0JFQUZJQQpVQUJvZ0ZXQUtJQUtnQ0dBTTRBeWdEMkFD
WUFPZ0EyQUl0SUFEUUFnQUNFQm1JQUVnRlpkVGxOQmNIQnNhV05oZEdsdmJ0SUFKUUFtCkFWWUJt
NklCVmdBcDBnQU5BQ3NCaVFHZWdGZXJBQllBRmdEZkFGTUFaZ0JUQU1BQVV3QkVBRk1BVUlBQ2dB
S0FLSUFLZ0NHQUNvQXkKZ0FxQUNZQUtnQTNTQUEwQUt3R0pBYXlBVjY4UUZRQVdBWXNBM3dCVEFH
WUF3Z0RBQVJZQVJBQlNBRkFBYUFBMUFEWUFOd0E0QURrQQpPZ0E3QUR3QVBZQUNnRldBS0lBS2dD
R0FNNEF5Z0QyQUNZQU9nQTJBSW9BSWdCK0FKNEJJZ0VxQVRJQk9nRStBVXRJQURRQXJBWWtCCnhJ
QlhyeEFWQWNVQnhnSEhBY2dCeVFIS0Fjc0J6QUhOQWM0Qnp3SFFBZEVCMGdIVEFkUUIxUUhXQWRj
QjJBSFpnRnVBWElCZGdGNkEKWDRCZ2dHR0FZb0JqZ0dTQVpZQm1nR2VBYUlCcGdHcUFhNEJzZ0cy
QWJvQnZFZ0FCaHRBU0FBR0cwUklBQVliU0VnQUJodE1TQUFHRwoxQklBQVliVkVnQUJodFlTQUFH
RzF4SUFBWWJZRWdBQmh0a1NBQUdHMmhJQUFZYmJFZ0FCaHR3U0FBR0czUklBQVliZUVnQUJodDhT
CkFBR0c0QklBQVliaEVnQUJodUlTQUFHRzR4SUFBWWJrMGdBTkFDc0FNd0h4Z0VDZzBnQU5BQ3NC
aVFIMGdGZWcwZ0FsQUNZQjlnSDMKWGs1VFNVSlBZbXBsWTNSRVlYUmhvZ0gyQUNsZkVBOU9VMHRs
ZVdWa1FYSmphR2wyWlhMUkFmb0IrMTFKUWk1dlltcGxZM1JrWVhSaApnQUVBQ0FBWkFDSUFLd0Ex
QURvQVB3RW9BUzRCV3dGdUFYd0Jnd0dRQVpjQm9nR3dBY0lCM2dINEFoUUNGZ0lZQWhvQ0hBSWVB
aUFDCklnSWtBaVlDS0FJcUFqTUNQd0pCQWtNQ1lRSnFBblVDZmdLTkFwSUNtd0trQXE4Q3NRS3lB
cnNDeUFMUEF0VUMzZ0xnQXZNQzlRTDMKQXZrQyt3TDlBdjhEQVFNREF3VURGZ01lQXl3RE5RTTNB
emtET3dNOUEySURiQU42QTRJRGlRT1ZBNTREc0FPNUE3b0R2QU8rQThBRAp3Z1BGQThjRHlRUExB
K3dEK0FRREJBVUVCd1FKQkF3RURnUVFCQklFRkFRdEJGSUVVd1JWQkZjRVdRUmJCRjRFWUFSaUJH
UUVoUVNSCkJKNEVxUVMzQk1NRXpRVGhCT1lFNkFUcUJPd0U3Z1R3QlBJRTlBVkNCVk1GV2dWaEJX
b0ZiQVZ1QlhjRmVnV0hCWkFGbHdXY0JiRUYKdndYTEJkZ0Y0QVhpQmVRRjVnWG9CZW9GOFFYK0Jn
c0dFd1lWQmhjR0pRWXVCallHT3daUUJsSUdWQVpXQmxnR2F3WjRCbm9HZlFhRwpCcGdHb1FhdUJy
VUd2Z2JLQnRVRzN3Ym1CdklHK1FjQ0J4a0hJQWN2QjBBSFFnZEVCMFlIU0FkZ0I0VUhoZ2VJQjRv
SGpBZU9CNUVICmt3ZVZCNWNIdkFmUUI5VUgxd2ZaQjlzSDNRZmZCK0FINGdmakIvQUg5Z2Y0Qi9v
SUFRZ09DQkFJRndnaENESUlOQWcyQ0RnSU9naDUKQ0lZSWxBaTBDTDRJeXdqVkNPd0krUWtTQ1NR
SkxnazhDVWdKWEFsZUNXQUpZZ2xrQ1dZSmFBbHBDV3NKYlFsdkNYRUpkZ2w0Q1hvSgpsUW1nQ2JZ
SnZ3bkpDY3NKMEFuWkNlc0o4Z243Q2dNS0RBb09DaGNLR1FvYkNoMEtId28zQ2x3S1hRcGZDbUVL
WXdwbENtY0thUXByCkNxQUt0UXJEQ3RrSzZ3citDeEFMSHdzaEN5WUxMd3MwQ3pZTE9BczZDendM
UGd0QUMwSUxSQXRHQzAwTFhndGdDMklMYXd0dUMzOEwKZ1F1REM0d0xqZ3VZQzVvTG93dXdDN2tM
eGd2TkM5WUwzd3ZxREFJTU53eEFERUlNUkF4R0RFZ01TZ3hNREU0TVVReGFERndNWGd4bgpESFlN
ZlF5RkRKQU1tUXlnRExrTXdnemxETzROQVEwR0RRME5IZzBnRFNJTkpBMG1EVElOUXcxRkRVY05T
UTFMRFZRTlpRMW5EV2tOCmF3MXREWVVObGcyWURab05uQTJlRGE4TnNRMnpEYlVOdHczR0RjOE41
dzN1RGYwT0RnNFFEaElPRkE0V0RpRU9LZzRzRGtNT1JRNUgKRGtrT1N3NU5EazhPVVE1VERsVU9W
dzVaRG1JT1pBNW1EblFPZlE2Q0Rvc09qUTZrRHFZT3FBNnFEcXdPcmc2d0RySU90QTYyRHJnTwp1
ZzdERHNVTzhnNzBEdllPK0E3NkR2d08vZzhBRHdJUEJBOEdEd2dQQ2c4TUR3NFBFQThTRHhRUEZn
OFlEeG9QSEE4bER5Y1BWQTlXCkQxZ1BXZzljRDE0UFlBOWlEMlFQWmc5b0Qyb1BiQTl1RDNBUGNn
OTBEM1lQZUE5NkQzd1BmZytERDRnUGpRK1NENWNQbkEraEQ2WVAKcXcrd0Q3VVB1ZysvRDhRUHlR
L09EOU1QMkEvZEQrSVA1dy93RC9JUDh3LzhELzRQL3hBSUVCY1FIQkF1RURNUVFRQUFBQUFBQUFJ
QwpBQUFBQUFBQUFmd0FBQUFBQUFBQUFBQUFBQUFBQUJCRAoKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
bWFjL1BhbmVscy9FbmdsaXNoLmxwcm9qL1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubmliL2tleWVk
b2JqZWN0cy5uaWIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBi
aW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQoKWW5C
c2FYTjBNRERVQUFFQUFnQURBQVFBQlFBR0EyNERiMWdrZG1WeWMybHZibGdrYjJKcVpXTjBjMWtr
WVhKamFHbDJaWEpVSkhSdgpjQklBQVlhZ3J4RElBQWNBQ0FBZkFDTUFKQUFxQUM0QU1nQktBRklB
YUFCekFId0FmUUIrQUg4QWdBQ0JBSUlBQndDREFJOEFtd0NmCkFLVUFwZ0NxQUs4QXNBQzdBTWtB
eWdEU0FOTUExZ0RnQU9FQTRnRG1BT2tBN2dEdkFQSUE5d0Q2QVBzQkFBRWJBUndCSFFFZUFTSUEK
QndFbUFUUUJQUUUrQVVnQlR3RlFBVlVCWHdBSEFXQUJkUUY2QVhzQmZBRjlBWUlCaFFHT0FZOEJs
d0dZQVprQm9nR2pBYXdCdHdHOApBYjBCd0FIRkFjWUIwd0Q0QWRRQjFRSGVBZVlCNlFIcUFmRUI4
Z0h6QWZvQit3SDhBZ2NDQ0FJTUFnMENFQUlSQWhvQ0d3SWZBaU1DCkpBSW1BaWNDS0FJcEFpd0NM
UUl5QWpNQ09BSTVBajRDUHdKRUFrVUNTZ0pMQWxBQ1VRSldBbGNDWEFKaEFtWUNhd0p3QW5VQ2Vn
Si8KQW9RQ2lRS0tBbzRDa3dLVUFyQUNzd0swQXJZQzBnTUVBellETndNNEF6a0RPZ003QXp3RFBR
TStBejhEUUFOQkEwSURRd05FQTBVRApSZ05IQTBnRFNRTktBMHNEVEFOTkEwNERUd05RQTFFRFVn
TlRBMVFEVlFOV0ExY0RXQU5aQTFvRFd3TmNBMTBEWGdOZkEyQURZUU5pCkEyTURaQU5sQTJnRGEx
VWtiblZzYk5zQUNRQUtBQXNBREFBTkFBNEFEd0FRQUJFQUVnQVRBQlFBRlFBV0FCY0FHQUFaQUJv
QUd3QWMKQUIwQUhWOFFFRTVUVm1semFXSnNaVmRwYm1SdmQzTmRUbE5QWW1wbFkzUnpTMlY1YzFa
T1UxSnZiM1JjVGxOUGFXUnpWbUZzZFdWegpWaVJqYkdGemMxcE9VMDlwWkhOTFpYbHpYVTVUUTI5
dWJtVmpkR2x2Ym5OZkVBOU9VMDlpYW1WamRITldZV3gxWlhOZkVCbE9VMEZqClkyVnpjMmxpYVd4
cGRIbERiMjV1WldOMGIzSnpYeEFYVGxOQlkyTmxjM05wWW1sc2FYUjVUMmxrYzB0bGVYTmZFQmxP
VTBGalkyVnoKYzJsaWFXeHBkSGxQYVdSelZtRnNkV1Z6Z0FXQWo0QUNnSldBeDRDVWdBZUFrNERG
Z01hQXh0SUFEUUFnQUNFQUlsdE9VME5zWVhOegpUbUZ0WllBRWdBTmZFQlpYWldKQmRYUm9aVzUw
YVdOaGRHbHZibEJoYm1WczBnQWxBQ1lBSndBb1dpUmpiR0Z6YzI1aGJXVllKR05zCllYTnpaWE5l
VGxORGRYTjBiMjFQWW1wbFkzU2lBQ2NBS1ZoT1UwOWlhbVZqZE5JQURRQXJBQ3dBTFZwT1V5NXZZ
bXBsWTNSemdBYWcKMGdBbEFDWUFMd0F3WEU1VFRYVjBZV0pzWlZObGRLTUFMd0F4QUNsVlRsTlRa
WFRTQUEwQUt3QXpBRFNBYTY4UUZRQTFBRFlBTndBNApBRGtBT2dBN0FEd0FQUUErQUQ4QVFBQkJB
RUlBUXdCRUFFVUFSZ0JIQUVnQVNZQUlnQnFBTFlCemdIV0FkNEI1Z0h1QWZZQi9nSUdBCmdvQ0Rn
SVNBaFlDR2dJZUFpSUNKZ0lxQWpkUUFEUUJMQUV3QVRRQk9BRThBVUFBV1YwNVRUR0ZpWld4ZFRs
TkVaWE4wYVc1aGRHbHYKYmxoT1UxTnZkWEpqWllBWmdCaUFDWUFDMndCVEFGUUFWUUJXQUZjQVdB
QlpBQTBBV2dCYkFGd0FYUUJlQUY4QVhRQmhBR0lBWXdCawpBR0lBWmdCbldVNVRSVzVoWW14bFpG
MU9VMDVsZUhSTFpYbFdhV1YzVjA1VFJuSmhiV1ZhVGxORlpHbDBZV0pzWlZaT1UwTmxiR3hiClRs
TlRkWEJsY25acFpYZFlUbE4yUm14aFozTmZFQTlPVTA1bGVIUlNaWE53YjI1a1pYSllUbE5YYVc1
a2IzZGJUbE5FY21GblZIbHcKWlhNSmdCU0FFZ21BRllBS0VRRU1nQmVBQ29BVGdBdllBRlFBRFFC
WUFGa0FXZ0JwQUZzQWFnQlFBR3dBYlFCdUFHMEFjQUJtQUhKYgpUbE5HY21GdFpWTnBlbVZhVGxO
VGRXSjJhV1YzYzRBSmdHMkFOQkVCQUlBMGdHeUFFNEExMGdBTkFDc0FMQUIxZ0FhbUFIWUFkd0I0
CkFIa0FlZ0I3Z0F5QURZQU9nQStBRUlBUlh4QVpRWEJ3YkdVZ1VFNUhJSEJoYzNSbFltOWhjbVFn
ZEhsd1pWOFFHVUZ3Y0d4bElGQkUKUmlCd1lYTjBaV0p2WVhKa0lIUjVjR1ZmRUJWT1UwWnBiR1Z1
WVcxbGMxQmliMkZ5WkZSNWNHVmZFQnBCY0hCc1pTQlFTVU5VSUhCaApjM1JsWW05aGNtUWdkSGx3
WlY4UU1VNWxXRlFnUlc1allYQnpkV3hoZEdWa0lGQnZjM1JUWTNKcGNIUWdkakV1TWlCd1lYTjBa
V0p2CllYSmtJSFI1Y0dWZkVCNU9aVmhVSUZSSlJrWWdkalF1TUNCd1lYTjBaV0p2WVhKa0lIUjVj
R1ZmRUJWN2V6SXdMQ0F4TnpCOUxDQjcKTmpRc0lEWTBmWDNhQUZNQVZBQlZBRmNBV0FCWkFBMEFX
Z0JiQUlRQVhRQ0dBSWNBaUFCaUFJb0Fpd0JpQUdZQWpsVk9VMVJoWndtQQpISUFiZ0IyQUNoRUJD
b0FyZ0FxQUV4QUIxd0NRQUpFQWtnQ1RBSlFBRFFDVkFKWUFsd0NZQUpnQW1BQ1pBSnBiVGxORFpX
eHNSbXhoClozTmNUbE5EWld4c1JteGhaM015VjA1VFFXeHBaMjVYVGxOVFkyRnNaVmRPVTFOMGVX
eGxXazVUUVc1cGJXRjBaWE1TQUFIK0FCSUMKQUFBQUVBQ0FGZ2pTQUNVQUpnQ2NBSjFiVGxOSmJX
Rm5aVU5sYkd5akFKd0FuZ0FwVms1VFEyVnNiTklBSlFBbUFLQUFvVnRPVTBsdApZV2RsVm1sbGQ2
VUFvQUNpQUtNQXBBQXBXVTVUUTI5dWRISnZiRlpPVTFacFpYZGJUbE5TWlhOd2IyNWtaWEpaYVcx
aFoyVldhV1YzCjBnQWxBQ1lBcHdDb1h4QVVUbE5PYVdKUGRYUnNaWFJEYjI1dVpXTjBiM0tqQUtj
QXFRQXBYazVUVG1saVEyOXVibVZqZEc5eTFBQU4KQUVzQVRBQk5BRTRBckFCZUFCYUFHWUFzZ0JT
QUFsOFFGM3Q3TVRBeExDQXlNREI5TENCN016QTJMQ0F6TkgxOTJnQlRBRlFBVlFCWApBRmdBV1FB
TkFGb0FXd0NFQUYwQXNnQ3pBTFFBWWdDMkFJc0FZZ0JtQUxvSmdEYUFaNEJvZ0FvUkFTS0FLNEFL
Z0JNUUE5a0FrQUNSCkFMd0F2UUFOQUw0QXZ3REFBSVFBd1FEQ0FNTUFYZ0RGQU1ZQXh3RElBSTVh
VGxORGIyNTBaVzUwYzExT1UwTnZiblJ5YjJ4V2FXVjMKVzA1VFZHVjRkRU52Ykc5eVdVNVRVM1Z3
Y0c5eWRGOFFFVTVUUW1GamEyZHliM1Z1WkVOdmJHOXlFZ1FoL2dFU0FFQUFBSUFlZ0JTQQpLb0Fu
Z0IrQUlsOFFRbFJ2SUhacFpYY2dkR2hwY3lCd1lXZGxMQ0I1YjNVZ2JYVnpkQ0JzYjJjZ2FXNGdk
RzhnZEdocGN5QmhjbVZoCklHOXVJSGQzZHk1elpYSjJaWEl1WTI5dE90UUFEUURMQU13QXpRRE9B
TThBMEFEUlZrNVRUbUZ0WlZaT1UxTnBlbVZZVGxObVJteGgKWjNPQUlZQWdJMEFxQUFBQUFBQUFF
UVFVWEV4MVkybGtZVWR5WVc1a1pkSUFKUUFtQU5RQTFWWk9VMFp2Ym5TaUFOUUFLZFVBMXdBTgpB
TmdBMlFEYUFOc0EzQURkQU40QTMxMU9VME5oZEdGc2IyZE9ZVzFsVzA1VFEyOXNiM0pPWVcxbFhF
NVRRMjlzYjNKVGNHRmpaVmRPClUwTnZiRzl5Z0NPQUpvQWtFQWFBSlZaVGVYTjBaVzFjWTI5dWRI
SnZiRU52Ykc5eTB3QU5BTmtBNHdEY0FMb0E1VmRPVTFkb2FYUmwKZ0NaTk1DNDJOalkyTmpZMk5q
WTNBTklBSlFBbUFPY0E2RmRPVTBOdmJHOXlvZ0RuQUNuVkFOY0FEUURZQU5rQTJnRGJBTndBN0FE
ZQpBTzJBSTRBbWdDaUFLVjhRRUdOdmJuUnliMnhVWlhoMFEyOXNiM0xUQUEwQTJRRGpBTndBdWdE
eGdDWkNNQURTQUNVQUpnRHpBUFJmCkVBOU9VMVJsZUhSR2FXVnNaRU5sYkd5a0FQTUE5UUQyQUNs
Y1RsTkJZM1JwYjI1RFpXeHNWazVUUTJWc2JOSUFKUUFtQVBnQStWdE8KVTFSbGVIUkdhV1ZzWktV
QStBQ2lBS01BcEFBcFdXMWhhVzVNWVdKbGJOUUFEUUJMQUV3QVRRQk9BUDBBL2dBV2dCbUFjb0F1
Z0FMZQpBUUVCQWdFREFRUUJCUUVHQVFjQkNBQU5BUWtCQ2dFTEFRd0JEUUVPQVE4QkVBRVJBR0lC
RXdCZEFSVUJGZ0VYQVJnQkdRRWFBSTVjClRsTlhhVzVrYjNkU1pXTjBYVTVUVjJsdVpHOTNWR2ww
YkdWZkVCMU9VMVZ6WlhKSmJuUmxjbVpoWTJWSmRHVnRTV1JsYm5ScFptbGwKY2xsT1UwMWhlRk5w
ZW1WY1RsTlhhVzVrYjNkV2FXVjNYeEFUVGxOR2NtRnRaVUYxZEc5ellYWmxUbUZ0WlY4UUZFNVRW
Mmx1Wkc5MwpTWE5TWlhOMGIzSmhZbXhsWEU1VFUyTnlaV1Z1VW1WamRGOFFEMDVUVjJsdVpHOTNR
bUZqYTJsdVoxbE9VMWRVUm14aFozTmRUbE5YCmFXNWtiM2REYkdGemMxdE9VMVpwWlhkRGJHRnpj
MThRRVU1VFYybHVaRzkzVTNSNWJHVk5ZWE5yZ0MrQU1JQUFnRytBQ29Cd0NZQnUKZ0hFUUFoSndl
QUFBZ0RHQU1sOFFGbnQ3T1RNc0lEazNmU3dnZXpReU5Dd2dNalUwZlgxV1RHOW5JRWx1WHhBVFYy
VmlUbTl1UW14dgpZMnRwYm1kUVlXNWxiTklBRFFFZkFTQUJJVmxPVXk1emRISnBibWVBTTFSV2FX
VjMwZ0FsQUNZQkl3RWtYeEFQVGxOTmRYUmhZbXhsClUzUnlhVzVub3dFakFTVUFLVmhPVTFOMGNt
bHVaOUlBRFFBckFETUJLSUJycXdCZUFMSUJLd0VzQVMwQkxnRXZBVEFBVUFFeUFJYUEKRklBMmdE
eUFSb0JMZ0ZTQU9JQk5nQW1BV0lBYzJnQlRBRlFBVlFCWEFGZ0FXUUFOQUZvQVd3Q0VBRjBCTHdF
M0FUZ0FZZ0MyQUlzQQpZZ0JtQVJjSmdEaUFONEE1Z0FxQUs0QUtnQk5mRUJkN2V6RXdNU3dnTVRR
M2ZTd2dlek13Tml3Z01qQjlmZGtBVXdCVUFGVUFWd0JZCkFGa0FEUUJhQUZzQVhRRXRBVUVCUWdC
aUFVUUFpd0JpQUdZSmdFdUFXNEJjZ0FvUkFTU0FLNEFLZ0JQWkFKQUFrUUM4QUwwQURRQysKQUw4
QXdBQ0VBTUVBd2dGSkFMSUF4UURHQVUwQXlBRVhnRHFBTm9BcWdDZUFPNEFpWHhBbldXOTFjaUJ3
WVhOemQyOXlaQ0IzYVd4cwpJR0psSUhObGJuUWdkVzVsYm1OeWVYQjBaV1F1MUFBTkFNc0F6QURO
QU00QXp3RlRBVlNBSVlBZ0kwQW1BQUFBQUFBQUVRd2MyUUJUCkFGUUFWUUJYQUZnQVdRQU5BRm9B
V3dCZEFWY0JXQUZaQUdJQld3RmNBR0lBWmdtQVBvQTlnRCtBQ2hFQklZQkZnQXFBRTE4UUZYdDcK
TXpJMkxDQXhNbjBzSUhzNE5Dd2dNeko5ZmQwQllRQ1FBV0lBa1FGakFXUUJaUUM4QUwwQURRQy9B
V1lCWndGb0FXa0JhZ0ZyQVd3QgpiUUZ1QVE4Qkt3RnhBTWNCY3dGMFh4QVNUbE5RWlhKcGIyUnBZ
MGx1ZEdWeWRtRnNYVTVUUW5WMGRHOXVSbXhoWjNOZkVCTk9VMEZzCmRHVnlibUYwWlVOdmJuUmxi
blJ6WHhBUFRsTkxaWGxGY1hWcGRtRnNaVzUwWHhBUVRsTkJiSFJsY201aGRHVkpiV0ZuWlY4UUQw
NVQKVUdWeWFXOWthV05FWld4aGVWNU9VMEoxZEhSdmJrWnNZV2R6TWhBWkVnUUIvZ0FULy8vLy80
YUNRUDhTQ0RnQUFJQkNnRU9BUUlBdwpnRHlBUklBZkVNZ1FBZFFBRFFETEFNd0F6UURPQVhjQmVB
RjVnQ0dBUVNOQUtnQUFBQUFBQUJBUVdVaGxiSFpsZEdsallWQlJEZElBCkpRQW1BWDRCZjF4T1Uw
SjFkSFJ2YmtObGJHeWtBWDRCZ0FHQkFDbGNUbE5CWTNScGIyNURaV3hzVms1VFEyVnNiTklBSlFB
bUFZTUIKaEZoT1UwSjFkSFJ2YnFVQmd3Q2lBS01BcEFBcDJRQlRBRlFBVlFCWEFGZ0FXUUFOQUZv
QVd3QmRBU3NCaUFHSkFHSUJXd0ZjQUdJQQpaZ21BUElCSGdFaUFDb0JGZ0FxQUUxOFFGWHQ3TWpR
eUxDQXhNbjBzSUhzNE5Dd2dNeko5ZmQwQllRQ1FBV0lBa1FGakFXUUJaUUM4CkFMMEFEUUMvQVdZ
Qlp3Rm9BV2tCYWdGckFXd0JrUUZ1QVpNQkxBRnhBTWNCY3dGMGdFS0FTb0JBZ0VtQVJvQkVnQjlX
UTJGdVkyVnMKVVJ2YUFGTUFWQUJWQUZjQVdBQlpBQTBBV2dCYkFJUUFYUUV3QVp3Qm5RQmlBTFlB
aXdCaUFHWUF1Z21BVFlCTWdFNkFDb0FyZ0FxQQpFMThRRjN0N01UYzBMQ0F4TVRkOUxDQjdNak13
TENBeU1uMTkyUUJUQUZRQVZRQlhBRmdBV1FBTkFGb0FXd0JkQVM0QnBnR25BR0lCClJBQ0xBR0lB
WmdtQVZJQmVnRitBQ29BcmdBcUFFOW9Ba0FDUkFMd0F2UUFOQUw0QXZ3R3RBTUFBaEFHdUFhOEJi
QUV0QU1VQnN3REgKQUYwQnRnQzZYeEFSVGxORWNtRjNjMEpoWTJ0bmNtOTFibVFULy8vLy81Ungv
a0VTQUVBRUFJQkNnRXVBS29CU2dCOEpnRS9WQU5jQQpEUURZQU5rQTJnRGJBTndCdWdEZUFidUFJ
NEFtZ0ZDQVVWOFFFM1JsZUhSQ1lXTnJaM0p2ZFc1a1EyOXNiM0xUQUEwQTJRRGpBTndBCnVnRy9n
Q1pDTVFEVkFOY0FEUURZQU5rQTJnRGJBTndCd3dEZUFPMkFJNEFtZ0ZPQUtWbDBaWGgwUTI5c2Iz
TGNBRk1BVkFCVkFGY0EKV0FBZ0FGa0FXZ0FOQUZzQnh3Q0VBRjBCTWdIS0Fjc0FZZ0hOQUxZQVln
SFBBR1lCMFFIU1h4QVRUbE5QY21sbmFXNWhiRU5zWVhOegpUbUZ0WlFtQVdJQlhnRm1BQ29CVmdB
cUFXb0FUZ0ZZUUJGOFFFVTVUVTJWamRYSmxWR1Y0ZEVacFpXeGtYeEFXZTNzeE56UXNJRGczCmZT
d2dlekl6TUN3Z01qSjlmZGtBVXdCVUFGVUFWd0JZQUZrQURRQmFBRnNBWFFFc0FkZ0IyUUJpQVVR
QlhBQmlBR1lKZ0VhQVlZQmkKZ0FxQVJZQUtnQlBhQUpBQWtRQzhBTDBBRFFDK0FMOEJyUURBQUlR
QnJnR3ZBV3dCTGdERkFiTUF4d0JkQWJZQjBvQkNnRlNBS29CUwpnQjhKZ0UvU0FDVUFKZ0huQWVo
ZVRsTkRiR0Z6YzFOM1lYQndaWEtpQWVjQUtWOFFGbnQ3TVRBeExDQXhNVGw5TENCN05qZ3NJREUz
CmZYM1lBSkFBa1FDOEFMMEFEUUMrQUw4QXdBRnBBTUlCNndFdkFNVUF4Z0RIQU1pQVhZQTRnQ3FB
SjRBZmdDSlZUbUZ0WlRwZkVCVjcKZXpFd01Td2dPRGw5TENCN05qZ3NJREUzZlgzWUFKQUFrUUM4
QUwwQURRQytBTDhBd0FGcEFNSUI5QUV3QU1VQXhnREhBTWlBWUlCTgpnQ3FBSjRBZmdDSlpVR0Z6
YzNkdmNtUTZYeEFXZTNzeE1ESXNJRFU0ZlN3Z2V6STRNQ3dnTVRoOWZkMEJZUUNRQVdJQWtRRmpB
V1FCClpRQzhBTDBBRFFDL0FXWUJad0ZvQVdrQi9RSCtBV3dCYkFJQkFnSUJNZ0Z4QU1jQmN3SUdF
a2c4VWY4UUFJQkNnRUtBWklCamdGaUEKUklBZkVBSmZFQ1ZTWlcxbGJXSmxjaUIwYUdseklIQmhj
M04zYjNKa0lHbHVJRzE1SUd0bGVXTm9ZV2x1MGdBTkFna0NDZ0lMVzA1VApTVzFoWjJWT1lXMWxn
R2FBWlZoT1UxTjNhWFJqYU5JQUpRQW1BZzRDRDE4UUUwNVRRblYwZEc5dVNXMWhaMlZUYjNWeVky
V2lBZzRBCktWOFFGM3Q3TVRFekxDQXhOelY5TENCN01qZ3lMQ0F4TjMxOTJRQ1FBSkVBdkFDOUFB
MEF2Z0MvQU1BQWhBSVNBaE1DRkFDR0FNVUIKc3dJWUFiWUF1aFAvLy8vL2hDSCtBUklBUUFFQWdH
bUFISUFxZ0ZLQWFvQlBYeEF3UEMwdElHUnZJRzV2ZENCc2IyTmhiR2w2WlRzZwpkMmxzYkNCamIy
NTBZV2x1SUhKbFlXeHRJRzVoYldVZ0xTMCsxQUFOQU1zQXpBRE5BTTRBendJZUFYbUFJWUFnSTBB
bUFBQUFBQUFBCjBnQWxBQ1lDSUFJaFhrNVRUWFYwWVdKc1pVRnljbUY1b3dJZ0FpSUFLVmRPVTBG
eWNtRjVXbnMwTWpRc0lESTFOSDNTQUNVQUpnQ2oKQWlXakFLTUFwQUFwWHhBV2Uzc3dMQ0F3ZlN3
Z2V6STFOakFzSURFME1UaDlmVjhRSUhzeE1EQXdNREF3TURBd01EQXdNQ3dnTVRBdwpNREF3TURB
d01EQXdNREI5WHhBVVFYVjBhR1Z1ZEdsallYUnBiMjRnVUdGdVpXelNBQ1VBSmdJcUFpdGZFQkJP
VTFkcGJtUnZkMVJsCmJYQnNZWFJsb2dJcUFDbFZjR0Z1Wld6VUFBMEFTd0JNQUUwQVRnSXZBUzRB
Rm9BWmdIU0FWSUFDV0hCaGMzTjNiM0prMUFBTkFFc0EKVEFCTkFFNENOUUV5QUJhQUdZQjJnRmlB
QWxoeVpXMWxiV0psY3RRQURRQkxBRXdBVFFCT0Fqc0FoZ0FXZ0JtQWVJQWNnQUpmRUJKegpaWEJo
Y21GMFpWSmxZV3h0VEdGaVpXelVBQTBBU3dCTUFFMEFUZ0pCQUxJQUZvQVpnSHFBTm9BQ1duTnRZ
V3hzVEdGaVpXelVBQTBBClN3Qk1BRTBBVGdKSEFTMEFGb0FaZ0h5QVM0QUNXSFZ6WlhKdVlXMWwx
QUFOQUVzQVRBQk5BRTRDVFFFdEFQNkFHWUIrZ0V1QUxsOFEKRldsdWFYUnBZV3hHYVhKemRGSmxj
M0J2Ym1SbGN0UUFEUUJMQUV3QVRRQk9BbE1BaGdCZWdCbUFnSUFjZ0JSYmJtVjRkRXRsZVZacApa
WGZVQUEwQVN3Qk1BRTBBVGdKVEFTOEFzb0FaZ0lDQU9JQTIxQUFOQUVzQVRBQk5BRTRDVXdCZUFT
dUFHWUNBZ0JTQVBOUUFEUUJMCkFFd0FUUUJPQWxNQkt3RXNnQm1BZ0lBOGdFYlVBQTBBU3dCTUFF
MEFUZ0pUQVRBQkxZQVpnSUNBVFlCTDFBQU5BRXNBVEFCTkFFNEMKVXdFeUFTNkFHWUNBZ0ZpQVZO
UUFEUUJMQUV3QVRRQk9BbE1CTFFFdmdCbUFnSUJMZ0RqVUFBMEFTd0JNQUUwQVRnSlRBUzRCTUlB
WgpnSUNBVklCTjFBQU5BRXNBVEFCTkFFNENVd0VzQVRLQUdZQ0FnRWFBV05RQURRQkxBRXdBVFFC
T0FsTUFzZ0NHZ0JtQWdJQTJnQnpVCkFBMEFTd0JNQUUwQ2hRS0dBQllCSzRDTWdJdUFBb0E4Vm14
dlowbHVPdElBSlFBbUFvc0NqRjhRRlU1VFRtbGlRMjl1ZEhKdmJFTnYKYm01bFkzUnZjcU1DaXdL
TkFDbGVUbE5PYVdKRGIyNXVaV04wYjNMVUFBMEFTd0JNQUUwQ2hRS1FBQllCTElDTWdJNkFBb0JH
VjJOaApibU5sYkRyU0FBMEFLd0tWQXBhQWtxOFFHUUtYQVA0QVlnRXJBVmtCTEFHSkFTMEJuUUV1
QWNzQkx3RkNBVEFCcHdCUUFHRUJNZ0haCkFGNEFpQUN5QVRnQWhnQzBnSkNBTG9BS2dEeUFQNEJH
Z0VpQVM0Qk9nRlNBV1lBNGdGeUFUWUJmZ0FtQUZZQllnR0tBRklBZGdEYUEKT1lBY2dHalNBQTBB
SUFBaEFyS0FCSUNSWFU1VFFYQndiR2xqWVhScGIyN1NBQ1VBSmdJaUFyV2lBaUlBS2RJQURRQXJB
cFVDdUlDUwpyeEFaQUJZQUZnRCtBR0lCS3dCaUFTd0FZZ0V0QUdJQkxnQmlBUzhBWWdFd0FHSUFV
QUJpQVRJQVlnQmVBR0lBc2dCaUFJYUFBb0FDCmdDNkFDb0E4Z0FxQVJvQUtnRXVBQ29CVWdBcUFP
SUFLZ0UyQUNvQUpnQXFBV0lBS2dCU0FDb0EyZ0FxQUhOSUFEUUFyQXBVQzFJQ1MKcnhBdkFCWUNs
d0QrQUdJQkt3RlpBU3dCaVFFdEFaMEJMZ0hMQVM4QlFnRXdBYWNBVUFCaEFUSUIyUUJlQUlnQXNn
RTRBSVlBdEFBMQpBRFlBTndBNEFEa0FPZ0E3QUR3QVBRQStBRDhBUUFCQkFFSUFRd0JFQUVVQVJn
QkhBRWdBU1lBQ2dKQ0FMb0FLZ0R5QVA0QkdnRWlBClM0Qk9nRlNBV1lBNGdGeUFUWUJmZ0FtQUZZ
QllnR0tBRklBZGdEYUFPWUFjZ0dpQUNJQWFnQzJBYzRCMWdIZUFlWUI3Z0gyQWY0Q0IKZ0lLQWc0
Q0VnSVdBaG9DSGdJaUFpWUNLZ0kzU0FBMEFLd0tWQXdhQWtxOFFMd01IQXdnRENRTUtBd3NEREFN
TkF3NEREd01RQXhFRApFZ01UQXhRREZRTVdBeGNER0FNWkF4b0RHd01jQXgwREhnTWZBeUFESVFN
aUF5TURKQU1sQXlZREp3TW9BeWtES2dNckF5d0RMUU11CkF5OERNQU14QXpJRE13TTBBeldBbG9D
WGdKaUFtWUNhZ0p1QW5JQ2RnSjZBbjRDZ2dLR0Fvb0NqZ0tTQXBZQ21nS2VBcUlDcGdLcUEKcTRD
c2dLMkFyb0N2Z0xDQXNZQ3lnTE9BdElDMWdMYUF0NEM0Z0xtQXVvQzdnTHlBdllDK2dMK0F3SURC
Z01LQXc0REVFZ0FCaHVRUwpBQUdHNVJJQUFZYm1FZ0FCaHVjU0FBR0c2QklBQVlicEVnQUJodW9T
QUFHRzZ4SUFBWWJzRWdBQmh1MFNBQUdHN2hJQUFZYnZFZ0FCCmh2QVNBQUdHOFJJQUFZYnlFZ0FC
aHZNU0FBR0c5QklBQVliMUVnQUJodllTQUFHRzl4SUFBWWI0RWdBQmh2a1NBQUdHK2hJQUFZYjcK
RWdBQmh2d1NBQUdHL1JJQUFZYitFZ0FCaHY4U0FBR0hBQklBQVljQkVnQUJod0lTQUFHSEF4SUFB
WWNFRWdBQmh3VVNBQUdIQmhJQQpBWWNIRWdBQmh3Z1NBQUdIQ1JJQUFZY0tFZ0FCaHdzU0FBR0hE
QklBQVljTkVnQUJodzRTQUFHSER4SUFBWWNRRWdBQmh4RVNBQUdICkV0SUFEUUFyQURNRFo0QnJv
TklBRFFBckFwVURhb0NTb05JQUpRQW1BMndEYlY1T1UwbENUMkpxWldOMFJHRjBZYUlEYkFBcFh4
QVAKVGxOTFpYbGxaRUZ5WTJocGRtVnkwUU53QTNGZFNVSXViMkpxWldOMFpHRjBZWUFCQUFnQUdR
QWlBQ3NBTlFBNkFEOEIwZ0hZQWdVQwpHQUltQWkwQ09nSkJBa3dDV2dKc0FvZ0NvZ0srQXNBQ3dn
TEVBc1lDeUFMS0Fzd0N6Z0xRQXRJQzFBTGRBdWtDNndMdEF3WUREd01hCkF5TURNZ00zQTBBRFNR
TlVBMVlEVndOZ0EyMERkQU42QTRNRGhRT3lBN1FEdGdPNEE3b0R2QU8rQThBRHdnUEVBOFlEeUFQ
S0E4d0QKemdQUUE5SUQxQVBXQTlnRDJnUGNBKzBEOVFRREJBd0VEZ1FRQkJJRUZBUkJCRXNFV1FS
aEJHd0Vjd1IvQklnRW1nU2pCSzhFc0FTeQpCTFFFdFFTM0JMa0V2QVMrQk1BRXdnVEVCT1VFOFFU
OEJQNEZBQVVDQlFVRkJ3VUpCUXNGRFFVV0JSZ0ZKUVVuQlNrRkt3VXRCUzhGCk1RVk5CV2tGZ1FX
ZUJkSUY4d1lMQmpRR09nWTdCajBHUHdaQkJrTUdSZ1pJQmtvR1RBWk9CbXNHZHdhRUJvd0dsQWFj
QnFjR3JBYXgKQnJNR3RRYTJCcjhHeXdiU0J0a0c0Z2J1QnZrSEF3Y0tCeFlISUFjcEIwQUhSd2RX
QjJjSGFRZHJCMjBIYndlSkI3SUhzd2UxQjdjSAp1UWU3Qjc0SHdBZkNCOFFIeGdmckIvWUlCQWdR
Q0JvSUxnZ3pDRGdJT2dnOENENElRQWhDQ0VRSWlRaWFDS0VJcUFpeENMTUl0UWkrCkNNRUl6Z2pY
Q040STR3ajRDUVlKRWdrZkNTY0pLUWtyQ1MwSkx3a3hDVGdKUlFsU0NWb0pYQWxxQ1hNSmV3bUFD
WlVKbHdtWkNac0oKblFtd0NiMEp2d25DQ2NzSjNRbm1DZk1KK2dvRENnOEtHZ29rQ2pVS053bzVD
anNLUFFwMkNvTUtrUXF4Q3JzS3lBcmVDdlVMQWdzVQpDeDRMTEFzNEMwd0xUZ3RRQzFJTFZBdFdD
MWdMV1F0YkMxMExYd3RrQzJZTGFBdUJDNGdMbmd1bkM3RUxzd3U0QzhFTDB3dmFDK01MCjdBdnVE
QVVNQnd3SkRBc01EUXdQREJFTUV3d1ZEQmNNR1F3YkRFUU1SUXhIREVrTVN3eE5ERThNVVF4VERH
ME1rZ3lUREpVTWx3eVoKREpzTW5neWdES0lNcEF6SkRNc016UXpQRE5FTTB3elZEUDhORUEwU0RS
UU5IUTBnRFVVTlJnMUlEVW9OVEExT0RWRU5VdzFWRFZjTgpidzJrRGJrTnh3M2REZThPQWc0VURp
TU9KUTRxRGpNT09BNDZEandPUGc1QURrSU9SQTVHRGtnT1NnNWJEbDBPWHc1b0Rtb09kQTUxCkRu
Y09nQTZORHBZT293NnFEck1PdkE3SER1d083UTd2RHZFTzh3NzFEdmNPK1E3N0R4TVBTQTlLRDB3
UFRnOVFEMUlQVkE5V0QxMFAKWHcrSUQ0a1BpdytORDQ4UGtRK1RENVVQbHcreEQ5WVAxdy9aRDlz
UDNRL2ZEK0VQNHcvbEVBNFFJaEFyRURBUU1oQTBFRFlRT0JBNgpFRHNRUFJCU0VGUVFWaEJZRUZv
UWNCQjlFSDhRZ2hDWEVKa1FteENkRUo4UXFSRGFFUEFROFJEekVQVVE5eEQ1RVBzUS9SRC9FUUVS
CkF4RUZFUmtSTWhGWEVWZ1JXaEZjRVY0UllCRmlFV1FSWmhHUEVaRVJreEdWRVpjUm1SR2FFWndS
cFJHMEVia1IwaEh6RWZVUjl4SDUKRWZzUi9SSC9FZ1VTSFJJK0VrQVNRaEpFRWtZU1NCSktFbFFT
YlJLaUVxY1NxUktyRXEwU3J4S3hFck1TdFJLM0Vya1M0UkxxRXZZUworQkw2RXdNVERCTWlFeWNU
UVJObUUyOFRkQk4yRTNnVGVoTjhFMzRUZ0JPekU4UVR4aFBJRTlFVDJoUHBFL0FUK0JRREZBd1VF
eFFzCkZFOFVaaFJ2RklJVWh4U05GSjRVb0JTaUZLUVVwaFN2Rk1BVXdoVEVGTVlVeUJUUkZPSVU1
QlRtRk9nVTZoVC9GUkFWRWhVVUZSWVYKR0JVakZUUVZOaFU0RlRvVlBCVkZGVllWV0JWYUZWd1ZY
aFYyRlljVmlSV0xGWTBWanhXYkZhd1ZyaFd3RmJJVnRCWEZGY2NWeVJYTApGYzBWM2hYZ0ZlSVY1
QlhtRmZjVitSWDdGZjBWL3hZUUZoSVdGQllXRmhnV0tSWXJGaTBXTHhZeEZrSVdSQlpHRmtnV1No
WmJGbDBXClh4WmhGbU1XZEJaMkZuZ1dlaFo4Rm8wV2p4YVJGcE1XbFJhY0ZxVVd2UmJFRnRNVzVC
Ym1GdWdXNmhic0Z2UVcvUmIvRnpRWE5oYzQKRnpvWFBCYytGMEFYUWhkRUYwWVhTQmRLRjB3WFRo
ZFFGMUlYVkJkV0YxZ1hXaGRjRjE0WFlCZGlGMlFYWmhkdkYzRVhjeGVCRjRvWApqeGVZRjVvWHp4
ZlJGOU1YMVJmWEY5a1gyeGZkRjk4WDRSZmpGK1VYNXhmcEYrc1g3UmZ2Ri9FWDh4ZjFGL2NYK1Jm
N0YvMFgveGdCCkdBb1lEQmh0R0c4WWNSaHpHSFVZZHhoNUdIc1lmUmgvR0lFWWd4aUZHSWNZaVJp
TEdJMFlqeGlSR0pNWWxSaVhHSmtZbXhpZEdKOFkKb1JpakdLVVlweGlwR0tzWXJSaXZHTEVZc3hp
MUdMY1l1Umk3R0wwWXZ4akJHTU1ZeFJqSEdNa1l5eGpVR05ZWk54azVHVHNaUFJrLwpHVUVaUXhs
RkdVY1pTUmxMR1UwWlR4bFJHVk1aVlJsWEdWa1pXeGxkR1Y4WllSbGpHV1VaWnhscEdXc1piUmx2
R1hFWmN4bDFHWGNaCmVSbDdHWDBaZnhtQkdZTVpoUm1IR1lrWml4bU5HWThaa1JtVEdaVVptaG1m
R2FRWnFSbXVHYk1adUJtOUdjSVp4eG5NR2RFWjFobmIKR2VBWjVSbnFHZThaOUJuNUdmNGFBeG9J
R2cwYUVob1hHaHdhSVJvbUdpc2FNQm8xR2pvYVB4cEVHa2thVGhwVEdsZ2FYUnBpR21jYQpiQnB4
R25ZYWV4cUFHb2thaXhxTUdwVWFseHFZR3FFYXNCcTFHc2NhekJyYUFBQUFBQUFBQWdJQUFBQUFB
QUFEY2dBQUFBQUFBQUFBCkFBQUFBQUFBR3R3PQoK
</data>
<flag name="review"
          id="104570"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107795</attachid>
            <date>2011-09-18 13:43:41 -0700</date>
            <delta_ts>2011-09-18 16:37:49 -0700</delta_ts>
            <desc>WebCore part</desc>
            <filename>68323_webcore_r1.diff</filename>
            <type>text/plain</type>
            <size>310041</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk1Mzk3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTEtMDktMTggIERhbiBCZXJu
c3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KKworICAgICAgICBXZWJDb3JlIHBhcnQgb2YgW21hY10g
V2ViS2l0IGNvbnRhaW5zIE9iamVjdGl2ZS1DIGNsYXNzZXMgdGhhdCBhcmUgbm90IHByZWZpeGVk
IHdpdGggaXRzIHN0YW5kYXJkIHByZWZpeGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02ODMyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFJlbmFtZWQgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgdG8g
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIuCisgICAgICAgIFJlbmFtZWQgQ2FzY2FkZUxp
c3QgdG8gV2ViQ2FzY2FkZUxpc3QuCisgICAgICAgIFJlbmFtZWQgQ29va2llU3RvcmFnZU9iakNB
ZGFwdGVyIHRvIFdlYkNvb2tpZVN0b3JhZ2VPYmpDQWRhcHRlci4KKyAgICAgICAgUmVuYW1lZCBM
YW5ndWFnZUNoYW5nZU9ic2VydmVyIHRvIFdlYkxhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXIuCisgICAg
ICAgIFJlbmFtZWQgU2Nyb2xsQW5pbWF0aW9uSGVscGVyRGVsZWdhdGUgdG8gV2ViU2Nyb2xsQW5p
bWF0aW9uSGVscGVyRGVsZWdhdGUuCisgICAgICAgIFJlbmFtZWQgU2Nyb2xsYmFyUGFpbnRlckNv
bnRyb2xsZXJEZWxlZ2F0ZSB0byBXZWJTY3JvbGxiYXJQYWludGVyQ29udHJvbGxlckRlbGVnYXRl
LgorICAgICAgICBSZW5hbWVkIFNjcm9sbGJhclBhaW50ZXJEZWxlZ2F0ZSB0byBXZWJTY3JvbGxi
YXJQYWludGVyRGVsZWdhdGUuCisgICAgICAgIFJlbmFtZWQgU2Nyb2xsYmFyUGFydEFuaW1hdGlv
biB0byBXZWJTY3JvbGxiYXJQYXJ0QW5pbWF0aW9uLgorICAgICAgICBSZW5hbWVkIFNjcm9sbGJh
clByZWZzT2JzZXJ2ZXIgdG8gV2ViU2Nyb2xsYmFyUHJlZnNPYnNlcnZlci4KKworICAgICAgICAq
IFdlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwOiBVcGRhdGVkIGZvciB0aGUgcmVuYW1pbmcgb2YgQ2Fz
Y2FkZUxpc3QgdG8gV2ViQ2FzY2FkZUxpc3QuCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdC5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjphdHRhY2hXcmFwcGVyKToKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1tOgorICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLmg6IFJlbW92
ZWQuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXIubW06IFJlbW92ZWQuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXIuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIuaC4KKyAgICAgICAgKiBhY2Nlc3Np
YmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbTogQ29waWVkIGZyb20g
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXIubW0uCisgICAgICAgIChjb252ZXJ0VG9OU0FycmF5KToKKyAgICAgICAgKC1bV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOmZvclBhcmFt
ZXRlcjpdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNz
aWJpbGl0eUluZGV4T2ZDaGlsZDpdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXIgYWNjZXNzaWJpbGl0eUFycmF5QXR0cmlidXRlVmFsdWVzOmluZGV4Om1heENvdW50
Ol0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xs
ZXJDb3JlVGV4dC5tbToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBsZXhUZXh0Q29udHJvbGxlcjo6
Y29sbGVjdENvbXBsZXhUZXh0UnVuc0ZvckNoYXJhY3RlcnNDb3JlVGV4dCk6CisgICAgICAgICog
cGxhdGZvcm0vbWFjL0xhbmd1YWdlLm1tOgorICAgICAgICAoV2ViQ29yZTo6cGxhdGZvcm1EZWZh
dWx0TGFuZ3VhZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5o
OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbToKKyAgICAgICAg
KC1bV2ViU2Nyb2xsYmFyUGFpbnRlckRlbGVnYXRlIHNldFVwQW5pbWF0aW9uOnNjcm9sbGVyUGFp
bnRlcjpwYXJ0OldlYkNvcmU6OmFuaW1hdGVBbHBoYVRvOmR1cmF0aW9uOl0pOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JNYWM6OlNjcm9sbEFuaW1hdG9yTWFjKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJUaGVtZU1hYzo6U2Nyb2xsYmFyVGhlbWVNYWMpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvbWFjL0Nvb2tpZVN0b3JhZ2VNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpzdGFy
dE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMpOgorCiAyMDExLTA5LTE4ICBEYW4gQmVybnN0ZWluICA8
bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgVHJ5IHRvIGZpeCB0aGUgQ2hyb21pdW0gTWFjIGJ1
aWxkIGFmdGVyIHI5NTM5MS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNv
cmUuZ3lwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUu
Z3lwCShyZXZpc2lvbiA5NTM5NikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNv
cmUuZ3lwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTkyLDcgKzExOTIsNyBAQAogICAgICAgICAgICAg
ICAjIElmIHRoaXMgaXMgdW5oYW5kbGVkLCB0aGUgY29uc29sZSB3aWxsIHJlY2VpdmUgbG9nIG1l
c3NhZ2VzCiAgICAgICAgICAgICAgICMgc3VjaCBhczoKICAgICAgICAgICAgICAgIyBjb20uZ29v
Z2xlLkNocm9tZVtdIG9iamNbXTogQ2xhc3MgU2Nyb2xsYmFyUHJlZnNPYnNlcnZlciBpcyBpbXBs
ZW1lbnRlZCBpbiBib3RoIC4uLi9Hb29nbGUgQ2hyb21lLmFwcC9Db250ZW50cy9WZXJzaW9ucy8u
Li4vR29vZ2xlIENocm9tZSBIZWxwZXIuYXBwL0NvbnRlbnRzL01hY09TLy4uLy4uLy4uL0dvb2ds
ZSBDaHJvbWUgRnJhbWV3b3JrLmZyYW1ld29yay9Hb29nbGUgQ2hyb21lIEZyYW1ld29yayBhbmQg
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvV2ViS2l0LmZyYW1ld29yay9WZXJzaW9ucy9BL0Zy
YW1ld29ya3MvV2ViQ29yZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9XZWJDb3JlLiBPbmUgb2YgdGhl
IHR3byB3aWxsIGJlIHVzZWQuIFdoaWNoIG9uZSBpcyB1bmRlZmluZWQuCi0gICAgICAgICAgICAg
ICdDYXNjYWRlTGlzdD1DaHJvbWl1bVdlYkNvcmVPYmpDQ2FzY2FkZUxpc3QnLAorICAgICAgICAg
ICAgICAnV2ViQ2FzY2FkZUxpc3Q9Q2hyb21pdW1XZWJDb3JlT2JqQ1dlYkNhc2NhZGVMaXN0JywK
ICAgICAgICAgICAgICAgJ1Njcm9sbGJhclByZWZzT2JzZXJ2ZXI9Q2hyb21pdW1XZWJDb3JlT2Jq
Q1Njcm9sbGJhclByZWZzT2JzZXJ2ZXInLAogICAgICAgICAgICAgICAnV2ViQ29yZVJlbmRlclRo
ZW1lTm90aWZpY2F0aW9uT2JzZXJ2ZXI9Q2hyb21pdW1XZWJDb3JlT2JqQ1dlYkNvcmVSZW5kZXJU
aGVtZU5vdGlmaWNhdGlvbk9ic2VydmVyJywKICAgICAgICAgICAgICAgJ1dlYkZvbnRDYWNoZT1D
aHJvbWl1bVdlYkNvcmVPYmpDV2ViRm9udENhY2hlJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDk1Mzk0KQor
KysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC02NjYsOCArNjY2LDggQEAKIAkJMjlBODEyNDIwRkJCOUMxRDAwNTEwMjkz
IC8qIEFjY2Vzc2liaWxpdHlMaXN0Qm94T3B0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOUE4MTIyNDBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNz
aWJpbGl0eUxpc3RCb3hPcHRpb24uaCAqLzsgfTsKIAkJMjlBODEyNDMwRkJCOUMxRDAwNTEwMjkz
IC8qIEFjY2Vzc2liaWxpdHlMaXN0Qm94LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyOUE4MTIyNTBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0
eUxpc3RCb3guaCAqLzsgfTsKIAkJMjlBODEyNDgwRkJCOUNBOTAwNTEwMjkzIC8qIEFjY2Vzc2li
aWxpdHlPYmplY3RNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyOUE4MTI0NDBGQkI5Q0E5MDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eU9iamVjdE1h
Yy5tbSAqLzsgfTsKLQkJMjlBODEyNDkwRkJCOUNBOTAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyOUE4MTI0NTBGQkI5Q0E5MDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXIuaCAqLzsgfTsKLQkJMjlBODEyNEEwRkJCOUNBOTAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMjlBODEyNDYwRkJCOUNBOTAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyLm1tICovOyB9OworCQkyOUE4MTI0OTBGQkI5Q0E5MDA1MTAyOTMgLyogV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDI5QTgxMjQ1MEZCQjlDQTkwMDUxMDI5MyAvKiBXZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlci5oICovOyB9OworCQkyOUE4MTI0QTBGQkI5Q0E5MDA1MTAyOTMgLyogV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyOUE4MTI0NjBGQkI5Q0E5MDA1MTAyOTMgLyogV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXIubW0gKi87IH07CiAJCTI5QTgxMjRCMEZCQjlDQTkwMDUxMDI5MyAv
KiBBWE9iamVjdENhY2hlTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMjlBODEyNDcwRkJCOUNBOTAwNTEwMjkzIC8qIEFYT2JqZWN0Q2FjaGVNYWMu
bW0gKi87IH07CiAJCTJCRThFMkM3MTJBNTg5RUMwMEZBRDU1MCAvKiBIVE1MTWV0YUNoYXJzZXRQ
YXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJC
RThFMkM2MTJBNTg5RUMwMEZBRDU1MCAvKiBIVE1MTWV0YUNoYXJzZXRQYXJzZXIuaCAqLzsgfTsK
IAkJMkJFOEUyQzkxMkE1OEEwMTAwRkFENTUwIC8qIEhUTUxNZXRhQ2hhcnNldFBhcnNlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQkU4RTJDODEy
QTU4QTAxMDBGQUQ1NTAgLyogSFRNTE1ldGFDaGFyc2V0UGFyc2VyLmNwcCAqLzsgfTsKQEAgLTcy
MTksOCArNzIxOSw4IEBACiAJCTI5QTgxMjI0MEZCQjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmls
aXR5TGlzdEJveE9wdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBY2Nl
c3NpYmlsaXR5TGlzdEJveE9wdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQky
OUE4MTIyNTBGQkI5QzFEMDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eUxpc3RCb3guaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWNjZXNzaWJpbGl0eUxpc3RCb3guaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjlBODEyNDQwRkJCOUNBOTAwNTEwMjkzIC8qIEFjY2Vz
c2liaWxpdHlPYmplY3RNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBBY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkyOUE4MTI0NTBGQkI5Q0E5MDA1MTAyOTMgLyogQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMjlBODEyNDYwRkJCOUNB
OTAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI5QTgxMjQ1MEZCQjlDQTkwMDUxMDI5MyAv
KiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkyOUE4MTI0NjBGQkI5Q0E5MDA1MTAyOTMgLyogV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMjlBODEyNDcwRkJCOUNBOTAwNTEwMjkzIC8qIEFYT2JqZWN0Q2FjaGVNYWMu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBWE9iamVjdENhY2hl
TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQkU4RTJDNjEyQTU4OUVDMDBG
QUQ1NTAgLyogSFRNTE1ldGFDaGFyc2V0UGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IEhUTUxNZXRhQ2hhcnNldFBhcnNlci5oOyBwYXRoID0gcGFyc2VyL0hUTUxNZXRh
Q2hhcnNldFBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQkU4RTJDODEy
QTU4QTAxMDBGQUQ1NTAgLyogSFRNTE1ldGFDaGFyc2V0UGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEhUTUxNZXRhQ2hhcnNldFBhcnNlci5jcHA7IHBhdGgg
PSBwYXJzZXIvSFRNTE1ldGFDaGFyc2V0UGFyc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTEzNzcwLDkgKzEzNzcwLDkgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCiAJCQkJMjlBODEyNDQwRkJCOUNBOTAwNTEwMjkzIC8qIEFjY2Vzc2liaWxpdHlP
YmplY3RNYWMubW0gKi8sCi0JCQkJMjlBODEyNDUwRkJCOUNBOTAwNTEwMjkzIC8qIEFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyLmggKi8sCi0JCQkJMjlBODEyNDYwRkJCOUNBOTAwNTEwMjkzIC8q
IEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tICovLAogCQkJCTI5QTgxMjQ3MEZCQjlDQTkw
MDUxMDI5MyAvKiBBWE9iamVjdENhY2hlTWFjLm1tICovLAorCQkJCTI5QTgxMjQ1MEZCQjlDQTkw
MDUxMDI5MyAvKiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5oICovLAorCQkJCTI5QTgx
MjQ2MEZCQjlDQTkwMDUxMDI5MyAvKiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbSAq
LywKIAkJCSk7CiAJCQlwYXRoID0gbWFjOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAg
LTIwNDc5LDcgKzIwNDc5LDcgQEAKIAkJCQk3NkNERDJGNzExMDNEQTY2MDA2ODA1MjEgLyogQWNj
ZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk3NkNERDJGNTEx
MDNEQTY2MDA2ODA1MjEgLyogQWNjZXNzaWJpbGl0eU1lbnVMaXN0UG9wdXAuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTI5QTgxMjM2MEZCQjlDMUQwMDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5T2JqZWN0
LmggaW4gSGVhZGVycyAqLywKLQkJCQkyOUE4MTI0OTBGQkI5Q0E5MDA1MTAyOTMgLyogQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTI5QTgxMjQ5MEZCQjlD
QTkwMDUxMDI5MyAvKiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTQwOUM5ODUxMTZEMERERDAwNzE5N0JEIC8qIEFjY2Vzc2liaWxpdHlQcm9ncmVz
c0luZGljYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjlBODEyMzkwRkJCOUMxRDAwNTEwMjkz
IC8qIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzQzRG
NkVCMTEwOEY5QTUwMDk5RDBEQiAvKiBBY2Nlc3NpYmlsaXR5U2Nyb2xsYmFyLmggaW4gSGVhZGVy
cyAqLywKQEAgLTIzODM2LDcgKzIzODM2LDcgQEAKIAkJCQk3NkNERDJGNjExMDNEQTY2MDA2ODA1
MjEgLyogQWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTc2Q0REMkY0MTEwM0RBNjYwMDY4MDUyMSAvKiBBY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkyOUE4MTI0ODBGQkI5Q0E5MDA1MTAyOTMgLyogQWNjZXNz
aWJpbGl0eU9iamVjdE1hYy5tbSBpbiBTb3VyY2VzICovLAotCQkJCTI5QTgxMjRBMEZCQjlDQTkw
MDUxMDI5MyAvKiBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbSBpbiBTb3VyY2VzICovLAor
CQkJCTI5QTgxMjRBMEZCQjlDQTkwMDUxMDI5MyAvKiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE0MDlDOTg0MTE2RDBEREQwMDcxOTdCRCAvKiBB
Y2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjVE
MzFERkExMUNGNjEwQjAwOUYyMkI0IC8qIEFjdGl2ZURPTUNhbGxiYWNrLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUUxQzRERTZFMEVBNzVDNjUwMDIzQ0NENiAvKiBBY3RpdmVET01PYmplY3QuY3Bw
IGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAkocmV2aXNpb24gOTUzOTQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAkod29ya2luZyBjb3B5KQpA
QCAtNDksNyArNDksNiBAQAogdHlwZWRlZiBzdHJ1Y3QgX05TUmFuZ2UgTlNSYW5nZTsKIAogI2lm
ZGVmIF9fT0JKQ19fCi1AY2xhc3MgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI7CiBAY2xhc3Mg
TlNBcnJheTsKIEBjbGFzcyBOU0F0dHJpYnV0ZWRTdHJpbmc7CiBAY2xhc3MgTlNEYXRhOwpAQCAt
NTcsNiArNTYsNyBAQCB0eXBlZGVmIHN0cnVjdCBfTlNSYW5nZSBOU1JhbmdlOwogQGNsYXNzIE5T
U3RyaW5nOwogQGNsYXNzIE5TVmFsdWU7CiBAY2xhc3MgTlNWaWV3OworQGNsYXNzIFdlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyOwogI2Vsc2UKIGNsYXNzIE5TQXJyYXk7CiBjbGFzcyBOU0F0
dHJpYnV0ZWRTdHJpbmc7CkBAIC02OCwxMSArNjgsMTcgQEAgY2xhc3MgTlNWaWV3OwogI2lmIFBM
QVRGT1JNKEdUSykKIHR5cGVkZWYgc3RydWN0IF9BdGtPYmplY3QgQXRrT2JqZWN0OwogdHlwZWRl
ZiBzdHJ1Y3QgX0F0a09iamVjdCBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcjsKKyNlbGlmIFBM
QVRGT1JNKE1BQykKK2NsYXNzIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyOwogI2Vsc2UK
IGNsYXNzIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyOwogI2VuZGlmCiAjZW5kaWYKIAorI2lm
IFBMQVRGT1JNKE1BQykKK3R5cGVkZWYgV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXI7CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBBY2Nlc3NpYmlsaXR5T2JqZWN0OwpAQCAtNjgzLDcgKzY4OSw3IEBAIHByb3RlY3Rl
ZDoKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIFJldGFpblB0cjxBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlcj4gbV93cmFwcGVyOworICAgIFJldGFpblB0cjxXZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlcj4gbV93cmFwcGVyOwogI2VsaWYgUExBVEZPUk0oV0lOKSAmJiAhT1Mo
V0lOQ0UpCiAgICAgQ09NUHRyPEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyPiBtX3dyYXBwZXI7
CiAjZWxpZiBQTEFURk9STShHVEspCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L21hYy9BWE9iamVjdENhY2hlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0JKHJldmlzaW9uIDk1Mzk0KQorKysg
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbQkod29y
a2luZyBjb3B5KQpAQCAtMjksOCArMjksOCBAQAogI2lmIEhBVkUoQUNDRVNTSUJJTElUWSkKIAog
I2ltcG9ydCAiQWNjZXNzaWJpbGl0eU9iamVjdC5oIgotI2ltcG9ydCAiQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXIuaCIKICNpbXBvcnQgIlJlbmRlck9iamVjdC5oIgorI2ltcG9ydCAiV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIuaCIKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZh
Y2UuaCIKIAogI2ltcG9ydCA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTUxLDcgKzUxLDcgQEAgdm9p
ZCBBWE9iamVjdENhY2hlOjpkZXRhY2hXcmFwcGVyKEFjY2VzcwogCiB2b2lkIEFYT2JqZWN0Q2Fj
aGU6OmF0dGFjaFdyYXBwZXIoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqKQogewotICAgIFJldGFp
blB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcj4gd3JhcHBlcihBZG9wdE5TLCBbW0FjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyIGFsbG9jXSBpbml0V2l0aEFjY2Vzc2liaWxpdHlPYmplY3Q6
b2JqXSk7CisgICAgUmV0YWluUHRyPFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyPiB3cmFw
cGVyKEFkb3B0TlMsIFtbV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWxsb2NdIGluaXRX
aXRoQWNjZXNzaWJpbGl0eU9iamVjdDpvYmpdKTsKICAgICBvYmotPnNldFdyYXBwZXIod3JhcHBl
ci5nZXQoKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0Fj
Y2Vzc2liaWxpdHlPYmplY3RNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdE1hYy5tbQkocmV2aXNpb24gOTUzOTQp
CisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0
TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpZiBIQVZFKEFDQ0VT
U0lCSUxJVFkpCiAKLSNpbXBvcnQgIkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLmgiCisjaW1w
b3J0ICJXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5oIgogI2ltcG9ydCAiV2lkZ2V0Lmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIuaAko
cmV2aXNpb24gOTUzOTQpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUyICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29t
cHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
Ci0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
Ci0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpZm5kZWYgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJfaAotI2RlZmluZSBBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlcl9oCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIEFjY2Vzc2li
aWxpdHlPYmplY3Q7Ci1jbGFzcyBWaXNpYmxlUG9zaXRpb247Ci19Ci0KLUBpbnRlcmZhY2UgQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgOiBOU09iamVjdCB7Ci0gICAgV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eU9iamVjdCogbV9vYmplY3Q7Ci19Ci0gCi0tIChpZClpbml0V2l0aEFjY2Vzc2liaWxp
dHlPYmplY3Q6KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3QqKWF4T2JqZWN0OwotLSAodm9p
ZClkZXRhY2g7Ci0tIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0KilhY2Nlc3NpYmlsaXR5
T2JqZWN0OwotCi0vLyBVc2VkIHRvIGluZm9ybSBhbiBlbGVtZW50IHdoZW4gYSBub3RpZmljYXRp
b24gaXMgcG9zdGVkIGZvciBpdC4gVXNlZCBieSBEUlQuCi0tICh2b2lkKWFjY2Vzc2liaWxpdHlQ
b3N0ZWROb3RpZmljYXRpb246KE5TU3RyaW5nICopbm90aWZpY2F0aW9uTmFtZTsKLQotLSAoTlNW
aWV3KilhdHRhY2htZW50VmlldzsKLQotQGVuZAotCi0jZW5kaWYgLy8gQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJfaApJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0JKHJldmlzaW9u
IDk1Mzk0KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsMzE3NiArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1l
IG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAg
ICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyLmgiCi0KLSNpZiBIQVZFKEFDQ0VTU0lCSUxJVFkpCi0KLSNpbXBvcnQgIkFY
T2JqZWN0Q2FjaGUuaCIKLSNpbXBvcnQgIkFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5oIgotI2lt
cG9ydCAiQWNjZXNzaWJpbGl0eUxpc3QuaCIKLSNpbXBvcnQgIkFjY2Vzc2liaWxpdHlMaXN0Qm94
LmgiCi0jaW1wb3J0ICJBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgiCi0jaW1wb3J0ICJBY2Nl
c3NpYmlsaXR5U2Nyb2xsVmlldy5oIgotI2ltcG9ydCAiQWNjZXNzaWJpbGl0eVRhYmxlLmgiCi0j
aW1wb3J0ICJBY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmgiCi0jaW1wb3J0ICJBY2Nlc3NpYmlsaXR5
VGFibGVDb2x1bW4uaCIKLSNpbXBvcnQgIkFjY2Vzc2liaWxpdHlUYWJsZVJvdy5oIgotI2ltcG9y
dCAiQ2hyb21lLmgiCi0jaW1wb3J0ICJDb2xvck1hYy5oIgotI2ltcG9ydCAiRnJhbWUuaCIKLSNp
bXBvcnQgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCi0jaW1wb3J0ICJGcmFtZVNlbGVjdGlvbi5oIgot
I2ltcG9ydCAiSFRNTEFuY2hvckVsZW1lbnQuaCIKLSNpbXBvcnQgIkhUTUxBcmVhRWxlbWVudC5o
IgotI2ltcG9ydCAiSFRNTEZyYW1lT3duZXJFbGVtZW50LmgiCi0jaW1wb3J0ICJIVE1MSW1hZ2VF
bGVtZW50LmgiCi0jaW1wb3J0ICJIVE1MSW5wdXRFbGVtZW50LmgiCi0jaW1wb3J0ICJIVE1MTmFt
ZXMuaCIKLSNpbXBvcnQgIkhUTUxUZXh0QXJlYUVsZW1lbnQuaCIKLSNpbXBvcnQgIkxvY2FsaXpl
ZFN0cmluZ3MuaCIKLSNpbXBvcnQgIlBhZ2UuaCIKLSNpbXBvcnQgIlJlbmRlclRleHRDb250cm9s
LmgiCi0jaW1wb3J0ICJSZW5kZXJWaWV3LmgiCi0jaW1wb3J0ICJSZW5kZXJXaWRnZXQuaCIKLSNp
bXBvcnQgIlNjcm9sbFZpZXcuaCIKLSNpbXBvcnQgIlNpbXBsZUZvbnREYXRhLmgiCi0jaW1wb3J0
ICJUZXh0Q2hlY2tlckNsaWVudC5oIgotI2ltcG9ydCAiVGV4dEl0ZXJhdG9yLmgiCi0jaW1wb3J0
ICJXZWJDb3JlRnJhbWVWaWV3LmgiCi0jaW1wb3J0ICJXZWJDb3JlT2JqQ0V4dHJhcy5oIgotI2lt
cG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgotI2ltcG9ydCAiaHRtbGVkaXRpbmcuaCIK
LSNpbXBvcnQgInZpc2libGVfdW5pdHMuaCIKLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci11
c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLQotLy8gQ2Vs
bCBUYWJsZXMKLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRDZWxsc0F0dHJpYnV0ZQot
I2RlZmluZSBOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZENlbGxzQXR0cmlidXRlIEAiQVhTZWxlY3Rl
ZENlbGxzIgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5VmlzaWJsZUNlbGxzQXR0
cmlidXRlCi0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eVZpc2libGVDZWxsc0F0dHJpYnV0ZSBAIkFY
VmlzaWJsZUNlbGxzIgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5Um93SGVhZGVy
VUlFbGVtZW50c0F0dHJpYnV0ZQotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlSb3dIZWFkZXJVSUVs
ZW1lbnRzQXR0cmlidXRlIEAiQVhSb3dIZWFkZXJVSUVsZW1lbnRzIgotI2VuZGlmCi0KLSNpZm5k
ZWYgTlNBY2Nlc3NpYmlsaXR5Um93SW5kZXhSYW5nZUF0dHJpYnV0ZQotI2RlZmluZSBOU0FjY2Vz
c2liaWxpdHlSb3dJbmRleFJhbmdlQXR0cmlidXRlIEAiQVhSb3dJbmRleFJhbmdlIgotI2VuZGlm
Ci0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5Q29sdW1uSW5kZXhSYW5nZUF0dHJpYnV0ZQotI2Rl
ZmluZSBOU0FjY2Vzc2liaWxpdHlDb2x1bW5JbmRleFJhbmdlQXR0cmlidXRlIEAiQVhDb2x1bW5J
bmRleFJhbmdlIgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5Q2VsbEZvckNvbHVt
bkFuZFJvd1BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5Q2Vs
bEZvckNvbHVtbkFuZFJvd1BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgQCJBWENlbGxGb3JDb2x1bW5B
bmRSb3ciCi0jZW5kaWYKLQotI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlDZWxsUm9sZQotI2RlZmlu
ZSBOU0FjY2Vzc2liaWxpdHlDZWxsUm9sZSBAIkFYQ2VsbCIKLSNlbmRpZgotCi0vLyBMaXN0cwot
I2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlDb250ZW50TGlzdFN1YnJvbGUKLSNkZWZpbmUgTlNBY2Nl
c3NpYmlsaXR5Q29udGVudExpc3RTdWJyb2xlIEAiQVhDb250ZW50TGlzdCIKLSNlbmRpZgotCi0j
aWZuZGVmIE5TQWNjZXNzaWJpbGl0eURlZmluaXRpb25MaXN0U3Vicm9sZQotI2RlZmluZSBOU0Fj
Y2Vzc2liaWxpdHlEZWZpbml0aW9uTGlzdFN1YnJvbGUgQCJBWERlZmluaXRpb25MaXN0IgotI2Vu
ZGlmCi0KLS8vIE1pc2NlbGxhbmVvdXMKLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5QmxvY2tRdW90
ZUxldmVsQXR0cmlidXRlCi0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUJsb2NrUXVvdGVMZXZlbEF0
dHJpYnV0ZSBAIkFYQmxvY2tRdW90ZUxldmVsIgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3Np
YmlsaXR5QWNjZXNzS2V5QXR0cmlidXRlCi0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUFjY2Vzc0tl
eUF0dHJpYnV0ZSBAIkFYQWNjZXNzS2V5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmls
aXR5TGFuZ3VhZ2VBdHRyaWJ1dGUKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5TGFuZ3VhZ2VBdHRy
aWJ1dGUgQCJBWExhbmd1YWdlIgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5UmVx
dWlyZWRBdHRyaWJ1dGUKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5UmVxdWlyZWRBdHRyaWJ1dGUg
QCJBWFJlcXVpcmVkIgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5SW52YWxpZEF0
dHJpYnV0ZQotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlJbnZhbGlkQXR0cmlidXRlIEAiQVhJbnZh
bGlkIgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5T3duc0F0dHJpYnV0ZQotI2Rl
ZmluZSBOU0FjY2Vzc2liaWxpdHlPd25zQXR0cmlidXRlIEAiQVhPd25zIgotI2VuZGlmCi0KLSNp
Zm5kZWYgTlNBY2Nlc3NpYmlsaXR5R3JhYmJlZEF0dHJpYnV0ZQotI2RlZmluZSBOU0FjY2Vzc2li
aWxpdHlHcmFiYmVkQXR0cmlidXRlIEAiQVhHcmFiYmVkIgotI2VuZGlmCi0KLSNpZm5kZWYgTlNB
Y2Nlc3NpYmlsaXR5RHJvcEVmZmVjdHNBdHRyaWJ1dGUKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5
RHJvcEVmZmVjdHNBdHRyaWJ1dGUgQCJBWERyb3BFZmZlY3RzIgotI2VuZGlmCi0KLSNpZm5kZWYg
TlNBY2Nlc3NpYmlsaXR5QVJJQUxpdmVBdHRyaWJ1dGUKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5
QVJJQUxpdmVBdHRyaWJ1dGUgQCJBWEFSSUFMaXZlIgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nl
c3NpYmlsaXR5QVJJQUF0b21pY0F0dHJpYnV0ZQotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlBUklB
QXRvbWljQXR0cmlidXRlIEAiQVhBUklBQXRvbWljIgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nl
c3NpYmlsaXR5QVJJQVJlbGV2YW50QXR0cmlidXRlCi0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUFS
SUFSZWxldmFudEF0dHJpYnV0ZSBAIkFYQVJJQVJlbGV2YW50IgotI2VuZGlmCi0KLSNpZm5kZWYg
TlNBY2Nlc3NpYmlsaXR5QVJJQUJ1c3lBdHRyaWJ1dGUKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5
QVJJQUJ1c3lBdHRyaWJ1dGUgQCJBWEFSSUFCdXN5IgotI2VuZGlmCi0KLSNpZm5kZWYgTlNBY2Nl
c3NpYmlsaXR5TG9hZGluZ1Byb2dyZXNzQXR0cmlidXRlCi0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0
eUxvYWRpbmdQcm9ncmVzc0F0dHJpYnV0ZSBAIkFYTG9hZGluZ1Byb2dyZXNzIgotI2VuZGlmCi0K
LSNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5SGFzUG9wdXBBdHRyaWJ1dGUKLSNkZWZpbmUgTlNBY2Nl
c3NpYmlsaXR5SGFzUG9wdXBBdHRyaWJ1dGUgQCJBWEhhc1BvcHVwIgotI2VuZGlmCi0KLSNpZm5k
ZWYgTlNBY2Nlc3NpYmlsaXR5UGxhY2Vob2xkZXJWYWx1ZUF0dHJpYnV0ZQotI2RlZmluZSBOU0Fj
Y2Vzc2liaWxpdHlQbGFjZWhvbGRlclZhbHVlQXR0cmlidXRlIEAiQVhQbGFjZWhvbGRlclZhbHVl
IgotI2VuZGlmCi0KLS8vIFNlYXJjaAotI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRz
Rm9yU2VhcmNoUHJlZGljYXRlUGFyYW1ldGVyaXplZEF0dHJpYnV0ZQotI2RlZmluZSBOU0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnRzRm9yU2VhcmNoUHJlZGljYXRlUGFyYW1ldGVyaXplZEF0dHJpYnV0
ZSBAIkFYVUlFbGVtZW50c0ZvclNlYXJjaFByZWRpY2F0ZSIKLSNlbmRpZgotCi0vLyBTZWFyY2gg
S2V5cwotI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlBbnlUeXBlU2VhcmNoS2V5Ci0jZGVmaW5lIE5T
QWNjZXNzaWJpbGl0eUFueVR5cGVTZWFyY2hLZXkgQCJBWEFueVR5cGVTZWFyY2hLZXkiCi0jZW5k
aWYKLQotI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlCbG9ja3F1b3RlU2FtZUxldmVsU2VhcmNoS2V5
Ci0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUJsb2NrcXVvdGVTYW1lTGV2ZWxTZWFyY2hLZXkgQCJB
WEJsb2NrcXVvdGVTYW1lTGV2ZWxTZWFyY2hLZXkiCi0jZW5kaWYKLQotI2lmbmRlZiBOU0FjY2Vz
c2liaWxpdHlCbG9ja3F1b3RlU2VhcmNoS2V5Ci0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUJsb2Nr
cXVvdGVTZWFyY2hLZXkgQCJBWEJsb2NrcXVvdGVTZWFyY2hLZXkiCi0jZW5kaWYKLQotI2lmbmRl
ZiBOU0FjY2Vzc2liaWxpdHlCb2xkRm9udFNlYXJjaEtleQotI2RlZmluZSBOU0FjY2Vzc2liaWxp
dHlCb2xkRm9udFNlYXJjaEtleSBAIkFYQm9sZEZvbnRTZWFyY2hLZXkiCi0jZW5kaWYKLQotI2lm
bmRlZiBOU0FjY2Vzc2liaWxpdHlCdXR0b25TZWFyY2hLZXkKLSNkZWZpbmUgTlNBY2Nlc3NpYmls
aXR5QnV0dG9uU2VhcmNoS2V5IEAiQVhCdXR0b25TZWFyY2hLZXkiCi0jZW5kaWYKLQotI2lmbmRl
ZiBOU0FjY2Vzc2liaWxpdHlDaGVja0JveFNlYXJjaEtleQotI2RlZmluZSBOU0FjY2Vzc2liaWxp
dHlDaGVja0JveFNlYXJjaEtleSBAIkFYQ2hlY2tCb3hTZWFyY2hLZXkiCi0jZW5kaWYKLQotI2lm
bmRlZiBOU0FjY2Vzc2liaWxpdHlDb250cm9sU2VhcmNoS2V5Ci0jZGVmaW5lIE5TQWNjZXNzaWJp
bGl0eUNvbnRyb2xTZWFyY2hLZXkgQCJBWENvbnRyb2xTZWFyY2hLZXkiCi0jZW5kaWYKLQotI2lm
bmRlZiBOU0FjY2Vzc2liaWxpdHlEaWZmZXJlbnRUeXBlU2VhcmNoS2V5Ci0jZGVmaW5lIE5TQWNj
ZXNzaWJpbGl0eURpZmZlcmVudFR5cGVTZWFyY2hLZXkgQCJBWERpZmZlcmVudFR5cGVTZWFyY2hL
ZXkiCi0jZW5kaWYKLQotI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlGb250Q2hhbmdlU2VhcmNoS2V5
Ci0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUZvbnRDaGFuZ2VTZWFyY2hLZXkgQCJBWEZvbnRDaGFu
Z2VTZWFyY2hLZXkiCi0jZW5kaWYKLQotI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlGb250Q29sb3JD
aGFuZ2VTZWFyY2hLZXkKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5Rm9udENvbG9yQ2hhbmdlU2Vh
cmNoS2V5IEAiQVhGb250Q29sb3JDaGFuZ2VTZWFyY2hLZXkiCi0jZW5kaWYKLQotI2lmbmRlZiBO
U0FjY2Vzc2liaWxpdHlGcmFtZVNlYXJjaEtleQotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlGcmFt
ZVNlYXJjaEtleSBAIkFYRnJhbWVTZWFyY2hLZXkiCi0jZW5kaWYKLQotI2lmbmRlZiBOU0FjY2Vz
c2liaWxpdHlHcmFwaGljU2VhcmNoS2V5Ci0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUdyYXBoaWNT
ZWFyY2hLZXkgQCJBWEdyYXBoaWNTZWFyY2hLZXkiCi0jZW5kaWYKLQotI2lmbmRlZiBOU0FjY2Vz
c2liaWxpdHlIZWFkaW5nTGV2ZWwxU2VhcmNoS2V5Ci0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUhl
YWRpbmdMZXZlbDFTZWFyY2hLZXkgQCJBWEhlYWRpbmdMZXZlbDFTZWFyY2hLZXkiCi0jZW5kaWYK
LQotI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWwyU2VhcmNoS2V5Ci0jZGVmaW5l
IE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdMZXZlbDJTZWFyY2hLZXkgQCJBWEhlYWRpbmdMZXZlbDJT
ZWFyY2hLZXkiCi0jZW5kaWYKLQotI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWwz
U2VhcmNoS2V5Ci0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdMZXZlbDNTZWFyY2hLZXkg
QCJBWEhlYWRpbmdMZXZlbDNTZWFyY2hLZXkiCi0jZW5kaWYKLQotI2lmbmRlZiBOU0FjY2Vzc2li
aWxpdHlIZWFkaW5nTGV2ZWw0U2VhcmNoS2V5Ci0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUhlYWRp
bmdMZXZlbDRTZWFyY2hLZXkgQCJBWEhlYWRpbmdMZXZlbDRTZWFyY2hLZXkiCi0jZW5kaWYKLQot
I2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWw1U2VhcmNoS2V5Ci0jZGVmaW5lIE5T
QWNjZXNzaWJpbGl0eUhlYWRpbmdMZXZlbDVTZWFyY2hLZXkgQCJBWEhlYWRpbmdMZXZlbDVTZWFy
Y2hLZXkiCi0jZW5kaWYKLQotI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWw2U2Vh
cmNoS2V5Ci0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdMZXZlbDZTZWFyY2hLZXkgQCJB
WEhlYWRpbmdMZXZlbDZTZWFyY2hLZXkiCi0jZW5kaWYKLQotI2lmbmRlZiBOU0FjY2Vzc2liaWxp
dHlIZWFkaW5nU2FtZUxldmVsU2VhcmNoS2V5Ci0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUhlYWRp
bmdTYW1lTGV2ZWxTZWFyY2hLZXkgQCJBWEhlYWRpbmdTYW1lTGV2ZWxTZWFyY2hLZXkiCi0jZW5k
aWYKLQotI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nU2VhcmNoS2V5Ci0jZGVmaW5lIE5T
QWNjZXNzaWJpbGl0eUhlYWRpbmdTZWFyY2hLZXkgQCJBWEhlYWRpbmdTZWFyY2hLZXkiCi0jZW5k
aWYKLQotI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlJdGFsaWNGb250U2VhcmNoS2V5Ci0jZGVmaW5l
IE5TQWNjZXNzaWJpbGl0eUl0YWxpY0ZvbnRTZWFyY2hLZXkgQCJBWEl0YWxpY0ZvbnRTZWFyY2hL
ZXkiCi0jZW5kaWYKLQotI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlMYW5kbWFya1NlYXJjaEtleQot
I2RlZmluZSBOU0FjY2Vzc2liaWxpdHlMYW5kbWFya1NlYXJjaEtleSBAIkFYTGFuZG1hcmtTZWFy
Y2hLZXkiCi0jZW5kaWYKLQotI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlMaW5rU2VhcmNoS2V5Ci0j
ZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUxpbmtTZWFyY2hLZXkgQCJBWExpbmtTZWFyY2hLZXkiCi0j
ZW5kaWYKLQotI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlMaXN0U2VhcmNoS2V5Ci0jZGVmaW5lIE5T
QWNjZXNzaWJpbGl0eUxpc3RTZWFyY2hLZXkgQCJBWExpc3RTZWFyY2hLZXkiCi0jZW5kaWYKLQot
I2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlMaXZlUmVnaW9uU2VhcmNoS2V5Ci0jZGVmaW5lIE5TQWNj
ZXNzaWJpbGl0eUxpdmVSZWdpb25TZWFyY2hLZXkgQCJBWExpdmVSZWdpb25TZWFyY2hLZXkiCi0j
ZW5kaWYKLQotI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlNaXNzcGVsbGVkV29yZFNlYXJjaEtleQot
I2RlZmluZSBOU0FjY2Vzc2liaWxpdHlNaXNzcGVsbGVkV29yZFNlYXJjaEtleSBAIkFYTWlzc3Bl
bGxlZFdvcmRTZWFyY2hLZXkiCi0jZW5kaWYKLQotI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlQbGFp
blRleHRTZWFyY2hLZXkKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5UGxhaW5UZXh0U2VhcmNoS2V5
IEAiQVhQbGFpblRleHRTZWFyY2hLZXkiCi0jZW5kaWYKLQotI2lmbmRlZiBOU0FjY2Vzc2liaWxp
dHlSYWRpb0dyb3VwU2VhcmNoS2V5Ci0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eVJhZGlvR3JvdXBT
ZWFyY2hLZXkgQCJBWFJhZGlvR3JvdXBTZWFyY2hLZXkiCi0jZW5kaWYKLQotI2lmbmRlZiBOU0Fj
Y2Vzc2liaWxpdHlTYW1lVHlwZVNlYXJjaEtleQotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlTYW1l
VHlwZVNlYXJjaEtleSBAIkFYU2FtZVR5cGVTZWFyY2hLZXkiCi0jZW5kaWYKLQotI2lmbmRlZiBO
U0FjY2Vzc2liaWxpdHlTdGF0aWNUZXh0U2VhcmNoS2V5Ci0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0
eVN0YXRpY1RleHRTZWFyY2hLZXkgQCJBWFN0YXRpY1RleHRTZWFyY2hLZXkiCi0jZW5kaWYKLQot
I2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlTdHlsZUNoYW5nZVNlYXJjaEtleQotI2RlZmluZSBOU0Fj
Y2Vzc2liaWxpdHlTdHlsZUNoYW5nZVNlYXJjaEtleSBAIkFYU3R5bGVDaGFuZ2VTZWFyY2hLZXki
Ci0jZW5kaWYKLQotI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlUYWJsZVNhbWVMZXZlbFNlYXJjaEtl
eQotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlUYWJsZVNhbWVMZXZlbFNlYXJjaEtleSBAIkFYVGFi
bGVTYW1lTGV2ZWxTZWFyY2hLZXkiCi0jZW5kaWYKLQotI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlU
YWJsZVNlYXJjaEtleQotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlUYWJsZVNlYXJjaEtleSBAIkFY
VGFibGVTZWFyY2hLZXkiCi0jZW5kaWYKLQotI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlUZXh0Rmll
bGRTZWFyY2hLZXkKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5VGV4dEZpZWxkU2VhcmNoS2V5IEAi
QVhUZXh0RmllbGRTZWFyY2hLZXkiCi0jZW5kaWYKLQotI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlV
bmRlcmxpbmVTZWFyY2hLZXkKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5VW5kZXJsaW5lU2VhcmNo
S2V5IEAiQVhVbmRlcmxpbmVTZWFyY2hLZXkiCi0jZW5kaWYKLQotI2lmbmRlZiBOU0FjY2Vzc2li
aWxpdHlVbnZpc2l0ZWRMaW5rU2VhcmNoS2V5Ci0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eVVudmlz
aXRlZExpbmtTZWFyY2hLZXkgQCJBWFVudmlzaXRlZExpbmtTZWFyY2hLZXkiCi0jZW5kaWYKLQot
I2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlWaXNpdGVkTGlua1NlYXJjaEtleQotI2RlZmluZSBOU0Fj
Y2Vzc2liaWxpdHlWaXNpdGVkTGlua1NlYXJjaEtleSBAIkFYVmlzaXRlZExpbmtTZWFyY2hLZXki
Ci0jZW5kaWYKLQotCi1AaW50ZXJmYWNlIE5TT2JqZWN0IChXZWJLaXRBY2Nlc3NpYmlsaXR5QXJy
YXlDYXRlZ29yeSkKLQotLSAoTlNVSW50ZWdlcilhY2Nlc3NpYmlsaXR5SW5kZXhPZkNoaWxkOihp
ZCljaGlsZDsKLS0gKE5TVUludGVnZXIpYWNjZXNzaWJpbGl0eUFycmF5QXR0cmlidXRlQ291bnQ6
KE5TU3RyaW5nICopYXR0cmlidXRlOwotLSAoTlNBcnJheSAqKWFjY2Vzc2liaWxpdHlBcnJheUF0
dHJpYnV0ZVZhbHVlczooTlNTdHJpbmcgKilhdHRyaWJ1dGUgaW5kZXg6KE5TVUludGVnZXIpaW5k
ZXggbWF4Q291bnQ6KE5TVUludGVnZXIpbWF4Q291bnQ7Ci0KLUBlbmQKLQotQGltcGxlbWVudGF0
aW9uIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyCi0KLS0gKGlkKWluaXRXaXRoQWNjZXNzaWJp
bGl0eU9iamVjdDooQWNjZXNzaWJpbGl0eU9iamVjdCopYXhPYmplY3QKLXsKLSAgICBpZiAoIShz
ZWxmID0gW3N1cGVyIGluaXRdKSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIG1fb2JqZWN0
ID0gYXhPYmplY3Q7Ci0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLS0gKHZvaWQpdW5yZWdpc3RlclVu
aXF1ZUlkRm9yVUlFbGVtZW50Ci17Ci0gICAgd2tVbnJlZ2lzdGVyVW5pcXVlSWRGb3JFbGVtZW50
KHNlbGYpOwotfQotCi0tICh2b2lkKWRldGFjaAotewotICAgIC8vIFNlbmQgdW5yZWdpc3RlclVu
aXF1ZUlkRm9yVUlFbGVtZW50IHVuY29uZGl0aW9uYWxseSBiZWNhdXNlIGlmIGl0IGlzCi0gICAg
Ly8gZXZlciBhY2NpZGVudGFsbHkgbm90IGRvbmUgKHZpYSBvdGhlciBidWdzIGluIG91ciBBWCBp
bXBsZW1lbnRhdGlvbikgeW91Ci0gICAgLy8gZW5kIHVwIHdpdGggYSBjcmFzaCBsaWtlIDxyZGFy
Oi8vcHJvYmxlbS80MjczMTQ5Pi4gIEl0IGlzIHNhZmUgYW5kIG5vdAotICAgIC8vIGV4cGVuc2l2
ZSB0byBzZW5kIGV2ZW4gaWYgdGhlIG9iamVjdCBpcyBub3QgcmVnaXN0ZXJlZC4KLSAgICBbc2Vs
ZiB1bnJlZ2lzdGVyVW5pcXVlSWRGb3JVSUVsZW1lbnRdOwotICAgIG1fb2JqZWN0ID0gMDsKLX0K
LQotLSAoQk9PTCl1cGRhdGVPYmplY3RCYWNraW5nU3RvcmUKLXsKLSAgICAvLyBDYWxsaW5nIHVw
ZGF0ZUJhY2tpbmdTdG9yZSgpIGNhbiBpbnZhbGlkYXRlIHRoaXMgZWxlbWVudCBzbyBzZWxmIG11
c3QgYmUgcmV0YWluZWQuCi0gICAgLy8gSWYgaXQgZG9lcyBiZWNvbWUgaW52YWxpZGF0ZWQsIG1f
b2JqZWN0IHdpbGwgYmUgbmlsLgotICAgIFtbc2VsZiByZXRhaW5dIGF1dG9yZWxlYXNlXTsKLSAg
ICAKLSAgICBpZiAoIW1fb2JqZWN0KQotICAgICAgICByZXR1cm4gTk87Ci0gICAgCi0gICAgbV9v
YmplY3QtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOwotICAgIGlmICghbV9vYmplY3QpCi0gICAgICAg
IHJldHVybiBOTzsKLSAgICAKLSAgICByZXR1cm4gWUVTOwotfQotCi0tIChBY2Nlc3NpYmlsaXR5
T2JqZWN0KilhY2Nlc3NpYmlsaXR5T2JqZWN0Ci17Ci0gICAgcmV0dXJuIG1fb2JqZWN0OwotfQot
Ci0tIChOU1ZpZXcqKWF0dGFjaG1lbnRWaWV3Ci17Ci0gICAgQVNTRVJUKG1fb2JqZWN0LT5pc0F0
dGFjaG1lbnQoKSk7Ci0gICAgV2lkZ2V0KiB3aWRnZXQgPSBtX29iamVjdC0+d2lkZ2V0Rm9yQXR0
YWNobWVudFZpZXcoKTsKLSAgICBpZiAoIXdpZGdldCkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAg
ICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5VW5pZ25vcmVkRGVzY2VuZGFudCh3aWRnZXQtPnBsYXRm
b3JtV2lkZ2V0KCkpOwotfQotCi0jcHJhZ21hIG1hcmsgU3lzdGVtSW50ZXJmYWNlIHdyYXBwZXJz
Ci0KLXN0YXRpYyBpbmxpbmUgaWQgQ0ZBdXRvcmVsZWFzZUhlbHBlcihDRlR5cGVSZWYgb2JqKQot
ewotICAgIGlmIChvYmopCi0gICAgICAgIENGTWFrZUNvbGxlY3RhYmxlKG9iaik7Ci0gICAgWyhp
ZClvYmogYXV0b3JlbGVhc2VdOwotICAgIHJldHVybiAoaWQpb2JqOwotfQotCi1zdGF0aWMgaW5s
aW5lIEJPT0wgQVhPYmplY3RJc1RleHRNYXJrZXIoaWQgb2JqKQotewotICAgIHJldHVybiBvYmog
IT0gbmlsICYmIENGR2V0VHlwZUlEKG9iaikgPT0gd2tHZXRBWFRleHRNYXJrZXJUeXBlSUQoKTsg
ICAgCi19Ci0KLXN0YXRpYyBpbmxpbmUgQk9PTCBBWE9iamVjdElzVGV4dE1hcmtlclJhbmdlKGlk
IG9iaikKLXsKLSAgICByZXR1cm4gb2JqICE9IG5pbCAmJiBDRkdldFR5cGVJRChvYmopID09IHdr
R2V0QVhUZXh0TWFya2VyUmFuZ2VUeXBlSUQoKTsgICAgCi19Ci0KLXN0YXRpYyBpZCBBWFRleHRN
YXJrZXJSYW5nZShpZCBzdGFydE1hcmtlciwgaWQgZW5kTWFya2VyKQotewotICAgIEFTU0VSVChz
dGFydE1hcmtlciAhPSBuaWwpOwotICAgIEFTU0VSVChlbmRNYXJrZXIgIT0gbmlsKTsKLSAgICBB
U1NFUlQoQ0ZHZXRUeXBlSUQoc3RhcnRNYXJrZXIpID09IHdrR2V0QVhUZXh0TWFya2VyVHlwZUlE
KCkpOwotICAgIEFTU0VSVChDRkdldFR5cGVJRChlbmRNYXJrZXIpID09IHdrR2V0QVhUZXh0TWFy
a2VyVHlwZUlEKCkpOwotICAgIHJldHVybiBDRkF1dG9yZWxlYXNlSGVscGVyKHdrQ3JlYXRlQVhU
ZXh0TWFya2VyUmFuZ2UoKENGVHlwZVJlZilzdGFydE1hcmtlciwgKENGVHlwZVJlZillbmRNYXJr
ZXIpKTsKLX0KLQotc3RhdGljIGlkIEFYVGV4dE1hcmtlclJhbmdlU3RhcnQoaWQgcmFuZ2UpCi17
Ci0gICAgQVNTRVJUKHJhbmdlICE9IG5pbCk7Ci0gICAgQVNTRVJUKENGR2V0VHlwZUlEKHJhbmdl
KSA9PSB3a0dldEFYVGV4dE1hcmtlclJhbmdlVHlwZUlEKCkpOwotICAgIHJldHVybiBDRkF1dG9y
ZWxlYXNlSGVscGVyKHdrQ29weUFYVGV4dE1hcmtlclJhbmdlU3RhcnQocmFuZ2UpKTsgICAgCi19
Ci0KLXN0YXRpYyBpZCBBWFRleHRNYXJrZXJSYW5nZUVuZChpZCByYW5nZSkKLXsKLSAgICBBU1NF
UlQocmFuZ2UgIT0gbmlsKTsKLSAgICBBU1NFUlQoQ0ZHZXRUeXBlSUQocmFuZ2UpID09IHdrR2V0
QVhUZXh0TWFya2VyUmFuZ2VUeXBlSUQoKSk7Ci0gICAgcmV0dXJuIENGQXV0b3JlbGVhc2VIZWxw
ZXIod2tDb3B5QVhUZXh0TWFya2VyUmFuZ2VFbmQocmFuZ2UpKTsgICAgCi19Ci0KLSNwcmFnbWEg
bWFyayBTZWFyY2ggaGVscGVycwotCi10eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBBY2Nlc3NpYmls
aXR5U2VhcmNoS2V5PiBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5TWFwOwotCi1zdHJ1Y3QgU2VhcmNo
S2V5RW50cnkgewotICAgIFN0cmluZyBrZXk7Ci0gICAgQWNjZXNzaWJpbGl0eVNlYXJjaEtleSB2
YWx1ZTsKLX07Ci0KLXN0YXRpYyBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5TWFwKiBjcmVhdGVBY2Nl
c3NpYmlsaXR5U2VhcmNoS2V5TWFwKCkKLXsKLSAgICBjb25zdCBTZWFyY2hLZXlFbnRyeSBzZWFy
Y2hLZXlzW10gPSB7Ci0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5QW55VHlwZVNlYXJjaEtleSwg
QW55VHlwZVNlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUJsb2NrcXVvdGVT
YW1lTGV2ZWxTZWFyY2hLZXksIEJsb2NrcXVvdGVTYW1lTGV2ZWxTZWFyY2hLZXkgfSwKLSAgICAg
ICAgeyBOU0FjY2Vzc2liaWxpdHlCbG9ja3F1b3RlU2VhcmNoS2V5LCBCbG9ja3F1b3RlU2VhcmNo
S2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5Qm9sZEZvbnRTZWFyY2hLZXksIEJvbGRG
b250U2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5QnV0dG9uU2VhcmNoS2V5
LCBCdXR0b25TZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlDaGVja0JveFNl
YXJjaEtleSwgQ2hlY2tCb3hTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlD
b250cm9sU2VhcmNoS2V5LCBDb250cm9sU2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3Np
YmlsaXR5RGlmZmVyZW50VHlwZVNlYXJjaEtleSwgRGlmZmVyZW50VHlwZVNlYXJjaEtleSB9LAot
ICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUZvbnRDaGFuZ2VTZWFyY2hLZXksIEZvbnRDaGFuZ2VT
ZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlGb250Q29sb3JDaGFuZ2VTZWFy
Y2hLZXksIEZvbnRDb2xvckNoYW5nZVNlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJp
bGl0eUZyYW1lU2VhcmNoS2V5LCBGcmFtZVNlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNz
aWJpbGl0eUdyYXBoaWNTZWFyY2hLZXksIEdyYXBoaWNTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBO
U0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWwxU2VhcmNoS2V5LCBIZWFkaW5nTGV2ZWwxU2VhcmNo
S2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVsMlNlYXJjaEtleSwg
SGVhZGluZ0xldmVsMlNlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUhlYWRp
bmdMZXZlbDNTZWFyY2hLZXksIEhlYWRpbmdMZXZlbDNTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBO
U0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWw0U2VhcmNoS2V5LCBIZWFkaW5nTGV2ZWw0U2VhcmNo
S2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVsNVNlYXJjaEtleSwg
SGVhZGluZ0xldmVsNVNlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUhlYWRp
bmdMZXZlbDZTZWFyY2hLZXksIEhlYWRpbmdMZXZlbDZTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBO
U0FjY2Vzc2liaWxpdHlIZWFkaW5nU2FtZUxldmVsU2VhcmNoS2V5LCBIZWFkaW5nU2FtZUxldmVs
U2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ1NlYXJjaEtleSwg
SGVhZGluZ1NlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUl0YWxpY0ZvbnRT
ZWFyY2hLZXksIEl0YWxpY0ZvbnRTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxp
dHlMYW5kbWFya1NlYXJjaEtleSwgTGFuZG1hcmtTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0Fj
Y2Vzc2liaWxpdHlMaW5rU2VhcmNoS2V5LCBMaW5rU2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNB
Y2Nlc3NpYmlsaXR5TGlzdFNlYXJjaEtleSwgTGlzdFNlYXJjaEtleSB9LAotICAgICAgICB7IE5T
QWNjZXNzaWJpbGl0eUxpdmVSZWdpb25TZWFyY2hLZXksIExpdmVSZWdpb25TZWFyY2hLZXkgfSwK
LSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlNaXNzcGVsbGVkV29yZFNlYXJjaEtleSwgTWlzc3Bl
bGxlZFdvcmRTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlQbGFpblRleHRT
ZWFyY2hLZXksIFBsYWluVGV4dFNlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0
eVJhZGlvR3JvdXBTZWFyY2hLZXksIFJhZGlvR3JvdXBTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBO
U0FjY2Vzc2liaWxpdHlTYW1lVHlwZVNlYXJjaEtleSwgU2FtZVR5cGVTZWFyY2hLZXkgfSwKLSAg
ICAgICAgeyBOU0FjY2Vzc2liaWxpdHlTdGF0aWNUZXh0U2VhcmNoS2V5LCBTdGF0aWNUZXh0U2Vh
cmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5U3R5bGVDaGFuZ2VTZWFyY2hLZXks
IFN0eWxlQ2hhbmdlU2VhcmNoS2V5IH0sCi0gICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5VGFibGVT
YW1lTGV2ZWxTZWFyY2hLZXksIFRhYmxlU2FtZUxldmVsU2VhcmNoS2V5IH0sCi0gICAgICAgIHsg
TlNBY2Nlc3NpYmlsaXR5VGFibGVTZWFyY2hLZXksIFRhYmxlU2VhcmNoS2V5IH0sCi0gICAgICAg
IHsgTlNBY2Nlc3NpYmlsaXR5VGV4dEZpZWxkU2VhcmNoS2V5LCBUZXh0RmllbGRTZWFyY2hLZXkg
fSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlVbmRlcmxpbmVTZWFyY2hLZXksIFVuZGVybGlu
ZVNlYXJjaEtleSB9LAotICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eVVudmlzaXRlZExpbmtTZWFy
Y2hLZXksIFVudmlzaXRlZExpbmtTZWFyY2hLZXkgfSwKLSAgICAgICAgeyBOU0FjY2Vzc2liaWxp
dHlWaXNpdGVkTGlua1NlYXJjaEtleSwgVmlzaXRlZExpbmtTZWFyY2hLZXkgfQotICAgIH07Ci0g
ICAgCi0gICAgQWNjZXNzaWJpbGl0eVNlYXJjaEtleU1hcCogc2VhcmNoS2V5TWFwID0gbmV3IEFj
Y2Vzc2liaWxpdHlTZWFyY2hLZXlNYXA7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBXVEZf
QVJSQVlfTEVOR1RIKHNlYXJjaEtleXMpOyBpKyspCi0gICAgICAgIHNlYXJjaEtleU1hcC0+c2V0
KHNlYXJjaEtleXNbaV0ua2V5LCBzZWFyY2hLZXlzW2ldLnZhbHVlKTsKLSAgICAKLSAgICByZXR1
cm4gc2VhcmNoS2V5TWFwOwotfQotCi1zdGF0aWMgQWNjZXNzaWJpbGl0eVNlYXJjaEtleSBhY2Nl
c3NpYmlsaXR5U2VhcmNoS2V5Rm9yU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCi17Ci0gICAg
QVNTRVJUKCF2YWx1ZS5pc0VtcHR5KCkpOwotICAgIAotICAgIHN0YXRpYyBjb25zdCBBY2Nlc3Np
YmlsaXR5U2VhcmNoS2V5TWFwKiBzZWFyY2hLZXlNYXAgPSBjcmVhdGVBY2Nlc3NpYmlsaXR5U2Vh
cmNoS2V5TWFwKCk7Ci0gICAgCi0gICAgQWNjZXNzaWJpbGl0eVNlYXJjaEtleSBzZWFyY2hLZXkg
PSBzZWFyY2hLZXlNYXAtPmdldCh2YWx1ZSk7Ci0gICAgCi0gICAgcmV0dXJuIHNlYXJjaEtleSA/
IHNlYXJjaEtleSA6IEFueVR5cGVTZWFyY2hLZXk7Ci19Ci0KLSNwcmFnbWEgbWFyayBUZXh0IE1h
cmtlciBoZWxwZXJzCi0KLXN0YXRpYyBpZCB0ZXh0TWFya2VyRm9yVmlzaWJsZVBvc2l0aW9uKEFY
T2JqZWN0Q2FjaGUqIGNhY2hlLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3MpCi17
Ci0gICAgQVNTRVJUKGNhY2hlKTsKLSAgICAKLSAgICBUZXh0TWFya2VyRGF0YSB0ZXh0TWFya2Vy
RGF0YTsKLSAgICBjYWNoZS0+dGV4dE1hcmtlckRhdGFGb3JWaXNpYmxlUG9zaXRpb24odGV4dE1h
cmtlckRhdGEsIHZpc2libGVQb3MpOwotICAgIGlmICghdGV4dE1hcmtlckRhdGEuYXhJRCkKLSAg
ICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICByZXR1cm4gQ0ZBdXRvcmVsZWFzZUhlbHBlcih3
a0NyZWF0ZUFYVGV4dE1hcmtlcigmdGV4dE1hcmtlckRhdGEsIHNpemVvZih0ZXh0TWFya2VyRGF0
YSkpKTsKLX0KLQotLSAoaWQpdGV4dE1hcmtlckZvclZpc2libGVQb3NpdGlvbjooY29uc3QgVmlz
aWJsZVBvc2l0aW9uICYpdmlzaWJsZVBvcwotewotICAgIHJldHVybiB0ZXh0TWFya2VyRm9yVmlz
aWJsZVBvc2l0aW9uKG1fb2JqZWN0LT5heE9iamVjdENhY2hlKCksIHZpc2libGVQb3MpOwotfQot
Ci1zdGF0aWMgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZvclRleHRNYXJrZXIoQVhP
YmplY3RDYWNoZSogY2FjaGUsIENGVHlwZVJlZiB0ZXh0TWFya2VyKQotewotICAgIEFTU0VSVChj
YWNoZSk7Ci0KLSAgICBpZiAoIXRleHRNYXJrZXIpCi0gICAgICAgIHJldHVybiBWaXNpYmxlUG9z
aXRpb24oKTsKLSAgICBUZXh0TWFya2VyRGF0YSB0ZXh0TWFya2VyRGF0YTsKLSAgICBpZiAoIXdr
R2V0Qnl0ZXNGcm9tQVhUZXh0TWFya2VyKHRleHRNYXJrZXIsICZ0ZXh0TWFya2VyRGF0YSwgc2l6
ZW9mKHRleHRNYXJrZXJEYXRhKSkpCi0gICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsK
LSAgICAKLSAgICByZXR1cm4gY2FjaGUtPnZpc2libGVQb3NpdGlvbkZvclRleHRNYXJrZXJEYXRh
KHRleHRNYXJrZXJEYXRhKTsKLX0KLQotLSAoVmlzaWJsZVBvc2l0aW9uKXZpc2libGVQb3NpdGlv
bkZvclRleHRNYXJrZXI6KGlkKXRleHRNYXJrZXIKLXsKLSAgICByZXR1cm4gdmlzaWJsZVBvc2l0
aW9uRm9yVGV4dE1hcmtlcihtX29iamVjdC0+YXhPYmplY3RDYWNoZSgpLCB0ZXh0TWFya2VyKTsK
LX0KLQotc3RhdGljIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JTdGFydE9mVGV4
dE1hcmtlclJhbmdlKEFYT2JqZWN0Q2FjaGUgKmNhY2hlLCBpZCB0ZXh0TWFya2VyUmFuZ2UpCi17
Ci0gICAgcmV0dXJuIHZpc2libGVQb3NpdGlvbkZvclRleHRNYXJrZXIoY2FjaGUsIEFYVGV4dE1h
cmtlclJhbmdlU3RhcnQodGV4dE1hcmtlclJhbmdlKSk7Ci19Ci0KLXN0YXRpYyBWaXNpYmxlUG9z
aXRpb24gdmlzaWJsZVBvc2l0aW9uRm9yRW5kT2ZUZXh0TWFya2VyUmFuZ2UoQVhPYmplY3RDYWNo
ZSAqY2FjaGUsIGlkIHRleHRNYXJrZXJSYW5nZSkKLXsKLSAgICByZXR1cm4gdmlzaWJsZVBvc2l0
aW9uRm9yVGV4dE1hcmtlcihjYWNoZSwgQVhUZXh0TWFya2VyUmFuZ2VFbmQodGV4dE1hcmtlclJh
bmdlKSk7Ci19Ci0KLXN0YXRpYyBpZCB0ZXh0TWFya2VyUmFuZ2VGcm9tTWFya2VycyhpZCB0ZXh0
TWFya2VyMSwgaWQgdGV4dE1hcmtlcjIpCi17Ci0gICAgaWYgKCF0ZXh0TWFya2VyMSB8fCAhdGV4
dE1hcmtlcjIpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgICAgIAotICAgIHJldHVybiBBWFRl
eHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyMSwgdGV4dE1hcmtlcjIpOwotfQotCi1zdGF0aWMgdm9p
ZCBBWEF0dHJpYnV0ZVN0cmluZ1NldEZvbnQoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0
clN0cmluZywgTlNTdHJpbmcqIGF0dHJpYnV0ZSwgTlNGb250KiBmb250LCBOU1JhbmdlIHJhbmdl
KQotewotICAgIE5TRGljdGlvbmFyeSogZGljdDsKLSAgICAKLSAgICBpZiAoZm9udCkgewotICAg
ICAgICBkaWN0ID0gW05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgot
ICAgICAgICAgICAgW2ZvbnQgZm9udE5hbWVdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAs
IE5TQWNjZXNzaWJpbGl0eUZvbnROYW1lS2V5LAotICAgICAgICAgICAgW2ZvbnQgZmFtaWx5TmFt
ZV0gICAgICAgICAgICAgICAgICAgICAgICAgICAsIE5TQWNjZXNzaWJpbGl0eUZvbnRGYW1pbHlL
ZXksCi0gICAgICAgICAgICBbZm9udCBkaXNwbGF5TmFtZV0gICAgICAgICAgICAgICAgICAgICAg
ICAgICwgTlNBY2Nlc3NpYmlsaXR5VmlzaWJsZU5hbWVLZXksCi0gICAgICAgICAgICBbTlNOdW1i
ZXIgbnVtYmVyV2l0aEZsb2F0Oltmb250IHBvaW50U2l6ZV1dICwgTlNBY2Nlc3NpYmlsaXR5Rm9u
dFNpemVLZXksCi0gICAgICAgIG5pbF07Ci0KLSAgICAgICAgW2F0dHJTdHJpbmcgYWRkQXR0cmli
dXRlOmF0dHJpYnV0ZSB2YWx1ZTpkaWN0IHJhbmdlOnJhbmdlXTsKLSAgICB9IGVsc2UKLSAgICAg
ICAgW2F0dHJTdHJpbmcgcmVtb3ZlQXR0cmlidXRlOmF0dHJpYnV0ZSByYW5nZTpyYW5nZV07Ci0g
ICAgCi19Ci0KLXN0YXRpYyBDR0NvbG9yUmVmIENyZWF0ZUNHQ29sb3JJZkRpZmZlcmVudChOU0Nv
bG9yKiBuc0NvbG9yLCBDR0NvbG9yUmVmIGV4aXN0aW5nQ29sb3IpCi17Ci0gICAgLy8gZ2V0IGNv
bG9yIGluZm9ybWF0aW9uIGFzc3VtaW5nIE5TRGV2aWNlUkdCQ29sb3JTcGFjZSAKLSAgICBOU0Nv
bG9yKiByZ2JDb2xvciA9IFtuc0NvbG9yIGNvbG9yVXNpbmdDb2xvclNwYWNlTmFtZTpOU0Rldmlj
ZVJHQkNvbG9yU3BhY2VdOwotICAgIGlmIChyZ2JDb2xvciA9PSBuaWwpCi0gICAgICAgIHJnYkNv
bG9yID0gW05TQ29sb3IgYmxhY2tDb2xvcl07Ci0gICAgQ0dGbG9hdCBjb21wb25lbnRzWzRdOwot
ICAgIFtyZ2JDb2xvciBnZXRSZWQ6JmNvbXBvbmVudHNbMF0gZ3JlZW46JmNvbXBvbmVudHNbMV0g
Ymx1ZTomY29tcG9uZW50c1syXSBhbHBoYTomY29tcG9uZW50c1szXV07Ci0gICAgCi0gICAgLy8g
Y3JlYXRlIGEgbmV3IENHQ29sb3JSZWYgdG8gcmV0dXJuCi0gICAgQ0dDb2xvclNwYWNlUmVmIGNn
Q29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZURldmljZVJHQigpOwotICAgIENHQ29sb3JS
ZWYgY2dDb2xvciA9IENHQ29sb3JDcmVhdGUoY2dDb2xvclNwYWNlLCBjb21wb25lbnRzKTsKLSAg
ICBDR0NvbG9yU3BhY2VSZWxlYXNlKGNnQ29sb3JTcGFjZSk7Ci0gICAgCi0gICAgLy8gY2hlY2sg
Zm9yIG1hdGNoIHdpdGggZXhpc3RpbmcgY29sb3IKLSAgICBpZiAoZXhpc3RpbmdDb2xvciAmJiBD
R0NvbG9yRXF1YWxUb0NvbG9yKGNnQ29sb3IsIGV4aXN0aW5nQ29sb3IpKSB7Ci0gICAgICAgIENH
Q29sb3JSZWxlYXNlKGNnQ29sb3IpOwotICAgICAgICBjZ0NvbG9yID0gMDsKLSAgICB9Ci0gICAg
Ci0gICAgcmV0dXJuIGNnQ29sb3I7Ci19Ci0KLXN0YXRpYyB2b2lkIEFYQXR0cmlidXRlU3RyaW5n
U2V0Q29sb3IoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0clN0cmluZywgTlNTdHJpbmcq
IGF0dHJpYnV0ZSwgTlNDb2xvciogY29sb3IsIE5TUmFuZ2UgcmFuZ2UpCi17Ci0gICAgaWYgKGNv
bG9yKSB7Ci0gICAgICAgIENHQ29sb3JSZWYgZXhpc3RpbmdDb2xvciA9IChDR0NvbG9yUmVmKSBb
YXR0clN0cmluZyBhdHRyaWJ1dGU6YXR0cmlidXRlIGF0SW5kZXg6cmFuZ2UubG9jYXRpb24gZWZm
ZWN0aXZlUmFuZ2U6bmlsXTsKLSAgICAgICAgQ0dDb2xvclJlZiBjZ0NvbG9yID0gQ3JlYXRlQ0dD
b2xvcklmRGlmZmVyZW50KGNvbG9yLCBleGlzdGluZ0NvbG9yKTsKLSAgICAgICAgaWYgKGNnQ29s
b3IpIHsKLSAgICAgICAgICAgIFthdHRyU3RyaW5nIGFkZEF0dHJpYnV0ZTphdHRyaWJ1dGUgdmFs
dWU6KGlkKWNnQ29sb3IgcmFuZ2U6cmFuZ2VdOwotICAgICAgICAgICAgQ0dDb2xvclJlbGVhc2Uo
Y2dDb2xvcik7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UKLSAgICAgICAgW2F0dHJTdHJpbmcgcmVt
b3ZlQXR0cmlidXRlOmF0dHJpYnV0ZSByYW5nZTpyYW5nZV07Ci19Ci0KLXN0YXRpYyB2b2lkIEFY
QXR0cmlidXRlU3RyaW5nU2V0TnVtYmVyKE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJT
dHJpbmcsIE5TU3RyaW5nKiBhdHRyaWJ1dGUsIE5TTnVtYmVyKiBudW1iZXIsIE5TUmFuZ2UgcmFu
Z2UpCi17Ci0gICAgaWYgKG51bWJlcikKLSAgICAgICAgW2F0dHJTdHJpbmcgYWRkQXR0cmlidXRl
OmF0dHJpYnV0ZSB2YWx1ZTpudW1iZXIgcmFuZ2U6cmFuZ2VdOwotICAgIGVsc2UKLSAgICAgICAg
W2F0dHJTdHJpbmcgcmVtb3ZlQXR0cmlidXRlOmF0dHJpYnV0ZSByYW5nZTpyYW5nZV07Ci19Ci0K
LXN0YXRpYyB2b2lkIEFYQXR0cmlidXRlU3RyaW5nU2V0U3R5bGUoTlNNdXRhYmxlQXR0cmlidXRl
ZFN0cmluZyogYXR0clN0cmluZywgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgTlNSYW5nZSByYW5n
ZSkKLXsKLSAgICBSZW5kZXJTdHlsZSogc3R5bGUgPSByZW5kZXJlci0+c3R5bGUoKTsKLQotICAg
IC8vIHNldCBiYXNpYyBmb250IGluZm8KLSAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldEZvbnQoYXR0
clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5Rm9udFRleHRBdHRyaWJ1dGUsIHN0eWxlLT5mb250KCku
cHJpbWFyeUZvbnQoKS0+Z2V0TlNGb250KCksIHJhbmdlKTsKLQotICAgIC8vIHNldCBiYXNpYyBj
b2xvcnMKLSAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldENvbG9yKGF0dHJTdHJpbmcsIE5TQWNjZXNz
aWJpbGl0eUZvcmVncm91bmRDb2xvclRleHRBdHRyaWJ1dGUsIG5zQ29sb3Ioc3R5bGUtPnZpc2l0
ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSksIHJhbmdlKTsKLSAgICBBWEF0dHJp
YnV0ZVN0cmluZ1NldENvbG9yKGF0dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0eUJhY2tncm91bmRD
b2xvclRleHRBdHRyaWJ1dGUsIG5zQ29sb3Ioc3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihD
U1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcikpLCByYW5nZSk7Ci0KLSAgICAvLyBzZXQgc3VwZXIv
c3ViIHNjcmlwdGluZwotICAgIEVWZXJ0aWNhbEFsaWduIGFsaWdubWVudCA9IHN0eWxlLT52ZXJ0
aWNhbEFsaWduKCk7Ci0gICAgaWYgKGFsaWdubWVudCA9PSBTVUIpCi0gICAgICAgIEFYQXR0cmli
dXRlU3RyaW5nU2V0TnVtYmVyKGF0dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0eVN1cGVyc2NyaXB0
VGV4dEF0dHJpYnV0ZSwgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6KC0xKV0sIHJhbmdlKTsKLSAg
ICBlbHNlIGlmIChhbGlnbm1lbnQgPT0gU1VQRVIpCi0gICAgICAgIEFYQXR0cmlidXRlU3RyaW5n
U2V0TnVtYmVyKGF0dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0eVN1cGVyc2NyaXB0VGV4dEF0dHJp
YnV0ZSwgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6MV0sIHJhbmdlKTsKLSAgICBlbHNlCi0gICAg
ICAgIFthdHRyU3RyaW5nIHJlbW92ZUF0dHJpYnV0ZTpOU0FjY2Vzc2liaWxpdHlTdXBlcnNjcmlw
dFRleHRBdHRyaWJ1dGUgcmFuZ2U6cmFuZ2VdOwotICAgIAotICAgIC8vIHNldCBzaGFkb3cKLSAg
ICBpZiAoc3R5bGUtPnRleHRTaGFkb3coKSkKLSAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXRO
dW1iZXIoYXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5U2hhZG93VGV4dEF0dHJpYnV0ZSwgW05T
TnVtYmVyIG51bWJlcldpdGhCb29sOllFU10sIHJhbmdlKTsKLSAgICBlbHNlCi0gICAgICAgIFth
dHRyU3RyaW5nIHJlbW92ZUF0dHJpYnV0ZTpOU0FjY2Vzc2liaWxpdHlTaGFkb3dUZXh0QXR0cmli
dXRlIHJhbmdlOnJhbmdlXTsKLSAgICAKLSAgICAvLyBzZXQgdW5kZXJsaW5lIGFuZCBzdHJpa2V0
aHJvdWdoCi0gICAgaW50IGRlY29yID0gc3R5bGUtPnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCk7
Ci0gICAgaWYgKChkZWNvciAmIFVOREVSTElORSkgPT0gMCkgewotICAgICAgICBbYXR0clN0cmlu
ZyByZW1vdmVBdHRyaWJ1dGU6TlNBY2Nlc3NpYmlsaXR5VW5kZXJsaW5lVGV4dEF0dHJpYnV0ZSBy
YW5nZTpyYW5nZV07Ci0gICAgICAgIFthdHRyU3RyaW5nIHJlbW92ZUF0dHJpYnV0ZTpOU0FjY2Vz
c2liaWxpdHlVbmRlcmxpbmVDb2xvclRleHRBdHRyaWJ1dGUgcmFuZ2U6cmFuZ2VdOwotICAgIH0K
LSAgICAKLSAgICBpZiAoKGRlY29yICYgTElORV9USFJPVUdIKSA9PSAwKSB7Ci0gICAgICAgIFth
dHRyU3RyaW5nIHJlbW92ZUF0dHJpYnV0ZTpOU0FjY2Vzc2liaWxpdHlTdHJpa2V0aHJvdWdoVGV4
dEF0dHJpYnV0ZSByYW5nZTpyYW5nZV07Ci0gICAgICAgIFthdHRyU3RyaW5nIHJlbW92ZUF0dHJp
YnV0ZTpOU0FjY2Vzc2liaWxpdHlTdHJpa2V0aHJvdWdoQ29sb3JUZXh0QXR0cmlidXRlIHJhbmdl
OnJhbmdlXTsKLSAgICB9Ci0KLSAgICBpZiAoKGRlY29yICYgKFVOREVSTElORSB8IExJTkVfVEhS
T1VHSCkpICE9IDApIHsKLSAgICAgICAgLy8gZmluZCBjb2xvcnMgdXNpbmcgcXVpcmsgbW9kZSBh
cHByb2FjaCAoc3RyaWN0IG1vZGUgd291bGQgdXNlIGN1cnJlbnQKLSAgICAgICAgLy8gY29sb3Ig
Zm9yIGFsbCBidXQgdGhlIHJvb3QgbGluZSBib3gsIHdoaWNoIHdvdWxkIHVzZSBnZXRUZXh0RGVj
b3JhdGlvbkNvbG9ycykKLSAgICAgICAgQ29sb3IgdW5kZXJsaW5lLCBvdmVybGluZSwgbGluZXRo
cm91Z2g7Ci0gICAgICAgIHJlbmRlcmVyLT5nZXRUZXh0RGVjb3JhdGlvbkNvbG9ycyhkZWNvciwg
dW5kZXJsaW5lLCBvdmVybGluZSwgbGluZXRocm91Z2gpOwotICAgICAgICAKLSAgICAgICAgaWYg
KChkZWNvciAmIFVOREVSTElORSkgIT0gMCkgewotICAgICAgICAgICAgQVhBdHRyaWJ1dGVTdHJp
bmdTZXROdW1iZXIoYXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5VW5kZXJsaW5lVGV4dEF0dHJp
YnV0ZSwgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOllFU10sIHJhbmdlKTsKLSAgICAgICAgICAg
IEFYQXR0cmlidXRlU3RyaW5nU2V0Q29sb3IoYXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5VW5k
ZXJsaW5lQ29sb3JUZXh0QXR0cmlidXRlLCBuc0NvbG9yKHVuZGVybGluZSksIHJhbmdlKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIGlmICgoZGVjb3IgJiBMSU5FX1RIUk9VR0gpICE9IDApIHsKLSAg
ICAgICAgICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0TnVtYmVyKGF0dHJTdHJpbmcsIE5TQWNjZXNz
aWJpbGl0eVN0cmlrZXRocm91Z2hUZXh0QXR0cmlidXRlLCBbTlNOdW1iZXIgbnVtYmVyV2l0aEJv
b2w6WUVTXSwgcmFuZ2UpOwotICAgICAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXRDb2xvcihh
dHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlTdHJpa2V0aHJvdWdoQ29sb3JUZXh0QXR0cmlidXRl
LCBuc0NvbG9yKGxpbmV0aHJvdWdoKSwgcmFuZ2UpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1z
dGF0aWMgdm9pZCBBWEF0dHJpYnV0ZVN0cmluZ1NldEJsb2NrcXVvdGVMZXZlbChOU011dGFibGVB
dHRyaWJ1dGVkU3RyaW5nKiBhdHRyU3RyaW5nLCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBOU1Jh
bmdlIHJhbmdlKQotewotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiA9IHJlbmRlcmVyLT5k
b2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKHJlbmRlcmVyKTsKLSAgICBp
bnQgcXVvdGVMZXZlbCA9IG9iai0+YmxvY2txdW90ZUxldmVsKCk7Ci0gICAgCi0gICAgaWYgKHF1
b3RlTGV2ZWwpCi0gICAgICAgIFthdHRyU3RyaW5nIGFkZEF0dHJpYnV0ZTpOU0FjY2Vzc2liaWxp
dHlCbG9ja1F1b3RlTGV2ZWxBdHRyaWJ1dGUgdmFsdWU6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6
cXVvdGVMZXZlbF0gcmFuZ2U6cmFuZ2VdOwotICAgIGVsc2UKLSAgICAgICAgW2F0dHJTdHJpbmcg
cmVtb3ZlQXR0cmlidXRlOk5TQWNjZXNzaWJpbGl0eUJsb2NrUXVvdGVMZXZlbEF0dHJpYnV0ZSBy
YW5nZTpyYW5nZV07Ci19Ci0KLXN0YXRpYyB2b2lkIEFYQXR0cmlidXRlU3RyaW5nU2V0U3BlbGxp
bmcoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0clN0cmluZywgTm9kZSogbm9kZSwgY29u
c3QgVUNoYXIqIGNoYXJzLCBpbnQgY2hhckxlbmd0aCwgTlNSYW5nZSByYW5nZSkKLXsKLSNpZiBV
U0UoVU5JRklFRF9URVhUX0NIRUNLSU5HKQotICAgIC8vIENoZWNrIHRoZSBzcGVsbGluZyBkaXJl
Y3RseSBzaW5jZSBkb2N1bWVudC0+bWFya2Vyc0Zvck5vZGUoKSBkb2VzIG5vdCBzdG9yZSB0aGUg
bWlzc3BlbGxlZCBtYXJraW5nIHdoZW4gdGhlIGN1cnNvciBpcyBpbiBhIHdvcmQuCi0gICAgVGV4
dENoZWNrZXJDbGllbnQqIGNoZWNrZXIgPSBub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0
b3IoKS0+dGV4dENoZWNrZXIoKTsKLQotICAgIC8vIGNoZWNrVGV4dE9mUGFyYWdyYXBoIGlzIHRo
ZSBvbmx5IHNwZWxsaW5nL2dyYW1tYXIgY2hlY2tlciBpbXBsZW1lbnRlZCBpbiBXSzEgYW5kIFdL
MgotICAgIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IHJlc3VsdHM7Ci0gICAgY2hlY2tlci0+
Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY2hhcnMsIGNoYXJMZW5ndGgsIFRleHRDaGVja2luZ1R5cGVT
cGVsbGluZywgcmVzdWx0cyk7Ci0gICAgCi0gICAgc2l6ZV90IHNpemUgPSByZXN1bHRzLnNpemUo
KTsKLSAgICBOU051bWJlciogdHJ1ZVZhbHVlID0gW05TTnVtYmVyIG51bWJlcldpdGhCb29sOllF
U107Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7IGkrKykgewotICAgICAgICBj
b25zdCBUZXh0Q2hlY2tpbmdSZXN1bHQmIHJlc3VsdCA9IHJlc3VsdHNbaV07Ci0gICAgICAgIEFY
QXR0cmlidXRlU3RyaW5nU2V0TnVtYmVyKGF0dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0eU1pc3Nw
ZWxsZWRUZXh0QXR0cmlidXRlLCB0cnVlVmFsdWUsIE5TTWFrZVJhbmdlKHJlc3VsdC5sb2NhdGlv
biArIHJhbmdlLmxvY2F0aW9uLCByZXN1bHQubGVuZ3RoKSk7Ci0gICAgfSAgICAKLSNlbHNlCi0g
ICAgaW50IGN1cnJlbnRQb3NpdGlvbiA9IDA7Ci0gICAgd2hpbGUgKGNoYXJMZW5ndGggPiAwKSB7
Ci0gICAgICAgIGNvbnN0IFVDaGFyKiBjaGFyRGF0YSA9IGNoYXJzICsgY3VycmVudFBvc2l0aW9u
OwotICAgICAgICBUZXh0Q2hlY2tlckNsaWVudCogY2hlY2tlciA9IG5vZGUtPmRvY3VtZW50KCkt
PmZyYW1lKCktPmVkaXRvcigpLT50ZXh0Q2hlY2tlcigpOwotICAgICAgICAKLSAgICAgICAgaW50
IG1pc3NwZWxsaW5nTG9jYXRpb24gPSAtMTsKLSAgICAgICAgaW50IG1pc3NwZWxsaW5nTGVuZ3Ro
ID0gMDsKLSAgICAgICAgY2hlY2tlci0+Y2hlY2tTcGVsbGluZ09mU3RyaW5nKGNoYXJEYXRhLCBj
aGFyTGVuZ3RoLCAmbWlzc3BlbGxpbmdMb2NhdGlvbiwgJm1pc3NwZWxsaW5nTGVuZ3RoKTsKLSAg
ICAgICAgaWYgKG1pc3NwZWxsaW5nTG9jYXRpb24gPT0gLTEgfHwgIW1pc3NwZWxsaW5nTGVuZ3Ro
KQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAotICAgICAgICBOU1JhbmdlIHNwZWxsUmFu
Z2UgPSBOU01ha2VSYW5nZShyYW5nZS5sb2NhdGlvbiArIGN1cnJlbnRQb3NpdGlvbiArIG1pc3Nw
ZWxsaW5nTG9jYXRpb24sIG1pc3NwZWxsaW5nTGVuZ3RoKTsKLSAgICAgICAgQVhBdHRyaWJ1dGVT
dHJpbmdTZXROdW1iZXIoYXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5TWlzc3BlbGxlZFRleHRB
dHRyaWJ1dGUsIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpZRVNdLCBzcGVsbFJhbmdlKTsKLSAg
ICAgICAgY2hhckxlbmd0aCAtPSAobWlzc3BlbGxpbmdMb2NhdGlvbiArIG1pc3NwZWxsaW5nTGVu
Z3RoKTsKLSAgICAgICAgY3VycmVudFBvc2l0aW9uICs9IChtaXNzcGVsbGluZ0xvY2F0aW9uICsg
bWlzc3BlbGxpbmdMZW5ndGgpOwotICAgIH0KLSNlbmRpZiAgICAKLX0KLQotc3RhdGljIHZvaWQg
QVhBdHRyaWJ1dGVTdHJpbmdTZXRIZWFkaW5nTGV2ZWwoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmlu
ZyogYXR0clN0cmluZywgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgTlNSYW5nZSByYW5nZSkKLXsK
LSAgICBpZiAoIXJlbmRlcmVyKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgQWNjZXNzaWJp
bGl0eU9iamVjdCogcGFyZW50T2JqZWN0ID0gcmVuZGVyZXItPmRvY3VtZW50KCktPmF4T2JqZWN0
Q2FjaGUoKS0+Z2V0T3JDcmVhdGUocmVuZGVyZXItPnBhcmVudCgpKTsKLSAgICBpbnQgcGFyZW50
SGVhZGluZ0xldmVsID0gcGFyZW50T2JqZWN0LT5oZWFkaW5nTGV2ZWwoKTsKLSAgICAKLSAgICBp
ZiAocGFyZW50SGVhZGluZ0xldmVsKQotICAgICAgICBbYXR0clN0cmluZyBhZGRBdHRyaWJ1dGU6
QCJBWEhlYWRpbmdMZXZlbCIgdmFsdWU6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6cGFyZW50SGVh
ZGluZ0xldmVsXSByYW5nZTpyYW5nZV07Ci0gICAgZWxzZQotICAgICAgICBbYXR0clN0cmluZyBy
ZW1vdmVBdHRyaWJ1dGU6QCJBWEhlYWRpbmdMZXZlbCIgcmFuZ2U6cmFuZ2VdOwotfQotCi1zdGF0
aWMgdm9pZCBBWEF0dHJpYnV0ZVN0cmluZ1NldEVsZW1lbnQoTlNNdXRhYmxlQXR0cmlidXRlZFN0
cmluZyogYXR0clN0cmluZywgTlNTdHJpbmcqIGF0dHJpYnV0ZSwgQWNjZXNzaWJpbGl0eU9iamVj
dCogb2JqZWN0LCBOU1JhbmdlIHJhbmdlKQotewotICAgIGlmIChvYmplY3QgJiYgb2JqZWN0LT5p
c0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QoKSkgewotICAgICAgICAvLyBtYWtlIGEgc2VyaWFs
aXphYmxlIEFYIG9iamVjdAotICAgICAgICAKLSAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJl
ciA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QqPihvYmplY3QpLT5yZW5k
ZXJlcigpOwotICAgICAgICBpZiAoIXJlbmRlcmVyKQotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAKLSAgICAgICAgRG9jdW1lbnQqIGRvYyA9IHJlbmRlcmVyLT5kb2N1bWVudCgpOwotICAg
ICAgICBpZiAoIWRvYykKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgCi0gICAgICAgIEFY
T2JqZWN0Q2FjaGUqIGNhY2hlID0gZG9jLT5heE9iamVjdENhY2hlKCk7Ci0gICAgICAgIGlmICgh
Y2FjaGUpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgQVhVSUVsZW1lbnRSZWYgYXhF
bGVtZW50ID0gd2tDcmVhdGVBWFVJRWxlbWVudFJlZihvYmplY3QtPndyYXBwZXIoKSk7Ci0gICAg
ICAgIGlmIChheEVsZW1lbnQpIHsKLSAgICAgICAgICAgIFthdHRyU3RyaW5nIGFkZEF0dHJpYnV0
ZTphdHRyaWJ1dGUgdmFsdWU6KGlkKWF4RWxlbWVudCByYW5nZTpyYW5nZV07Ci0gICAgICAgICAg
ICBDRlJlbGVhc2UoYXhFbGVtZW50KTsKLSAgICAgICAgfQotICAgIH0gZWxzZQotICAgICAgICBb
YXR0clN0cmluZyByZW1vdmVBdHRyaWJ1dGU6YXR0cmlidXRlIHJhbmdlOnJhbmdlXTsKLX0KLQot
c3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVkU3RyaW5nQXBwZW5kVGV4dChOU011dGFibGVBdHRyaWJ1
dGVkU3RyaW5nKiBhdHRyU3RyaW5nLCBOb2RlKiBub2RlLCBjb25zdCBVQ2hhciogY2hhcnMsIGlu
dCBsZW5ndGgpCi17Ci0gICAgLy8gc2tpcCBpbnZpc2libGUgdGV4dAotICAgIGlmICghbm9kZS0+
cmVuZGVyZXIoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gZWFzaWVyIHRvIGNhbGN1bGF0
ZSB0aGUgcmFuZ2UgYmVmb3JlIGFwcGVuZGluZyB0aGUgc3RyaW5nCi0gICAgTlNSYW5nZSBhdHRy
U3RyaW5nUmFuZ2UgPSBOU01ha2VSYW5nZShbYXR0clN0cmluZyBsZW5ndGhdLCBsZW5ndGgpOwot
ICAgIAotICAgIC8vIGFwcGVuZCB0aGUgc3RyaW5nIGZyb20gdGhpcyBub2RlCi0gICAgW1thdHRy
U3RyaW5nIG11dGFibGVTdHJpbmddIGFwcGVuZFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aENo
YXJhY3RlcnM6Y2hhcnMgbGVuZ3RoOmxlbmd0aF1dOwotCi0gICAgLy8gYWRkIG5ldyBhdHRyaWJ1
dGVzIGFuZCByZW1vdmUgaXJyZWxldmFudCBpbmhlcml0ZWQgb25lcwotICAgIC8vIE5PVEU6IGNv
bG9yIGF0dHJpYnV0ZXMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJlY2F1c2UgLVtOU011dGFibGVB
dHRyaWJ1dGVkU3RyaW5nIGFkZEF0dHJpYnV0ZTogdmFsdWU6IHJhbmdlOl0gZG9lcyBub3QgbWVy
Z2UKLSAgICAvLyBpZGVudGljYWwgY29sb3JzLiAgV29ya2Fyb3VuZCBpcyB0byBub3QgcmVwbGFj
ZSBhbiBleGlzdGluZyBjb2xvciBhdHRyaWJ1dGUgaWYgaXQgbWF0Y2hlcyB3aGF0IHdlIGFyZSBh
ZGRpbmcuICBUaGlzIGFsc28gbWVhbnMKLSAgICAvLyB3ZSBjYW5ub3QganVzdCBwcmUtcmVtb3Zl
IGFsbCBpbmhlcml0ZWQgYXR0cmlidXRlcyBvbiB0aGUgYXBwZW5kZWQgc3RyaW5nLCBzbyB3ZSBo
YXZlIHRvIHJlbW92ZSB0aGUgaXJyZWxldmFudCBvbmVzIGluZGl2aWR1YWxseS4KLQotICAgIC8v
IHJlbW92ZSBpbmhlcml0ZWQgYXR0YWNobWVudCBmcm9tIHByaW9yIEFYQXR0cmlidXRlZFN0cmlu
Z0FwcGVuZFJlcGxhY2VkCi0gICAgW2F0dHJTdHJpbmcgcmVtb3ZlQXR0cmlidXRlOk5TQWNjZXNz
aWJpbGl0eUF0dGFjaG1lbnRUZXh0QXR0cmlidXRlIHJhbmdlOmF0dHJTdHJpbmdSYW5nZV07Ci0g
ICAgW2F0dHJTdHJpbmcgcmVtb3ZlQXR0cmlidXRlOk5TQWNjZXNzaWJpbGl0eU1pc3NwZWxsZWRU
ZXh0QXR0cmlidXRlIHJhbmdlOmF0dHJTdHJpbmdSYW5nZV07Ci0gICAgCi0gICAgLy8gc2V0IG5l
dyBhdHRyaWJ1dGVzCi0gICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXRTdHlsZShhdHRyU3RyaW5nLCBu
b2RlLT5yZW5kZXJlcigpLCBhdHRyU3RyaW5nUmFuZ2UpOwotICAgIEFYQXR0cmlidXRlU3RyaW5n
U2V0SGVhZGluZ0xldmVsKGF0dHJTdHJpbmcsIG5vZGUtPnJlbmRlcmVyKCksIGF0dHJTdHJpbmdS
YW5nZSk7Ci0gICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXRCbG9ja3F1b3RlTGV2ZWwoYXR0clN0cmlu
Zywgbm9kZS0+cmVuZGVyZXIoKSwgYXR0clN0cmluZ1JhbmdlKTsKLSAgICBBWEF0dHJpYnV0ZVN0
cmluZ1NldEVsZW1lbnQoYXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5TGlua1RleHRBdHRyaWJ1
dGUsIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFuY2hvckVsZW1lbnRGb3JOb2RlKG5vZGUpLCBhdHRy
U3RyaW5nUmFuZ2UpOwotICAgIAotICAgIC8vIGRvIHNwZWxsaW5nIGxhc3QgYmVjYXVzZSBpdCB0
ZW5kcyB0byBicmVhayB1cCB0aGUgcmFuZ2UKLSAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldFNwZWxs
aW5nKGF0dHJTdHJpbmcsIG5vZGUsIGNoYXJzLCBsZW5ndGgsIGF0dHJTdHJpbmdSYW5nZSk7Ci19
Ci0KLXN0YXRpYyBOU1N0cmluZyogbnNTdHJpbmdGb3JSZXBsYWNlZE5vZGUoTm9kZSogcmVwbGFj
ZWROb2RlKQotewotICAgIC8vIHdlIHNob3VsZCBhbHdheXMgYmUgZ2l2ZW4gYSByZW5kZXJlZCBu
b2RlIGFuZCBhIHJlcGxhY2VkIG5vZGUsIGJ1dCBiZSBzYWZlCi0gICAgLy8gcmVwbGFjZWQgbm9k
ZXMgYXJlIGVpdGhlciBhdHRhY2htZW50cyAod2lkZ2V0cykgb3IgaW1hZ2VzCi0gICAgaWYgKCFy
ZXBsYWNlZE5vZGUgfHwgIXJlcGxhY2VkTm9kZS0+cmVuZGVyZXIoKSB8fCAhcmVwbGFjZWROb2Rl
LT5yZW5kZXJlcigpLT5pc1JlcGxhY2VkKCkgfHwgcmVwbGFjZWROb2RlLT5pc1RleHROb2RlKCkp
IHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBuaWw7Ci0g
ICAgfQotCi0gICAgLy8gY3JlYXRlIGFuIEFYIG9iamVjdCwgYnV0IHNraXAgaXQgaWYgaXQgaXMg
bm90IHN1cHBvc2VkIHRvIGJlIHNlZW4KLSAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4g
b2JqID0gcmVwbGFjZWROb2RlLT5yZW5kZXJlcigpLT5kb2N1bWVudCgpLT5heE9iamVjdENhY2hl
KCktPmdldE9yQ3JlYXRlKHJlcGxhY2VkTm9kZS0+cmVuZGVyZXIoKSk7Ci0gICAgaWYgKG9iai0+
YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAg
IC8vIHVzZSB0aGUgYXR0YWNobWVudENoYXJhY3RlciB0byByZXByZXNlbnQgdGhlIHJlcGxhY2Vk
IG5vZGUKLSAgICBjb25zdCBVbmlDaGFyIGF0dGFjaG1lbnRDaGFyID0gTlNBdHRhY2htZW50Q2hh
cmFjdGVyOwotICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmF0dGFj
aG1lbnRDaGFyIGxlbmd0aDoxXTsKLX0KLQotLSAoTlNBdHRyaWJ1dGVkU3RyaW5nKilkb0FYQXR0
cmlidXRlZFN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZTooaWQpdGV4dE1hcmtlclJhbmdlCi17Ci0g
ICAgaWYgKCFtX29iamVjdCkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICAvLyBleHRy
YWN0IHRoZSBzdGFydCBhbmQgZW5kIFZpc2libGVQb3NpdGlvbgotICAgIFZpc2libGVQb3NpdGlv
biBzdGFydFZpc2libGVQb3NpdGlvbiA9IHZpc2libGVQb3NpdGlvbkZvclN0YXJ0T2ZUZXh0TWFy
a2VyUmFuZ2UobV9vYmplY3QtPmF4T2JqZWN0Q2FjaGUoKSwgdGV4dE1hcmtlclJhbmdlKTsKLSAg
ICBpZiAoc3RhcnRWaXNpYmxlUG9zaXRpb24uaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBuaWw7
Ci0KLSAgICBWaXNpYmxlUG9zaXRpb24gZW5kVmlzaWJsZVBvc2l0aW9uID0gdmlzaWJsZVBvc2l0
aW9uRm9yRW5kT2ZUZXh0TWFya2VyUmFuZ2UobV9vYmplY3QtPmF4T2JqZWN0Q2FjaGUoKSwgdGV4
dE1hcmtlclJhbmdlKTsKLSAgICBpZiAoZW5kVmlzaWJsZVBvc2l0aW9uLmlzTnVsbCgpKQotICAg
ICAgICByZXR1cm4gbmlsOwotCi0gICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgdmlzaWJsZVBvc2l0
aW9uUmFuZ2Uoc3RhcnRWaXNpYmxlUG9zaXRpb24sIGVuZFZpc2libGVQb3NpdGlvbik7Ci0gICAg
Ly8gaXRlcmF0ZSBvdmVyIHRoZSByYW5nZSB0byBidWlsZCB0aGUgQVggYXR0cmlidXRlZCBzdHJp
bmcKLSAgICBOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBhdHRyU3RyaW5nID0gW1tOU011dGFi
bGVBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0XTsKLSAgICBUZXh0SXRlcmF0b3IgaXQobWFr
ZVJhbmdlKHN0YXJ0VmlzaWJsZVBvc2l0aW9uLCBlbmRWaXNpYmxlUG9zaXRpb24pLmdldCgpKTsK
LSAgICB3aGlsZSAoIWl0LmF0RW5kKCkpIHsKLSAgICAgICAgLy8gbG9jYXRlIHRoZSBub2RlIGFu
ZCBzdGFydGluZyBvZmZzZXQgZm9yIHRoaXMgcmFuZ2UKLSAgICAgICAgaW50IGV4Y2VwdGlvbiA9
IDA7Ci0gICAgICAgIE5vZGUqIG5vZGUgPSBpdC5yYW5nZSgpLT5zdGFydENvbnRhaW5lcihleGNl
cHRpb24pOwotICAgICAgICBBU1NFUlQobm9kZSA9PSBpdC5yYW5nZSgpLT5lbmRDb250YWluZXIo
ZXhjZXB0aW9uKSk7Ci0gICAgICAgIGludCBvZmZzZXQgPSBpdC5yYW5nZSgpLT5zdGFydE9mZnNl
dChleGNlcHRpb24pOwotCi0gICAgICAgIC8vIG5vbi16ZXJvIGxlbmd0aCBtZWFucyB0ZXh0dWFs
IG5vZGUsIHplcm8gbGVuZ3RoIG1lYW5zIHJlcGxhY2VkIG5vZGUgKEFLQSAiYXR0YWNobWVudHMi
IGluIEFYKQotICAgICAgICBpZiAoaXQubGVuZ3RoKCkgIT0gMCkgewotICAgICAgICAgICAgLy8g
QWRkIHRoZSB0ZXh0IG9mIHRoZSBsaXN0IG1hcmtlciBpdGVtIGlmIG5lY2Vzc2FyeS4KLSAgICAg
ICAgICAgIFN0cmluZyBsaXN0TWFya2VyVGV4dCA9IG1fb2JqZWN0LT5saXN0TWFya2VyVGV4dEZv
ck5vZGVBbmRQb3NpdGlvbihub2RlLCBWaXNpYmxlUG9zaXRpb24oaXQucmFuZ2UoKS0+c3RhcnRQ
b3NpdGlvbigpKSk7Ci0gICAgICAgICAgICBpZiAoIWxpc3RNYXJrZXJUZXh0LmlzRW1wdHkoKSkK
LSAgICAgICAgICAgICAgICBBWEF0dHJpYnV0ZWRTdHJpbmdBcHBlbmRUZXh0KGF0dHJTdHJpbmcs
IG5vZGUsIGxpc3RNYXJrZXJUZXh0LmNoYXJhY3RlcnMoKSwgbGlzdE1hcmtlclRleHQubGVuZ3Ro
KCkpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBBWEF0dHJpYnV0ZWRTdHJpbmdBcHBlbmRU
ZXh0KGF0dHJTdHJpbmcsIG5vZGUsIGl0LmNoYXJhY3RlcnMoKSwgaXQubGVuZ3RoKCkpOwotICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgTm9kZSogcmVwbGFjZWROb2RlID0gbm9kZS0+Y2hp
bGROb2RlKG9mZnNldCk7Ci0gICAgICAgICAgICBOU1N0cmluZyAqYXR0YWNobWVudFN0cmluZyA9
IG5zU3RyaW5nRm9yUmVwbGFjZWROb2RlKHJlcGxhY2VkTm9kZSk7Ci0gICAgICAgICAgICBpZiAo
YXR0YWNobWVudFN0cmluZykgewotICAgICAgICAgICAgICAgIE5TUmFuZ2UgYXR0clN0cmluZ1Jh
bmdlID0gTlNNYWtlUmFuZ2UoW2F0dHJTdHJpbmcgbGVuZ3RoXSwgW2F0dGFjaG1lbnRTdHJpbmcg
bGVuZ3RoXSk7Ci0KLSAgICAgICAgICAgICAgICAvLyBhcHBlbmQgdGhlIHBsYWNlaG9sZGVyIHN0
cmluZwotICAgICAgICAgICAgICAgIFtbYXR0clN0cmluZyBtdXRhYmxlU3RyaW5nXSBhcHBlbmRT
dHJpbmc6YXR0YWNobWVudFN0cmluZ107Ci0KLSAgICAgICAgICAgICAgICAvLyByZW1vdmUgYWxs
IGluaGVyaXRlZCBhdHRyaWJ1dGVzCi0gICAgICAgICAgICAgICAgW2F0dHJTdHJpbmcgc2V0QXR0
cmlidXRlczpuaWwgcmFuZ2U6YXR0clN0cmluZ1JhbmdlXTsKLQotICAgICAgICAgICAgICAgIC8v
IGFkZCB0aGUgYXR0YWNobWVudCBhdHRyaWJ1dGUKLSAgICAgICAgICAgICAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBvYmogPSByZXBsYWNlZE5vZGUtPnJlbmRlcmVyKCktPmRvY3VtZW50KCktPmF4
T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUocmVwbGFjZWROb2RlLT5yZW5kZXJlcigpKTsKLSAg
ICAgICAgICAgICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldEVsZW1lbnQoYXR0clN0cmluZywgTlNB
Y2Nlc3NpYmlsaXR5QXR0YWNobWVudFRleHRBdHRyaWJ1dGUsIG9iaiwgYXR0clN0cmluZ1Jhbmdl
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpdC5hZHZhbmNlKCk7Ci0gICAg
fQotCi0gICAgcmV0dXJuIFthdHRyU3RyaW5nIGF1dG9yZWxlYXNlXTsKLX0KLQotc3RhdGljIGlk
IHRleHRNYXJrZXJSYW5nZUZyb21WaXNpYmxlUG9zaXRpb25zKEFYT2JqZWN0Q2FjaGUgKmNhY2hl
LCBWaXNpYmxlUG9zaXRpb24gc3RhcnRQb3NpdGlvbiwgVmlzaWJsZVBvc2l0aW9uIGVuZFBvc2l0
aW9uKQotewotICAgIGlkIHN0YXJ0VGV4dE1hcmtlciA9IHRleHRNYXJrZXJGb3JWaXNpYmxlUG9z
aXRpb24oY2FjaGUsIHN0YXJ0UG9zaXRpb24pOwotICAgIGlkIGVuZFRleHRNYXJrZXIgPSB0ZXh0
TWFya2VyRm9yVmlzaWJsZVBvc2l0aW9uKGNhY2hlLCBlbmRQb3NpdGlvbik7Ci0gICAgcmV0dXJu
IHRleHRNYXJrZXJSYW5nZUZyb21NYXJrZXJzKHN0YXJ0VGV4dE1hcmtlciwgZW5kVGV4dE1hcmtl
cik7Ci19Ci0KLS0gKGlkKXRleHRNYXJrZXJSYW5nZUZyb21WaXNpYmxlUG9zaXRpb25zOihWaXNp
YmxlUG9zaXRpb24pc3RhcnRQb3NpdGlvbiBlbmRQb3NpdGlvbjooVmlzaWJsZVBvc2l0aW9uKWVu
ZFBvc2l0aW9uCi17Ci0gICAgcmV0dXJuIHRleHRNYXJrZXJSYW5nZUZyb21WaXNpYmxlUG9zaXRp
b25zKG1fb2JqZWN0LT5heE9iamVjdENhY2hlKCksIHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9u
KTsKLX0KLQotLSAoTlNBcnJheSopYWNjZXNzaWJpbGl0eUFjdGlvbk5hbWVzCi17Ci0gICAgaWYg
KCFbc2VsZiB1cGRhdGVPYmplY3RCYWNraW5nU3RvcmVdKQotICAgICAgICByZXR1cm4gbmlsOwot
Ci0gICAgc3RhdGljIE5TQXJyYXkqIGFjdGlvbkVsZW1lbnRBY3Rpb25zID0gW1tOU0FycmF5IGFs
bG9jXSBpbml0V2l0aE9iamVjdHM6IE5TQWNjZXNzaWJpbGl0eVByZXNzQWN0aW9uLCBOU0FjY2Vz
c2liaWxpdHlTaG93TWVudUFjdGlvbiwgbmlsXTsKLSAgICBzdGF0aWMgTlNBcnJheSogZGVmYXVs
dEVsZW1lbnRBY3Rpb25zID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6IE5TQWNj
ZXNzaWJpbGl0eVNob3dNZW51QWN0aW9uLCBuaWxdOwotICAgIHN0YXRpYyBOU0FycmF5KiBtZW51
RWxlbWVudEFjdGlvbnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czogTlNBY2Nl
c3NpYmlsaXR5Q2FuY2VsQWN0aW9uLCBOU0FjY2Vzc2liaWxpdHlQcmVzc0FjdGlvbiwgbmlsXTsK
LSAgICBzdGF0aWMgTlNBcnJheSogc2xpZGVyQWN0aW9ucyA9IFtbTlNBcnJheSBhbGxvY10gaW5p
dFdpdGhPYmplY3RzOiBOU0FjY2Vzc2liaWxpdHlJbmNyZW1lbnRBY3Rpb24sIE5TQWNjZXNzaWJp
bGl0eURlY3JlbWVudEFjdGlvbiwgbmlsXTsKLQotICAgIE5TQXJyYXkgKmFjdGlvbnM7Ci0gICAg
aWYgKG1fb2JqZWN0LT5hY3Rpb25FbGVtZW50KCkpIAotICAgICAgICBhY3Rpb25zID0gYWN0aW9u
RWxlbWVudEFjdGlvbnM7Ci0gICAgZWxzZSBpZiAobV9vYmplY3QtPmlzTWVudVJlbGF0ZWQoKSkK
LSAgICAgICAgYWN0aW9ucyA9IG1lbnVFbGVtZW50QWN0aW9uczsKLSAgICBlbHNlIGlmIChtX29i
amVjdC0+aXNTbGlkZXIoKSkKLSAgICAgICAgYWN0aW9ucyA9IHNsaWRlckFjdGlvbnM7Ci0gICAg
ZWxzZSBpZiAobV9vYmplY3QtPmlzQXR0YWNobWVudCgpKQotICAgICAgICBhY3Rpb25zID0gW1tz
ZWxmIGF0dGFjaG1lbnRWaWV3XSBhY2Nlc3NpYmlsaXR5QWN0aW9uTmFtZXNdOwotICAgIGVsc2UK
LSAgICAgICAgYWN0aW9ucyA9IGRlZmF1bHRFbGVtZW50QWN0aW9uczsKLQotICAgIHJldHVybiBh
Y3Rpb25zOwotfQotCi0tIChOU0FycmF5KilhZGRpdGlvbmFsQWNjZXNzaWJpbGl0eUF0dHJpYnV0
ZU5hbWVzCi17Ci0gICAgaWYgKCFtX29iamVjdCkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAg
IE5TTXV0YWJsZUFycmF5ICphZGRpdGlvbmFsID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKLSAg
ICBpZiAobV9vYmplY3QtPnN1cHBvcnRzQVJJQU93bnMoKSkKLSAgICAgICAgW2FkZGl0aW9uYWwg
YWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU93bnNBdHRyaWJ1dGVdOwotCi0gICAgaWYgKG1fb2Jq
ZWN0LT5zdXBwb3J0c0FSSUFFeHBhbmRlZCgpKQotICAgICAgICBbYWRkaXRpb25hbCBhZGRPYmpl
Y3Q6TlNBY2Nlc3NpYmlsaXR5RXhwYW5kZWRBdHRyaWJ1dGVdOwotICAgIAotICAgIGlmIChtX29i
amVjdC0+aXNTY3JvbGxiYXIoKSkKLSAgICAgICAgW2FkZGl0aW9uYWwgYWRkT2JqZWN0Ok5TQWNj
ZXNzaWJpbGl0eU9yaWVudGF0aW9uQXR0cmlidXRlXTsKLSAgICAKLSAgICBpZiAobV9vYmplY3Qt
PnN1cHBvcnRzQVJJQURyYWdnaW5nKCkpCi0gICAgICAgIFthZGRpdGlvbmFsIGFkZE9iamVjdDpO
U0FjY2Vzc2liaWxpdHlHcmFiYmVkQXR0cmlidXRlXTsKLQotICAgIGlmIChtX29iamVjdC0+c3Vw
cG9ydHNBUklBRHJvcHBpbmcoKSkKLSAgICAgICAgW2FkZGl0aW9uYWwgYWRkT2JqZWN0Ok5TQWNj
ZXNzaWJpbGl0eURyb3BFZmZlY3RzQXR0cmlidXRlXTsKLQotICAgIGlmIChtX29iamVjdC0+aXNB
Y2Nlc3NpYmlsaXR5VGFibGUoKSAmJiBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGUqPiht
X29iamVjdCktPnN1cHBvcnRzU2VsZWN0ZWRSb3dzKCkpCi0gICAgICAgIFthZGRpdGlvbmFsIGFk
ZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFJvd3NBdHRyaWJ1dGVdOyAgICAgICAgCi0g
ICAgCi0gICAgaWYgKG1fb2JqZWN0LT5zdXBwb3J0c0FSSUFMaXZlUmVnaW9uKCkpIHsKLSAgICAg
ICAgW2FkZGl0aW9uYWwgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUFSSUFMaXZlQXR0cmlidXRl
XTsKLSAgICAgICAgW2FkZGl0aW9uYWwgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUFSSUFSZWxl
dmFudEF0dHJpYnV0ZV07Ci0gICAgfQotICAgIAotICAgIGlmIChtX29iamVjdC0+c29ydERpcmVj
dGlvbigpICE9IFNvcnREaXJlY3Rpb25Ob25lKQotICAgICAgICBbYWRkaXRpb25hbCBhZGRPYmpl
Y3Q6TlNBY2Nlc3NpYmlsaXR5U29ydERpcmVjdGlvbkF0dHJpYnV0ZV07Ci0gICAgICAgIAotICAg
IC8vIElmIGFuIG9iamVjdCBpcyBhIGNoaWxkIG9mIGEgbGl2ZSByZWdpb24sIHRoZW4gYWRkIHRo
ZXNlCi0gICAgaWYgKG1fb2JqZWN0LT5pc0luc2lkZUFSSUFMaXZlUmVnaW9uKCkpIHsKLSAgICAg
ICAgW2FkZGl0aW9uYWwgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUFSSUFBdG9taWNBdHRyaWJ1
dGVdOwotICAgICAgICBbYWRkaXRpb25hbCBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5QVJJQUJ1
c3lBdHRyaWJ1dGVdOwotICAgIH0KLSAgICAKLSAgICBpZiAobV9vYmplY3QtPmFyaWFIYXNQb3B1
cCgpKQotICAgICAgICBbYWRkaXRpb25hbCBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5SGFzUG9w
dXBBdHRyaWJ1dGVdOwotICAgIAotICAgIHJldHVybiBhZGRpdGlvbmFsOwotfQotCi0tIChOU0Fy
cmF5KilhY2Nlc3NpYmlsaXR5QXR0cmlidXRlTmFtZXMKLXsKLSAgICBpZiAoIVtzZWxmIHVwZGF0
ZU9iamVjdEJhY2tpbmdTdG9yZV0pCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgaWYg
KG1fb2JqZWN0LT5pc0F0dGFjaG1lbnQoKSkKLSAgICAgICAgcmV0dXJuIFtbc2VsZiBhdHRhY2ht
ZW50Vmlld10gYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZU5hbWVzXTsKLQotICAgIHN0YXRpYyBOU0Fy
cmF5KiBhdHRyaWJ1dGVzID0gbmlsOwotICAgIHN0YXRpYyBOU0FycmF5KiBhbmNob3JBdHRycyA9
IG5pbDsKLSAgICBzdGF0aWMgTlNBcnJheSogd2ViQXJlYUF0dHJzID0gbmlsOwotICAgIHN0YXRp
YyBOU0FycmF5KiB0ZXh0QXR0cnMgPSBuaWw7Ci0gICAgc3RhdGljIE5TQXJyYXkqIGxpc3RBdHRy
cyA9IG5pbDsKLSAgICBzdGF0aWMgTlNBcnJheSogbGlzdEJveEF0dHJzID0gbmlsOwotICAgIHN0
YXRpYyBOU0FycmF5KiByYW5nZUF0dHJzID0gbmlsOwotICAgIHN0YXRpYyBOU0FycmF5KiBjb21t
b25NZW51QXR0cnMgPSBuaWw7Ci0gICAgc3RhdGljIE5TQXJyYXkqIG1lbnVBdHRycyA9IG5pbDsK
LSAgICBzdGF0aWMgTlNBcnJheSogbWVudUJhckF0dHJzID0gbmlsOwotICAgIHN0YXRpYyBOU0Fy
cmF5KiBtZW51SXRlbUF0dHJzID0gbmlsOwotICAgIHN0YXRpYyBOU0FycmF5KiBtZW51QnV0dG9u
QXR0cnMgPSBuaWw7Ci0gICAgc3RhdGljIE5TQXJyYXkqIGNvbnRyb2xBdHRycyA9IG5pbDsKLSAg
ICBzdGF0aWMgTlNBcnJheSogdGFibGVBdHRycyA9IG5pbDsKLSAgICBzdGF0aWMgTlNBcnJheSog
dGFibGVSb3dBdHRycyA9IG5pbDsKLSAgICBzdGF0aWMgTlNBcnJheSogdGFibGVDb2xBdHRycyA9
IG5pbDsKLSAgICBzdGF0aWMgTlNBcnJheSogdGFibGVDZWxsQXR0cnMgPSBuaWw7Ci0gICAgc3Rh
dGljIE5TQXJyYXkqIGdyb3VwQXR0cnMgPSBuaWw7Ci0gICAgc3RhdGljIE5TQXJyYXkqIGlucHV0
SW1hZ2VBdHRycyA9IG5pbDsKLSAgICBzdGF0aWMgTlNBcnJheSogcGFzc3dvcmRGaWVsZEF0dHJz
ID0gbmlsOwotICAgIHN0YXRpYyBOU0FycmF5KiB0YWJMaXN0QXR0cnMgPSBuaWw7Ci0gICAgc3Rh
dGljIE5TQXJyYXkqIGNvbWJvQm94QXR0cnMgPSBuaWw7Ci0gICAgc3RhdGljIE5TQXJyYXkqIG91
dGxpbmVBdHRycyA9IG5pbDsKLSAgICBzdGF0aWMgTlNBcnJheSogb3V0bGluZVJvd0F0dHJzID0g
bmlsOwotICAgIHN0YXRpYyBOU0FycmF5KiBidXR0b25BdHRycyA9IG5pbDsKLSAgICBzdGF0aWMg
TlNBcnJheSogc2Nyb2xsVmlld0F0dHJzID0gbmlsOwotICAgIE5TTXV0YWJsZUFycmF5KiB0ZW1w
QXJyYXk7Ci0gICAgaWYgKGF0dHJpYnV0ZXMgPT0gbmlsKSB7Ci0gICAgICAgIGF0dHJpYnV0ZXMg
PSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czogTlNBY2Nlc3NpYmlsaXR5Um9sZUF0
dHJpYnV0ZSwKLSAgICAgICAgICAgICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlTdWJyb2xlQXR0
cmlidXRlLAotICAgICAgICAgICAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eVJvbGVEZXNjcmlw
dGlvbkF0dHJpYnV0ZSwKLSAgICAgICAgICAgICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlDaGls
ZHJlbkF0dHJpYnV0ZSwKLSAgICAgICAgICAgICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlIZWxw
QXR0cmlidXRlLAotICAgICAgICAgICAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eVBhcmVudEF0
dHJpYnV0ZSwKLSAgICAgICAgICAgICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlQb3NpdGlvbkF0
dHJpYnV0ZSwKLSAgICAgICAgICAgICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlTaXplQXR0cmli
dXRlLAotICAgICAgICAgICAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eVRpdGxlQXR0cmlidXRl
LAotICAgICAgICAgICAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uQXR0cmli
dXRlLAotICAgICAgICAgICAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eVZhbHVlQXR0cmlidXRl
LAotICAgICAgICAgICAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eUZvY3VzZWRBdHRyaWJ1dGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5RW5hYmxlZEF0dHJpYnV0ZSwK
LSAgICAgICAgICAgICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlXaW5kb3dBdHRyaWJ1dGUsCi0g
ICAgICAgICAgICAgICAgICAgICAgQCJBWFNlbGVjdGVkVGV4dE1hcmtlclJhbmdlIiwKLSAgICAg
ICAgICAgICAgICAgICAgICBAIkFYU3RhcnRUZXh0TWFya2VyIiwKLSAgICAgICAgICAgICAgICAg
ICAgICBAIkFYRW5kVGV4dE1hcmtlciIsCi0gICAgICAgICAgICAgICAgICAgICAgQCJBWFZpc2l0
ZWQiLAotICAgICAgICAgICAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eUxpbmtlZFVJRWxlbWVu
dHNBdHRyaWJ1dGUsCi0gICAgICAgICAgICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5U2VsZWN0
ZWRBdHRyaWJ1dGUsCi0gICAgICAgICAgICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5QmxvY2tR
dW90ZUxldmVsQXR0cmlidXRlLAotICAgICAgICAgICAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0
eVRvcExldmVsVUlFbGVtZW50QXR0cmlidXRlLAotICAgICAgICAgICAgICAgICAgICAgIG5pbF07
Ci0gICAgfQotICAgIGlmIChjb21tb25NZW51QXR0cnMgPT0gbmlsKSB7Ci0gICAgICAgIGNvbW1v
bk1lbnVBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOiBOU0FjY2Vzc2li
aWxpdHlSb2xlQXR0cmlidXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5TQWNjZXNz
aWJpbGl0eVJvbGVEZXNjcmlwdGlvbkF0dHJpYnV0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBOU0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlQYXJlbnRBdHRyaWJ1dGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5RW5hYmxlZEF0dHJpYnV0ZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlQb3NpdGlvbkF0dHJpYnV0ZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlTaXplQXR0cmlidXRlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pbF07Ci0gICAgfQotICAgIGlmIChhbmNob3JB
dHRycyA9PSBuaWwpIHsKLSAgICAgICAgdGVtcEFycmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxv
Y10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzXTsKLSAgICAgICAgW3RlbXBBcnJheSBhZGRPYmpl
Y3Q6TlNBY2Nlc3NpYmlsaXR5VVJMQXR0cmlidXRlXTsKLSAgICAgICAgW3RlbXBBcnJheSBhZGRP
YmplY3Q6TlNBY2Nlc3NpYmlsaXR5QWNjZXNzS2V5QXR0cmlidXRlXTsKLSAgICAgICAgYW5jaG9y
QXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5XTsKLSAgICAg
ICAgW3RlbXBBcnJheSByZWxlYXNlXTsKLSAgICB9Ci0gICAgaWYgKHdlYkFyZWFBdHRycyA9PSBu
aWwpIHsKLSAgICAgICAgdGVtcEFycmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdp
dGhBcnJheTphdHRyaWJ1dGVzXTsKLSAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6QCJBWExp
bmtVSUVsZW1lbnRzIl07Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0OkAiQVhMb2FkZWQi
XTsKLSAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6QCJBWExheW91dENvdW50Il07Ci0gICAg
ICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUxvYWRpbmdQcm9ncmVzc0F0
dHJpYnV0ZV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVVS
TEF0dHJpYnV0ZV07Ci0gICAgICAgIHdlYkFyZWFBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5p
dFdpdGhBcnJheTp0ZW1wQXJyYXldOwotICAgICAgICBbdGVtcEFycmF5IHJlbGVhc2VdOwotICAg
IH0KLSAgICBpZiAodGV4dEF0dHJzID09IG5pbCkgewotICAgICAgICB0ZW1wQXJyYXkgPSBbW05T
TXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdOwotICAgICAgICBb
dGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlOdW1iZXJPZkNoYXJhY3RlcnNBdHRy
aWJ1dGVdOwotICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlTZWxl
Y3RlZFRleHRBdHRyaWJ1dGVdOwotICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vz
c2liaWxpdHlTZWxlY3RlZFRleHRSYW5nZUF0dHJpYnV0ZV07Ci0gICAgICAgIFt0ZW1wQXJyYXkg
YWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVZpc2libGVDaGFyYWN0ZXJSYW5nZUF0dHJpYnV0ZV07
Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUluc2VydGlvblBv
aW50TGluZU51bWJlckF0dHJpYnV0ZV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5T
QWNjZXNzaWJpbGl0eVRpdGxlVUlFbGVtZW50QXR0cmlidXRlXTsKLSAgICAgICAgW3RlbXBBcnJh
eSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5QWNjZXNzS2V5QXR0cmlidXRlXTsKLSAgICAgICAg
W3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5UmVxdWlyZWRBdHRyaWJ1dGVdOwot
ICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlJbnZhbGlkQXR0cmli
dXRlXTsKLSAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5UGxhY2Vo
b2xkZXJWYWx1ZUF0dHJpYnV0ZV07Ci0gICAgICAgIHRleHRBdHRycyA9IFtbTlNBcnJheSBhbGxv
Y10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXldOwotICAgICAgICBbdGVtcEFycmF5IHJlbGVhc2Vd
OwotICAgIH0KLSAgICBpZiAobGlzdEF0dHJzID09IG5pbCkgewotICAgICAgICB0ZW1wQXJyYXkg
PSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdOwotICAg
ICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZENoaWxkcmVu
QXR0cmlidXRlXTsKLSAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5
VmlzaWJsZUNoaWxkcmVuQXR0cmlidXRlXTsKLSAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6
TlNBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb25BdHRyaWJ1dGVdOwotICAgICAgICBbdGVtcEFycmF5
IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlUaXRsZVVJRWxlbWVudEF0dHJpYnV0ZV07Ci0gICAg
ICAgIGxpc3RBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXld
OwotICAgICAgICBbdGVtcEFycmF5IHJlbGVhc2VdOwotICAgIH0KLSAgICBpZiAobGlzdEJveEF0
dHJzID09IG5pbCkgewotICAgICAgICB0ZW1wQXJyYXkgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9j
XSBpbml0V2l0aEFycmF5Omxpc3RBdHRyc107ICAgIAotICAgICAgICBbdGVtcEFycmF5IGFkZE9i
amVjdDpOU0FjY2Vzc2liaWxpdHlBY2Nlc3NLZXlBdHRyaWJ1dGVdOwotICAgICAgICBbdGVtcEFy
cmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlSZXF1aXJlZEF0dHJpYnV0ZV07Ci0gICAgICAg
IFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUludmFsaWRBdHRyaWJ1dGVdOwot
ICAgICAgICBsaXN0Qm94QXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVt
cEFycmF5XTsKLSAgICAgICAgW3RlbXBBcnJheSByZWxlYXNlXTsKLSAgICB9Ci0gICAgaWYgKHJh
bmdlQXR0cnMgPT0gbmlsKSB7Ci0gICAgICAgIHRlbXBBcnJheSA9IFtbTlNNdXRhYmxlQXJyYXkg
YWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc107Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRk
T2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU1pblZhbHVlQXR0cmlidXRlXTsKLSAgICAgICAgW3RlbXBB
cnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5TWF4VmFsdWVBdHRyaWJ1dGVdOwotICAgICAg
ICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlPcmllbnRhdGlvbkF0dHJpYnV0
ZV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVZhbHVlRGVz
Y3JpcHRpb25BdHRyaWJ1dGVdOwotICAgICAgICByYW5nZUF0dHJzID0gW1tOU0FycmF5IGFsbG9j
XSBpbml0V2l0aEFycmF5OnRlbXBBcnJheV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgcmVsZWFzZV07
Ci0gICAgfQotICAgIGlmIChtZW51QmFyQXR0cnMgPT0gbmlsKSB7Ci0gICAgICAgIHRlbXBBcnJh
eSA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6Y29tbW9uTWVudUF0dHJz
XTsKLSAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRD
aGlsZHJlbkF0dHJpYnV0ZV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNz
aWJpbGl0eVZpc2libGVDaGlsZHJlbkF0dHJpYnV0ZV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRk
T2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVRpdGxlVUlFbGVtZW50QXR0cmlidXRlXTsKLSAgICAgICAg
bWVudUJhckF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheV07
Ci0gICAgICAgIFt0ZW1wQXJyYXkgcmVsZWFzZV07Ci0gICAgfQotICAgIGlmIChtZW51QXR0cnMg
PT0gbmlsKSB7Ci0gICAgICAgIHRlbXBBcnJheSA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGlu
aXRXaXRoQXJyYXk6Y29tbW9uTWVudUF0dHJzXTsKLSAgICAgICAgW3RlbXBBcnJheSBhZGRPYmpl
Y3Q6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRDaGlsZHJlbkF0dHJpYnV0ZV07Ci0gICAgICAgIFt0
ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVZpc2libGVDaGlsZHJlbkF0dHJpYnV0
ZV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVRpdGxlVUlF
bGVtZW50QXR0cmlidXRlXTsKLSAgICAgICAgbWVudUF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBp
bml0V2l0aEFycmF5OnRlbXBBcnJheV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgcmVsZWFzZV07Ci0g
ICAgfQotICAgIGlmIChtZW51SXRlbUF0dHJzID09IG5pbCkgewotICAgICAgICB0ZW1wQXJyYXkg
PSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmNvbW1vbk1lbnVBdHRyc107
Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVRpdGxlQXR0cmli
dXRlXTsKLSAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5SGVscEF0
dHJpYnV0ZV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVNl
bGVjdGVkQXR0cmlidXRlXTsKLSAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6KE5TU3RyaW5n
KilrQVhNZW51SXRlbUNtZENoYXJBdHRyaWJ1dGVdOwotICAgICAgICBbdGVtcEFycmF5IGFkZE9i
amVjdDooTlNTdHJpbmcqKWtBWE1lbnVJdGVtQ21kVmlydHVhbEtleUF0dHJpYnV0ZV07Ci0gICAg
ICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0OihOU1N0cmluZyopa0FYTWVudUl0ZW1DbWRHbHlwaEF0
dHJpYnV0ZV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0OihOU1N0cmluZyopa0FYTWVu
dUl0ZW1DbWRNb2RpZmllcnNBdHRyaWJ1dGVdOwotICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVj
dDooTlNTdHJpbmcqKWtBWE1lbnVJdGVtTWFya0NoYXJBdHRyaWJ1dGVdOwotICAgICAgICBbdGVt
cEFycmF5IGFkZE9iamVjdDooTlNTdHJpbmcqKWtBWE1lbnVJdGVtUHJpbWFyeVVJRWxlbWVudEF0
dHJpYnV0ZV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVNl
cnZlc0FzVGl0bGVGb3JVSUVsZW1lbnRzQXR0cmlidXRlXTsKLSAgICAgICAgbWVudUl0ZW1BdHRy
cyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXldOwotICAgICAgICBb
dGVtcEFycmF5IHJlbGVhc2VdOwotICAgIH0KLSAgICBpZiAobWVudUJ1dHRvbkF0dHJzID09IG5p
bCkgewotICAgICAgICBtZW51QnV0dG9uQXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRo
T2JqZWN0czpOU0FjY2Vzc2liaWxpdHlSb2xlQXR0cmlidXRlLAotICAgICAgICAgICAgTlNBY2Nl
c3NpYmlsaXR5Um9sZURlc2NyaXB0aW9uQXR0cmlidXRlLAotICAgICAgICAgICAgTlNBY2Nlc3Np
YmlsaXR5UGFyZW50QXR0cmlidXRlLAotICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5UG9zaXRp
b25BdHRyaWJ1dGUsCi0gICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlTaXplQXR0cmlidXRlLAot
ICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5V2luZG93QXR0cmlidXRlLAotICAgICAgICAgICAg
TlNBY2Nlc3NpYmlsaXR5RW5hYmxlZEF0dHJpYnV0ZSwKLSAgICAgICAgICAgIE5TQWNjZXNzaWJp
bGl0eUZvY3VzZWRBdHRyaWJ1dGUsCi0gICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlUaXRsZUF0
dHJpYnV0ZSwKLSAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlLCBu
aWxdOwotICAgIH0KLSAgICBpZiAoY29udHJvbEF0dHJzID09IG5pbCkgewotICAgICAgICB0ZW1w
QXJyYXkgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNd
OwotICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlUaXRsZVVJRWxl
bWVudEF0dHJpYnV0ZV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJp
bGl0eUFjY2Vzc0tleUF0dHJpYnV0ZV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5T
QWNjZXNzaWJpbGl0eVJlcXVpcmVkQXR0cmlidXRlXTsKLSAgICAgICAgW3RlbXBBcnJheSBhZGRP
YmplY3Q6TlNBY2Nlc3NpYmlsaXR5SW52YWxpZEF0dHJpYnV0ZV07Ci0gICAgICAgIGNvbnRyb2xB
dHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXldOwotICAgICAg
ICBbdGVtcEFycmF5IHJlbGVhc2VdOwotICAgIH0KLSAgICBpZiAoYnV0dG9uQXR0cnMgPT0gbmls
KSB7Ci0gICAgICAgIHRlbXBBcnJheSA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRo
QXJyYXk6YXR0cmlidXRlc107Ci0gICAgICAgIC8vIEJ1dHRvbnMgc2hvdWxkIG5vdCBleHBvc2Ug
QVhWYWx1ZS4KLSAgICAgICAgW3RlbXBBcnJheSByZW1vdmVPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5
VmFsdWVBdHRyaWJ1dGVdOwotICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2li
aWxpdHlUaXRsZVVJRWxlbWVudEF0dHJpYnV0ZV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2Jq
ZWN0Ok5TQWNjZXNzaWJpbGl0eUFjY2Vzc0tleUF0dHJpYnV0ZV07Ci0gICAgICAgIGJ1dHRvbkF0
dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheV07Ci0gICAgICAg
IFt0ZW1wQXJyYXkgcmVsZWFzZV07Ci0gICAgfQotICAgIGlmIChjb21ib0JveEF0dHJzID09IG5p
bCkgewotICAgICAgICB0ZW1wQXJyYXkgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0
aEFycmF5OmNvbnRyb2xBdHRyc107Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNj
ZXNzaWJpbGl0eUV4cGFuZGVkQXR0cmlidXRlXTsKLSAgICAgICAgY29tYm9Cb3hBdHRycyA9IFtb
TlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXldOwotICAgICAgICBbdGVtcEFy
cmF5IHJlbGVhc2VdOyAgICAgICAgCi0gICAgfQotICAgIGlmICh0YWJsZUF0dHJzID09IG5pbCkg
ewotICAgICAgICB0ZW1wQXJyYXkgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFy
cmF5OmF0dHJpYnV0ZXNdOwotICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2li
aWxpdHlSb3dzQXR0cmlidXRlXTsKLSAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nl
c3NpYmlsaXR5VmlzaWJsZVJvd3NBdHRyaWJ1dGVdOwotICAgICAgICBbdGVtcEFycmF5IGFkZE9i
amVjdDpOU0FjY2Vzc2liaWxpdHlDb2x1bW5zQXR0cmlidXRlXTsKLSAgICAgICAgW3RlbXBBcnJh
eSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VmlzaWJsZUNvbHVtbnNBdHRyaWJ1dGVdOwotICAg
ICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlWaXNpYmxlQ2VsbHNBdHRy
aWJ1dGVdOwotICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDooTlNTdHJpbmcgKilrQVhDb2x1
bW5IZWFkZXJVSUVsZW1lbnRzQXR0cmlidXRlXTsKLSAgICAgICAgW3RlbXBBcnJheSBhZGRPYmpl
Y3Q6TlNBY2Nlc3NpYmlsaXR5Um93SGVhZGVyVUlFbGVtZW50c0F0dHJpYnV0ZV07Ci0gICAgICAg
IFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUhlYWRlckF0dHJpYnV0ZV07Ci0g
ICAgICAgIHRhYmxlQXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFy
cmF5XTsKLSAgICAgICAgW3RlbXBBcnJheSByZWxlYXNlXTsKLSAgICB9Ci0gICAgaWYgKHRhYmxl
Um93QXR0cnMgPT0gbmlsKSB7Ci0gICAgICAgIHRlbXBBcnJheSA9IFtbTlNNdXRhYmxlQXJyYXkg
YWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc107Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRk
T2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUluZGV4QXR0cmlidXRlXTsKLSAgICAgICAgdGFibGVSb3dB
dHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXldOwotICAgICAg
ICBbdGVtcEFycmF5IHJlbGVhc2VdOwotICAgIH0KLSAgICBpZiAodGFibGVDb2xBdHRycyA9PSBu
aWwpIHsKLSAgICAgICAgdGVtcEFycmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdp
dGhBcnJheTphdHRyaWJ1dGVzXTsKLSAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nl
c3NpYmlsaXR5SW5kZXhBdHRyaWJ1dGVdOwotICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpO
U0FjY2Vzc2liaWxpdHlIZWFkZXJBdHRyaWJ1dGVdOwotICAgICAgICBbdGVtcEFycmF5IGFkZE9i
amVjdDpOU0FjY2Vzc2liaWxpdHlSb3dzQXR0cmlidXRlXTsKLSAgICAgICAgW3RlbXBBcnJheSBh
ZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VmlzaWJsZVJvd3NBdHRyaWJ1dGVdOwotICAgICAgICB0
YWJsZUNvbEF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheV07
Ci0gICAgICAgIFt0ZW1wQXJyYXkgcmVsZWFzZV07Ci0gICAgfQotICAgIGlmICh0YWJsZUNlbGxB
dHRycyA9PSBuaWwpIHsKLSAgICAgICAgdGVtcEFycmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxv
Y10gaW5pdFdpdGhBcnJheTphdHRyaWJ1dGVzXTsKLSAgICAgICAgW3RlbXBBcnJheSBhZGRPYmpl
Y3Q6TlNBY2Nlc3NpYmlsaXR5Um93SW5kZXhSYW5nZUF0dHJpYnV0ZV07Ci0gICAgICAgIFt0ZW1w
QXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUNvbHVtbkluZGV4UmFuZ2VBdHRyaWJ1dGVd
OwotICAgICAgICB0YWJsZUNlbGxBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJh
eTp0ZW1wQXJyYXldOwotICAgICAgICBbdGVtcEFycmF5IHJlbGVhc2VdOyAgICAgICAgCi0gICAg
fQotICAgIGlmIChncm91cEF0dHJzID09IG5pbCkgewotICAgICAgICB0ZW1wQXJyYXkgPSBbW05T
TXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdOwotICAgICAgICBb
dGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlUaXRsZVVJRWxlbWVudEF0dHJpYnV0
ZV07Ci0gICAgICAgIGdyb3VwQXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6
dGVtcEFycmF5XTsKLSAgICAgICAgW3RlbXBBcnJheSByZWxlYXNlXTsKLSAgICB9Ci0gICAgaWYg
KGlucHV0SW1hZ2VBdHRycyA9PSBuaWwpIHsKLSAgICAgICAgdGVtcEFycmF5ID0gW1tOU011dGFi
bGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTpidXR0b25BdHRyc107Ci0gICAgICAgIFt0ZW1w
QXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVVSTEF0dHJpYnV0ZV07Ci0gICAgICAgIGlu
cHV0SW1hZ2VBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXld
OwotICAgICAgICBbdGVtcEFycmF5IHJlbGVhc2VdOwotICAgIH0KLSAgICBpZiAocGFzc3dvcmRG
aWVsZEF0dHJzID09IG5pbCkgewotICAgICAgICB0ZW1wQXJyYXkgPSBbW05TTXV0YWJsZUFycmF5
IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdOwotICAgICAgICBbdGVtcEFycmF5IGFk
ZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlUaXRsZVVJRWxlbWVudEF0dHJpYnV0ZV07Ci0gICAgICAg
IFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVJlcXVpcmVkQXR0cmlidXRlXTsK
LSAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5SW52YWxpZEF0dHJp
YnV0ZV07Ci0gICAgICAgIHBhc3N3b3JkRmllbGRBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5p
dFdpdGhBcnJheTp0ZW1wQXJyYXldOwotICAgICAgICBbdGVtcEFycmF5IHJlbGVhc2VdOwotICAg
IH0KLSAgICBpZiAodGFiTGlzdEF0dHJzID09IG5pbCkgewotICAgICAgICB0ZW1wQXJyYXkgPSBb
W05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdOwotICAgICAg
ICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlUYWJzQXR0cmlidXRlXTsKLSAg
ICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5Q29udGVudHNBdHRyaWJ1
dGVdOwotICAgICAgICB0YWJMaXN0QXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJy
YXk6dGVtcEFycmF5XTsKLSAgICAgICAgW3RlbXBBcnJheSByZWxlYXNlXTsgICAgICAgIAotICAg
IH0KLSAgICBpZiAob3V0bGluZUF0dHJzID09IG5pbCkgewotICAgICAgICB0ZW1wQXJyYXkgPSBb
W05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdOwotICAgICAg
ICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFJvd3NBdHRyaWJ1
dGVdOwotICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlSb3dzQXR0
cmlidXRlXTsKLSAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5Q29s
dW1uc0F0dHJpYnV0ZV07Ci0gICAgICAgIG91dGxpbmVBdHRycyA9IFtbTlNBcnJheSBhbGxvY10g
aW5pdFdpdGhBcnJheTp0ZW1wQXJyYXldOwotICAgICAgICBbdGVtcEFycmF5IHJlbGVhc2VdOwot
ICAgIH0KLSAgICBpZiAob3V0bGluZVJvd0F0dHJzID09IG5pbCkgewotICAgICAgICB0ZW1wQXJy
YXkgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRhYmxlUm93QXR0cnNd
OwotICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlEaXNjbG9zaW5n
QXR0cmlidXRlXTsKLSAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5
RGlzY2xvc2VkQnlSb3dBdHRyaWJ1dGVdOwotICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpO
U0FjY2Vzc2liaWxpdHlEaXNjbG9zdXJlTGV2ZWxBdHRyaWJ1dGVdOwotICAgICAgICBbdGVtcEFy
cmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlEaXNjbG9zZWRSb3dzQXR0cmlidXRlXTsKLSAg
ICAgICAgb3V0bGluZVJvd0F0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRl
bXBBcnJheV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgcmVsZWFzZV07Ci0gICAgfQotICAgIGlmIChz
Y3JvbGxWaWV3QXR0cnMgPT0gbmlsKSB7Ci0gICAgICAgIHRlbXBBcnJheSA9IFtbTlNNdXRhYmxl
QXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc107Ci0gICAgICAgIFt0ZW1wQXJy
YXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUNvbnRlbnRzQXR0cmlidXRlXTsKLSAgICAgICAg
W3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5SG9yaXpvbnRhbFNjcm9sbEJhckF0
dHJpYnV0ZV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVZl
cnRpY2FsU2Nyb2xsQmFyQXR0cmlidXRlXTsKLSAgICAgICAgc2Nyb2xsVmlld0F0dHJzID0gW1tO
U0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheV07Ci0gICAgICAgIFt0ZW1wQXJy
YXkgcmVsZWFzZV07Ci0gICAgfQotICAgIAotICAgIE5TQXJyYXkgKm9iamVjdEF0dHJpYnV0ZXMg
PSBhdHRyaWJ1dGVzOwotICAgIAotICAgIGlmIChtX29iamVjdC0+aXNQYXNzd29yZEZpZWxkKCkp
Ci0gICAgICAgIG9iamVjdEF0dHJpYnV0ZXMgPSBwYXNzd29yZEZpZWxkQXR0cnM7Ci0KLSAgICBl
bHNlIGlmIChtX29iamVjdC0+aXNXZWJBcmVhKCkpCi0gICAgICAgIG9iamVjdEF0dHJpYnV0ZXMg
PSB3ZWJBcmVhQXR0cnM7Ci0gICAgCi0gICAgZWxzZSBpZiAobV9vYmplY3QtPmlzVGV4dENvbnRy
b2woKSkKLSAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IHRleHRBdHRyczsKLQotICAgIGVsc2Ug
aWYgKG1fb2JqZWN0LT5pc0FuY2hvcigpIHx8IG1fb2JqZWN0LT5pc0ltYWdlKCkgfHwgbV9vYmpl
Y3QtPmlzTGluaygpKQotICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0gYW5jaG9yQXR0cnM7Ci0K
LSAgICBlbHNlIGlmIChtX29iamVjdC0+aXNBY2Nlc3NpYmlsaXR5VGFibGUoKSkKLSAgICAgICAg
b2JqZWN0QXR0cmlidXRlcyA9IHRhYmxlQXR0cnM7Ci0gICAgZWxzZSBpZiAobV9vYmplY3QtPmlz
VGFibGVDb2x1bW4oKSkKLSAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IHRhYmxlQ29sQXR0cnM7
Ci0gICAgZWxzZSBpZiAobV9vYmplY3QtPmlzVGFibGVDZWxsKCkpCi0gICAgICAgIG9iamVjdEF0
dHJpYnV0ZXMgPSB0YWJsZUNlbGxBdHRyczsKLSAgICBlbHNlIGlmIChtX29iamVjdC0+aXNUYWJs
ZVJvdygpKSB7Ci0gICAgICAgIC8vIEFuIEFSSUEgdGFibGUgcm93IGNhbiBiZSBjb2xsYXBzZWQg
YW5kIGV4cGFuZGVkLCBzbyBpdCBuZWVkcyB0aGUgZXh0cmEgYXR0cmlidXRlcy4KLSAgICAgICAg
aWYgKG1fb2JqZWN0LT5pc0FSSUFUcmVlR3JpZFJvdygpKQotICAgICAgICAgICAgb2JqZWN0QXR0
cmlidXRlcyA9IG91dGxpbmVSb3dBdHRyczsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgb2Jq
ZWN0QXR0cmlidXRlcyA9IHRhYmxlUm93QXR0cnM7Ci0gICAgfQotICAgIAotICAgIGVsc2UgaWYg
KG1fb2JqZWN0LT5pc1RyZWUoKSkKLSAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IG91dGxpbmVB
dHRyczsKLSAgICBlbHNlIGlmIChtX29iamVjdC0+aXNUcmVlSXRlbSgpKQotICAgICAgICBvYmpl
Y3RBdHRyaWJ1dGVzID0gb3V0bGluZVJvd0F0dHJzOwotICAgIAotICAgIGVsc2UgaWYgKG1fb2Jq
ZWN0LT5pc0xpc3RCb3goKSkKLSAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IGxpc3RCb3hBdHRy
czsKLSAgICBlbHNlIGlmIChtX29iamVjdC0+aXNMaXN0KCkpCi0gICAgICAgIG9iamVjdEF0dHJp
YnV0ZXMgPSBsaXN0QXR0cnM7Ci0gICAgCi0gICAgZWxzZSBpZiAobV9vYmplY3QtPmlzQ29tYm9C
b3goKSkKLSAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IGNvbWJvQm94QXR0cnM7Ci0gICAgCi0g
ICAgZWxzZSBpZiAobV9vYmplY3QtPmlzUHJvZ3Jlc3NJbmRpY2F0b3IoKSB8fCBtX29iamVjdC0+
aXNTbGlkZXIoKSkKLSAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IHJhbmdlQXR0cnM7Ci0KLSAg
ICAvLyBUaGVzZSBhcmUgcHJvY2Vzc2VkIGluIG9yZGVyIGJlY2F1c2UgYW4gaW5wdXQgaW1hZ2Ug
aXMgYSBidXR0b24sIGFuZCBhIGJ1dHRvbiBpcyBhIGNvbnRyb2wuCi0gICAgZWxzZSBpZiAobV9v
YmplY3QtPmlzSW5wdXRJbWFnZSgpKQotICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0gaW5wdXRJ
bWFnZUF0dHJzOwotICAgIGVsc2UgaWYgKG1fb2JqZWN0LT5pc0J1dHRvbigpKQotICAgICAgICBv
YmplY3RBdHRyaWJ1dGVzID0gYnV0dG9uQXR0cnM7Ci0gICAgZWxzZSBpZiAobV9vYmplY3QtPmlz
Q29udHJvbCgpKQotICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0gY29udHJvbEF0dHJzOwotICAg
IAotICAgIGVsc2UgaWYgKG1fb2JqZWN0LT5pc0dyb3VwKCkgfHwgbV9vYmplY3QtPmlzTGlzdEl0
ZW0oKSkKLSAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IGdyb3VwQXR0cnM7Ci0gICAgZWxzZSBp
ZiAobV9vYmplY3QtPmlzVGFiTGlzdCgpKQotICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0gdGFi
TGlzdEF0dHJzOwotICAgIGVsc2UgaWYgKG1fb2JqZWN0LT5pc1Njcm9sbFZpZXcoKSkKLSAgICAg
ICAgb2JqZWN0QXR0cmlidXRlcyA9IHNjcm9sbFZpZXdBdHRyczsKLSAgICAKLSAgICBlbHNlIGlm
IChtX29iamVjdC0+aXNNZW51KCkpCi0gICAgICAgIG9iamVjdEF0dHJpYnV0ZXMgPSBtZW51QXR0
cnM7Ci0gICAgZWxzZSBpZiAobV9vYmplY3QtPmlzTWVudUJhcigpKQotICAgICAgICBvYmplY3RB
dHRyaWJ1dGVzID0gbWVudUJhckF0dHJzOwotICAgIGVsc2UgaWYgKG1fb2JqZWN0LT5pc01lbnVC
dXR0b24oKSkKLSAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IG1lbnVCdXR0b25BdHRyczsKLSAg
ICBlbHNlIGlmIChtX29iamVjdC0+aXNNZW51SXRlbSgpKQotICAgICAgICBvYmplY3RBdHRyaWJ1
dGVzID0gbWVudUl0ZW1BdHRyczsKLSAgICAKLSAgICBOU0FycmF5ICphZGRpdGlvbmFsQXR0cmli
dXRlcyA9IFtzZWxmIGFkZGl0aW9uYWxBY2Nlc3NpYmlsaXR5QXR0cmlidXRlTmFtZXNdOwotICAg
IGlmIChbYWRkaXRpb25hbEF0dHJpYnV0ZXMgY291bnRdKQotICAgICAgICBvYmplY3RBdHRyaWJ1
dGVzID0gW29iamVjdEF0dHJpYnV0ZXMgYXJyYXlCeUFkZGluZ09iamVjdHNGcm9tQXJyYXk6YWRk
aXRpb25hbEF0dHJpYnV0ZXNdOwotICAgIAotICAgIHJldHVybiBvYmplY3RBdHRyaWJ1dGVzOwot
fQotCi0tIChWaXNpYmxlUG9zaXRpb25SYW5nZSl2aXNpYmxlUG9zaXRpb25SYW5nZUZvclRleHRN
YXJrZXJSYW5nZTooaWQpdGV4dE1hcmtlclJhbmdlCi17Ci0gICAgaWYgKCF0ZXh0TWFya2VyUmFu
Z2UpCi0gICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb25SYW5nZSgpOwotICAgIEFYT2JqZWN0
Q2FjaGUqIGNhY2hlID0gbV9vYmplY3QtPmF4T2JqZWN0Q2FjaGUoKTsKLSAgICByZXR1cm4gVmlz
aWJsZVBvc2l0aW9uUmFuZ2UodmlzaWJsZVBvc2l0aW9uRm9yU3RhcnRPZlRleHRNYXJrZXJSYW5n
ZShjYWNoZSwgdGV4dE1hcmtlclJhbmdlKSwgdmlzaWJsZVBvc2l0aW9uRm9yRW5kT2ZUZXh0TWFy
a2VyUmFuZ2UoY2FjaGUsIHRleHRNYXJrZXJSYW5nZSkpOwotfQotCi0tIChOU0FycmF5KilyZW5k
ZXJXaWRnZXRDaGlsZHJlbgotewotICAgIFdpZGdldCogd2lkZ2V0ID0gbV9vYmplY3QtPndpZGdl
dCgpOwotICAgIGlmICghd2lkZ2V0KQotICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBb
KHdpZGdldC0+cGxhdGZvcm1XaWRnZXQoKSkgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOiBO
U0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZV07Ci19Ci0KLS0gKGlkKXJlbW90ZUFjY2Vz
c2liaWxpdHlQYXJlbnRPYmplY3QKLXsKLSAgICBpZiAoIW1fb2JqZWN0IHx8ICFtX29iamVjdC0+
ZG9jdW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICByZXR1cm4gbV9vYmpl
Y3QtPmRvY3VtZW50KCktPmZyYW1lKCktPmxvYWRlcigpLT5jbGllbnQoKS0+YWNjZXNzaWJpbGl0
eVJlbW90ZU9iamVjdCgpOwotfQotCi1zdGF0aWMgdm9pZCBjb252ZXJ0VG9WZWN0b3IoTlNBcnJh
eSogYXJyYXksIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciYgdmVjdG9yKQotewotICAgIHVuc2lnbmVkIGxlbmd0aCA9IFthcnJheSBjb3VudF07Ci0gICAg
dmVjdG9yLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoKTsKLSAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCog
b2JqID0gW1thcnJheSBvYmplY3RBdEluZGV4OmldIGFjY2Vzc2liaWxpdHlPYmplY3RdOwotICAg
ICAgICBpZiAob2JqKQotICAgICAgICAgICAgdmVjdG9yLmFwcGVuZChvYmopOwotICAgIH0KLX0K
LQotc3RhdGljIE5TTXV0YWJsZUFycmF5KiBjb252ZXJ0VG9OU0FycmF5KGNvbnN0IEFjY2Vzc2li
aWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgdmVjdG9yKQotewotICAg
IHVuc2lnbmVkIGxlbmd0aCA9IHZlY3Rvci5zaXplKCk7Ci0gICAgTlNNdXRhYmxlQXJyYXkqIGFy
cmF5ID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OiBsZW5ndGhdOwotICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlciogd3JhcHBlciA9IHZlY3RvcltpXS0+d3JhcHBlcigpOwotICAgICAg
ICBBU1NFUlQod3JhcHBlcik7Ci0gICAgICAgIGlmICh3cmFwcGVyKSB7Ci0gICAgICAgICAgICAv
LyB3ZSB3YW50IHRvIHJldHVybiB0aGUgYXR0YWNobWVudCB2aWV3IGluc3RlYWQgb2YgdGhlIG9i
amVjdCByZXByZXNlbnRpbmcgdGhlIGF0dGFjaG1lbnQuCi0gICAgICAgICAgICAvLyBvdGhlcndp
c2UsIHdlIGdldCBwYWxpbmRyb21lIGVycm9ycyBpbiB0aGUgQVggaGllcmFyY2h5Ci0gICAgICAg
ICAgICBpZiAodmVjdG9yW2ldLT5pc0F0dGFjaG1lbnQoKSAmJiBbd3JhcHBlciBhdHRhY2htZW50
Vmlld10pCi0gICAgICAgICAgICAgICAgW2FycmF5IGFkZE9iamVjdDpbd3JhcHBlciBhdHRhY2ht
ZW50Vmlld11dOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIFthcnJheSBhZGRP
YmplY3Q6d3JhcHBlcl07Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGFycmF5OwotfQot
Ci0tIChpZCl0ZXh0TWFya2VyUmFuZ2VGb3JTZWxlY3Rpb24KLXsKLSAgICBWaXNpYmxlU2VsZWN0
aW9uIHNlbGVjdGlvbiA9IG1fb2JqZWN0LT5zZWxlY3Rpb24oKTsKLSAgICBpZiAoc2VsZWN0aW9u
LmlzTm9uZSgpKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBbc2VsZiB0ZXh0TWFy
a2VyUmFuZ2VGcm9tVmlzaWJsZVBvc2l0aW9uczpzZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCkgZW5k
UG9zaXRpb246c2VsZWN0aW9uLnZpc2libGVFbmQoKV07Ci19Ci0KLS0gKE5TVmFsdWUgKilwb3Np
dGlvbgotewotICAgIExheW91dFJlY3QgcmVjdCA9IG1fb2JqZWN0LT5lbGVtZW50UmVjdCgpOwot
ICAgIE5TUG9pbnQgcG9pbnQ7Ci0gICAgCi0gICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtX29i
amVjdC0+ZG9jdW1lbnRGcmFtZVZpZXcoKTsKLQotICAgIC8vIFdlYktpdDEgY29kZSBwYXRoLi4u
IHBsYXRmb3JtV2lkZ2V0KCkgZXhpc3RzLgotICAgIGlmIChmcmFtZVZpZXcgJiYgZnJhbWVWaWV3
LT5wbGF0Zm9ybVdpZGdldCgpKSB7Ci0gICAgCi0gICAgICAgIC8vIFRoZSBDb2NvYSBhY2Nlc3Np
YmlsaXR5IEFQSSB3YW50cyB0aGUgbG93ZXItbGVmdCBjb3JuZXIuCi0gICAgICAgIHBvaW50ID0g
TlNNYWtlUG9pbnQocmVjdC54KCksIHJlY3QubWF4WSgpKTsKLSAgICAgICAgCi0gICAgICAgIGlm
IChmcmFtZVZpZXcpIHsKLSAgICAgICAgICAgIE5TVmlldyogdmlldyA9IGZyYW1lVmlldy0+ZG9j
dW1lbnRWaWV3KCk7Ci0gICAgICAgICAgICBwb2ludCA9IFtbdmlldyB3aW5kb3ddIGNvbnZlcnRC
YXNlVG9TY3JlZW46W3ZpZXcgY29udmVydFBvaW50OiBwb2ludCB0b1ZpZXc6bmlsXV07Ci0gICAg
ICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICAKLSAgICAgICAgLy8gRmluZCB0aGUgYXBwcm9w
cmlhdGUgc2Nyb2xsIHZpZXcgdG8gdXNlIHRvIGNvbnZlcnQgdGhlIGNvbnRlbnRzIHRvIHRoZSB3
aW5kb3cuCi0gICAgICAgIFNjcm9sbFZpZXcqIHNjcm9sbFZpZXcgPSAwOwotICAgICAgICBmb3Ig
KEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IG1fb2JqZWN0LT5wYXJlbnRPYmplY3QoKTsg
cGFyZW50OyBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudE9iamVjdCgpKSB7Ci0gICAgICAgICAgICBp
ZiAocGFyZW50LT5pc0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KCkpIHsKLSAgICAgICAgICAgICAg
ICBzY3JvbGxWaWV3ID0gdG9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldyhwYXJlbnQpLT5zY3JvbGxW
aWV3KCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LQotICAgICAgICBpZiAoc2Nyb2xsVmlldykKLSAgICAgICAgICAgIHJlY3QgPSBzY3JvbGxWaWV3
LT5jb250ZW50c1RvV2luZG93KHJlY3QpOwotICAgICAgICAKLSAgICAgICAgaWYgKG1fb2JqZWN0
LT5wYWdlKCkpCi0gICAgICAgICAgICBwb2ludCA9IG1fb2JqZWN0LT5wYWdlKCktPmNocm9tZSgp
LT53aW5kb3dUb1NjcmVlbihyZWN0KS5sb2NhdGlvbigpOwotICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBwb2ludCA9IHJlY3QubG9jYXRpb24oKTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIFtO
U1ZhbHVlIHZhbHVlV2l0aFBvaW50OnBvaW50XTsKLX0KLQotdHlwZWRlZiBIYXNoTWFwPGludCwg
TlNTdHJpbmcqPiBBY2Nlc3NpYmlsaXR5Um9sZU1hcDsKLQotc3RhdGljIGNvbnN0IEFjY2Vzc2li
aWxpdHlSb2xlTWFwJiBjcmVhdGVBY2Nlc3NpYmlsaXR5Um9sZU1hcCgpCi17Ci0gICAgc3RydWN0
IFJvbGVFbnRyeSB7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlSb2xlIHZhbHVlOwotICAgICAgICBO
U1N0cmluZyogc3RyaW5nOwotICAgIH07Ci0gICAgCi0gICAgc3RhdGljIGNvbnN0IFJvbGVFbnRy
eSByb2xlc1tdID0gewotICAgICAgICB7IFVua25vd25Sb2xlLCBOU0FjY2Vzc2liaWxpdHlVbmtu
b3duUm9sZSB9LAotICAgICAgICB7IEJ1dHRvblJvbGUsIE5TQWNjZXNzaWJpbGl0eUJ1dHRvblJv
bGUgfSwKLSAgICAgICAgeyBSYWRpb0J1dHRvblJvbGUsIE5TQWNjZXNzaWJpbGl0eVJhZGlvQnV0
dG9uUm9sZSB9LAotICAgICAgICB7IENoZWNrQm94Um9sZSwgTlNBY2Nlc3NpYmlsaXR5Q2hlY2tC
b3hSb2xlIH0sCi0gICAgICAgIHsgU2xpZGVyUm9sZSwgTlNBY2Nlc3NpYmlsaXR5U2xpZGVyUm9s
ZSB9LAotICAgICAgICB7IFRhYkdyb3VwUm9sZSwgTlNBY2Nlc3NpYmlsaXR5VGFiR3JvdXBSb2xl
IH0sCi0gICAgICAgIHsgVGV4dEZpZWxkUm9sZSwgTlNBY2Nlc3NpYmlsaXR5VGV4dEZpZWxkUm9s
ZSB9LAotICAgICAgICB7IFN0YXRpY1RleHRSb2xlLCBOU0FjY2Vzc2liaWxpdHlTdGF0aWNUZXh0
Um9sZSB9LAotICAgICAgICB7IFRleHRBcmVhUm9sZSwgTlNBY2Nlc3NpYmlsaXR5VGV4dEFyZWFS
b2xlIH0sCi0gICAgICAgIHsgU2Nyb2xsQXJlYVJvbGUsIE5TQWNjZXNzaWJpbGl0eVNjcm9sbEFy
ZWFSb2xlIH0sCi0gICAgICAgIHsgUG9wVXBCdXR0b25Sb2xlLCBOU0FjY2Vzc2liaWxpdHlQb3BV
cEJ1dHRvblJvbGUgfSwKLSAgICAgICAgeyBNZW51QnV0dG9uUm9sZSwgTlNBY2Nlc3NpYmlsaXR5
TWVudUJ1dHRvblJvbGUgfSwKLSAgICAgICAgeyBUYWJsZVJvbGUsIE5TQWNjZXNzaWJpbGl0eVRh
YmxlUm9sZSB9LAotICAgICAgICB7IEFwcGxpY2F0aW9uUm9sZSwgTlNBY2Nlc3NpYmlsaXR5QXBw
bGljYXRpb25Sb2xlIH0sCi0gICAgICAgIHsgR3JvdXBSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91
cFJvbGUgfSwKLSAgICAgICAgeyBSYWRpb0dyb3VwUm9sZSwgTlNBY2Nlc3NpYmlsaXR5UmFkaW9H
cm91cFJvbGUgfSwKLSAgICAgICAgeyBMaXN0Um9sZSwgTlNBY2Nlc3NpYmlsaXR5TGlzdFJvbGUg
fSwKLSAgICAgICAgeyBEaXJlY3RvcnlSb2xlLCBOU0FjY2Vzc2liaWxpdHlMaXN0Um9sZSB9LAot
ICAgICAgICB7IFNjcm9sbEJhclJvbGUsIE5TQWNjZXNzaWJpbGl0eVNjcm9sbEJhclJvbGUgfSwK
LSAgICAgICAgeyBWYWx1ZUluZGljYXRvclJvbGUsIE5TQWNjZXNzaWJpbGl0eVZhbHVlSW5kaWNh
dG9yUm9sZSB9LAotICAgICAgICB7IEltYWdlUm9sZSwgTlNBY2Nlc3NpYmlsaXR5SW1hZ2VSb2xl
IH0sCi0gICAgICAgIHsgTWVudUJhclJvbGUsIE5TQWNjZXNzaWJpbGl0eU1lbnVCYXJSb2xlIH0s
Ci0gICAgICAgIHsgTWVudVJvbGUsIE5TQWNjZXNzaWJpbGl0eU1lbnVSb2xlIH0sCi0gICAgICAg
IHsgTWVudUl0ZW1Sb2xlLCBOU0FjY2Vzc2liaWxpdHlNZW51SXRlbVJvbGUgfSwKLSAgICAgICAg
eyBDb2x1bW5Sb2xlLCBOU0FjY2Vzc2liaWxpdHlDb2x1bW5Sb2xlIH0sCi0gICAgICAgIHsgUm93
Um9sZSwgTlNBY2Nlc3NpYmlsaXR5Um93Um9sZSB9LAotICAgICAgICB7IFRvb2xiYXJSb2xlLCBO
U0FjY2Vzc2liaWxpdHlUb29sYmFyUm9sZSB9LAotICAgICAgICB7IEJ1c3lJbmRpY2F0b3JSb2xl
LCBOU0FjY2Vzc2liaWxpdHlCdXN5SW5kaWNhdG9yUm9sZSB9LAotICAgICAgICB7IFByb2dyZXNz
SW5kaWNhdG9yUm9sZSwgTlNBY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3JSb2xlIH0sCi0g
ICAgICAgIHsgV2luZG93Um9sZSwgTlNBY2Nlc3NpYmlsaXR5V2luZG93Um9sZSB9LAotICAgICAg
ICB7IERyYXdlclJvbGUsIE5TQWNjZXNzaWJpbGl0eURyYXdlclJvbGUgfSwKLSAgICAgICAgeyBT
eXN0ZW1XaWRlUm9sZSwgTlNBY2Nlc3NpYmlsaXR5U3lzdGVtV2lkZVJvbGUgfSwKLSAgICAgICAg
eyBPdXRsaW5lUm9sZSwgTlNBY2Nlc3NpYmlsaXR5T3V0bGluZVJvbGUgfSwKLSAgICAgICAgeyBJ
bmNyZW1lbnRvclJvbGUsIE5TQWNjZXNzaWJpbGl0eUluY3JlbWVudG9yUm9sZSB9LAotICAgICAg
ICB7IEJyb3dzZXJSb2xlLCBOU0FjY2Vzc2liaWxpdHlCcm93c2VyUm9sZSB9LAotICAgICAgICB7
IENvbWJvQm94Um9sZSwgTlNBY2Nlc3NpYmlsaXR5Q29tYm9Cb3hSb2xlIH0sCi0gICAgICAgIHsg
U3BsaXRHcm91cFJvbGUsIE5TQWNjZXNzaWJpbGl0eVNwbGl0R3JvdXBSb2xlIH0sCi0gICAgICAg
IHsgU3BsaXR0ZXJSb2xlLCBOU0FjY2Vzc2liaWxpdHlTcGxpdHRlclJvbGUgfSwKLSAgICAgICAg
eyBDb2xvcldlbGxSb2xlLCBOU0FjY2Vzc2liaWxpdHlDb2xvcldlbGxSb2xlIH0sCi0gICAgICAg
IHsgR3Jvd0FyZWFSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm93QXJlYVJvbGUgfSwKLSAgICAgICAg
eyBTaGVldFJvbGUsIE5TQWNjZXNzaWJpbGl0eVNoZWV0Um9sZSB9LAotICAgICAgICB7IEhlbHBU
YWdSb2xlLCBOU0FjY2Vzc2liaWxpdHlIZWxwVGFnUm9sZSB9LAotICAgICAgICB7IE1hdHRlUm9s
ZSwgTlNBY2Nlc3NpYmlsaXR5TWF0dGVSb2xlIH0sIAotICAgICAgICB7IFJ1bGVyUm9sZSwgTlNB
Y2Nlc3NpYmlsaXR5UnVsZXJSb2xlIH0sCi0gICAgICAgIHsgUnVsZXJNYXJrZXJSb2xlLCBOU0Fj
Y2Vzc2liaWxpdHlSdWxlck1hcmtlclJvbGUgfSwKLSAgICAgICAgeyBMaW5rUm9sZSwgTlNBY2Nl
c3NpYmlsaXR5TGlua1JvbGUgfSwKLSAgICAgICAgeyBEaXNjbG9zdXJlVHJpYW5nbGVSb2xlLCBO
U0FjY2Vzc2liaWxpdHlEaXNjbG9zdXJlVHJpYW5nbGVSb2xlIH0sCi0gICAgICAgIHsgR3JpZFJv
bGUsIE5TQWNjZXNzaWJpbGl0eUdyaWRSb2xlIH0sCi0gICAgICAgIHsgV2ViQ29yZUxpbmtSb2xl
LCBOU0FjY2Vzc2liaWxpdHlMaW5rUm9sZSB9LCAKLSAgICAgICAgeyBJbWFnZU1hcExpbmtSb2xl
LCBOU0FjY2Vzc2liaWxpdHlMaW5rUm9sZSB9LAotICAgICAgICB7IEltYWdlTWFwUm9sZSwgQCJB
WEltYWdlTWFwIiB9LAotICAgICAgICB7IExpc3RNYXJrZXJSb2xlLCBAIkFYTGlzdE1hcmtlciIg
fSwKLSAgICAgICAgeyBXZWJBcmVhUm9sZSwgQCJBWFdlYkFyZWEiIH0sCi0gICAgICAgIHsgSGVh
ZGluZ1JvbGUsIEAiQVhIZWFkaW5nIiB9LAotICAgICAgICB7IExpc3RCb3hSb2xlLCBOU0FjY2Vz
c2liaWxpdHlMaXN0Um9sZSB9LAotICAgICAgICB7IExpc3RCb3hPcHRpb25Sb2xlLCBOU0FjY2Vz
c2liaWxpdHlTdGF0aWNUZXh0Um9sZSB9LAotI2lmIEFDQ0VTU0lCSUxJVFlfVEFCTEVTCi0gICAg
ICAgIHsgQ2VsbFJvbGUsIE5TQWNjZXNzaWJpbGl0eUNlbGxSb2xlIH0sCi0jZWxzZQotICAgICAg
ICB7IENlbGxSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSNlbmRpZgotICAgICAg
ICB7IFRhYmxlSGVhZGVyQ29udGFpbmVyUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0s
Ci0gICAgICAgIHsgRGVmaW5pdGlvbkxpc3REZWZpbml0aW9uUm9sZSwgTlNBY2Nlc3NpYmlsaXR5
R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgRGVmaW5pdGlvbkxpc3RUZXJtUm9sZSwgTlNBY2Nlc3Np
YmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgU2xpZGVyVGh1bWJSb2xlLCBOU0FjY2Vzc2li
aWxpdHlWYWx1ZUluZGljYXRvclJvbGUgfSwKLSAgICAgICAgeyBMYW5kbWFya0FwcGxpY2F0aW9u
Um9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgTGFuZG1hcmtCYW5u
ZXJSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBMYW5kbWFya0Nv
bXBsZW1lbnRhcnlSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBM
YW5kbWFya0NvbnRlbnRJbmZvUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAg
ICAgIHsgTGFuZG1hcmtNYWluUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAg
ICAgIHsgTGFuZG1hcmtOYXZpZ2F0aW9uUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0s
Ci0gICAgICAgIHsgTGFuZG1hcmtTZWFyY2hSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUg
fSwKLSAgICAgICAgeyBBcHBsaWNhdGlvbkFsZXJ0Um9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBS
b2xlIH0sCi0gICAgICAgIHsgQXBwbGljYXRpb25BbGVydERpYWxvZ1JvbGUsIE5TQWNjZXNzaWJp
bGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IEFwcGxpY2F0aW9uRGlhbG9nUm9sZSwgTlNBY2Nl
c3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgQXBwbGljYXRpb25Mb2dSb2xlLCBOU0Fj
Y2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBBcHBsaWNhdGlvbk1hcnF1ZWVSb2xl
LCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBBcHBsaWNhdGlvblN0YXR1
c1JvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IEFwcGxpY2F0aW9u
VGltZXJSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBEb2N1bWVu
dFJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IERvY3VtZW50QXJ0
aWNsZVJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IERvY3VtZW50
TWF0aFJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IERvY3VtZW50
Tm90ZVJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IERvY3VtZW50
UmVnaW9uUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgVXNlcklu
dGVyZmFjZVRvb2x0aXBSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAg
eyBUYWJSb2xlLCBOU0FjY2Vzc2liaWxpdHlSYWRpb0J1dHRvblJvbGUgfSwKLSAgICAgICAgeyBU
YWJMaXN0Um9sZSwgTlNBY2Nlc3NpYmlsaXR5VGFiR3JvdXBSb2xlIH0sCi0gICAgICAgIHsgVGFi
UGFuZWxSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKLSAgICAgICAgeyBUcmVlUm9s
ZSwgTlNBY2Nlc3NpYmlsaXR5T3V0bGluZVJvbGUgfSwKLSAgICAgICAgeyBUcmVlSXRlbVJvbGUs
IE5TQWNjZXNzaWJpbGl0eVJvd1JvbGUgfSwKLSAgICAgICAgeyBMaXN0SXRlbVJvbGUsIE5TQWNj
ZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IFBhcmFncmFwaFJvbGUsIE5TQWNjZXNz
aWJpbGl0eUdyb3VwUm9sZSB9LAotICAgICAgICB7IExhYmVsUm9sZSwgTlNBY2Nlc3NpYmlsaXR5
R3JvdXBSb2xlIH0sCi0gICAgICAgIHsgRGl2Um9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xl
IH0sCi0gICAgICAgIHsgRm9ybVJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9Ci0gICAg
fTsKLSAgICBBY2Nlc3NpYmlsaXR5Um9sZU1hcCYgcm9sZU1hcCA9ICpuZXcgQWNjZXNzaWJpbGl0
eVJvbGVNYXA7Ci0gICAgCi0gICAgY29uc3QgdW5zaWduZWQgbnVtUm9sZXMgPSBzaXplb2Yocm9s
ZXMpIC8gc2l6ZW9mKHJvbGVzWzBdKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVt
Um9sZXM7ICsraSkKLSAgICAgICAgcm9sZU1hcC5zZXQocm9sZXNbaV0udmFsdWUsIHJvbGVzW2ld
LnN0cmluZyk7Ci0gICAgcmV0dXJuIHJvbGVNYXA7Ci19Ci0KLXN0YXRpYyBOU1N0cmluZyogcm9s
ZVZhbHVlVG9OU1N0cmluZyhBY2Nlc3NpYmlsaXR5Um9sZSB2YWx1ZSkKLXsKLSAgICBBU1NFUlQo
dmFsdWUpOwotICAgIHN0YXRpYyBjb25zdCBBY2Nlc3NpYmlsaXR5Um9sZU1hcCYgcm9sZU1hcCA9
IGNyZWF0ZUFjY2Vzc2liaWxpdHlSb2xlTWFwKCk7Ci0gICAgcmV0dXJuIHJvbGVNYXAuZ2V0KHZh
bHVlKTsKLX0KLQotLSAoTlNTdHJpbmcqKXJvbGUKLXsKLSAgICBpZiAobV9vYmplY3QtPmlzQXR0
YWNobWVudCgpKQotICAgICAgICByZXR1cm4gW1tzZWxmIGF0dGFjaG1lbnRWaWV3XSBhY2Nlc3Np
YmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Um9sZUF0dHJpYnV0ZV07Ci0gICAg
TlNTdHJpbmcqIHN0cmluZyA9IHJvbGVWYWx1ZVRvTlNTdHJpbmcobV9vYmplY3QtPnJvbGVWYWx1
ZSgpKTsKLSAgICBpZiAoc3RyaW5nICE9IG5pbCkKLSAgICAgICAgcmV0dXJuIHN0cmluZzsKLSAg
ICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5VW5rbm93blJvbGU7Ci19Ci0KLS0gKE5TU3RyaW5nKilz
dWJyb2xlCi17Ci0gICAgaWYgKG1fb2JqZWN0LT5pc1Bhc3N3b3JkRmllbGQoKSkKLSAgICAgICAg
cmV0dXJuIE5TQWNjZXNzaWJpbGl0eVNlY3VyZVRleHRGaWVsZFN1YnJvbGU7Ci0gICAgCi0gICAg
aWYgKG1fb2JqZWN0LT5pc0F0dGFjaG1lbnQoKSkgewotICAgICAgICBOU1ZpZXcqIGF0dGFjaFZp
ZXcgPSBbc2VsZiBhdHRhY2htZW50Vmlld107Ci0gICAgICAgIGlmIChbW2F0dGFjaFZpZXcgYWNj
ZXNzaWJpbGl0eUF0dHJpYnV0ZU5hbWVzXSBjb250YWluc09iamVjdDpOU0FjY2Vzc2liaWxpdHlT
dWJyb2xlQXR0cmlidXRlXSkgewotICAgICAgICAgICAgcmV0dXJuIFthdHRhY2hWaWV3IGFjY2Vz
c2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlTdWJyb2xlQXR0cmlidXRlXTsK
LSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICBpZiAobV9vYmplY3QtPmlzVHJlZUl0ZW0oKSkK
LSAgICAgICAgcmV0dXJuIE5TQWNjZXNzaWJpbGl0eU91dGxpbmVSb3dTdWJyb2xlOwotICAgIAot
ICAgIGlmIChtX29iamVjdC0+aXNMaXN0KCkpIHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eUxpc3Qq
IGxpc3RPYmplY3QgPSBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5TGlzdCo+KG1fb2JqZWN0KTsK
LSAgICAgICAgaWYgKGxpc3RPYmplY3QtPmlzVW5vcmRlcmVkTGlzdCgpIHx8IGxpc3RPYmplY3Qt
PmlzT3JkZXJlZExpc3QoKSkKLSAgICAgICAgICAgIHJldHVybiBOU0FjY2Vzc2liaWxpdHlDb250
ZW50TGlzdFN1YnJvbGU7Ci0gICAgICAgIGlmIChsaXN0T2JqZWN0LT5pc0RlZmluaXRpb25MaXN0
KCkpCi0gICAgICAgICAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5RGVmaW5pdGlvbkxpc3RTdWJy
b2xlOwotICAgIH0KLSAgICAKLSAgICAvLyBBUklBIGNvbnRlbnQgc3Vicm9sZXMuCi0gICAgc3dp
dGNoIChtX29iamVjdC0+cm9sZVZhbHVlKCkpIHsKLSAgICAgICAgY2FzZSBMYW5kbWFya0FwcGxp
Y2F0aW9uUm9sZToKLSAgICAgICAgICAgIHJldHVybiBAIkFYTGFuZG1hcmtBcHBsaWNhdGlvbiI7
Ci0gICAgICAgIGNhc2UgTGFuZG1hcmtCYW5uZXJSb2xlOgotICAgICAgICAgICAgcmV0dXJuIEAi
QVhMYW5kbWFya0Jhbm5lciI7Ci0gICAgICAgIGNhc2UgTGFuZG1hcmtDb21wbGVtZW50YXJ5Um9s
ZToKLSAgICAgICAgICAgIHJldHVybiBAIkFYTGFuZG1hcmtDb21wbGVtZW50YXJ5IjsKLSAgICAg
ICAgY2FzZSBMYW5kbWFya0NvbnRlbnRJbmZvUm9sZToKLSAgICAgICAgICAgIHJldHVybiBAIkFY
TGFuZG1hcmtDb250ZW50SW5mbyI7Ci0gICAgICAgIGNhc2UgTGFuZG1hcmtNYWluUm9sZToKLSAg
ICAgICAgICAgIHJldHVybiBAIkFYTGFuZG1hcmtNYWluIjsKLSAgICAgICAgY2FzZSBMYW5kbWFy
a05hdmlnYXRpb25Sb2xlOgotICAgICAgICAgICAgcmV0dXJuIEAiQVhMYW5kbWFya05hdmlnYXRp
b24iOwotICAgICAgICBjYXNlIExhbmRtYXJrU2VhcmNoUm9sZToKLSAgICAgICAgICAgIHJldHVy
biBAIkFYTGFuZG1hcmtTZWFyY2giOwotICAgICAgICBjYXNlIEFwcGxpY2F0aW9uQWxlcnRSb2xl
OgotICAgICAgICAgICAgcmV0dXJuIEAiQVhBcHBsaWNhdGlvbkFsZXJ0IjsKLSAgICAgICAgY2Fz
ZSBBcHBsaWNhdGlvbkFsZXJ0RGlhbG9nUm9sZToKLSAgICAgICAgICAgIHJldHVybiBAIkFYQXBw
bGljYXRpb25BbGVydERpYWxvZyI7Ci0gICAgICAgIGNhc2UgQXBwbGljYXRpb25EaWFsb2dSb2xl
OgotICAgICAgICAgICAgcmV0dXJuIEAiQVhBcHBsaWNhdGlvbkRpYWxvZyI7Ci0gICAgICAgIGNh
c2UgQXBwbGljYXRpb25Mb2dSb2xlOgotICAgICAgICAgICAgcmV0dXJuIEAiQVhBcHBsaWNhdGlv
bkxvZyI7Ci0gICAgICAgIGNhc2UgQXBwbGljYXRpb25NYXJxdWVlUm9sZToKLSAgICAgICAgICAg
IHJldHVybiBAIkFYQXBwbGljYXRpb25NYXJxdWVlIjsKLSAgICAgICAgY2FzZSBBcHBsaWNhdGlv
blN0YXR1c1JvbGU6Ci0gICAgICAgICAgICByZXR1cm4gQCJBWEFwcGxpY2F0aW9uU3RhdHVzIjsK
LSAgICAgICAgY2FzZSBBcHBsaWNhdGlvblRpbWVyUm9sZToKLSAgICAgICAgICAgIHJldHVybiBA
IkFYQXBwbGljYXRpb25UaW1lciI7Ci0gICAgICAgIGNhc2UgRG9jdW1lbnRSb2xlOgotICAgICAg
ICAgICAgcmV0dXJuIEAiQVhEb2N1bWVudCI7Ci0gICAgICAgIGNhc2UgRG9jdW1lbnRBcnRpY2xl
Um9sZToKLSAgICAgICAgICAgIHJldHVybiBAIkFYRG9jdW1lbnRBcnRpY2xlIjsKLSAgICAgICAg
Y2FzZSBEb2N1bWVudE1hdGhSb2xlOgotICAgICAgICAgICAgcmV0dXJuIEAiQVhEb2N1bWVudE1h
dGgiOwotICAgICAgICBjYXNlIERvY3VtZW50Tm90ZVJvbGU6Ci0gICAgICAgICAgICByZXR1cm4g
QCJBWERvY3VtZW50Tm90ZSI7Ci0gICAgICAgIGNhc2UgRG9jdW1lbnRSZWdpb25Sb2xlOgotICAg
ICAgICAgICAgcmV0dXJuIEAiQVhEb2N1bWVudFJlZ2lvbiI7Ci0gICAgICAgIGNhc2UgVXNlcklu
dGVyZmFjZVRvb2x0aXBSb2xlOgotICAgICAgICAgICAgcmV0dXJuIEAiQVhVc2VySW50ZXJmYWNl
VG9vbHRpcCI7Ci0gICAgICAgIGNhc2UgVGFiUGFuZWxSb2xlOgotICAgICAgICAgICAgcmV0dXJu
IEAiQVhUYWJQYW5lbCI7Ci0gICAgICAgIGNhc2UgRGVmaW5pdGlvbkxpc3RUZXJtUm9sZToKLSAg
ICAgICAgICAgIHJldHVybiBAIkFYVGVybSI7Ci0gICAgICAgIGNhc2UgRGVmaW5pdGlvbkxpc3RE
ZWZpbml0aW9uUm9sZToKLSAgICAgICAgICAgIHJldHVybiBAIkFYRGVmaW5pdGlvbiI7Ci0gICAg
ICAgIC8vIERlZmF1bHQgZG9lc24ndCByZXR1cm4gYW55dGhpbmcsIHNvIHJvbGVzIGRlZmluZWQg
YmVsb3cgY2FuIGJlIGNob3Nlbi4KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGJyZWFr
OwotICAgIH0KLSAgICAKLSAgICBpZiAobV9vYmplY3QtPmlzTWVkaWFUaW1lbGluZSgpKQotICAg
ICAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5VGltZWxpbmVTdWJyb2xlOwotCi0gICAgcmV0dXJu
IG5pbDsKLX0KLQotLSAoTlNTdHJpbmcqKXJvbGVEZXNjcmlwdGlvbgotewotICAgIGlmICghbV9v
YmplY3QpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICAvLyBhdHRhY2htZW50cyBoYXZlIHRo
ZSBBWEltYWdlIHJvbGUsIGJ1dCBhIGRpZmZlcmVudCBzdWJyb2xlCi0gICAgaWYgKG1fb2JqZWN0
LT5pc0F0dGFjaG1lbnQoKSkKLSAgICAgICAgcmV0dXJuIFtbc2VsZiBhdHRhY2htZW50Vmlld10g
YWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVJvbGVEZXNjcmlwdGlv
bkF0dHJpYnV0ZV07Ci0gICAgCi0gICAgTlNTdHJpbmcqIGF4Um9sZSA9IFtzZWxmIHJvbGVdOwot
ICAgIAotICAgIGlmIChbYXhSb2xlIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlHcm91
cFJvbGVdKSB7Ci0gICAgICAgIHN3aXRjaCAobV9vYmplY3QtPnJvbGVWYWx1ZSgpKSB7Ci0gICAg
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIHJldHVybiBOU0FjY2Vzc2liaWxpdHlS
b2xlRGVzY3JpcHRpb24oTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlLCBbc2VsZiBzdWJyb2xlXSk7
Ci0gICAgICAgICAgICBjYXNlIExhbmRtYXJrQXBwbGljYXRpb25Sb2xlOgotICAgICAgICAgICAg
ICAgIHJldHVybiBBWEFSSUFDb250ZW50R3JvdXBUZXh0KEAiQVJJQUxhbmRtYXJrQXBwbGljYXRp
b24iKTsKLSAgICAgICAgICAgIGNhc2UgTGFuZG1hcmtCYW5uZXJSb2xlOgotICAgICAgICAgICAg
ICAgIHJldHVybiBBWEFSSUFDb250ZW50R3JvdXBUZXh0KEAiQVJJQUxhbmRtYXJrQmFubmVyIik7
Ci0gICAgICAgICAgICBjYXNlIExhbmRtYXJrQ29tcGxlbWVudGFyeVJvbGU6Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoQCJBUklBTGFuZG1hcmtDb21wbGVt
ZW50YXJ5Iik7Ci0gICAgICAgICAgICBjYXNlIExhbmRtYXJrQ29udGVudEluZm9Sb2xlOgotICAg
ICAgICAgICAgICAgIHJldHVybiBBWEFSSUFDb250ZW50R3JvdXBUZXh0KEAiQVJJQUxhbmRtYXJr
Q29udGVudEluZm8iKTsKLSAgICAgICAgICAgIGNhc2UgTGFuZG1hcmtNYWluUm9sZToKLSAgICAg
ICAgICAgICAgICByZXR1cm4gQVhBUklBQ29udGVudEdyb3VwVGV4dChAIkFSSUFMYW5kbWFya01h
aW4iKTsKLSAgICAgICAgICAgIGNhc2UgTGFuZG1hcmtOYXZpZ2F0aW9uUm9sZToKLSAgICAgICAg
ICAgICAgICByZXR1cm4gQVhBUklBQ29udGVudEdyb3VwVGV4dChAIkFSSUFMYW5kbWFya05hdmln
YXRpb24iKTsKLSAgICAgICAgICAgIGNhc2UgTGFuZG1hcmtTZWFyY2hSb2xlOgotICAgICAgICAg
ICAgICAgIHJldHVybiBBWEFSSUFDb250ZW50R3JvdXBUZXh0KEAiQVJJQUxhbmRtYXJrU2VhcmNo
Iik7Ci0gICAgICAgICAgICBjYXNlIEFwcGxpY2F0aW9uQWxlcnRSb2xlOgotICAgICAgICAgICAg
ICAgIHJldHVybiBBWEFSSUFDb250ZW50R3JvdXBUZXh0KEAiQVJJQUFwcGxpY2F0aW9uQWxlcnQi
KTsKLSAgICAgICAgICAgIGNhc2UgQXBwbGljYXRpb25BbGVydERpYWxvZ1JvbGU6Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoQCJBUklBQXBwbGljYXRpb25B
bGVydERpYWxvZyIpOwotICAgICAgICAgICAgY2FzZSBBcHBsaWNhdGlvbkRpYWxvZ1JvbGU6Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoQCJBUklBQXBwbGlj
YXRpb25EaWFsb2ciKTsKLSAgICAgICAgICAgIGNhc2UgQXBwbGljYXRpb25Mb2dSb2xlOgotICAg
ICAgICAgICAgICAgIHJldHVybiBBWEFSSUFDb250ZW50R3JvdXBUZXh0KEAiQVJJQUFwcGxpY2F0
aW9uTG9nIik7Ci0gICAgICAgICAgICBjYXNlIEFwcGxpY2F0aW9uTWFycXVlZVJvbGU6Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoQCJBUklBQXBwbGljYXRp
b25NYXJxdWVlIik7Ci0gICAgICAgICAgICBjYXNlIEFwcGxpY2F0aW9uU3RhdHVzUm9sZToKLSAg
ICAgICAgICAgICAgICByZXR1cm4gQVhBUklBQ29udGVudEdyb3VwVGV4dChAIkFSSUFBcHBsaWNh
dGlvblN0YXR1cyIpOwotICAgICAgICAgICAgY2FzZSBBcHBsaWNhdGlvblRpbWVyUm9sZToKLSAg
ICAgICAgICAgICAgICByZXR1cm4gQVhBUklBQ29udGVudEdyb3VwVGV4dChAIkFSSUFBcHBsaWNh
dGlvblRpbWVyIik7Ci0gICAgICAgICAgICBjYXNlIERvY3VtZW50Um9sZToKLSAgICAgICAgICAg
ICAgICByZXR1cm4gQVhBUklBQ29udGVudEdyb3VwVGV4dChAIkFSSUFEb2N1bWVudCIpOwotICAg
ICAgICAgICAgY2FzZSBEb2N1bWVudEFydGljbGVSb2xlOgotICAgICAgICAgICAgICAgIHJldHVy
biBBWEFSSUFDb250ZW50R3JvdXBUZXh0KEAiQVJJQURvY3VtZW50QXJ0aWNsZSIpOwotICAgICAg
ICAgICAgY2FzZSBEb2N1bWVudE1hdGhSb2xlOgotICAgICAgICAgICAgICAgIHJldHVybiBBWEFS
SUFDb250ZW50R3JvdXBUZXh0KEAiQVJJQURvY3VtZW50TWF0aCIpOwotICAgICAgICAgICAgY2Fz
ZSBEb2N1bWVudE5vdGVSb2xlOgotICAgICAgICAgICAgICAgIHJldHVybiBBWEFSSUFDb250ZW50
R3JvdXBUZXh0KEAiQVJJQURvY3VtZW50Tm90ZSIpOwotICAgICAgICAgICAgY2FzZSBEb2N1bWVu
dFJlZ2lvblJvbGU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRl
eHQoQCJBUklBRG9jdW1lbnRSZWdpb24iKTsKLSAgICAgICAgICAgIGNhc2UgVXNlckludGVyZmFj
ZVRvb2x0aXBSb2xlOgotICAgICAgICAgICAgICAgIHJldHVybiBBWEFSSUFDb250ZW50R3JvdXBU
ZXh0KEAiQVJJQVVzZXJJbnRlcmZhY2VUb29sdGlwIik7Ci0gICAgICAgICAgICBjYXNlIFRhYlBh
bmVsUm9sZToKLSAgICAgICAgICAgICAgICByZXR1cm4gQVhBUklBQ29udGVudEdyb3VwVGV4dChA
IkFSSUFUYWJQYW5lbCIpOwotICAgICAgICAgICAgY2FzZSBEZWZpbml0aW9uTGlzdFRlcm1Sb2xl
OgotICAgICAgICAgICAgICAgIHJldHVybiBBWERlZmluaXRpb25MaXN0VGVybVRleHQoKTsKLSAg
ICAgICAgICAgIGNhc2UgRGVmaW5pdGlvbkxpc3REZWZpbml0aW9uUm9sZToKLSAgICAgICAgICAg
ICAgICByZXR1cm4gQVhEZWZpbml0aW9uTGlzdERlZmluaXRpb25UZXh0KCk7Ci0gICAgICAgIH0K
LSAgICB9ICAgICAgICAKLSAgICAKLSAgICBpZiAoW2F4Um9sZSBpc0VxdWFsVG9TdHJpbmc6QCJB
WFdlYkFyZWEiXSkKLSAgICAgICAgcmV0dXJuIEFYV2ViQXJlYVRleHQoKTsKLSAgICAKLSAgICBp
ZiAoW2F4Um9sZSBpc0VxdWFsVG9TdHJpbmc6QCJBWExpbmsiXSkKLSAgICAgICAgcmV0dXJuIEFY
TGlua1RleHQoKTsKLSAgICAKLSAgICBpZiAoW2F4Um9sZSBpc0VxdWFsVG9TdHJpbmc6QCJBWExp
c3RNYXJrZXIiXSkKLSAgICAgICAgcmV0dXJuIEFYTGlzdE1hcmtlclRleHQoKTsKLSAgICAKLSAg
ICBpZiAoW2F4Um9sZSBpc0VxdWFsVG9TdHJpbmc6QCJBWEltYWdlTWFwIl0pCi0gICAgICAgIHJl
dHVybiBBWEltYWdlTWFwVGV4dCgpOwotCi0gICAgaWYgKFtheFJvbGUgaXNFcXVhbFRvU3RyaW5n
OkAiQVhIZWFkaW5nIl0pCi0gICAgICAgIHJldHVybiBBWEhlYWRpbmdUZXh0KCk7Ci0KLSAgICAv
LyBBcHBLaXQgYWxzbyByZXR1cm5zIEFYVGFiIGZvciB0aGUgcm9sZSBkZXNjcmlwdGlvbiBmb3Ig
YSB0YWIgaXRlbS4KLSAgICBpZiAobV9vYmplY3QtPmlzVGFiSXRlbSgpKQotICAgICAgICByZXR1
cm4gTlNBY2Nlc3NpYmlsaXR5Um9sZURlc2NyaXB0aW9uKEAiQVhUYWIiLCBuaWwpOwotICAgIAot
ICAgIC8vIFdlIHNob3VsZCB0cnkgdGhlIHN5c3RlbSBkZWZhdWx0IHJvbGUgZGVzY3JpcHRpb24g
Zm9yIGFsbCBvdGhlciByb2xlcy4KLSAgICAvLyBJZiB3ZSBnZXQgdGhlIHNhbWUgc3RyaW5nIGJh
Y2ssIHRoZW4gYXMgYSBsYXN0IHJlc29ydCwgcmV0dXJuIHVua25vd24uCi0gICAgTlNTdHJpbmcq
IGRlZmF1bHRSb2xlRGVzY3JpcHRpb24gPSBOU0FjY2Vzc2liaWxpdHlSb2xlRGVzY3JpcHRpb24o
YXhSb2xlLCBbc2VsZiBzdWJyb2xlXSk7Ci0gICAgaWYgKCFbZGVmYXVsdFJvbGVEZXNjcmlwdGlv
biBpc0VxdWFsVG9TdHJpbmc6YXhSb2xlXSkKLSAgICAgICAgcmV0dXJuIGRlZmF1bHRSb2xlRGVz
Y3JpcHRpb247Ci0KLSAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5Um9sZURlc2NyaXB0aW9uKE5T
QWNjZXNzaWJpbGl0eVVua25vd25Sb2xlLCBuaWwpOwotfQotCi0tIChpZClzY3JvbGxWaWV3UGFy
ZW50Ci17Ci0gICAgaWYgKCFtX29iamVjdCB8fCAhbV9vYmplY3QtPmlzQWNjZXNzaWJpbGl0eVNj
cm9sbFZpZXcoKSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICAvLyBJZiB0aGlzIHNj
cm9sbCB2aWV3IHByb3ZpZGVzIGl0J3MgcGFyZW50IG9iamVjdCAoYmVjYXVzZSBpdCdzIGEgc3Vi
LWZyYW1lKSwgdGhlbgotICAgIC8vIHdlIHNob3VsZCBub3QgZmluZCB0aGUgcmVtb3RlQWNjZXNz
aWJpbGl0eVBhcmVudC4KLSAgICBpZiAobV9vYmplY3QtPnBhcmVudE9iamVjdCgpKQotICAgICAg
ICByZXR1cm4gbmlsOwotICAgIAotICAgIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KiBzY3JvbGxW
aWV3ID0gdG9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldyhtX29iamVjdCk7Ci0gICAgU2Nyb2xsVmll
dyogc2Nyb2xsID0gc2Nyb2xsVmlldy0+c2Nyb2xsVmlldygpOwotICAgIGlmICghc2Nyb2xsKQot
ICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIGlmIChzY3JvbGwtPnBsYXRmb3JtV2lkZ2V0
KCkpCi0gICAgICAgIHJldHVybiBOU0FjY2Vzc2liaWxpdHlVbmlnbm9yZWRBbmNlc3RvcihzY3Jv
bGwtPnBsYXRmb3JtV2lkZ2V0KCkpOwotCi0gICAgcmV0dXJuIFtzZWxmIHJlbW90ZUFjY2Vzc2li
aWxpdHlQYXJlbnRPYmplY3RdOwotfQotCi0vLyBGSVhNRTogc3BsaXQgdXAgdGhpcyBmdW5jdGlv
biBpbiBhIGJldHRlciB3YXkuICAKLS8vIHN1Z2dlc3Rpb25zOiBVc2UgYSBoYXNoIHRhYmxlIHRo
YXQgbWFwcyBhdHRyaWJ1dGUgbmFtZXMgdG8gZnVuY3Rpb24gY2FsbHMsCi0vLyBvciBtYXliZSBw
b2ludGVycyB0byBtZW1iZXIgZnVuY3Rpb25zCi0tIChpZClhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWU6KE5TU3RyaW5nKilhdHRyaWJ1dGVOYW1lCi17Ci0gICAgaWYgKCFbc2VsZiB1cGRhdGVP
YmplY3RCYWNraW5nU3RvcmVdKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIGlmIChb
YXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eVJvbGVBdHRyaWJ1
dGVdKQotICAgICAgICByZXR1cm4gW3NlbGYgcm9sZV07Ci0KLSAgICBpZiAoW2F0dHJpYnV0ZU5h
bWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlTdWJyb2xlQXR0cmlidXRlXSkKLSAg
ICAgICAgcmV0dXJuIFtzZWxmIHN1YnJvbGVdOwotCi0gICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlz
RXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5Um9sZURlc2NyaXB0aW9uQXR0cmlidXRlXSkK
LSAgICAgICAgcmV0dXJuIFtzZWxmIHJvbGVEZXNjcmlwdGlvbl07Ci0KLSAgICBpZiAoW2F0dHJp
YnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlQYXJlbnRBdHRyaWJ1dGVd
KSB7Ci0KLSAgICAgICAgLy8gVGhpcyB3aWxsIHJldHVybiB0aGUgcGFyZW50IG9mIHRoZSBBWFdl
YkFyZWEsIGlmIHRoaXMgaXMgYSB3ZWIgYXJlYS4KLSAgICAgICAgaWQgc2Nyb2xsVmlld1BhcmVu
dCA9IFtzZWxmIHNjcm9sbFZpZXdQYXJlbnRdOwotICAgICAgICBpZiAoc2Nyb2xsVmlld1BhcmVu
dCkKLSAgICAgICAgICAgIHJldHVybiBzY3JvbGxWaWV3UGFyZW50OwotICAgICAgICAKLSAgICAg
ICAgLy8gVHJlZSBpdGVtIChjaGFuZ2VkIHRvIEFYUm93cykgY2FuIG9ubHkgcmVwb3J0IHRoZSB0
cmVlIChBWE91dGxpbmUpIGFzIGl0cyBwYXJlbnQuCi0gICAgICAgIGlmIChtX29iamVjdC0+aXNU
cmVlSXRlbSgpKSB7Ci0gICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBt
X29iamVjdC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7Ci0gICAgICAgICAgICB3aGlsZSAocGFy
ZW50KSB7Ci0gICAgICAgICAgICAgICAgaWYgKHBhcmVudC0+aXNUcmVlKCkpCi0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiBwYXJlbnQtPndyYXBwZXIoKTsKLSAgICAgICAgICAgICAgICBwYXJl
bnQgPSBwYXJlbnQtPnBhcmVudE9iamVjdFVuaWdub3JlZCgpOwotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0gICAgICAgIAotICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBt
X29iamVjdC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7Ci0gICAgICAgIGlmICghcGFyZW50KQot
ICAgICAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgICAgICAvLyBJbiBXZWJLaXQxLCB0aGUgc2Ny
b2xsIHZpZXcgaXMgcHJvdmlkZWQgYnkgdGhlIHN5c3RlbSAodGhlIGF0dGFjaG1lbnQgdmlldyks
IHNvIHRoZSBwYXJlbnQKLSAgICAgICAgLy8gc2hvdWxkIGJlIHJlcG9ydGVkIGRpcmVjdGx5IGFz
IHN1Y2guCi0gICAgICAgIGlmIChtX29iamVjdC0+aXNXZWJBcmVhKCkgJiYgcGFyZW50LT5pc0F0
dGFjaG1lbnQoKSkKLSAgICAgICAgICAgIHJldHVybiBbcGFyZW50LT53cmFwcGVyKCkgYXR0YWNo
bWVudFZpZXddOwotICAgICAgICAKLSAgICAgICAgcmV0dXJuIHBhcmVudC0+d3JhcHBlcigpOwot
ICAgIH0KLQotICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNz
aWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlXSkgewotICAgICAgICBpZiAobV9vYmplY3QtPmNoaWxk
cmVuKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBOU0FycmF5KiBjaGlsZHJlbiA9IFtzZWxm
IHJlbmRlcldpZGdldENoaWxkcmVuXTsKLSAgICAgICAgICAgIGlmIChjaGlsZHJlbiAhPSBuaWwp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNoaWxkcmVuOwotICAgICAgICB9Ci0KLSAgICAgICAg
Ly8gVGhlIHRyZWUncyAoQVhPdXRsaW5lKSBjaGlsZHJlbiBhcmUgc3VwcG9zZWQgdG8gYmUgaXRz
IHJvd3MgYW5kIGNvbHVtbnMuCi0gICAgICAgIC8vIFRoZSBBUklBIHNwZWMgZG9lc24ndCBoYXZl
IGNvbHVtbnMsIHNvIHdlIGp1c3QgbmVlZCByb3dzLgotICAgICAgICBpZiAobV9vYmplY3QtPmlz
VHJlZSgpKQotICAgICAgICAgICAgcmV0dXJuIFtzZWxmIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVW
YWx1ZTpOU0FjY2Vzc2liaWxpdHlSb3dzQXR0cmlidXRlXTsKLQotICAgICAgICAvLyBBIHRyZWUg
aXRlbSBzaG91bGQgb25seSBleHBvc2UgaXRzIGNvbnRlbnQgYXMgaXRzIGNoaWxkcmVuIChub3Qg
aXRzIHJvd3MpCi0gICAgICAgIGlmIChtX29iamVjdC0+aXNUcmVlSXRlbSgpKSB7Ci0gICAgICAg
ICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgY29u
dGVudENvcHk7Ci0gICAgICAgICAgICBtX29iamVjdC0+YXJpYVRyZWVJdGVtQ29udGVudChjb250
ZW50Q29weSk7Ci0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShjb250ZW50Q29w
eSk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5
KG1fb2JqZWN0LT5jaGlsZHJlbigpKTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKFthdHRyaWJ1dGVO
YW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRDaGlsZHJlbkF0dHJp
YnV0ZV0pIHsKLSAgICAgICAgaWYgKG1fb2JqZWN0LT5pc0xpc3RCb3goKSkgewotICAgICAgICAg
ICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHNlbGVj
dGVkQ2hpbGRyZW5Db3B5OwotICAgICAgICAgICAgbV9vYmplY3QtPnNlbGVjdGVkQ2hpbGRyZW4o
c2VsZWN0ZWRDaGlsZHJlbkNvcHkpOwotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJy
YXkoc2VsZWN0ZWRDaGlsZHJlbkNvcHkpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBuaWw7
Ci0gICAgfQotICAgIAotICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5T
QWNjZXNzaWJpbGl0eVZpc2libGVDaGlsZHJlbkF0dHJpYnV0ZV0pIHsKLSAgICAgICAgaWYgKG1f
b2JqZWN0LT5pc0xpc3RCb3goKSkgewotICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6
QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHZpc2libGVDaGlsZHJlbkNvcHk7Ci0gICAgICAg
ICAgICBtX29iamVjdC0+dmlzaWJsZUNoaWxkcmVuKHZpc2libGVDaGlsZHJlbkNvcHkpOwotICAg
ICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkodmlzaWJsZUNoaWxkcmVuQ29weSk7Ci0g
ICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAobV9vYmplY3QtPmlzTGlzdCgpKQotICAgICAgICAg
ICAgcmV0dXJuIFtzZWxmIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxp
dHlDaGlsZHJlbkF0dHJpYnV0ZV07Ci0KLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICB9Ci0gICAg
Ci0gICAgCi0gICAgaWYgKG1fb2JqZWN0LT5pc1dlYkFyZWEoKSkgewotICAgICAgICBpZiAoW2F0
dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOkAiQVhMaW5rVUlFbGVtZW50cyJdKSB7Ci0gICAg
ICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Ig
bGlua3M7Ci0gICAgICAgICAgICBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
Kj4obV9vYmplY3QpLT5nZXREb2N1bWVudExpbmtzKGxpbmtzKTsKLSAgICAgICAgICAgIHJldHVy
biBjb252ZXJ0VG9OU0FycmF5KGxpbmtzKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoW2F0dHJp
YnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOkAiQVhMb2FkZWQiXSkKLSAgICAgICAgICAgIHJldHVy
biBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6bV9vYmplY3QtPmlzTG9hZGVkKCldOwotICAgICAg
ICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOkAiQVhMYXlvdXRDb3VudCJdKQot
ICAgICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoSW50Om1fb2JqZWN0LT5sYXlv
dXRDb3VudCgpXTsKLSAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpO
U0FjY2Vzc2liaWxpdHlMb2FkaW5nUHJvZ3Jlc3NBdHRyaWJ1dGVdKQotICAgICAgICAgICAgcmV0
dXJuIFtOU051bWJlciBudW1iZXJXaXRoRG91YmxlOm1fb2JqZWN0LT5lc3RpbWF0ZWRMb2FkaW5n
UHJvZ3Jlc3MoKV07Ci0gICAgfQotICAgIAotICAgIGlmIChtX29iamVjdC0+aXNUZXh0Q29udHJv
bCgpKSB7Ci0gICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNj
ZXNzaWJpbGl0eU51bWJlck9mQ2hhcmFjdGVyc0F0dHJpYnV0ZV0pIHsKLSAgICAgICAgICAgIGlu
dCBsZW5ndGggPSBtX29iamVjdC0+dGV4dExlbmd0aCgpOwotICAgICAgICAgICAgaWYgKGxlbmd0
aCA8IDApCi0gICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAgICAgICAgIHJldHVybiBb
TlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkSW50Omxlbmd0aF07Ci0gICAgICAgIH0KLSAgICAg
ICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5U2Vs
ZWN0ZWRUZXh0QXR0cmlidXRlXSkgewotICAgICAgICAgICAgU3RyaW5nIHNlbGVjdGVkVGV4dCA9
IG1fb2JqZWN0LT5zZWxlY3RlZFRleHQoKTsKLSAgICAgICAgICAgIGlmIChzZWxlY3RlZFRleHQu
aXNOdWxsKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAgICAgICAgIHJldHVy
biAoTlNTdHJpbmcqKXNlbGVjdGVkVGV4dDsKLSAgICAgICAgfQotICAgICAgICBpZiAoW2F0dHJp
YnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFRleHRSYW5n
ZUF0dHJpYnV0ZV0pIHsKLSAgICAgICAgICAgIFBsYWluVGV4dFJhbmdlIHRleHRSYW5nZSA9IG1f
b2JqZWN0LT5zZWxlY3RlZFRleHRSYW5nZSgpOwotICAgICAgICAgICAgaWYgKHRleHRSYW5nZS5p
c051bGwoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6
TlNNYWtlUmFuZ2UoMCwgMCldOwotICAgICAgICAgICAgcmV0dXJuIFtOU1ZhbHVlIHZhbHVlV2l0
aFJhbmdlOk5TTWFrZVJhbmdlKHRleHRSYW5nZS5zdGFydCwgdGV4dFJhbmdlLmxlbmd0aCldOwot
ICAgICAgICB9Ci0gICAgICAgIC8vIFRPRE86IEdldCBhY3R1YWwgdmlzaWJsZSByYW5nZS4gPHJk
YXI6Ly9wcm9ibGVtLzQ3MTIxMDE+Ci0gICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFs
VG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eVZpc2libGVDaGFyYWN0ZXJSYW5nZUF0dHJpYnV0ZV0p
Ci0gICAgICAgICAgICByZXR1cm4gbV9vYmplY3QtPmlzUGFzc3dvcmRGaWVsZCgpID8gbmlsIDog
W05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6IE5TTWFrZVJhbmdlKDAsIG1fb2JqZWN0LT50ZXh0TGVu
Z3RoKCkpXTsKLSAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNB
Y2Nlc3NpYmlsaXR5SW5zZXJ0aW9uUG9pbnRMaW5lTnVtYmVyQXR0cmlidXRlXSkgewotICAgICAg
ICAgICAgLy8gaWYgc2VsZWN0aW9uRW5kID4gMCwgdGhlbiB0aGVyZSBpcyBzZWxlY3RlZCB0ZXh0
IGFuZCB0aGlzIHF1ZXN0aW9uIHNob3VsZCBub3QgYmUgYW5zd2VyZWQKLSAgICAgICAgICAgIGlm
IChtX29iamVjdC0+aXNQYXNzd29yZEZpZWxkKCkgfHwgbV9vYmplY3QtPnNlbGVjdGlvbkVuZCgp
ID4gMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwotICAgICAgICAgICAgaW50IGxpbmVO
dW1iZXIgPSBtX29iamVjdC0+bGluZUZvclBvc2l0aW9uKG1fb2JqZWN0LT52aXNpYmxlUG9zaXRp
b25Gb3JJbmRleChtX29iamVjdC0+c2VsZWN0aW9uU3RhcnQoKSwgdHJ1ZSkpOwotICAgICAgICAg
ICAgaWYgKGxpbmVOdW1iZXIgPCAwKQotICAgICAgICAgICAgICAgIHJldHVybiBuaWw7Ci0gICAg
ICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6bGluZU51bWJlcl07Ci0gICAg
ICAgIH0KLSAgICB9Ci0gICAgCi0gICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmlu
ZzogTlNBY2Nlc3NpYmlsaXR5VVJMQXR0cmlidXRlXSkgewotICAgICAgICBLVVJMIHVybCA9IG1f
b2JqZWN0LT51cmwoKTsKLSAgICAgICAgaWYgKHVybC5pc051bGwoKSkKLSAgICAgICAgICAgIHJl
dHVybiBuaWw7Ci0gICAgICAgIHJldHVybiAoTlNVUkwqKXVybDsKLSAgICB9Ci0KLSAgICBpZiAo
W2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBAIkFYVmlzaXRlZCJdKQotICAgICAgICBy
ZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhCb29sOiBtX29iamVjdC0+aXNWaXNpdGVkKCldOwot
ICAgIAotICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJp
bGl0eVRpdGxlQXR0cmlidXRlXSkgewotICAgICAgICBpZiAobV9vYmplY3QtPmlzQXR0YWNobWVu
dCgpKSB7Ci0gICAgICAgICAgICBpZiAoW1tbc2VsZiBhdHRhY2htZW50Vmlld10gYWNjZXNzaWJp
bGl0eUF0dHJpYnV0ZU5hbWVzXSBjb250YWluc09iamVjdDpOU0FjY2Vzc2liaWxpdHlUaXRsZUF0
dHJpYnV0ZV0pIAotICAgICAgICAgICAgICAgIHJldHVybiBbW3NlbGYgYXR0YWNobWVudFZpZXdd
IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlUaXRsZUF0dHJpYnV0
ZV07Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG1fb2JqZWN0LT50aXRsZSgpOwotICAgIH0K
LSAgICAKLSAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2li
aWxpdHlEZXNjcmlwdGlvbkF0dHJpYnV0ZV0pIHsKLSAgICAgICAgaWYgKG1fb2JqZWN0LT5pc0F0
dGFjaG1lbnQoKSkgewotICAgICAgICAgICAgaWYgKFtbW3NlbGYgYXR0YWNobWVudFZpZXddIGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVOYW1lc10gY29udGFpbnNPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5
RGVzY3JpcHRpb25BdHRyaWJ1dGVdKQotICAgICAgICAgICAgICAgIHJldHVybiBbW3NlbGYgYXR0
YWNobWVudFZpZXddIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlE
ZXNjcmlwdGlvbkF0dHJpYnV0ZV07Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG1fb2JqZWN0
LT5hY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24oKTsKLSAgICB9Ci0KLSAgICBpZiAoW2F0dHJpYnV0
ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlWYWx1ZUF0dHJpYnV0ZV0pIHsK
LSAgICAgICAgaWYgKG1fb2JqZWN0LT5pc0F0dGFjaG1lbnQoKSkgewotICAgICAgICAgICAgaWYg
KFtbW3NlbGYgYXR0YWNobWVudFZpZXddIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVOYW1lc10gY29u
dGFpbnNPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VmFsdWVBdHRyaWJ1dGVdKSAKLSAgICAgICAgICAg
ICAgICByZXR1cm4gW1tzZWxmIGF0dGFjaG1lbnRWaWV3XSBhY2Nlc3NpYmlsaXR5QXR0cmlidXRl
VmFsdWU6TlNBY2Nlc3NpYmlsaXR5VmFsdWVBdHRyaWJ1dGVdOwotICAgICAgICB9Ci0gICAgICAg
IGlmIChtX29iamVjdC0+aXNQcm9ncmVzc0luZGljYXRvcigpIHx8IG1fb2JqZWN0LT5pc1NsaWRl
cigpIHx8IG1fb2JqZWN0LT5pc1Njcm9sbGJhcigpKQotICAgICAgICAgICAgcmV0dXJuIFtOU051
bWJlciBudW1iZXJXaXRoRmxvYXQ6bV9vYmplY3QtPnZhbHVlRm9yUmFuZ2UoKV07Ci0gICAgICAg
IGlmIChtX29iamVjdC0+cm9sZVZhbHVlKCkgPT0gU2xpZGVyVGh1bWJSb2xlKQotICAgICAgICAg
ICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6bV9vYmplY3QtPnBhcmVudE9iamVj
dCgpLT52YWx1ZUZvclJhbmdlKCldOwotICAgICAgICBpZiAobV9vYmplY3QtPmlzSGVhZGluZygp
KQotICAgICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoSW50Om1fb2JqZWN0LT5o
ZWFkaW5nTGV2ZWwoKV07Ci0gICAgICAgIAotICAgICAgICBpZiAobV9vYmplY3QtPmlzQ2hlY2ti
b3hPclJhZGlvKCkpIHsKLSAgICAgICAgICAgIHN3aXRjaCAobV9vYmplY3QtPmNoZWNrYm94T3JS
YWRpb1ZhbHVlKCkpIHsKLSAgICAgICAgICAgIGNhc2UgQnV0dG9uU3RhdGVPZmY6Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoSW50OjBdOwotICAgICAgICAgICAg
Y2FzZSBCdXR0b25TdGF0ZU9uOgotICAgICAgICAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVt
YmVyV2l0aEludDoxXTsKLSAgICAgICAgICAgIGNhc2UgQnV0dG9uU3RhdGVNaXhlZDoKLSAgICAg
ICAgICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6Ml07Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLyByYWRpbyBncm91cHMgcmV0dXJuIHRoZSBzZWxl
Y3RlZCByYWRpbyBidXR0b24gYXMgdGhlIEFYVmFsdWUKLSAgICAgICAgaWYgKG1fb2JqZWN0LT5p
c1JhZGlvR3JvdXAoKSkgewotICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcmFkaW9C
dXR0b24gPSBtX29iamVjdC0+c2VsZWN0ZWRSYWRpb0J1dHRvbigpOwotICAgICAgICAgICAgaWYg
KCFyYWRpb0J1dHRvbikKLSAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwotICAgICAgICAgICAg
cmV0dXJuIHJhZGlvQnV0dG9uLT53cmFwcGVyKCk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAg
ICAgIGlmIChtX29iamVjdC0+aXNUYWJMaXN0KCkpIHsKLSAgICAgICAgICAgIEFjY2Vzc2liaWxp
dHlPYmplY3QqIHRhYkl0ZW0gPSBtX29iamVjdC0+c2VsZWN0ZWRUYWJJdGVtKCk7Ci0gICAgICAg
ICAgICBpZiAoIXRhYkl0ZW0pCi0gICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAgICAg
ICAgIHJldHVybiB0YWJJdGVtLT53cmFwcGVyKCk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAg
ICAgIGlmIChtX29iamVjdC0+aXNUYWJJdGVtKCkpCi0gICAgICAgICAgICByZXR1cm4gW05TTnVt
YmVyIG51bWJlcldpdGhJbnQ6bV9vYmplY3QtPmlzU2VsZWN0ZWQoKV07Ci0gICAgICAgIAotICAg
ICAgICByZXR1cm4gbV9vYmplY3QtPnN0cmluZ1ZhbHVlKCk7Ci0gICAgfQotCi0gICAgaWYgKFth
dHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5TWluVmFsdWVBdHRy
aWJ1dGVdKQotICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDptX29iamVj
dC0+bWluVmFsdWVGb3JSYW5nZSgpXTsKLQotICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFs
VG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eU1heFZhbHVlQXR0cmlidXRlXSkKLSAgICAgICAgcmV0
dXJuIFtOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6bV9vYmplY3QtPm1heFZhbHVlRm9yUmFuZ2Uo
KV07Ci0KLSAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2li
aWxpdHlIZWxwQXR0cmlidXRlXSkKLSAgICAgICAgcmV0dXJuIG1fb2JqZWN0LT5oZWxwVGV4dCgp
OwotCi0gICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmls
aXR5Rm9jdXNlZEF0dHJpYnV0ZV0pCi0gICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0
aEJvb2w6IG1fb2JqZWN0LT5pc0ZvY3VzZWQoKV07Ci0KLSAgICBpZiAoW2F0dHJpYnV0ZU5hbWUg
aXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlFbmFibGVkQXR0cmlidXRlXSkKLSAgICAg
ICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDogbV9vYmplY3QtPmlzRW5hYmxlZCgp
XTsKLQotICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJp
bGl0eVNpemVBdHRyaWJ1dGVdKSB7Ci0gICAgICAgIExheW91dFNpemUgcyA9IG1fb2JqZWN0LT5z
aXplKCk7Ci0gICAgICAgIHJldHVybiBbTlNWYWx1ZSB2YWx1ZVdpdGhTaXplOiBOU01ha2VTaXpl
KHMud2lkdGgoKSwgcy5oZWlnaHQoKSldOwotICAgIH0KLQotICAgIGlmIChbYXR0cmlidXRlTmFt
ZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eVBvc2l0aW9uQXR0cmlidXRlXSkKLSAg
ICAgICAgcmV0dXJuIFtzZWxmIHBvc2l0aW9uXTsKLQotICAgIGlmIChbYXR0cmlidXRlTmFtZSBp
c0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eVdpbmRvd0F0dHJpYnV0ZV0gfHwKLSAgICAg
ICAgW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlUb3BMZXZl
bFVJRWxlbWVudEF0dHJpYnV0ZV0pIHsKLSAgICAgICAgCi0gICAgICAgIGlkIHJlbW90ZVBhcmVu
dCA9IFtzZWxmIHJlbW90ZUFjY2Vzc2liaWxpdHlQYXJlbnRPYmplY3RdOwotICAgICAgICBpZiAo
cmVtb3RlUGFyZW50KQotICAgICAgICAgICAgcmV0dXJuIFtyZW1vdGVQYXJlbnQgYWNjZXNzaWJp
bGl0eUF0dHJpYnV0ZVZhbHVlOmF0dHJpYnV0ZU5hbWVdOwotICAgICAgICAKLSAgICAgICAgRnJh
bWVWaWV3KiBmdiA9IG1fb2JqZWN0LT5kb2N1bWVudEZyYW1lVmlldygpOwotICAgICAgICBpZiAo
ZnYpCi0gICAgICAgICAgICByZXR1cm4gW2Z2LT5wbGF0Zm9ybVdpZGdldCgpIHdpbmRvd107Ci0g
ICAgICAgIHJldHVybiBuaWw7Ci0gICAgfQotICAgIAotICAgIGlmIChbYXR0cmlidXRlTmFtZSBp
c0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5QWNjZXNzS2V5QXR0cmlidXRlXSkgewotICAg
ICAgICBBdG9taWNTdHJpbmcgYWNjZXNzS2V5ID0gbV9vYmplY3QtPmFjY2Vzc0tleSgpOwotICAg
ICAgICBpZiAoYWNjZXNzS2V5LmlzTnVsbCgpKQotICAgICAgICAgICAgcmV0dXJuIG5pbDsKLSAg
ICAgICAgcmV0dXJuIGFjY2Vzc0tleTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKFthdHRyaWJ1dGVO
YW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlUYWJzQXR0cmlidXRlXSkgewotICAg
ICAgICBpZiAobV9vYmplY3QtPmlzVGFiTGlzdCgpKSB7Ci0gICAgICAgICAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgdGFic0NoaWxkcmVuOwotICAg
ICAgICAgICAgbV9vYmplY3QtPnRhYkNoaWxkcmVuKHRhYnNDaGlsZHJlbik7Ci0gICAgICAgICAg
ICByZXR1cm4gY29udmVydFRvTlNBcnJheSh0YWJzQ2hpbGRyZW4pOwotICAgICAgICB9Ci0gICAg
fQotICAgIAotICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3Np
YmlsaXR5Q29udGVudHNBdHRyaWJ1dGVdKSB7Ci0gICAgICAgIC8vIFRoZSBjb250ZW50cyBvZiBh
IHRhYiBsaXN0IGFyZSBhbGwgdGhlIGNoaWxkcmVuIGV4Y2VwdCB0aGUgdGFicy4KLSAgICAgICAg
aWYgKG1fb2JqZWN0LT5pc1RhYkxpc3QoKSkgewotICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9i
amVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNoaWxkcmVuID0gbV9vYmplY3QtPmNo
aWxkcmVuKCk7Ci0gICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3IgdGFic0NoaWxkcmVuOwotICAgICAgICAgICAgbV9vYmplY3QtPnRhYkNo
aWxkcmVuKHRhYnNDaGlsZHJlbik7Ci0KLSAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6
OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBjb250ZW50czsKLSAgICAgICAgICAgIHVuc2ln
bmVkIGNoaWxkcmVuU2l6ZSA9IGNoaWxkcmVuLnNpemUoKTsKLSAgICAgICAgICAgIGZvciAodW5z
aWduZWQgayA9IDA7IGsgPCBjaGlsZHJlblNpemU7ICsraykgewotICAgICAgICAgICAgICAgIGlm
ICh0YWJzQ2hpbGRyZW4uZmluZChjaGlsZHJlbltrXSkgPT0gV1RGOjpub3RGb3VuZCkKLSAgICAg
ICAgICAgICAgICAgICAgY29udGVudHMuYXBwZW5kKGNoaWxkcmVuW2tdKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KGNvbnRlbnRzKTsKLSAgICAg
ICAgfSBlbHNlIGlmIChtX29iamVjdC0+aXNTY3JvbGxWaWV3KCkpIHsKLSAgICAgICAgICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBjaGlsZHJlbiA9
IG1fb2JqZWN0LT5jaGlsZHJlbigpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICAvLyBBIHNj
cm9sbFZpZXcncyBjb250ZW50cyBhcmUgZXZlcnl0aGluZyBleGNlcHQgdGhlIHNjcm9sbCBiYXJz
LgotICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVu
VmVjdG9yIGNvbnRlbnRzOwotICAgICAgICAgICAgdW5zaWduZWQgY2hpbGRyZW5TaXplID0gY2hp
bGRyZW4uc2l6ZSgpOwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBrID0gMDsgayA8IGNoaWxk
cmVuU2l6ZTsgKytrKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFjaGlsZHJlbltrXS0+aXNTY3Jv
bGxiYXIoKSkKLSAgICAgICAgICAgICAgICAgICAgY29udGVudHMuYXBwZW5kKGNoaWxkcmVuW2td
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KGNv
bnRlbnRzKTsgICAgICAgICAgICAKLSAgICAgICAgfQotICAgIH0gICAgCi0gICAgCi0gICAgaWYg
KG1fb2JqZWN0LT5pc0FjY2Vzc2liaWxpdHlUYWJsZSgpKSB7Ci0gICAgICAgIC8vIFRPRE86IGRp
c3Rpbmd1aXNoIGJldHdlZW4gdmlzaWJsZSBhbmQgbm9uLXZpc2libGUgcm93cwotICAgICAgICBp
ZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVJvd3NBdHRy
aWJ1dGVdIHx8IAotICAgICAgICAgICAgW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5T
QWNjZXNzaWJpbGl0eVZpc2libGVSb3dzQXR0cmlidXRlXSkgewotICAgICAgICAgICAgcmV0dXJu
IGNvbnZlcnRUb05TQXJyYXkoc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlKj4obV9vYmpl
Y3QpLT5yb3dzKCkpOwotICAgICAgICB9Ci0gICAgICAgIC8vIFRPRE86IGRpc3Rpbmd1aXNoIGJl
dHdlZW4gdmlzaWJsZSBhbmQgbm9uLXZpc2libGUgY29sdW1ucwotICAgICAgICBpZiAoW2F0dHJp
YnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNvbHVtbnNBdHRyaWJ1dGVd
IHx8IAotICAgICAgICAgICAgW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNz
aWJpbGl0eVZpc2libGVDb2x1bW5zQXR0cmlidXRlXSkgewotICAgICAgICAgICAgcmV0dXJuIGNv
bnZlcnRUb05TQXJyYXkoc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlKj4obV9vYmplY3Qp
LT5jb2x1bW5zKCkpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAoW2F0dHJpYnV0
ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkUm93c0F0dHJpYnV0
ZV0pIHsKLSAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciBzZWxlY3RlZENoaWxkcmVuQ29weTsKLSAgICAgICAgICAgIG1fb2JqZWN0LT5z
ZWxlY3RlZENoaWxkcmVuKHNlbGVjdGVkQ2hpbGRyZW5Db3B5KTsKLSAgICAgICAgICAgIHJldHVy
biBjb252ZXJ0VG9OU0FycmF5KHNlbGVjdGVkQ2hpbGRyZW5Db3B5KTsKLSAgICAgICAgfQotICAg
ICAgICAKLSAgICAgICAgLy8gSFRNTCB0YWJsZXMgZG9uJ3Qgc3VwcG9ydCB0aGVzZQotICAgICAg
ICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVNlbGVj
dGVkQ29sdW1uc0F0dHJpYnV0ZV0gfHwgCi0gICAgICAgICAgICBbYXR0cmlidXRlTmFtZSBpc0Vx
dWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRDZWxsc0F0dHJpYnV0ZV0pCi0gICAg
ICAgICAgICByZXR1cm4gbmlsOwotICAgICAgICAKLSAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1l
IGlzRXF1YWxUb1N0cmluZzooTlNTdHJpbmcgKilrQVhDb2x1bW5IZWFkZXJVSUVsZW1lbnRzQXR0
cmlidXRlXSkgewotICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yIGNvbHVtbkhlYWRlcnM7Ci0gICAgICAgICAgICBzdGF0aWNfY2FzdDxB
Y2Nlc3NpYmlsaXR5VGFibGUqPihtX29iamVjdCktPmNvbHVtbkhlYWRlcnMoY29sdW1uSGVhZGVy
cyk7Ci0gICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShjb2x1bW5IZWFkZXJzKTsg
ICAgICAgICAgICAKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKFthdHRyaWJ1dGVO
YW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlIZWFkZXJBdHRyaWJ1dGVdKSB7Ci0g
ICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBoZWFkZXJDb250YWluZXIgPSBzdGF0aWNf
Y2FzdDxBY2Nlc3NpYmlsaXR5VGFibGUqPihtX29iamVjdCktPmhlYWRlckNvbnRhaW5lcigpOwot
ICAgICAgICAgICAgaWYgKGhlYWRlckNvbnRhaW5lcikKLSAgICAgICAgICAgICAgICByZXR1cm4g
aGVhZGVyQ29udGFpbmVyLT53cmFwcGVyKCk7Ci0gICAgICAgICAgICByZXR1cm4gbmlsOwotICAg
ICAgICB9Ci0KLSAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0Fj
Y2Vzc2liaWxpdHlSb3dIZWFkZXJVSUVsZW1lbnRzQXR0cmlidXRlXSkgewotICAgICAgICAgICAg
QWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHJvd0hlYWRl
cnM7Ci0gICAgICAgICAgICBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGUqPihtX29iamVj
dCktPnJvd0hlYWRlcnMocm93SGVhZGVycyk7Ci0gICAgICAgICAgICByZXR1cm4gY29udmVydFRv
TlNBcnJheShyb3dIZWFkZXJzKTsgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgfQot
ICAgICAgICAKLSAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0Fj
Y2Vzc2liaWxpdHlWaXNpYmxlQ2VsbHNBdHRyaWJ1dGVdKSB7Ci0gICAgICAgICAgICBBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgY2VsbHM7Ci0gICAgICAg
ICAgICBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGUqPihtX29iamVjdCktPmNlbGxzKGNl
bGxzKTsKLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KGNlbGxzKTsKLSAgICAg
ICAgfSAgICAgICAgCi0gICAgfQotICAgIAotICAgIGlmIChtX29iamVjdC0+aXNUYWJsZUNvbHVt
bigpKSB7Ci0gICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nl
c3NpYmlsaXR5SW5kZXhBdHRyaWJ1dGVdKQotICAgICAgICAgICAgcmV0dXJuIFtOU051bWJlciBu
dW1iZXJXaXRoSW50OnN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbio+KG1fb2Jq
ZWN0KS0+Y29sdW1uSW5kZXgoKV07Ci0gICAgICAgIAotICAgICAgICAvLyByb3dzIGF0dHJpYnV0
ZSBmb3IgYSBjb2x1bW4gaXMgdGhlIGxpc3Qgb2YgYWxsIHRoZSBlbGVtZW50cyBpbiB0aGF0IGNv
bHVtbiBhdCBlYWNoIHJvdwotICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3Ry
aW5nOk5TQWNjZXNzaWJpbGl0eVJvd3NBdHRyaWJ1dGVdIHx8IAotICAgICAgICAgICAgW2F0dHJp
YnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVZpc2libGVSb3dzQXR0cmli
dXRlXSkgewotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkoc3RhdGljX2Nhc3Q8
QWNjZXNzaWJpbGl0eVRhYmxlQ29sdW1uKj4obV9vYmplY3QpLT5jaGlsZHJlbigpKTsKLSAgICAg
ICAgfQotICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNz
aWJpbGl0eUhlYWRlckF0dHJpYnV0ZV0pIHsKLSAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIGhlYWRlciA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbio+KG1fb2Jq
ZWN0KS0+aGVhZGVyT2JqZWN0KCk7Ci0gICAgICAgICAgICBpZiAoIWhlYWRlcikKLSAgICAgICAg
ICAgICAgICByZXR1cm4gbmlsOwotICAgICAgICAgICAgcmV0dXJuIGhlYWRlci0+d3JhcHBlcigp
OwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIGlmIChtX29iamVjdC0+aXNUYWJsZUNlbGwo
KSkgewotICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNz
aWJpbGl0eVJvd0luZGV4UmFuZ2VBdHRyaWJ1dGVdKSB7Ci0gICAgICAgICAgICBwYWlyPGludCwg
aW50PiByb3dSYW5nZTsKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlUYWJs
ZUNlbGwqPihtX29iamVjdCktPnJvd0luZGV4UmFuZ2Uocm93UmFuZ2UpOwotICAgICAgICAgICAg
cmV0dXJuIFtOU1ZhbHVlIHZhbHVlV2l0aFJhbmdlOk5TTWFrZVJhbmdlKHJvd1JhbmdlLmZpcnN0
LCByb3dSYW5nZS5zZWNvbmQpXTsKLSAgICAgICAgfSAgCi0gICAgICAgIGlmIChbYXR0cmlidXRl
TmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Q29sdW1uSW5kZXhSYW5nZUF0dHJp
YnV0ZV0pIHsKLSAgICAgICAgICAgIHBhaXI8aW50LCBpbnQ+IGNvbHVtblJhbmdlOwotICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCo+KG1fb2JqZWN0KS0+Y29s
dW1uSW5kZXhSYW5nZShjb2x1bW5SYW5nZSk7Ci0gICAgICAgICAgICByZXR1cm4gW05TVmFsdWUg
dmFsdWVXaXRoUmFuZ2U6TlNNYWtlUmFuZ2UoY29sdW1uUmFuZ2UuZmlyc3QsIGNvbHVtblJhbmdl
LnNlY29uZCldOwotICAgICAgICB9ICAKLSAgICB9Ci0gICAgCi0gICAgaWYgKG1fb2JqZWN0LT5p
c1RyZWUoKSkgewotICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5T
QWNjZXNzaWJpbGl0eVNlbGVjdGVkUm93c0F0dHJpYnV0ZV0pIHsKLSAgICAgICAgICAgIEFjY2Vz
c2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBzZWxlY3RlZENoaWxk
cmVuQ29weTsKLSAgICAgICAgICAgIG1fb2JqZWN0LT5zZWxlY3RlZENoaWxkcmVuKHNlbGVjdGVk
Q2hpbGRyZW5Db3B5KTsKLSAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KHNlbGVj
dGVkQ2hpbGRyZW5Db3B5KTsKLSAgICAgICAgfQotICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUg
aXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVJvd3NBdHRyaWJ1dGVdKSB7Ci0gICAgICAg
ICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Igcm93
c0NvcHk7Ci0gICAgICAgICAgICBtX29iamVjdC0+YXJpYVRyZWVSb3dzKHJvd3NDb3B5KTsKLSAg
ICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KHJvd3NDb3B5KTsgICAgICAgICAgICAK
LSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgLy8gVHJlZVJvbGVzIGRvIG5vdCBzdXBwb3J0
IGNvbHVtbnMsIGJ1dCBNYWMgQVggZXhwZWN0cyB0byBiZSBhYmxlIHRvIGFzayBhYm91dCBjb2x1
bW5zIGF0IHRoZSBsZWFzdC4KLSAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0
cmluZzpOU0FjY2Vzc2liaWxpdHlDb2x1bW5zQXR0cmlidXRlXSkKLSAgICAgICAgICAgIHJldHVy
biBbTlNBcnJheSBhcnJheV07Ci0gICAgfQotCi0gICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1
YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlJbmRleEF0dHJpYnV0ZV0pIHsKLSAgICAgICAgaWYg
KG1fb2JqZWN0LT5pc1RyZWVJdGVtKCkpIHsKLSAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIHBhcmVudCA9IG1fb2JqZWN0LT5wYXJlbnRPYmplY3QoKTsKLSAgICAgICAgICAgIGZvciAo
OyBwYXJlbnQgJiYgIXBhcmVudC0+aXNUcmVlKCk7IHBhcmVudCA9IHBhcmVudC0+cGFyZW50T2Jq
ZWN0KCkpCi0gICAgICAgICAgICB7IH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKCFw
YXJlbnQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAgICAgICAgIAotICAgICAg
ICAgICAgLy8gRmluZCB0aGUgaW5kZXggb2YgdGhpcyBpdGVtIGJ5IGl0ZXJhdGluZyB0aGUgcGFy
ZW50cy4KLSAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciByb3dzQ29weTsKLSAgICAgICAgICAgIHBhcmVudC0+YXJpYVRyZWVSb3dzKHJv
d3NDb3B5KTsKLSAgICAgICAgICAgIHNpemVfdCBjb3VudCA9IHJvd3NDb3B5LnNpemUoKTsKLSAg
ICAgICAgICAgIGZvciAoc2l6ZV90IGsgPSAwOyBrIDwgY291bnQ7ICsraykKLSAgICAgICAgICAg
ICAgICBpZiAocm93c0NvcHlba10tPndyYXBwZXIoKSA9PSBzZWxmKQotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZEludDprXTsKLSAgICAgICAg
ICAgIAotICAgICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAgICAgfQotICAgICAgICBpZiAobV9v
YmplY3QtPmlzVGFibGVSb3coKSkgewotICAgICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlz
RXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlJbmRleEF0dHJpYnV0ZV0pCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoSW50OnN0YXRpY19jYXN0PEFjY2Vzc2li
aWxpdHlUYWJsZVJvdyo+KG1fb2JqZWN0KS0+cm93SW5kZXgoKV07Ci0gICAgICAgIH0KLSAgICB9
ICAgIAotICAgIAotICAgIC8vIFRoZSByb3dzIHRoYXQgYXJlIGNvbnNpZGVyZWQgaW5zaWRlIHRo
aXMgcm93LiAKLSAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNz
aWJpbGl0eURpc2Nsb3NlZFJvd3NBdHRyaWJ1dGVdKSB7Ci0gICAgICAgIGlmIChtX29iamVjdC0+
aXNUcmVlSXRlbSgpKSB7Ci0gICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3Igcm93c0NvcHk7Ci0gICAgICAgICAgICBtX29iamVjdC0+YXJp
YVRyZWVJdGVtRGlzY2xvc2VkUm93cyhyb3dzQ29weSk7Ci0gICAgICAgICAgICByZXR1cm4gY29u
dmVydFRvTlNBcnJheShyb3dzQ29weSk7ICAgIAotICAgICAgICB9IGVsc2UgaWYgKG1fb2JqZWN0
LT5pc0FSSUFUcmVlR3JpZFJvdygpKSB7Ci0gICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Igcm93c0NvcHk7Ci0gICAgICAgICAgICBzdGF0
aWNfY2FzdDxBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cqPihtX29iamVjdCktPmRpc2Nsb3NlZFJv
d3Mocm93c0NvcHkpOwotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkocm93c0Nv
cHkpOyAgICAKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICAvLyBUaGUgcm93IHRoYXQgY29u
dGFpbnMgdGhpcyByb3cuIEl0IHNob3VsZCBiZSB0aGUgc2FtZSBhcyB0aGUgZmlyc3QgcGFyZW50
IHRoYXQgaXMgYSB0cmVlaXRlbS4KLSAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3Ry
aW5nOk5TQWNjZXNzaWJpbGl0eURpc2Nsb3NlZEJ5Um93QXR0cmlidXRlXSkgewotICAgICAgICBp
ZiAobV9vYmplY3QtPmlzVHJlZUl0ZW0oKSkgewotICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9i
amVjdCogcGFyZW50ID0gbV9vYmplY3QtPnBhcmVudE9iamVjdCgpOwotICAgICAgICAgICAgd2hp
bGUgKHBhcmVudCkgewotICAgICAgICAgICAgICAgIGlmIChwYXJlbnQtPmlzVHJlZUl0ZW0oKSkK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcmVudC0+d3JhcHBlcigpOwotICAgICAgICAg
ICAgICAgIC8vIElmIHRoZSBwYXJlbnQgaXMgdGhlIHRyZWUgaXRzZWxmLCB0aGVuIHRoaXMgdmFs
dWUgPT0gbmlsLgotICAgICAgICAgICAgICAgIGlmIChwYXJlbnQtPmlzVHJlZSgpKQotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gbmlsOwotICAgICAgICAgICAgICAgIHBhcmVudCA9IHBhcmVu
dC0+cGFyZW50T2JqZWN0KCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gbmls
OwotICAgICAgICB9IGVsc2UgaWYgKG1fb2JqZWN0LT5pc0FSSUFUcmVlR3JpZFJvdygpKSB7Ci0g
ICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiByb3cgPSBzdGF0aWNfY2FzdDxBY2Nlc3Np
YmlsaXR5QVJJQUdyaWRSb3cqPihtX29iamVjdCktPmRpc2Nsb3NlZEJ5Um93KCk7Ci0gICAgICAg
ICAgICBpZiAoIXJvdykKLSAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwotICAgICAgICAgICAg
cmV0dXJuIHJvdy0+d3JhcHBlcigpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKFthdHRy
aWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlEaXNjbG9zdXJlTGV2ZWxB
dHRyaWJ1dGVdKQotICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6bV9vYmpl
Y3QtPmhpZXJhcmNoaWNhbExldmVsKCldOwotICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFs
VG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5RGlzY2xvc2luZ0F0dHJpYnV0ZV0pCi0gICAgICAgIHJl
dHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6bV9vYmplY3QtPmlzRXhwYW5kZWQoKV07Ci0g
ICAgCi0gICAgaWYgKChtX29iamVjdC0+aXNMaXN0Qm94KCkgfHwgbV9vYmplY3QtPmlzTGlzdCgp
KSAmJiBbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5T3JpZW50
YXRpb25BdHRyaWJ1dGVdKQotICAgICAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5VmVydGljYWxP
cmllbnRhdGlvblZhbHVlOwotCi0gICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmlu
ZzogQCJBWFNlbGVjdGVkVGV4dE1hcmtlclJhbmdlIl0pCi0gICAgICAgIHJldHVybiBbc2VsZiB0
ZXh0TWFya2VyUmFuZ2VGb3JTZWxlY3Rpb25dOwotICAgIAotICAgIGlmIChtX29iamVjdC0+aXNB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KCkpIHsKLSAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5k
ZXJlciA9IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QqPihtX29iamVjdCkt
PnJlbmRlcmVyKCk7Ci0gICAgICAgIGlmICghcmVuZGVyZXIpCi0gICAgICAgICAgICByZXR1cm4g
bmlsOwotICAgICAgICAKLSAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmlu
ZzogQCJBWFN0YXJ0VGV4dE1hcmtlciJdKQotICAgICAgICAgICAgcmV0dXJuIFtzZWxmIHRleHRN
YXJrZXJGb3JWaXNpYmxlUG9zaXRpb246c3RhcnRPZkRvY3VtZW50KHJlbmRlcmVyLT5kb2N1bWVu
dCgpKV07Ci0gICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IEAiQVhF
bmRUZXh0TWFya2VyIl0pCi0gICAgICAgICAgICByZXR1cm4gW3NlbGYgdGV4dE1hcmtlckZvclZp
c2libGVQb3NpdGlvbjplbmRPZkRvY3VtZW50KHJlbmRlcmVyLT5kb2N1bWVudCgpKV07Ci0KLSAg
ICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlC
bG9ja1F1b3RlTGV2ZWxBdHRyaWJ1dGVdKQotICAgICAgICAgICAgcmV0dXJuIFtOU051bWJlciBu
dW1iZXJXaXRoSW50Om1fb2JqZWN0LT5ibG9ja3F1b3RlTGV2ZWwoKV07Ci0gICAgICAgIGlmIChb
YXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJBWFRhYmxlTGV2ZWwiXSkKLSAgICAgICAg
ICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDptX29iamVjdC0+dGFibGVMZXZlbCgp
XTsKLSAgICB9IGVsc2UgewotICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBt
X29iamVjdC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7Ci0gICAgICAgIGlmICghcGFyZW50KQot
ICAgICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoSW50OjBdOwotICAgICAgICAK
LSAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxp
dHlCbG9ja1F1b3RlTGV2ZWxBdHRyaWJ1dGVdKQotICAgICAgICAgICAgcmV0dXJuIFtwYXJlbnQt
PndyYXBwZXIoKSBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Qmxv
Y2tRdW90ZUxldmVsQXR0cmlidXRlXTsKLSAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1
YWxUb1N0cmluZzpAIkFYVGFibGVMZXZlbCJdKQotICAgICAgICAgICAgcmV0dXJuIFtwYXJlbnQt
PndyYXBwZXIoKSBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFRhYmxlTGV2ZWwiXTsK
LSAgICB9Ci0gICAgCi0gICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNB
Y2Nlc3NpYmlsaXR5TGlua2VkVUlFbGVtZW50c0F0dHJpYnV0ZV0pIHsKLSAgICAgICAgQWNjZXNz
aWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGxpbmtlZFVJRWxlbWVu
dHM7Ci0gICAgICAgIG1fb2JqZWN0LT5saW5rZWRVSUVsZW1lbnRzKGxpbmtlZFVJRWxlbWVudHMp
OwotICAgICAgICBpZiAobGlua2VkVUlFbGVtZW50cy5zaXplKCkgPT0gMCkKLSAgICAgICAgICAg
IHJldHVybiBuaWw7Ci0gICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KGxpbmtlZFVJRWxl
bWVudHMpOwotICAgIH0KLQotICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6
IE5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkQXR0cmlidXRlXSkKLSAgICAgICAgcmV0dXJuIFtOU051
bWJlciBudW1iZXJXaXRoQm9vbDptX29iamVjdC0+aXNTZWxlY3RlZCgpXTsKLQotICAgIGlmIChb
YXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eVNlcnZlc0FzVGl0
bGVGb3JVSUVsZW1lbnRzQXR0cmlidXRlXSAmJiBtX29iamVjdC0+aXNNZW51QnV0dG9uKCkpIHsK
LSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogdWlFbGVtZW50ID0gc3RhdGljX2Nhc3Q8QWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdCo+KG1fb2JqZWN0KS0+bWVudUZvck1lbnVCdXR0b24oKTsK
LSAgICAgICAgaWYgKHVpRWxlbWVudCkKLSAgICAgICAgICAgIHJldHVybiBbTlNBcnJheSBhcnJh
eVdpdGhPYmplY3Q6dWlFbGVtZW50LT53cmFwcGVyKCldOwotICAgIH0KLQotICAgIGlmIChbYXR0
cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5VGl0bGVVSUVsZW1lbnRB
dHRyaWJ1dGVdKSB7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiA9IG1fb2JqZWN0
LT50aXRsZVVJRWxlbWVudCgpOwotICAgICAgICBpZiAob2JqKQotICAgICAgICAgICAgcmV0dXJu
IG9iai0+d3JhcHBlcigpOwotICAgICAgICByZXR1cm4gbmlsOwotICAgIH0KLSAgICAKLSAgICBp
ZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVZhbHVlRGVz
Y3JpcHRpb25BdHRyaWJ1dGVdKQotICAgICAgICByZXR1cm4gbV9vYmplY3QtPnZhbHVlRGVzY3Jp
cHRpb24oKTsKLSAgICAKLSAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5T
QWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uQXR0cmlidXRlXSkgewotICAgICAgICBBY2Nlc3NpYmls
aXR5T3JpZW50YXRpb24gZWxlbWVudE9yaWVudGF0aW9uID0gbV9vYmplY3QtPm9yaWVudGF0aW9u
KCk7Ci0gICAgICAgIGlmIChlbGVtZW50T3JpZW50YXRpb24gPT0gQWNjZXNzaWJpbGl0eU9yaWVu
dGF0aW9uVmVydGljYWwpCi0gICAgICAgICAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5VmVydGlj
YWxPcmllbnRhdGlvblZhbHVlOwotICAgICAgICBpZiAoZWxlbWVudE9yaWVudGF0aW9uID09IEFj
Y2Vzc2liaWxpdHlPcmllbnRhdGlvbkhvcml6b250YWwpCi0gICAgICAgICAgICByZXR1cm4gTlNB
Y2Nlc3NpYmlsaXR5SG9yaXpvbnRhbE9yaWVudGF0aW9uVmFsdWU7Ci0gICAgICAgIHJldHVybiBu
aWw7Ci0gICAgfQotICAgIAotICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6
TlNBY2Nlc3NpYmlsaXR5SG9yaXpvbnRhbFNjcm9sbEJhckF0dHJpYnV0ZV0pIHsKLSAgICAgICAg
QWNjZXNzaWJpbGl0eU9iamVjdCogc2Nyb2xsQmFyID0gbV9vYmplY3QtPnNjcm9sbEJhcihBY2Nl
c3NpYmlsaXR5T3JpZW50YXRpb25Ib3Jpem9udGFsKTsKLSAgICAgICAgaWYgKHNjcm9sbEJhcikK
LSAgICAgICAgICAgIHJldHVybiBzY3JvbGxCYXItPndyYXBwZXIoKTsKLSAgICAgICAgcmV0dXJu
IG5pbDsKLSAgICB9Ci0gICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0Fj
Y2Vzc2liaWxpdHlWZXJ0aWNhbFNjcm9sbEJhckF0dHJpYnV0ZV0pIHsKLSAgICAgICAgQWNjZXNz
aWJpbGl0eU9iamVjdCogc2Nyb2xsQmFyID0gbV9vYmplY3QtPnNjcm9sbEJhcihBY2Nlc3NpYmls
aXR5T3JpZW50YXRpb25WZXJ0aWNhbCk7Ci0gICAgICAgIGlmIChzY3JvbGxCYXIpCi0gICAgICAg
ICAgICByZXR1cm4gc2Nyb2xsQmFyLT53cmFwcGVyKCk7Ci0gICAgICAgIHJldHVybiBuaWw7Ci0g
ICAgfQotICAgIAotICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nl
c3NpYmlsaXR5U29ydERpcmVjdGlvbkF0dHJpYnV0ZV0pIHsKLSAgICAgICAgc3dpdGNoIChtX29i
amVjdC0+c29ydERpcmVjdGlvbigpKSB7Ci0gICAgICAgIGNhc2UgU29ydERpcmVjdGlvbkFzY2Vu
ZGluZzoKLSAgICAgICAgICAgIHJldHVybiBOU0FjY2Vzc2liaWxpdHlBc2NlbmRpbmdTb3J0RGly
ZWN0aW9uVmFsdWU7Ci0gICAgICAgIGNhc2UgU29ydERpcmVjdGlvbkRlc2NlbmRpbmc6Ci0gICAg
ICAgICAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5RGVzY2VuZGluZ1NvcnREaXJlY3Rpb25WYWx1
ZTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBOU0FjY2Vzc2liaWxpdHlV
bmtub3duU29ydERpcmVjdGlvblZhbHVlOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIGlm
IChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5TGFuZ3VhZ2VB
dHRyaWJ1dGVdKSAKLSAgICAgICAgcmV0dXJuIG1fb2JqZWN0LT5sYW5ndWFnZSgpOwotICAgIAot
ICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5RXhw
YW5kZWRBdHRyaWJ1dGVdKQotICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhCb29s
Om1fb2JqZWN0LT5pc0V4cGFuZGVkKCldOwotICAgIAotICAgIGlmIChbYXR0cmlidXRlTmFtZSBp
c0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5UmVxdWlyZWRBdHRyaWJ1dGVdKQotICAgICAg
ICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhCb29sOm1fb2JqZWN0LT5pc1JlcXVpcmVkKCld
OwotCi0gICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxp
dHlJbnZhbGlkQXR0cmlidXRlXSkKLSAgICAgICAgcmV0dXJuIG1fb2JqZWN0LT5pbnZhbGlkU3Rh
dHVzKCk7Ci0gICAgCi0gICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0Fj
Y2Vzc2liaWxpdHlPd25zQXR0cmlidXRlXSkgewotICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgYXJpYU93bnM7Ci0gICAgICAgIG1fb2JqZWN0
LT5hcmlhT3duc0VsZW1lbnRzKGFyaWFPd25zKTsKLSAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05T
QXJyYXkoYXJpYU93bnMpOwotICAgIH0KLSAgICAKLSAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNF
cXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUdyYWJiZWRBdHRyaWJ1dGVdKQotICAgICAgICBy
ZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhCb29sOm1fb2JqZWN0LT5pc0FSSUFHcmFiYmVkKCld
OwotICAgIAotICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3Np
YmlsaXR5RHJvcEVmZmVjdHNBdHRyaWJ1dGVdKSB7Ci0gICAgICAgIFZlY3RvcjxTdHJpbmc+IGRy
b3BFZmZlY3RzOwotICAgICAgICBtX29iamVjdC0+ZGV0ZXJtaW5lQVJJQURyb3BFZmZlY3RzKGRy
b3BFZmZlY3RzKTsKLSAgICAgICAgc2l6ZV90IGxlbmd0aCA9IGRyb3BFZmZlY3RzLnNpemUoKTsK
LQotICAgICAgICBOU011dGFibGVBcnJheSogZHJvcEVmZmVjdHNBcnJheSA9IFtOU011dGFibGVB
cnJheSBhcnJheVdpdGhDYXBhY2l0eTpsZW5ndGhdOwotICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGxlbmd0aDsgKytpKQotICAgICAgICAgICAgW2Ryb3BFZmZlY3RzQXJyYXkgYWRkT2Jq
ZWN0OmRyb3BFZmZlY3RzW2ldXTsKLSAgICAgICAgcmV0dXJuIGRyb3BFZmZlY3RzQXJyYXk7Ci0g
ICAgfQotICAgIAotICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nl
c3NpYmlsaXR5UGxhY2Vob2xkZXJWYWx1ZUF0dHJpYnV0ZV0pCi0gICAgICAgIHJldHVybiBtX29i
amVjdC0+cGxhY2Vob2xkZXJWYWx1ZSgpOwotICAgIAotICAgIGlmIChbYXR0cmlidXRlTmFtZSBp
c0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5SGFzUG9wdXBBdHRyaWJ1dGVdKQotICAgICAg
ICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhCb29sOm1fb2JqZWN0LT5hcmlhSGFzUG9wdXAo
KV07Ci0gICAgCi0gICAgLy8gQVJJQSBMaXZlIHJlZ2lvbiBhdHRyaWJ1dGVzLgotICAgIGlmIChb
YXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5QVJJQUxpdmVBdHRy
aWJ1dGVdKQotICAgICAgICByZXR1cm4gbV9vYmplY3QtPmFyaWFMaXZlUmVnaW9uU3RhdHVzKCk7
Ci0gICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlB
UklBUmVsZXZhbnRBdHRyaWJ1dGVdKQotICAgICAgICAgcmV0dXJuIG1fb2JqZWN0LT5hcmlhTGl2
ZVJlZ2lvblJlbGV2YW50KCk7Ci0gICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmlu
ZzpOU0FjY2Vzc2liaWxpdHlBUklBQXRvbWljQXR0cmlidXRlXSkKLSAgICAgICAgcmV0dXJuIFtO
U051bWJlciBudW1iZXJXaXRoQm9vbDptX29iamVjdC0+YXJpYUxpdmVSZWdpb25BdG9taWMoKV07
Ci0gICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlB
UklBQnVzeUF0dHJpYnV0ZV0pCi0gICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEJv
b2w6bV9vYmplY3QtPmFyaWFMaXZlUmVnaW9uQnVzeSgpXTsKLSAgICAKLSAgICAvLyB0aGlzIGlz
IHVzZWQgb25seSBieSBEdW1wUmVuZGVyVHJlZSBmb3IgdGVzdGluZwotICAgIGlmIChbYXR0cmli
dXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJBWENsaWNrUG9pbnQiXSkKLSAgICAgICAgcmV0dXJu
IFtOU1ZhbHVlIHZhbHVlV2l0aFBvaW50Om1fb2JqZWN0LT5jbGlja1BvaW50KCldOwotICAgIAot
ICAgIC8vIFRoaXMgaXMgdXNlZCBieSBEUlQgdG8gdmVyaWZ5IENTUzMgc3BlZWNoIHdvcmtzLgot
ICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJBWERSVFNwZWVjaEF0dHJp
YnV0ZSJdKSB7Ci0gICAgICAgIEVTcGVhayBzcGVha1Byb3BlcnR5ID0gbV9vYmplY3QtPnNwZWFr
UHJvcGVydHkoKTsKLSAgICAgICAgc3dpdGNoIChzcGVha1Byb3BlcnR5KSB7Ci0gICAgICAgIGNh
c2UgU3BlYWtOb25lOgotICAgICAgICAgICAgcmV0dXJuIEAibm9uZSI7Ci0gICAgICAgIGNhc2Ug
U3BlYWtTcGVsbE91dDoKLSAgICAgICAgICAgIHJldHVybiBAInNwZWxsLW91dCI7Ci0gICAgICAg
IGNhc2UgU3BlYWtEaWdpdHM6Ci0gICAgICAgICAgICByZXR1cm4gQCJkaWdpdHMiOwotICAgICAg
ICBjYXNlIFNwZWFrTGl0ZXJhbFB1bmN0dWF0aW9uOgotICAgICAgICAgICAgcmV0dXJuIEAibGl0
ZXJhbC1wdW5jdHVhdGlvbiI7Ci0gICAgICAgIGNhc2UgU3BlYWtOb1B1bmN0dWF0aW9uOgotICAg
ICAgICAgICAgcmV0dXJuIEAibm8tcHVuY3R1YXRpb24iOwotICAgICAgICBkZWZhdWx0OgotICAg
ICAgICBjYXNlIFNwZWFrTm9ybWFsOgotICAgICAgICAgICAgcmV0dXJuIEAibm9ybWFsIjsKLSAg
ICAgICAgfQotICAgIH0KLSAgICAKLSAgICByZXR1cm4gbmlsOwotfQotCi0tIChpZClhY2Nlc3Np
YmlsaXR5Rm9jdXNlZFVJRWxlbWVudAotewotICAgIGlmICghW3NlbGYgdXBkYXRlT2JqZWN0QmFj
a2luZ1N0b3JlXSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIFJlZlB0cjxBY2Nlc3NpYmls
aXR5T2JqZWN0PiBmb2N1c2VkT2JqID0gbV9vYmplY3QtPmZvY3VzZWRVSUVsZW1lbnQoKTsKLQot
ICAgIGlmICghZm9jdXNlZE9iaikKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICByZXR1
cm4gZm9jdXNlZE9iai0+d3JhcHBlcigpOwotfQotCi0tIChpZClhY2Nlc3NpYmlsaXR5SGl0VGVz
dDooTlNQb2ludClwb2ludAotewotICAgIGlmICghW3NlbGYgdXBkYXRlT2JqZWN0QmFja2luZ1N0
b3JlXSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIG1fb2JqZWN0LT51cGRhdGVDaGlsZHJl
bklmTmVjZXNzYXJ5KCk7Ci0gICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IGF4T2JqZWN0
ID0gbV9vYmplY3QtPmFjY2Vzc2liaWxpdHlIaXRUZXN0KEludFBvaW50KHBvaW50KSk7Ci0gICAg
aWYgKGF4T2JqZWN0KQotICAgICAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5VW5pZ25vcmVkQW5j
ZXN0b3IoYXhPYmplY3QtPndyYXBwZXIoKSk7Ci0gICAgcmV0dXJuIE5TQWNjZXNzaWJpbGl0eVVu
aWdub3JlZEFuY2VzdG9yKHNlbGYpOwotfQotCi0tIChCT09MKWFjY2Vzc2liaWxpdHlJc0F0dHJp
YnV0ZVNldHRhYmxlOihOU1N0cmluZyopYXR0cmlidXRlTmFtZQotewotICAgIGlmICghW3NlbGYg
dXBkYXRlT2JqZWN0QmFja2luZ1N0b3JlXSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIGlm
IChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IEAiQVhTZWxlY3RlZFRleHRNYXJrZXJS
YW5nZSJdKQotICAgICAgICByZXR1cm4gWUVTOwotCi0gICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlz
RXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5Rm9jdXNlZEF0dHJpYnV0ZV0pCi0gICAgICAg
IHJldHVybiBtX29iamVjdC0+Y2FuU2V0Rm9jdXNBdHRyaWJ1dGUoKTsKLQotICAgIGlmIChbYXR0
cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eVZhbHVlQXR0cmlidXRl
XSkKLSAgICAgICAgcmV0dXJuIG1fb2JqZWN0LT5jYW5TZXRWYWx1ZUF0dHJpYnV0ZSgpOwotCi0g
ICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5U2Vs
ZWN0ZWRBdHRyaWJ1dGVdKQotICAgICAgICByZXR1cm4gbV9vYmplY3QtPmNhblNldFNlbGVjdGVk
QXR0cmlidXRlKCk7Ci0gICAgCi0gICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmlu
ZzogTlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRDaGlsZHJlbkF0dHJpYnV0ZV0pCi0gICAgICAgIHJl
dHVybiBtX29iamVjdC0+Y2FuU2V0U2VsZWN0ZWRDaGlsZHJlbkF0dHJpYnV0ZSgpOwotCi0gICAg
aWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlEaXNjbG9z
aW5nQXR0cmlidXRlXSkKLSAgICAgICAgcmV0dXJuIG1fb2JqZWN0LT5jYW5TZXRFeHBhbmRlZEF0
dHJpYnV0ZSgpOwotCi0gICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0Fj
Y2Vzc2liaWxpdHlTZWxlY3RlZFJvd3NBdHRyaWJ1dGVdKQotICAgICAgICByZXR1cm4gWUVTOwot
Ci0gICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5
U2VsZWN0ZWRUZXh0QXR0cmlidXRlXSB8fAotICAgICAgICBbYXR0cmlidXRlTmFtZSBpc0VxdWFs
VG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkVGV4dFJhbmdlQXR0cmlidXRlXSB8fAot
ICAgICAgICBbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eVZp
c2libGVDaGFyYWN0ZXJSYW5nZUF0dHJpYnV0ZV0pCi0gICAgICAgIHJldHVybiBtX29iamVjdC0+
Y2FuU2V0VGV4dFJhbmdlQXR0cmlidXRlcygpOwotICAgIAotICAgIGlmIChbYXR0cmlidXRlTmFt
ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5R3JhYmJlZEF0dHJpYnV0ZV0pCi0gICAg
ICAgIHJldHVybiBZRVM7Ci0gICAgCi0gICAgcmV0dXJuIE5POwotfQotCi0vLyBhY2Nlc3NpYmls
aXR5U2hvdWxkVXNlVW5pcXVlSWQgaXMgYW4gQXBwS2l0IG1ldGhvZCB3ZSBvdmVycmlkZSBzbyB0
aGF0Ci0vLyBvYmplY3RzIHdpbGwgYmUgZ2l2ZW4gYSB1bmlxdWUgSUQsIGFuZCB0aGVyZWZvcmUg
YWxsb3cgQXBwS2l0IHRvIGtub3cgd2hlbiB0aGV5Ci0vLyBiZWNvbWUgb2Jzb2xldGUgKGUuZy4g
d2hlbiB0aGUgdXNlciBuYXZpZ2F0ZXMgdG8gYSBuZXcgd2ViIHBhZ2UsIG1ha2luZyB0aGlzIG9u
ZQotLy8gdW5yZW5kZXJlZCBidXQgbm90IGRlYWxsb2NhdGVkIGJlY2F1c2UgaXQgaXMgaW4gdGhl
IGJhY2svZm9yd2FyZCBjYWNoZSkuCi0vLyBJdCBpcyBpbXBvcnRhbnQgdG8gY2FsbCBOU0FjY2Vz
c2liaWxpdHlVbnJlZ2lzdGVyVW5pcXVlSWRGb3JVSUVsZW1lbnQgaW4gdGhlCi0vLyBhcHByb3By
aWF0ZSBwbGFjZSAoZS5nLiBkZWFsbG9jKSB0byByZW1vdmUgdGhlc2Ugbm9uLXJldGFpbmVkIHJl
ZmVyZW5jZXMgZnJvbQotLy8gQXBwS2l0J3MgaWQgbWFwcGluZyB0YWJsZXMuIFdlIGRvIHRoaXMg
aW4gZGV0YWNoIGJ5IGNhbGxpbmcgdW5yZWdpc3RlclVuaXF1ZUlkRm9yVUlFbGVtZW50LgotLy8K
LS8vIFJlZ2lzdGVyaW5nIGFuIG9iamVjdCBpcyBhbHNvIHJlcXVpcmVkIGZvciBvYnNlcnZpbmcg
bm90aWZpY2F0aW9ucy4gT25seSByZWdpc3RlcmVkIG9iamVjdHMgY2FuIGJlIG9ic2VydmVkLgot
LSAoQk9PTClhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkCi17Ci0gICAgaWYgKCFbc2VsZiB1cGRhdGVP
YmplY3RCYWNraW5nU3RvcmVdKQotICAgICAgICByZXR1cm4gWUVTOwotCi0gICAgaWYgKG1fb2Jq
ZWN0LT5pc0F0dGFjaG1lbnQoKSkKLSAgICAgICAgcmV0dXJuIFtbc2VsZiBhdHRhY2htZW50Vmll
d10gYWNjZXNzaWJpbGl0eUlzSWdub3JlZF07Ci0gICAgcmV0dXJuIG1fb2JqZWN0LT5hY2Nlc3Np
YmlsaXR5SXNJZ25vcmVkKCk7Ci19Ci0KLS0gKE5TQXJyYXkqIClhY2Nlc3NpYmlsaXR5UGFyYW1l
dGVyaXplZEF0dHJpYnV0ZU5hbWVzCi17Ci0gICAgaWYgKCFbc2VsZiB1cGRhdGVPYmplY3RCYWNr
aW5nU3RvcmVdKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgaWYgKG1fb2JqZWN0LT5pc0F0
dGFjaG1lbnQoKSkgCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBzdGF0aWMgTlNBcnJheSog
cGFyYW1BdHRycyA9IG5pbDsKLSAgICBzdGF0aWMgTlNBcnJheSogdGV4dFBhcmFtQXR0cnMgPSBu
aWw7Ci0gICAgc3RhdGljIE5TQXJyYXkqIHRhYmxlUGFyYW1BdHRycyA9IG5pbDsKLSAgICBpZiAo
cGFyYW1BdHRycyA9PSBuaWwpIHsKLSAgICAgICAgcGFyYW1BdHRycyA9IFtbTlNBcnJheSBhbGxv
Y10gaW5pdFdpdGhPYmplY3RzOgotICAgICAgICAgICAgICAgICAgICAgIEAiQVhVSUVsZW1lbnRG
b3JUZXh0TWFya2VyIiwKLSAgICAgICAgICAgICAgICAgICAgICBAIkFYVGV4dE1hcmtlclJhbmdl
Rm9yVUlFbGVtZW50IiwKLSAgICAgICAgICAgICAgICAgICAgICBAIkFYTGluZUZvclRleHRNYXJr
ZXIiLAotICAgICAgICAgICAgICAgICAgICAgIEAiQVhUZXh0TWFya2VyUmFuZ2VGb3JMaW5lIiwK
LSAgICAgICAgICAgICAgICAgICAgICBAIkFYU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlIiwKLSAg
ICAgICAgICAgICAgICAgICAgICBAIkFYVGV4dE1hcmtlckZvclBvc2l0aW9uIiwKLSAgICAgICAg
ICAgICAgICAgICAgICBAIkFYQm91bmRzRm9yVGV4dE1hcmtlclJhbmdlIiwKLSAgICAgICAgICAg
ICAgICAgICAgICBAIkFYQXR0cmlidXRlZFN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSIsCi0gICAg
ICAgICAgICAgICAgICAgICAgQCJBWFRleHRNYXJrZXJSYW5nZUZvclVub3JkZXJlZFRleHRNYXJr
ZXJzIiwKLSAgICAgICAgICAgICAgICAgICAgICBAIkFYTmV4dFRleHRNYXJrZXJGb3JUZXh0TWFy
a2VyIiwKLSAgICAgICAgICAgICAgICAgICAgICBAIkFYUHJldmlvdXNUZXh0TWFya2VyRm9yVGV4
dE1hcmtlciIsCi0gICAgICAgICAgICAgICAgICAgICAgQCJBWExlZnRXb3JkVGV4dE1hcmtlclJh
bmdlRm9yVGV4dE1hcmtlciIsCi0gICAgICAgICAgICAgICAgICAgICAgQCJBWFJpZ2h0V29yZFRl
eHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIiLAotICAgICAgICAgICAgICAgICAgICAgIEAiQVhM
ZWZ0TGluZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIiLAotICAgICAgICAgICAgICAgICAg
ICAgIEAiQVhSaWdodExpbmVUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyIiwKLSAgICAgICAg
ICAgICAgICAgICAgICBAIkFYU2VudGVuY2VUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyIiwK
LSAgICAgICAgICAgICAgICAgICAgICBAIkFYUGFyYWdyYXBoVGV4dE1hcmtlclJhbmdlRm9yVGV4
dE1hcmtlciIsCi0gICAgICAgICAgICAgICAgICAgICAgQCJBWE5leHRXb3JkRW5kVGV4dE1hcmtl
ckZvclRleHRNYXJrZXIiLAotICAgICAgICAgICAgICAgICAgICAgIEAiQVhQcmV2aW91c1dvcmRT
dGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIiwKLSAgICAgICAgICAgICAgICAgICAgICBAIkFY
TmV4dExpbmVFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIsCi0gICAgICAgICAgICAgICAgICAg
ICAgQCJBWFByZXZpb3VzTGluZVN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIiLAotICAgICAg
ICAgICAgICAgICAgICAgIEAiQVhOZXh0U2VudGVuY2VFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtl
ciIsCi0gICAgICAgICAgICAgICAgICAgICAgQCJBWFByZXZpb3VzU2VudGVuY2VTdGFydFRleHRN
YXJrZXJGb3JUZXh0TWFya2VyIiwKLSAgICAgICAgICAgICAgICAgICAgICBAIkFYTmV4dFBhcmFn
cmFwaEVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIiwKLSAgICAgICAgICAgICAgICAgICAgICBA
IkFYUHJldmlvdXNQYXJhZ3JhcGhTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIiwKLSAgICAg
ICAgICAgICAgICAgICAgICBAIkFYU3R5bGVUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyIiwK
LSAgICAgICAgICAgICAgICAgICAgICBAIkFYTGVuZ3RoRm9yVGV4dE1hcmtlclJhbmdlIiwKLSAg
ICAgICAgICAgICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlCb3VuZHNGb3JSYW5nZVBhcmFtZXRl
cml6ZWRBdHRyaWJ1dGUsCi0gICAgICAgICAgICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5U3Ry
aW5nRm9yUmFuZ2VQYXJhbWV0ZXJpemVkQXR0cmlidXRlLAotICAgICAgICAgICAgICAgICAgICAg
IE5TQWNjZXNzaWJpbGl0eVVJRWxlbWVudHNGb3JTZWFyY2hQcmVkaWNhdGVQYXJhbWV0ZXJpemVk
QXR0cmlidXRlLAotICAgICAgICAgICAgICAgICAgICAgIG5pbF07Ci0gICAgfQotCi0gICAgaWYg
KHRleHRQYXJhbUF0dHJzID09IG5pbCkgewotICAgICAgICBOU011dGFibGVBcnJheSogdGVtcEFy
cmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTpwYXJhbUF0dHJzXTsK
LSAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6KE5TU3RyaW5nKilrQVhMaW5lRm9ySW5kZXhQ
YXJhbWV0ZXJpemVkQXR0cmlidXRlXTsKLSAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6KE5T
U3RyaW5nKilrQVhSYW5nZUZvckxpbmVQYXJhbWV0ZXJpemVkQXR0cmlidXRlXTsKLSAgICAgICAg
W3RlbXBBcnJheSBhZGRPYmplY3Q6KE5TU3RyaW5nKilrQVhTdHJpbmdGb3JSYW5nZVBhcmFtZXRl
cml6ZWRBdHRyaWJ1dGVdOwotICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDooTlNTdHJpbmcq
KWtBWFJhbmdlRm9yUG9zaXRpb25QYXJhbWV0ZXJpemVkQXR0cmlidXRlXTsKLSAgICAgICAgW3Rl
bXBBcnJheSBhZGRPYmplY3Q6KE5TU3RyaW5nKilrQVhSYW5nZUZvckluZGV4UGFyYW1ldGVyaXpl
ZEF0dHJpYnV0ZV07Ci0gICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0OihOU1N0cmluZyopa0FY
Qm91bmRzRm9yUmFuZ2VQYXJhbWV0ZXJpemVkQXR0cmlidXRlXTsKLSAgICAgICAgW3RlbXBBcnJh
eSBhZGRPYmplY3Q6KE5TU3RyaW5nKilrQVhSVEZGb3JSYW5nZVBhcmFtZXRlcml6ZWRBdHRyaWJ1
dGVdOwotICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDooTlNTdHJpbmcqKWtBWEF0dHJpYnV0
ZWRTdHJpbmdGb3JSYW5nZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVdOwotICAgICAgICBbdGVtcEFy
cmF5IGFkZE9iamVjdDooTlNTdHJpbmcqKWtBWFN0eWxlUmFuZ2VGb3JJbmRleFBhcmFtZXRlcml6
ZWRBdHRyaWJ1dGVdOwotICAgICAgICB0ZXh0UGFyYW1BdHRycyA9IFtbTlNBcnJheSBhbGxvY10g
aW5pdFdpdGhBcnJheTp0ZW1wQXJyYXldOwotICAgICAgICBbdGVtcEFycmF5IHJlbGVhc2VdOwot
ICAgIH0KLSAgICBpZiAodGFibGVQYXJhbUF0dHJzID09IG5pbCkgewotICAgICAgICBOU011dGFi
bGVBcnJheSogdGVtcEFycmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJh
eTpwYXJhbUF0dHJzXTsKLSAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmls
aXR5Q2VsbEZvckNvbHVtbkFuZFJvd1BhcmFtZXRlcml6ZWRBdHRyaWJ1dGVdOwotICAgICAgICB0
YWJsZVBhcmFtQXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5
XTsKLSAgICAgICAgW3RlbXBBcnJheSByZWxlYXNlXTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKG1f
b2JqZWN0LT5pc1Bhc3N3b3JkRmllbGQoKSkKLSAgICAgICAgcmV0dXJuIFtOU0FycmF5IGFycmF5
XTsKLSAgICAKLSAgICBpZiAoIW1fb2JqZWN0LT5pc0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qo
KSkKLSAgICAgICAgcmV0dXJuIHBhcmFtQXR0cnM7Ci0KLSAgICBpZiAobV9vYmplY3QtPmlzVGV4
dENvbnRyb2woKSkKLSAgICAgICAgcmV0dXJuIHRleHRQYXJhbUF0dHJzOwotICAgIAotICAgIGlm
IChtX29iamVjdC0+aXNBY2Nlc3NpYmlsaXR5VGFibGUoKSkKLSAgICAgICAgcmV0dXJuIHRhYmxl
UGFyYW1BdHRyczsKLSAgICAKLSAgICBpZiAobV9vYmplY3QtPmlzTWVudVJlbGF0ZWQoKSkKLSAg
ICAgICAgcmV0dXJuIG5pbDsKLQotICAgIHJldHVybiBwYXJhbUF0dHJzOwotfQotCi0tICh2b2lk
KWFjY2Vzc2liaWxpdHlQZXJmb3JtUHJlc3NBY3Rpb24KLXsKLSAgICBpZiAoIVtzZWxmIHVwZGF0
ZU9iamVjdEJhY2tpbmdTdG9yZV0pCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChtX29iamVj
dC0+aXNBdHRhY2htZW50KCkpCi0gICAgICAgIFtbc2VsZiBhdHRhY2htZW50Vmlld10gYWNjZXNz
aWJpbGl0eVBlcmZvcm1BY3Rpb246TlNBY2Nlc3NpYmlsaXR5UHJlc3NBY3Rpb25dOwotICAgIGVs
c2UKLSAgICAgICAgbV9vYmplY3QtPnByZXNzKCk7ICAgIAotfQotCi0tICh2b2lkKWFjY2Vzc2li
aWxpdHlQZXJmb3JtSW5jcmVtZW50QWN0aW9uCi17Ci0gICAgaWYgKCFbc2VsZiB1cGRhdGVPYmpl
Y3RCYWNraW5nU3RvcmVdKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV9vYmplY3QtPmlz
QXR0YWNobWVudCgpKQotICAgICAgICBbW3NlbGYgYXR0YWNobWVudFZpZXddIGFjY2Vzc2liaWxp
dHlQZXJmb3JtQWN0aW9uOk5TQWNjZXNzaWJpbGl0eUluY3JlbWVudEFjdGlvbl07Ci0gICAgZWxz
ZQotICAgICAgICBtX29iamVjdC0+aW5jcmVtZW50KCk7ICAgIAotfQotCi0tICh2b2lkKWFjY2Vz
c2liaWxpdHlQZXJmb3JtRGVjcmVtZW50QWN0aW9uCi17Ci0gICAgaWYgKCFbc2VsZiB1cGRhdGVP
YmplY3RCYWNraW5nU3RvcmVdKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV9vYmplY3Qt
PmlzQXR0YWNobWVudCgpKQotICAgICAgICBbW3NlbGYgYXR0YWNobWVudFZpZXddIGFjY2Vzc2li
aWxpdHlQZXJmb3JtQWN0aW9uOk5TQWNjZXNzaWJpbGl0eURlY3JlbWVudEFjdGlvbl07Ci0gICAg
ZWxzZQotICAgICAgICBtX29iamVjdC0+ZGVjcmVtZW50KCk7ICAgIAotfQotCi0tICh2b2lkKWFj
Y2Vzc2liaWxpdHlQZXJmb3JtU2hvd01lbnVBY3Rpb24KLXsKLSAgICBpZiAobV9vYmplY3QtPnJv
bGVWYWx1ZSgpID09IENvbWJvQm94Um9sZSkKLSAgICAgICAgbV9vYmplY3QtPnNldElzRXhwYW5k
ZWQodHJ1ZSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIC8vIFRoaXMgbmVlZHMgdG8gYmUgcGVyZm9y
bWVkIGluIGFuIGl0ZXJhdGlvbiBvZiB0aGUgcnVuIGxvb3AgdGhhdCBkaWQgbm90IHN0YXJ0IGZy
b20gYW4gQVggY2FsbC4gCi0gICAgICAgIC8vIElmIGl0J3MgdGhlIHNhbWUgcnVuIGxvb3AgaXRl
cmF0aW9uLCB0aGUgbWVudSBvcGVuIG5vdGlmaWNhdGlvbiB3b24ndCBiZSBzZW50Ci0gICAgICAg
IFtzZWxmIHBlcmZvcm1TZWxlY3RvcjpAc2VsZWN0b3IoYWNjZXNzaWJpbGl0eVNob3dDb250ZXh0
TWVudSkgd2l0aE9iamVjdDpuaWwgYWZ0ZXJEZWxheTowLjBdOwotICAgIH0KLX0KLQotLSAodm9p
ZClhY2Nlc3NpYmlsaXR5U2hvd0NvbnRleHRNZW51Ci17ICAgIAotICAgIEZyYW1lVmlldyogZnJh
bWVWaWV3ID0gbV9vYmplY3QtPmRvY3VtZW50RnJhbWVWaWV3KCk7Ci0gICAgaWYgKCFmcmFtZVZp
ZXcpCi0gICAgICAgIHJldHVybjsKLSAgICBGcmFtZSogZnJhbWUgPSBmcmFtZVZpZXctPmZyYW1l
KCk7Ci0gICAgaWYgKCFmcmFtZSkKLSAgICAgICAgcmV0dXJuOwotICAgIFBhZ2UqIHBhZ2UgPSBm
cmFtZS0+cGFnZSgpOwotICAgIGlmICghcGFnZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8g
U2ltdWxhdGUgYSBjbGljayBpbiB0aGUgbWlkZGxlIG9mIHRoZSBvYmplY3QuCi0gICAgTGF5b3V0
UG9pbnQgY2xpY2tQb2ludCA9IG1fb2JqZWN0LT5jbGlja1BvaW50KCk7Ci0gICAgCi0gICAgUGxh
dGZvcm1Nb3VzZUV2ZW50IG1vdXNlRXZlbnQoY2xpY2tQb2ludCwgY2xpY2tQb2ludCwgUmlnaHRC
dXR0b24sIE1vdXNlRXZlbnRQcmVzc2VkLCAxLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwg
Y3VycmVudFRpbWUoKSk7Ci0gICAgYm9vbCBoYW5kbGVkID0gZnJhbWUtPmV2ZW50SGFuZGxlcigp
LT5zZW5kQ29udGV4dE1lbnVFdmVudChtb3VzZUV2ZW50KTsKLSAgICBpZiAoaGFuZGxlZCkKLSAg
ICAgICAgcGFnZS0+Y2hyb21lKCktPnNob3dDb250ZXh0TWVudSgpOwotfQotCi0tICh2b2lkKWFj
Y2Vzc2liaWxpdHlQZXJmb3JtQWN0aW9uOihOU1N0cmluZyopYWN0aW9uCi17Ci0gICAgaWYgKCFb
c2VsZiB1cGRhdGVPYmplY3RCYWNraW5nU3RvcmVdKQotICAgICAgICByZXR1cm47Ci0KLSAgICBp
ZiAoW2FjdGlvbiBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5UHJlc3NBY3Rpb25dKQot
ICAgICAgICBbc2VsZiBhY2Nlc3NpYmlsaXR5UGVyZm9ybVByZXNzQWN0aW9uXTsKLSAgICAKLSAg
ICBlbHNlIGlmIChbYWN0aW9uIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlTaG93TWVu
dUFjdGlvbl0pCi0gICAgICAgIFtzZWxmIGFjY2Vzc2liaWxpdHlQZXJmb3JtU2hvd01lbnVBY3Rp
b25dOwotCi0gICAgZWxzZSBpZiAoW2FjdGlvbiBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmls
aXR5SW5jcmVtZW50QWN0aW9uXSkKLSAgICAgICAgW3NlbGYgYWNjZXNzaWJpbGl0eVBlcmZvcm1J
bmNyZW1lbnRBY3Rpb25dOwotCi0gICAgZWxzZSBpZiAoW2FjdGlvbiBpc0VxdWFsVG9TdHJpbmc6
TlNBY2Nlc3NpYmlsaXR5RGVjcmVtZW50QWN0aW9uXSkKLSAgICAgICAgW3NlbGYgYWNjZXNzaWJp
bGl0eVBlcmZvcm1EZWNyZW1lbnRBY3Rpb25dOwotfQotCi0tICh2b2lkKWFjY2Vzc2liaWxpdHlT
ZXRWYWx1ZTooaWQpdmFsdWUgZm9yQXR0cmlidXRlOihOU1N0cmluZyopYXR0cmlidXRlTmFtZQot
ewotICAgIGlmICghW3NlbGYgdXBkYXRlT2JqZWN0QmFja2luZ1N0b3JlXSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgaWQgdGV4dE1hcmtlclJhbmdlID0gbmlsOwotICAgIE5TTnVtYmVyKiAgICAg
ICAgICAgICAgIG51bWJlciA9IG5pbDsKLSAgICBOU1N0cmluZyogICAgICAgICAgICAgICBzdHJp
bmcgPSBuaWw7Ci0gICAgTlNSYW5nZSAgICAgICAgICAgICAgICAgcmFuZ2UgPSB7MCwgMH07Ci0g
ICAgTlNBcnJheSogICAgICAgICAgICAgICAgYXJyYXkgPSBuaWw7Ci0gICAgCi0gICAgLy8gZGVj
b2RlIHRoZSBwYXJhbWV0ZXIKLSAgICBpZiAoQVhPYmplY3RJc1RleHRNYXJrZXJSYW5nZSh2YWx1
ZSkpCi0gICAgICAgIHRleHRNYXJrZXJSYW5nZSA9IHZhbHVlOwotCi0gICAgZWxzZSBpZiAoW3Zh
bHVlIGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIHNlbGZdXSkKLSAgICAgICAgbnVtYmVyID0gdmFs
dWU7Ci0KLSAgICBlbHNlIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgc2VsZl1d
KQotICAgICAgICBzdHJpbmcgPSB2YWx1ZTsKLSAgICAKLSAgICBlbHNlIGlmIChbdmFsdWUgaXNL
aW5kT2ZDbGFzczpbTlNWYWx1ZSBzZWxmXV0pCi0gICAgICAgIHJhbmdlID0gW3ZhbHVlIHJhbmdl
VmFsdWVdOwotICAgIAotICAgIGVsc2UgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU0FycmF5
IHNlbGZdXSkKLSAgICAgICAgYXJyYXkgPSB2YWx1ZTsKLSAgICAKLSAgICAvLyBoYW5kbGUgdGhl
IGNvbW1hbmQKLSAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBAIkFYU2Vs
ZWN0ZWRUZXh0TWFya2VyUmFuZ2UiXSkgewotICAgICAgICBBU1NFUlQodGV4dE1hcmtlclJhbmdl
KTsKLSAgICAgICAgbV9vYmplY3QtPnNldFNlbGVjdGVkVmlzaWJsZVBvc2l0aW9uUmFuZ2UoW3Nl
bGYgdmlzaWJsZVBvc2l0aW9uUmFuZ2VGb3JUZXh0TWFya2VyUmFuZ2U6dGV4dE1hcmtlclJhbmdl
XSk7ICAgICAgICAKLSAgICB9IGVsc2UgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmlu
ZzogTlNBY2Nlc3NpYmlsaXR5Rm9jdXNlZEF0dHJpYnV0ZV0pIHsKLSAgICAgICAgQVNTRVJUKG51
bWJlcik7Ci0gICAgICAgIG1fb2JqZWN0LT5zZXRGb2N1c2VkKFtudW1iZXIgaW50VmFsdWVdICE9
IDApOwotICAgIH0gZWxzZSBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0Fj
Y2Vzc2liaWxpdHlWYWx1ZUF0dHJpYnV0ZV0pIHsKLSAgICAgICAgaWYgKG51bWJlciAmJiBtX29i
amVjdC0+Y2FuU2V0TnVtZXJpY1ZhbHVlKCkpCi0gICAgICAgICAgICBtX29iamVjdC0+c2V0VmFs
dWUoW251bWJlciBmbG9hdFZhbHVlXSk7Ci0gICAgICAgIGVsc2UgaWYgKHN0cmluZykKLSAgICAg
ICAgICAgIG1fb2JqZWN0LT5zZXRWYWx1ZShzdHJpbmcpOwotICAgIH0gZWxzZSBpZiAoW2F0dHJp
YnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZEF0dHJpYnV0
ZV0pIHsKLSAgICAgICAgaWYgKCFudW1iZXIpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IG1fb2JqZWN0LT5zZXRTZWxlY3RlZChbbnVtYmVyIGJvb2xWYWx1ZV0pOwotICAgIH0gZWxzZSBp
ZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlTZWxlY3Rl
ZENoaWxkcmVuQXR0cmlidXRlXSkgewotICAgICAgICBpZiAoIWFycmF5IHx8IG1fb2JqZWN0LT5y
b2xlVmFsdWUoKSAhPSBMaXN0Qm94Um9sZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
QWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHNlbGVjdGVk
Q2hpbGRyZW47Ci0gICAgICAgIGNvbnZlcnRUb1ZlY3RvcihhcnJheSwgc2VsZWN0ZWRDaGlsZHJl
bik7Ci0gICAgICAgIHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlMaXN0Qm94Kj4obV9vYmplY3Qp
LT5zZXRTZWxlY3RlZENoaWxkcmVuKHNlbGVjdGVkQ2hpbGRyZW4pOwotICAgIH0gZWxzZSBpZiAo
bV9vYmplY3QtPmlzVGV4dENvbnRyb2woKSkgewotICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUg
aXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFRleHRBdHRyaWJ1dGVdKSB7
Ci0gICAgICAgICAgICBtX29iamVjdC0+c2V0U2VsZWN0ZWRUZXh0KHN0cmluZyk7Ci0gICAgICAg
IH0gZWxzZSBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxp
dHlTZWxlY3RlZFRleHRSYW5nZUF0dHJpYnV0ZV0pIHsKLSAgICAgICAgICAgIG1fb2JqZWN0LT5z
ZXRTZWxlY3RlZFRleHRSYW5nZShQbGFpblRleHRSYW5nZShyYW5nZS5sb2NhdGlvbiwgcmFuZ2Uu
bGVuZ3RoKSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3Ry
aW5nOiBOU0FjY2Vzc2liaWxpdHlWaXNpYmxlQ2hhcmFjdGVyUmFuZ2VBdHRyaWJ1dGVdKSB7Ci0g
ICAgICAgICAgICBtX29iamVjdC0+bWFrZVJhbmdlVmlzaWJsZShQbGFpblRleHRSYW5nZShyYW5n
ZS5sb2NhdGlvbiwgcmFuZ2UubGVuZ3RoKSk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKFth
dHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlEaXNjbG9zaW5nQXR0
cmlidXRlXSkKLSAgICAgICAgbV9vYmplY3QtPnNldElzRXhwYW5kZWQoW251bWJlciBib29sVmFs
dWVdKTsKLSAgICBlbHNlIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nl
c3NpYmlsaXR5U2VsZWN0ZWRSb3dzQXR0cmlidXRlXSkgewotICAgICAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Igc2VsZWN0ZWRSb3dzOwotICAgICAg
ICBjb252ZXJ0VG9WZWN0b3IoYXJyYXksIHNlbGVjdGVkUm93cyk7Ci0gICAgICAgIGlmIChtX29i
amVjdC0+aXNUcmVlKCkgfHwgbV9vYmplY3QtPmlzQWNjZXNzaWJpbGl0eVRhYmxlKCkpCi0gICAg
ICAgICAgICBtX29iamVjdC0+c2V0U2VsZWN0ZWRSb3dzKHNlbGVjdGVkUm93cyk7Ci0gICAgfSBl
bHNlIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5R3Jh
YmJlZEF0dHJpYnV0ZV0pCi0gICAgICAgIG1fb2JqZWN0LT5zZXRBUklBR3JhYmJlZChbbnVtYmVy
IGJvb2xWYWx1ZV0pOwotfQotCi1zdGF0aWMgUmVuZGVyT2JqZWN0KiByZW5kZXJlckZvclZpZXco
TlNWaWV3KiB2aWV3KQotewotICAgIGlmICghW3ZpZXcgY29uZm9ybXNUb1Byb3RvY29sOkBwcm90
b2NvbChXZWJDb3JlRnJhbWVWaWV3KV0pCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgTlNWaWV3
PFdlYkNvcmVGcmFtZVZpZXc+KiBmcmFtZVZpZXcgPSAoTlNWaWV3PFdlYkNvcmVGcmFtZVZpZXc+
Kil2aWV3OwotICAgIEZyYW1lKiBmcmFtZSA9IFtmcmFtZVZpZXcgX3dlYl9mcmFtZV07Ci0gICAg
aWYgKCFmcmFtZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBOb2RlKiBub2RlID0gZnJhbWUt
PmRvY3VtZW50KCktPm93bmVyRWxlbWVudCgpOwotICAgIGlmICghbm9kZSkKLSAgICAgICAgcmV0
dXJuIDA7Ci0KLSAgICByZXR1cm4gbm9kZS0+cmVuZGVyZXIoKTsKLX0KLQotLSAoaWQpX2FjY2Vz
c2liaWxpdHlQYXJlbnRGb3JTdWJ2aWV3OihOU1ZpZXcqKXN1YnZpZXcKLXsgICAKLSAgICBSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyID0gcmVuZGVyZXJGb3JWaWV3KHN1YnZpZXcpOwotICAgIGlmICgh
cmVuZGVyZXIpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBvYmogPSByZW5kZXJlci0+ZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0
ZShyZW5kZXJlcik7Ci0gICAgaWYgKG9iaikKLSAgICAgICAgcmV0dXJuIG9iai0+cGFyZW50T2Jq
ZWN0VW5pZ25vcmVkKCktPndyYXBwZXIoKTsKLSAgICByZXR1cm4gbmlsOwotfQotCi0tIChOU1N0
cmluZyopYWNjZXNzaWJpbGl0eUFjdGlvbkRlc2NyaXB0aW9uOihOU1N0cmluZyopYWN0aW9uCi17
Ci0gICAgLy8gd2UgaGF2ZSBubyBjdXN0b20gYWN0aW9ucwotICAgIHJldHVybiBOU0FjY2Vzc2li
aWxpdHlBY3Rpb25EZXNjcmlwdGlvbihhY3Rpb24pOwotfQotCi0vLyBUaGUgQ0ZBdHRyaWJ1dGVk
U3RyaW5nVHlwZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgdGV4dCBhc3NvY2lhdGVkIHdpdGggdGhp
cyBhY2Nlc3NpYmlsaXR5Ci0vLyBvYmplY3QgdGhhdCBpcyBzcGVjaWZpZWQgYnkgdGhlIGdpdmVu
IHJhbmdlLgotLSAoTlNBdHRyaWJ1dGVkU3RyaW5nKilkb0FYQXR0cmlidXRlZFN0cmluZ0ZvclJh
bmdlOihOU1JhbmdlKXJhbmdlCi17Ci0gICAgUGxhaW5UZXh0UmFuZ2UgdGV4dFJhbmdlID0gUGxh
aW5UZXh0UmFuZ2UocmFuZ2UubG9jYXRpb24sIHJhbmdlLmxlbmd0aCk7Ci0gICAgVmlzaWJsZVBv
c2l0aW9uUmFuZ2UgdmlzaWJsZVBvc1JhbmdlID0gbV9vYmplY3QtPnZpc2libGVQb3NpdGlvblJh
bmdlRm9yUmFuZ2UodGV4dFJhbmdlKTsKLSAgICByZXR1cm4gW3NlbGYgZG9BWEF0dHJpYnV0ZWRT
dHJpbmdGb3JUZXh0TWFya2VyUmFuZ2U6W3NlbGYgdGV4dE1hcmtlclJhbmdlRnJvbVZpc2libGVQ
b3NpdGlvbnM6dmlzaWJsZVBvc1JhbmdlLnN0YXJ0IGVuZFBvc2l0aW9uOnZpc2libGVQb3NSYW5n
ZS5lbmRdXTsKLX0KLQotLy8gVGhlIFJURiByZXByZXNlbnRhdGlvbiBvZiB0aGUgdGV4dCBhc3Nv
Y2lhdGVkIHdpdGggdGhpcyBhY2Nlc3NpYmlsaXR5IG9iamVjdCB0aGF0IGlzCi0vLyBzcGVjaWZp
ZWQgYnkgdGhlIGdpdmVuIHJhbmdlLgotLSAoTlNEYXRhKilkb0FYUlRGRm9yUmFuZ2U6KE5TUmFu
Z2UpcmFuZ2UKLXsKLSAgICBOU0F0dHJpYnV0ZWRTdHJpbmcqIGF0dHJTdHJpbmcgPSBbc2VsZiBk
b0FYQXR0cmlidXRlZFN0cmluZ0ZvclJhbmdlOnJhbmdlXTsKLSAgICByZXR1cm4gW2F0dHJTdHJp
bmcgUlRGRnJvbVJhbmdlOiBOU01ha2VSYW5nZSgwLCBbYXR0clN0cmluZyBsZW5ndGhdKSBkb2N1
bWVudEF0dHJpYnV0ZXM6IG5pbF07Ci19Ci0KLS0gKGlkKWFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVW
YWx1ZTooTlNTdHJpbmcqKWF0dHJpYnV0ZSBmb3JQYXJhbWV0ZXI6KGlkKXBhcmFtZXRlcgotewot
ICAgIGlkIHRleHRNYXJrZXIgPSBuaWw7Ci0gICAgaWQgdGV4dE1hcmtlclJhbmdlID0gbmlsOwot
ICAgIE5TTnVtYmVyKiBudW1iZXIgPSBuaWw7Ci0gICAgTlNBcnJheSogYXJyYXkgPSBuaWw7Ci0g
ICAgTlNEaWN0aW9uYXJ5KiBkaWN0aW9uYXJ5ID0gbmlsOwotICAgIFJlZlB0cjxBY2Nlc3NpYmls
aXR5T2JqZWN0PiB1aUVsZW1lbnQgPSAwOwotICAgIE5TUG9pbnQgcG9pbnQgPSBOU1plcm9Qb2lu
dDsKLSAgICBib29sIHBvaW50U2V0ID0gZmFsc2U7Ci0gICAgTlNSYW5nZSByYW5nZSA9IHswLCAw
fTsKLSAgICBib29sIHJhbmdlU2V0ID0gZmFsc2U7Ci0gICAgCi0gICAgLy8gYmFzaWMgcGFyYW1l
dGVyIHZhbGlkYXRpb24KLSAgICBpZiAoIW1fb2JqZWN0IHx8ICFhdHRyaWJ1dGUgfHwgIXBhcmFt
ZXRlcikKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIGlmICghW3NlbGYgdXBkYXRlT2JqZWN0
QmFja2luZ1N0b3JlXSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICAvLyBjb21tb24g
cGFyYW1ldGVyIHR5cGUgY2hlY2svY2FzdGluZy4gIE5pbCBjaGVja3MgaW4gaGFuZGxlcnMgY2F0
Y2ggd3JvbmcgdHlwZSBjYXNlLgotICAgIC8vIE5PVEU6IFRoaXMgYXNzdW1lcyBuaWwgaXMgbm90
IGEgdmFsaWQgcGFyYW1ldGVyLCBiZWNhdXNlIGl0IGlzIGluZGlzdGluZ3Vpc2hhYmxlIGZyb20K
LSAgICAvLyBhIHBhcmFtZXRlciBvZiB0aGUgd3JvbmcgdHlwZS4KLSAgICBpZiAoQVhPYmplY3RJ
c1RleHRNYXJrZXIocGFyYW1ldGVyKSkKLSAgICAgICAgdGV4dE1hcmtlciA9IHBhcmFtZXRlcjsK
LQotICAgIGVsc2UgaWYgKEFYT2JqZWN0SXNUZXh0TWFya2VyUmFuZ2UocGFyYW1ldGVyKSkKLSAg
ICAgICAgdGV4dE1hcmtlclJhbmdlID0gcGFyYW1ldGVyOwotCi0gICAgZWxzZSBpZiAoW3BhcmFt
ZXRlciBpc0tpbmRPZkNsYXNzOltBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBzZWxmXV0pCi0g
ICAgICAgIHVpRWxlbWVudCA9IFsoQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqKXBhcmFtZXRl
ciBhY2Nlc3NpYmlsaXR5T2JqZWN0XTsKLQotICAgIGVsc2UgaWYgKFtwYXJhbWV0ZXIgaXNLaW5k
T2ZDbGFzczpbTlNOdW1iZXIgc2VsZl1dKQotICAgICAgICBudW1iZXIgPSBwYXJhbWV0ZXI7Ci0K
LSAgICBlbHNlIGlmIChbcGFyYW1ldGVyIGlzS2luZE9mQ2xhc3M6W05TQXJyYXkgc2VsZl1dKQot
ICAgICAgICBhcnJheSA9IHBhcmFtZXRlcjsKLQotICAgIGVsc2UgaWYgKFtwYXJhbWV0ZXIgaXNL
aW5kT2ZDbGFzczpbTlNEaWN0aW9uYXJ5IHNlbGZdXSkKLSAgICAgICAgZGljdGlvbmFyeSA9IHBh
cmFtZXRlcjsKLQotICAgIGVsc2UgaWYgKFtwYXJhbWV0ZXIgaXNLaW5kT2ZDbGFzczpbTlNWYWx1
ZSBzZWxmXV0gJiYgc3RyY21wKFsoTlNWYWx1ZSopcGFyYW1ldGVyIG9iakNUeXBlXSwgQGVuY29k
ZShOU1BvaW50KSkgPT0gMCkgewotICAgICAgICBwb2ludFNldCA9IHRydWU7Ci0gICAgICAgIHBv
aW50ID0gWyhOU1ZhbHVlKilwYXJhbWV0ZXIgcG9pbnRWYWx1ZV07Ci0KLSAgICB9IGVsc2UgaWYg
KFtwYXJhbWV0ZXIgaXNLaW5kT2ZDbGFzczpbTlNWYWx1ZSBzZWxmXV0gJiYgc3RyY21wKFsoTlNW
YWx1ZSopcGFyYW1ldGVyIG9iakNUeXBlXSwgQGVuY29kZShOU1JhbmdlKSkgPT0gMCkgewotICAg
ICAgICByYW5nZVNldCA9IHRydWU7Ci0gICAgICAgIHJhbmdlID0gWyhOU1ZhbHVlKilwYXJhbWV0
ZXIgcmFuZ2VWYWx1ZV07Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gQXR0cmlidXRlIHR5cGUg
aXMgbm90IHN1cHBvcnRlZC4gQWxsb3cgc3VwZXIgdG8gaGFuZGxlLgotICAgICAgICByZXR1cm4g
W3N1cGVyIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTphdHRyaWJ1dGUgZm9yUGFyYW1ldGVy
OnBhcmFtZXRlcl07Ci0gICAgfQotICAgIAotICAgIC8vIGRpc3BhdGNoCi0gICAgaWYgKFthdHRy
aWJ1dGUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVVJRWxlbWVudHNGb3JTZWFyY2hQ
cmVkaWNhdGVQYXJhbWV0ZXJpemVkQXR0cmlidXRlXSkgewotICAgICAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBheFN0YXJ0T2JqZWN0ID0gMDsKLSAgICAgICAgaWYgKFtbZGljdGlvbmFyeSBvYmpl
Y3RGb3JLZXk6QCJBWFN0YXJ0RWxlbWVudCJdIGlzS2luZE9mQ2xhc3M6W0FjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyIHNlbGZdXSkKLSAgICAgICAgICAgIGF4U3RhcnRPYmplY3QgPSBbKEFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyKilbZGljdGlvbmFyeSBvYmplY3RGb3JLZXk6QCJBWFN0YXJ0
RWxlbWVudCJdIGFjY2Vzc2liaWxpdHlPYmplY3RdOwotICAgICAgICAKLSAgICAgICAgQWNjZXNz
aWJpbGl0eVNlYXJjaERpcmVjdGlvbiBheFNlYXJjaERpcmVjdGlvbiA9IFNlYXJjaERpcmVjdGlv
bk5leHQ7Ci0gICAgICAgIGlmIChbW2RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OkAiQVhEaXJlY3Rp
b24iXSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBzZWxmXV0pCi0gICAgICAgICAgICBheFNlYXJj
aERpcmVjdGlvbiA9IChbKE5TU3RyaW5nKilbZGljdGlvbmFyeSBvYmplY3RGb3JLZXk6QCJBWERp
cmVjdGlvbiJdIGlzRXF1YWxUb1N0cmluZzpAIkFYRGlyZWN0aW9uTmV4dCJdKSA/IFNlYXJjaERp
cmVjdGlvbk5leHQgOiBTZWFyY2hEaXJlY3Rpb25QcmV2aW91czsKLSAgICAgICAgCi0gICAgICAg
IEFjY2Vzc2liaWxpdHlTZWFyY2hLZXkgYXhTZWFyY2hLZXkgPSBBbnlUeXBlU2VhcmNoS2V5Owot
ICAgICAgICBpZiAoW1tkaWN0aW9uYXJ5IG9iamVjdEZvcktleTpAIkFYU2VhcmNoS2V5Il0gaXNL
aW5kT2ZDbGFzczpbTlNTdHJpbmcgc2VsZl1dKQotICAgICAgICAgICAgYXhTZWFyY2hLZXkgPSBh
Y2Nlc3NpYmlsaXR5U2VhcmNoS2V5Rm9yU3RyaW5nKChDRlN0cmluZ1JlZilbZGljdGlvbmFyeSBv
YmplY3RGb3JLZXk6QCJBWFNlYXJjaEtleSJdKTsKLSAgICAgICAgCi0gICAgICAgIFN0cmluZyBz
ZWFyY2hUZXh0OwotICAgICAgICBpZiAoW1tkaWN0aW9uYXJ5IG9iamVjdEZvcktleTpAIkFYU2Vh
cmNoVGV4dCJdIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIHNlbGZdXSkKLSAgICAgICAgICAgIHNl
YXJjaFRleHQgPSAoQ0ZTdHJpbmdSZWYpW2RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OkAiQVhTZWFy
Y2hUZXh0Il07Ci0gICAgICAgIAotICAgICAgICB1bnNpZ25lZCByZXN1bHRzTGltaXQgPSAwOwot
ICAgICAgICBpZiAoW1tkaWN0aW9uYXJ5IG9iamVjdEZvcktleTpAIkFYUmVzdWx0c0xpbWl0Il0g
aXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgc2VsZl1dKQotICAgICAgICAgICAgcmVzdWx0c0xpbWl0
ID0gWyhOU051bWJlciopW2RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OkAiQVhSZXN1bHRzTGltaXQi
XSB1bnNpZ25lZEludFZhbHVlXTsKLSAgICAgICAgCi0gICAgICAgIEFjY2Vzc2liaWxpdHlTZWFy
Y2hQcmVkaWNhdGUgYXhTZWFyY2hQcmVkaWNhdGUgPSB7bV9vYmplY3QsIGF4U3RhcnRPYmplY3Qs
IGF4U2VhcmNoRGlyZWN0aW9uLCBheFNlYXJjaEtleSwgJnNlYXJjaFRleHQsIHJlc3VsdHNMaW1p
dH07Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciBheFJlc3VsdHM7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2libGVP
YmplY3RzV2l0aEFjY2Vzc2liaWxpdHlTZWFyY2hQcmVkaWNhdGUoJmF4U2VhcmNoUHJlZGljYXRl
LCBheFJlc3VsdHMpOwotICAgICAgICAKLSAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXko
YXhSZXN1bHRzKTsKLSAgICB9Ci0KLSAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6
QCJBWFVJRWxlbWVudEZvclRleHRNYXJrZXIiXSkgewotICAgICAgICBWaXNpYmxlUG9zaXRpb24g
dmlzaWJsZVBvcyA9IFtzZWxmIHZpc2libGVQb3NpdGlvbkZvclRleHRNYXJrZXI6KHRleHRNYXJr
ZXIpXTsKLSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYXhPYmplY3QgPSBtX29iamVjdC0+
YWNjZXNzaWJpbGl0eU9iamVjdEZvclBvc2l0aW9uKHZpc2libGVQb3MpOwotICAgICAgICBpZiAo
IWF4T2JqZWN0KQotICAgICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAgICAgcmV0dXJuIGF4T2Jq
ZWN0LT53cmFwcGVyKCk7Ci0gICAgfQotCi0gICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3Ry
aW5nOkAiQVhUZXh0TWFya2VyUmFuZ2VGb3JVSUVsZW1lbnQiXSkgewotICAgICAgICBWaXNpYmxl
UG9zaXRpb25SYW5nZSB2cFJhbmdlID0gdWlFbGVtZW50LmdldCgpLT52aXNpYmxlUG9zaXRpb25S
YW5nZSgpOwotICAgICAgICByZXR1cm4gW3NlbGYgdGV4dE1hcmtlclJhbmdlRnJvbVZpc2libGVQ
b3NpdGlvbnM6dnBSYW5nZS5zdGFydCBlbmRQb3NpdGlvbjp2cFJhbmdlLmVuZF07Ci0gICAgfQot
Ci0gICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhMaW5lRm9yVGV4dE1hcmtl
ciJdKSB7Ci0gICAgICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zID0gW3NlbGYgdmlzaWJs
ZVBvc2l0aW9uRm9yVGV4dE1hcmtlcjoodGV4dE1hcmtlcildOwotICAgICAgICByZXR1cm4gW05T
TnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZEludDptX29iamVjdC0+bGluZUZvclBvc2l0aW9uKHZp
c2libGVQb3MpXTsKLSAgICB9Ci0KLSAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6
QCJBWFRleHRNYXJrZXJSYW5nZUZvckxpbmUiXSkgewotICAgICAgICBWaXNpYmxlUG9zaXRpb25S
YW5nZSB2cFJhbmdlID0gbV9vYmplY3QtPnZpc2libGVQb3NpdGlvblJhbmdlRm9yTGluZShbbnVt
YmVyIGludFZhbHVlXSk7Ci0gICAgICAgIHJldHVybiBbc2VsZiB0ZXh0TWFya2VyUmFuZ2VGcm9t
VmlzaWJsZVBvc2l0aW9uczp2cFJhbmdlLnN0YXJ0IGVuZFBvc2l0aW9uOnZwUmFuZ2UuZW5kXTsK
LSAgICB9Ci0KLSAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWFN0cmluZ0Zv
clRleHRNYXJrZXJSYW5nZSJdKSB7Ci0gICAgICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHZpc2li
bGVQb3NSYW5nZSA9IFtzZWxmIHZpc2libGVQb3NpdGlvblJhbmdlRm9yVGV4dE1hcmtlclJhbmdl
OnRleHRNYXJrZXJSYW5nZV07Ci0gICAgICAgIHJldHVybiBtX29iamVjdC0+c3RyaW5nRm9yVmlz
aWJsZVBvc2l0aW9uUmFuZ2UodmlzaWJsZVBvc1JhbmdlKTsKLSAgICB9Ci0KLSAgICBpZiAoW2F0
dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWFRleHRNYXJrZXJGb3JQb3NpdGlvbiJdKSB7Ci0g
ICAgICAgIEludFBvaW50IHdlYkNvcmVQb2ludCA9IEludFBvaW50KHBvaW50KTsKLSAgICAgICAg
cmV0dXJuIHBvaW50U2V0ID8gW3NlbGYgdGV4dE1hcmtlckZvclZpc2libGVQb3NpdGlvbjptX29i
amVjdC0+dmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQod2ViQ29yZVBvaW50KV0gOiBuaWw7Ci0gICAg
fQotCi0gICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhCb3VuZHNGb3JUZXh0
TWFya2VyUmFuZ2UiXSkgewotICAgICAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSB2aXNpYmxlUG9z
UmFuZ2UgPSBbc2VsZiB2aXNpYmxlUG9zaXRpb25SYW5nZUZvclRleHRNYXJrZXJSYW5nZTp0ZXh0
TWFya2VyUmFuZ2VdOwotICAgICAgICBOU1JlY3QgcmVjdCA9IG1fb2JqZWN0LT5ib3VuZHNGb3JW
aXNpYmxlUG9zaXRpb25SYW5nZSh2aXNpYmxlUG9zUmFuZ2UpOwotICAgICAgICByZXR1cm4gW05T
VmFsdWUgdmFsdWVXaXRoUmVjdDpyZWN0XTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKFthdHRyaWJ1
dGUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUJvdW5kc0ZvclJhbmdlUGFyYW1ldGVy
aXplZEF0dHJpYnV0ZV0pIHsKLSAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0ID0gbV9vYmpl
Y3QtPnZpc2libGVQb3NpdGlvbkZvckluZGV4KHJhbmdlLmxvY2F0aW9uKTsKLSAgICAgICAgVmlz
aWJsZVBvc2l0aW9uIGVuZCA9IG1fb2JqZWN0LT52aXNpYmxlUG9zaXRpb25Gb3JJbmRleChyYW5n
ZS5sb2NhdGlvbityYW5nZS5sZW5ndGgpOwotICAgICAgICBpZiAoc3RhcnQuaXNOdWxsKCkgfHwg
ZW5kLmlzTnVsbCgpKQotICAgICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAgICAgTlNSZWN0IHJl
Y3QgPSBtX29iamVjdC0+Ym91bmRzRm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UoVmlzaWJsZVBvc2l0
aW9uUmFuZ2Uoc3RhcnQsIGVuZCkpOwotICAgICAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRo
UmVjdDpyZWN0XTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3Ry
aW5nOk5TQWNjZXNzaWJpbGl0eVN0cmluZ0ZvclJhbmdlUGFyYW1ldGVyaXplZEF0dHJpYnV0ZV0p
IHsKLSAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0ID0gbV9vYmplY3QtPnZpc2libGVQb3Np
dGlvbkZvckluZGV4KHJhbmdlLmxvY2F0aW9uKTsKLSAgICAgICAgVmlzaWJsZVBvc2l0aW9uIGVu
ZCA9IG1fb2JqZWN0LT52aXNpYmxlUG9zaXRpb25Gb3JJbmRleChyYW5nZS5sb2NhdGlvbityYW5n
ZS5sZW5ndGgpOwotICAgICAgICBpZiAoc3RhcnQuaXNOdWxsKCkgfHwgZW5kLmlzTnVsbCgpKQot
ICAgICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAgICAgcmV0dXJuIG1fb2JqZWN0LT5zdHJpbmdG
b3JWaXNpYmxlUG9zaXRpb25SYW5nZShWaXNpYmxlUG9zaXRpb25SYW5nZShzdGFydCwgZW5kKSk7
Ci0gICAgfQotCi0gICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhBdHRyaWJ1
dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlIl0pCi0gICAgICAgIHJldHVybiBbc2VsZiBkb0FY
QXR0cmlidXRlZFN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZTp0ZXh0TWFya2VyUmFuZ2VdOwotCi0g
ICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhUZXh0TWFya2VyUmFuZ2VGb3JV
bm9yZGVyZWRUZXh0TWFya2VycyJdKSB7Ci0gICAgICAgIGlmIChbYXJyYXkgY291bnRdIDwgMikK
LSAgICAgICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICAgICAgaWQgdGV4dE1hcmtlcjEgPSBbYXJy
YXkgb2JqZWN0QXRJbmRleDowXTsKLSAgICAgICAgaWQgdGV4dE1hcmtlcjIgPSBbYXJyYXkgb2Jq
ZWN0QXRJbmRleDoxXTsKLSAgICAgICAgaWYgKCFBWE9iamVjdElzVGV4dE1hcmtlcih0ZXh0TWFy
a2VyMSkgfHwgIUFYT2JqZWN0SXNUZXh0TWFya2VyKHRleHRNYXJrZXIyKSkKLSAgICAgICAgICAg
IHJldHVybiBuaWw7Ci0KLSAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3MxID0gW3Nl
bGYgdmlzaWJsZVBvc2l0aW9uRm9yVGV4dE1hcmtlcjoodGV4dE1hcmtlcjEpXTsKLSAgICAgICAg
VmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3MyID0gW3NlbGYgdmlzaWJsZVBvc2l0aW9uRm9yVGV4
dE1hcmtlcjoodGV4dE1hcmtlcjIpXTsKLSAgICAgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgdnBS
YW5nZSA9IG1fb2JqZWN0LT52aXNpYmxlUG9zaXRpb25SYW5nZUZvclVub3JkZXJlZFBvc2l0aW9u
cyh2aXNpYmxlUG9zMSwgdmlzaWJsZVBvczIpOwotICAgICAgICByZXR1cm4gW3NlbGYgdGV4dE1h
cmtlclJhbmdlRnJvbVZpc2libGVQb3NpdGlvbnM6dnBSYW5nZS5zdGFydCBlbmRQb3NpdGlvbjp2
cFJhbmdlLmVuZF07Ci0gICAgfQotCi0gICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5n
OkAiQVhOZXh0VGV4dE1hcmtlckZvclRleHRNYXJrZXIiXSkgewotICAgICAgICBWaXNpYmxlUG9z
aXRpb24gdmlzaWJsZVBvcyA9IFtzZWxmIHZpc2libGVQb3NpdGlvbkZvclRleHRNYXJrZXI6KHRl
eHRNYXJrZXIpXTsKLSAgICAgICAgcmV0dXJuIFtzZWxmIHRleHRNYXJrZXJGb3JWaXNpYmxlUG9z
aXRpb246bV9vYmplY3QtPm5leHRWaXNpYmxlUG9zaXRpb24odmlzaWJsZVBvcyldOwotICAgIH0K
LQotICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYUHJldmlvdXNUZXh0TWFy
a2VyRm9yVGV4dE1hcmtlciJdKSB7Ci0gICAgICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9z
ID0gW3NlbGYgdmlzaWJsZVBvc2l0aW9uRm9yVGV4dE1hcmtlcjoodGV4dE1hcmtlcildOwotICAg
ICAgICByZXR1cm4gW3NlbGYgdGV4dE1hcmtlckZvclZpc2libGVQb3NpdGlvbjptX29iamVjdC0+
cHJldmlvdXNWaXNpYmxlUG9zaXRpb24odmlzaWJsZVBvcyldOwotICAgIH0KLQotICAgIGlmIChb
YXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYTGVmdFdvcmRUZXh0TWFya2VyUmFuZ2VGb3JU
ZXh0TWFya2VyIl0pIHsKLSAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3MgPSBbc2Vs
ZiB2aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyOih0ZXh0TWFya2VyKV07Ci0gICAgICAgIFZp
c2libGVQb3NpdGlvblJhbmdlIHZwUmFuZ2UgPSBtX29iamVjdC0+cG9zaXRpb25PZkxlZnRXb3Jk
KHZpc2libGVQb3MpOwotICAgICAgICByZXR1cm4gW3NlbGYgdGV4dE1hcmtlclJhbmdlRnJvbVZp
c2libGVQb3NpdGlvbnM6dnBSYW5nZS5zdGFydCBlbmRQb3NpdGlvbjp2cFJhbmdlLmVuZF07Ci0g
ICAgfQotCi0gICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhSaWdodFdvcmRU
ZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyIl0pIHsKLSAgICAgICAgVmlzaWJsZVBvc2l0aW9u
IHZpc2libGVQb3MgPSBbc2VsZiB2aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyOih0ZXh0TWFy
a2VyKV07Ci0gICAgICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHZwUmFuZ2UgPSBtX29iamVjdC0+
cG9zaXRpb25PZlJpZ2h0V29yZCh2aXNpYmxlUG9zKTsKLSAgICAgICAgcmV0dXJuIFtzZWxmIHRl
eHRNYXJrZXJSYW5nZUZyb21WaXNpYmxlUG9zaXRpb25zOnZwUmFuZ2Uuc3RhcnQgZW5kUG9zaXRp
b246dnBSYW5nZS5lbmRdOwotICAgIH0KLQotICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0
cmluZzpAIkFYTGVmdExpbmVUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyIl0pIHsKLSAgICAg
ICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3MgPSBbc2VsZiB2aXNpYmxlUG9zaXRpb25Gb3JU
ZXh0TWFya2VyOih0ZXh0TWFya2VyKV07Ci0gICAgICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHZw
UmFuZ2UgPSBtX29iamVjdC0+bGVmdExpbmVWaXNpYmxlUG9zaXRpb25SYW5nZSh2aXNpYmxlUG9z
KTsKLSAgICAgICAgcmV0dXJuIFtzZWxmIHRleHRNYXJrZXJSYW5nZUZyb21WaXNpYmxlUG9zaXRp
b25zOnZwUmFuZ2Uuc3RhcnQgZW5kUG9zaXRpb246dnBSYW5nZS5lbmRdOwotICAgIH0KLQotICAg
IGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYUmlnaHRMaW5lVGV4dE1hcmtlclJh
bmdlRm9yVGV4dE1hcmtlciJdKSB7Ci0gICAgICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9z
ID0gW3NlbGYgdmlzaWJsZVBvc2l0aW9uRm9yVGV4dE1hcmtlcjoodGV4dE1hcmtlcildOwotICAg
ICAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSB2cFJhbmdlID0gbV9vYmplY3QtPnJpZ2h0TGluZVZp
c2libGVQb3NpdGlvblJhbmdlKHZpc2libGVQb3MpOwotICAgICAgICByZXR1cm4gW3NlbGYgdGV4
dE1hcmtlclJhbmdlRnJvbVZpc2libGVQb3NpdGlvbnM6dnBSYW5nZS5zdGFydCBlbmRQb3NpdGlv
bjp2cFJhbmdlLmVuZF07Ci0gICAgfQotCi0gICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3Ry
aW5nOkAiQVhTZW50ZW5jZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIiXSkgewotICAgICAg
ICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvcyA9IFtzZWxmIHZpc2libGVQb3NpdGlvbkZvclRl
eHRNYXJrZXI6KHRleHRNYXJrZXIpXTsKLSAgICAgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgdnBS
YW5nZSA9IG1fb2JqZWN0LT5zZW50ZW5jZUZvclBvc2l0aW9uKHZpc2libGVQb3MpOwotICAgICAg
ICByZXR1cm4gW3NlbGYgdGV4dE1hcmtlclJhbmdlRnJvbVZpc2libGVQb3NpdGlvbnM6dnBSYW5n
ZS5zdGFydCBlbmRQb3NpdGlvbjp2cFJhbmdlLmVuZF07Ci0gICAgfQotCi0gICAgaWYgKFthdHRy
aWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhQYXJhZ3JhcGhUZXh0TWFya2VyUmFuZ2VGb3JUZXh0
TWFya2VyIl0pIHsKLSAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3MgPSBbc2VsZiB2
aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyOih0ZXh0TWFya2VyKV07Ci0gICAgICAgIFZpc2li
bGVQb3NpdGlvblJhbmdlIHZwUmFuZ2UgPSBtX29iamVjdC0+cGFyYWdyYXBoRm9yUG9zaXRpb24o
dmlzaWJsZVBvcyk7Ci0gICAgICAgIHJldHVybiBbc2VsZiB0ZXh0TWFya2VyUmFuZ2VGcm9tVmlz
aWJsZVBvc2l0aW9uczp2cFJhbmdlLnN0YXJ0IGVuZFBvc2l0aW9uOnZwUmFuZ2UuZW5kXTsKLSAg
ICB9Ci0KLSAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWE5leHRXb3JkRW5k
VGV4dE1hcmtlckZvclRleHRNYXJrZXIiXSkgewotICAgICAgICBWaXNpYmxlUG9zaXRpb24gdmlz
aWJsZVBvcyA9IFtzZWxmIHZpc2libGVQb3NpdGlvbkZvclRleHRNYXJrZXI6KHRleHRNYXJrZXIp
XTsKLSAgICAgICAgcmV0dXJuIFtzZWxmIHRleHRNYXJrZXJGb3JWaXNpYmxlUG9zaXRpb246bV9v
YmplY3QtPm5leHRXb3JkRW5kKHZpc2libGVQb3MpXTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKFth
dHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhQcmV2aW91c1dvcmRTdGFydFRleHRNYXJrZXJG
b3JUZXh0TWFya2VyIl0pIHsKLSAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3MgPSBb
c2VsZiB2aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyOih0ZXh0TWFya2VyKV07Ci0gICAgICAg
IHJldHVybiBbc2VsZiB0ZXh0TWFya2VyRm9yVmlzaWJsZVBvc2l0aW9uOm1fb2JqZWN0LT5wcmV2
aW91c1dvcmRTdGFydCh2aXNpYmxlUG9zKV07Ci0gICAgfQotCi0gICAgaWYgKFthdHRyaWJ1dGUg
aXNFcXVhbFRvU3RyaW5nOkAiQVhOZXh0TGluZUVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIl0p
IHsKLSAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3MgPSBbc2VsZiB2aXNpYmxlUG9z
aXRpb25Gb3JUZXh0TWFya2VyOih0ZXh0TWFya2VyKV07Ci0gICAgICAgIHJldHVybiBbc2VsZiB0
ZXh0TWFya2VyRm9yVmlzaWJsZVBvc2l0aW9uOm1fb2JqZWN0LT5uZXh0TGluZUVuZFBvc2l0aW9u
KHZpc2libGVQb3MpXTsKLSAgICB9Ci0KLSAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJp
bmc6QCJBWFByZXZpb3VzTGluZVN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIiXSkgewotICAg
ICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvcyA9IFtzZWxmIHZpc2libGVQb3NpdGlvbkZv
clRleHRNYXJrZXI6KHRleHRNYXJrZXIpXTsKLSAgICAgICAgcmV0dXJuIFtzZWxmIHRleHRNYXJr
ZXJGb3JWaXNpYmxlUG9zaXRpb246bV9vYmplY3QtPnByZXZpb3VzTGluZVN0YXJ0UG9zaXRpb24o
dmlzaWJsZVBvcyldOwotICAgIH0KLQotICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmlu
ZzpAIkFYTmV4dFNlbnRlbmNlRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXIiXSkgewotICAgICAg
ICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvcyA9IFtzZWxmIHZpc2libGVQb3NpdGlvbkZvclRl
eHRNYXJrZXI6KHRleHRNYXJrZXIpXTsKLSAgICAgICAgcmV0dXJuIFtzZWxmIHRleHRNYXJrZXJG
b3JWaXNpYmxlUG9zaXRpb246bV9vYmplY3QtPm5leHRTZW50ZW5jZUVuZFBvc2l0aW9uKHZpc2li
bGVQb3MpXTsKLSAgICB9Ci0KLSAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJB
WFByZXZpb3VzU2VudGVuY2VTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIl0pIHsKLSAgICAg
ICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3MgPSBbc2VsZiB2aXNpYmxlUG9zaXRpb25Gb3JU
ZXh0TWFya2VyOih0ZXh0TWFya2VyKV07Ci0gICAgICAgIHJldHVybiBbc2VsZiB0ZXh0TWFya2Vy
Rm9yVmlzaWJsZVBvc2l0aW9uOm1fb2JqZWN0LT5wcmV2aW91c1NlbnRlbmNlU3RhcnRQb3NpdGlv
bih2aXNpYmxlUG9zKV07Ci0gICAgfQotCi0gICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3Ry
aW5nOkAiQVhOZXh0UGFyYWdyYXBoRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXIiXSkgewotICAg
ICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvcyA9IFtzZWxmIHZpc2libGVQb3NpdGlvbkZv
clRleHRNYXJrZXI6KHRleHRNYXJrZXIpXTsKLSAgICAgICAgcmV0dXJuIFtzZWxmIHRleHRNYXJr
ZXJGb3JWaXNpYmxlUG9zaXRpb246bV9vYmplY3QtPm5leHRQYXJhZ3JhcGhFbmRQb3NpdGlvbih2
aXNpYmxlUG9zKV07Ci0gICAgfQotCi0gICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5n
OkAiQVhQcmV2aW91c1BhcmFncmFwaFN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIiXSkgewot
ICAgICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvcyA9IFtzZWxmIHZpc2libGVQb3NpdGlv
bkZvclRleHRNYXJrZXI6KHRleHRNYXJrZXIpXTsKLSAgICAgICAgcmV0dXJuIFtzZWxmIHRleHRN
YXJrZXJGb3JWaXNpYmxlUG9zaXRpb246bV9vYmplY3QtPnByZXZpb3VzUGFyYWdyYXBoU3RhcnRQ
b3NpdGlvbih2aXNpYmxlUG9zKV07Ci0gICAgfQotCi0gICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVh
bFRvU3RyaW5nOkAiQVhTdHlsZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIiXSkgewotICAg
ICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvcyA9IFtzZWxmIHZpc2libGVQb3NpdGlvbkZv
clRleHRNYXJrZXI6KHRleHRNYXJrZXIpXTsKLSAgICAgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2Ug
dnBSYW5nZSA9IG1fb2JqZWN0LT5zdHlsZVJhbmdlRm9yUG9zaXRpb24odmlzaWJsZVBvcyk7Ci0g
ICAgICAgIHJldHVybiBbc2VsZiB0ZXh0TWFya2VyUmFuZ2VGcm9tVmlzaWJsZVBvc2l0aW9uczp2
cFJhbmdlLnN0YXJ0IGVuZFBvc2l0aW9uOnZwUmFuZ2UuZW5kXTsKLSAgICB9Ci0KLSAgICBpZiAo
W2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWExlbmd0aEZvclRleHRNYXJrZXJSYW5nZSJd
KSB7Ci0gICAgICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHZpc2libGVQb3NSYW5nZSA9IFtzZWxm
IHZpc2libGVQb3NpdGlvblJhbmdlRm9yVGV4dE1hcmtlclJhbmdlOnRleHRNYXJrZXJSYW5nZV07
Ci0gICAgICAgIGludCBsZW5ndGggPSBtX29iamVjdC0+bGVuZ3RoRm9yVmlzaWJsZVBvc2l0aW9u
UmFuZ2UodmlzaWJsZVBvc1JhbmdlKTsKLSAgICAgICAgaWYgKGxlbmd0aCA8IDApCi0gICAgICAg
ICAgICByZXR1cm4gbmlsOwotICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6
bGVuZ3RoXTsKLSAgICB9Ci0KLSAgICAvLyBVc2VkIG9ubHkgYnkgRHVtcFJlbmRlclRyZWUgKHNv
IGZhcikuCi0gICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhTdGFydFRleHRN
YXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UiXSkgewotICAgICAgICBWaXNpYmxlUG9zaXRpb25SYW5n
ZSB2aXNpYmxlUG9zUmFuZ2UgPSBbc2VsZiB2aXNpYmxlUG9zaXRpb25SYW5nZUZvclRleHRNYXJr
ZXJSYW5nZTp0ZXh0TWFya2VyUmFuZ2VdOwotICAgICAgICByZXR1cm4gW3NlbGYgdGV4dE1hcmtl
ckZvclZpc2libGVQb3NpdGlvbjp2aXNpYmxlUG9zUmFuZ2Uuc3RhcnRdOwotICAgIH0KLQotICAg
IGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYRW5kVGV4dE1hcmtlckZvclRleHRN
YXJrZXJSYW5nZSJdKSB7Ci0gICAgICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHZpc2libGVQb3NS
YW5nZSA9IFtzZWxmIHZpc2libGVQb3NpdGlvblJhbmdlRm9yVGV4dE1hcmtlclJhbmdlOnRleHRN
YXJrZXJSYW5nZV07Ci0gICAgICAgIHJldHVybiBbc2VsZiB0ZXh0TWFya2VyRm9yVmlzaWJsZVBv
c2l0aW9uOnZpc2libGVQb3NSYW5nZS5lbmRdOwotICAgIH0KLSAgICAKLSAgICBpZiAobV9vYmpl
Y3QtPmlzQWNjZXNzaWJpbGl0eVRhYmxlKCkpIHsKLSAgICAgICAgaWYgKFthdHRyaWJ1dGUgaXNF
cXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNlbGxGb3JDb2x1bW5BbmRSb3dQYXJhbWV0ZXJp
emVkQXR0cmlidXRlXSkgewotICAgICAgICAgICAgaWYgKGFycmF5ID09IG5pbCB8fCBbYXJyYXkg
Y291bnRdICE9IDIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAgICAgICAgIEFj
Y2Vzc2liaWxpdHlUYWJsZUNlbGwqIGNlbGwgPSBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5VGFi
bGUqPihtX29iamVjdCktPmNlbGxGb3JDb2x1bW5BbmRSb3coW1thcnJheSBvYmplY3RBdEluZGV4
OjBdIHVuc2lnbmVkSW50VmFsdWVdLCBbW2FycmF5IG9iamVjdEF0SW5kZXg6MV0gdW5zaWduZWRJ
bnRWYWx1ZV0pOwotICAgICAgICAgICAgaWYgKCFjZWxsKQotICAgICAgICAgICAgICAgIHJldHVy
biBuaWw7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHJldHVybiBjZWxsLT53cmFwcGVyKCk7
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAobV9vYmplY3QtPmlzVGV4dENvbnRyb2woKSkg
ewotICAgICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6IChOU1N0cmluZyAqKWtB
WExpbmVGb3JJbmRleFBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVdKSB7Ci0gICAgICAgICAgICBpbnQg
bGluZU51bWJlciA9IG1fb2JqZWN0LT5kb0FYTGluZUZvckluZGV4KFtudW1iZXIgaW50VmFsdWVd
KTsKLSAgICAgICAgICAgIGlmIChsaW5lTnVtYmVyIDwgMCkKLSAgICAgICAgICAgICAgICByZXR1
cm4gbmlsOwotICAgICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJ
bnQ6bGluZU51bWJlcl07Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoW2F0dHJpYnV0ZSBpc0Vx
dWFsVG9TdHJpbmc6IChOU1N0cmluZyAqKWtBWFJhbmdlRm9yTGluZVBhcmFtZXRlcml6ZWRBdHRy
aWJ1dGVdKSB7Ci0gICAgICAgICAgICBQbGFpblRleHRSYW5nZSB0ZXh0UmFuZ2UgPSBtX29iamVj
dC0+ZG9BWFJhbmdlRm9yTGluZShbbnVtYmVyIGludFZhbHVlXSk7Ci0gICAgICAgICAgICByZXR1
cm4gW05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6IE5TTWFrZVJhbmdlKHRleHRSYW5nZS5zdGFydCwg
dGV4dFJhbmdlLmxlbmd0aCldOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKFthdHRyaWJ1dGUg
aXNFcXVhbFRvU3RyaW5nOiAoTlNTdHJpbmcqKWtBWFN0cmluZ0ZvclJhbmdlUGFyYW1ldGVyaXpl
ZEF0dHJpYnV0ZV0pIHsKLSAgICAgICAgICAgIFBsYWluVGV4dFJhbmdlIHBsYWluVGV4dFJhbmdl
ID0gUGxhaW5UZXh0UmFuZ2UocmFuZ2UubG9jYXRpb24sIHJhbmdlLmxlbmd0aCk7Ci0gICAgICAg
ICAgICByZXR1cm4gcmFuZ2VTZXQgPyAoaWQpKG1fb2JqZWN0LT5kb0FYU3RyaW5nRm9yUmFuZ2Uo
cGxhaW5UZXh0UmFuZ2UpKSA6IG5pbDsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChbYXR0cmli
dXRlIGlzRXF1YWxUb1N0cmluZzogKE5TU3RyaW5nKilrQVhSYW5nZUZvclBvc2l0aW9uUGFyYW1l
dGVyaXplZEF0dHJpYnV0ZV0pIHsKLSAgICAgICAgICAgIGlmICghcG9pbnRTZXQpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAgICAgICAgIEludFBvaW50IHdlYkNvcmVQb2ludCA9
IEludFBvaW50KHBvaW50KTsKLSAgICAgICAgICAgIFBsYWluVGV4dFJhbmdlIHRleHRSYW5nZSA9
IG1fb2JqZWN0LT5kb0FYUmFuZ2VGb3JQb3NpdGlvbih3ZWJDb3JlUG9pbnQpOwotICAgICAgICAg
ICAgcmV0dXJuIFtOU1ZhbHVlIHZhbHVlV2l0aFJhbmdlOiBOU01ha2VSYW5nZSh0ZXh0UmFuZ2Uu
c3RhcnQsIHRleHRSYW5nZS5sZW5ndGgpXTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChbYXR0
cmlidXRlIGlzRXF1YWxUb1N0cmluZzogKE5TU3RyaW5nKilrQVhSYW5nZUZvckluZGV4UGFyYW1l
dGVyaXplZEF0dHJpYnV0ZV0pIHsKLSAgICAgICAgICAgIFBsYWluVGV4dFJhbmdlIHRleHRSYW5n
ZSA9IG1fb2JqZWN0LT5kb0FYUmFuZ2VGb3JJbmRleChbbnVtYmVyIGludFZhbHVlXSk7Ci0gICAg
ICAgICAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6IE5TTWFrZVJhbmdlKHRleHRS
YW5nZS5zdGFydCwgdGV4dFJhbmdlLmxlbmd0aCldOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYg
KFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOiAoTlNTdHJpbmcqKWtBWEJvdW5kc0ZvclJhbmdl
UGFyYW1ldGVyaXplZEF0dHJpYnV0ZV0pIHsKLSAgICAgICAgICAgIGlmICghcmFuZ2VTZXQpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAgICAgICAgIFBsYWluVGV4dFJhbmdlIHBs
YWluVGV4dFJhbmdlID0gUGxhaW5UZXh0UmFuZ2UocmFuZ2UubG9jYXRpb24sIHJhbmdlLmxlbmd0
aCk7Ci0gICAgICAgICAgICBOU1JlY3QgcmVjdCA9IG1fb2JqZWN0LT5kb0FYQm91bmRzRm9yUmFu
Z2UocGxhaW5UZXh0UmFuZ2UpOwotICAgICAgICAgICAgcmV0dXJuIFtOU1ZhbHVlIHZhbHVlV2l0
aFJlY3Q6cmVjdF07Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFs
VG9TdHJpbmc6IChOU1N0cmluZyopa0FYUlRGRm9yUmFuZ2VQYXJhbWV0ZXJpemVkQXR0cmlidXRl
XSkKLSAgICAgICAgICAgIHJldHVybiByYW5nZVNldCA/IFtzZWxmIGRvQVhSVEZGb3JSYW5nZTpy
YW5nZV0gOiBuaWw7Ci0KLSAgICAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOiAo
TlNTdHJpbmcqKWtBWEF0dHJpYnV0ZWRTdHJpbmdGb3JSYW5nZVBhcmFtZXRlcml6ZWRBdHRyaWJ1
dGVdKQotICAgICAgICAgICAgcmV0dXJuIHJhbmdlU2V0ID8gW3NlbGYgZG9BWEF0dHJpYnV0ZWRT
dHJpbmdGb3JSYW5nZTpyYW5nZV0gOiBuaWw7Ci0KLSAgICAgICAgaWYgKFthdHRyaWJ1dGUgaXNF
cXVhbFRvU3RyaW5nOiAoTlNTdHJpbmcqKWtBWFN0eWxlUmFuZ2VGb3JJbmRleFBhcmFtZXRlcml6
ZWRBdHRyaWJ1dGVdKSB7Ci0gICAgICAgICAgICBQbGFpblRleHRSYW5nZSB0ZXh0UmFuZ2UgPSBt
X29iamVjdC0+ZG9BWFN0eWxlUmFuZ2VGb3JJbmRleChbbnVtYmVyIGludFZhbHVlXSk7Ci0gICAg
ICAgICAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6IE5TTWFrZVJhbmdlKHRleHRS
YW5nZS5zdGFydCwgdGV4dFJhbmdlLmxlbmd0aCldOwotICAgICAgICB9Ci0gICAgfQotCi0gICAg
Ly8gVGhlcmUgYXJlIHNvbWUgcGFyYW1ldGVycyB0aGF0IHN1cGVyIGhhbmRsZXMgdGhhdCBhcmUg
bm90IGV4cGxpY2l0bHkgcmV0dXJuZWQgYnkgdGhlIGxpc3Qgb2YgdGhlIGVsZW1lbnQncyBhdHRy
aWJ1dGVzLgotICAgIC8vIEluIHRoYXQgY2FzZSBpdCBtdXN0IGJlIHBhc3NlZCB0byBzdXBlci4g
Ci0gICAgcmV0dXJuIFtzdXBlciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6YXR0cmlidXRl
IGZvclBhcmFtZXRlcjpwYXJhbWV0ZXJdOwotfQotCi0tIChCT09MKWFjY2Vzc2liaWxpdHlTdXBw
b3J0c092ZXJyaWRkZW5BdHRyaWJ1dGVzCi17Ci0gICAgcmV0dXJuIFlFUzsKLX0KLQotLSAoQk9P
TClhY2Nlc3NpYmlsaXR5U2hvdWxkVXNlVW5pcXVlSWQKLXsKLSAgICAvLyBBbGwgQVggb2JqZWN0
IHdyYXBwZXJzIHNob3VsZCB1c2UgdW5pcXVlIElEJ3MgYmVjYXVzZSBpdCdzIGZhc3RlciB3aXRo
aW4gQXBwS2l0IHRvIGxvb2sgdGhlbSB1cC4KLSAgICByZXR1cm4gWUVTOwotfQotCi0vLyBBUEkg
dGhhdCBBcHBLaXQgdXNlcyBmb3IgZmFzdGVyIGFjY2VzcwotLSAoTlNVSW50ZWdlcilhY2Nlc3Np
YmlsaXR5SW5kZXhPZkNoaWxkOihpZCljaGlsZAotewotICAgIGlmICghW3NlbGYgdXBkYXRlT2Jq
ZWN0QmFja2luZ1N0b3JlXSkKLSAgICAgICAgcmV0dXJuIE5TTm90Rm91bmQ7Ci0gICAgCi0gICAg
Ly8gVHJlZSBvYmplY3RzIHJldHVybiB0aGVpciByb3dzIGFzIHRoZWlyIGNoaWxkcmVuLiBXZSBj
YW4gdXNlIHRoZSBvcmlnaW5hbCBtZXRob2QKLSAgICAvLyBoZXJlLCBiZWNhdXNlIHdlIHdvbid0
IGdhaW4gYW55IHNwZWVkIHVwLgotICAgIGlmIChtX29iamVjdC0+aXNUcmVlKCkpCi0gICAgICAg
IHJldHVybiBbc3VwZXIgYWNjZXNzaWJpbGl0eUluZGV4T2ZDaGlsZDpjaGlsZF07Ci0gICAgICAg
Ci0gICAgY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yJiBjaGlsZHJlbiA9IG1fb2JqZWN0LT5jaGlsZHJlbigpOwotICAgICAgIAotICAgIGlmIChj
aGlsZHJlbi5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBbW3NlbGYgcmVuZGVyV2lkZ2V0Q2hp
bGRyZW5dIGluZGV4T2ZPYmplY3Q6Y2hpbGRdOwotICAgIAotICAgIHVuc2lnbmVkIGNvdW50ID0g
Y2hpbGRyZW4uc2l6ZSgpOwotICAgIGZvciAodW5zaWduZWQgayA9IDA7IGsgPCBjb3VudDsgKytr
KSB7Ci0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKiB3cmFwcGVyID0gY2hpbGRy
ZW5ba10tPndyYXBwZXIoKTsKLSAgICAgICAgaWYgKHdyYXBwZXIgPT0gY2hpbGQgfHwgKGNoaWxk
cmVuW2tdLT5pc0F0dGFjaG1lbnQoKSAmJiBbd3JhcHBlciBhdHRhY2htZW50Vmlld10gPT0gY2hp
bGQpKSAKLSAgICAgICAgICAgIHJldHVybiBrOwotICAgIH0KLQotICAgIHJldHVybiBOU05vdEZv
dW5kOwotfQotCi0tIChOU1VJbnRlZ2VyKWFjY2Vzc2liaWxpdHlBcnJheUF0dHJpYnV0ZUNvdW50
OihOU1N0cmluZyAqKWF0dHJpYnV0ZQotewotICAgIGlmICghW3NlbGYgdXBkYXRlT2JqZWN0QmFj
a2luZ1N0b3JlXSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgaWYgKFthdHRyaWJ1dGUg
aXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlXSkgewotICAg
ICAgICAvLyBUcmVlIGl0ZW1zIG9iamVjdCByZXR1cm5zIGEgZGlmZmVyZW50IHNldCBvZiBjaGls
ZHJlbiB0aGFuIHRob3NlIHRoYXQgYXJlIGluIGNoaWxkcmVuKCkKLSAgICAgICAgLy8gYmVjYXVz
ZSBhbiBBWE91dGxpbmUgKHRoZSBtYWMgcm9sZSBpcyBiZWNvbWVzKSBoYXMgc29tZSBvZGQgc3Rp
cHVsYXRpb25zLgotICAgICAgICBpZiAobV9vYmplY3QtPmlzVHJlZSgpIHx8IG1fb2JqZWN0LT5p
c1RyZWVJdGVtKCkpCi0gICAgICAgICAgICByZXR1cm4gW1tzZWxmIGFjY2Vzc2liaWxpdHlBdHRy
aWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZV0gY291bnRdOwotICAg
ICAgICAKLSAgICAgICAgY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNo
aWxkcmVuVmVjdG9yJiBjaGlsZHJlbiA9IG1fb2JqZWN0LT5jaGlsZHJlbigpOwotICAgICAgICBp
ZiAoY2hpbGRyZW4uaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIFtbc2VsZiByZW5kZXJX
aWRnZXRDaGlsZHJlbl0gY291bnRdOwotICAgICAgICAKLSAgICAgICAgcmV0dXJuIGNoaWxkcmVu
LnNpemUoKTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIFtzdXBlciBhY2Nlc3NpYmlsaXR5QXJy
YXlBdHRyaWJ1dGVDb3VudDphdHRyaWJ1dGVdOwotfQotCi0tIChOU0FycmF5ICopYWNjZXNzaWJp
bGl0eUFycmF5QXR0cmlidXRlVmFsdWVzOihOU1N0cmluZyAqKWF0dHJpYnV0ZSBpbmRleDooTlNV
SW50ZWdlcilpbmRleCBtYXhDb3VudDooTlNVSW50ZWdlciltYXhDb3VudCAKLXsKLSAgICBpZiAo
IVtzZWxmIHVwZGF0ZU9iamVjdEJhY2tpbmdTdG9yZV0pCi0gICAgICAgIHJldHVybiBuaWw7Ci0g
ICAgCi0gICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNo
aWxkcmVuQXR0cmlidXRlXSkgewotICAgICAgICBpZiAobV9vYmplY3QtPmNoaWxkcmVuKCkuaXNF
bXB0eSgpKSB7Ci0gICAgICAgICAgICBOU0FycmF5ICpjaGlsZHJlbiA9IFtzZWxmIHJlbmRlcldp
ZGdldENoaWxkcmVuXTsKLSAgICAgICAgICAgIGlmICghY2hpbGRyZW4pIAotICAgICAgICAgICAg
ICAgIHJldHVybiBuaWw7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIE5TVUludGVnZXIgY2hp
bGRDb3VudCA9IFtjaGlsZHJlbiBjb3VudF07Ci0gICAgICAgICAgICBpZiAoaW5kZXggPj0gY2hp
bGRDb3VudCkKLSAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwotICAgICAgICAgICAgCi0gICAg
ICAgICAgICBOU1VJbnRlZ2VyIGFycmF5TGVuZ3RoID0gbWluKGNoaWxkQ291bnQgLSBpbmRleCwg
bWF4Q291bnQpOwotICAgICAgICAgICAgcmV0dXJuIFtjaGlsZHJlbiBzdWJhcnJheVdpdGhSYW5n
ZTpOU01ha2VSYW5nZShpbmRleCwgYXJyYXlMZW5ndGgpXTsKLSAgICAgICAgfSBlbHNlIGlmICht
X29iamVjdC0+aXNUcmVlKCkpIHsKLSAgICAgICAgICAgIC8vIFRyZWUgb2JqZWN0cyByZXR1cm4g
dGhlaXIgcm93cyBhcyB0aGVpciBjaGlsZHJlbi4gV2UgY2FuIHVzZSB0aGUgb3JpZ2luYWwgbWV0
aG9kIGluIHRoaXMgY2FzZS4KLSAgICAgICAgICAgIHJldHVybiBbc3VwZXIgYWNjZXNzaWJpbGl0
eUFycmF5QXR0cmlidXRlVmFsdWVzOmF0dHJpYnV0ZSBpbmRleDppbmRleCBtYXhDb3VudDptYXhD
b3VudF07Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGNvbnN0IEFjY2Vzc2liaWxpdHlP
YmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY2hpbGRyZW4gPSBtX29iamVjdC0+
Y2hpbGRyZW4oKTsKLSAgICAgICAgdW5zaWduZWQgY2hpbGRDb3VudCA9IGNoaWxkcmVuLnNpemUo
KTsKLSAgICAgICAgaWYgKGluZGV4ID49IGNoaWxkQ291bnQpCi0gICAgICAgICAgICByZXR1cm4g
bmlsOwotICAgICAgICAKLSAgICAgICAgdW5zaWduZWQgYXZhaWxhYmxlID0gbWluKGNoaWxkQ291
bnQgLSBpbmRleCwgbWF4Q291bnQpOwotICAgICAgICAKLSAgICAgICAgTlNNdXRhYmxlQXJyYXkg
KnN1YmFycmF5ID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OmF2YWlsYWJsZV07
Ci0gICAgICAgIGZvciAodW5zaWduZWQgYWRkZWQgPSAwOyBhZGRlZCA8IGF2YWlsYWJsZTsgKytp
bmRleCwgKythZGRlZCkgewotICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIq
IHdyYXBwZXIgPSBjaGlsZHJlbltpbmRleF0tPndyYXBwZXIoKTsKLSAgICAgICAgICAgIGlmICh3
cmFwcGVyKSB7Ci0gICAgICAgICAgICAgICAgLy8gVGhlIGF0dGFjaG1lbnQgdmlldyBzaG91bGQg
YmUgcmV0dXJuZWQsIG90aGVyd2lzZSBBWCBwYWxpbmRyb21lIGVycm9ycyBvY2N1ci4KLSAgICAg
ICAgICAgICAgICBpZiAoY2hpbGRyZW5baW5kZXhdLT5pc0F0dGFjaG1lbnQoKSAmJiBbd3JhcHBl
ciBhdHRhY2htZW50Vmlld10pCi0gICAgICAgICAgICAgICAgICAgIFtzdWJhcnJheSBhZGRPYmpl
Y3Q6W3dyYXBwZXIgYXR0YWNobWVudFZpZXddXTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgICAgIFtzdWJhcnJheSBhZGRPYmplY3Q6d3JhcHBlcl07Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHJldHVybiBzdWJhcnJheTsKLSAgICB9
Ci0gICAgCi0gICAgcmV0dXJuIFtzdXBlciBhY2Nlc3NpYmlsaXR5QXJyYXlBdHRyaWJ1dGVWYWx1
ZXM6YXR0cmlidXRlIGluZGV4OmluZGV4IG1heENvdW50Om1heENvdW50XTsKLX0KLQotLy8gVGhp
cyBpcyBzZXQgYnkgRFJUIHdoZW4gaXQgd2FudHMgdG8gbGlzdGVuIGZvciBub3RpZmljYXRpb25z
Lgotc3RhdGljIEJPT0wgYWNjZXNzaWJpbGl0eVNob3VsZFJlcG9zdE5vdGlmaWNhdGlvbnM7Ci0t
ICh2b2lkKWFjY2Vzc2liaWxpdHlTZXRTaG91bGRSZXBvc3ROb3RpZmljYXRpb25zOihCT09MKXJl
cG9zdAotewotICAgIGFjY2Vzc2liaWxpdHlTaG91bGRSZXBvc3ROb3RpZmljYXRpb25zID0gcmVw
b3N0OwotfQotCi0tICh2b2lkKWFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246KE5TU3Ry
aW5nICopbm90aWZpY2F0aW9uTmFtZQotewotICAgIGlmIChhY2Nlc3NpYmlsaXR5U2hvdWxkUmVw
b3N0Tm90aWZpY2F0aW9ucykgewotICAgICAgICBOU0RpY3Rpb25hcnkqIHVzZXJJbmZvID0gW05T
RGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOm5vdGlmaWNhdGlvbk5hbWUs
IEAibm90aWZpY2F0aW9uTmFtZSIsIG5pbF07Ci0gICAgICAgIFtbTlNOb3RpZmljYXRpb25DZW50
ZXIgZGVmYXVsdENlbnRlcl0gcG9zdE5vdGlmaWNhdGlvbk5hbWU6QCJBWERSVE5vdGlmaWNhdGlv
biIgb2JqZWN0Om5pbCB1c2VySW5mbzp1c2VySW5mb107Ci0gICAgfQotfQotCi1AZW5kCi0KLSNl
bmRpZiAvLyBIQVZFKEFDQ0VTU0lCSUxJVFkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyLmgJKHJldmlzaW9uIDk1Mzk0KQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5oOjk1Mzk0KQorKysgU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMu
ICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3Ig
dGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyX2gKKyNkZWZpbmUgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJfaAorCituYW1l
c3BhY2UgV2ViQ29yZSB7CitjbGFzcyBBY2Nlc3NpYmlsaXR5T2JqZWN0OworY2xhc3MgVmlzaWJs
ZVBvc2l0aW9uOworfQorCitAaW50ZXJmYWNlIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIDog
TlNPYmplY3QgeworICAgIFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3QqIG1fb2JqZWN0Owor
fQorIAorLSAoaWQpaW5pdFdpdGhBY2Nlc3NpYmlsaXR5T2JqZWN0OihXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0KilheE9iamVjdDsKKy0gKHZvaWQpZGV0YWNoOworLSAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eU9iamVjdCopYWNjZXNzaWJpbGl0eU9iamVjdDsKKworLy8gVXNlZCB0byBpbmZv
cm0gYW4gZWxlbWVudCB3aGVuIGEgbm90aWZpY2F0aW9uIGlzIHBvc3RlZCBmb3IgaXQuIFVzZWQg
YnkgRFJULgorLSAodm9pZClhY2Nlc3NpYmlsaXR5UG9zdGVkTm90aWZpY2F0aW9uOihOU1N0cmlu
ZyAqKW5vdGlmaWNhdGlvbk5hbWU7CisKKy0gKE5TVmlldyopYXR0YWNobWVudFZpZXc7CisKK0Bl
bmQKKworI2VuZGlmIC8vIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyX2gKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIuaAkocmV2aXNpb24gOTUzOTQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiwxNSArMjYsMTUgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lm
bmRlZiBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcl9oCi0jZGVmaW5lIEFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyX2gKKyNpZm5kZWYgV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJfaAor
I2RlZmluZSBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcl9oCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIEFjY2Vzc2liaWxpdHlPYmplY3Q7CiBjbGFzcyBWaXNpYmxlUG9zaXRpb247
CiB9CiAKLUBpbnRlcmZhY2UgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgOiBOU09iamVjdCB7
CitAaW50ZXJmYWNlIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIDogTlNPYmplY3Qgewog
ICAgIFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3QqIG1fb2JqZWN0OwogfQogIApAQCAtNDks
NCArNDksNCBAQCBAaW50ZXJmYWNlIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIDogCiAKIEBl
bmQKIAotI2VuZGlmIC8vIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyX2gKKyNlbmRpZiAvLyBX
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcl9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlci5tbQkocmV2aXNpb24gOTUzOTQpCShmcm9tIFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tOjk1Mzk0KQorKysgU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMTc2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENv
bXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICog
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
LmgiCisKKyNpZiBIQVZFKEFDQ0VTU0lCSUxJVFkpCisKKyNpbXBvcnQgIkFYT2JqZWN0Q2FjaGUu
aCIKKyNpbXBvcnQgIkFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5oIgorI2ltcG9ydCAiQWNjZXNz
aWJpbGl0eUxpc3QuaCIKKyNpbXBvcnQgIkFjY2Vzc2liaWxpdHlMaXN0Qm94LmgiCisjaW1wb3J0
ICJBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgiCisjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5U2Ny
b2xsVmlldy5oIgorI2ltcG9ydCAiQWNjZXNzaWJpbGl0eVRhYmxlLmgiCisjaW1wb3J0ICJBY2Nl
c3NpYmlsaXR5VGFibGVDZWxsLmgiCisjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5VGFibGVDb2x1bW4u
aCIKKyNpbXBvcnQgIkFjY2Vzc2liaWxpdHlUYWJsZVJvdy5oIgorI2ltcG9ydCAiQ2hyb21lLmgi
CisjaW1wb3J0ICJDb2xvck1hYy5oIgorI2ltcG9ydCAiRnJhbWUuaCIKKyNpbXBvcnQgIkZyYW1l
TG9hZGVyQ2xpZW50LmgiCisjaW1wb3J0ICJGcmFtZVNlbGVjdGlvbi5oIgorI2ltcG9ydCAiSFRN
TEFuY2hvckVsZW1lbnQuaCIKKyNpbXBvcnQgIkhUTUxBcmVhRWxlbWVudC5oIgorI2ltcG9ydCAi
SFRNTEZyYW1lT3duZXJFbGVtZW50LmgiCisjaW1wb3J0ICJIVE1MSW1hZ2VFbGVtZW50LmgiCisj
aW1wb3J0ICJIVE1MSW5wdXRFbGVtZW50LmgiCisjaW1wb3J0ICJIVE1MTmFtZXMuaCIKKyNpbXBv
cnQgIkhUTUxUZXh0QXJlYUVsZW1lbnQuaCIKKyNpbXBvcnQgIkxvY2FsaXplZFN0cmluZ3MuaCIK
KyNpbXBvcnQgIlBhZ2UuaCIKKyNpbXBvcnQgIlJlbmRlclRleHRDb250cm9sLmgiCisjaW1wb3J0
ICJSZW5kZXJWaWV3LmgiCisjaW1wb3J0ICJSZW5kZXJXaWRnZXQuaCIKKyNpbXBvcnQgIlNjcm9s
bFZpZXcuaCIKKyNpbXBvcnQgIlNpbXBsZUZvbnREYXRhLmgiCisjaW1wb3J0ICJUZXh0Q2hlY2tl
ckNsaWVudC5oIgorI2ltcG9ydCAiVGV4dEl0ZXJhdG9yLmgiCisjaW1wb3J0ICJXZWJDb3JlRnJh
bWVWaWV3LmgiCisjaW1wb3J0ICJXZWJDb3JlT2JqQ0V4dHJhcy5oIgorI2ltcG9ydCAiV2ViQ29y
ZVN5c3RlbUludGVyZmFjZS5oIgorI2ltcG9ydCAiaHRtbGVkaXRpbmcuaCIKKyNpbXBvcnQgInZp
c2libGVfdW5pdHMuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3Bh
Y2UgSFRNTE5hbWVzOwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKworLy8gQ2VsbCBUYWJsZXMKKyNp
Zm5kZWYgTlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRDZWxsc0F0dHJpYnV0ZQorI2RlZmluZSBOU0Fj
Y2Vzc2liaWxpdHlTZWxlY3RlZENlbGxzQXR0cmlidXRlIEAiQVhTZWxlY3RlZENlbGxzIgorI2Vu
ZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5VmlzaWJsZUNlbGxzQXR0cmlidXRlCisjZGVm
aW5lIE5TQWNjZXNzaWJpbGl0eVZpc2libGVDZWxsc0F0dHJpYnV0ZSBAIkFYVmlzaWJsZUNlbGxz
IgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5Um93SGVhZGVyVUlFbGVtZW50c0F0
dHJpYnV0ZQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlSb3dIZWFkZXJVSUVsZW1lbnRzQXR0cmli
dXRlIEAiQVhSb3dIZWFkZXJVSUVsZW1lbnRzIgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3Np
YmlsaXR5Um93SW5kZXhSYW5nZUF0dHJpYnV0ZQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlSb3dJ
bmRleFJhbmdlQXR0cmlidXRlIEAiQVhSb3dJbmRleFJhbmdlIgorI2VuZGlmCisKKyNpZm5kZWYg
TlNBY2Nlc3NpYmlsaXR5Q29sdW1uSW5kZXhSYW5nZUF0dHJpYnV0ZQorI2RlZmluZSBOU0FjY2Vz
c2liaWxpdHlDb2x1bW5JbmRleFJhbmdlQXR0cmlidXRlIEAiQVhDb2x1bW5JbmRleFJhbmdlIgor
I2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5Q2VsbEZvckNvbHVtbkFuZFJvd1BhcmFt
ZXRlcml6ZWRBdHRyaWJ1dGUKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5Q2VsbEZvckNvbHVtbkFu
ZFJvd1BhcmFtZXRlcml6ZWRBdHRyaWJ1dGUgQCJBWENlbGxGb3JDb2x1bW5BbmRSb3ciCisjZW5k
aWYKKworI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlDZWxsUm9sZQorI2RlZmluZSBOU0FjY2Vzc2li
aWxpdHlDZWxsUm9sZSBAIkFYQ2VsbCIKKyNlbmRpZgorCisvLyBMaXN0cworI2lmbmRlZiBOU0Fj
Y2Vzc2liaWxpdHlDb250ZW50TGlzdFN1YnJvbGUKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5Q29u
dGVudExpc3RTdWJyb2xlIEAiQVhDb250ZW50TGlzdCIKKyNlbmRpZgorCisjaWZuZGVmIE5TQWNj
ZXNzaWJpbGl0eURlZmluaXRpb25MaXN0U3Vicm9sZQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlE
ZWZpbml0aW9uTGlzdFN1YnJvbGUgQCJBWERlZmluaXRpb25MaXN0IgorI2VuZGlmCisKKy8vIE1p
c2NlbGxhbmVvdXMKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5QmxvY2tRdW90ZUxldmVsQXR0cmli
dXRlCisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUJsb2NrUXVvdGVMZXZlbEF0dHJpYnV0ZSBAIkFY
QmxvY2tRdW90ZUxldmVsIgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5QWNjZXNz
S2V5QXR0cmlidXRlCisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUFjY2Vzc0tleUF0dHJpYnV0ZSBA
IkFYQWNjZXNzS2V5IgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5TGFuZ3VhZ2VB
dHRyaWJ1dGUKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5TGFuZ3VhZ2VBdHRyaWJ1dGUgQCJBWExh
bmd1YWdlIgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5UmVxdWlyZWRBdHRyaWJ1
dGUKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5UmVxdWlyZWRBdHRyaWJ1dGUgQCJBWFJlcXVpcmVk
IgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5SW52YWxpZEF0dHJpYnV0ZQorI2Rl
ZmluZSBOU0FjY2Vzc2liaWxpdHlJbnZhbGlkQXR0cmlidXRlIEAiQVhJbnZhbGlkIgorI2VuZGlm
CisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5T3duc0F0dHJpYnV0ZQorI2RlZmluZSBOU0FjY2Vz
c2liaWxpdHlPd25zQXR0cmlidXRlIEAiQVhPd25zIgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nl
c3NpYmlsaXR5R3JhYmJlZEF0dHJpYnV0ZQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlHcmFiYmVk
QXR0cmlidXRlIEAiQVhHcmFiYmVkIgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5
RHJvcEVmZmVjdHNBdHRyaWJ1dGUKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5RHJvcEVmZmVjdHNB
dHRyaWJ1dGUgQCJBWERyb3BFZmZlY3RzIgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmls
aXR5QVJJQUxpdmVBdHRyaWJ1dGUKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5QVJJQUxpdmVBdHRy
aWJ1dGUgQCJBWEFSSUFMaXZlIgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5QVJJ
QUF0b21pY0F0dHJpYnV0ZQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlBUklBQXRvbWljQXR0cmli
dXRlIEAiQVhBUklBQXRvbWljIgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5QVJJ
QVJlbGV2YW50QXR0cmlidXRlCisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUFSSUFSZWxldmFudEF0
dHJpYnV0ZSBAIkFYQVJJQVJlbGV2YW50IgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmls
aXR5QVJJQUJ1c3lBdHRyaWJ1dGUKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5QVJJQUJ1c3lBdHRy
aWJ1dGUgQCJBWEFSSUFCdXN5IgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3NpYmlsaXR5TG9h
ZGluZ1Byb2dyZXNzQXR0cmlidXRlCisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUxvYWRpbmdQcm9n
cmVzc0F0dHJpYnV0ZSBAIkFYTG9hZGluZ1Byb2dyZXNzIgorI2VuZGlmCisKKyNpZm5kZWYgTlNB
Y2Nlc3NpYmlsaXR5SGFzUG9wdXBBdHRyaWJ1dGUKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5SGFz
UG9wdXBBdHRyaWJ1dGUgQCJBWEhhc1BvcHVwIgorI2VuZGlmCisKKyNpZm5kZWYgTlNBY2Nlc3Np
YmlsaXR5UGxhY2Vob2xkZXJWYWx1ZUF0dHJpYnV0ZQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlQ
bGFjZWhvbGRlclZhbHVlQXR0cmlidXRlIEAiQVhQbGFjZWhvbGRlclZhbHVlIgorI2VuZGlmCisK
Ky8vIFNlYXJjaAorI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRzRm9yU2VhcmNoUHJl
ZGljYXRlUGFyYW1ldGVyaXplZEF0dHJpYnV0ZQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnRzRm9yU2VhcmNoUHJlZGljYXRlUGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBAIkFYVUlFbGVt
ZW50c0ZvclNlYXJjaFByZWRpY2F0ZSIKKyNlbmRpZgorCisvLyBTZWFyY2ggS2V5cworI2lmbmRl
ZiBOU0FjY2Vzc2liaWxpdHlBbnlUeXBlU2VhcmNoS2V5CisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0
eUFueVR5cGVTZWFyY2hLZXkgQCJBWEFueVR5cGVTZWFyY2hLZXkiCisjZW5kaWYKKworI2lmbmRl
ZiBOU0FjY2Vzc2liaWxpdHlCbG9ja3F1b3RlU2FtZUxldmVsU2VhcmNoS2V5CisjZGVmaW5lIE5T
QWNjZXNzaWJpbGl0eUJsb2NrcXVvdGVTYW1lTGV2ZWxTZWFyY2hLZXkgQCJBWEJsb2NrcXVvdGVT
YW1lTGV2ZWxTZWFyY2hLZXkiCisjZW5kaWYKKworI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlCbG9j
a3F1b3RlU2VhcmNoS2V5CisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUJsb2NrcXVvdGVTZWFyY2hL
ZXkgQCJBWEJsb2NrcXVvdGVTZWFyY2hLZXkiCisjZW5kaWYKKworI2lmbmRlZiBOU0FjY2Vzc2li
aWxpdHlCb2xkRm9udFNlYXJjaEtleQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlCb2xkRm9udFNl
YXJjaEtleSBAIkFYQm9sZEZvbnRTZWFyY2hLZXkiCisjZW5kaWYKKworI2lmbmRlZiBOU0FjY2Vz
c2liaWxpdHlCdXR0b25TZWFyY2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5QnV0dG9uU2Vh
cmNoS2V5IEAiQVhCdXR0b25TZWFyY2hLZXkiCisjZW5kaWYKKworI2lmbmRlZiBOU0FjY2Vzc2li
aWxpdHlDaGVja0JveFNlYXJjaEtleQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlDaGVja0JveFNl
YXJjaEtleSBAIkFYQ2hlY2tCb3hTZWFyY2hLZXkiCisjZW5kaWYKKworI2lmbmRlZiBOU0FjY2Vz
c2liaWxpdHlDb250cm9sU2VhcmNoS2V5CisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUNvbnRyb2xT
ZWFyY2hLZXkgQCJBWENvbnRyb2xTZWFyY2hLZXkiCisjZW5kaWYKKworI2lmbmRlZiBOU0FjY2Vz
c2liaWxpdHlEaWZmZXJlbnRUeXBlU2VhcmNoS2V5CisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eURp
ZmZlcmVudFR5cGVTZWFyY2hLZXkgQCJBWERpZmZlcmVudFR5cGVTZWFyY2hLZXkiCisjZW5kaWYK
KworI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlGb250Q2hhbmdlU2VhcmNoS2V5CisjZGVmaW5lIE5T
QWNjZXNzaWJpbGl0eUZvbnRDaGFuZ2VTZWFyY2hLZXkgQCJBWEZvbnRDaGFuZ2VTZWFyY2hLZXki
CisjZW5kaWYKKworI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlGb250Q29sb3JDaGFuZ2VTZWFyY2hL
ZXkKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5Rm9udENvbG9yQ2hhbmdlU2VhcmNoS2V5IEAiQVhG
b250Q29sb3JDaGFuZ2VTZWFyY2hLZXkiCisjZW5kaWYKKworI2lmbmRlZiBOU0FjY2Vzc2liaWxp
dHlGcmFtZVNlYXJjaEtleQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlGcmFtZVNlYXJjaEtleSBA
IkFYRnJhbWVTZWFyY2hLZXkiCisjZW5kaWYKKworI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlHcmFw
aGljU2VhcmNoS2V5CisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUdyYXBoaWNTZWFyY2hLZXkgQCJB
WEdyYXBoaWNTZWFyY2hLZXkiCisjZW5kaWYKKworI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlIZWFk
aW5nTGV2ZWwxU2VhcmNoS2V5CisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdMZXZlbDFT
ZWFyY2hLZXkgQCJBWEhlYWRpbmdMZXZlbDFTZWFyY2hLZXkiCisjZW5kaWYKKworI2lmbmRlZiBO
U0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWwyU2VhcmNoS2V5CisjZGVmaW5lIE5TQWNjZXNzaWJp
bGl0eUhlYWRpbmdMZXZlbDJTZWFyY2hLZXkgQCJBWEhlYWRpbmdMZXZlbDJTZWFyY2hLZXkiCisj
ZW5kaWYKKworI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWwzU2VhcmNoS2V5Cisj
ZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdMZXZlbDNTZWFyY2hLZXkgQCJBWEhlYWRpbmdM
ZXZlbDNTZWFyY2hLZXkiCisjZW5kaWYKKworI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlIZWFkaW5n
TGV2ZWw0U2VhcmNoS2V5CisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdMZXZlbDRTZWFy
Y2hLZXkgQCJBWEhlYWRpbmdMZXZlbDRTZWFyY2hLZXkiCisjZW5kaWYKKworI2lmbmRlZiBOU0Fj
Y2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWw1U2VhcmNoS2V5CisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0
eUhlYWRpbmdMZXZlbDVTZWFyY2hLZXkgQCJBWEhlYWRpbmdMZXZlbDVTZWFyY2hLZXkiCisjZW5k
aWYKKworI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nTGV2ZWw2U2VhcmNoS2V5CisjZGVm
aW5lIE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdMZXZlbDZTZWFyY2hLZXkgQCJBWEhlYWRpbmdMZXZl
bDZTZWFyY2hLZXkiCisjZW5kaWYKKworI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nU2Ft
ZUxldmVsU2VhcmNoS2V5CisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdTYW1lTGV2ZWxT
ZWFyY2hLZXkgQCJBWEhlYWRpbmdTYW1lTGV2ZWxTZWFyY2hLZXkiCisjZW5kaWYKKworI2lmbmRl
ZiBOU0FjY2Vzc2liaWxpdHlIZWFkaW5nU2VhcmNoS2V5CisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0
eUhlYWRpbmdTZWFyY2hLZXkgQCJBWEhlYWRpbmdTZWFyY2hLZXkiCisjZW5kaWYKKworI2lmbmRl
ZiBOU0FjY2Vzc2liaWxpdHlJdGFsaWNGb250U2VhcmNoS2V5CisjZGVmaW5lIE5TQWNjZXNzaWJp
bGl0eUl0YWxpY0ZvbnRTZWFyY2hLZXkgQCJBWEl0YWxpY0ZvbnRTZWFyY2hLZXkiCisjZW5kaWYK
KworI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlMYW5kbWFya1NlYXJjaEtleQorI2RlZmluZSBOU0Fj
Y2Vzc2liaWxpdHlMYW5kbWFya1NlYXJjaEtleSBAIkFYTGFuZG1hcmtTZWFyY2hLZXkiCisjZW5k
aWYKKworI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlMaW5rU2VhcmNoS2V5CisjZGVmaW5lIE5TQWNj
ZXNzaWJpbGl0eUxpbmtTZWFyY2hLZXkgQCJBWExpbmtTZWFyY2hLZXkiCisjZW5kaWYKKworI2lm
bmRlZiBOU0FjY2Vzc2liaWxpdHlMaXN0U2VhcmNoS2V5CisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0
eUxpc3RTZWFyY2hLZXkgQCJBWExpc3RTZWFyY2hLZXkiCisjZW5kaWYKKworI2lmbmRlZiBOU0Fj
Y2Vzc2liaWxpdHlMaXZlUmVnaW9uU2VhcmNoS2V5CisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eUxp
dmVSZWdpb25TZWFyY2hLZXkgQCJBWExpdmVSZWdpb25TZWFyY2hLZXkiCisjZW5kaWYKKworI2lm
bmRlZiBOU0FjY2Vzc2liaWxpdHlNaXNzcGVsbGVkV29yZFNlYXJjaEtleQorI2RlZmluZSBOU0Fj
Y2Vzc2liaWxpdHlNaXNzcGVsbGVkV29yZFNlYXJjaEtleSBAIkFYTWlzc3BlbGxlZFdvcmRTZWFy
Y2hLZXkiCisjZW5kaWYKKworI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlQbGFpblRleHRTZWFyY2hL
ZXkKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5UGxhaW5UZXh0U2VhcmNoS2V5IEAiQVhQbGFpblRl
eHRTZWFyY2hLZXkiCisjZW5kaWYKKworI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlSYWRpb0dyb3Vw
U2VhcmNoS2V5CisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eVJhZGlvR3JvdXBTZWFyY2hLZXkgQCJB
WFJhZGlvR3JvdXBTZWFyY2hLZXkiCisjZW5kaWYKKworI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlT
YW1lVHlwZVNlYXJjaEtleQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlTYW1lVHlwZVNlYXJjaEtl
eSBAIkFYU2FtZVR5cGVTZWFyY2hLZXkiCisjZW5kaWYKKworI2lmbmRlZiBOU0FjY2Vzc2liaWxp
dHlTdGF0aWNUZXh0U2VhcmNoS2V5CisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eVN0YXRpY1RleHRT
ZWFyY2hLZXkgQCJBWFN0YXRpY1RleHRTZWFyY2hLZXkiCisjZW5kaWYKKworI2lmbmRlZiBOU0Fj
Y2Vzc2liaWxpdHlTdHlsZUNoYW5nZVNlYXJjaEtleQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlT
dHlsZUNoYW5nZVNlYXJjaEtleSBAIkFYU3R5bGVDaGFuZ2VTZWFyY2hLZXkiCisjZW5kaWYKKwor
I2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlUYWJsZVNhbWVMZXZlbFNlYXJjaEtleQorI2RlZmluZSBO
U0FjY2Vzc2liaWxpdHlUYWJsZVNhbWVMZXZlbFNlYXJjaEtleSBAIkFYVGFibGVTYW1lTGV2ZWxT
ZWFyY2hLZXkiCisjZW5kaWYKKworI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlUYWJsZVNlYXJjaEtl
eQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlUYWJsZVNlYXJjaEtleSBAIkFYVGFibGVTZWFyY2hL
ZXkiCisjZW5kaWYKKworI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlUZXh0RmllbGRTZWFyY2hLZXkK
KyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5VGV4dEZpZWxkU2VhcmNoS2V5IEAiQVhUZXh0RmllbGRT
ZWFyY2hLZXkiCisjZW5kaWYKKworI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlVbmRlcmxpbmVTZWFy
Y2hLZXkKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5VW5kZXJsaW5lU2VhcmNoS2V5IEAiQVhVbmRl
cmxpbmVTZWFyY2hLZXkiCisjZW5kaWYKKworI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlVbnZpc2l0
ZWRMaW5rU2VhcmNoS2V5CisjZGVmaW5lIE5TQWNjZXNzaWJpbGl0eVVudmlzaXRlZExpbmtTZWFy
Y2hLZXkgQCJBWFVudmlzaXRlZExpbmtTZWFyY2hLZXkiCisjZW5kaWYKKworI2lmbmRlZiBOU0Fj
Y2Vzc2liaWxpdHlWaXNpdGVkTGlua1NlYXJjaEtleQorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlW
aXNpdGVkTGlua1NlYXJjaEtleSBAIkFYVmlzaXRlZExpbmtTZWFyY2hLZXkiCisjZW5kaWYKKwor
CitAaW50ZXJmYWNlIE5TT2JqZWN0IChXZWJLaXRBY2Nlc3NpYmlsaXR5QXJyYXlDYXRlZ29yeSkK
KworLSAoTlNVSW50ZWdlcilhY2Nlc3NpYmlsaXR5SW5kZXhPZkNoaWxkOihpZCljaGlsZDsKKy0g
KE5TVUludGVnZXIpYWNjZXNzaWJpbGl0eUFycmF5QXR0cmlidXRlQ291bnQ6KE5TU3RyaW5nICop
YXR0cmlidXRlOworLSAoTlNBcnJheSAqKWFjY2Vzc2liaWxpdHlBcnJheUF0dHJpYnV0ZVZhbHVl
czooTlNTdHJpbmcgKilhdHRyaWJ1dGUgaW5kZXg6KE5TVUludGVnZXIpaW5kZXggbWF4Q291bnQ6
KE5TVUludGVnZXIpbWF4Q291bnQ7CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIEFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyCisKKy0gKGlkKWluaXRXaXRoQWNjZXNzaWJpbGl0eU9iamVjdDoo
QWNjZXNzaWJpbGl0eU9iamVjdCopYXhPYmplY3QKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVy
IGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIG1fb2JqZWN0ID0gYXhPYmplY3Q7
CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpdW5yZWdpc3RlclVuaXF1ZUlkRm9yVUlF
bGVtZW50Cit7CisgICAgd2tVbnJlZ2lzdGVyVW5pcXVlSWRGb3JFbGVtZW50KHNlbGYpOworfQor
CistICh2b2lkKWRldGFjaAoreworICAgIC8vIFNlbmQgdW5yZWdpc3RlclVuaXF1ZUlkRm9yVUlF
bGVtZW50IHVuY29uZGl0aW9uYWxseSBiZWNhdXNlIGlmIGl0IGlzCisgICAgLy8gZXZlciBhY2Np
ZGVudGFsbHkgbm90IGRvbmUgKHZpYSBvdGhlciBidWdzIGluIG91ciBBWCBpbXBsZW1lbnRhdGlv
bikgeW91CisgICAgLy8gZW5kIHVwIHdpdGggYSBjcmFzaCBsaWtlIDxyZGFyOi8vcHJvYmxlbS80
MjczMTQ5Pi4gIEl0IGlzIHNhZmUgYW5kIG5vdAorICAgIC8vIGV4cGVuc2l2ZSB0byBzZW5kIGV2
ZW4gaWYgdGhlIG9iamVjdCBpcyBub3QgcmVnaXN0ZXJlZC4KKyAgICBbc2VsZiB1bnJlZ2lzdGVy
VW5pcXVlSWRGb3JVSUVsZW1lbnRdOworICAgIG1fb2JqZWN0ID0gMDsKK30KKworLSAoQk9PTCl1
cGRhdGVPYmplY3RCYWNraW5nU3RvcmUKK3sKKyAgICAvLyBDYWxsaW5nIHVwZGF0ZUJhY2tpbmdT
dG9yZSgpIGNhbiBpbnZhbGlkYXRlIHRoaXMgZWxlbWVudCBzbyBzZWxmIG11c3QgYmUgcmV0YWlu
ZWQuCisgICAgLy8gSWYgaXQgZG9lcyBiZWNvbWUgaW52YWxpZGF0ZWQsIG1fb2JqZWN0IHdpbGwg
YmUgbmlsLgorICAgIFtbc2VsZiByZXRhaW5dIGF1dG9yZWxlYXNlXTsKKyAgICAKKyAgICBpZiAo
IW1fb2JqZWN0KQorICAgICAgICByZXR1cm4gTk87CisgICAgCisgICAgbV9vYmplY3QtPnVwZGF0
ZUJhY2tpbmdTdG9yZSgpOworICAgIGlmICghbV9vYmplY3QpCisgICAgICAgIHJldHVybiBOTzsK
KyAgICAKKyAgICByZXR1cm4gWUVTOworfQorCistIChBY2Nlc3NpYmlsaXR5T2JqZWN0KilhY2Nl
c3NpYmlsaXR5T2JqZWN0Cit7CisgICAgcmV0dXJuIG1fb2JqZWN0OworfQorCistIChOU1ZpZXcq
KWF0dGFjaG1lbnRWaWV3Cit7CisgICAgQVNTRVJUKG1fb2JqZWN0LT5pc0F0dGFjaG1lbnQoKSk7
CisgICAgV2lkZ2V0KiB3aWRnZXQgPSBtX29iamVjdC0+d2lkZ2V0Rm9yQXR0YWNobWVudFZpZXco
KTsKKyAgICBpZiAoIXdpZGdldCkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICByZXR1cm4gTlNB
Y2Nlc3NpYmlsaXR5VW5pZ25vcmVkRGVzY2VuZGFudCh3aWRnZXQtPnBsYXRmb3JtV2lkZ2V0KCkp
OworfQorCisjcHJhZ21hIG1hcmsgU3lzdGVtSW50ZXJmYWNlIHdyYXBwZXJzCisKK3N0YXRpYyBp
bmxpbmUgaWQgQ0ZBdXRvcmVsZWFzZUhlbHBlcihDRlR5cGVSZWYgb2JqKQoreworICAgIGlmIChv
YmopCisgICAgICAgIENGTWFrZUNvbGxlY3RhYmxlKG9iaik7CisgICAgWyhpZClvYmogYXV0b3Jl
bGVhc2VdOworICAgIHJldHVybiAoaWQpb2JqOworfQorCitzdGF0aWMgaW5saW5lIEJPT0wgQVhP
YmplY3RJc1RleHRNYXJrZXIoaWQgb2JqKQoreworICAgIHJldHVybiBvYmogIT0gbmlsICYmIENG
R2V0VHlwZUlEKG9iaikgPT0gd2tHZXRBWFRleHRNYXJrZXJUeXBlSUQoKTsgICAgCit9CisKK3N0
YXRpYyBpbmxpbmUgQk9PTCBBWE9iamVjdElzVGV4dE1hcmtlclJhbmdlKGlkIG9iaikKK3sKKyAg
ICByZXR1cm4gb2JqICE9IG5pbCAmJiBDRkdldFR5cGVJRChvYmopID09IHdrR2V0QVhUZXh0TWFy
a2VyUmFuZ2VUeXBlSUQoKTsgICAgCit9CisKK3N0YXRpYyBpZCBBWFRleHRNYXJrZXJSYW5nZShp
ZCBzdGFydE1hcmtlciwgaWQgZW5kTWFya2VyKQoreworICAgIEFTU0VSVChzdGFydE1hcmtlciAh
PSBuaWwpOworICAgIEFTU0VSVChlbmRNYXJrZXIgIT0gbmlsKTsKKyAgICBBU1NFUlQoQ0ZHZXRU
eXBlSUQoc3RhcnRNYXJrZXIpID09IHdrR2V0QVhUZXh0TWFya2VyVHlwZUlEKCkpOworICAgIEFT
U0VSVChDRkdldFR5cGVJRChlbmRNYXJrZXIpID09IHdrR2V0QVhUZXh0TWFya2VyVHlwZUlEKCkp
OworICAgIHJldHVybiBDRkF1dG9yZWxlYXNlSGVscGVyKHdrQ3JlYXRlQVhUZXh0TWFya2VyUmFu
Z2UoKENGVHlwZVJlZilzdGFydE1hcmtlciwgKENGVHlwZVJlZillbmRNYXJrZXIpKTsKK30KKwor
c3RhdGljIGlkIEFYVGV4dE1hcmtlclJhbmdlU3RhcnQoaWQgcmFuZ2UpCit7CisgICAgQVNTRVJU
KHJhbmdlICE9IG5pbCk7CisgICAgQVNTRVJUKENGR2V0VHlwZUlEKHJhbmdlKSA9PSB3a0dldEFY
VGV4dE1hcmtlclJhbmdlVHlwZUlEKCkpOworICAgIHJldHVybiBDRkF1dG9yZWxlYXNlSGVscGVy
KHdrQ29weUFYVGV4dE1hcmtlclJhbmdlU3RhcnQocmFuZ2UpKTsgICAgCit9CisKK3N0YXRpYyBp
ZCBBWFRleHRNYXJrZXJSYW5nZUVuZChpZCByYW5nZSkKK3sKKyAgICBBU1NFUlQocmFuZ2UgIT0g
bmlsKTsKKyAgICBBU1NFUlQoQ0ZHZXRUeXBlSUQocmFuZ2UpID09IHdrR2V0QVhUZXh0TWFya2Vy
UmFuZ2VUeXBlSUQoKSk7CisgICAgcmV0dXJuIENGQXV0b3JlbGVhc2VIZWxwZXIod2tDb3B5QVhU
ZXh0TWFya2VyUmFuZ2VFbmQocmFuZ2UpKTsgICAgCit9CisKKyNwcmFnbWEgbWFyayBTZWFyY2gg
aGVscGVycworCit0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5
PiBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5TWFwOworCitzdHJ1Y3QgU2VhcmNoS2V5RW50cnkgewor
ICAgIFN0cmluZyBrZXk7CisgICAgQWNjZXNzaWJpbGl0eVNlYXJjaEtleSB2YWx1ZTsKK307CisK
K3N0YXRpYyBBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5TWFwKiBjcmVhdGVBY2Nlc3NpYmlsaXR5U2Vh
cmNoS2V5TWFwKCkKK3sKKyAgICBjb25zdCBTZWFyY2hLZXlFbnRyeSBzZWFyY2hLZXlzW10gPSB7
CisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5QW55VHlwZVNlYXJjaEtleSwgQW55VHlwZVNlYXJj
aEtleSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUJsb2NrcXVvdGVTYW1lTGV2ZWxTZWFy
Y2hLZXksIEJsb2NrcXVvdGVTYW1lTGV2ZWxTZWFyY2hLZXkgfSwKKyAgICAgICAgeyBOU0FjY2Vz
c2liaWxpdHlCbG9ja3F1b3RlU2VhcmNoS2V5LCBCbG9ja3F1b3RlU2VhcmNoS2V5IH0sCisgICAg
ICAgIHsgTlNBY2Nlc3NpYmlsaXR5Qm9sZEZvbnRTZWFyY2hLZXksIEJvbGRGb250U2VhcmNoS2V5
IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5QnV0dG9uU2VhcmNoS2V5LCBCdXR0b25TZWFy
Y2hLZXkgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlDaGVja0JveFNlYXJjaEtleSwgQ2hl
Y2tCb3hTZWFyY2hLZXkgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlDb250cm9sU2VhcmNo
S2V5LCBDb250cm9sU2VhcmNoS2V5IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5RGlmZmVy
ZW50VHlwZVNlYXJjaEtleSwgRGlmZmVyZW50VHlwZVNlYXJjaEtleSB9LAorICAgICAgICB7IE5T
QWNjZXNzaWJpbGl0eUZvbnRDaGFuZ2VTZWFyY2hLZXksIEZvbnRDaGFuZ2VTZWFyY2hLZXkgfSwK
KyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlGb250Q29sb3JDaGFuZ2VTZWFyY2hLZXksIEZvbnRD
b2xvckNoYW5nZVNlYXJjaEtleSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUZyYW1lU2Vh
cmNoS2V5LCBGcmFtZVNlYXJjaEtleSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUdyYXBo
aWNTZWFyY2hLZXksIEdyYXBoaWNTZWFyY2hLZXkgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxp
dHlIZWFkaW5nTGV2ZWwxU2VhcmNoS2V5LCBIZWFkaW5nTGV2ZWwxU2VhcmNoS2V5IH0sCisgICAg
ICAgIHsgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVsMlNlYXJjaEtleSwgSGVhZGluZ0xldmVs
MlNlYXJjaEtleSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdMZXZlbDNTZWFy
Y2hLZXksIEhlYWRpbmdMZXZlbDNTZWFyY2hLZXkgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxp
dHlIZWFkaW5nTGV2ZWw0U2VhcmNoS2V5LCBIZWFkaW5nTGV2ZWw0U2VhcmNoS2V5IH0sCisgICAg
ICAgIHsgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ0xldmVsNVNlYXJjaEtleSwgSGVhZGluZ0xldmVs
NVNlYXJjaEtleSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUhlYWRpbmdMZXZlbDZTZWFy
Y2hLZXksIEhlYWRpbmdMZXZlbDZTZWFyY2hLZXkgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxp
dHlIZWFkaW5nU2FtZUxldmVsU2VhcmNoS2V5LCBIZWFkaW5nU2FtZUxldmVsU2VhcmNoS2V5IH0s
CisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5SGVhZGluZ1NlYXJjaEtleSwgSGVhZGluZ1NlYXJj
aEtleSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eUl0YWxpY0ZvbnRTZWFyY2hLZXksIEl0
YWxpY0ZvbnRTZWFyY2hLZXkgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlMYW5kbWFya1Nl
YXJjaEtleSwgTGFuZG1hcmtTZWFyY2hLZXkgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlM
aW5rU2VhcmNoS2V5LCBMaW5rU2VhcmNoS2V5IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5
TGlzdFNlYXJjaEtleSwgTGlzdFNlYXJjaEtleSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0
eUxpdmVSZWdpb25TZWFyY2hLZXksIExpdmVSZWdpb25TZWFyY2hLZXkgfSwKKyAgICAgICAgeyBO
U0FjY2Vzc2liaWxpdHlNaXNzcGVsbGVkV29yZFNlYXJjaEtleSwgTWlzc3BlbGxlZFdvcmRTZWFy
Y2hLZXkgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlQbGFpblRleHRTZWFyY2hLZXksIFBs
YWluVGV4dFNlYXJjaEtleSB9LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eVJhZGlvR3JvdXBT
ZWFyY2hLZXksIFJhZGlvR3JvdXBTZWFyY2hLZXkgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxp
dHlTYW1lVHlwZVNlYXJjaEtleSwgU2FtZVR5cGVTZWFyY2hLZXkgfSwKKyAgICAgICAgeyBOU0Fj
Y2Vzc2liaWxpdHlTdGF0aWNUZXh0U2VhcmNoS2V5LCBTdGF0aWNUZXh0U2VhcmNoS2V5IH0sCisg
ICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5U3R5bGVDaGFuZ2VTZWFyY2hLZXksIFN0eWxlQ2hhbmdl
U2VhcmNoS2V5IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmlsaXR5VGFibGVTYW1lTGV2ZWxTZWFy
Y2hLZXksIFRhYmxlU2FtZUxldmVsU2VhcmNoS2V5IH0sCisgICAgICAgIHsgTlNBY2Nlc3NpYmls
aXR5VGFibGVTZWFyY2hLZXksIFRhYmxlU2VhcmNoS2V5IH0sCisgICAgICAgIHsgTlNBY2Nlc3Np
YmlsaXR5VGV4dEZpZWxkU2VhcmNoS2V5LCBUZXh0RmllbGRTZWFyY2hLZXkgfSwKKyAgICAgICAg
eyBOU0FjY2Vzc2liaWxpdHlVbmRlcmxpbmVTZWFyY2hLZXksIFVuZGVybGluZVNlYXJjaEtleSB9
LAorICAgICAgICB7IE5TQWNjZXNzaWJpbGl0eVVudmlzaXRlZExpbmtTZWFyY2hLZXksIFVudmlz
aXRlZExpbmtTZWFyY2hLZXkgfSwKKyAgICAgICAgeyBOU0FjY2Vzc2liaWxpdHlWaXNpdGVkTGlu
a1NlYXJjaEtleSwgVmlzaXRlZExpbmtTZWFyY2hLZXkgfQorICAgIH07CisgICAgCisgICAgQWNj
ZXNzaWJpbGl0eVNlYXJjaEtleU1hcCogc2VhcmNoS2V5TWFwID0gbmV3IEFjY2Vzc2liaWxpdHlT
ZWFyY2hLZXlNYXA7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RI
KHNlYXJjaEtleXMpOyBpKyspCisgICAgICAgIHNlYXJjaEtleU1hcC0+c2V0KHNlYXJjaEtleXNb
aV0ua2V5LCBzZWFyY2hLZXlzW2ldLnZhbHVlKTsKKyAgICAKKyAgICByZXR1cm4gc2VhcmNoS2V5
TWFwOworfQorCitzdGF0aWMgQWNjZXNzaWJpbGl0eVNlYXJjaEtleSBhY2Nlc3NpYmlsaXR5U2Vh
cmNoS2V5Rm9yU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgQVNTRVJUKCF2YWx1
ZS5pc0VtcHR5KCkpOworICAgIAorICAgIHN0YXRpYyBjb25zdCBBY2Nlc3NpYmlsaXR5U2VhcmNo
S2V5TWFwKiBzZWFyY2hLZXlNYXAgPSBjcmVhdGVBY2Nlc3NpYmlsaXR5U2VhcmNoS2V5TWFwKCk7
CisgICAgCisgICAgQWNjZXNzaWJpbGl0eVNlYXJjaEtleSBzZWFyY2hLZXkgPSBzZWFyY2hLZXlN
YXAtPmdldCh2YWx1ZSk7CisgICAgCisgICAgcmV0dXJuIHNlYXJjaEtleSA/IHNlYXJjaEtleSA6
IEFueVR5cGVTZWFyY2hLZXk7Cit9CisKKyNwcmFnbWEgbWFyayBUZXh0IE1hcmtlciBoZWxwZXJz
CisKK3N0YXRpYyBpZCB0ZXh0TWFya2VyRm9yVmlzaWJsZVBvc2l0aW9uKEFYT2JqZWN0Q2FjaGUq
IGNhY2hlLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3MpCit7CisgICAgQVNTRVJU
KGNhY2hlKTsKKyAgICAKKyAgICBUZXh0TWFya2VyRGF0YSB0ZXh0TWFya2VyRGF0YTsKKyAgICBj
YWNoZS0+dGV4dE1hcmtlckRhdGFGb3JWaXNpYmxlUG9zaXRpb24odGV4dE1hcmtlckRhdGEsIHZp
c2libGVQb3MpOworICAgIGlmICghdGV4dE1hcmtlckRhdGEuYXhJRCkKKyAgICAgICAgcmV0dXJu
IG5pbDsKKyAgICAKKyAgICByZXR1cm4gQ0ZBdXRvcmVsZWFzZUhlbHBlcih3a0NyZWF0ZUFYVGV4
dE1hcmtlcigmdGV4dE1hcmtlckRhdGEsIHNpemVvZih0ZXh0TWFya2VyRGF0YSkpKTsKK30KKwor
LSAoaWQpdGV4dE1hcmtlckZvclZpc2libGVQb3NpdGlvbjooY29uc3QgVmlzaWJsZVBvc2l0aW9u
ICYpdmlzaWJsZVBvcworeworICAgIHJldHVybiB0ZXh0TWFya2VyRm9yVmlzaWJsZVBvc2l0aW9u
KG1fb2JqZWN0LT5heE9iamVjdENhY2hlKCksIHZpc2libGVQb3MpOworfQorCitzdGF0aWMgVmlz
aWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZvclRleHRNYXJrZXIoQVhPYmplY3RDYWNoZSog
Y2FjaGUsIENGVHlwZVJlZiB0ZXh0TWFya2VyKQoreworICAgIEFTU0VSVChjYWNoZSk7CisKKyAg
ICBpZiAoIXRleHRNYXJrZXIpCisgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKKyAg
ICBUZXh0TWFya2VyRGF0YSB0ZXh0TWFya2VyRGF0YTsKKyAgICBpZiAoIXdrR2V0Qnl0ZXNGcm9t
QVhUZXh0TWFya2VyKHRleHRNYXJrZXIsICZ0ZXh0TWFya2VyRGF0YSwgc2l6ZW9mKHRleHRNYXJr
ZXJEYXRhKSkpCisgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKKyAgICAKKyAgICBy
ZXR1cm4gY2FjaGUtPnZpc2libGVQb3NpdGlvbkZvclRleHRNYXJrZXJEYXRhKHRleHRNYXJrZXJE
YXRhKTsKK30KKworLSAoVmlzaWJsZVBvc2l0aW9uKXZpc2libGVQb3NpdGlvbkZvclRleHRNYXJr
ZXI6KGlkKXRleHRNYXJrZXIKK3sKKyAgICByZXR1cm4gdmlzaWJsZVBvc2l0aW9uRm9yVGV4dE1h
cmtlcihtX29iamVjdC0+YXhPYmplY3RDYWNoZSgpLCB0ZXh0TWFya2VyKTsKK30KKworc3RhdGlj
IFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JTdGFydE9mVGV4dE1hcmtlclJhbmdl
KEFYT2JqZWN0Q2FjaGUgKmNhY2hlLCBpZCB0ZXh0TWFya2VyUmFuZ2UpCit7CisgICAgcmV0dXJu
IHZpc2libGVQb3NpdGlvbkZvclRleHRNYXJrZXIoY2FjaGUsIEFYVGV4dE1hcmtlclJhbmdlU3Rh
cnQodGV4dE1hcmtlclJhbmdlKSk7Cit9CisKK3N0YXRpYyBWaXNpYmxlUG9zaXRpb24gdmlzaWJs
ZVBvc2l0aW9uRm9yRW5kT2ZUZXh0TWFya2VyUmFuZ2UoQVhPYmplY3RDYWNoZSAqY2FjaGUsIGlk
IHRleHRNYXJrZXJSYW5nZSkKK3sKKyAgICByZXR1cm4gdmlzaWJsZVBvc2l0aW9uRm9yVGV4dE1h
cmtlcihjYWNoZSwgQVhUZXh0TWFya2VyUmFuZ2VFbmQodGV4dE1hcmtlclJhbmdlKSk7Cit9CisK
K3N0YXRpYyBpZCB0ZXh0TWFya2VyUmFuZ2VGcm9tTWFya2VycyhpZCB0ZXh0TWFya2VyMSwgaWQg
dGV4dE1hcmtlcjIpCit7CisgICAgaWYgKCF0ZXh0TWFya2VyMSB8fCAhdGV4dE1hcmtlcjIpCisg
ICAgICAgIHJldHVybiBuaWw7CisgICAgICAgIAorICAgIHJldHVybiBBWFRleHRNYXJrZXJSYW5n
ZSh0ZXh0TWFya2VyMSwgdGV4dE1hcmtlcjIpOworfQorCitzdGF0aWMgdm9pZCBBWEF0dHJpYnV0
ZVN0cmluZ1NldEZvbnQoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0clN0cmluZywgTlNT
dHJpbmcqIGF0dHJpYnV0ZSwgTlNGb250KiBmb250LCBOU1JhbmdlIHJhbmdlKQoreworICAgIE5T
RGljdGlvbmFyeSogZGljdDsKKyAgICAKKyAgICBpZiAoZm9udCkgeworICAgICAgICBkaWN0ID0g
W05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOgorICAgICAgICAgICAg
W2ZvbnQgZm9udE5hbWVdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIE5TQWNjZXNzaWJp
bGl0eUZvbnROYW1lS2V5LAorICAgICAgICAgICAgW2ZvbnQgZmFtaWx5TmFtZV0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAsIE5TQWNjZXNzaWJpbGl0eUZvbnRGYW1pbHlLZXksCisgICAgICAg
ICAgICBbZm9udCBkaXNwbGF5TmFtZV0gICAgICAgICAgICAgICAgICAgICAgICAgICwgTlNBY2Nl
c3NpYmlsaXR5VmlzaWJsZU5hbWVLZXksCisgICAgICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0
aEZsb2F0Oltmb250IHBvaW50U2l6ZV1dICwgTlNBY2Nlc3NpYmlsaXR5Rm9udFNpemVLZXksCisg
ICAgICAgIG5pbF07CisKKyAgICAgICAgW2F0dHJTdHJpbmcgYWRkQXR0cmlidXRlOmF0dHJpYnV0
ZSB2YWx1ZTpkaWN0IHJhbmdlOnJhbmdlXTsKKyAgICB9IGVsc2UKKyAgICAgICAgW2F0dHJTdHJp
bmcgcmVtb3ZlQXR0cmlidXRlOmF0dHJpYnV0ZSByYW5nZTpyYW5nZV07CisgICAgCit9CisKK3N0
YXRpYyBDR0NvbG9yUmVmIENyZWF0ZUNHQ29sb3JJZkRpZmZlcmVudChOU0NvbG9yKiBuc0NvbG9y
LCBDR0NvbG9yUmVmIGV4aXN0aW5nQ29sb3IpCit7CisgICAgLy8gZ2V0IGNvbG9yIGluZm9ybWF0
aW9uIGFzc3VtaW5nIE5TRGV2aWNlUkdCQ29sb3JTcGFjZSAKKyAgICBOU0NvbG9yKiByZ2JDb2xv
ciA9IFtuc0NvbG9yIGNvbG9yVXNpbmdDb2xvclNwYWNlTmFtZTpOU0RldmljZVJHQkNvbG9yU3Bh
Y2VdOworICAgIGlmIChyZ2JDb2xvciA9PSBuaWwpCisgICAgICAgIHJnYkNvbG9yID0gW05TQ29s
b3IgYmxhY2tDb2xvcl07CisgICAgQ0dGbG9hdCBjb21wb25lbnRzWzRdOworICAgIFtyZ2JDb2xv
ciBnZXRSZWQ6JmNvbXBvbmVudHNbMF0gZ3JlZW46JmNvbXBvbmVudHNbMV0gYmx1ZTomY29tcG9u
ZW50c1syXSBhbHBoYTomY29tcG9uZW50c1szXV07CisgICAgCisgICAgLy8gY3JlYXRlIGEgbmV3
IENHQ29sb3JSZWYgdG8gcmV0dXJuCisgICAgQ0dDb2xvclNwYWNlUmVmIGNnQ29sb3JTcGFjZSA9
IENHQ29sb3JTcGFjZUNyZWF0ZURldmljZVJHQigpOworICAgIENHQ29sb3JSZWYgY2dDb2xvciA9
IENHQ29sb3JDcmVhdGUoY2dDb2xvclNwYWNlLCBjb21wb25lbnRzKTsKKyAgICBDR0NvbG9yU3Bh
Y2VSZWxlYXNlKGNnQ29sb3JTcGFjZSk7CisgICAgCisgICAgLy8gY2hlY2sgZm9yIG1hdGNoIHdp
dGggZXhpc3RpbmcgY29sb3IKKyAgICBpZiAoZXhpc3RpbmdDb2xvciAmJiBDR0NvbG9yRXF1YWxU
b0NvbG9yKGNnQ29sb3IsIGV4aXN0aW5nQ29sb3IpKSB7CisgICAgICAgIENHQ29sb3JSZWxlYXNl
KGNnQ29sb3IpOworICAgICAgICBjZ0NvbG9yID0gMDsKKyAgICB9CisgICAgCisgICAgcmV0dXJu
IGNnQ29sb3I7Cit9CisKK3N0YXRpYyB2b2lkIEFYQXR0cmlidXRlU3RyaW5nU2V0Q29sb3IoTlNN
dXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0clN0cmluZywgTlNTdHJpbmcqIGF0dHJpYnV0ZSwg
TlNDb2xvciogY29sb3IsIE5TUmFuZ2UgcmFuZ2UpCit7CisgICAgaWYgKGNvbG9yKSB7CisgICAg
ICAgIENHQ29sb3JSZWYgZXhpc3RpbmdDb2xvciA9IChDR0NvbG9yUmVmKSBbYXR0clN0cmluZyBh
dHRyaWJ1dGU6YXR0cmlidXRlIGF0SW5kZXg6cmFuZ2UubG9jYXRpb24gZWZmZWN0aXZlUmFuZ2U6
bmlsXTsKKyAgICAgICAgQ0dDb2xvclJlZiBjZ0NvbG9yID0gQ3JlYXRlQ0dDb2xvcklmRGlmZmVy
ZW50KGNvbG9yLCBleGlzdGluZ0NvbG9yKTsKKyAgICAgICAgaWYgKGNnQ29sb3IpIHsKKyAgICAg
ICAgICAgIFthdHRyU3RyaW5nIGFkZEF0dHJpYnV0ZTphdHRyaWJ1dGUgdmFsdWU6KGlkKWNnQ29s
b3IgcmFuZ2U6cmFuZ2VdOworICAgICAgICAgICAgQ0dDb2xvclJlbGVhc2UoY2dDb2xvcik7Cisg
ICAgICAgIH0KKyAgICB9IGVsc2UKKyAgICAgICAgW2F0dHJTdHJpbmcgcmVtb3ZlQXR0cmlidXRl
OmF0dHJpYnV0ZSByYW5nZTpyYW5nZV07Cit9CisKK3N0YXRpYyB2b2lkIEFYQXR0cmlidXRlU3Ry
aW5nU2V0TnVtYmVyKE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJTdHJpbmcsIE5TU3Ry
aW5nKiBhdHRyaWJ1dGUsIE5TTnVtYmVyKiBudW1iZXIsIE5TUmFuZ2UgcmFuZ2UpCit7CisgICAg
aWYgKG51bWJlcikKKyAgICAgICAgW2F0dHJTdHJpbmcgYWRkQXR0cmlidXRlOmF0dHJpYnV0ZSB2
YWx1ZTpudW1iZXIgcmFuZ2U6cmFuZ2VdOworICAgIGVsc2UKKyAgICAgICAgW2F0dHJTdHJpbmcg
cmVtb3ZlQXR0cmlidXRlOmF0dHJpYnV0ZSByYW5nZTpyYW5nZV07Cit9CisKK3N0YXRpYyB2b2lk
IEFYQXR0cmlidXRlU3RyaW5nU2V0U3R5bGUoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0
clN0cmluZywgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgTlNSYW5nZSByYW5nZSkKK3sKKyAgICBS
ZW5kZXJTdHlsZSogc3R5bGUgPSByZW5kZXJlci0+c3R5bGUoKTsKKworICAgIC8vIHNldCBiYXNp
YyBmb250IGluZm8KKyAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldEZvbnQoYXR0clN0cmluZywgTlNB
Y2Nlc3NpYmlsaXR5Rm9udFRleHRBdHRyaWJ1dGUsIHN0eWxlLT5mb250KCkucHJpbWFyeUZvbnQo
KS0+Z2V0TlNGb250KCksIHJhbmdlKTsKKworICAgIC8vIHNldCBiYXNpYyBjb2xvcnMKKyAgICBB
WEF0dHJpYnV0ZVN0cmluZ1NldENvbG9yKGF0dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0eUZvcmVn
cm91bmRDb2xvclRleHRBdHRyaWJ1dGUsIG5zQ29sb3Ioc3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRD
b2xvcihDU1NQcm9wZXJ0eUNvbG9yKSksIHJhbmdlKTsKKyAgICBBWEF0dHJpYnV0ZVN0cmluZ1Nl
dENvbG9yKGF0dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0eUJhY2tncm91bmRDb2xvclRleHRBdHRy
aWJ1dGUsIG5zQ29sb3Ioc3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJh
Y2tncm91bmRDb2xvcikpLCByYW5nZSk7CisKKyAgICAvLyBzZXQgc3VwZXIvc3ViIHNjcmlwdGlu
ZworICAgIEVWZXJ0aWNhbEFsaWduIGFsaWdubWVudCA9IHN0eWxlLT52ZXJ0aWNhbEFsaWduKCk7
CisgICAgaWYgKGFsaWdubWVudCA9PSBTVUIpCisgICAgICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0
TnVtYmVyKGF0dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0eVN1cGVyc2NyaXB0VGV4dEF0dHJpYnV0
ZSwgW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6KC0xKV0sIHJhbmdlKTsKKyAgICBlbHNlIGlmIChh
bGlnbm1lbnQgPT0gU1VQRVIpCisgICAgICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0TnVtYmVyKGF0
dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0eVN1cGVyc2NyaXB0VGV4dEF0dHJpYnV0ZSwgW05TTnVt
YmVyIG51bWJlcldpdGhJbnQ6MV0sIHJhbmdlKTsKKyAgICBlbHNlCisgICAgICAgIFthdHRyU3Ry
aW5nIHJlbW92ZUF0dHJpYnV0ZTpOU0FjY2Vzc2liaWxpdHlTdXBlcnNjcmlwdFRleHRBdHRyaWJ1
dGUgcmFuZ2U6cmFuZ2VdOworICAgIAorICAgIC8vIHNldCBzaGFkb3cKKyAgICBpZiAoc3R5bGUt
PnRleHRTaGFkb3coKSkKKyAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXROdW1iZXIoYXR0clN0
cmluZywgTlNBY2Nlc3NpYmlsaXR5U2hhZG93VGV4dEF0dHJpYnV0ZSwgW05TTnVtYmVyIG51bWJl
cldpdGhCb29sOllFU10sIHJhbmdlKTsKKyAgICBlbHNlCisgICAgICAgIFthdHRyU3RyaW5nIHJl
bW92ZUF0dHJpYnV0ZTpOU0FjY2Vzc2liaWxpdHlTaGFkb3dUZXh0QXR0cmlidXRlIHJhbmdlOnJh
bmdlXTsKKyAgICAKKyAgICAvLyBzZXQgdW5kZXJsaW5lIGFuZCBzdHJpa2V0aHJvdWdoCisgICAg
aW50IGRlY29yID0gc3R5bGUtPnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCk7CisgICAgaWYgKChk
ZWNvciAmIFVOREVSTElORSkgPT0gMCkgeworICAgICAgICBbYXR0clN0cmluZyByZW1vdmVBdHRy
aWJ1dGU6TlNBY2Nlc3NpYmlsaXR5VW5kZXJsaW5lVGV4dEF0dHJpYnV0ZSByYW5nZTpyYW5nZV07
CisgICAgICAgIFthdHRyU3RyaW5nIHJlbW92ZUF0dHJpYnV0ZTpOU0FjY2Vzc2liaWxpdHlVbmRl
cmxpbmVDb2xvclRleHRBdHRyaWJ1dGUgcmFuZ2U6cmFuZ2VdOworICAgIH0KKyAgICAKKyAgICBp
ZiAoKGRlY29yICYgTElORV9USFJPVUdIKSA9PSAwKSB7CisgICAgICAgIFthdHRyU3RyaW5nIHJl
bW92ZUF0dHJpYnV0ZTpOU0FjY2Vzc2liaWxpdHlTdHJpa2V0aHJvdWdoVGV4dEF0dHJpYnV0ZSBy
YW5nZTpyYW5nZV07CisgICAgICAgIFthdHRyU3RyaW5nIHJlbW92ZUF0dHJpYnV0ZTpOU0FjY2Vz
c2liaWxpdHlTdHJpa2V0aHJvdWdoQ29sb3JUZXh0QXR0cmlidXRlIHJhbmdlOnJhbmdlXTsKKyAg
ICB9CisKKyAgICBpZiAoKGRlY29yICYgKFVOREVSTElORSB8IExJTkVfVEhST1VHSCkpICE9IDAp
IHsKKyAgICAgICAgLy8gZmluZCBjb2xvcnMgdXNpbmcgcXVpcmsgbW9kZSBhcHByb2FjaCAoc3Ry
aWN0IG1vZGUgd291bGQgdXNlIGN1cnJlbnQKKyAgICAgICAgLy8gY29sb3IgZm9yIGFsbCBidXQg
dGhlIHJvb3QgbGluZSBib3gsIHdoaWNoIHdvdWxkIHVzZSBnZXRUZXh0RGVjb3JhdGlvbkNvbG9y
cykKKyAgICAgICAgQ29sb3IgdW5kZXJsaW5lLCBvdmVybGluZSwgbGluZXRocm91Z2g7CisgICAg
ICAgIHJlbmRlcmVyLT5nZXRUZXh0RGVjb3JhdGlvbkNvbG9ycyhkZWNvciwgdW5kZXJsaW5lLCBv
dmVybGluZSwgbGluZXRocm91Z2gpOworICAgICAgICAKKyAgICAgICAgaWYgKChkZWNvciAmIFVO
REVSTElORSkgIT0gMCkgeworICAgICAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXROdW1iZXIo
YXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5VW5kZXJsaW5lVGV4dEF0dHJpYnV0ZSwgW05TTnVt
YmVyIG51bWJlcldpdGhCb29sOllFU10sIHJhbmdlKTsKKyAgICAgICAgICAgIEFYQXR0cmlidXRl
U3RyaW5nU2V0Q29sb3IoYXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5VW5kZXJsaW5lQ29sb3JU
ZXh0QXR0cmlidXRlLCBuc0NvbG9yKHVuZGVybGluZSksIHJhbmdlKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmICgoZGVjb3IgJiBMSU5FX1RIUk9VR0gpICE9IDApIHsKKyAgICAgICAgICAgIEFY
QXR0cmlidXRlU3RyaW5nU2V0TnVtYmVyKGF0dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0eVN0cmlr
ZXRocm91Z2hUZXh0QXR0cmlidXRlLCBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXSwgcmFu
Z2UpOworICAgICAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXRDb2xvcihhdHRyU3RyaW5nLCBO
U0FjY2Vzc2liaWxpdHlTdHJpa2V0aHJvdWdoQ29sb3JUZXh0QXR0cmlidXRlLCBuc0NvbG9yKGxp
bmV0aHJvdWdoKSwgcmFuZ2UpOworICAgICAgICB9CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBB
WEF0dHJpYnV0ZVN0cmluZ1NldEJsb2NrcXVvdGVMZXZlbChOU011dGFibGVBdHRyaWJ1dGVkU3Ry
aW5nKiBhdHRyU3RyaW5nLCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBOU1JhbmdlIHJhbmdlKQor
eworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiA9IHJlbmRlcmVyLT5kb2N1bWVudCgpLT5h
eE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKHJlbmRlcmVyKTsKKyAgICBpbnQgcXVvdGVMZXZl
bCA9IG9iai0+YmxvY2txdW90ZUxldmVsKCk7CisgICAgCisgICAgaWYgKHF1b3RlTGV2ZWwpCisg
ICAgICAgIFthdHRyU3RyaW5nIGFkZEF0dHJpYnV0ZTpOU0FjY2Vzc2liaWxpdHlCbG9ja1F1b3Rl
TGV2ZWxBdHRyaWJ1dGUgdmFsdWU6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6cXVvdGVMZXZlbF0g
cmFuZ2U6cmFuZ2VdOworICAgIGVsc2UKKyAgICAgICAgW2F0dHJTdHJpbmcgcmVtb3ZlQXR0cmli
dXRlOk5TQWNjZXNzaWJpbGl0eUJsb2NrUXVvdGVMZXZlbEF0dHJpYnV0ZSByYW5nZTpyYW5nZV07
Cit9CisKK3N0YXRpYyB2b2lkIEFYQXR0cmlidXRlU3RyaW5nU2V0U3BlbGxpbmcoTlNNdXRhYmxl
QXR0cmlidXRlZFN0cmluZyogYXR0clN0cmluZywgTm9kZSogbm9kZSwgY29uc3QgVUNoYXIqIGNo
YXJzLCBpbnQgY2hhckxlbmd0aCwgTlNSYW5nZSByYW5nZSkKK3sKKyNpZiBVU0UoVU5JRklFRF9U
RVhUX0NIRUNLSU5HKQorICAgIC8vIENoZWNrIHRoZSBzcGVsbGluZyBkaXJlY3RseSBzaW5jZSBk
b2N1bWVudC0+bWFya2Vyc0Zvck5vZGUoKSBkb2VzIG5vdCBzdG9yZSB0aGUgbWlzc3BlbGxlZCBt
YXJraW5nIHdoZW4gdGhlIGN1cnNvciBpcyBpbiBhIHdvcmQuCisgICAgVGV4dENoZWNrZXJDbGll
bnQqIGNoZWNrZXIgPSBub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS0+dGV4dENo
ZWNrZXIoKTsKKworICAgIC8vIGNoZWNrVGV4dE9mUGFyYWdyYXBoIGlzIHRoZSBvbmx5IHNwZWxs
aW5nL2dyYW1tYXIgY2hlY2tlciBpbXBsZW1lbnRlZCBpbiBXSzEgYW5kIFdLMgorICAgIFZlY3Rv
cjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IHJlc3VsdHM7CisgICAgY2hlY2tlci0+Y2hlY2tUZXh0T2ZQ
YXJhZ3JhcGgoY2hhcnMsIGNoYXJMZW5ndGgsIFRleHRDaGVja2luZ1R5cGVTcGVsbGluZywgcmVz
dWx0cyk7CisgICAgCisgICAgc2l6ZV90IHNpemUgPSByZXN1bHRzLnNpemUoKTsKKyAgICBOU051
bWJlciogdHJ1ZVZhbHVlID0gW05TTnVtYmVyIG51bWJlcldpdGhCb29sOllFU107CisgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICBjb25zdCBUZXh0Q2hl
Y2tpbmdSZXN1bHQmIHJlc3VsdCA9IHJlc3VsdHNbaV07CisgICAgICAgIEFYQXR0cmlidXRlU3Ry
aW5nU2V0TnVtYmVyKGF0dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0eU1pc3NwZWxsZWRUZXh0QXR0
cmlidXRlLCB0cnVlVmFsdWUsIE5TTWFrZVJhbmdlKHJlc3VsdC5sb2NhdGlvbiArIHJhbmdlLmxv
Y2F0aW9uLCByZXN1bHQubGVuZ3RoKSk7CisgICAgfSAgICAKKyNlbHNlCisgICAgaW50IGN1cnJl
bnRQb3NpdGlvbiA9IDA7CisgICAgd2hpbGUgKGNoYXJMZW5ndGggPiAwKSB7CisgICAgICAgIGNv
bnN0IFVDaGFyKiBjaGFyRGF0YSA9IGNoYXJzICsgY3VycmVudFBvc2l0aW9uOworICAgICAgICBU
ZXh0Q2hlY2tlckNsaWVudCogY2hlY2tlciA9IG5vZGUtPmRvY3VtZW50KCktPmZyYW1lKCktPmVk
aXRvcigpLT50ZXh0Q2hlY2tlcigpOworICAgICAgICAKKyAgICAgICAgaW50IG1pc3NwZWxsaW5n
TG9jYXRpb24gPSAtMTsKKyAgICAgICAgaW50IG1pc3NwZWxsaW5nTGVuZ3RoID0gMDsKKyAgICAg
ICAgY2hlY2tlci0+Y2hlY2tTcGVsbGluZ09mU3RyaW5nKGNoYXJEYXRhLCBjaGFyTGVuZ3RoLCAm
bWlzc3BlbGxpbmdMb2NhdGlvbiwgJm1pc3NwZWxsaW5nTGVuZ3RoKTsKKyAgICAgICAgaWYgKG1p
c3NwZWxsaW5nTG9jYXRpb24gPT0gLTEgfHwgIW1pc3NwZWxsaW5nTGVuZ3RoKQorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIAorICAgICAgICBOU1JhbmdlIHNwZWxsUmFuZ2UgPSBOU01ha2VS
YW5nZShyYW5nZS5sb2NhdGlvbiArIGN1cnJlbnRQb3NpdGlvbiArIG1pc3NwZWxsaW5nTG9jYXRp
b24sIG1pc3NwZWxsaW5nTGVuZ3RoKTsKKyAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXROdW1i
ZXIoYXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5TWlzc3BlbGxlZFRleHRBdHRyaWJ1dGUsIFtO
U051bWJlciBudW1iZXJXaXRoQm9vbDpZRVNdLCBzcGVsbFJhbmdlKTsKKyAgICAgICAgY2hhckxl
bmd0aCAtPSAobWlzc3BlbGxpbmdMb2NhdGlvbiArIG1pc3NwZWxsaW5nTGVuZ3RoKTsKKyAgICAg
ICAgY3VycmVudFBvc2l0aW9uICs9IChtaXNzcGVsbGluZ0xvY2F0aW9uICsgbWlzc3BlbGxpbmdM
ZW5ndGgpOworICAgIH0KKyNlbmRpZiAgICAKK30KKworc3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVT
dHJpbmdTZXRIZWFkaW5nTGV2ZWwoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0clN0cmlu
ZywgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgTlNSYW5nZSByYW5nZSkKK3sKKyAgICBpZiAoIXJl
bmRlcmVyKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCog
cGFyZW50T2JqZWN0ID0gcmVuZGVyZXItPmRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+Z2V0
T3JDcmVhdGUocmVuZGVyZXItPnBhcmVudCgpKTsKKyAgICBpbnQgcGFyZW50SGVhZGluZ0xldmVs
ID0gcGFyZW50T2JqZWN0LT5oZWFkaW5nTGV2ZWwoKTsKKyAgICAKKyAgICBpZiAocGFyZW50SGVh
ZGluZ0xldmVsKQorICAgICAgICBbYXR0clN0cmluZyBhZGRBdHRyaWJ1dGU6QCJBWEhlYWRpbmdM
ZXZlbCIgdmFsdWU6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6cGFyZW50SGVhZGluZ0xldmVsXSBy
YW5nZTpyYW5nZV07CisgICAgZWxzZQorICAgICAgICBbYXR0clN0cmluZyByZW1vdmVBdHRyaWJ1
dGU6QCJBWEhlYWRpbmdMZXZlbCIgcmFuZ2U6cmFuZ2VdOworfQorCitzdGF0aWMgdm9pZCBBWEF0
dHJpYnV0ZVN0cmluZ1NldEVsZW1lbnQoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0clN0
cmluZywgTlNTdHJpbmcqIGF0dHJpYnV0ZSwgQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0LCBO
U1JhbmdlIHJhbmdlKQoreworICAgIGlmIChvYmplY3QgJiYgb2JqZWN0LT5pc0FjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QoKSkgeworICAgICAgICAvLyBtYWtlIGEgc2VyaWFsaXphYmxlIEFYIG9i
amVjdAorICAgICAgICAKKyAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHN0YXRpY19j
YXN0PEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QqPihvYmplY3QpLT5yZW5kZXJlcigpOworICAg
ICAgICBpZiAoIXJlbmRlcmVyKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICAg
ICAgRG9jdW1lbnQqIGRvYyA9IHJlbmRlcmVyLT5kb2N1bWVudCgpOworICAgICAgICBpZiAoIWRv
YykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgICAgIEFYT2JqZWN0Q2FjaGUq
IGNhY2hlID0gZG9jLT5heE9iamVjdENhY2hlKCk7CisgICAgICAgIGlmICghY2FjaGUpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgQVhVSUVsZW1lbnRSZWYgYXhFbGVtZW50ID0gd2tD
cmVhdGVBWFVJRWxlbWVudFJlZihvYmplY3QtPndyYXBwZXIoKSk7CisgICAgICAgIGlmIChheEVs
ZW1lbnQpIHsKKyAgICAgICAgICAgIFthdHRyU3RyaW5nIGFkZEF0dHJpYnV0ZTphdHRyaWJ1dGUg
dmFsdWU6KGlkKWF4RWxlbWVudCByYW5nZTpyYW5nZV07CisgICAgICAgICAgICBDRlJlbGVhc2Uo
YXhFbGVtZW50KTsKKyAgICAgICAgfQorICAgIH0gZWxzZQorICAgICAgICBbYXR0clN0cmluZyBy
ZW1vdmVBdHRyaWJ1dGU6YXR0cmlidXRlIHJhbmdlOnJhbmdlXTsKK30KKworc3RhdGljIHZvaWQg
QVhBdHRyaWJ1dGVkU3RyaW5nQXBwZW5kVGV4dChOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBh
dHRyU3RyaW5nLCBOb2RlKiBub2RlLCBjb25zdCBVQ2hhciogY2hhcnMsIGludCBsZW5ndGgpCit7
CisgICAgLy8gc2tpcCBpbnZpc2libGUgdGV4dAorICAgIGlmICghbm9kZS0+cmVuZGVyZXIoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgLy8gZWFzaWVyIHRvIGNhbGN1bGF0ZSB0aGUgcmFuZ2Ug
YmVmb3JlIGFwcGVuZGluZyB0aGUgc3RyaW5nCisgICAgTlNSYW5nZSBhdHRyU3RyaW5nUmFuZ2Ug
PSBOU01ha2VSYW5nZShbYXR0clN0cmluZyBsZW5ndGhdLCBsZW5ndGgpOworICAgIAorICAgIC8v
IGFwcGVuZCB0aGUgc3RyaW5nIGZyb20gdGhpcyBub2RlCisgICAgW1thdHRyU3RyaW5nIG11dGFi
bGVTdHJpbmddIGFwcGVuZFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6Y2hh
cnMgbGVuZ3RoOmxlbmd0aF1dOworCisgICAgLy8gYWRkIG5ldyBhdHRyaWJ1dGVzIGFuZCByZW1v
dmUgaXJyZWxldmFudCBpbmhlcml0ZWQgb25lcworICAgIC8vIE5PVEU6IGNvbG9yIGF0dHJpYnV0
ZXMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5IGJlY2F1c2UgLVtOU011dGFibGVBdHRyaWJ1dGVkU3Ry
aW5nIGFkZEF0dHJpYnV0ZTogdmFsdWU6IHJhbmdlOl0gZG9lcyBub3QgbWVyZ2UKKyAgICAvLyBp
ZGVudGljYWwgY29sb3JzLiAgV29ya2Fyb3VuZCBpcyB0byBub3QgcmVwbGFjZSBhbiBleGlzdGlu
ZyBjb2xvciBhdHRyaWJ1dGUgaWYgaXQgbWF0Y2hlcyB3aGF0IHdlIGFyZSBhZGRpbmcuICBUaGlz
IGFsc28gbWVhbnMKKyAgICAvLyB3ZSBjYW5ub3QganVzdCBwcmUtcmVtb3ZlIGFsbCBpbmhlcml0
ZWQgYXR0cmlidXRlcyBvbiB0aGUgYXBwZW5kZWQgc3RyaW5nLCBzbyB3ZSBoYXZlIHRvIHJlbW92
ZSB0aGUgaXJyZWxldmFudCBvbmVzIGluZGl2aWR1YWxseS4KKworICAgIC8vIHJlbW92ZSBpbmhl
cml0ZWQgYXR0YWNobWVudCBmcm9tIHByaW9yIEFYQXR0cmlidXRlZFN0cmluZ0FwcGVuZFJlcGxh
Y2VkCisgICAgW2F0dHJTdHJpbmcgcmVtb3ZlQXR0cmlidXRlOk5TQWNjZXNzaWJpbGl0eUF0dGFj
aG1lbnRUZXh0QXR0cmlidXRlIHJhbmdlOmF0dHJTdHJpbmdSYW5nZV07CisgICAgW2F0dHJTdHJp
bmcgcmVtb3ZlQXR0cmlidXRlOk5TQWNjZXNzaWJpbGl0eU1pc3NwZWxsZWRUZXh0QXR0cmlidXRl
IHJhbmdlOmF0dHJTdHJpbmdSYW5nZV07CisgICAgCisgICAgLy8gc2V0IG5ldyBhdHRyaWJ1dGVz
CisgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXRTdHlsZShhdHRyU3RyaW5nLCBub2RlLT5yZW5kZXJl
cigpLCBhdHRyU3RyaW5nUmFuZ2UpOworICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0SGVhZGluZ0xl
dmVsKGF0dHJTdHJpbmcsIG5vZGUtPnJlbmRlcmVyKCksIGF0dHJTdHJpbmdSYW5nZSk7CisgICAg
QVhBdHRyaWJ1dGVTdHJpbmdTZXRCbG9ja3F1b3RlTGV2ZWwoYXR0clN0cmluZywgbm9kZS0+cmVu
ZGVyZXIoKSwgYXR0clN0cmluZ1JhbmdlKTsKKyAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldEVsZW1l
bnQoYXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5TGlua1RleHRBdHRyaWJ1dGUsIEFjY2Vzc2li
aWxpdHlPYmplY3Q6OmFuY2hvckVsZW1lbnRGb3JOb2RlKG5vZGUpLCBhdHRyU3RyaW5nUmFuZ2Up
OworICAgIAorICAgIC8vIGRvIHNwZWxsaW5nIGxhc3QgYmVjYXVzZSBpdCB0ZW5kcyB0byBicmVh
ayB1cCB0aGUgcmFuZ2UKKyAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldFNwZWxsaW5nKGF0dHJTdHJp
bmcsIG5vZGUsIGNoYXJzLCBsZW5ndGgsIGF0dHJTdHJpbmdSYW5nZSk7Cit9CisKK3N0YXRpYyBO
U1N0cmluZyogbnNTdHJpbmdGb3JSZXBsYWNlZE5vZGUoTm9kZSogcmVwbGFjZWROb2RlKQorewor
ICAgIC8vIHdlIHNob3VsZCBhbHdheXMgYmUgZ2l2ZW4gYSByZW5kZXJlZCBub2RlIGFuZCBhIHJl
cGxhY2VkIG5vZGUsIGJ1dCBiZSBzYWZlCisgICAgLy8gcmVwbGFjZWQgbm9kZXMgYXJlIGVpdGhl
ciBhdHRhY2htZW50cyAod2lkZ2V0cykgb3IgaW1hZ2VzCisgICAgaWYgKCFyZXBsYWNlZE5vZGUg
fHwgIXJlcGxhY2VkTm9kZS0+cmVuZGVyZXIoKSB8fCAhcmVwbGFjZWROb2RlLT5yZW5kZXJlcigp
LT5pc1JlcGxhY2VkKCkgfHwgcmVwbGFjZWROb2RlLT5pc1RleHROb2RlKCkpIHsKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBuaWw7CisgICAgfQorCisgICAg
Ly8gY3JlYXRlIGFuIEFYIG9iamVjdCwgYnV0IHNraXAgaXQgaWYgaXQgaXMgbm90IHN1cHBvc2Vk
IHRvIGJlIHNlZW4KKyAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4gb2JqID0gcmVwbGFj
ZWROb2RlLT5yZW5kZXJlcigpLT5kb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPmdldE9yQ3Jl
YXRlKHJlcGxhY2VkTm9kZS0+cmVuZGVyZXIoKSk7CisgICAgaWYgKG9iai0+YWNjZXNzaWJpbGl0
eUlzSWdub3JlZCgpKQorICAgICAgICByZXR1cm4gbmlsOworICAgIAorICAgIC8vIHVzZSB0aGUg
YXR0YWNobWVudENoYXJhY3RlciB0byByZXByZXNlbnQgdGhlIHJlcGxhY2VkIG5vZGUKKyAgICBj
b25zdCBVbmlDaGFyIGF0dGFjaG1lbnRDaGFyID0gTlNBdHRhY2htZW50Q2hhcmFjdGVyOworICAg
IHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JmF0dGFjaG1lbnRDaGFyIGxl
bmd0aDoxXTsKK30KKworLSAoTlNBdHRyaWJ1dGVkU3RyaW5nKilkb0FYQXR0cmlidXRlZFN0cmlu
Z0ZvclRleHRNYXJrZXJSYW5nZTooaWQpdGV4dE1hcmtlclJhbmdlCit7CisgICAgaWYgKCFtX29i
amVjdCkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAKKyAgICAvLyBleHRyYWN0IHRoZSBzdGFy
dCBhbmQgZW5kIFZpc2libGVQb3NpdGlvbgorICAgIFZpc2libGVQb3NpdGlvbiBzdGFydFZpc2li
bGVQb3NpdGlvbiA9IHZpc2libGVQb3NpdGlvbkZvclN0YXJ0T2ZUZXh0TWFya2VyUmFuZ2UobV9v
YmplY3QtPmF4T2JqZWN0Q2FjaGUoKSwgdGV4dE1hcmtlclJhbmdlKTsKKyAgICBpZiAoc3RhcnRW
aXNpYmxlUG9zaXRpb24uaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBWaXNp
YmxlUG9zaXRpb24gZW5kVmlzaWJsZVBvc2l0aW9uID0gdmlzaWJsZVBvc2l0aW9uRm9yRW5kT2ZU
ZXh0TWFya2VyUmFuZ2UobV9vYmplY3QtPmF4T2JqZWN0Q2FjaGUoKSwgdGV4dE1hcmtlclJhbmdl
KTsKKyAgICBpZiAoZW5kVmlzaWJsZVBvc2l0aW9uLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4g
bmlsOworCisgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgdmlzaWJsZVBvc2l0aW9uUmFuZ2Uoc3Rh
cnRWaXNpYmxlUG9zaXRpb24sIGVuZFZpc2libGVQb3NpdGlvbik7CisgICAgLy8gaXRlcmF0ZSBv
dmVyIHRoZSByYW5nZSB0byBidWlsZCB0aGUgQVggYXR0cmlidXRlZCBzdHJpbmcKKyAgICBOU011
dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBhdHRyU3RyaW5nID0gW1tOU011dGFibGVBdHRyaWJ1dGVk
U3RyaW5nIGFsbG9jXSBpbml0XTsKKyAgICBUZXh0SXRlcmF0b3IgaXQobWFrZVJhbmdlKHN0YXJ0
VmlzaWJsZVBvc2l0aW9uLCBlbmRWaXNpYmxlUG9zaXRpb24pLmdldCgpKTsKKyAgICB3aGlsZSAo
IWl0LmF0RW5kKCkpIHsKKyAgICAgICAgLy8gbG9jYXRlIHRoZSBub2RlIGFuZCBzdGFydGluZyBv
ZmZzZXQgZm9yIHRoaXMgcmFuZ2UKKyAgICAgICAgaW50IGV4Y2VwdGlvbiA9IDA7CisgICAgICAg
IE5vZGUqIG5vZGUgPSBpdC5yYW5nZSgpLT5zdGFydENvbnRhaW5lcihleGNlcHRpb24pOworICAg
ICAgICBBU1NFUlQobm9kZSA9PSBpdC5yYW5nZSgpLT5lbmRDb250YWluZXIoZXhjZXB0aW9uKSk7
CisgICAgICAgIGludCBvZmZzZXQgPSBpdC5yYW5nZSgpLT5zdGFydE9mZnNldChleGNlcHRpb24p
OworCisgICAgICAgIC8vIG5vbi16ZXJvIGxlbmd0aCBtZWFucyB0ZXh0dWFsIG5vZGUsIHplcm8g
bGVuZ3RoIG1lYW5zIHJlcGxhY2VkIG5vZGUgKEFLQSAiYXR0YWNobWVudHMiIGluIEFYKQorICAg
ICAgICBpZiAoaXQubGVuZ3RoKCkgIT0gMCkgeworICAgICAgICAgICAgLy8gQWRkIHRoZSB0ZXh0
IG9mIHRoZSBsaXN0IG1hcmtlciBpdGVtIGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgICAgIFN0cmlu
ZyBsaXN0TWFya2VyVGV4dCA9IG1fb2JqZWN0LT5saXN0TWFya2VyVGV4dEZvck5vZGVBbmRQb3Np
dGlvbihub2RlLCBWaXNpYmxlUG9zaXRpb24oaXQucmFuZ2UoKS0+c3RhcnRQb3NpdGlvbigpKSk7
CisgICAgICAgICAgICBpZiAoIWxpc3RNYXJrZXJUZXh0LmlzRW1wdHkoKSkKKyAgICAgICAgICAg
ICAgICBBWEF0dHJpYnV0ZWRTdHJpbmdBcHBlbmRUZXh0KGF0dHJTdHJpbmcsIG5vZGUsIGxpc3RN
YXJrZXJUZXh0LmNoYXJhY3RlcnMoKSwgbGlzdE1hcmtlclRleHQubGVuZ3RoKCkpOworICAgICAg
ICAgICAgCisgICAgICAgICAgICBBWEF0dHJpYnV0ZWRTdHJpbmdBcHBlbmRUZXh0KGF0dHJTdHJp
bmcsIG5vZGUsIGl0LmNoYXJhY3RlcnMoKSwgaXQubGVuZ3RoKCkpOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgTm9kZSogcmVwbGFjZWROb2RlID0gbm9kZS0+Y2hpbGROb2RlKG9mZnNl
dCk7CisgICAgICAgICAgICBOU1N0cmluZyAqYXR0YWNobWVudFN0cmluZyA9IG5zU3RyaW5nRm9y
UmVwbGFjZWROb2RlKHJlcGxhY2VkTm9kZSk7CisgICAgICAgICAgICBpZiAoYXR0YWNobWVudFN0
cmluZykgeworICAgICAgICAgICAgICAgIE5TUmFuZ2UgYXR0clN0cmluZ1JhbmdlID0gTlNNYWtl
UmFuZ2UoW2F0dHJTdHJpbmcgbGVuZ3RoXSwgW2F0dGFjaG1lbnRTdHJpbmcgbGVuZ3RoXSk7CisK
KyAgICAgICAgICAgICAgICAvLyBhcHBlbmQgdGhlIHBsYWNlaG9sZGVyIHN0cmluZworICAgICAg
ICAgICAgICAgIFtbYXR0clN0cmluZyBtdXRhYmxlU3RyaW5nXSBhcHBlbmRTdHJpbmc6YXR0YWNo
bWVudFN0cmluZ107CisKKyAgICAgICAgICAgICAgICAvLyByZW1vdmUgYWxsIGluaGVyaXRlZCBh
dHRyaWJ1dGVzCisgICAgICAgICAgICAgICAgW2F0dHJTdHJpbmcgc2V0QXR0cmlidXRlczpuaWwg
cmFuZ2U6YXR0clN0cmluZ1JhbmdlXTsKKworICAgICAgICAgICAgICAgIC8vIGFkZCB0aGUgYXR0
YWNobWVudCBhdHRyaWJ1dGUKKyAgICAgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBv
YmogPSByZXBsYWNlZE5vZGUtPnJlbmRlcmVyKCktPmRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUo
KS0+Z2V0T3JDcmVhdGUocmVwbGFjZWROb2RlLT5yZW5kZXJlcigpKTsKKyAgICAgICAgICAgICAg
ICBBWEF0dHJpYnV0ZVN0cmluZ1NldEVsZW1lbnQoYXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5
QXR0YWNobWVudFRleHRBdHRyaWJ1dGUsIG9iaiwgYXR0clN0cmluZ1JhbmdlKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICBpdC5hZHZhbmNlKCk7CisgICAgfQorCisgICAgcmV0
dXJuIFthdHRyU3RyaW5nIGF1dG9yZWxlYXNlXTsKK30KKworc3RhdGljIGlkIHRleHRNYXJrZXJS
YW5nZUZyb21WaXNpYmxlUG9zaXRpb25zKEFYT2JqZWN0Q2FjaGUgKmNhY2hlLCBWaXNpYmxlUG9z
aXRpb24gc3RhcnRQb3NpdGlvbiwgVmlzaWJsZVBvc2l0aW9uIGVuZFBvc2l0aW9uKQoreworICAg
IGlkIHN0YXJ0VGV4dE1hcmtlciA9IHRleHRNYXJrZXJGb3JWaXNpYmxlUG9zaXRpb24oY2FjaGUs
IHN0YXJ0UG9zaXRpb24pOworICAgIGlkIGVuZFRleHRNYXJrZXIgPSB0ZXh0TWFya2VyRm9yVmlz
aWJsZVBvc2l0aW9uKGNhY2hlLCBlbmRQb3NpdGlvbik7CisgICAgcmV0dXJuIHRleHRNYXJrZXJS
YW5nZUZyb21NYXJrZXJzKHN0YXJ0VGV4dE1hcmtlciwgZW5kVGV4dE1hcmtlcik7Cit9CisKKy0g
KGlkKXRleHRNYXJrZXJSYW5nZUZyb21WaXNpYmxlUG9zaXRpb25zOihWaXNpYmxlUG9zaXRpb24p
c3RhcnRQb3NpdGlvbiBlbmRQb3NpdGlvbjooVmlzaWJsZVBvc2l0aW9uKWVuZFBvc2l0aW9uCit7
CisgICAgcmV0dXJuIHRleHRNYXJrZXJSYW5nZUZyb21WaXNpYmxlUG9zaXRpb25zKG1fb2JqZWN0
LT5heE9iamVjdENhY2hlKCksIHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTsKK30KKworLSAo
TlNBcnJheSopYWNjZXNzaWJpbGl0eUFjdGlvbk5hbWVzCit7CisgICAgaWYgKCFbc2VsZiB1cGRh
dGVPYmplY3RCYWNraW5nU3RvcmVdKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgc3RhdGlj
IE5TQXJyYXkqIGFjdGlvbkVsZW1lbnRBY3Rpb25zID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0
aE9iamVjdHM6IE5TQWNjZXNzaWJpbGl0eVByZXNzQWN0aW9uLCBOU0FjY2Vzc2liaWxpdHlTaG93
TWVudUFjdGlvbiwgbmlsXTsKKyAgICBzdGF0aWMgTlNBcnJheSogZGVmYXVsdEVsZW1lbnRBY3Rp
b25zID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6IE5TQWNjZXNzaWJpbGl0eVNo
b3dNZW51QWN0aW9uLCBuaWxdOworICAgIHN0YXRpYyBOU0FycmF5KiBtZW51RWxlbWVudEFjdGlv
bnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czogTlNBY2Nlc3NpYmlsaXR5Q2Fu
Y2VsQWN0aW9uLCBOU0FjY2Vzc2liaWxpdHlQcmVzc0FjdGlvbiwgbmlsXTsKKyAgICBzdGF0aWMg
TlNBcnJheSogc2xpZGVyQWN0aW9ucyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3Rz
OiBOU0FjY2Vzc2liaWxpdHlJbmNyZW1lbnRBY3Rpb24sIE5TQWNjZXNzaWJpbGl0eURlY3JlbWVu
dEFjdGlvbiwgbmlsXTsKKworICAgIE5TQXJyYXkgKmFjdGlvbnM7CisgICAgaWYgKG1fb2JqZWN0
LT5hY3Rpb25FbGVtZW50KCkpIAorICAgICAgICBhY3Rpb25zID0gYWN0aW9uRWxlbWVudEFjdGlv
bnM7CisgICAgZWxzZSBpZiAobV9vYmplY3QtPmlzTWVudVJlbGF0ZWQoKSkKKyAgICAgICAgYWN0
aW9ucyA9IG1lbnVFbGVtZW50QWN0aW9uczsKKyAgICBlbHNlIGlmIChtX29iamVjdC0+aXNTbGlk
ZXIoKSkKKyAgICAgICAgYWN0aW9ucyA9IHNsaWRlckFjdGlvbnM7CisgICAgZWxzZSBpZiAobV9v
YmplY3QtPmlzQXR0YWNobWVudCgpKQorICAgICAgICBhY3Rpb25zID0gW1tzZWxmIGF0dGFjaG1l
bnRWaWV3XSBhY2Nlc3NpYmlsaXR5QWN0aW9uTmFtZXNdOworICAgIGVsc2UKKyAgICAgICAgYWN0
aW9ucyA9IGRlZmF1bHRFbGVtZW50QWN0aW9uczsKKworICAgIHJldHVybiBhY3Rpb25zOworfQor
CistIChOU0FycmF5KilhZGRpdGlvbmFsQWNjZXNzaWJpbGl0eUF0dHJpYnV0ZU5hbWVzCit7Cisg
ICAgaWYgKCFtX29iamVjdCkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIE5TTXV0YWJsZUFy
cmF5ICphZGRpdGlvbmFsID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKKyAgICBpZiAobV9vYmpl
Y3QtPnN1cHBvcnRzQVJJQU93bnMoKSkKKyAgICAgICAgW2FkZGl0aW9uYWwgYWRkT2JqZWN0Ok5T
QWNjZXNzaWJpbGl0eU93bnNBdHRyaWJ1dGVdOworCisgICAgaWYgKG1fb2JqZWN0LT5zdXBwb3J0
c0FSSUFFeHBhbmRlZCgpKQorICAgICAgICBbYWRkaXRpb25hbCBhZGRPYmplY3Q6TlNBY2Nlc3Np
YmlsaXR5RXhwYW5kZWRBdHRyaWJ1dGVdOworICAgIAorICAgIGlmIChtX29iamVjdC0+aXNTY3Jv
bGxiYXIoKSkKKyAgICAgICAgW2FkZGl0aW9uYWwgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eU9y
aWVudGF0aW9uQXR0cmlidXRlXTsKKyAgICAKKyAgICBpZiAobV9vYmplY3QtPnN1cHBvcnRzQVJJ
QURyYWdnaW5nKCkpCisgICAgICAgIFthZGRpdGlvbmFsIGFkZE9iamVjdDpOU0FjY2Vzc2liaWxp
dHlHcmFiYmVkQXR0cmlidXRlXTsKKworICAgIGlmIChtX29iamVjdC0+c3VwcG9ydHNBUklBRHJv
cHBpbmcoKSkKKyAgICAgICAgW2FkZGl0aW9uYWwgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eURy
b3BFZmZlY3RzQXR0cmlidXRlXTsKKworICAgIGlmIChtX29iamVjdC0+aXNBY2Nlc3NpYmlsaXR5
VGFibGUoKSAmJiBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGUqPihtX29iamVjdCktPnN1
cHBvcnRzU2VsZWN0ZWRSb3dzKCkpCisgICAgICAgIFthZGRpdGlvbmFsIGFkZE9iamVjdDpOU0Fj
Y2Vzc2liaWxpdHlTZWxlY3RlZFJvd3NBdHRyaWJ1dGVdOyAgICAgICAgCisgICAgCisgICAgaWYg
KG1fb2JqZWN0LT5zdXBwb3J0c0FSSUFMaXZlUmVnaW9uKCkpIHsKKyAgICAgICAgW2FkZGl0aW9u
YWwgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUFSSUFMaXZlQXR0cmlidXRlXTsKKyAgICAgICAg
W2FkZGl0aW9uYWwgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUFSSUFSZWxldmFudEF0dHJpYnV0
ZV07CisgICAgfQorICAgIAorICAgIGlmIChtX29iamVjdC0+c29ydERpcmVjdGlvbigpICE9IFNv
cnREaXJlY3Rpb25Ob25lKQorICAgICAgICBbYWRkaXRpb25hbCBhZGRPYmplY3Q6TlNBY2Nlc3Np
YmlsaXR5U29ydERpcmVjdGlvbkF0dHJpYnV0ZV07CisgICAgICAgIAorICAgIC8vIElmIGFuIG9i
amVjdCBpcyBhIGNoaWxkIG9mIGEgbGl2ZSByZWdpb24sIHRoZW4gYWRkIHRoZXNlCisgICAgaWYg
KG1fb2JqZWN0LT5pc0luc2lkZUFSSUFMaXZlUmVnaW9uKCkpIHsKKyAgICAgICAgW2FkZGl0aW9u
YWwgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUFSSUFBdG9taWNBdHRyaWJ1dGVdOworICAgICAg
ICBbYWRkaXRpb25hbCBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5QVJJQUJ1c3lBdHRyaWJ1dGVd
OworICAgIH0KKyAgICAKKyAgICBpZiAobV9vYmplY3QtPmFyaWFIYXNQb3B1cCgpKQorICAgICAg
ICBbYWRkaXRpb25hbCBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5SGFzUG9wdXBBdHRyaWJ1dGVd
OworICAgIAorICAgIHJldHVybiBhZGRpdGlvbmFsOworfQorCistIChOU0FycmF5KilhY2Nlc3Np
YmlsaXR5QXR0cmlidXRlTmFtZXMKK3sKKyAgICBpZiAoIVtzZWxmIHVwZGF0ZU9iamVjdEJhY2tp
bmdTdG9yZV0pCisgICAgICAgIHJldHVybiBuaWw7CisgICAgCisgICAgaWYgKG1fb2JqZWN0LT5p
c0F0dGFjaG1lbnQoKSkKKyAgICAgICAgcmV0dXJuIFtbc2VsZiBhdHRhY2htZW50Vmlld10gYWNj
ZXNzaWJpbGl0eUF0dHJpYnV0ZU5hbWVzXTsKKworICAgIHN0YXRpYyBOU0FycmF5KiBhdHRyaWJ1
dGVzID0gbmlsOworICAgIHN0YXRpYyBOU0FycmF5KiBhbmNob3JBdHRycyA9IG5pbDsKKyAgICBz
dGF0aWMgTlNBcnJheSogd2ViQXJlYUF0dHJzID0gbmlsOworICAgIHN0YXRpYyBOU0FycmF5KiB0
ZXh0QXR0cnMgPSBuaWw7CisgICAgc3RhdGljIE5TQXJyYXkqIGxpc3RBdHRycyA9IG5pbDsKKyAg
ICBzdGF0aWMgTlNBcnJheSogbGlzdEJveEF0dHJzID0gbmlsOworICAgIHN0YXRpYyBOU0FycmF5
KiByYW5nZUF0dHJzID0gbmlsOworICAgIHN0YXRpYyBOU0FycmF5KiBjb21tb25NZW51QXR0cnMg
PSBuaWw7CisgICAgc3RhdGljIE5TQXJyYXkqIG1lbnVBdHRycyA9IG5pbDsKKyAgICBzdGF0aWMg
TlNBcnJheSogbWVudUJhckF0dHJzID0gbmlsOworICAgIHN0YXRpYyBOU0FycmF5KiBtZW51SXRl
bUF0dHJzID0gbmlsOworICAgIHN0YXRpYyBOU0FycmF5KiBtZW51QnV0dG9uQXR0cnMgPSBuaWw7
CisgICAgc3RhdGljIE5TQXJyYXkqIGNvbnRyb2xBdHRycyA9IG5pbDsKKyAgICBzdGF0aWMgTlNB
cnJheSogdGFibGVBdHRycyA9IG5pbDsKKyAgICBzdGF0aWMgTlNBcnJheSogdGFibGVSb3dBdHRy
cyA9IG5pbDsKKyAgICBzdGF0aWMgTlNBcnJheSogdGFibGVDb2xBdHRycyA9IG5pbDsKKyAgICBz
dGF0aWMgTlNBcnJheSogdGFibGVDZWxsQXR0cnMgPSBuaWw7CisgICAgc3RhdGljIE5TQXJyYXkq
IGdyb3VwQXR0cnMgPSBuaWw7CisgICAgc3RhdGljIE5TQXJyYXkqIGlucHV0SW1hZ2VBdHRycyA9
IG5pbDsKKyAgICBzdGF0aWMgTlNBcnJheSogcGFzc3dvcmRGaWVsZEF0dHJzID0gbmlsOworICAg
IHN0YXRpYyBOU0FycmF5KiB0YWJMaXN0QXR0cnMgPSBuaWw7CisgICAgc3RhdGljIE5TQXJyYXkq
IGNvbWJvQm94QXR0cnMgPSBuaWw7CisgICAgc3RhdGljIE5TQXJyYXkqIG91dGxpbmVBdHRycyA9
IG5pbDsKKyAgICBzdGF0aWMgTlNBcnJheSogb3V0bGluZVJvd0F0dHJzID0gbmlsOworICAgIHN0
YXRpYyBOU0FycmF5KiBidXR0b25BdHRycyA9IG5pbDsKKyAgICBzdGF0aWMgTlNBcnJheSogc2Ny
b2xsVmlld0F0dHJzID0gbmlsOworICAgIE5TTXV0YWJsZUFycmF5KiB0ZW1wQXJyYXk7CisgICAg
aWYgKGF0dHJpYnV0ZXMgPT0gbmlsKSB7CisgICAgICAgIGF0dHJpYnV0ZXMgPSBbW05TQXJyYXkg
YWxsb2NdIGluaXRXaXRoT2JqZWN0czogTlNBY2Nlc3NpYmlsaXR5Um9sZUF0dHJpYnV0ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlTdWJyb2xlQXR0cmlidXRlLAorICAg
ICAgICAgICAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eVJvbGVEZXNjcmlwdGlvbkF0dHJpYnV0
ZSwKKyAgICAgICAgICAgICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0
ZSwKKyAgICAgICAgICAgICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlIZWxwQXR0cmlidXRlLAor
ICAgICAgICAgICAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eVBhcmVudEF0dHJpYnV0ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlQb3NpdGlvbkF0dHJpYnV0ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlTaXplQXR0cmlidXRlLAorICAgICAg
ICAgICAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eVRpdGxlQXR0cmlidXRlLAorICAgICAgICAg
ICAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uQXR0cmlidXRlLAorICAgICAg
ICAgICAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eVZhbHVlQXR0cmlidXRlLAorICAgICAgICAg
ICAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eUZvY3VzZWRBdHRyaWJ1dGUsCisgICAgICAgICAg
ICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5RW5hYmxlZEF0dHJpYnV0ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlXaW5kb3dBdHRyaWJ1dGUsCisgICAgICAgICAgICAg
ICAgICAgICAgQCJBWFNlbGVjdGVkVGV4dE1hcmtlclJhbmdlIiwKKyAgICAgICAgICAgICAgICAg
ICAgICBAIkFYU3RhcnRUZXh0TWFya2VyIiwKKyAgICAgICAgICAgICAgICAgICAgICBAIkFYRW5k
VGV4dE1hcmtlciIsCisgICAgICAgICAgICAgICAgICAgICAgQCJBWFZpc2l0ZWQiLAorICAgICAg
ICAgICAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eUxpbmtlZFVJRWxlbWVudHNBdHRyaWJ1dGUs
CisgICAgICAgICAgICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRBdHRyaWJ1dGUs
CisgICAgICAgICAgICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5QmxvY2tRdW90ZUxldmVsQXR0
cmlidXRlLAorICAgICAgICAgICAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eVRvcExldmVsVUlF
bGVtZW50QXR0cmlidXRlLAorICAgICAgICAgICAgICAgICAgICAgIG5pbF07CisgICAgfQorICAg
IGlmIChjb21tb25NZW51QXR0cnMgPT0gbmlsKSB7CisgICAgICAgIGNvbW1vbk1lbnVBdHRycyA9
IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOiBOU0FjY2Vzc2liaWxpdHlSb2xlQXR0
cmlidXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eVJvbGVE
ZXNjcmlwdGlvbkF0dHJpYnV0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBOU0FjY2Vz
c2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBO
U0FjY2Vzc2liaWxpdHlQYXJlbnRBdHRyaWJ1dGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTlNBY2Nlc3NpYmlsaXR5RW5hYmxlZEF0dHJpYnV0ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBOU0FjY2Vzc2liaWxpdHlQb3NpdGlvbkF0dHJpYnV0ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlTaXplQXR0cmlidXRlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG5pbF07CisgICAgfQorICAgIGlmIChhbmNob3JBdHRycyA9PSBuaWwp
IHsKKyAgICAgICAgdGVtcEFycmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhB
cnJheTphdHRyaWJ1dGVzXTsKKyAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3Np
YmlsaXR5VVJMQXR0cmlidXRlXTsKKyAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nl
c3NpYmlsaXR5QWNjZXNzS2V5QXR0cmlidXRlXTsKKyAgICAgICAgYW5jaG9yQXR0cnMgPSBbW05T
QXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5XTsKKyAgICAgICAgW3RlbXBBcnJh
eSByZWxlYXNlXTsKKyAgICB9CisgICAgaWYgKHdlYkFyZWFBdHRycyA9PSBuaWwpIHsKKyAgICAg
ICAgdGVtcEFycmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRy
aWJ1dGVzXTsKKyAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6QCJBWExpbmtVSUVsZW1lbnRz
Il07CisgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0OkAiQVhMb2FkZWQiXTsKKyAgICAgICAg
W3RlbXBBcnJheSBhZGRPYmplY3Q6QCJBWExheW91dENvdW50Il07CisgICAgICAgIFt0ZW1wQXJy
YXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUxvYWRpbmdQcm9ncmVzc0F0dHJpYnV0ZV07Cisg
ICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVVSTEF0dHJpYnV0ZV07
CisgICAgICAgIHdlYkFyZWFBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0
ZW1wQXJyYXldOworICAgICAgICBbdGVtcEFycmF5IHJlbGVhc2VdOworICAgIH0KKyAgICBpZiAo
dGV4dEF0dHJzID09IG5pbCkgeworICAgICAgICB0ZW1wQXJyYXkgPSBbW05TTXV0YWJsZUFycmF5
IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdOworICAgICAgICBbdGVtcEFycmF5IGFk
ZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlOdW1iZXJPZkNoYXJhY3RlcnNBdHRyaWJ1dGVdOworICAg
ICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFRleHRBdHRy
aWJ1dGVdOworICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlTZWxl
Y3RlZFRleHRSYW5nZUF0dHJpYnV0ZV07CisgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5T
QWNjZXNzaWJpbGl0eVZpc2libGVDaGFyYWN0ZXJSYW5nZUF0dHJpYnV0ZV07CisgICAgICAgIFt0
ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUluc2VydGlvblBvaW50TGluZU51bWJl
ckF0dHJpYnV0ZV07CisgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0
eVRpdGxlVUlFbGVtZW50QXR0cmlidXRlXTsKKyAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6
TlNBY2Nlc3NpYmlsaXR5QWNjZXNzS2V5QXR0cmlidXRlXTsKKyAgICAgICAgW3RlbXBBcnJheSBh
ZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5UmVxdWlyZWRBdHRyaWJ1dGVdOworICAgICAgICBbdGVt
cEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlJbnZhbGlkQXR0cmlidXRlXTsKKyAgICAg
ICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5UGxhY2Vob2xkZXJWYWx1ZUF0
dHJpYnV0ZV07CisgICAgICAgIHRleHRBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhB
cnJheTp0ZW1wQXJyYXldOworICAgICAgICBbdGVtcEFycmF5IHJlbGVhc2VdOworICAgIH0KKyAg
ICBpZiAobGlzdEF0dHJzID09IG5pbCkgeworICAgICAgICB0ZW1wQXJyYXkgPSBbW05TTXV0YWJs
ZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdOworICAgICAgICBbdGVtcEFy
cmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZENoaWxkcmVuQXR0cmlidXRlXTsK
KyAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VmlzaWJsZUNoaWxk
cmVuQXR0cmlidXRlXTsKKyAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmls
aXR5T3JpZW50YXRpb25BdHRyaWJ1dGVdOworICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpO
U0FjY2Vzc2liaWxpdHlUaXRsZVVJRWxlbWVudEF0dHJpYnV0ZV07CisgICAgICAgIGxpc3RBdHRy
cyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXldOworICAgICAgICBb
dGVtcEFycmF5IHJlbGVhc2VdOworICAgIH0KKyAgICBpZiAobGlzdEJveEF0dHJzID09IG5pbCkg
eworICAgICAgICB0ZW1wQXJyYXkgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFy
cmF5Omxpc3RBdHRyc107ICAgIAorICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vz
c2liaWxpdHlBY2Nlc3NLZXlBdHRyaWJ1dGVdOworICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVj
dDpOU0FjY2Vzc2liaWxpdHlSZXF1aXJlZEF0dHJpYnV0ZV07CisgICAgICAgIFt0ZW1wQXJyYXkg
YWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUludmFsaWRBdHRyaWJ1dGVdOworICAgICAgICBsaXN0
Qm94QXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5XTsKKyAg
ICAgICAgW3RlbXBBcnJheSByZWxlYXNlXTsKKyAgICB9CisgICAgaWYgKHJhbmdlQXR0cnMgPT0g
bmlsKSB7CisgICAgICAgIHRlbXBBcnJheSA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRX
aXRoQXJyYXk6YXR0cmlidXRlc107CisgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNj
ZXNzaWJpbGl0eU1pblZhbHVlQXR0cmlidXRlXTsKKyAgICAgICAgW3RlbXBBcnJheSBhZGRPYmpl
Y3Q6TlNBY2Nlc3NpYmlsaXR5TWF4VmFsdWVBdHRyaWJ1dGVdOworICAgICAgICBbdGVtcEFycmF5
IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlPcmllbnRhdGlvbkF0dHJpYnV0ZV07CisgICAgICAg
IFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVZhbHVlRGVzY3JpcHRpb25BdHRy
aWJ1dGVdOworICAgICAgICByYW5nZUF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFy
cmF5OnRlbXBBcnJheV07CisgICAgICAgIFt0ZW1wQXJyYXkgcmVsZWFzZV07CisgICAgfQorICAg
IGlmIChtZW51QmFyQXR0cnMgPT0gbmlsKSB7CisgICAgICAgIHRlbXBBcnJheSA9IFtbTlNNdXRh
YmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6Y29tbW9uTWVudUF0dHJzXTsKKyAgICAgICAg
W3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRDaGlsZHJlbkF0dHJp
YnV0ZV07CisgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVZpc2li
bGVDaGlsZHJlbkF0dHJpYnV0ZV07CisgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNj
ZXNzaWJpbGl0eVRpdGxlVUlFbGVtZW50QXR0cmlidXRlXTsKKyAgICAgICAgbWVudUJhckF0dHJz
ID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheV07CisgICAgICAgIFt0
ZW1wQXJyYXkgcmVsZWFzZV07CisgICAgfQorICAgIGlmIChtZW51QXR0cnMgPT0gbmlsKSB7Cisg
ICAgICAgIHRlbXBBcnJheSA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6
Y29tbW9uTWVudUF0dHJzXTsKKyAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3Np
YmlsaXR5U2VsZWN0ZWRDaGlsZHJlbkF0dHJpYnV0ZV07CisgICAgICAgIFt0ZW1wQXJyYXkgYWRk
T2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVZpc2libGVDaGlsZHJlbkF0dHJpYnV0ZV07CisgICAgICAg
IFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVRpdGxlVUlFbGVtZW50QXR0cmli
dXRlXTsKKyAgICAgICAgbWVudUF0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5
OnRlbXBBcnJheV07CisgICAgICAgIFt0ZW1wQXJyYXkgcmVsZWFzZV07CisgICAgfQorICAgIGlm
IChtZW51SXRlbUF0dHJzID09IG5pbCkgeworICAgICAgICB0ZW1wQXJyYXkgPSBbW05TTXV0YWJs
ZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmNvbW1vbk1lbnVBdHRyc107CisgICAgICAgIFt0
ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVRpdGxlQXR0cmlidXRlXTsKKyAgICAg
ICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5SGVscEF0dHJpYnV0ZV07Cisg
ICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkQXR0cmli
dXRlXTsKKyAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6KE5TU3RyaW5nKilrQVhNZW51SXRl
bUNtZENoYXJBdHRyaWJ1dGVdOworICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDooTlNTdHJp
bmcqKWtBWE1lbnVJdGVtQ21kVmlydHVhbEtleUF0dHJpYnV0ZV07CisgICAgICAgIFt0ZW1wQXJy
YXkgYWRkT2JqZWN0OihOU1N0cmluZyopa0FYTWVudUl0ZW1DbWRHbHlwaEF0dHJpYnV0ZV07Cisg
ICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0OihOU1N0cmluZyopa0FYTWVudUl0ZW1DbWRNb2Rp
ZmllcnNBdHRyaWJ1dGVdOworICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDooTlNTdHJpbmcq
KWtBWE1lbnVJdGVtTWFya0NoYXJBdHRyaWJ1dGVdOworICAgICAgICBbdGVtcEFycmF5IGFkZE9i
amVjdDooTlNTdHJpbmcqKWtBWE1lbnVJdGVtUHJpbWFyeVVJRWxlbWVudEF0dHJpYnV0ZV07Cisg
ICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVNlcnZlc0FzVGl0bGVG
b3JVSUVsZW1lbnRzQXR0cmlidXRlXTsKKyAgICAgICAgbWVudUl0ZW1BdHRycyA9IFtbTlNBcnJh
eSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXldOworICAgICAgICBbdGVtcEFycmF5IHJl
bGVhc2VdOworICAgIH0KKyAgICBpZiAobWVudUJ1dHRvbkF0dHJzID09IG5pbCkgeworICAgICAg
ICBtZW51QnV0dG9uQXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoT2JqZWN0czpOU0Fj
Y2Vzc2liaWxpdHlSb2xlQXR0cmlidXRlLAorICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5Um9s
ZURlc2NyaXB0aW9uQXR0cmlidXRlLAorICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5UGFyZW50
QXR0cmlidXRlLAorICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5UG9zaXRpb25BdHRyaWJ1dGUs
CisgICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlTaXplQXR0cmlidXRlLAorICAgICAgICAgICAg
TlNBY2Nlc3NpYmlsaXR5V2luZG93QXR0cmlidXRlLAorICAgICAgICAgICAgTlNBY2Nlc3NpYmls
aXR5RW5hYmxlZEF0dHJpYnV0ZSwKKyAgICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eUZvY3VzZWRB
dHRyaWJ1dGUsCisgICAgICAgICAgICBOU0FjY2Vzc2liaWxpdHlUaXRsZUF0dHJpYnV0ZSwKKyAg
ICAgICAgICAgIE5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlLCBuaWxdOworICAgIH0K
KyAgICBpZiAoY29udHJvbEF0dHJzID09IG5pbCkgeworICAgICAgICB0ZW1wQXJyYXkgPSBbW05T
TXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdOworICAgICAgICBb
dGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlUaXRsZVVJRWxlbWVudEF0dHJpYnV0
ZV07CisgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUFjY2Vzc0tl
eUF0dHJpYnV0ZV07CisgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0
eVJlcXVpcmVkQXR0cmlidXRlXTsKKyAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nl
c3NpYmlsaXR5SW52YWxpZEF0dHJpYnV0ZV07CisgICAgICAgIGNvbnRyb2xBdHRycyA9IFtbTlNB
cnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXldOworICAgICAgICBbdGVtcEFycmF5
IHJlbGVhc2VdOworICAgIH0KKyAgICBpZiAoYnV0dG9uQXR0cnMgPT0gbmlsKSB7CisgICAgICAg
IHRlbXBBcnJheSA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6YXR0cmli
dXRlc107CisgICAgICAgIC8vIEJ1dHRvbnMgc2hvdWxkIG5vdCBleHBvc2UgQVhWYWx1ZS4KKyAg
ICAgICAgW3RlbXBBcnJheSByZW1vdmVPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VmFsdWVBdHRyaWJ1
dGVdOworICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlUaXRsZVVJ
RWxlbWVudEF0dHJpYnV0ZV07CisgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNz
aWJpbGl0eUFjY2Vzc0tleUF0dHJpYnV0ZV07CisgICAgICAgIGJ1dHRvbkF0dHJzID0gW1tOU0Fy
cmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheV07CisgICAgICAgIFt0ZW1wQXJyYXkg
cmVsZWFzZV07CisgICAgfQorICAgIGlmIChjb21ib0JveEF0dHJzID09IG5pbCkgeworICAgICAg
ICB0ZW1wQXJyYXkgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmNvbnRy
b2xBdHRyc107CisgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUV4
cGFuZGVkQXR0cmlidXRlXTsKKyAgICAgICAgY29tYm9Cb3hBdHRycyA9IFtbTlNBcnJheSBhbGxv
Y10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXldOworICAgICAgICBbdGVtcEFycmF5IHJlbGVhc2Vd
OyAgICAgICAgCisgICAgfQorICAgIGlmICh0YWJsZUF0dHJzID09IG5pbCkgeworICAgICAgICB0
ZW1wQXJyYXkgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0
ZXNdOworICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlSb3dzQXR0
cmlidXRlXTsKKyAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5Vmlz
aWJsZVJvd3NBdHRyaWJ1dGVdOworICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vz
c2liaWxpdHlDb2x1bW5zQXR0cmlidXRlXTsKKyAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6
TlNBY2Nlc3NpYmlsaXR5VmlzaWJsZUNvbHVtbnNBdHRyaWJ1dGVdOworICAgICAgICBbdGVtcEFy
cmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlWaXNpYmxlQ2VsbHNBdHRyaWJ1dGVdOworICAg
ICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDooTlNTdHJpbmcgKilrQVhDb2x1bW5IZWFkZXJVSUVs
ZW1lbnRzQXR0cmlidXRlXTsKKyAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3Np
YmlsaXR5Um93SGVhZGVyVUlFbGVtZW50c0F0dHJpYnV0ZV07CisgICAgICAgIFt0ZW1wQXJyYXkg
YWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUhlYWRlckF0dHJpYnV0ZV07CisgICAgICAgIHRhYmxl
QXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5XTsKKyAgICAg
ICAgW3RlbXBBcnJheSByZWxlYXNlXTsKKyAgICB9CisgICAgaWYgKHRhYmxlUm93QXR0cnMgPT0g
bmlsKSB7CisgICAgICAgIHRlbXBBcnJheSA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRX
aXRoQXJyYXk6YXR0cmlidXRlc107CisgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNj
ZXNzaWJpbGl0eUluZGV4QXR0cmlidXRlXTsKKyAgICAgICAgdGFibGVSb3dBdHRycyA9IFtbTlNB
cnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXldOworICAgICAgICBbdGVtcEFycmF5
IHJlbGVhc2VdOworICAgIH0KKyAgICBpZiAodGFibGVDb2xBdHRycyA9PSBuaWwpIHsKKyAgICAg
ICAgdGVtcEFycmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTphdHRy
aWJ1dGVzXTsKKyAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5SW5k
ZXhBdHRyaWJ1dGVdOworICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxp
dHlIZWFkZXJBdHRyaWJ1dGVdOworICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vz
c2liaWxpdHlSb3dzQXR0cmlidXRlXTsKKyAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNB
Y2Nlc3NpYmlsaXR5VmlzaWJsZVJvd3NBdHRyaWJ1dGVdOworICAgICAgICB0YWJsZUNvbEF0dHJz
ID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheV07CisgICAgICAgIFt0
ZW1wQXJyYXkgcmVsZWFzZV07CisgICAgfQorICAgIGlmICh0YWJsZUNlbGxBdHRycyA9PSBuaWwp
IHsKKyAgICAgICAgdGVtcEFycmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhB
cnJheTphdHRyaWJ1dGVzXTsKKyAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3Np
YmlsaXR5Um93SW5kZXhSYW5nZUF0dHJpYnV0ZV07CisgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2Jq
ZWN0Ok5TQWNjZXNzaWJpbGl0eUNvbHVtbkluZGV4UmFuZ2VBdHRyaWJ1dGVdOworICAgICAgICB0
YWJsZUNlbGxBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXld
OworICAgICAgICBbdGVtcEFycmF5IHJlbGVhc2VdOyAgICAgICAgCisgICAgfQorICAgIGlmIChn
cm91cEF0dHJzID09IG5pbCkgeworICAgICAgICB0ZW1wQXJyYXkgPSBbW05TTXV0YWJsZUFycmF5
IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdOworICAgICAgICBbdGVtcEFycmF5IGFk
ZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlUaXRsZVVJRWxlbWVudEF0dHJpYnV0ZV07CisgICAgICAg
IGdyb3VwQXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5XTsK
KyAgICAgICAgW3RlbXBBcnJheSByZWxlYXNlXTsKKyAgICB9CisgICAgaWYgKGlucHV0SW1hZ2VB
dHRycyA9PSBuaWwpIHsKKyAgICAgICAgdGVtcEFycmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxv
Y10gaW5pdFdpdGhBcnJheTpidXR0b25BdHRyc107CisgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2Jq
ZWN0Ok5TQWNjZXNzaWJpbGl0eVVSTEF0dHJpYnV0ZV07CisgICAgICAgIGlucHV0SW1hZ2VBdHRy
cyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXldOworICAgICAgICBb
dGVtcEFycmF5IHJlbGVhc2VdOworICAgIH0KKyAgICBpZiAocGFzc3dvcmRGaWVsZEF0dHJzID09
IG5pbCkgeworICAgICAgICB0ZW1wQXJyYXkgPSBbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0
V2l0aEFycmF5OmF0dHJpYnV0ZXNdOworICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0Fj
Y2Vzc2liaWxpdHlUaXRsZVVJRWxlbWVudEF0dHJpYnV0ZV07CisgICAgICAgIFt0ZW1wQXJyYXkg
YWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVJlcXVpcmVkQXR0cmlidXRlXTsKKyAgICAgICAgW3Rl
bXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5SW52YWxpZEF0dHJpYnV0ZV07CisgICAg
ICAgIHBhc3N3b3JkRmllbGRBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0
ZW1wQXJyYXldOworICAgICAgICBbdGVtcEFycmF5IHJlbGVhc2VdOworICAgIH0KKyAgICBpZiAo
dGFiTGlzdEF0dHJzID09IG5pbCkgeworICAgICAgICB0ZW1wQXJyYXkgPSBbW05TTXV0YWJsZUFy
cmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdOworICAgICAgICBbdGVtcEFycmF5
IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlUYWJzQXR0cmlidXRlXTsKKyAgICAgICAgW3RlbXBB
cnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5Q29udGVudHNBdHRyaWJ1dGVdOworICAgICAg
ICB0YWJMaXN0QXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5
XTsKKyAgICAgICAgW3RlbXBBcnJheSByZWxlYXNlXTsgICAgICAgIAorICAgIH0KKyAgICBpZiAo
b3V0bGluZUF0dHJzID09IG5pbCkgeworICAgICAgICB0ZW1wQXJyYXkgPSBbW05TTXV0YWJsZUFy
cmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdOworICAgICAgICBbdGVtcEFycmF5
IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFJvd3NBdHRyaWJ1dGVdOworICAgICAg
ICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlSb3dzQXR0cmlidXRlXTsKKyAg
ICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5Q29sdW1uc0F0dHJpYnV0
ZV07CisgICAgICAgIG91dGxpbmVBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJh
eTp0ZW1wQXJyYXldOworICAgICAgICBbdGVtcEFycmF5IHJlbGVhc2VdOworICAgIH0KKyAgICBp
ZiAob3V0bGluZVJvd0F0dHJzID09IG5pbCkgeworICAgICAgICB0ZW1wQXJyYXkgPSBbW05TTXV0
YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRhYmxlUm93QXR0cnNdOworICAgICAgICBb
dGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlEaXNjbG9zaW5nQXR0cmlidXRlXTsK
KyAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5RGlzY2xvc2VkQnlS
b3dBdHRyaWJ1dGVdOworICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxp
dHlEaXNjbG9zdXJlTGV2ZWxBdHRyaWJ1dGVdOworICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVj
dDpOU0FjY2Vzc2liaWxpdHlEaXNjbG9zZWRSb3dzQXR0cmlidXRlXTsKKyAgICAgICAgb3V0bGlu
ZVJvd0F0dHJzID0gW1tOU0FycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRlbXBBcnJheV07Cisg
ICAgICAgIFt0ZW1wQXJyYXkgcmVsZWFzZV07CisgICAgfQorICAgIGlmIChzY3JvbGxWaWV3QXR0
cnMgPT0gbmlsKSB7CisgICAgICAgIHRlbXBBcnJheSA9IFtbTlNNdXRhYmxlQXJyYXkgYWxsb2Nd
IGluaXRXaXRoQXJyYXk6YXR0cmlidXRlc107CisgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0
Ok5TQWNjZXNzaWJpbGl0eUNvbnRlbnRzQXR0cmlidXRlXTsKKyAgICAgICAgW3RlbXBBcnJheSBh
ZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5SG9yaXpvbnRhbFNjcm9sbEJhckF0dHJpYnV0ZV07Cisg
ICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eVZlcnRpY2FsU2Nyb2xs
QmFyQXR0cmlidXRlXTsKKyAgICAgICAgc2Nyb2xsVmlld0F0dHJzID0gW1tOU0FycmF5IGFsbG9j
XSBpbml0V2l0aEFycmF5OnRlbXBBcnJheV07CisgICAgICAgIFt0ZW1wQXJyYXkgcmVsZWFzZV07
CisgICAgfQorICAgIAorICAgIE5TQXJyYXkgKm9iamVjdEF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVz
OworICAgIAorICAgIGlmIChtX29iamVjdC0+aXNQYXNzd29yZEZpZWxkKCkpCisgICAgICAgIG9i
amVjdEF0dHJpYnV0ZXMgPSBwYXNzd29yZEZpZWxkQXR0cnM7CisKKyAgICBlbHNlIGlmIChtX29i
amVjdC0+aXNXZWJBcmVhKCkpCisgICAgICAgIG9iamVjdEF0dHJpYnV0ZXMgPSB3ZWJBcmVhQXR0
cnM7CisgICAgCisgICAgZWxzZSBpZiAobV9vYmplY3QtPmlzVGV4dENvbnRyb2woKSkKKyAgICAg
ICAgb2JqZWN0QXR0cmlidXRlcyA9IHRleHRBdHRyczsKKworICAgIGVsc2UgaWYgKG1fb2JqZWN0
LT5pc0FuY2hvcigpIHx8IG1fb2JqZWN0LT5pc0ltYWdlKCkgfHwgbV9vYmplY3QtPmlzTGluaygp
KQorICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0gYW5jaG9yQXR0cnM7CisKKyAgICBlbHNlIGlm
IChtX29iamVjdC0+aXNBY2Nlc3NpYmlsaXR5VGFibGUoKSkKKyAgICAgICAgb2JqZWN0QXR0cmli
dXRlcyA9IHRhYmxlQXR0cnM7CisgICAgZWxzZSBpZiAobV9vYmplY3QtPmlzVGFibGVDb2x1bW4o
KSkKKyAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IHRhYmxlQ29sQXR0cnM7CisgICAgZWxzZSBp
ZiAobV9vYmplY3QtPmlzVGFibGVDZWxsKCkpCisgICAgICAgIG9iamVjdEF0dHJpYnV0ZXMgPSB0
YWJsZUNlbGxBdHRyczsKKyAgICBlbHNlIGlmIChtX29iamVjdC0+aXNUYWJsZVJvdygpKSB7Cisg
ICAgICAgIC8vIEFuIEFSSUEgdGFibGUgcm93IGNhbiBiZSBjb2xsYXBzZWQgYW5kIGV4cGFuZGVk
LCBzbyBpdCBuZWVkcyB0aGUgZXh0cmEgYXR0cmlidXRlcy4KKyAgICAgICAgaWYgKG1fb2JqZWN0
LT5pc0FSSUFUcmVlR3JpZFJvdygpKQorICAgICAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IG91
dGxpbmVSb3dBdHRyczsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgb2JqZWN0QXR0cmlidXRl
cyA9IHRhYmxlUm93QXR0cnM7CisgICAgfQorICAgIAorICAgIGVsc2UgaWYgKG1fb2JqZWN0LT5p
c1RyZWUoKSkKKyAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IG91dGxpbmVBdHRyczsKKyAgICBl
bHNlIGlmIChtX29iamVjdC0+aXNUcmVlSXRlbSgpKQorICAgICAgICBvYmplY3RBdHRyaWJ1dGVz
ID0gb3V0bGluZVJvd0F0dHJzOworICAgIAorICAgIGVsc2UgaWYgKG1fb2JqZWN0LT5pc0xpc3RC
b3goKSkKKyAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IGxpc3RCb3hBdHRyczsKKyAgICBlbHNl
IGlmIChtX29iamVjdC0+aXNMaXN0KCkpCisgICAgICAgIG9iamVjdEF0dHJpYnV0ZXMgPSBsaXN0
QXR0cnM7CisgICAgCisgICAgZWxzZSBpZiAobV9vYmplY3QtPmlzQ29tYm9Cb3goKSkKKyAgICAg
ICAgb2JqZWN0QXR0cmlidXRlcyA9IGNvbWJvQm94QXR0cnM7CisgICAgCisgICAgZWxzZSBpZiAo
bV9vYmplY3QtPmlzUHJvZ3Jlc3NJbmRpY2F0b3IoKSB8fCBtX29iamVjdC0+aXNTbGlkZXIoKSkK
KyAgICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IHJhbmdlQXR0cnM7CisKKyAgICAvLyBUaGVzZSBh
cmUgcHJvY2Vzc2VkIGluIG9yZGVyIGJlY2F1c2UgYW4gaW5wdXQgaW1hZ2UgaXMgYSBidXR0b24s
IGFuZCBhIGJ1dHRvbiBpcyBhIGNvbnRyb2wuCisgICAgZWxzZSBpZiAobV9vYmplY3QtPmlzSW5w
dXRJbWFnZSgpKQorICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0gaW5wdXRJbWFnZUF0dHJzOwor
ICAgIGVsc2UgaWYgKG1fb2JqZWN0LT5pc0J1dHRvbigpKQorICAgICAgICBvYmplY3RBdHRyaWJ1
dGVzID0gYnV0dG9uQXR0cnM7CisgICAgZWxzZSBpZiAobV9vYmplY3QtPmlzQ29udHJvbCgpKQor
ICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0gY29udHJvbEF0dHJzOworICAgIAorICAgIGVsc2Ug
aWYgKG1fb2JqZWN0LT5pc0dyb3VwKCkgfHwgbV9vYmplY3QtPmlzTGlzdEl0ZW0oKSkKKyAgICAg
ICAgb2JqZWN0QXR0cmlidXRlcyA9IGdyb3VwQXR0cnM7CisgICAgZWxzZSBpZiAobV9vYmplY3Qt
PmlzVGFiTGlzdCgpKQorICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0gdGFiTGlzdEF0dHJzOwor
ICAgIGVsc2UgaWYgKG1fb2JqZWN0LT5pc1Njcm9sbFZpZXcoKSkKKyAgICAgICAgb2JqZWN0QXR0
cmlidXRlcyA9IHNjcm9sbFZpZXdBdHRyczsKKyAgICAKKyAgICBlbHNlIGlmIChtX29iamVjdC0+
aXNNZW51KCkpCisgICAgICAgIG9iamVjdEF0dHJpYnV0ZXMgPSBtZW51QXR0cnM7CisgICAgZWxz
ZSBpZiAobV9vYmplY3QtPmlzTWVudUJhcigpKQorICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0g
bWVudUJhckF0dHJzOworICAgIGVsc2UgaWYgKG1fb2JqZWN0LT5pc01lbnVCdXR0b24oKSkKKyAg
ICAgICAgb2JqZWN0QXR0cmlidXRlcyA9IG1lbnVCdXR0b25BdHRyczsKKyAgICBlbHNlIGlmICht
X29iamVjdC0+aXNNZW51SXRlbSgpKQorICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0gbWVudUl0
ZW1BdHRyczsKKyAgICAKKyAgICBOU0FycmF5ICphZGRpdGlvbmFsQXR0cmlidXRlcyA9IFtzZWxm
IGFkZGl0aW9uYWxBY2Nlc3NpYmlsaXR5QXR0cmlidXRlTmFtZXNdOworICAgIGlmIChbYWRkaXRp
b25hbEF0dHJpYnV0ZXMgY291bnRdKQorICAgICAgICBvYmplY3RBdHRyaWJ1dGVzID0gW29iamVj
dEF0dHJpYnV0ZXMgYXJyYXlCeUFkZGluZ09iamVjdHNGcm9tQXJyYXk6YWRkaXRpb25hbEF0dHJp
YnV0ZXNdOworICAgIAorICAgIHJldHVybiBvYmplY3RBdHRyaWJ1dGVzOworfQorCistIChWaXNp
YmxlUG9zaXRpb25SYW5nZSl2aXNpYmxlUG9zaXRpb25SYW5nZUZvclRleHRNYXJrZXJSYW5nZToo
aWQpdGV4dE1hcmtlclJhbmdlCit7CisgICAgaWYgKCF0ZXh0TWFya2VyUmFuZ2UpCisgICAgICAg
IHJldHVybiBWaXNpYmxlUG9zaXRpb25SYW5nZSgpOworICAgIEFYT2JqZWN0Q2FjaGUqIGNhY2hl
ID0gbV9vYmplY3QtPmF4T2JqZWN0Q2FjaGUoKTsKKyAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9u
UmFuZ2UodmlzaWJsZVBvc2l0aW9uRm9yU3RhcnRPZlRleHRNYXJrZXJSYW5nZShjYWNoZSwgdGV4
dE1hcmtlclJhbmdlKSwgdmlzaWJsZVBvc2l0aW9uRm9yRW5kT2ZUZXh0TWFya2VyUmFuZ2UoY2Fj
aGUsIHRleHRNYXJrZXJSYW5nZSkpOworfQorCistIChOU0FycmF5KilyZW5kZXJXaWRnZXRDaGls
ZHJlbgoreworICAgIFdpZGdldCogd2lkZ2V0ID0gbV9vYmplY3QtPndpZGdldCgpOworICAgIGlm
ICghd2lkZ2V0KQorICAgICAgICByZXR1cm4gbmlsOworICAgIHJldHVybiBbKHdpZGdldC0+cGxh
dGZvcm1XaWRnZXQoKSkgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOiBOU0FjY2Vzc2liaWxp
dHlDaGlsZHJlbkF0dHJpYnV0ZV07Cit9CisKKy0gKGlkKXJlbW90ZUFjY2Vzc2liaWxpdHlQYXJl
bnRPYmplY3QKK3sKKyAgICBpZiAoIW1fb2JqZWN0IHx8ICFtX29iamVjdC0+ZG9jdW1lbnQoKSkK
KyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAKKyAgICByZXR1cm4gbV9vYmplY3QtPmRvY3VtZW50
KCktPmZyYW1lKCktPmxvYWRlcigpLT5jbGllbnQoKS0+YWNjZXNzaWJpbGl0eVJlbW90ZU9iamVj
dCgpOworfQorCitzdGF0aWMgdm9pZCBjb252ZXJ0VG9WZWN0b3IoTlNBcnJheSogYXJyYXksIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgdmVjdG9yKQor
eworICAgIHVuc2lnbmVkIGxlbmd0aCA9IFthcnJheSBjb3VudF07CisgICAgdmVjdG9yLnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkobGVuZ3RoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bGVuZ3RoOyArK2kpIHsKKyAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqID0gW1thcnJh
eSBvYmplY3RBdEluZGV4OmldIGFjY2Vzc2liaWxpdHlPYmplY3RdOworICAgICAgICBpZiAob2Jq
KQorICAgICAgICAgICAgdmVjdG9yLmFwcGVuZChvYmopOworICAgIH0KK30KKworc3RhdGljIE5T
TXV0YWJsZUFycmF5KiBjb252ZXJ0VG9OU0FycmF5KGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3Q6
OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgdmVjdG9yKQoreworICAgIHVuc2lnbmVkIGxl
bmd0aCA9IHZlY3Rvci5zaXplKCk7CisgICAgTlNNdXRhYmxlQXJyYXkqIGFycmF5ID0gW05TTXV0
YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OiBsZW5ndGhdOworICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlciogd3JhcHBlciA9IHZlY3RvcltpXS0+d3JhcHBlcigpOworICAgICAgICBBU1NFUlQod3Jh
cHBlcik7CisgICAgICAgIGlmICh3cmFwcGVyKSB7CisgICAgICAgICAgICAvLyB3ZSB3YW50IHRv
IHJldHVybiB0aGUgYXR0YWNobWVudCB2aWV3IGluc3RlYWQgb2YgdGhlIG9iamVjdCByZXByZXNl
bnRpbmcgdGhlIGF0dGFjaG1lbnQuCisgICAgICAgICAgICAvLyBvdGhlcndpc2UsIHdlIGdldCBw
YWxpbmRyb21lIGVycm9ycyBpbiB0aGUgQVggaGllcmFyY2h5CisgICAgICAgICAgICBpZiAodmVj
dG9yW2ldLT5pc0F0dGFjaG1lbnQoKSAmJiBbd3JhcHBlciBhdHRhY2htZW50Vmlld10pCisgICAg
ICAgICAgICAgICAgW2FycmF5IGFkZE9iamVjdDpbd3JhcHBlciBhdHRhY2htZW50Vmlld11dOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIFthcnJheSBhZGRPYmplY3Q6d3JhcHBl
cl07CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGFycmF5OworfQorCistIChpZCl0ZXh0
TWFya2VyUmFuZ2VGb3JTZWxlY3Rpb24KK3sKKyAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlv
biA9IG1fb2JqZWN0LT5zZWxlY3Rpb24oKTsKKyAgICBpZiAoc2VsZWN0aW9uLmlzTm9uZSgpKQor
ICAgICAgICByZXR1cm4gbmlsOworICAgIHJldHVybiBbc2VsZiB0ZXh0TWFya2VyUmFuZ2VGcm9t
VmlzaWJsZVBvc2l0aW9uczpzZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCkgZW5kUG9zaXRpb246c2Vs
ZWN0aW9uLnZpc2libGVFbmQoKV07Cit9CisKKy0gKE5TVmFsdWUgKilwb3NpdGlvbgoreworICAg
IExheW91dFJlY3QgcmVjdCA9IG1fb2JqZWN0LT5lbGVtZW50UmVjdCgpOworICAgIE5TUG9pbnQg
cG9pbnQ7CisgICAgCisgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtX29iamVjdC0+ZG9jdW1l
bnRGcmFtZVZpZXcoKTsKKworICAgIC8vIFdlYktpdDEgY29kZSBwYXRoLi4uIHBsYXRmb3JtV2lk
Z2V0KCkgZXhpc3RzLgorICAgIGlmIChmcmFtZVZpZXcgJiYgZnJhbWVWaWV3LT5wbGF0Zm9ybVdp
ZGdldCgpKSB7CisgICAgCisgICAgICAgIC8vIFRoZSBDb2NvYSBhY2Nlc3NpYmlsaXR5IEFQSSB3
YW50cyB0aGUgbG93ZXItbGVmdCBjb3JuZXIuCisgICAgICAgIHBvaW50ID0gTlNNYWtlUG9pbnQo
cmVjdC54KCksIHJlY3QubWF4WSgpKTsKKyAgICAgICAgCisgICAgICAgIGlmIChmcmFtZVZpZXcp
IHsKKyAgICAgICAgICAgIE5TVmlldyogdmlldyA9IGZyYW1lVmlldy0+ZG9jdW1lbnRWaWV3KCk7
CisgICAgICAgICAgICBwb2ludCA9IFtbdmlldyB3aW5kb3ddIGNvbnZlcnRCYXNlVG9TY3JlZW46
W3ZpZXcgY29udmVydFBvaW50OiBwb2ludCB0b1ZpZXc6bmlsXV07CisgICAgICAgIH0KKyAgICB9
IGVsc2UgeworICAgICAgICAKKyAgICAgICAgLy8gRmluZCB0aGUgYXBwcm9wcmlhdGUgc2Nyb2xs
IHZpZXcgdG8gdXNlIHRvIGNvbnZlcnQgdGhlIGNvbnRlbnRzIHRvIHRoZSB3aW5kb3cuCisgICAg
ICAgIFNjcm9sbFZpZXcqIHNjcm9sbFZpZXcgPSAwOworICAgICAgICBmb3IgKEFjY2Vzc2liaWxp
dHlPYmplY3QqIHBhcmVudCA9IG1fb2JqZWN0LT5wYXJlbnRPYmplY3QoKTsgcGFyZW50OyBwYXJl
bnQgPSBwYXJlbnQtPnBhcmVudE9iamVjdCgpKSB7CisgICAgICAgICAgICBpZiAocGFyZW50LT5p
c0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KCkpIHsKKyAgICAgICAgICAgICAgICBzY3JvbGxWaWV3
ID0gdG9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldyhwYXJlbnQpLT5zY3JvbGxWaWV3KCk7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBp
ZiAoc2Nyb2xsVmlldykKKyAgICAgICAgICAgIHJlY3QgPSBzY3JvbGxWaWV3LT5jb250ZW50c1Rv
V2luZG93KHJlY3QpOworICAgICAgICAKKyAgICAgICAgaWYgKG1fb2JqZWN0LT5wYWdlKCkpCisg
ICAgICAgICAgICBwb2ludCA9IG1fb2JqZWN0LT5wYWdlKCktPmNocm9tZSgpLT53aW5kb3dUb1Nj
cmVlbihyZWN0KS5sb2NhdGlvbigpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBwb2ludCA9
IHJlY3QubG9jYXRpb24oKTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIFtOU1ZhbHVlIHZhbHVl
V2l0aFBvaW50OnBvaW50XTsKK30KKwordHlwZWRlZiBIYXNoTWFwPGludCwgTlNTdHJpbmcqPiBB
Y2Nlc3NpYmlsaXR5Um9sZU1hcDsKKworc3RhdGljIGNvbnN0IEFjY2Vzc2liaWxpdHlSb2xlTWFw
JiBjcmVhdGVBY2Nlc3NpYmlsaXR5Um9sZU1hcCgpCit7CisgICAgc3RydWN0IFJvbGVFbnRyeSB7
CisgICAgICAgIEFjY2Vzc2liaWxpdHlSb2xlIHZhbHVlOworICAgICAgICBOU1N0cmluZyogc3Ry
aW5nOworICAgIH07CisgICAgCisgICAgc3RhdGljIGNvbnN0IFJvbGVFbnRyeSByb2xlc1tdID0g
eworICAgICAgICB7IFVua25vd25Sb2xlLCBOU0FjY2Vzc2liaWxpdHlVbmtub3duUm9sZSB9LAor
ICAgICAgICB7IEJ1dHRvblJvbGUsIE5TQWNjZXNzaWJpbGl0eUJ1dHRvblJvbGUgfSwKKyAgICAg
ICAgeyBSYWRpb0J1dHRvblJvbGUsIE5TQWNjZXNzaWJpbGl0eVJhZGlvQnV0dG9uUm9sZSB9LAor
ICAgICAgICB7IENoZWNrQm94Um9sZSwgTlNBY2Nlc3NpYmlsaXR5Q2hlY2tCb3hSb2xlIH0sCisg
ICAgICAgIHsgU2xpZGVyUm9sZSwgTlNBY2Nlc3NpYmlsaXR5U2xpZGVyUm9sZSB9LAorICAgICAg
ICB7IFRhYkdyb3VwUm9sZSwgTlNBY2Nlc3NpYmlsaXR5VGFiR3JvdXBSb2xlIH0sCisgICAgICAg
IHsgVGV4dEZpZWxkUm9sZSwgTlNBY2Nlc3NpYmlsaXR5VGV4dEZpZWxkUm9sZSB9LAorICAgICAg
ICB7IFN0YXRpY1RleHRSb2xlLCBOU0FjY2Vzc2liaWxpdHlTdGF0aWNUZXh0Um9sZSB9LAorICAg
ICAgICB7IFRleHRBcmVhUm9sZSwgTlNBY2Nlc3NpYmlsaXR5VGV4dEFyZWFSb2xlIH0sCisgICAg
ICAgIHsgU2Nyb2xsQXJlYVJvbGUsIE5TQWNjZXNzaWJpbGl0eVNjcm9sbEFyZWFSb2xlIH0sCisg
ICAgICAgIHsgUG9wVXBCdXR0b25Sb2xlLCBOU0FjY2Vzc2liaWxpdHlQb3BVcEJ1dHRvblJvbGUg
fSwKKyAgICAgICAgeyBNZW51QnV0dG9uUm9sZSwgTlNBY2Nlc3NpYmlsaXR5TWVudUJ1dHRvblJv
bGUgfSwKKyAgICAgICAgeyBUYWJsZVJvbGUsIE5TQWNjZXNzaWJpbGl0eVRhYmxlUm9sZSB9LAor
ICAgICAgICB7IEFwcGxpY2F0aW9uUm9sZSwgTlNBY2Nlc3NpYmlsaXR5QXBwbGljYXRpb25Sb2xl
IH0sCisgICAgICAgIHsgR3JvdXBSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAg
ICAgICAgeyBSYWRpb0dyb3VwUm9sZSwgTlNBY2Nlc3NpYmlsaXR5UmFkaW9Hcm91cFJvbGUgfSwK
KyAgICAgICAgeyBMaXN0Um9sZSwgTlNBY2Nlc3NpYmlsaXR5TGlzdFJvbGUgfSwKKyAgICAgICAg
eyBEaXJlY3RvcnlSb2xlLCBOU0FjY2Vzc2liaWxpdHlMaXN0Um9sZSB9LAorICAgICAgICB7IFNj
cm9sbEJhclJvbGUsIE5TQWNjZXNzaWJpbGl0eVNjcm9sbEJhclJvbGUgfSwKKyAgICAgICAgeyBW
YWx1ZUluZGljYXRvclJvbGUsIE5TQWNjZXNzaWJpbGl0eVZhbHVlSW5kaWNhdG9yUm9sZSB9LAor
ICAgICAgICB7IEltYWdlUm9sZSwgTlNBY2Nlc3NpYmlsaXR5SW1hZ2VSb2xlIH0sCisgICAgICAg
IHsgTWVudUJhclJvbGUsIE5TQWNjZXNzaWJpbGl0eU1lbnVCYXJSb2xlIH0sCisgICAgICAgIHsg
TWVudVJvbGUsIE5TQWNjZXNzaWJpbGl0eU1lbnVSb2xlIH0sCisgICAgICAgIHsgTWVudUl0ZW1S
b2xlLCBOU0FjY2Vzc2liaWxpdHlNZW51SXRlbVJvbGUgfSwKKyAgICAgICAgeyBDb2x1bW5Sb2xl
LCBOU0FjY2Vzc2liaWxpdHlDb2x1bW5Sb2xlIH0sCisgICAgICAgIHsgUm93Um9sZSwgTlNBY2Nl
c3NpYmlsaXR5Um93Um9sZSB9LAorICAgICAgICB7IFRvb2xiYXJSb2xlLCBOU0FjY2Vzc2liaWxp
dHlUb29sYmFyUm9sZSB9LAorICAgICAgICB7IEJ1c3lJbmRpY2F0b3JSb2xlLCBOU0FjY2Vzc2li
aWxpdHlCdXN5SW5kaWNhdG9yUm9sZSB9LAorICAgICAgICB7IFByb2dyZXNzSW5kaWNhdG9yUm9s
ZSwgTlNBY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3JSb2xlIH0sCisgICAgICAgIHsgV2lu
ZG93Um9sZSwgTlNBY2Nlc3NpYmlsaXR5V2luZG93Um9sZSB9LAorICAgICAgICB7IERyYXdlclJv
bGUsIE5TQWNjZXNzaWJpbGl0eURyYXdlclJvbGUgfSwKKyAgICAgICAgeyBTeXN0ZW1XaWRlUm9s
ZSwgTlNBY2Nlc3NpYmlsaXR5U3lzdGVtV2lkZVJvbGUgfSwKKyAgICAgICAgeyBPdXRsaW5lUm9s
ZSwgTlNBY2Nlc3NpYmlsaXR5T3V0bGluZVJvbGUgfSwKKyAgICAgICAgeyBJbmNyZW1lbnRvclJv
bGUsIE5TQWNjZXNzaWJpbGl0eUluY3JlbWVudG9yUm9sZSB9LAorICAgICAgICB7IEJyb3dzZXJS
b2xlLCBOU0FjY2Vzc2liaWxpdHlCcm93c2VyUm9sZSB9LAorICAgICAgICB7IENvbWJvQm94Um9s
ZSwgTlNBY2Nlc3NpYmlsaXR5Q29tYm9Cb3hSb2xlIH0sCisgICAgICAgIHsgU3BsaXRHcm91cFJv
bGUsIE5TQWNjZXNzaWJpbGl0eVNwbGl0R3JvdXBSb2xlIH0sCisgICAgICAgIHsgU3BsaXR0ZXJS
b2xlLCBOU0FjY2Vzc2liaWxpdHlTcGxpdHRlclJvbGUgfSwKKyAgICAgICAgeyBDb2xvcldlbGxS
b2xlLCBOU0FjY2Vzc2liaWxpdHlDb2xvcldlbGxSb2xlIH0sCisgICAgICAgIHsgR3Jvd0FyZWFS
b2xlLCBOU0FjY2Vzc2liaWxpdHlHcm93QXJlYVJvbGUgfSwKKyAgICAgICAgeyBTaGVldFJvbGUs
IE5TQWNjZXNzaWJpbGl0eVNoZWV0Um9sZSB9LAorICAgICAgICB7IEhlbHBUYWdSb2xlLCBOU0Fj
Y2Vzc2liaWxpdHlIZWxwVGFnUm9sZSB9LAorICAgICAgICB7IE1hdHRlUm9sZSwgTlNBY2Nlc3Np
YmlsaXR5TWF0dGVSb2xlIH0sIAorICAgICAgICB7IFJ1bGVyUm9sZSwgTlNBY2Nlc3NpYmlsaXR5
UnVsZXJSb2xlIH0sCisgICAgICAgIHsgUnVsZXJNYXJrZXJSb2xlLCBOU0FjY2Vzc2liaWxpdHlS
dWxlck1hcmtlclJvbGUgfSwKKyAgICAgICAgeyBMaW5rUm9sZSwgTlNBY2Nlc3NpYmlsaXR5TGlu
a1JvbGUgfSwKKyAgICAgICAgeyBEaXNjbG9zdXJlVHJpYW5nbGVSb2xlLCBOU0FjY2Vzc2liaWxp
dHlEaXNjbG9zdXJlVHJpYW5nbGVSb2xlIH0sCisgICAgICAgIHsgR3JpZFJvbGUsIE5TQWNjZXNz
aWJpbGl0eUdyaWRSb2xlIH0sCisgICAgICAgIHsgV2ViQ29yZUxpbmtSb2xlLCBOU0FjY2Vzc2li
aWxpdHlMaW5rUm9sZSB9LCAKKyAgICAgICAgeyBJbWFnZU1hcExpbmtSb2xlLCBOU0FjY2Vzc2li
aWxpdHlMaW5rUm9sZSB9LAorICAgICAgICB7IEltYWdlTWFwUm9sZSwgQCJBWEltYWdlTWFwIiB9
LAorICAgICAgICB7IExpc3RNYXJrZXJSb2xlLCBAIkFYTGlzdE1hcmtlciIgfSwKKyAgICAgICAg
eyBXZWJBcmVhUm9sZSwgQCJBWFdlYkFyZWEiIH0sCisgICAgICAgIHsgSGVhZGluZ1JvbGUsIEAi
QVhIZWFkaW5nIiB9LAorICAgICAgICB7IExpc3RCb3hSb2xlLCBOU0FjY2Vzc2liaWxpdHlMaXN0
Um9sZSB9LAorICAgICAgICB7IExpc3RCb3hPcHRpb25Sb2xlLCBOU0FjY2Vzc2liaWxpdHlTdGF0
aWNUZXh0Um9sZSB9LAorI2lmIEFDQ0VTU0lCSUxJVFlfVEFCTEVTCisgICAgICAgIHsgQ2VsbFJv
bGUsIE5TQWNjZXNzaWJpbGl0eUNlbGxSb2xlIH0sCisjZWxzZQorICAgICAgICB7IENlbGxSb2xl
LCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyNlbmRpZgorICAgICAgICB7IFRhYmxlSGVh
ZGVyQ29udGFpbmVyUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsg
RGVmaW5pdGlvbkxpc3REZWZpbml0aW9uUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0s
CisgICAgICAgIHsgRGVmaW5pdGlvbkxpc3RUZXJtUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBS
b2xlIH0sCisgICAgICAgIHsgU2xpZGVyVGh1bWJSb2xlLCBOU0FjY2Vzc2liaWxpdHlWYWx1ZUlu
ZGljYXRvclJvbGUgfSwKKyAgICAgICAgeyBMYW5kbWFya0FwcGxpY2F0aW9uUm9sZSwgTlNBY2Nl
c3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsgTGFuZG1hcmtCYW5uZXJSb2xlLCBOU0Fj
Y2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBMYW5kbWFya0NvbXBsZW1lbnRhcnlS
b2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBMYW5kbWFya0NvbnRl
bnRJbmZvUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsgTGFuZG1h
cmtNYWluUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsgTGFuZG1h
cmtOYXZpZ2F0aW9uUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsg
TGFuZG1hcmtTZWFyY2hSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAg
eyBBcHBsaWNhdGlvbkFsZXJ0Um9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAg
ICAgIHsgQXBwbGljYXRpb25BbGVydERpYWxvZ1JvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9s
ZSB9LAorICAgICAgICB7IEFwcGxpY2F0aW9uRGlhbG9nUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3Jv
dXBSb2xlIH0sCisgICAgICAgIHsgQXBwbGljYXRpb25Mb2dSb2xlLCBOU0FjY2Vzc2liaWxpdHlH
cm91cFJvbGUgfSwKKyAgICAgICAgeyBBcHBsaWNhdGlvbk1hcnF1ZWVSb2xlLCBOU0FjY2Vzc2li
aWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBBcHBsaWNhdGlvblN0YXR1c1JvbGUsIE5TQWNj
ZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAorICAgICAgICB7IEFwcGxpY2F0aW9uVGltZXJSb2xlLCBO
U0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBEb2N1bWVudFJvbGUsIE5TQWNj
ZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAorICAgICAgICB7IERvY3VtZW50QXJ0aWNsZVJvbGUsIE5T
QWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAorICAgICAgICB7IERvY3VtZW50TWF0aFJvbGUsIE5T
QWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAorICAgICAgICB7IERvY3VtZW50Tm90ZVJvbGUsIE5T
QWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9LAorICAgICAgICB7IERvY3VtZW50UmVnaW9uUm9sZSwg
TlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAgIHsgVXNlckludGVyZmFjZVRvb2x0
aXBSb2xlLCBOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBUYWJSb2xlLCBO
U0FjY2Vzc2liaWxpdHlSYWRpb0J1dHRvblJvbGUgfSwKKyAgICAgICAgeyBUYWJMaXN0Um9sZSwg
TlNBY2Nlc3NpYmlsaXR5VGFiR3JvdXBSb2xlIH0sCisgICAgICAgIHsgVGFiUGFuZWxSb2xlLCBO
U0FjY2Vzc2liaWxpdHlHcm91cFJvbGUgfSwKKyAgICAgICAgeyBUcmVlUm9sZSwgTlNBY2Nlc3Np
YmlsaXR5T3V0bGluZVJvbGUgfSwKKyAgICAgICAgeyBUcmVlSXRlbVJvbGUsIE5TQWNjZXNzaWJp
bGl0eVJvd1JvbGUgfSwKKyAgICAgICAgeyBMaXN0SXRlbVJvbGUsIE5TQWNjZXNzaWJpbGl0eUdy
b3VwUm9sZSB9LAorICAgICAgICB7IFBhcmFncmFwaFJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3Vw
Um9sZSB9LAorICAgICAgICB7IExhYmVsUm9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0s
CisgICAgICAgIHsgRGl2Um9sZSwgTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlIH0sCisgICAgICAg
IHsgRm9ybVJvbGUsIE5TQWNjZXNzaWJpbGl0eUdyb3VwUm9sZSB9CisgICAgfTsKKyAgICBBY2Nl
c3NpYmlsaXR5Um9sZU1hcCYgcm9sZU1hcCA9ICpuZXcgQWNjZXNzaWJpbGl0eVJvbGVNYXA7Cisg
ICAgCisgICAgY29uc3QgdW5zaWduZWQgbnVtUm9sZXMgPSBzaXplb2Yocm9sZXMpIC8gc2l6ZW9m
KHJvbGVzWzBdKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtUm9sZXM7ICsraSkK
KyAgICAgICAgcm9sZU1hcC5zZXQocm9sZXNbaV0udmFsdWUsIHJvbGVzW2ldLnN0cmluZyk7Cisg
ICAgcmV0dXJuIHJvbGVNYXA7Cit9CisKK3N0YXRpYyBOU1N0cmluZyogcm9sZVZhbHVlVG9OU1N0
cmluZyhBY2Nlc3NpYmlsaXR5Um9sZSB2YWx1ZSkKK3sKKyAgICBBU1NFUlQodmFsdWUpOworICAg
IHN0YXRpYyBjb25zdCBBY2Nlc3NpYmlsaXR5Um9sZU1hcCYgcm9sZU1hcCA9IGNyZWF0ZUFjY2Vz
c2liaWxpdHlSb2xlTWFwKCk7CisgICAgcmV0dXJuIHJvbGVNYXAuZ2V0KHZhbHVlKTsKK30KKwor
LSAoTlNTdHJpbmcqKXJvbGUKK3sKKyAgICBpZiAobV9vYmplY3QtPmlzQXR0YWNobWVudCgpKQor
ICAgICAgICByZXR1cm4gW1tzZWxmIGF0dGFjaG1lbnRWaWV3XSBhY2Nlc3NpYmlsaXR5QXR0cmli
dXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5Um9sZUF0dHJpYnV0ZV07CisgICAgTlNTdHJpbmcqIHN0
cmluZyA9IHJvbGVWYWx1ZVRvTlNTdHJpbmcobV9vYmplY3QtPnJvbGVWYWx1ZSgpKTsKKyAgICBp
ZiAoc3RyaW5nICE9IG5pbCkKKyAgICAgICAgcmV0dXJuIHN0cmluZzsKKyAgICByZXR1cm4gTlNB
Y2Nlc3NpYmlsaXR5VW5rbm93blJvbGU7Cit9CisKKy0gKE5TU3RyaW5nKilzdWJyb2xlCit7Cisg
ICAgaWYgKG1fb2JqZWN0LT5pc1Bhc3N3b3JkRmllbGQoKSkKKyAgICAgICAgcmV0dXJuIE5TQWNj
ZXNzaWJpbGl0eVNlY3VyZVRleHRGaWVsZFN1YnJvbGU7CisgICAgCisgICAgaWYgKG1fb2JqZWN0
LT5pc0F0dGFjaG1lbnQoKSkgeworICAgICAgICBOU1ZpZXcqIGF0dGFjaFZpZXcgPSBbc2VsZiBh
dHRhY2htZW50Vmlld107CisgICAgICAgIGlmIChbW2F0dGFjaFZpZXcgYWNjZXNzaWJpbGl0eUF0
dHJpYnV0ZU5hbWVzXSBjb250YWluc09iamVjdDpOU0FjY2Vzc2liaWxpdHlTdWJyb2xlQXR0cmli
dXRlXSkgeworICAgICAgICAgICAgcmV0dXJuIFthdHRhY2hWaWV3IGFjY2Vzc2liaWxpdHlBdHRy
aWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlTdWJyb2xlQXR0cmlidXRlXTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICAKKyAgICBpZiAobV9vYmplY3QtPmlzVHJlZUl0ZW0oKSkKKyAgICAgICAgcmV0
dXJuIE5TQWNjZXNzaWJpbGl0eU91dGxpbmVSb3dTdWJyb2xlOworICAgIAorICAgIGlmIChtX29i
amVjdC0+aXNMaXN0KCkpIHsKKyAgICAgICAgQWNjZXNzaWJpbGl0eUxpc3QqIGxpc3RPYmplY3Qg
PSBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5TGlzdCo+KG1fb2JqZWN0KTsKKyAgICAgICAgaWYg
KGxpc3RPYmplY3QtPmlzVW5vcmRlcmVkTGlzdCgpIHx8IGxpc3RPYmplY3QtPmlzT3JkZXJlZExp
c3QoKSkKKyAgICAgICAgICAgIHJldHVybiBOU0FjY2Vzc2liaWxpdHlDb250ZW50TGlzdFN1YnJv
bGU7CisgICAgICAgIGlmIChsaXN0T2JqZWN0LT5pc0RlZmluaXRpb25MaXN0KCkpCisgICAgICAg
ICAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5RGVmaW5pdGlvbkxpc3RTdWJyb2xlOworICAgIH0K
KyAgICAKKyAgICAvLyBBUklBIGNvbnRlbnQgc3Vicm9sZXMuCisgICAgc3dpdGNoIChtX29iamVj
dC0+cm9sZVZhbHVlKCkpIHsKKyAgICAgICAgY2FzZSBMYW5kbWFya0FwcGxpY2F0aW9uUm9sZToK
KyAgICAgICAgICAgIHJldHVybiBAIkFYTGFuZG1hcmtBcHBsaWNhdGlvbiI7CisgICAgICAgIGNh
c2UgTGFuZG1hcmtCYW5uZXJSb2xlOgorICAgICAgICAgICAgcmV0dXJuIEAiQVhMYW5kbWFya0Jh
bm5lciI7CisgICAgICAgIGNhc2UgTGFuZG1hcmtDb21wbGVtZW50YXJ5Um9sZToKKyAgICAgICAg
ICAgIHJldHVybiBAIkFYTGFuZG1hcmtDb21wbGVtZW50YXJ5IjsKKyAgICAgICAgY2FzZSBMYW5k
bWFya0NvbnRlbnRJbmZvUm9sZToKKyAgICAgICAgICAgIHJldHVybiBAIkFYTGFuZG1hcmtDb250
ZW50SW5mbyI7CisgICAgICAgIGNhc2UgTGFuZG1hcmtNYWluUm9sZToKKyAgICAgICAgICAgIHJl
dHVybiBAIkFYTGFuZG1hcmtNYWluIjsKKyAgICAgICAgY2FzZSBMYW5kbWFya05hdmlnYXRpb25S
b2xlOgorICAgICAgICAgICAgcmV0dXJuIEAiQVhMYW5kbWFya05hdmlnYXRpb24iOworICAgICAg
ICBjYXNlIExhbmRtYXJrU2VhcmNoUm9sZToKKyAgICAgICAgICAgIHJldHVybiBAIkFYTGFuZG1h
cmtTZWFyY2giOworICAgICAgICBjYXNlIEFwcGxpY2F0aW9uQWxlcnRSb2xlOgorICAgICAgICAg
ICAgcmV0dXJuIEAiQVhBcHBsaWNhdGlvbkFsZXJ0IjsKKyAgICAgICAgY2FzZSBBcHBsaWNhdGlv
bkFsZXJ0RGlhbG9nUm9sZToKKyAgICAgICAgICAgIHJldHVybiBAIkFYQXBwbGljYXRpb25BbGVy
dERpYWxvZyI7CisgICAgICAgIGNhc2UgQXBwbGljYXRpb25EaWFsb2dSb2xlOgorICAgICAgICAg
ICAgcmV0dXJuIEAiQVhBcHBsaWNhdGlvbkRpYWxvZyI7CisgICAgICAgIGNhc2UgQXBwbGljYXRp
b25Mb2dSb2xlOgorICAgICAgICAgICAgcmV0dXJuIEAiQVhBcHBsaWNhdGlvbkxvZyI7CisgICAg
ICAgIGNhc2UgQXBwbGljYXRpb25NYXJxdWVlUm9sZToKKyAgICAgICAgICAgIHJldHVybiBAIkFY
QXBwbGljYXRpb25NYXJxdWVlIjsKKyAgICAgICAgY2FzZSBBcHBsaWNhdGlvblN0YXR1c1JvbGU6
CisgICAgICAgICAgICByZXR1cm4gQCJBWEFwcGxpY2F0aW9uU3RhdHVzIjsKKyAgICAgICAgY2Fz
ZSBBcHBsaWNhdGlvblRpbWVyUm9sZToKKyAgICAgICAgICAgIHJldHVybiBAIkFYQXBwbGljYXRp
b25UaW1lciI7CisgICAgICAgIGNhc2UgRG9jdW1lbnRSb2xlOgorICAgICAgICAgICAgcmV0dXJu
IEAiQVhEb2N1bWVudCI7CisgICAgICAgIGNhc2UgRG9jdW1lbnRBcnRpY2xlUm9sZToKKyAgICAg
ICAgICAgIHJldHVybiBAIkFYRG9jdW1lbnRBcnRpY2xlIjsKKyAgICAgICAgY2FzZSBEb2N1bWVu
dE1hdGhSb2xlOgorICAgICAgICAgICAgcmV0dXJuIEAiQVhEb2N1bWVudE1hdGgiOworICAgICAg
ICBjYXNlIERvY3VtZW50Tm90ZVJvbGU6CisgICAgICAgICAgICByZXR1cm4gQCJBWERvY3VtZW50
Tm90ZSI7CisgICAgICAgIGNhc2UgRG9jdW1lbnRSZWdpb25Sb2xlOgorICAgICAgICAgICAgcmV0
dXJuIEAiQVhEb2N1bWVudFJlZ2lvbiI7CisgICAgICAgIGNhc2UgVXNlckludGVyZmFjZVRvb2x0
aXBSb2xlOgorICAgICAgICAgICAgcmV0dXJuIEAiQVhVc2VySW50ZXJmYWNlVG9vbHRpcCI7Cisg
ICAgICAgIGNhc2UgVGFiUGFuZWxSb2xlOgorICAgICAgICAgICAgcmV0dXJuIEAiQVhUYWJQYW5l
bCI7CisgICAgICAgIGNhc2UgRGVmaW5pdGlvbkxpc3RUZXJtUm9sZToKKyAgICAgICAgICAgIHJl
dHVybiBAIkFYVGVybSI7CisgICAgICAgIGNhc2UgRGVmaW5pdGlvbkxpc3REZWZpbml0aW9uUm9s
ZToKKyAgICAgICAgICAgIHJldHVybiBAIkFYRGVmaW5pdGlvbiI7CisgICAgICAgIC8vIERlZmF1
bHQgZG9lc24ndCByZXR1cm4gYW55dGhpbmcsIHNvIHJvbGVzIGRlZmluZWQgYmVsb3cgY2FuIGJl
IGNob3Nlbi4KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAg
ICAKKyAgICBpZiAobV9vYmplY3QtPmlzTWVkaWFUaW1lbGluZSgpKQorICAgICAgICByZXR1cm4g
TlNBY2Nlc3NpYmlsaXR5VGltZWxpbmVTdWJyb2xlOworCisgICAgcmV0dXJuIG5pbDsKK30KKwor
LSAoTlNTdHJpbmcqKXJvbGVEZXNjcmlwdGlvbgoreworICAgIGlmICghbV9vYmplY3QpCisgICAg
ICAgIHJldHVybiBuaWw7CisKKyAgICAvLyBhdHRhY2htZW50cyBoYXZlIHRoZSBBWEltYWdlIHJv
bGUsIGJ1dCBhIGRpZmZlcmVudCBzdWJyb2xlCisgICAgaWYgKG1fb2JqZWN0LT5pc0F0dGFjaG1l
bnQoKSkKKyAgICAgICAgcmV0dXJuIFtbc2VsZiBhdHRhY2htZW50Vmlld10gYWNjZXNzaWJpbGl0
eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eVJvbGVEZXNjcmlwdGlvbkF0dHJpYnV0ZV07
CisgICAgCisgICAgTlNTdHJpbmcqIGF4Um9sZSA9IFtzZWxmIHJvbGVdOworICAgIAorICAgIGlm
IChbYXhSb2xlIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlHcm91cFJvbGVdKSB7Cisg
ICAgICAgIHN3aXRjaCAobV9vYmplY3QtPnJvbGVWYWx1ZSgpKSB7CisgICAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgICAgIHJldHVybiBOU0FjY2Vzc2liaWxpdHlSb2xlRGVzY3JpcHRp
b24oTlNBY2Nlc3NpYmlsaXR5R3JvdXBSb2xlLCBbc2VsZiBzdWJyb2xlXSk7CisgICAgICAgICAg
ICBjYXNlIExhbmRtYXJrQXBwbGljYXRpb25Sb2xlOgorICAgICAgICAgICAgICAgIHJldHVybiBB
WEFSSUFDb250ZW50R3JvdXBUZXh0KEAiQVJJQUxhbmRtYXJrQXBwbGljYXRpb24iKTsKKyAgICAg
ICAgICAgIGNhc2UgTGFuZG1hcmtCYW5uZXJSb2xlOgorICAgICAgICAgICAgICAgIHJldHVybiBB
WEFSSUFDb250ZW50R3JvdXBUZXh0KEAiQVJJQUxhbmRtYXJrQmFubmVyIik7CisgICAgICAgICAg
ICBjYXNlIExhbmRtYXJrQ29tcGxlbWVudGFyeVJvbGU6CisgICAgICAgICAgICAgICAgcmV0dXJu
IEFYQVJJQUNvbnRlbnRHcm91cFRleHQoQCJBUklBTGFuZG1hcmtDb21wbGVtZW50YXJ5Iik7Cisg
ICAgICAgICAgICBjYXNlIExhbmRtYXJrQ29udGVudEluZm9Sb2xlOgorICAgICAgICAgICAgICAg
IHJldHVybiBBWEFSSUFDb250ZW50R3JvdXBUZXh0KEAiQVJJQUxhbmRtYXJrQ29udGVudEluZm8i
KTsKKyAgICAgICAgICAgIGNhc2UgTGFuZG1hcmtNYWluUm9sZToKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gQVhBUklBQ29udGVudEdyb3VwVGV4dChAIkFSSUFMYW5kbWFya01haW4iKTsKKyAgICAg
ICAgICAgIGNhc2UgTGFuZG1hcmtOYXZpZ2F0aW9uUm9sZToKKyAgICAgICAgICAgICAgICByZXR1
cm4gQVhBUklBQ29udGVudEdyb3VwVGV4dChAIkFSSUFMYW5kbWFya05hdmlnYXRpb24iKTsKKyAg
ICAgICAgICAgIGNhc2UgTGFuZG1hcmtTZWFyY2hSb2xlOgorICAgICAgICAgICAgICAgIHJldHVy
biBBWEFSSUFDb250ZW50R3JvdXBUZXh0KEAiQVJJQUxhbmRtYXJrU2VhcmNoIik7CisgICAgICAg
ICAgICBjYXNlIEFwcGxpY2F0aW9uQWxlcnRSb2xlOgorICAgICAgICAgICAgICAgIHJldHVybiBB
WEFSSUFDb250ZW50R3JvdXBUZXh0KEAiQVJJQUFwcGxpY2F0aW9uQWxlcnQiKTsKKyAgICAgICAg
ICAgIGNhc2UgQXBwbGljYXRpb25BbGVydERpYWxvZ1JvbGU6CisgICAgICAgICAgICAgICAgcmV0
dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoQCJBUklBQXBwbGljYXRpb25BbGVydERpYWxvZyIp
OworICAgICAgICAgICAgY2FzZSBBcHBsaWNhdGlvbkRpYWxvZ1JvbGU6CisgICAgICAgICAgICAg
ICAgcmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoQCJBUklBQXBwbGljYXRpb25EaWFsb2ci
KTsKKyAgICAgICAgICAgIGNhc2UgQXBwbGljYXRpb25Mb2dSb2xlOgorICAgICAgICAgICAgICAg
IHJldHVybiBBWEFSSUFDb250ZW50R3JvdXBUZXh0KEAiQVJJQUFwcGxpY2F0aW9uTG9nIik7Cisg
ICAgICAgICAgICBjYXNlIEFwcGxpY2F0aW9uTWFycXVlZVJvbGU6CisgICAgICAgICAgICAgICAg
cmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoQCJBUklBQXBwbGljYXRpb25NYXJxdWVlIik7
CisgICAgICAgICAgICBjYXNlIEFwcGxpY2F0aW9uU3RhdHVzUm9sZToKKyAgICAgICAgICAgICAg
ICByZXR1cm4gQVhBUklBQ29udGVudEdyb3VwVGV4dChAIkFSSUFBcHBsaWNhdGlvblN0YXR1cyIp
OworICAgICAgICAgICAgY2FzZSBBcHBsaWNhdGlvblRpbWVyUm9sZToKKyAgICAgICAgICAgICAg
ICByZXR1cm4gQVhBUklBQ29udGVudEdyb3VwVGV4dChAIkFSSUFBcHBsaWNhdGlvblRpbWVyIik7
CisgICAgICAgICAgICBjYXNlIERvY3VtZW50Um9sZToKKyAgICAgICAgICAgICAgICByZXR1cm4g
QVhBUklBQ29udGVudEdyb3VwVGV4dChAIkFSSUFEb2N1bWVudCIpOworICAgICAgICAgICAgY2Fz
ZSBEb2N1bWVudEFydGljbGVSb2xlOgorICAgICAgICAgICAgICAgIHJldHVybiBBWEFSSUFDb250
ZW50R3JvdXBUZXh0KEAiQVJJQURvY3VtZW50QXJ0aWNsZSIpOworICAgICAgICAgICAgY2FzZSBE
b2N1bWVudE1hdGhSb2xlOgorICAgICAgICAgICAgICAgIHJldHVybiBBWEFSSUFDb250ZW50R3Jv
dXBUZXh0KEAiQVJJQURvY3VtZW50TWF0aCIpOworICAgICAgICAgICAgY2FzZSBEb2N1bWVudE5v
dGVSb2xlOgorICAgICAgICAgICAgICAgIHJldHVybiBBWEFSSUFDb250ZW50R3JvdXBUZXh0KEAi
QVJJQURvY3VtZW50Tm90ZSIpOworICAgICAgICAgICAgY2FzZSBEb2N1bWVudFJlZ2lvblJvbGU6
CisgICAgICAgICAgICAgICAgcmV0dXJuIEFYQVJJQUNvbnRlbnRHcm91cFRleHQoQCJBUklBRG9j
dW1lbnRSZWdpb24iKTsKKyAgICAgICAgICAgIGNhc2UgVXNlckludGVyZmFjZVRvb2x0aXBSb2xl
OgorICAgICAgICAgICAgICAgIHJldHVybiBBWEFSSUFDb250ZW50R3JvdXBUZXh0KEAiQVJJQVVz
ZXJJbnRlcmZhY2VUb29sdGlwIik7CisgICAgICAgICAgICBjYXNlIFRhYlBhbmVsUm9sZToKKyAg
ICAgICAgICAgICAgICByZXR1cm4gQVhBUklBQ29udGVudEdyb3VwVGV4dChAIkFSSUFUYWJQYW5l
bCIpOworICAgICAgICAgICAgY2FzZSBEZWZpbml0aW9uTGlzdFRlcm1Sb2xlOgorICAgICAgICAg
ICAgICAgIHJldHVybiBBWERlZmluaXRpb25MaXN0VGVybVRleHQoKTsKKyAgICAgICAgICAgIGNh
c2UgRGVmaW5pdGlvbkxpc3REZWZpbml0aW9uUm9sZToKKyAgICAgICAgICAgICAgICByZXR1cm4g
QVhEZWZpbml0aW9uTGlzdERlZmluaXRpb25UZXh0KCk7CisgICAgICAgIH0KKyAgICB9ICAgICAg
ICAKKyAgICAKKyAgICBpZiAoW2F4Um9sZSBpc0VxdWFsVG9TdHJpbmc6QCJBWFdlYkFyZWEiXSkK
KyAgICAgICAgcmV0dXJuIEFYV2ViQXJlYVRleHQoKTsKKyAgICAKKyAgICBpZiAoW2F4Um9sZSBp
c0VxdWFsVG9TdHJpbmc6QCJBWExpbmsiXSkKKyAgICAgICAgcmV0dXJuIEFYTGlua1RleHQoKTsK
KyAgICAKKyAgICBpZiAoW2F4Um9sZSBpc0VxdWFsVG9TdHJpbmc6QCJBWExpc3RNYXJrZXIiXSkK
KyAgICAgICAgcmV0dXJuIEFYTGlzdE1hcmtlclRleHQoKTsKKyAgICAKKyAgICBpZiAoW2F4Um9s
ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWEltYWdlTWFwIl0pCisgICAgICAgIHJldHVybiBBWEltYWdl
TWFwVGV4dCgpOworCisgICAgaWYgKFtheFJvbGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhIZWFkaW5n
Il0pCisgICAgICAgIHJldHVybiBBWEhlYWRpbmdUZXh0KCk7CisKKyAgICAvLyBBcHBLaXQgYWxz
byByZXR1cm5zIEFYVGFiIGZvciB0aGUgcm9sZSBkZXNjcmlwdGlvbiBmb3IgYSB0YWIgaXRlbS4K
KyAgICBpZiAobV9vYmplY3QtPmlzVGFiSXRlbSgpKQorICAgICAgICByZXR1cm4gTlNBY2Nlc3Np
YmlsaXR5Um9sZURlc2NyaXB0aW9uKEAiQVhUYWIiLCBuaWwpOworICAgIAorICAgIC8vIFdlIHNo
b3VsZCB0cnkgdGhlIHN5c3RlbSBkZWZhdWx0IHJvbGUgZGVzY3JpcHRpb24gZm9yIGFsbCBvdGhl
ciByb2xlcy4KKyAgICAvLyBJZiB3ZSBnZXQgdGhlIHNhbWUgc3RyaW5nIGJhY2ssIHRoZW4gYXMg
YSBsYXN0IHJlc29ydCwgcmV0dXJuIHVua25vd24uCisgICAgTlNTdHJpbmcqIGRlZmF1bHRSb2xl
RGVzY3JpcHRpb24gPSBOU0FjY2Vzc2liaWxpdHlSb2xlRGVzY3JpcHRpb24oYXhSb2xlLCBbc2Vs
ZiBzdWJyb2xlXSk7CisgICAgaWYgKCFbZGVmYXVsdFJvbGVEZXNjcmlwdGlvbiBpc0VxdWFsVG9T
dHJpbmc6YXhSb2xlXSkKKyAgICAgICAgcmV0dXJuIGRlZmF1bHRSb2xlRGVzY3JpcHRpb247CisK
KyAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5Um9sZURlc2NyaXB0aW9uKE5TQWNjZXNzaWJpbGl0
eVVua25vd25Sb2xlLCBuaWwpOworfQorCistIChpZClzY3JvbGxWaWV3UGFyZW50Cit7CisgICAg
aWYgKCFtX29iamVjdCB8fCAhbV9vYmplY3QtPmlzQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcoKSkK
KyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAKKyAgICAvLyBJZiB0aGlzIHNjcm9sbCB2aWV3IHBy
b3ZpZGVzIGl0J3MgcGFyZW50IG9iamVjdCAoYmVjYXVzZSBpdCdzIGEgc3ViLWZyYW1lKSwgdGhl
bgorICAgIC8vIHdlIHNob3VsZCBub3QgZmluZCB0aGUgcmVtb3RlQWNjZXNzaWJpbGl0eVBhcmVu
dC4KKyAgICBpZiAobV9vYmplY3QtPnBhcmVudE9iamVjdCgpKQorICAgICAgICByZXR1cm4gbmls
OworICAgIAorICAgIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KiBzY3JvbGxWaWV3ID0gdG9BY2Nl
c3NpYmlsaXR5U2Nyb2xsVmlldyhtX29iamVjdCk7CisgICAgU2Nyb2xsVmlldyogc2Nyb2xsID0g
c2Nyb2xsVmlldy0+c2Nyb2xsVmlldygpOworICAgIGlmICghc2Nyb2xsKQorICAgICAgICByZXR1
cm4gbmlsOworICAgIAorICAgIGlmIChzY3JvbGwtPnBsYXRmb3JtV2lkZ2V0KCkpCisgICAgICAg
IHJldHVybiBOU0FjY2Vzc2liaWxpdHlVbmlnbm9yZWRBbmNlc3RvcihzY3JvbGwtPnBsYXRmb3Jt
V2lkZ2V0KCkpOworCisgICAgcmV0dXJuIFtzZWxmIHJlbW90ZUFjY2Vzc2liaWxpdHlQYXJlbnRP
YmplY3RdOworfQorCisvLyBGSVhNRTogc3BsaXQgdXAgdGhpcyBmdW5jdGlvbiBpbiBhIGJldHRl
ciB3YXkuICAKKy8vIHN1Z2dlc3Rpb25zOiBVc2UgYSBoYXNoIHRhYmxlIHRoYXQgbWFwcyBhdHRy
aWJ1dGUgbmFtZXMgdG8gZnVuY3Rpb24gY2FsbHMsCisvLyBvciBtYXliZSBwb2ludGVycyB0byBt
ZW1iZXIgZnVuY3Rpb25zCistIChpZClhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6KE5TU3Ry
aW5nKilhdHRyaWJ1dGVOYW1lCit7CisgICAgaWYgKCFbc2VsZiB1cGRhdGVPYmplY3RCYWNraW5n
U3RvcmVdKQorICAgICAgICByZXR1cm4gbmlsOworICAgIAorICAgIGlmIChbYXR0cmlidXRlTmFt
ZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eVJvbGVBdHRyaWJ1dGVdKQorICAgICAg
ICByZXR1cm4gW3NlbGYgcm9sZV07CisKKyAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRv
U3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlTdWJyb2xlQXR0cmlidXRlXSkKKyAgICAgICAgcmV0dXJu
IFtzZWxmIHN1YnJvbGVdOworCisgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmlu
ZzogTlNBY2Nlc3NpYmlsaXR5Um9sZURlc2NyaXB0aW9uQXR0cmlidXRlXSkKKyAgICAgICAgcmV0
dXJuIFtzZWxmIHJvbGVEZXNjcmlwdGlvbl07CisKKyAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNF
cXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlQYXJlbnRBdHRyaWJ1dGVdKSB7CisKKyAgICAg
ICAgLy8gVGhpcyB3aWxsIHJldHVybiB0aGUgcGFyZW50IG9mIHRoZSBBWFdlYkFyZWEsIGlmIHRo
aXMgaXMgYSB3ZWIgYXJlYS4KKyAgICAgICAgaWQgc2Nyb2xsVmlld1BhcmVudCA9IFtzZWxmIHNj
cm9sbFZpZXdQYXJlbnRdOworICAgICAgICBpZiAoc2Nyb2xsVmlld1BhcmVudCkKKyAgICAgICAg
ICAgIHJldHVybiBzY3JvbGxWaWV3UGFyZW50OworICAgICAgICAKKyAgICAgICAgLy8gVHJlZSBp
dGVtIChjaGFuZ2VkIHRvIEFYUm93cykgY2FuIG9ubHkgcmVwb3J0IHRoZSB0cmVlIChBWE91dGxp
bmUpIGFzIGl0cyBwYXJlbnQuCisgICAgICAgIGlmIChtX29iamVjdC0+aXNUcmVlSXRlbSgpKSB7
CisgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBtX29iamVjdC0+cGFy
ZW50T2JqZWN0VW5pZ25vcmVkKCk7CisgICAgICAgICAgICB3aGlsZSAocGFyZW50KSB7CisgICAg
ICAgICAgICAgICAgaWYgKHBhcmVudC0+aXNUcmVlKCkpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBwYXJlbnQtPndyYXBwZXIoKTsKKyAgICAgICAgICAgICAgICBwYXJlbnQgPSBwYXJlbnQt
PnBhcmVudE9iamVjdFVuaWdub3JlZCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBtX29iamVjdC0+cGFy
ZW50T2JqZWN0VW5pZ25vcmVkKCk7CisgICAgICAgIGlmICghcGFyZW50KQorICAgICAgICAgICAg
cmV0dXJuIG5pbDsKKworICAgICAgICAvLyBJbiBXZWJLaXQxLCB0aGUgc2Nyb2xsIHZpZXcgaXMg
cHJvdmlkZWQgYnkgdGhlIHN5c3RlbSAodGhlIGF0dGFjaG1lbnQgdmlldyksIHNvIHRoZSBwYXJl
bnQKKyAgICAgICAgLy8gc2hvdWxkIGJlIHJlcG9ydGVkIGRpcmVjdGx5IGFzIHN1Y2guCisgICAg
ICAgIGlmIChtX29iamVjdC0+aXNXZWJBcmVhKCkgJiYgcGFyZW50LT5pc0F0dGFjaG1lbnQoKSkK
KyAgICAgICAgICAgIHJldHVybiBbcGFyZW50LT53cmFwcGVyKCkgYXR0YWNobWVudFZpZXddOwor
ICAgICAgICAKKyAgICAgICAgcmV0dXJuIHBhcmVudC0+d3JhcHBlcigpOworICAgIH0KKworICAg
IGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eUNoaWxk
cmVuQXR0cmlidXRlXSkgeworICAgICAgICBpZiAobV9vYmplY3QtPmNoaWxkcmVuKCkuaXNFbXB0
eSgpKSB7CisgICAgICAgICAgICBOU0FycmF5KiBjaGlsZHJlbiA9IFtzZWxmIHJlbmRlcldpZGdl
dENoaWxkcmVuXTsKKyAgICAgICAgICAgIGlmIChjaGlsZHJlbiAhPSBuaWwpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGNoaWxkcmVuOworICAgICAgICB9CisKKyAgICAgICAgLy8gVGhlIHRyZWUn
cyAoQVhPdXRsaW5lKSBjaGlsZHJlbiBhcmUgc3VwcG9zZWQgdG8gYmUgaXRzIHJvd3MgYW5kIGNv
bHVtbnMuCisgICAgICAgIC8vIFRoZSBBUklBIHNwZWMgZG9lc24ndCBoYXZlIGNvbHVtbnMsIHNv
IHdlIGp1c3QgbmVlZCByb3dzLgorICAgICAgICBpZiAobV9vYmplY3QtPmlzVHJlZSgpKQorICAg
ICAgICAgICAgcmV0dXJuIFtzZWxmIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vz
c2liaWxpdHlSb3dzQXR0cmlidXRlXTsKKworICAgICAgICAvLyBBIHRyZWUgaXRlbSBzaG91bGQg
b25seSBleHBvc2UgaXRzIGNvbnRlbnQgYXMgaXRzIGNoaWxkcmVuIChub3QgaXRzIHJvd3MpCisg
ICAgICAgIGlmIChtX29iamVjdC0+aXNUcmVlSXRlbSgpKSB7CisgICAgICAgICAgICBBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgY29udGVudENvcHk7Cisg
ICAgICAgICAgICBtX29iamVjdC0+YXJpYVRyZWVJdGVtQ29udGVudChjb250ZW50Q29weSk7Cisg
ICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShjb250ZW50Q29weSk7CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KG1fb2JqZWN0LT5j
aGlsZHJlbigpKTsKKyAgICB9CisgICAgCisgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxU
b1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRDaGlsZHJlbkF0dHJpYnV0ZV0pIHsKKyAg
ICAgICAgaWYgKG1fb2JqZWN0LT5pc0xpc3RCb3goKSkgeworICAgICAgICAgICAgQWNjZXNzaWJp
bGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHNlbGVjdGVkQ2hpbGRyZW5D
b3B5OworICAgICAgICAgICAgbV9vYmplY3QtPnNlbGVjdGVkQ2hpbGRyZW4oc2VsZWN0ZWRDaGls
ZHJlbkNvcHkpOworICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkoc2VsZWN0ZWRD
aGlsZHJlbkNvcHkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBuaWw7CisgICAgfQorICAg
IAorICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0
eVZpc2libGVDaGlsZHJlbkF0dHJpYnV0ZV0pIHsKKyAgICAgICAgaWYgKG1fb2JqZWN0LT5pc0xp
c3RCb3goKSkgeworICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yIHZpc2libGVDaGlsZHJlbkNvcHk7CisgICAgICAgICAgICBtX29iamVj
dC0+dmlzaWJsZUNoaWxkcmVuKHZpc2libGVDaGlsZHJlbkNvcHkpOworICAgICAgICAgICAgcmV0
dXJuIGNvbnZlcnRUb05TQXJyYXkodmlzaWJsZUNoaWxkcmVuQ29weSk7CisgICAgICAgIH0KKyAg
ICAgICAgZWxzZSBpZiAobV9vYmplY3QtPmlzTGlzdCgpKQorICAgICAgICAgICAgcmV0dXJuIFtz
ZWxmIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0
dHJpYnV0ZV07CisKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICB9CisgICAgCisgICAgCisgICAg
aWYgKG1fb2JqZWN0LT5pc1dlYkFyZWEoKSkgeworICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUg
aXNFcXVhbFRvU3RyaW5nOkAiQVhMaW5rVUlFbGVtZW50cyJdKSB7CisgICAgICAgICAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgbGlua3M7CisgICAg
ICAgICAgICBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Kj4obV9vYmplY3Qp
LT5nZXREb2N1bWVudExpbmtzKGxpbmtzKTsKKyAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9O
U0FycmF5KGxpbmtzKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNF
cXVhbFRvU3RyaW5nOkAiQVhMb2FkZWQiXSkKKyAgICAgICAgICAgIHJldHVybiBbTlNOdW1iZXIg
bnVtYmVyV2l0aEJvb2w6bV9vYmplY3QtPmlzTG9hZGVkKCldOworICAgICAgICBpZiAoW2F0dHJp
YnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOkAiQVhMYXlvdXRDb3VudCJdKQorICAgICAgICAgICAg
cmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoSW50Om1fb2JqZWN0LT5sYXlvdXRDb3VudCgpXTsK
KyAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxp
dHlMb2FkaW5nUHJvZ3Jlc3NBdHRyaWJ1dGVdKQorICAgICAgICAgICAgcmV0dXJuIFtOU051bWJl
ciBudW1iZXJXaXRoRG91YmxlOm1fb2JqZWN0LT5lc3RpbWF0ZWRMb2FkaW5nUHJvZ3Jlc3MoKV07
CisgICAgfQorICAgIAorICAgIGlmIChtX29iamVjdC0+aXNUZXh0Q29udHJvbCgpKSB7CisgICAg
ICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eU51
bWJlck9mQ2hhcmFjdGVyc0F0dHJpYnV0ZV0pIHsKKyAgICAgICAgICAgIGludCBsZW5ndGggPSBt
X29iamVjdC0+dGV4dExlbmd0aCgpOworICAgICAgICAgICAgaWYgKGxlbmd0aCA8IDApCisgICAg
ICAgICAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVt
YmVyV2l0aFVuc2lnbmVkSW50Omxlbmd0aF07CisgICAgICAgIH0KKyAgICAgICAgaWYgKFthdHRy
aWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRUZXh0QXR0
cmlidXRlXSkgeworICAgICAgICAgICAgU3RyaW5nIHNlbGVjdGVkVGV4dCA9IG1fb2JqZWN0LT5z
ZWxlY3RlZFRleHQoKTsKKyAgICAgICAgICAgIGlmIChzZWxlY3RlZFRleHQuaXNOdWxsKCkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAgICAgICAgIHJldHVybiAoTlNTdHJpbmcq
KXNlbGVjdGVkVGV4dDsKKyAgICAgICAgfQorICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNF
cXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFRleHRSYW5nZUF0dHJpYnV0ZV0p
IHsKKyAgICAgICAgICAgIFBsYWluVGV4dFJhbmdlIHRleHRSYW5nZSA9IG1fb2JqZWN0LT5zZWxl
Y3RlZFRleHRSYW5nZSgpOworICAgICAgICAgICAgaWYgKHRleHRSYW5nZS5pc051bGwoKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6TlNNYWtlUmFuZ2Uo
MCwgMCldOworICAgICAgICAgICAgcmV0dXJuIFtOU1ZhbHVlIHZhbHVlV2l0aFJhbmdlOk5TTWFr
ZVJhbmdlKHRleHRSYW5nZS5zdGFydCwgdGV4dFJhbmdlLmxlbmd0aCldOworICAgICAgICB9Cisg
ICAgICAgIC8vIFRPRE86IEdldCBhY3R1YWwgdmlzaWJsZSByYW5nZS4gPHJkYXI6Ly9wcm9ibGVt
LzQ3MTIxMDE+CisgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5T
QWNjZXNzaWJpbGl0eVZpc2libGVDaGFyYWN0ZXJSYW5nZUF0dHJpYnV0ZV0pCisgICAgICAgICAg
ICByZXR1cm4gbV9vYmplY3QtPmlzUGFzc3dvcmRGaWVsZCgpID8gbmlsIDogW05TVmFsdWUgdmFs
dWVXaXRoUmFuZ2U6IE5TTWFrZVJhbmdlKDAsIG1fb2JqZWN0LT50ZXh0TGVuZ3RoKCkpXTsKKyAg
ICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5
SW5zZXJ0aW9uUG9pbnRMaW5lTnVtYmVyQXR0cmlidXRlXSkgeworICAgICAgICAgICAgLy8gaWYg
c2VsZWN0aW9uRW5kID4gMCwgdGhlbiB0aGVyZSBpcyBzZWxlY3RlZCB0ZXh0IGFuZCB0aGlzIHF1
ZXN0aW9uIHNob3VsZCBub3QgYmUgYW5zd2VyZWQKKyAgICAgICAgICAgIGlmIChtX29iamVjdC0+
aXNQYXNzd29yZEZpZWxkKCkgfHwgbV9vYmplY3QtPnNlbGVjdGlvbkVuZCgpID4gMCkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gbmlsOworICAgICAgICAgICAgaW50IGxpbmVOdW1iZXIgPSBtX29i
amVjdC0+bGluZUZvclBvc2l0aW9uKG1fb2JqZWN0LT52aXNpYmxlUG9zaXRpb25Gb3JJbmRleCht
X29iamVjdC0+c2VsZWN0aW9uU3RhcnQoKSwgdHJ1ZSkpOworICAgICAgICAgICAgaWYgKGxpbmVO
dW1iZXIgPCAwKQorICAgICAgICAgICAgICAgIHJldHVybiBuaWw7CisgICAgICAgICAgICByZXR1
cm4gW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6bGluZU51bWJlcl07CisgICAgICAgIH0KKyAgICB9
CisgICAgCisgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3Np
YmlsaXR5VVJMQXR0cmlidXRlXSkgeworICAgICAgICBLVVJMIHVybCA9IG1fb2JqZWN0LT51cmwo
KTsKKyAgICAgICAgaWYgKHVybC5pc051bGwoKSkKKyAgICAgICAgICAgIHJldHVybiBuaWw7Cisg
ICAgICAgIHJldHVybiAoTlNVUkwqKXVybDsKKyAgICB9CisKKyAgICBpZiAoW2F0dHJpYnV0ZU5h
bWUgaXNFcXVhbFRvU3RyaW5nOiBAIkFYVmlzaXRlZCJdKQorICAgICAgICByZXR1cm4gW05TTnVt
YmVyIG51bWJlcldpdGhCb29sOiBtX29iamVjdC0+aXNWaXNpdGVkKCldOworICAgIAorICAgIGlm
IChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eVRpdGxlQXR0
cmlidXRlXSkgeworICAgICAgICBpZiAobV9vYmplY3QtPmlzQXR0YWNobWVudCgpKSB7CisgICAg
ICAgICAgICBpZiAoW1tbc2VsZiBhdHRhY2htZW50Vmlld10gYWNjZXNzaWJpbGl0eUF0dHJpYnV0
ZU5hbWVzXSBjb250YWluc09iamVjdDpOU0FjY2Vzc2liaWxpdHlUaXRsZUF0dHJpYnV0ZV0pIAor
ICAgICAgICAgICAgICAgIHJldHVybiBbW3NlbGYgYXR0YWNobWVudFZpZXddIGFjY2Vzc2liaWxp
dHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlUaXRsZUF0dHJpYnV0ZV07CisgICAgICAg
IH0KKyAgICAgICAgcmV0dXJuIG1fb2JqZWN0LT50aXRsZSgpOworICAgIH0KKyAgICAKKyAgICBp
ZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlEZXNjcmlw
dGlvbkF0dHJpYnV0ZV0pIHsKKyAgICAgICAgaWYgKG1fb2JqZWN0LT5pc0F0dGFjaG1lbnQoKSkg
eworICAgICAgICAgICAgaWYgKFtbW3NlbGYgYXR0YWNobWVudFZpZXddIGFjY2Vzc2liaWxpdHlB
dHRyaWJ1dGVOYW1lc10gY29udGFpbnNPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb25B
dHRyaWJ1dGVdKQorICAgICAgICAgICAgICAgIHJldHVybiBbW3NlbGYgYXR0YWNobWVudFZpZXdd
IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlEZXNjcmlwdGlvbkF0
dHJpYnV0ZV07CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG1fb2JqZWN0LT5hY2Nlc3NpYmls
aXR5RGVzY3JpcHRpb24oKTsKKyAgICB9CisKKyAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVh
bFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlWYWx1ZUF0dHJpYnV0ZV0pIHsKKyAgICAgICAgaWYg
KG1fb2JqZWN0LT5pc0F0dGFjaG1lbnQoKSkgeworICAgICAgICAgICAgaWYgKFtbW3NlbGYgYXR0
YWNobWVudFZpZXddIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVOYW1lc10gY29udGFpbnNPYmplY3Q6
TlNBY2Nlc3NpYmlsaXR5VmFsdWVBdHRyaWJ1dGVdKSAKKyAgICAgICAgICAgICAgICByZXR1cm4g
W1tzZWxmIGF0dGFjaG1lbnRWaWV3XSBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nl
c3NpYmlsaXR5VmFsdWVBdHRyaWJ1dGVdOworICAgICAgICB9CisgICAgICAgIGlmIChtX29iamVj
dC0+aXNQcm9ncmVzc0luZGljYXRvcigpIHx8IG1fb2JqZWN0LT5pc1NsaWRlcigpIHx8IG1fb2Jq
ZWN0LT5pc1Njcm9sbGJhcigpKQorICAgICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJX
aXRoRmxvYXQ6bV9vYmplY3QtPnZhbHVlRm9yUmFuZ2UoKV07CisgICAgICAgIGlmIChtX29iamVj
dC0+cm9sZVZhbHVlKCkgPT0gU2xpZGVyVGh1bWJSb2xlKQorICAgICAgICAgICAgcmV0dXJuIFtO
U051bWJlciBudW1iZXJXaXRoRmxvYXQ6bV9vYmplY3QtPnBhcmVudE9iamVjdCgpLT52YWx1ZUZv
clJhbmdlKCldOworICAgICAgICBpZiAobV9vYmplY3QtPmlzSGVhZGluZygpKQorICAgICAgICAg
ICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoSW50Om1fb2JqZWN0LT5oZWFkaW5nTGV2ZWwo
KV07CisgICAgICAgIAorICAgICAgICBpZiAobV9vYmplY3QtPmlzQ2hlY2tib3hPclJhZGlvKCkp
IHsKKyAgICAgICAgICAgIHN3aXRjaCAobV9vYmplY3QtPmNoZWNrYm94T3JSYWRpb1ZhbHVlKCkp
IHsKKyAgICAgICAgICAgIGNhc2UgQnV0dG9uU3RhdGVPZmY6CisgICAgICAgICAgICAgICAgcmV0
dXJuIFtOU051bWJlciBudW1iZXJXaXRoSW50OjBdOworICAgICAgICAgICAgY2FzZSBCdXR0b25T
dGF0ZU9uOgorICAgICAgICAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDox
XTsKKyAgICAgICAgICAgIGNhc2UgQnV0dG9uU3RhdGVNaXhlZDoKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6Ml07CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKworICAgICAgICAvLyByYWRpbyBncm91cHMgcmV0dXJuIHRoZSBzZWxlY3RlZCByYWRpbyBi
dXR0b24gYXMgdGhlIEFYVmFsdWUKKyAgICAgICAgaWYgKG1fb2JqZWN0LT5pc1JhZGlvR3JvdXAo
KSkgeworICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcmFkaW9CdXR0b24gPSBtX29i
amVjdC0+c2VsZWN0ZWRSYWRpb0J1dHRvbigpOworICAgICAgICAgICAgaWYgKCFyYWRpb0J1dHRv
bikKKyAgICAgICAgICAgICAgICByZXR1cm4gbmlsOworICAgICAgICAgICAgcmV0dXJuIHJhZGlv
QnV0dG9uLT53cmFwcGVyKCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChtX29i
amVjdC0+aXNUYWJMaXN0KCkpIHsKKyAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHRh
Ykl0ZW0gPSBtX29iamVjdC0+c2VsZWN0ZWRUYWJJdGVtKCk7CisgICAgICAgICAgICBpZiAoIXRh
Ykl0ZW0pCisgICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAgICAgICAgIHJldHVybiB0
YWJJdGVtLT53cmFwcGVyKCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChtX29i
amVjdC0+aXNUYWJJdGVtKCkpCisgICAgICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldp
dGhJbnQ6bV9vYmplY3QtPmlzU2VsZWN0ZWQoKV07CisgICAgICAgIAorICAgICAgICByZXR1cm4g
bV9vYmplY3QtPnN0cmluZ1ZhbHVlKCk7CisgICAgfQorCisgICAgaWYgKFthdHRyaWJ1dGVOYW1l
IGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5TWluVmFsdWVBdHRyaWJ1dGVdKQorICAg
ICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhGbG9hdDptX29iamVjdC0+bWluVmFsdWVG
b3JSYW5nZSgpXTsKKworICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5T
QWNjZXNzaWJpbGl0eU1heFZhbHVlQXR0cmlidXRlXSkKKyAgICAgICAgcmV0dXJuIFtOU051bWJl
ciBudW1iZXJXaXRoRmxvYXQ6bV9vYmplY3QtPm1heFZhbHVlRm9yUmFuZ2UoKV07CisKKyAgICBp
ZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlIZWxwQXR0
cmlidXRlXSkKKyAgICAgICAgcmV0dXJuIG1fb2JqZWN0LT5oZWxwVGV4dCgpOworCisgICAgaWYg
KFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5Rm9jdXNlZEF0
dHJpYnV0ZV0pCisgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6IG1fb2Jq
ZWN0LT5pc0ZvY3VzZWQoKV07CisKKyAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3Ry
aW5nOiBOU0FjY2Vzc2liaWxpdHlFbmFibGVkQXR0cmlidXRlXSkKKyAgICAgICAgcmV0dXJuIFtO
U051bWJlciBudW1iZXJXaXRoQm9vbDogbV9vYmplY3QtPmlzRW5hYmxlZCgpXTsKKworICAgIGlm
IChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eVNpemVBdHRy
aWJ1dGVdKSB7CisgICAgICAgIExheW91dFNpemUgcyA9IG1fb2JqZWN0LT5zaXplKCk7CisgICAg
ICAgIHJldHVybiBbTlNWYWx1ZSB2YWx1ZVdpdGhTaXplOiBOU01ha2VTaXplKHMud2lkdGgoKSwg
cy5oZWlnaHQoKSldOworICAgIH0KKworICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9T
dHJpbmc6IE5TQWNjZXNzaWJpbGl0eVBvc2l0aW9uQXR0cmlidXRlXSkKKyAgICAgICAgcmV0dXJu
IFtzZWxmIHBvc2l0aW9uXTsKKworICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJp
bmc6IE5TQWNjZXNzaWJpbGl0eVdpbmRvd0F0dHJpYnV0ZV0gfHwKKyAgICAgICAgW2F0dHJpYnV0
ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlUb3BMZXZlbFVJRWxlbWVudEF0
dHJpYnV0ZV0pIHsKKyAgICAgICAgCisgICAgICAgIGlkIHJlbW90ZVBhcmVudCA9IFtzZWxmIHJl
bW90ZUFjY2Vzc2liaWxpdHlQYXJlbnRPYmplY3RdOworICAgICAgICBpZiAocmVtb3RlUGFyZW50
KQorICAgICAgICAgICAgcmV0dXJuIFtyZW1vdGVQYXJlbnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0
ZVZhbHVlOmF0dHJpYnV0ZU5hbWVdOworICAgICAgICAKKyAgICAgICAgRnJhbWVWaWV3KiBmdiA9
IG1fb2JqZWN0LT5kb2N1bWVudEZyYW1lVmlldygpOworICAgICAgICBpZiAoZnYpCisgICAgICAg
ICAgICByZXR1cm4gW2Z2LT5wbGF0Zm9ybVdpZGdldCgpIHdpbmRvd107CisgICAgICAgIHJldHVy
biBuaWw7CisgICAgfQorICAgIAorICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJp
bmc6TlNBY2Nlc3NpYmlsaXR5QWNjZXNzS2V5QXR0cmlidXRlXSkgeworICAgICAgICBBdG9taWNT
dHJpbmcgYWNjZXNzS2V5ID0gbV9vYmplY3QtPmFjY2Vzc0tleSgpOworICAgICAgICBpZiAoYWNj
ZXNzS2V5LmlzTnVsbCgpKQorICAgICAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAgICAgcmV0dXJu
IGFjY2Vzc0tleTsKKyAgICB9CisgICAgCisgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxU
b1N0cmluZzpOU0FjY2Vzc2liaWxpdHlUYWJzQXR0cmlidXRlXSkgeworICAgICAgICBpZiAobV9v
YmplY3QtPmlzVGFiTGlzdCgpKSB7CisgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgdGFic0NoaWxkcmVuOworICAgICAgICAgICAgbV9v
YmplY3QtPnRhYkNoaWxkcmVuKHRhYnNDaGlsZHJlbik7CisgICAgICAgICAgICByZXR1cm4gY29u
dmVydFRvTlNBcnJheSh0YWJzQ2hpbGRyZW4pOworICAgICAgICB9CisgICAgfQorICAgIAorICAg
IGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Q29udGVu
dHNBdHRyaWJ1dGVdKSB7CisgICAgICAgIC8vIFRoZSBjb250ZW50cyBvZiBhIHRhYiBsaXN0IGFy
ZSBhbGwgdGhlIGNoaWxkcmVuIGV4Y2VwdCB0aGUgdGFicy4KKyAgICAgICAgaWYgKG1fb2JqZWN0
LT5pc1RhYkxpc3QoKSkgeworICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNoaWxkcmVuID0gbV9vYmplY3QtPmNoaWxkcmVuKCk7Cisg
ICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0
b3IgdGFic0NoaWxkcmVuOworICAgICAgICAgICAgbV9vYmplY3QtPnRhYkNoaWxkcmVuKHRhYnND
aGlsZHJlbik7CisKKyAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxp
dHlDaGlsZHJlblZlY3RvciBjb250ZW50czsKKyAgICAgICAgICAgIHVuc2lnbmVkIGNoaWxkcmVu
U2l6ZSA9IGNoaWxkcmVuLnNpemUoKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgayA9IDA7
IGsgPCBjaGlsZHJlblNpemU7ICsraykgeworICAgICAgICAgICAgICAgIGlmICh0YWJzQ2hpbGRy
ZW4uZmluZChjaGlsZHJlbltrXSkgPT0gV1RGOjpub3RGb3VuZCkKKyAgICAgICAgICAgICAgICAg
ICAgY29udGVudHMuYXBwZW5kKGNoaWxkcmVuW2tdKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KGNvbnRlbnRzKTsKKyAgICAgICAgfSBlbHNlIGlm
IChtX29iamVjdC0+aXNTY3JvbGxWaWV3KCkpIHsKKyAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlP
YmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBjaGlsZHJlbiA9IG1fb2JqZWN0LT5j
aGlsZHJlbigpOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBBIHNjcm9sbFZpZXcncyBj
b250ZW50cyBhcmUgZXZlcnl0aGluZyBleGNlcHQgdGhlIHNjcm9sbCBiYXJzLgorICAgICAgICAg
ICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNvbnRl
bnRzOworICAgICAgICAgICAgdW5zaWduZWQgY2hpbGRyZW5TaXplID0gY2hpbGRyZW4uc2l6ZSgp
OworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBrID0gMDsgayA8IGNoaWxkcmVuU2l6ZTsgKytr
KSB7CisgICAgICAgICAgICAgICAgaWYgKCFjaGlsZHJlbltrXS0+aXNTY3JvbGxiYXIoKSkKKyAg
ICAgICAgICAgICAgICAgICAgY29udGVudHMuYXBwZW5kKGNoaWxkcmVuW2tdKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KGNvbnRlbnRzKTsgICAg
ICAgICAgICAKKyAgICAgICAgfQorICAgIH0gICAgCisgICAgCisgICAgaWYgKG1fb2JqZWN0LT5p
c0FjY2Vzc2liaWxpdHlUYWJsZSgpKSB7CisgICAgICAgIC8vIFRPRE86IGRpc3Rpbmd1aXNoIGJl
dHdlZW4gdmlzaWJsZSBhbmQgbm9uLXZpc2libGUgcm93cworICAgICAgICBpZiAoW2F0dHJpYnV0
ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVJvd3NBdHRyaWJ1dGVdIHx8IAor
ICAgICAgICAgICAgW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0
eVZpc2libGVSb3dzQXR0cmlidXRlXSkgeworICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05T
QXJyYXkoc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlKj4obV9vYmplY3QpLT5yb3dzKCkp
OworICAgICAgICB9CisgICAgICAgIC8vIFRPRE86IGRpc3Rpbmd1aXNoIGJldHdlZW4gdmlzaWJs
ZSBhbmQgbm9uLXZpc2libGUgY29sdW1ucworICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNF
cXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNvbHVtbnNBdHRyaWJ1dGVdIHx8IAorICAgICAg
ICAgICAgW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVZpc2li
bGVDb2x1bW5zQXR0cmlidXRlXSkgeworICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJy
YXkoc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlKj4obV9vYmplY3QpLT5jb2x1bW5zKCkp
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVh
bFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkUm93c0F0dHJpYnV0ZV0pIHsKKyAgICAg
ICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBz
ZWxlY3RlZENoaWxkcmVuQ29weTsKKyAgICAgICAgICAgIG1fb2JqZWN0LT5zZWxlY3RlZENoaWxk
cmVuKHNlbGVjdGVkQ2hpbGRyZW5Db3B5KTsKKyAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9O
U0FycmF5KHNlbGVjdGVkQ2hpbGRyZW5Db3B5KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgLy8gSFRNTCB0YWJsZXMgZG9uJ3Qgc3VwcG9ydCB0aGVzZQorICAgICAgICBpZiAoW2F0dHJp
YnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkQ29sdW1uc0F0
dHJpYnV0ZV0gfHwgCisgICAgICAgICAgICBbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6
TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRDZWxsc0F0dHJpYnV0ZV0pCisgICAgICAgICAgICByZXR1
cm4gbmlsOworICAgICAgICAKKyAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0
cmluZzooTlNTdHJpbmcgKilrQVhDb2x1bW5IZWFkZXJVSUVsZW1lbnRzQXR0cmlidXRlXSkgewor
ICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yIGNvbHVtbkhlYWRlcnM7CisgICAgICAgICAgICBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5
VGFibGUqPihtX29iamVjdCktPmNvbHVtbkhlYWRlcnMoY29sdW1uSGVhZGVycyk7CisgICAgICAg
ICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShjb2x1bW5IZWFkZXJzKTsgICAgICAgICAgICAK
KyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxU
b1N0cmluZzpOU0FjY2Vzc2liaWxpdHlIZWFkZXJBdHRyaWJ1dGVdKSB7CisgICAgICAgICAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBoZWFkZXJDb250YWluZXIgPSBzdGF0aWNfY2FzdDxBY2Nlc3Np
YmlsaXR5VGFibGUqPihtX29iamVjdCktPmhlYWRlckNvbnRhaW5lcigpOworICAgICAgICAgICAg
aWYgKGhlYWRlckNvbnRhaW5lcikKKyAgICAgICAgICAgICAgICByZXR1cm4gaGVhZGVyQ29udGFp
bmVyLT53cmFwcGVyKCk7CisgICAgICAgICAgICByZXR1cm4gbmlsOworICAgICAgICB9CisKKyAg
ICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlS
b3dIZWFkZXJVSUVsZW1lbnRzQXR0cmlidXRlXSkgeworICAgICAgICAgICAgQWNjZXNzaWJpbGl0
eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHJvd0hlYWRlcnM7CisgICAgICAg
ICAgICBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGUqPihtX29iamVjdCktPnJvd0hlYWRl
cnMocm93SGVhZGVycyk7CisgICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJheShyb3dI
ZWFkZXJzKTsgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlW
aXNpYmxlQ2VsbHNBdHRyaWJ1dGVdKSB7CisgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgY2VsbHM7CisgICAgICAgICAgICBzdGF0aWNf
Y2FzdDxBY2Nlc3NpYmlsaXR5VGFibGUqPihtX29iamVjdCktPmNlbGxzKGNlbGxzKTsKKyAgICAg
ICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KGNlbGxzKTsKKyAgICAgICAgfSAgICAgICAg
CisgICAgfQorICAgIAorICAgIGlmIChtX29iamVjdC0+aXNUYWJsZUNvbHVtbigpKSB7CisgICAg
ICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5SW5k
ZXhBdHRyaWJ1dGVdKQorICAgICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoSW50
OnN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbio+KG1fb2JqZWN0KS0+Y29sdW1u
SW5kZXgoKV07CisgICAgICAgIAorICAgICAgICAvLyByb3dzIGF0dHJpYnV0ZSBmb3IgYSBjb2x1
bW4gaXMgdGhlIGxpc3Qgb2YgYWxsIHRoZSBlbGVtZW50cyBpbiB0aGF0IGNvbHVtbiBhdCBlYWNo
IHJvdworICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNz
aWJpbGl0eVJvd3NBdHRyaWJ1dGVdIHx8IAorICAgICAgICAgICAgW2F0dHJpYnV0ZU5hbWUgaXNF
cXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVZpc2libGVSb3dzQXR0cmlidXRlXSkgeworICAg
ICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkoc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0
eVRhYmxlQ29sdW1uKj4obV9vYmplY3QpLT5jaGlsZHJlbigpKTsKKyAgICAgICAgfQorICAgICAg
ICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUhlYWRl
ckF0dHJpYnV0ZV0pIHsKKyAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGhlYWRlciA9
IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZUNvbHVtbio+KG1fb2JqZWN0KS0+aGVhZGVy
T2JqZWN0KCk7CisgICAgICAgICAgICBpZiAoIWhlYWRlcikKKyAgICAgICAgICAgICAgICByZXR1
cm4gbmlsOworICAgICAgICAgICAgcmV0dXJuIGhlYWRlci0+d3JhcHBlcigpOworICAgICAgICB9
CisgICAgfQorICAgIAorICAgIGlmIChtX29iamVjdC0+aXNUYWJsZUNlbGwoKSkgeworICAgICAg
ICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVJvd0lu
ZGV4UmFuZ2VBdHRyaWJ1dGVdKSB7CisgICAgICAgICAgICBwYWlyPGludCwgaW50PiByb3dSYW5n
ZTsKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwqPihtX29i
amVjdCktPnJvd0luZGV4UmFuZ2Uocm93UmFuZ2UpOworICAgICAgICAgICAgcmV0dXJuIFtOU1Zh
bHVlIHZhbHVlV2l0aFJhbmdlOk5TTWFrZVJhbmdlKHJvd1JhbmdlLmZpcnN0LCByb3dSYW5nZS5z
ZWNvbmQpXTsKKyAgICAgICAgfSAgCisgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFs
VG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Q29sdW1uSW5kZXhSYW5nZUF0dHJpYnV0ZV0pIHsKKyAg
ICAgICAgICAgIHBhaXI8aW50LCBpbnQ+IGNvbHVtblJhbmdlOworICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCo+KG1fb2JqZWN0KS0+Y29sdW1uSW5kZXhSYW5n
ZShjb2x1bW5SYW5nZSk7CisgICAgICAgICAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRoUmFu
Z2U6TlNNYWtlUmFuZ2UoY29sdW1uUmFuZ2UuZmlyc3QsIGNvbHVtblJhbmdlLnNlY29uZCldOwor
ICAgICAgICB9ICAKKyAgICB9CisgICAgCisgICAgaWYgKG1fb2JqZWN0LT5pc1RyZWUoKSkgewor
ICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0
eVNlbGVjdGVkUm93c0F0dHJpYnV0ZV0pIHsKKyAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBzZWxlY3RlZENoaWxkcmVuQ29weTsKKyAg
ICAgICAgICAgIG1fb2JqZWN0LT5zZWxlY3RlZENoaWxkcmVuKHNlbGVjdGVkQ2hpbGRyZW5Db3B5
KTsKKyAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KHNlbGVjdGVkQ2hpbGRyZW5D
b3B5KTsKKyAgICAgICAgfQorICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3Ry
aW5nOk5TQWNjZXNzaWJpbGl0eVJvd3NBdHRyaWJ1dGVdKSB7CisgICAgICAgICAgICBBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Igcm93c0NvcHk7CisgICAg
ICAgICAgICBtX29iamVjdC0+YXJpYVRyZWVSb3dzKHJvd3NDb3B5KTsKKyAgICAgICAgICAgIHJl
dHVybiBjb252ZXJ0VG9OU0FycmF5KHJvd3NDb3B5KTsgICAgICAgICAgICAKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgLy8gVHJlZVJvbGVzIGRvIG5vdCBzdXBwb3J0IGNvbHVtbnMsIGJ1
dCBNYWMgQVggZXhwZWN0cyB0byBiZSBhYmxlIHRvIGFzayBhYm91dCBjb2x1bW5zIGF0IHRoZSBs
ZWFzdC4KKyAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vz
c2liaWxpdHlDb2x1bW5zQXR0cmlidXRlXSkKKyAgICAgICAgICAgIHJldHVybiBbTlNBcnJheSBh
cnJheV07CisgICAgfQorCisgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpO
U0FjY2Vzc2liaWxpdHlJbmRleEF0dHJpYnV0ZV0pIHsKKyAgICAgICAgaWYgKG1fb2JqZWN0LT5p
c1RyZWVJdGVtKCkpIHsKKyAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9
IG1fb2JqZWN0LT5wYXJlbnRPYmplY3QoKTsKKyAgICAgICAgICAgIGZvciAoOyBwYXJlbnQgJiYg
IXBhcmVudC0+aXNUcmVlKCk7IHBhcmVudCA9IHBhcmVudC0+cGFyZW50T2JqZWN0KCkpCisgICAg
ICAgICAgICB7IH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCFwYXJlbnQpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gRmlu
ZCB0aGUgaW5kZXggb2YgdGhpcyBpdGVtIGJ5IGl0ZXJhdGluZyB0aGUgcGFyZW50cy4KKyAgICAg
ICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBy
b3dzQ29weTsKKyAgICAgICAgICAgIHBhcmVudC0+YXJpYVRyZWVSb3dzKHJvd3NDb3B5KTsKKyAg
ICAgICAgICAgIHNpemVfdCBjb3VudCA9IHJvd3NDb3B5LnNpemUoKTsKKyAgICAgICAgICAgIGZv
ciAoc2l6ZV90IGsgPSAwOyBrIDwgY291bnQ7ICsraykKKyAgICAgICAgICAgICAgICBpZiAocm93
c0NvcHlba10tPndyYXBwZXIoKSA9PSBzZWxmKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
W05TTnVtYmVyIG51bWJlcldpdGhVbnNpZ25lZEludDprXTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgcmV0dXJuIG5pbDsKKyAgICAgICAgfQorICAgICAgICBpZiAobV9vYmplY3QtPmlzVGFi
bGVSb3coKSkgeworICAgICAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmlu
ZzpOU0FjY2Vzc2liaWxpdHlJbmRleEF0dHJpYnV0ZV0pCisgICAgICAgICAgICAgICAgcmV0dXJu
IFtOU051bWJlciBudW1iZXJXaXRoSW50OnN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlUYWJsZVJv
dyo+KG1fb2JqZWN0KS0+cm93SW5kZXgoKV07CisgICAgICAgIH0KKyAgICB9ICAgIAorICAgIAor
ICAgIC8vIFRoZSByb3dzIHRoYXQgYXJlIGNvbnNpZGVyZWQgaW5zaWRlIHRoaXMgcm93LiAKKyAg
ICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eURpc2Ns
b3NlZFJvd3NBdHRyaWJ1dGVdKSB7CisgICAgICAgIGlmIChtX29iamVjdC0+aXNUcmVlSXRlbSgp
KSB7CisgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3Igcm93c0NvcHk7CisgICAgICAgICAgICBtX29iamVjdC0+YXJpYVRyZWVJdGVtRGlz
Y2xvc2VkUm93cyhyb3dzQ29weSk7CisgICAgICAgICAgICByZXR1cm4gY29udmVydFRvTlNBcnJh
eShyb3dzQ29weSk7ICAgIAorICAgICAgICB9IGVsc2UgaWYgKG1fb2JqZWN0LT5pc0FSSUFUcmVl
R3JpZFJvdygpKSB7CisgICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3Igcm93c0NvcHk7CisgICAgICAgICAgICBzdGF0aWNfY2FzdDxBY2Nl
c3NpYmlsaXR5QVJJQUdyaWRSb3cqPihtX29iamVjdCktPmRpc2Nsb3NlZFJvd3Mocm93c0NvcHkp
OworICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkocm93c0NvcHkpOyAgICAKKyAg
ICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvLyBUaGUgcm93IHRoYXQgY29udGFpbnMgdGhpcyBy
b3cuIEl0IHNob3VsZCBiZSB0aGUgc2FtZSBhcyB0aGUgZmlyc3QgcGFyZW50IHRoYXQgaXMgYSB0
cmVlaXRlbS4KKyAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNz
aWJpbGl0eURpc2Nsb3NlZEJ5Um93QXR0cmlidXRlXSkgeworICAgICAgICBpZiAobV9vYmplY3Qt
PmlzVHJlZUl0ZW0oKSkgeworICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50
ID0gbV9vYmplY3QtPnBhcmVudE9iamVjdCgpOworICAgICAgICAgICAgd2hpbGUgKHBhcmVudCkg
eworICAgICAgICAgICAgICAgIGlmIChwYXJlbnQtPmlzVHJlZUl0ZW0oKSkKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHBhcmVudC0+d3JhcHBlcigpOworICAgICAgICAgICAgICAgIC8vIElm
IHRoZSBwYXJlbnQgaXMgdGhlIHRyZWUgaXRzZWxmLCB0aGVuIHRoaXMgdmFsdWUgPT0gbmlsLgor
ICAgICAgICAgICAgICAgIGlmIChwYXJlbnQtPmlzVHJlZSgpKQorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gbmlsOworICAgICAgICAgICAgICAgIHBhcmVudCA9IHBhcmVudC0+cGFyZW50T2Jq
ZWN0KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gbmlsOworICAgICAgICB9
IGVsc2UgaWYgKG1fb2JqZWN0LT5pc0FSSUFUcmVlR3JpZFJvdygpKSB7CisgICAgICAgICAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiByb3cgPSBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5QVJJQUdy
aWRSb3cqPihtX29iamVjdCktPmRpc2Nsb3NlZEJ5Um93KCk7CisgICAgICAgICAgICBpZiAoIXJv
dykKKyAgICAgICAgICAgICAgICByZXR1cm4gbmlsOworICAgICAgICAgICAgcmV0dXJuIHJvdy0+
d3JhcHBlcigpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlz
RXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlEaXNjbG9zdXJlTGV2ZWxBdHRyaWJ1dGVdKQor
ICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6bV9vYmplY3QtPmhpZXJhcmNo
aWNhbExldmVsKCldOworICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNB
Y2Nlc3NpYmlsaXR5RGlzY2xvc2luZ0F0dHJpYnV0ZV0pCisgICAgICAgIHJldHVybiBbTlNOdW1i
ZXIgbnVtYmVyV2l0aEJvb2w6bV9vYmplY3QtPmlzRXhwYW5kZWQoKV07CisgICAgCisgICAgaWYg
KChtX29iamVjdC0+aXNMaXN0Qm94KCkgfHwgbV9vYmplY3QtPmlzTGlzdCgpKSAmJiBbYXR0cmli
dXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5T3JpZW50YXRpb25BdHRyaWJ1
dGVdKQorICAgICAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5VmVydGljYWxPcmllbnRhdGlvblZh
bHVlOworCisgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogQCJBWFNlbGVj
dGVkVGV4dE1hcmtlclJhbmdlIl0pCisgICAgICAgIHJldHVybiBbc2VsZiB0ZXh0TWFya2VyUmFu
Z2VGb3JTZWxlY3Rpb25dOworICAgIAorICAgIGlmIChtX29iamVjdC0+aXNBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0KCkpIHsKKyAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHN0YXRp
Y19jYXN0PEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QqPihtX29iamVjdCktPnJlbmRlcmVyKCk7
CisgICAgICAgIGlmICghcmVuZGVyZXIpCisgICAgICAgICAgICByZXR1cm4gbmlsOworICAgICAg
ICAKKyAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogQCJBWFN0YXJ0
VGV4dE1hcmtlciJdKQorICAgICAgICAgICAgcmV0dXJuIFtzZWxmIHRleHRNYXJrZXJGb3JWaXNp
YmxlUG9zaXRpb246c3RhcnRPZkRvY3VtZW50KHJlbmRlcmVyLT5kb2N1bWVudCgpKV07CisgICAg
ICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IEAiQVhFbmRUZXh0TWFya2Vy
Il0pCisgICAgICAgICAgICByZXR1cm4gW3NlbGYgdGV4dE1hcmtlckZvclZpc2libGVQb3NpdGlv
bjplbmRPZkRvY3VtZW50KHJlbmRlcmVyLT5kb2N1bWVudCgpKV07CisKKyAgICAgICAgaWYgKFth
dHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlCbG9ja1F1b3RlTGV2
ZWxBdHRyaWJ1dGVdKQorICAgICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoSW50
Om1fb2JqZWN0LT5ibG9ja3F1b3RlTGV2ZWwoKV07CisgICAgICAgIGlmIChbYXR0cmlidXRlTmFt
ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWFRhYmxlTGV2ZWwiXSkKKyAgICAgICAgICAgIHJldHVybiBb
TlNOdW1iZXIgbnVtYmVyV2l0aEludDptX29iamVjdC0+dGFibGVMZXZlbCgpXTsKKyAgICB9IGVs
c2UgeworICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBtX29iamVjdC0+cGFy
ZW50T2JqZWN0VW5pZ25vcmVkKCk7CisgICAgICAgIGlmICghcGFyZW50KQorICAgICAgICAgICAg
cmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoSW50OjBdOworICAgICAgICAKKyAgICAgICAgaWYg
KFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlCbG9ja1F1b3Rl
TGV2ZWxBdHRyaWJ1dGVdKQorICAgICAgICAgICAgcmV0dXJuIFtwYXJlbnQtPndyYXBwZXIoKSBh
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nlc3NpYmlsaXR5QmxvY2tRdW90ZUxldmVs
QXR0cmlidXRlXTsKKyAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpA
IkFYVGFibGVMZXZlbCJdKQorICAgICAgICAgICAgcmV0dXJuIFtwYXJlbnQtPndyYXBwZXIoKSBh
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFRhYmxlTGV2ZWwiXTsKKyAgICB9CisgICAg
CisgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5
TGlua2VkVUlFbGVtZW50c0F0dHJpYnV0ZV0pIHsKKyAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVj
dDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGxpbmtlZFVJRWxlbWVudHM7CisgICAgICAg
IG1fb2JqZWN0LT5saW5rZWRVSUVsZW1lbnRzKGxpbmtlZFVJRWxlbWVudHMpOworICAgICAgICBp
ZiAobGlua2VkVUlFbGVtZW50cy5zaXplKCkgPT0gMCkKKyAgICAgICAgICAgIHJldHVybiBuaWw7
CisgICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KGxpbmtlZFVJRWxlbWVudHMpOworICAg
IH0KKworICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJp
bGl0eVNlbGVjdGVkQXR0cmlidXRlXSkKKyAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJX
aXRoQm9vbDptX29iamVjdC0+aXNTZWxlY3RlZCgpXTsKKworICAgIGlmIChbYXR0cmlidXRlTmFt
ZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eVNlcnZlc0FzVGl0bGVGb3JVSUVsZW1l
bnRzQXR0cmlidXRlXSAmJiBtX29iamVjdC0+aXNNZW51QnV0dG9uKCkpIHsKKyAgICAgICAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogdWlFbGVtZW50ID0gc3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdCo+KG1fb2JqZWN0KS0+bWVudUZvck1lbnVCdXR0b24oKTsKKyAgICAgICAgaWYg
KHVpRWxlbWVudCkKKyAgICAgICAgICAgIHJldHVybiBbTlNBcnJheSBhcnJheVdpdGhPYmplY3Q6
dWlFbGVtZW50LT53cmFwcGVyKCldOworICAgIH0KKworICAgIGlmIChbYXR0cmlidXRlTmFtZSBp
c0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5VGl0bGVVSUVsZW1lbnRBdHRyaWJ1dGVdKSB7
CisgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiA9IG1fb2JqZWN0LT50aXRsZVVJRWxl
bWVudCgpOworICAgICAgICBpZiAob2JqKQorICAgICAgICAgICAgcmV0dXJuIG9iai0+d3JhcHBl
cigpOworICAgICAgICByZXR1cm4gbmlsOworICAgIH0KKyAgICAKKyAgICBpZiAoW2F0dHJpYnV0
ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVZhbHVlRGVzY3JpcHRpb25BdHRy
aWJ1dGVdKQorICAgICAgICByZXR1cm4gbV9vYmplY3QtPnZhbHVlRGVzY3JpcHRpb24oKTsKKyAg
ICAKKyAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0
eU9yaWVudGF0aW9uQXR0cmlidXRlXSkgeworICAgICAgICBBY2Nlc3NpYmlsaXR5T3JpZW50YXRp
b24gZWxlbWVudE9yaWVudGF0aW9uID0gbV9vYmplY3QtPm9yaWVudGF0aW9uKCk7CisgICAgICAg
IGlmIChlbGVtZW50T3JpZW50YXRpb24gPT0gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uVmVydGlj
YWwpCisgICAgICAgICAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5VmVydGljYWxPcmllbnRhdGlv
blZhbHVlOworICAgICAgICBpZiAoZWxlbWVudE9yaWVudGF0aW9uID09IEFjY2Vzc2liaWxpdHlP
cmllbnRhdGlvbkhvcml6b250YWwpCisgICAgICAgICAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5
SG9yaXpvbnRhbE9yaWVudGF0aW9uVmFsdWU7CisgICAgICAgIHJldHVybiBuaWw7CisgICAgfQor
ICAgIAorICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmls
aXR5SG9yaXpvbnRhbFNjcm9sbEJhckF0dHJpYnV0ZV0pIHsKKyAgICAgICAgQWNjZXNzaWJpbGl0
eU9iamVjdCogc2Nyb2xsQmFyID0gbV9vYmplY3QtPnNjcm9sbEJhcihBY2Nlc3NpYmlsaXR5T3Jp
ZW50YXRpb25Ib3Jpem9udGFsKTsKKyAgICAgICAgaWYgKHNjcm9sbEJhcikKKyAgICAgICAgICAg
IHJldHVybiBzY3JvbGxCYXItPndyYXBwZXIoKTsKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICB9
CisgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlW
ZXJ0aWNhbFNjcm9sbEJhckF0dHJpYnV0ZV0pIHsKKyAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVj
dCogc2Nyb2xsQmFyID0gbV9vYmplY3QtPnNjcm9sbEJhcihBY2Nlc3NpYmlsaXR5T3JpZW50YXRp
b25WZXJ0aWNhbCk7CisgICAgICAgIGlmIChzY3JvbGxCYXIpCisgICAgICAgICAgICByZXR1cm4g
c2Nyb2xsQmFyLT53cmFwcGVyKCk7CisgICAgICAgIHJldHVybiBuaWw7CisgICAgfQorICAgIAor
ICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5U29y
dERpcmVjdGlvbkF0dHJpYnV0ZV0pIHsKKyAgICAgICAgc3dpdGNoIChtX29iamVjdC0+c29ydERp
cmVjdGlvbigpKSB7CisgICAgICAgIGNhc2UgU29ydERpcmVjdGlvbkFzY2VuZGluZzoKKyAgICAg
ICAgICAgIHJldHVybiBOU0FjY2Vzc2liaWxpdHlBc2NlbmRpbmdTb3J0RGlyZWN0aW9uVmFsdWU7
CisgICAgICAgIGNhc2UgU29ydERpcmVjdGlvbkRlc2NlbmRpbmc6CisgICAgICAgICAgICByZXR1
cm4gTlNBY2Nlc3NpYmlsaXR5RGVzY2VuZGluZ1NvcnREaXJlY3Rpb25WYWx1ZTsKKyAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBOU0FjY2Vzc2liaWxpdHlVbmtub3duU29ydERp
cmVjdGlvblZhbHVlOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIGlmIChbYXR0cmlidXRl
TmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5TGFuZ3VhZ2VBdHRyaWJ1dGVdKSAK
KyAgICAgICAgcmV0dXJuIG1fb2JqZWN0LT5sYW5ndWFnZSgpOworICAgIAorICAgIGlmIChbYXR0
cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5RXhwYW5kZWRBdHRyaWJ1
dGVdKQorICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhCb29sOm1fb2JqZWN0LT5p
c0V4cGFuZGVkKCldOworICAgIAorICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJp
bmc6TlNBY2Nlc3NpYmlsaXR5UmVxdWlyZWRBdHRyaWJ1dGVdKQorICAgICAgICByZXR1cm4gW05T
TnVtYmVyIG51bWJlcldpdGhCb29sOm1fb2JqZWN0LT5pc1JlcXVpcmVkKCldOworCisgICAgaWYg
KFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlJbnZhbGlkQXR0
cmlidXRlXSkKKyAgICAgICAgcmV0dXJuIG1fb2JqZWN0LT5pbnZhbGlkU3RhdHVzKCk7CisgICAg
CisgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlP
d25zQXR0cmlidXRlXSkgeworICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3IgYXJpYU93bnM7CisgICAgICAgIG1fb2JqZWN0LT5hcmlhT3duc0Vs
ZW1lbnRzKGFyaWFPd25zKTsKKyAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkoYXJpYU93
bnMpOworICAgIH0KKyAgICAKKyAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5n
Ok5TQWNjZXNzaWJpbGl0eUdyYWJiZWRBdHRyaWJ1dGVdKQorICAgICAgICByZXR1cm4gW05TTnVt
YmVyIG51bWJlcldpdGhCb29sOm1fb2JqZWN0LT5pc0FSSUFHcmFiYmVkKCldOworICAgIAorICAg
IGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5RHJvcEVm
ZmVjdHNBdHRyaWJ1dGVdKSB7CisgICAgICAgIFZlY3RvcjxTdHJpbmc+IGRyb3BFZmZlY3RzOwor
ICAgICAgICBtX29iamVjdC0+ZGV0ZXJtaW5lQVJJQURyb3BFZmZlY3RzKGRyb3BFZmZlY3RzKTsK
KyAgICAgICAgc2l6ZV90IGxlbmd0aCA9IGRyb3BFZmZlY3RzLnNpemUoKTsKKworICAgICAgICBO
U011dGFibGVBcnJheSogZHJvcEVmZmVjdHNBcnJheSA9IFtOU011dGFibGVBcnJheSBhcnJheVdp
dGhDYXBhY2l0eTpsZW5ndGhdOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0
aDsgKytpKQorICAgICAgICAgICAgW2Ryb3BFZmZlY3RzQXJyYXkgYWRkT2JqZWN0OmRyb3BFZmZl
Y3RzW2ldXTsKKyAgICAgICAgcmV0dXJuIGRyb3BFZmZlY3RzQXJyYXk7CisgICAgfQorICAgIAor
ICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5UGxh
Y2Vob2xkZXJWYWx1ZUF0dHJpYnV0ZV0pCisgICAgICAgIHJldHVybiBtX29iamVjdC0+cGxhY2Vo
b2xkZXJWYWx1ZSgpOworICAgIAorICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJp
bmc6TlNBY2Nlc3NpYmlsaXR5SGFzUG9wdXBBdHRyaWJ1dGVdKQorICAgICAgICByZXR1cm4gW05T
TnVtYmVyIG51bWJlcldpdGhCb29sOm1fb2JqZWN0LT5hcmlhSGFzUG9wdXAoKV07CisgICAgCisg
ICAgLy8gQVJJQSBMaXZlIHJlZ2lvbiBhdHRyaWJ1dGVzLgorICAgIGlmIChbYXR0cmlidXRlTmFt
ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5QVJJQUxpdmVBdHRyaWJ1dGVdKQorICAg
ICAgICByZXR1cm4gbV9vYmplY3QtPmFyaWFMaXZlUmVnaW9uU3RhdHVzKCk7CisgICAgaWYgKFth
dHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlBUklBUmVsZXZhbnRB
dHRyaWJ1dGVdKQorICAgICAgICAgcmV0dXJuIG1fb2JqZWN0LT5hcmlhTGl2ZVJlZ2lvblJlbGV2
YW50KCk7CisgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2li
aWxpdHlBUklBQXRvbWljQXR0cmlidXRlXSkKKyAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1i
ZXJXaXRoQm9vbDptX29iamVjdC0+YXJpYUxpdmVSZWdpb25BdG9taWMoKV07CisgICAgaWYgKFth
dHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlBUklBQnVzeUF0dHJp
YnV0ZV0pCisgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6bV9vYmplY3Qt
PmFyaWFMaXZlUmVnaW9uQnVzeSgpXTsKKyAgICAKKyAgICAvLyB0aGlzIGlzIHVzZWQgb25seSBi
eSBEdW1wUmVuZGVyVHJlZSBmb3IgdGVzdGluZworICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0Vx
dWFsVG9TdHJpbmc6QCJBWENsaWNrUG9pbnQiXSkKKyAgICAgICAgcmV0dXJuIFtOU1ZhbHVlIHZh
bHVlV2l0aFBvaW50Om1fb2JqZWN0LT5jbGlja1BvaW50KCldOworICAgIAorICAgIC8vIFRoaXMg
aXMgdXNlZCBieSBEUlQgdG8gdmVyaWZ5IENTUzMgc3BlZWNoIHdvcmtzLgorICAgIGlmIChbYXR0
cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJBWERSVFNwZWVjaEF0dHJpYnV0ZSJdKSB7Cisg
ICAgICAgIEVTcGVhayBzcGVha1Byb3BlcnR5ID0gbV9vYmplY3QtPnNwZWFrUHJvcGVydHkoKTsK
KyAgICAgICAgc3dpdGNoIChzcGVha1Byb3BlcnR5KSB7CisgICAgICAgIGNhc2UgU3BlYWtOb25l
OgorICAgICAgICAgICAgcmV0dXJuIEAibm9uZSI7CisgICAgICAgIGNhc2UgU3BlYWtTcGVsbE91
dDoKKyAgICAgICAgICAgIHJldHVybiBAInNwZWxsLW91dCI7CisgICAgICAgIGNhc2UgU3BlYWtE
aWdpdHM6CisgICAgICAgICAgICByZXR1cm4gQCJkaWdpdHMiOworICAgICAgICBjYXNlIFNwZWFr
TGl0ZXJhbFB1bmN0dWF0aW9uOgorICAgICAgICAgICAgcmV0dXJuIEAibGl0ZXJhbC1wdW5jdHVh
dGlvbiI7CisgICAgICAgIGNhc2UgU3BlYWtOb1B1bmN0dWF0aW9uOgorICAgICAgICAgICAgcmV0
dXJuIEAibm8tcHVuY3R1YXRpb24iOworICAgICAgICBkZWZhdWx0OgorICAgICAgICBjYXNlIFNw
ZWFrTm9ybWFsOgorICAgICAgICAgICAgcmV0dXJuIEAibm9ybWFsIjsKKyAgICAgICAgfQorICAg
IH0KKyAgICAKKyAgICByZXR1cm4gbmlsOworfQorCistIChpZClhY2Nlc3NpYmlsaXR5Rm9jdXNl
ZFVJRWxlbWVudAoreworICAgIGlmICghW3NlbGYgdXBkYXRlT2JqZWN0QmFja2luZ1N0b3JlXSkK
KyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBm
b2N1c2VkT2JqID0gbV9vYmplY3QtPmZvY3VzZWRVSUVsZW1lbnQoKTsKKworICAgIGlmICghZm9j
dXNlZE9iaikKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAKKyAgICByZXR1cm4gZm9jdXNlZE9i
ai0+d3JhcHBlcigpOworfQorCistIChpZClhY2Nlc3NpYmlsaXR5SGl0VGVzdDooTlNQb2ludClw
b2ludAoreworICAgIGlmICghW3NlbGYgdXBkYXRlT2JqZWN0QmFja2luZ1N0b3JlXSkKKyAgICAg
ICAgcmV0dXJuIG5pbDsKKworICAgIG1fb2JqZWN0LT51cGRhdGVDaGlsZHJlbklmTmVjZXNzYXJ5
KCk7CisgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IGF4T2JqZWN0ID0gbV9vYmplY3Qt
PmFjY2Vzc2liaWxpdHlIaXRUZXN0KEludFBvaW50KHBvaW50KSk7CisgICAgaWYgKGF4T2JqZWN0
KQorICAgICAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5VW5pZ25vcmVkQW5jZXN0b3IoYXhPYmpl
Y3QtPndyYXBwZXIoKSk7CisgICAgcmV0dXJuIE5TQWNjZXNzaWJpbGl0eVVuaWdub3JlZEFuY2Vz
dG9yKHNlbGYpOworfQorCistIChCT09MKWFjY2Vzc2liaWxpdHlJc0F0dHJpYnV0ZVNldHRhYmxl
OihOU1N0cmluZyopYXR0cmlidXRlTmFtZQoreworICAgIGlmICghW3NlbGYgdXBkYXRlT2JqZWN0
QmFja2luZ1N0b3JlXSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIGlmIChbYXR0cmlidXRl
TmFtZSBpc0VxdWFsVG9TdHJpbmc6IEAiQVhTZWxlY3RlZFRleHRNYXJrZXJSYW5nZSJdKQorICAg
ICAgICByZXR1cm4gWUVTOworCisgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmlu
ZzogTlNBY2Nlc3NpYmlsaXR5Rm9jdXNlZEF0dHJpYnV0ZV0pCisgICAgICAgIHJldHVybiBtX29i
amVjdC0+Y2FuU2V0Rm9jdXNBdHRyaWJ1dGUoKTsKKworICAgIGlmIChbYXR0cmlidXRlTmFtZSBp
c0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eVZhbHVlQXR0cmlidXRlXSkKKyAgICAgICAg
cmV0dXJuIG1fb2JqZWN0LT5jYW5TZXRWYWx1ZUF0dHJpYnV0ZSgpOworCisgICAgaWYgKFthdHRy
aWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRBdHRyaWJ1
dGVdKQorICAgICAgICByZXR1cm4gbV9vYmplY3QtPmNhblNldFNlbGVjdGVkQXR0cmlidXRlKCk7
CisgICAgCisgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3Np
YmlsaXR5U2VsZWN0ZWRDaGlsZHJlbkF0dHJpYnV0ZV0pCisgICAgICAgIHJldHVybiBtX29iamVj
dC0+Y2FuU2V0U2VsZWN0ZWRDaGlsZHJlbkF0dHJpYnV0ZSgpOworCisgICAgaWYgKFthdHRyaWJ1
dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlEaXNjbG9zaW5nQXR0cmlidXRl
XSkKKyAgICAgICAgcmV0dXJuIG1fb2JqZWN0LT5jYW5TZXRFeHBhbmRlZEF0dHJpYnV0ZSgpOwor
CisgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlT
ZWxlY3RlZFJvd3NBdHRyaWJ1dGVdKQorICAgICAgICByZXR1cm4gWUVTOworCisgICAgaWYgKFth
dHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRUZXh0
QXR0cmlidXRlXSB8fAorICAgICAgICBbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5T
QWNjZXNzaWJpbGl0eVNlbGVjdGVkVGV4dFJhbmdlQXR0cmlidXRlXSB8fAorICAgICAgICBbYXR0
cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eVZpc2libGVDaGFyYWN0
ZXJSYW5nZUF0dHJpYnV0ZV0pCisgICAgICAgIHJldHVybiBtX29iamVjdC0+Y2FuU2V0VGV4dFJh
bmdlQXR0cmlidXRlcygpOworICAgIAorICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9T
dHJpbmc6TlNBY2Nlc3NpYmlsaXR5R3JhYmJlZEF0dHJpYnV0ZV0pCisgICAgICAgIHJldHVybiBZ
RVM7CisgICAgCisgICAgcmV0dXJuIE5POworfQorCisvLyBhY2Nlc3NpYmlsaXR5U2hvdWxkVXNl
VW5pcXVlSWQgaXMgYW4gQXBwS2l0IG1ldGhvZCB3ZSBvdmVycmlkZSBzbyB0aGF0CisvLyBvYmpl
Y3RzIHdpbGwgYmUgZ2l2ZW4gYSB1bmlxdWUgSUQsIGFuZCB0aGVyZWZvcmUgYWxsb3cgQXBwS2l0
IHRvIGtub3cgd2hlbiB0aGV5CisvLyBiZWNvbWUgb2Jzb2xldGUgKGUuZy4gd2hlbiB0aGUgdXNl
ciBuYXZpZ2F0ZXMgdG8gYSBuZXcgd2ViIHBhZ2UsIG1ha2luZyB0aGlzIG9uZQorLy8gdW5yZW5k
ZXJlZCBidXQgbm90IGRlYWxsb2NhdGVkIGJlY2F1c2UgaXQgaXMgaW4gdGhlIGJhY2svZm9yd2Fy
ZCBjYWNoZSkuCisvLyBJdCBpcyBpbXBvcnRhbnQgdG8gY2FsbCBOU0FjY2Vzc2liaWxpdHlVbnJl
Z2lzdGVyVW5pcXVlSWRGb3JVSUVsZW1lbnQgaW4gdGhlCisvLyBhcHByb3ByaWF0ZSBwbGFjZSAo
ZS5nLiBkZWFsbG9jKSB0byByZW1vdmUgdGhlc2Ugbm9uLXJldGFpbmVkIHJlZmVyZW5jZXMgZnJv
bQorLy8gQXBwS2l0J3MgaWQgbWFwcGluZyB0YWJsZXMuIFdlIGRvIHRoaXMgaW4gZGV0YWNoIGJ5
IGNhbGxpbmcgdW5yZWdpc3RlclVuaXF1ZUlkRm9yVUlFbGVtZW50LgorLy8KKy8vIFJlZ2lzdGVy
aW5nIGFuIG9iamVjdCBpcyBhbHNvIHJlcXVpcmVkIGZvciBvYnNlcnZpbmcgbm90aWZpY2F0aW9u
cy4gT25seSByZWdpc3RlcmVkIG9iamVjdHMgY2FuIGJlIG9ic2VydmVkLgorLSAoQk9PTClhY2Nl
c3NpYmlsaXR5SXNJZ25vcmVkCit7CisgICAgaWYgKCFbc2VsZiB1cGRhdGVPYmplY3RCYWNraW5n
U3RvcmVdKQorICAgICAgICByZXR1cm4gWUVTOworCisgICAgaWYgKG1fb2JqZWN0LT5pc0F0dGFj
aG1lbnQoKSkKKyAgICAgICAgcmV0dXJuIFtbc2VsZiBhdHRhY2htZW50Vmlld10gYWNjZXNzaWJp
bGl0eUlzSWdub3JlZF07CisgICAgcmV0dXJuIG1fb2JqZWN0LT5hY2Nlc3NpYmlsaXR5SXNJZ25v
cmVkKCk7Cit9CisKKy0gKE5TQXJyYXkqIClhY2Nlc3NpYmlsaXR5UGFyYW1ldGVyaXplZEF0dHJp
YnV0ZU5hbWVzCit7CisgICAgaWYgKCFbc2VsZiB1cGRhdGVPYmplY3RCYWNraW5nU3RvcmVdKQor
ICAgICAgICByZXR1cm4gbmlsOworCisgICAgaWYgKG1fb2JqZWN0LT5pc0F0dGFjaG1lbnQoKSkg
CisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBzdGF0aWMgTlNBcnJheSogcGFyYW1BdHRycyA9
IG5pbDsKKyAgICBzdGF0aWMgTlNBcnJheSogdGV4dFBhcmFtQXR0cnMgPSBuaWw7CisgICAgc3Rh
dGljIE5TQXJyYXkqIHRhYmxlUGFyYW1BdHRycyA9IG5pbDsKKyAgICBpZiAocGFyYW1BdHRycyA9
PSBuaWwpIHsKKyAgICAgICAgcGFyYW1BdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhP
YmplY3RzOgorICAgICAgICAgICAgICAgICAgICAgIEAiQVhVSUVsZW1lbnRGb3JUZXh0TWFya2Vy
IiwKKyAgICAgICAgICAgICAgICAgICAgICBAIkFYVGV4dE1hcmtlclJhbmdlRm9yVUlFbGVtZW50
IiwKKyAgICAgICAgICAgICAgICAgICAgICBAIkFYTGluZUZvclRleHRNYXJrZXIiLAorICAgICAg
ICAgICAgICAgICAgICAgIEAiQVhUZXh0TWFya2VyUmFuZ2VGb3JMaW5lIiwKKyAgICAgICAgICAg
ICAgICAgICAgICBAIkFYU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlIiwKKyAgICAgICAgICAgICAg
ICAgICAgICBAIkFYVGV4dE1hcmtlckZvclBvc2l0aW9uIiwKKyAgICAgICAgICAgICAgICAgICAg
ICBAIkFYQm91bmRzRm9yVGV4dE1hcmtlclJhbmdlIiwKKyAgICAgICAgICAgICAgICAgICAgICBA
IkFYQXR0cmlidXRlZFN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSIsCisgICAgICAgICAgICAgICAg
ICAgICAgQCJBWFRleHRNYXJrZXJSYW5nZUZvclVub3JkZXJlZFRleHRNYXJrZXJzIiwKKyAgICAg
ICAgICAgICAgICAgICAgICBAIkFYTmV4dFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIiwKKyAgICAg
ICAgICAgICAgICAgICAgICBAIkFYUHJldmlvdXNUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIsCisg
ICAgICAgICAgICAgICAgICAgICAgQCJBWExlZnRXb3JkVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1h
cmtlciIsCisgICAgICAgICAgICAgICAgICAgICAgQCJBWFJpZ2h0V29yZFRleHRNYXJrZXJSYW5n
ZUZvclRleHRNYXJrZXIiLAorICAgICAgICAgICAgICAgICAgICAgIEAiQVhMZWZ0TGluZVRleHRN
YXJrZXJSYW5nZUZvclRleHRNYXJrZXIiLAorICAgICAgICAgICAgICAgICAgICAgIEAiQVhSaWdo
dExpbmVUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyIiwKKyAgICAgICAgICAgICAgICAgICAg
ICBAIkFYU2VudGVuY2VUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyIiwKKyAgICAgICAgICAg
ICAgICAgICAgICBAIkFYUGFyYWdyYXBoVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlciIsCisg
ICAgICAgICAgICAgICAgICAgICAgQCJBWE5leHRXb3JkRW5kVGV4dE1hcmtlckZvclRleHRNYXJr
ZXIiLAorICAgICAgICAgICAgICAgICAgICAgIEAiQVhQcmV2aW91c1dvcmRTdGFydFRleHRNYXJr
ZXJGb3JUZXh0TWFya2VyIiwKKyAgICAgICAgICAgICAgICAgICAgICBAIkFYTmV4dExpbmVFbmRU
ZXh0TWFya2VyRm9yVGV4dE1hcmtlciIsCisgICAgICAgICAgICAgICAgICAgICAgQCJBWFByZXZp
b3VzTGluZVN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIiLAorICAgICAgICAgICAgICAgICAg
ICAgIEAiQVhOZXh0U2VudGVuY2VFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlciIsCisgICAgICAg
ICAgICAgICAgICAgICAgQCJBWFByZXZpb3VzU2VudGVuY2VTdGFydFRleHRNYXJrZXJGb3JUZXh0
TWFya2VyIiwKKyAgICAgICAgICAgICAgICAgICAgICBAIkFYTmV4dFBhcmFncmFwaEVuZFRleHRN
YXJrZXJGb3JUZXh0TWFya2VyIiwKKyAgICAgICAgICAgICAgICAgICAgICBAIkFYUHJldmlvdXNQ
YXJhZ3JhcGhTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIiwKKyAgICAgICAgICAgICAgICAg
ICAgICBAIkFYU3R5bGVUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyIiwKKyAgICAgICAgICAg
ICAgICAgICAgICBAIkFYTGVuZ3RoRm9yVGV4dE1hcmtlclJhbmdlIiwKKyAgICAgICAgICAgICAg
ICAgICAgICBOU0FjY2Vzc2liaWxpdHlCb3VuZHNGb3JSYW5nZVBhcmFtZXRlcml6ZWRBdHRyaWJ1
dGUsCisgICAgICAgICAgICAgICAgICAgICAgTlNBY2Nlc3NpYmlsaXR5U3RyaW5nRm9yUmFuZ2VQ
YXJhbWV0ZXJpemVkQXR0cmlidXRlLAorICAgICAgICAgICAgICAgICAgICAgIE5TQWNjZXNzaWJp
bGl0eVVJRWxlbWVudHNGb3JTZWFyY2hQcmVkaWNhdGVQYXJhbWV0ZXJpemVkQXR0cmlidXRlLAor
ICAgICAgICAgICAgICAgICAgICAgIG5pbF07CisgICAgfQorCisgICAgaWYgKHRleHRQYXJhbUF0
dHJzID09IG5pbCkgeworICAgICAgICBOU011dGFibGVBcnJheSogdGVtcEFycmF5ID0gW1tOU011
dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTpwYXJhbUF0dHJzXTsKKyAgICAgICAgW3Rl
bXBBcnJheSBhZGRPYmplY3Q6KE5TU3RyaW5nKilrQVhMaW5lRm9ySW5kZXhQYXJhbWV0ZXJpemVk
QXR0cmlidXRlXTsKKyAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6KE5TU3RyaW5nKilrQVhS
YW5nZUZvckxpbmVQYXJhbWV0ZXJpemVkQXR0cmlidXRlXTsKKyAgICAgICAgW3RlbXBBcnJheSBh
ZGRPYmplY3Q6KE5TU3RyaW5nKilrQVhTdHJpbmdGb3JSYW5nZVBhcmFtZXRlcml6ZWRBdHRyaWJ1
dGVdOworICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDooTlNTdHJpbmcqKWtBWFJhbmdlRm9y
UG9zaXRpb25QYXJhbWV0ZXJpemVkQXR0cmlidXRlXTsKKyAgICAgICAgW3RlbXBBcnJheSBhZGRP
YmplY3Q6KE5TU3RyaW5nKilrQVhSYW5nZUZvckluZGV4UGFyYW1ldGVyaXplZEF0dHJpYnV0ZV07
CisgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0OihOU1N0cmluZyopa0FYQm91bmRzRm9yUmFu
Z2VQYXJhbWV0ZXJpemVkQXR0cmlidXRlXTsKKyAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6
KE5TU3RyaW5nKilrQVhSVEZGb3JSYW5nZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVdOworICAgICAg
ICBbdGVtcEFycmF5IGFkZE9iamVjdDooTlNTdHJpbmcqKWtBWEF0dHJpYnV0ZWRTdHJpbmdGb3JS
YW5nZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVdOworICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVj
dDooTlNTdHJpbmcqKWtBWFN0eWxlUmFuZ2VGb3JJbmRleFBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVd
OworICAgICAgICB0ZXh0UGFyYW1BdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJh
eTp0ZW1wQXJyYXldOworICAgICAgICBbdGVtcEFycmF5IHJlbGVhc2VdOworICAgIH0KKyAgICBp
ZiAodGFibGVQYXJhbUF0dHJzID09IG5pbCkgeworICAgICAgICBOU011dGFibGVBcnJheSogdGVt
cEFycmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTpwYXJhbUF0dHJz
XTsKKyAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5Q2VsbEZvckNv
bHVtbkFuZFJvd1BhcmFtZXRlcml6ZWRBdHRyaWJ1dGVdOworICAgICAgICB0YWJsZVBhcmFtQXR0
cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5XTsKKyAgICAgICAg
W3RlbXBBcnJheSByZWxlYXNlXTsKKyAgICB9CisgICAgCisgICAgaWYgKG1fb2JqZWN0LT5pc1Bh
c3N3b3JkRmllbGQoKSkKKyAgICAgICAgcmV0dXJuIFtOU0FycmF5IGFycmF5XTsKKyAgICAKKyAg
ICBpZiAoIW1fb2JqZWN0LT5pc0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QoKSkKKyAgICAgICAg
cmV0dXJuIHBhcmFtQXR0cnM7CisKKyAgICBpZiAobV9vYmplY3QtPmlzVGV4dENvbnRyb2woKSkK
KyAgICAgICAgcmV0dXJuIHRleHRQYXJhbUF0dHJzOworICAgIAorICAgIGlmIChtX29iamVjdC0+
aXNBY2Nlc3NpYmlsaXR5VGFibGUoKSkKKyAgICAgICAgcmV0dXJuIHRhYmxlUGFyYW1BdHRyczsK
KyAgICAKKyAgICBpZiAobV9vYmplY3QtPmlzTWVudVJlbGF0ZWQoKSkKKyAgICAgICAgcmV0dXJu
IG5pbDsKKworICAgIHJldHVybiBwYXJhbUF0dHJzOworfQorCistICh2b2lkKWFjY2Vzc2liaWxp
dHlQZXJmb3JtUHJlc3NBY3Rpb24KK3sKKyAgICBpZiAoIVtzZWxmIHVwZGF0ZU9iamVjdEJhY2tp
bmdTdG9yZV0pCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX29iamVjdC0+aXNBdHRhY2ht
ZW50KCkpCisgICAgICAgIFtbc2VsZiBhdHRhY2htZW50Vmlld10gYWNjZXNzaWJpbGl0eVBlcmZv
cm1BY3Rpb246TlNBY2Nlc3NpYmlsaXR5UHJlc3NBY3Rpb25dOworICAgIGVsc2UKKyAgICAgICAg
bV9vYmplY3QtPnByZXNzKCk7ICAgIAorfQorCistICh2b2lkKWFjY2Vzc2liaWxpdHlQZXJmb3Jt
SW5jcmVtZW50QWN0aW9uCit7CisgICAgaWYgKCFbc2VsZiB1cGRhdGVPYmplY3RCYWNraW5nU3Rv
cmVdKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9vYmplY3QtPmlzQXR0YWNobWVudCgp
KQorICAgICAgICBbW3NlbGYgYXR0YWNobWVudFZpZXddIGFjY2Vzc2liaWxpdHlQZXJmb3JtQWN0
aW9uOk5TQWNjZXNzaWJpbGl0eUluY3JlbWVudEFjdGlvbl07CisgICAgZWxzZQorICAgICAgICBt
X29iamVjdC0+aW5jcmVtZW50KCk7ICAgIAorfQorCistICh2b2lkKWFjY2Vzc2liaWxpdHlQZXJm
b3JtRGVjcmVtZW50QWN0aW9uCit7CisgICAgaWYgKCFbc2VsZiB1cGRhdGVPYmplY3RCYWNraW5n
U3RvcmVdKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV9vYmplY3QtPmlzQXR0YWNobWVu
dCgpKQorICAgICAgICBbW3NlbGYgYXR0YWNobWVudFZpZXddIGFjY2Vzc2liaWxpdHlQZXJmb3Jt
QWN0aW9uOk5TQWNjZXNzaWJpbGl0eURlY3JlbWVudEFjdGlvbl07CisgICAgZWxzZQorICAgICAg
ICBtX29iamVjdC0+ZGVjcmVtZW50KCk7ICAgIAorfQorCistICh2b2lkKWFjY2Vzc2liaWxpdHlQ
ZXJmb3JtU2hvd01lbnVBY3Rpb24KK3sKKyAgICBpZiAobV9vYmplY3QtPnJvbGVWYWx1ZSgpID09
IENvbWJvQm94Um9sZSkKKyAgICAgICAgbV9vYmplY3QtPnNldElzRXhwYW5kZWQodHJ1ZSk7Cisg
ICAgZWxzZSB7CisgICAgICAgIC8vIFRoaXMgbmVlZHMgdG8gYmUgcGVyZm9ybWVkIGluIGFuIGl0
ZXJhdGlvbiBvZiB0aGUgcnVuIGxvb3AgdGhhdCBkaWQgbm90IHN0YXJ0IGZyb20gYW4gQVggY2Fs
bC4gCisgICAgICAgIC8vIElmIGl0J3MgdGhlIHNhbWUgcnVuIGxvb3AgaXRlcmF0aW9uLCB0aGUg
bWVudSBvcGVuIG5vdGlmaWNhdGlvbiB3b24ndCBiZSBzZW50CisgICAgICAgIFtzZWxmIHBlcmZv
cm1TZWxlY3RvcjpAc2VsZWN0b3IoYWNjZXNzaWJpbGl0eVNob3dDb250ZXh0TWVudSkgd2l0aE9i
amVjdDpuaWwgYWZ0ZXJEZWxheTowLjBdOworICAgIH0KK30KKworLSAodm9pZClhY2Nlc3NpYmls
aXR5U2hvd0NvbnRleHRNZW51Cit7ICAgIAorICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbV9v
YmplY3QtPmRvY3VtZW50RnJhbWVWaWV3KCk7CisgICAgaWYgKCFmcmFtZVZpZXcpCisgICAgICAg
IHJldHVybjsKKyAgICBGcmFtZSogZnJhbWUgPSBmcmFtZVZpZXctPmZyYW1lKCk7CisgICAgaWYg
KCFmcmFtZSkKKyAgICAgICAgcmV0dXJuOworICAgIFBhZ2UqIHBhZ2UgPSBmcmFtZS0+cGFnZSgp
OworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gU2ltdWxhdGUgYSBj
bGljayBpbiB0aGUgbWlkZGxlIG9mIHRoZSBvYmplY3QuCisgICAgTGF5b3V0UG9pbnQgY2xpY2tQ
b2ludCA9IG1fb2JqZWN0LT5jbGlja1BvaW50KCk7CisgICAgCisgICAgUGxhdGZvcm1Nb3VzZUV2
ZW50IG1vdXNlRXZlbnQoY2xpY2tQb2ludCwgY2xpY2tQb2ludCwgUmlnaHRCdXR0b24sIE1vdXNl
RXZlbnRQcmVzc2VkLCAxLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgY3VycmVudFRpbWUo
KSk7CisgICAgYm9vbCBoYW5kbGVkID0gZnJhbWUtPmV2ZW50SGFuZGxlcigpLT5zZW5kQ29udGV4
dE1lbnVFdmVudChtb3VzZUV2ZW50KTsKKyAgICBpZiAoaGFuZGxlZCkKKyAgICAgICAgcGFnZS0+
Y2hyb21lKCktPnNob3dDb250ZXh0TWVudSgpOworfQorCistICh2b2lkKWFjY2Vzc2liaWxpdHlQ
ZXJmb3JtQWN0aW9uOihOU1N0cmluZyopYWN0aW9uCit7CisgICAgaWYgKCFbc2VsZiB1cGRhdGVP
YmplY3RCYWNraW5nU3RvcmVdKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoW2FjdGlvbiBp
c0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5UHJlc3NBY3Rpb25dKQorICAgICAgICBbc2Vs
ZiBhY2Nlc3NpYmlsaXR5UGVyZm9ybVByZXNzQWN0aW9uXTsKKyAgICAKKyAgICBlbHNlIGlmIChb
YWN0aW9uIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlTaG93TWVudUFjdGlvbl0pCisg
ICAgICAgIFtzZWxmIGFjY2Vzc2liaWxpdHlQZXJmb3JtU2hvd01lbnVBY3Rpb25dOworCisgICAg
ZWxzZSBpZiAoW2FjdGlvbiBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5SW5jcmVtZW50
QWN0aW9uXSkKKyAgICAgICAgW3NlbGYgYWNjZXNzaWJpbGl0eVBlcmZvcm1JbmNyZW1lbnRBY3Rp
b25dOworCisgICAgZWxzZSBpZiAoW2FjdGlvbiBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmls
aXR5RGVjcmVtZW50QWN0aW9uXSkKKyAgICAgICAgW3NlbGYgYWNjZXNzaWJpbGl0eVBlcmZvcm1E
ZWNyZW1lbnRBY3Rpb25dOworfQorCistICh2b2lkKWFjY2Vzc2liaWxpdHlTZXRWYWx1ZTooaWQp
dmFsdWUgZm9yQXR0cmlidXRlOihOU1N0cmluZyopYXR0cmlidXRlTmFtZQoreworICAgIGlmICgh
W3NlbGYgdXBkYXRlT2JqZWN0QmFja2luZ1N0b3JlXSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
aWQgdGV4dE1hcmtlclJhbmdlID0gbmlsOworICAgIE5TTnVtYmVyKiAgICAgICAgICAgICAgIG51
bWJlciA9IG5pbDsKKyAgICBOU1N0cmluZyogICAgICAgICAgICAgICBzdHJpbmcgPSBuaWw7Cisg
ICAgTlNSYW5nZSAgICAgICAgICAgICAgICAgcmFuZ2UgPSB7MCwgMH07CisgICAgTlNBcnJheSog
ICAgICAgICAgICAgICAgYXJyYXkgPSBuaWw7CisgICAgCisgICAgLy8gZGVjb2RlIHRoZSBwYXJh
bWV0ZXIKKyAgICBpZiAoQVhPYmplY3RJc1RleHRNYXJrZXJSYW5nZSh2YWx1ZSkpCisgICAgICAg
IHRleHRNYXJrZXJSYW5nZSA9IHZhbHVlOworCisgICAgZWxzZSBpZiAoW3ZhbHVlIGlzS2luZE9m
Q2xhc3M6W05TTnVtYmVyIHNlbGZdXSkKKyAgICAgICAgbnVtYmVyID0gdmFsdWU7CisKKyAgICBl
bHNlIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgc2VsZl1dKQorICAgICAgICBz
dHJpbmcgPSB2YWx1ZTsKKyAgICAKKyAgICBlbHNlIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpb
TlNWYWx1ZSBzZWxmXV0pCisgICAgICAgIHJhbmdlID0gW3ZhbHVlIHJhbmdlVmFsdWVdOworICAg
IAorICAgIGVsc2UgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU0FycmF5IHNlbGZdXSkKKyAg
ICAgICAgYXJyYXkgPSB2YWx1ZTsKKyAgICAKKyAgICAvLyBoYW5kbGUgdGhlIGNvbW1hbmQKKyAg
ICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBAIkFYU2VsZWN0ZWRUZXh0TWFy
a2VyUmFuZ2UiXSkgeworICAgICAgICBBU1NFUlQodGV4dE1hcmtlclJhbmdlKTsKKyAgICAgICAg
bV9vYmplY3QtPnNldFNlbGVjdGVkVmlzaWJsZVBvc2l0aW9uUmFuZ2UoW3NlbGYgdmlzaWJsZVBv
c2l0aW9uUmFuZ2VGb3JUZXh0TWFya2VyUmFuZ2U6dGV4dE1hcmtlclJhbmdlXSk7ICAgICAgICAK
KyAgICB9IGVsc2UgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3Np
YmlsaXR5Rm9jdXNlZEF0dHJpYnV0ZV0pIHsKKyAgICAgICAgQVNTRVJUKG51bWJlcik7CisgICAg
ICAgIG1fb2JqZWN0LT5zZXRGb2N1c2VkKFtudW1iZXIgaW50VmFsdWVdICE9IDApOworICAgIH0g
ZWxzZSBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlW
YWx1ZUF0dHJpYnV0ZV0pIHsKKyAgICAgICAgaWYgKG51bWJlciAmJiBtX29iamVjdC0+Y2FuU2V0
TnVtZXJpY1ZhbHVlKCkpCisgICAgICAgICAgICBtX29iamVjdC0+c2V0VmFsdWUoW251bWJlciBm
bG9hdFZhbHVlXSk7CisgICAgICAgIGVsc2UgaWYgKHN0cmluZykKKyAgICAgICAgICAgIG1fb2Jq
ZWN0LT5zZXRWYWx1ZShzdHJpbmcpOworICAgIH0gZWxzZSBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNF
cXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZEF0dHJpYnV0ZV0pIHsKKyAgICAg
ICAgaWYgKCFudW1iZXIpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fb2JqZWN0LT5z
ZXRTZWxlY3RlZChbbnVtYmVyIGJvb2xWYWx1ZV0pOworICAgIH0gZWxzZSBpZiAoW2F0dHJpYnV0
ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZENoaWxkcmVuQXR0
cmlidXRlXSkgeworICAgICAgICBpZiAoIWFycmF5IHx8IG1fb2JqZWN0LT5yb2xlVmFsdWUoKSAh
PSBMaXN0Qm94Um9sZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgQWNjZXNzaWJpbGl0
eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIHNlbGVjdGVkQ2hpbGRyZW47Cisg
ICAgICAgIGNvbnZlcnRUb1ZlY3RvcihhcnJheSwgc2VsZWN0ZWRDaGlsZHJlbik7CisgICAgICAg
IHN0YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlMaXN0Qm94Kj4obV9vYmplY3QpLT5zZXRTZWxlY3Rl
ZENoaWxkcmVuKHNlbGVjdGVkQ2hpbGRyZW4pOworICAgIH0gZWxzZSBpZiAobV9vYmplY3QtPmlz
VGV4dENvbnRyb2woKSkgeworICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3Ry
aW5nOiBOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFRleHRBdHRyaWJ1dGVdKSB7CisgICAgICAgICAg
ICBtX29iamVjdC0+c2V0U2VsZWN0ZWRUZXh0KHN0cmluZyk7CisgICAgICAgIH0gZWxzZSBpZiAo
W2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFRl
eHRSYW5nZUF0dHJpYnV0ZV0pIHsKKyAgICAgICAgICAgIG1fb2JqZWN0LT5zZXRTZWxlY3RlZFRl
eHRSYW5nZShQbGFpblRleHRSYW5nZShyYW5nZS5sb2NhdGlvbiwgcmFuZ2UubGVuZ3RoKSk7Cisg
ICAgICAgIH0gZWxzZSBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vz
c2liaWxpdHlWaXNpYmxlQ2hhcmFjdGVyUmFuZ2VBdHRyaWJ1dGVdKSB7CisgICAgICAgICAgICBt
X29iamVjdC0+bWFrZVJhbmdlVmlzaWJsZShQbGFpblRleHRSYW5nZShyYW5nZS5sb2NhdGlvbiwg
cmFuZ2UubGVuZ3RoKSk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKFthdHRyaWJ1dGVOYW1l
IGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlEaXNjbG9zaW5nQXR0cmlidXRlXSkKKyAg
ICAgICAgbV9vYmplY3QtPnNldElzRXhwYW5kZWQoW251bWJlciBib29sVmFsdWVdKTsKKyAgICBl
bHNlIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5U2Vs
ZWN0ZWRSb3dzQXR0cmlidXRlXSkgeworICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Igc2VsZWN0ZWRSb3dzOworICAgICAgICBjb252ZXJ0VG9W
ZWN0b3IoYXJyYXksIHNlbGVjdGVkUm93cyk7CisgICAgICAgIGlmIChtX29iamVjdC0+aXNUcmVl
KCkgfHwgbV9vYmplY3QtPmlzQWNjZXNzaWJpbGl0eVRhYmxlKCkpCisgICAgICAgICAgICBtX29i
amVjdC0+c2V0U2VsZWN0ZWRSb3dzKHNlbGVjdGVkUm93cyk7CisgICAgfSBlbHNlIGlmIChbYXR0
cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5R3JhYmJlZEF0dHJpYnV0
ZV0pCisgICAgICAgIG1fb2JqZWN0LT5zZXRBUklBR3JhYmJlZChbbnVtYmVyIGJvb2xWYWx1ZV0p
OworfQorCitzdGF0aWMgUmVuZGVyT2JqZWN0KiByZW5kZXJlckZvclZpZXcoTlNWaWV3KiB2aWV3
KQoreworICAgIGlmICghW3ZpZXcgY29uZm9ybXNUb1Byb3RvY29sOkBwcm90b2NvbChXZWJDb3Jl
RnJhbWVWaWV3KV0pCisgICAgICAgIHJldHVybiAwOworCisgICAgTlNWaWV3PFdlYkNvcmVGcmFt
ZVZpZXc+KiBmcmFtZVZpZXcgPSAoTlNWaWV3PFdlYkNvcmVGcmFtZVZpZXc+Kil2aWV3OworICAg
IEZyYW1lKiBmcmFtZSA9IFtmcmFtZVZpZXcgX3dlYl9mcmFtZV07CisgICAgaWYgKCFmcmFtZSkK
KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBOb2RlKiBub2RlID0gZnJhbWUtPmRvY3VtZW50KCkt
Pm93bmVyRWxlbWVudCgpOworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAg
ICByZXR1cm4gbm9kZS0+cmVuZGVyZXIoKTsKK30KKworLSAoaWQpX2FjY2Vzc2liaWxpdHlQYXJl
bnRGb3JTdWJ2aWV3OihOU1ZpZXcqKXN1YnZpZXcKK3sgICAKKyAgICBSZW5kZXJPYmplY3QqIHJl
bmRlcmVyID0gcmVuZGVyZXJGb3JWaWV3KHN1YnZpZXcpOworICAgIGlmICghcmVuZGVyZXIpCisg
ICAgICAgIHJldHVybiBuaWw7CisKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmogPSByZW5k
ZXJlci0+ZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShyZW5kZXJlcik7
CisgICAgaWYgKG9iaikKKyAgICAgICAgcmV0dXJuIG9iai0+cGFyZW50T2JqZWN0VW5pZ25vcmVk
KCktPndyYXBwZXIoKTsKKyAgICByZXR1cm4gbmlsOworfQorCistIChOU1N0cmluZyopYWNjZXNz
aWJpbGl0eUFjdGlvbkRlc2NyaXB0aW9uOihOU1N0cmluZyopYWN0aW9uCit7CisgICAgLy8gd2Ug
aGF2ZSBubyBjdXN0b20gYWN0aW9ucworICAgIHJldHVybiBOU0FjY2Vzc2liaWxpdHlBY3Rpb25E
ZXNjcmlwdGlvbihhY3Rpb24pOworfQorCisvLyBUaGUgQ0ZBdHRyaWJ1dGVkU3RyaW5nVHlwZSBy
ZXByZXNlbnRhdGlvbiBvZiB0aGUgdGV4dCBhc3NvY2lhdGVkIHdpdGggdGhpcyBhY2Nlc3NpYmls
aXR5CisvLyBvYmplY3QgdGhhdCBpcyBzcGVjaWZpZWQgYnkgdGhlIGdpdmVuIHJhbmdlLgorLSAo
TlNBdHRyaWJ1dGVkU3RyaW5nKilkb0FYQXR0cmlidXRlZFN0cmluZ0ZvclJhbmdlOihOU1Jhbmdl
KXJhbmdlCit7CisgICAgUGxhaW5UZXh0UmFuZ2UgdGV4dFJhbmdlID0gUGxhaW5UZXh0UmFuZ2Uo
cmFuZ2UubG9jYXRpb24sIHJhbmdlLmxlbmd0aCk7CisgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2Ug
dmlzaWJsZVBvc1JhbmdlID0gbV9vYmplY3QtPnZpc2libGVQb3NpdGlvblJhbmdlRm9yUmFuZ2Uo
dGV4dFJhbmdlKTsKKyAgICByZXR1cm4gW3NlbGYgZG9BWEF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0
TWFya2VyUmFuZ2U6W3NlbGYgdGV4dE1hcmtlclJhbmdlRnJvbVZpc2libGVQb3NpdGlvbnM6dmlz
aWJsZVBvc1JhbmdlLnN0YXJ0IGVuZFBvc2l0aW9uOnZpc2libGVQb3NSYW5nZS5lbmRdXTsKK30K
KworLy8gVGhlIFJURiByZXByZXNlbnRhdGlvbiBvZiB0aGUgdGV4dCBhc3NvY2lhdGVkIHdpdGgg
dGhpcyBhY2Nlc3NpYmlsaXR5IG9iamVjdCB0aGF0IGlzCisvLyBzcGVjaWZpZWQgYnkgdGhlIGdp
dmVuIHJhbmdlLgorLSAoTlNEYXRhKilkb0FYUlRGRm9yUmFuZ2U6KE5TUmFuZ2UpcmFuZ2UKK3sK
KyAgICBOU0F0dHJpYnV0ZWRTdHJpbmcqIGF0dHJTdHJpbmcgPSBbc2VsZiBkb0FYQXR0cmlidXRl
ZFN0cmluZ0ZvclJhbmdlOnJhbmdlXTsKKyAgICByZXR1cm4gW2F0dHJTdHJpbmcgUlRGRnJvbVJh
bmdlOiBOU01ha2VSYW5nZSgwLCBbYXR0clN0cmluZyBsZW5ndGhdKSBkb2N1bWVudEF0dHJpYnV0
ZXM6IG5pbF07Cit9CisKKy0gKGlkKWFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTooTlNTdHJp
bmcqKWF0dHJpYnV0ZSBmb3JQYXJhbWV0ZXI6KGlkKXBhcmFtZXRlcgoreworICAgIGlkIHRleHRN
YXJrZXIgPSBuaWw7CisgICAgaWQgdGV4dE1hcmtlclJhbmdlID0gbmlsOworICAgIE5TTnVtYmVy
KiBudW1iZXIgPSBuaWw7CisgICAgTlNBcnJheSogYXJyYXkgPSBuaWw7CisgICAgTlNEaWN0aW9u
YXJ5KiBkaWN0aW9uYXJ5ID0gbmlsOworICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiB1
aUVsZW1lbnQgPSAwOworICAgIE5TUG9pbnQgcG9pbnQgPSBOU1plcm9Qb2ludDsKKyAgICBib29s
IHBvaW50U2V0ID0gZmFsc2U7CisgICAgTlNSYW5nZSByYW5nZSA9IHswLCAwfTsKKyAgICBib29s
IHJhbmdlU2V0ID0gZmFsc2U7CisgICAgCisgICAgLy8gYmFzaWMgcGFyYW1ldGVyIHZhbGlkYXRp
b24KKyAgICBpZiAoIW1fb2JqZWN0IHx8ICFhdHRyaWJ1dGUgfHwgIXBhcmFtZXRlcikKKyAgICAg
ICAgcmV0dXJuIG5pbDsKKworICAgIGlmICghW3NlbGYgdXBkYXRlT2JqZWN0QmFja2luZ1N0b3Jl
XSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAKKyAgICAvLyBjb21tb24gcGFyYW1ldGVyIHR5
cGUgY2hlY2svY2FzdGluZy4gIE5pbCBjaGVja3MgaW4gaGFuZGxlcnMgY2F0Y2ggd3JvbmcgdHlw
ZSBjYXNlLgorICAgIC8vIE5PVEU6IFRoaXMgYXNzdW1lcyBuaWwgaXMgbm90IGEgdmFsaWQgcGFy
YW1ldGVyLCBiZWNhdXNlIGl0IGlzIGluZGlzdGluZ3Vpc2hhYmxlIGZyb20KKyAgICAvLyBhIHBh
cmFtZXRlciBvZiB0aGUgd3JvbmcgdHlwZS4KKyAgICBpZiAoQVhPYmplY3RJc1RleHRNYXJrZXIo
cGFyYW1ldGVyKSkKKyAgICAgICAgdGV4dE1hcmtlciA9IHBhcmFtZXRlcjsKKworICAgIGVsc2Ug
aWYgKEFYT2JqZWN0SXNUZXh0TWFya2VyUmFuZ2UocGFyYW1ldGVyKSkKKyAgICAgICAgdGV4dE1h
cmtlclJhbmdlID0gcGFyYW1ldGVyOworCisgICAgZWxzZSBpZiAoW3BhcmFtZXRlciBpc0tpbmRP
ZkNsYXNzOltBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBzZWxmXV0pCisgICAgICAgIHVpRWxl
bWVudCA9IFsoQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqKXBhcmFtZXRlciBhY2Nlc3NpYmls
aXR5T2JqZWN0XTsKKworICAgIGVsc2UgaWYgKFtwYXJhbWV0ZXIgaXNLaW5kT2ZDbGFzczpbTlNO
dW1iZXIgc2VsZl1dKQorICAgICAgICBudW1iZXIgPSBwYXJhbWV0ZXI7CisKKyAgICBlbHNlIGlm
IChbcGFyYW1ldGVyIGlzS2luZE9mQ2xhc3M6W05TQXJyYXkgc2VsZl1dKQorICAgICAgICBhcnJh
eSA9IHBhcmFtZXRlcjsKKworICAgIGVsc2UgaWYgKFtwYXJhbWV0ZXIgaXNLaW5kT2ZDbGFzczpb
TlNEaWN0aW9uYXJ5IHNlbGZdXSkKKyAgICAgICAgZGljdGlvbmFyeSA9IHBhcmFtZXRlcjsKKwor
ICAgIGVsc2UgaWYgKFtwYXJhbWV0ZXIgaXNLaW5kT2ZDbGFzczpbTlNWYWx1ZSBzZWxmXV0gJiYg
c3RyY21wKFsoTlNWYWx1ZSopcGFyYW1ldGVyIG9iakNUeXBlXSwgQGVuY29kZShOU1BvaW50KSkg
PT0gMCkgeworICAgICAgICBwb2ludFNldCA9IHRydWU7CisgICAgICAgIHBvaW50ID0gWyhOU1Zh
bHVlKilwYXJhbWV0ZXIgcG9pbnRWYWx1ZV07CisKKyAgICB9IGVsc2UgaWYgKFtwYXJhbWV0ZXIg
aXNLaW5kT2ZDbGFzczpbTlNWYWx1ZSBzZWxmXV0gJiYgc3RyY21wKFsoTlNWYWx1ZSopcGFyYW1l
dGVyIG9iakNUeXBlXSwgQGVuY29kZShOU1JhbmdlKSkgPT0gMCkgeworICAgICAgICByYW5nZVNl
dCA9IHRydWU7CisgICAgICAgIHJhbmdlID0gWyhOU1ZhbHVlKilwYXJhbWV0ZXIgcmFuZ2VWYWx1
ZV07CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gQXR0cmlidXRlIHR5cGUgaXMgbm90IHN1cHBv
cnRlZC4gQWxsb3cgc3VwZXIgdG8gaGFuZGxlLgorICAgICAgICByZXR1cm4gW3N1cGVyIGFjY2Vz
c2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTphdHRyaWJ1dGUgZm9yUGFyYW1ldGVyOnBhcmFtZXRlcl07
CisgICAgfQorICAgIAorICAgIC8vIGRpc3BhdGNoCisgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVh
bFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVVJRWxlbWVudHNGb3JTZWFyY2hQcmVkaWNhdGVQYXJh
bWV0ZXJpemVkQXR0cmlidXRlXSkgeworICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheFN0
YXJ0T2JqZWN0ID0gMDsKKyAgICAgICAgaWYgKFtbZGljdGlvbmFyeSBvYmplY3RGb3JLZXk6QCJB
WFN0YXJ0RWxlbWVudCJdIGlzS2luZE9mQ2xhc3M6W0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
IHNlbGZdXSkKKyAgICAgICAgICAgIGF4U3RhcnRPYmplY3QgPSBbKEFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyKilbZGljdGlvbmFyeSBvYmplY3RGb3JLZXk6QCJBWFN0YXJ0RWxlbWVudCJdIGFj
Y2Vzc2liaWxpdHlPYmplY3RdOworICAgICAgICAKKyAgICAgICAgQWNjZXNzaWJpbGl0eVNlYXJj
aERpcmVjdGlvbiBheFNlYXJjaERpcmVjdGlvbiA9IFNlYXJjaERpcmVjdGlvbk5leHQ7CisgICAg
ICAgIGlmIChbW2RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OkAiQVhEaXJlY3Rpb24iXSBpc0tpbmRP
ZkNsYXNzOltOU1N0cmluZyBzZWxmXV0pCisgICAgICAgICAgICBheFNlYXJjaERpcmVjdGlvbiA9
IChbKE5TU3RyaW5nKilbZGljdGlvbmFyeSBvYmplY3RGb3JLZXk6QCJBWERpcmVjdGlvbiJdIGlz
RXF1YWxUb1N0cmluZzpAIkFYRGlyZWN0aW9uTmV4dCJdKSA/IFNlYXJjaERpcmVjdGlvbk5leHQg
OiBTZWFyY2hEaXJlY3Rpb25QcmV2aW91czsKKyAgICAgICAgCisgICAgICAgIEFjY2Vzc2liaWxp
dHlTZWFyY2hLZXkgYXhTZWFyY2hLZXkgPSBBbnlUeXBlU2VhcmNoS2V5OworICAgICAgICBpZiAo
W1tkaWN0aW9uYXJ5IG9iamVjdEZvcktleTpAIkFYU2VhcmNoS2V5Il0gaXNLaW5kT2ZDbGFzczpb
TlNTdHJpbmcgc2VsZl1dKQorICAgICAgICAgICAgYXhTZWFyY2hLZXkgPSBhY2Nlc3NpYmlsaXR5
U2VhcmNoS2V5Rm9yU3RyaW5nKChDRlN0cmluZ1JlZilbZGljdGlvbmFyeSBvYmplY3RGb3JLZXk6
QCJBWFNlYXJjaEtleSJdKTsKKyAgICAgICAgCisgICAgICAgIFN0cmluZyBzZWFyY2hUZXh0Owor
ICAgICAgICBpZiAoW1tkaWN0aW9uYXJ5IG9iamVjdEZvcktleTpAIkFYU2VhcmNoVGV4dCJdIGlz
S2luZE9mQ2xhc3M6W05TU3RyaW5nIHNlbGZdXSkKKyAgICAgICAgICAgIHNlYXJjaFRleHQgPSAo
Q0ZTdHJpbmdSZWYpW2RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OkAiQVhTZWFyY2hUZXh0Il07Cisg
ICAgICAgIAorICAgICAgICB1bnNpZ25lZCByZXN1bHRzTGltaXQgPSAwOworICAgICAgICBpZiAo
W1tkaWN0aW9uYXJ5IG9iamVjdEZvcktleTpAIkFYUmVzdWx0c0xpbWl0Il0gaXNLaW5kT2ZDbGFz
czpbTlNOdW1iZXIgc2VsZl1dKQorICAgICAgICAgICAgcmVzdWx0c0xpbWl0ID0gWyhOU051bWJl
ciopW2RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OkAiQVhSZXN1bHRzTGltaXQiXSB1bnNpZ25lZElu
dFZhbHVlXTsKKyAgICAgICAgCisgICAgICAgIEFjY2Vzc2liaWxpdHlTZWFyY2hQcmVkaWNhdGUg
YXhTZWFyY2hQcmVkaWNhdGUgPSB7bV9vYmplY3QsIGF4U3RhcnRPYmplY3QsIGF4U2VhcmNoRGly
ZWN0aW9uLCBheFNlYXJjaEtleSwgJnNlYXJjaFRleHQsIHJlc3VsdHNMaW1pdH07CisgICAgICAg
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBheFJlc3Vs
dHM7CisgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFjY2Vzc2libGVPYmplY3RzV2l0aEFj
Y2Vzc2liaWxpdHlTZWFyY2hQcmVkaWNhdGUoJmF4U2VhcmNoUHJlZGljYXRlLCBheFJlc3VsdHMp
OworICAgICAgICAKKyAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkoYXhSZXN1bHRzKTsK
KyAgICB9CisKKyAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWFVJRWxlbWVu
dEZvclRleHRNYXJrZXIiXSkgeworICAgICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvcyA9
IFtzZWxmIHZpc2libGVQb3NpdGlvbkZvclRleHRNYXJrZXI6KHRleHRNYXJrZXIpXTsKKyAgICAg
ICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYXhPYmplY3QgPSBtX29iamVjdC0+YWNjZXNzaWJpbGl0
eU9iamVjdEZvclBvc2l0aW9uKHZpc2libGVQb3MpOworICAgICAgICBpZiAoIWF4T2JqZWN0KQor
ICAgICAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAgICAgcmV0dXJuIGF4T2JqZWN0LT53cmFwcGVy
KCk7CisgICAgfQorCisgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhUZXh0
TWFya2VyUmFuZ2VGb3JVSUVsZW1lbnQiXSkgeworICAgICAgICBWaXNpYmxlUG9zaXRpb25SYW5n
ZSB2cFJhbmdlID0gdWlFbGVtZW50LmdldCgpLT52aXNpYmxlUG9zaXRpb25SYW5nZSgpOworICAg
ICAgICByZXR1cm4gW3NlbGYgdGV4dE1hcmtlclJhbmdlRnJvbVZpc2libGVQb3NpdGlvbnM6dnBS
YW5nZS5zdGFydCBlbmRQb3NpdGlvbjp2cFJhbmdlLmVuZF07CisgICAgfQorCisgICAgaWYgKFth
dHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhMaW5lRm9yVGV4dE1hcmtlciJdKSB7CisgICAg
ICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zID0gW3NlbGYgdmlzaWJsZVBvc2l0aW9uRm9y
VGV4dE1hcmtlcjoodGV4dE1hcmtlcildOworICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJl
cldpdGhVbnNpZ25lZEludDptX29iamVjdC0+bGluZUZvclBvc2l0aW9uKHZpc2libGVQb3MpXTsK
KyAgICB9CisKKyAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWFRleHRNYXJr
ZXJSYW5nZUZvckxpbmUiXSkgeworICAgICAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSB2cFJhbmdl
ID0gbV9vYmplY3QtPnZpc2libGVQb3NpdGlvblJhbmdlRm9yTGluZShbbnVtYmVyIGludFZhbHVl
XSk7CisgICAgICAgIHJldHVybiBbc2VsZiB0ZXh0TWFya2VyUmFuZ2VGcm9tVmlzaWJsZVBvc2l0
aW9uczp2cFJhbmdlLnN0YXJ0IGVuZFBvc2l0aW9uOnZwUmFuZ2UuZW5kXTsKKyAgICB9CisKKyAg
ICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWFN0cmluZ0ZvclRleHRNYXJrZXJS
YW5nZSJdKSB7CisgICAgICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHZpc2libGVQb3NSYW5nZSA9
IFtzZWxmIHZpc2libGVQb3NpdGlvblJhbmdlRm9yVGV4dE1hcmtlclJhbmdlOnRleHRNYXJrZXJS
YW5nZV07CisgICAgICAgIHJldHVybiBtX29iamVjdC0+c3RyaW5nRm9yVmlzaWJsZVBvc2l0aW9u
UmFuZ2UodmlzaWJsZVBvc1JhbmdlKTsKKyAgICB9CisKKyAgICBpZiAoW2F0dHJpYnV0ZSBpc0Vx
dWFsVG9TdHJpbmc6QCJBWFRleHRNYXJrZXJGb3JQb3NpdGlvbiJdKSB7CisgICAgICAgIEludFBv
aW50IHdlYkNvcmVQb2ludCA9IEludFBvaW50KHBvaW50KTsKKyAgICAgICAgcmV0dXJuIHBvaW50
U2V0ID8gW3NlbGYgdGV4dE1hcmtlckZvclZpc2libGVQb3NpdGlvbjptX29iamVjdC0+dmlzaWJs
ZVBvc2l0aW9uRm9yUG9pbnQod2ViQ29yZVBvaW50KV0gOiBuaWw7CisgICAgfQorCisgICAgaWYg
KFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhCb3VuZHNGb3JUZXh0TWFya2VyUmFuZ2Ui
XSkgeworICAgICAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSB2aXNpYmxlUG9zUmFuZ2UgPSBbc2Vs
ZiB2aXNpYmxlUG9zaXRpb25SYW5nZUZvclRleHRNYXJrZXJSYW5nZTp0ZXh0TWFya2VyUmFuZ2Vd
OworICAgICAgICBOU1JlY3QgcmVjdCA9IG1fb2JqZWN0LT5ib3VuZHNGb3JWaXNpYmxlUG9zaXRp
b25SYW5nZSh2aXNpYmxlUG9zUmFuZ2UpOworICAgICAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVX
aXRoUmVjdDpyZWN0XTsKKyAgICB9CisgICAgCisgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRv
U3RyaW5nOk5TQWNjZXNzaWJpbGl0eUJvdW5kc0ZvclJhbmdlUGFyYW1ldGVyaXplZEF0dHJpYnV0
ZV0pIHsKKyAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHN0YXJ0ID0gbV9vYmplY3QtPnZpc2libGVQ
b3NpdGlvbkZvckluZGV4KHJhbmdlLmxvY2F0aW9uKTsKKyAgICAgICAgVmlzaWJsZVBvc2l0aW9u
IGVuZCA9IG1fb2JqZWN0LT52aXNpYmxlUG9zaXRpb25Gb3JJbmRleChyYW5nZS5sb2NhdGlvbity
YW5nZS5sZW5ndGgpOworICAgICAgICBpZiAoc3RhcnQuaXNOdWxsKCkgfHwgZW5kLmlzTnVsbCgp
KQorICAgICAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAgICAgTlNSZWN0IHJlY3QgPSBtX29iamVj
dC0+Ym91bmRzRm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UoVmlzaWJsZVBvc2l0aW9uUmFuZ2Uoc3Rh
cnQsIGVuZCkpOworICAgICAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRoUmVjdDpyZWN0XTsK
KyAgICB9CisgICAgCisgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNz
aWJpbGl0eVN0cmluZ0ZvclJhbmdlUGFyYW1ldGVyaXplZEF0dHJpYnV0ZV0pIHsKKyAgICAgICAg
VmlzaWJsZVBvc2l0aW9uIHN0YXJ0ID0gbV9vYmplY3QtPnZpc2libGVQb3NpdGlvbkZvckluZGV4
KHJhbmdlLmxvY2F0aW9uKTsKKyAgICAgICAgVmlzaWJsZVBvc2l0aW9uIGVuZCA9IG1fb2JqZWN0
LT52aXNpYmxlUG9zaXRpb25Gb3JJbmRleChyYW5nZS5sb2NhdGlvbityYW5nZS5sZW5ndGgpOwor
ICAgICAgICBpZiAoc3RhcnQuaXNOdWxsKCkgfHwgZW5kLmlzTnVsbCgpKQorICAgICAgICAgICAg
cmV0dXJuIG5pbDsKKyAgICAgICAgcmV0dXJuIG1fb2JqZWN0LT5zdHJpbmdGb3JWaXNpYmxlUG9z
aXRpb25SYW5nZShWaXNpYmxlUG9zaXRpb25SYW5nZShzdGFydCwgZW5kKSk7CisgICAgfQorCisg
ICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhBdHRyaWJ1dGVkU3RyaW5nRm9y
VGV4dE1hcmtlclJhbmdlIl0pCisgICAgICAgIHJldHVybiBbc2VsZiBkb0FYQXR0cmlidXRlZFN0
cmluZ0ZvclRleHRNYXJrZXJSYW5nZTp0ZXh0TWFya2VyUmFuZ2VdOworCisgICAgaWYgKFthdHRy
aWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhUZXh0TWFya2VyUmFuZ2VGb3JVbm9yZGVyZWRUZXh0
TWFya2VycyJdKSB7CisgICAgICAgIGlmIChbYXJyYXkgY291bnRdIDwgMikKKyAgICAgICAgICAg
IHJldHVybiBuaWw7CisKKyAgICAgICAgaWQgdGV4dE1hcmtlcjEgPSBbYXJyYXkgb2JqZWN0QXRJ
bmRleDowXTsKKyAgICAgICAgaWQgdGV4dE1hcmtlcjIgPSBbYXJyYXkgb2JqZWN0QXRJbmRleDox
XTsKKyAgICAgICAgaWYgKCFBWE9iamVjdElzVGV4dE1hcmtlcih0ZXh0TWFya2VyMSkgfHwgIUFY
T2JqZWN0SXNUZXh0TWFya2VyKHRleHRNYXJrZXIyKSkKKyAgICAgICAgICAgIHJldHVybiBuaWw7
CisKKyAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3MxID0gW3NlbGYgdmlzaWJsZVBv
c2l0aW9uRm9yVGV4dE1hcmtlcjoodGV4dE1hcmtlcjEpXTsKKyAgICAgICAgVmlzaWJsZVBvc2l0
aW9uIHZpc2libGVQb3MyID0gW3NlbGYgdmlzaWJsZVBvc2l0aW9uRm9yVGV4dE1hcmtlcjoodGV4
dE1hcmtlcjIpXTsKKyAgICAgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgdnBSYW5nZSA9IG1fb2Jq
ZWN0LT52aXNpYmxlUG9zaXRpb25SYW5nZUZvclVub3JkZXJlZFBvc2l0aW9ucyh2aXNpYmxlUG9z
MSwgdmlzaWJsZVBvczIpOworICAgICAgICByZXR1cm4gW3NlbGYgdGV4dE1hcmtlclJhbmdlRnJv
bVZpc2libGVQb3NpdGlvbnM6dnBSYW5nZS5zdGFydCBlbmRQb3NpdGlvbjp2cFJhbmdlLmVuZF07
CisgICAgfQorCisgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhOZXh0VGV4
dE1hcmtlckZvclRleHRNYXJrZXIiXSkgeworICAgICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJs
ZVBvcyA9IFtzZWxmIHZpc2libGVQb3NpdGlvbkZvclRleHRNYXJrZXI6KHRleHRNYXJrZXIpXTsK
KyAgICAgICAgcmV0dXJuIFtzZWxmIHRleHRNYXJrZXJGb3JWaXNpYmxlUG9zaXRpb246bV9vYmpl
Y3QtPm5leHRWaXNpYmxlUG9zaXRpb24odmlzaWJsZVBvcyldOworICAgIH0KKworICAgIGlmIChb
YXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYUHJldmlvdXNUZXh0TWFya2VyRm9yVGV4dE1h
cmtlciJdKSB7CisgICAgICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zID0gW3NlbGYgdmlz
aWJsZVBvc2l0aW9uRm9yVGV4dE1hcmtlcjoodGV4dE1hcmtlcildOworICAgICAgICByZXR1cm4g
W3NlbGYgdGV4dE1hcmtlckZvclZpc2libGVQb3NpdGlvbjptX29iamVjdC0+cHJldmlvdXNWaXNp
YmxlUG9zaXRpb24odmlzaWJsZVBvcyldOworICAgIH0KKworICAgIGlmIChbYXR0cmlidXRlIGlz
RXF1YWxUb1N0cmluZzpAIkFYTGVmdFdvcmRUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyIl0p
IHsKKyAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3MgPSBbc2VsZiB2aXNpYmxlUG9z
aXRpb25Gb3JUZXh0TWFya2VyOih0ZXh0TWFya2VyKV07CisgICAgICAgIFZpc2libGVQb3NpdGlv
blJhbmdlIHZwUmFuZ2UgPSBtX29iamVjdC0+cG9zaXRpb25PZkxlZnRXb3JkKHZpc2libGVQb3Mp
OworICAgICAgICByZXR1cm4gW3NlbGYgdGV4dE1hcmtlclJhbmdlRnJvbVZpc2libGVQb3NpdGlv
bnM6dnBSYW5nZS5zdGFydCBlbmRQb3NpdGlvbjp2cFJhbmdlLmVuZF07CisgICAgfQorCisgICAg
aWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhSaWdodFdvcmRUZXh0TWFya2VyUmFu
Z2VGb3JUZXh0TWFya2VyIl0pIHsKKyAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3Mg
PSBbc2VsZiB2aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyOih0ZXh0TWFya2VyKV07CisgICAg
ICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHZwUmFuZ2UgPSBtX29iamVjdC0+cG9zaXRpb25PZlJp
Z2h0V29yZCh2aXNpYmxlUG9zKTsKKyAgICAgICAgcmV0dXJuIFtzZWxmIHRleHRNYXJrZXJSYW5n
ZUZyb21WaXNpYmxlUG9zaXRpb25zOnZwUmFuZ2Uuc3RhcnQgZW5kUG9zaXRpb246dnBSYW5nZS5l
bmRdOworICAgIH0KKworICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYTGVm
dExpbmVUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyIl0pIHsKKyAgICAgICAgVmlzaWJsZVBv
c2l0aW9uIHZpc2libGVQb3MgPSBbc2VsZiB2aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyOih0
ZXh0TWFya2VyKV07CisgICAgICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHZwUmFuZ2UgPSBtX29i
amVjdC0+bGVmdExpbmVWaXNpYmxlUG9zaXRpb25SYW5nZSh2aXNpYmxlUG9zKTsKKyAgICAgICAg
cmV0dXJuIFtzZWxmIHRleHRNYXJrZXJSYW5nZUZyb21WaXNpYmxlUG9zaXRpb25zOnZwUmFuZ2Uu
c3RhcnQgZW5kUG9zaXRpb246dnBSYW5nZS5lbmRdOworICAgIH0KKworICAgIGlmIChbYXR0cmli
dXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYUmlnaHRMaW5lVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1h
cmtlciJdKSB7CisgICAgICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zID0gW3NlbGYgdmlz
aWJsZVBvc2l0aW9uRm9yVGV4dE1hcmtlcjoodGV4dE1hcmtlcildOworICAgICAgICBWaXNpYmxl
UG9zaXRpb25SYW5nZSB2cFJhbmdlID0gbV9vYmplY3QtPnJpZ2h0TGluZVZpc2libGVQb3NpdGlv
blJhbmdlKHZpc2libGVQb3MpOworICAgICAgICByZXR1cm4gW3NlbGYgdGV4dE1hcmtlclJhbmdl
RnJvbVZpc2libGVQb3NpdGlvbnM6dnBSYW5nZS5zdGFydCBlbmRQb3NpdGlvbjp2cFJhbmdlLmVu
ZF07CisgICAgfQorCisgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhTZW50
ZW5jZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIiXSkgeworICAgICAgICBWaXNpYmxlUG9z
aXRpb24gdmlzaWJsZVBvcyA9IFtzZWxmIHZpc2libGVQb3NpdGlvbkZvclRleHRNYXJrZXI6KHRl
eHRNYXJrZXIpXTsKKyAgICAgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgdnBSYW5nZSA9IG1fb2Jq
ZWN0LT5zZW50ZW5jZUZvclBvc2l0aW9uKHZpc2libGVQb3MpOworICAgICAgICByZXR1cm4gW3Nl
bGYgdGV4dE1hcmtlclJhbmdlRnJvbVZpc2libGVQb3NpdGlvbnM6dnBSYW5nZS5zdGFydCBlbmRQ
b3NpdGlvbjp2cFJhbmdlLmVuZF07CisgICAgfQorCisgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVh
bFRvU3RyaW5nOkAiQVhQYXJhZ3JhcGhUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyIl0pIHsK
KyAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3MgPSBbc2VsZiB2aXNpYmxlUG9zaXRp
b25Gb3JUZXh0TWFya2VyOih0ZXh0TWFya2VyKV07CisgICAgICAgIFZpc2libGVQb3NpdGlvblJh
bmdlIHZwUmFuZ2UgPSBtX29iamVjdC0+cGFyYWdyYXBoRm9yUG9zaXRpb24odmlzaWJsZVBvcyk7
CisgICAgICAgIHJldHVybiBbc2VsZiB0ZXh0TWFya2VyUmFuZ2VGcm9tVmlzaWJsZVBvc2l0aW9u
czp2cFJhbmdlLnN0YXJ0IGVuZFBvc2l0aW9uOnZwUmFuZ2UuZW5kXTsKKyAgICB9CisKKyAgICBp
ZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWE5leHRXb3JkRW5kVGV4dE1hcmtlckZv
clRleHRNYXJrZXIiXSkgeworICAgICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvcyA9IFtz
ZWxmIHZpc2libGVQb3NpdGlvbkZvclRleHRNYXJrZXI6KHRleHRNYXJrZXIpXTsKKyAgICAgICAg
cmV0dXJuIFtzZWxmIHRleHRNYXJrZXJGb3JWaXNpYmxlUG9zaXRpb246bV9vYmplY3QtPm5leHRX
b3JkRW5kKHZpc2libGVQb3MpXTsKKyAgICB9CisgICAgCisgICAgaWYgKFthdHRyaWJ1dGUgaXNF
cXVhbFRvU3RyaW5nOkAiQVhQcmV2aW91c1dvcmRTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2Vy
Il0pIHsKKyAgICAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3MgPSBbc2VsZiB2aXNpYmxl
UG9zaXRpb25Gb3JUZXh0TWFya2VyOih0ZXh0TWFya2VyKV07CisgICAgICAgIHJldHVybiBbc2Vs
ZiB0ZXh0TWFya2VyRm9yVmlzaWJsZVBvc2l0aW9uOm1fb2JqZWN0LT5wcmV2aW91c1dvcmRTdGFy
dCh2aXNpYmxlUG9zKV07CisgICAgfQorCisgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3Ry
aW5nOkAiQVhOZXh0TGluZUVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIl0pIHsKKyAgICAgICAg
VmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3MgPSBbc2VsZiB2aXNpYmxlUG9zaXRpb25Gb3JUZXh0
TWFya2VyOih0ZXh0TWFya2VyKV07CisgICAgICAgIHJldHVybiBbc2VsZiB0ZXh0TWFya2VyRm9y
VmlzaWJsZVBvc2l0aW9uOm1fb2JqZWN0LT5uZXh0TGluZUVuZFBvc2l0aW9uKHZpc2libGVQb3Mp
XTsKKyAgICB9CisKKyAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWFByZXZp
b3VzTGluZVN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIiXSkgeworICAgICAgICBWaXNpYmxl
UG9zaXRpb24gdmlzaWJsZVBvcyA9IFtzZWxmIHZpc2libGVQb3NpdGlvbkZvclRleHRNYXJrZXI6
KHRleHRNYXJrZXIpXTsKKyAgICAgICAgcmV0dXJuIFtzZWxmIHRleHRNYXJrZXJGb3JWaXNpYmxl
UG9zaXRpb246bV9vYmplY3QtPnByZXZpb3VzTGluZVN0YXJ0UG9zaXRpb24odmlzaWJsZVBvcyld
OworICAgIH0KKworICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYTmV4dFNl
bnRlbmNlRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXIiXSkgeworICAgICAgICBWaXNpYmxlUG9z
aXRpb24gdmlzaWJsZVBvcyA9IFtzZWxmIHZpc2libGVQb3NpdGlvbkZvclRleHRNYXJrZXI6KHRl
eHRNYXJrZXIpXTsKKyAgICAgICAgcmV0dXJuIFtzZWxmIHRleHRNYXJrZXJGb3JWaXNpYmxlUG9z
aXRpb246bV9vYmplY3QtPm5leHRTZW50ZW5jZUVuZFBvc2l0aW9uKHZpc2libGVQb3MpXTsKKyAg
ICB9CisKKyAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWFByZXZpb3VzU2Vu
dGVuY2VTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyIl0pIHsKKyAgICAgICAgVmlzaWJsZVBv
c2l0aW9uIHZpc2libGVQb3MgPSBbc2VsZiB2aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyOih0
ZXh0TWFya2VyKV07CisgICAgICAgIHJldHVybiBbc2VsZiB0ZXh0TWFya2VyRm9yVmlzaWJsZVBv
c2l0aW9uOm1fb2JqZWN0LT5wcmV2aW91c1NlbnRlbmNlU3RhcnRQb3NpdGlvbih2aXNpYmxlUG9z
KV07CisgICAgfQorCisgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhOZXh0
UGFyYWdyYXBoRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXIiXSkgeworICAgICAgICBWaXNpYmxl
UG9zaXRpb24gdmlzaWJsZVBvcyA9IFtzZWxmIHZpc2libGVQb3NpdGlvbkZvclRleHRNYXJrZXI6
KHRleHRNYXJrZXIpXTsKKyAgICAgICAgcmV0dXJuIFtzZWxmIHRleHRNYXJrZXJGb3JWaXNpYmxl
UG9zaXRpb246bV9vYmplY3QtPm5leHRQYXJhZ3JhcGhFbmRQb3NpdGlvbih2aXNpYmxlUG9zKV07
CisgICAgfQorCisgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhQcmV2aW91
c1BhcmFncmFwaFN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXIiXSkgeworICAgICAgICBWaXNp
YmxlUG9zaXRpb24gdmlzaWJsZVBvcyA9IFtzZWxmIHZpc2libGVQb3NpdGlvbkZvclRleHRNYXJr
ZXI6KHRleHRNYXJrZXIpXTsKKyAgICAgICAgcmV0dXJuIFtzZWxmIHRleHRNYXJrZXJGb3JWaXNp
YmxlUG9zaXRpb246bV9vYmplY3QtPnByZXZpb3VzUGFyYWdyYXBoU3RhcnRQb3NpdGlvbih2aXNp
YmxlUG9zKV07CisgICAgfQorCisgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAi
QVhTdHlsZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIiXSkgeworICAgICAgICBWaXNpYmxl
UG9zaXRpb24gdmlzaWJsZVBvcyA9IFtzZWxmIHZpc2libGVQb3NpdGlvbkZvclRleHRNYXJrZXI6
KHRleHRNYXJrZXIpXTsKKyAgICAgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgdnBSYW5nZSA9IG1f
b2JqZWN0LT5zdHlsZVJhbmdlRm9yUG9zaXRpb24odmlzaWJsZVBvcyk7CisgICAgICAgIHJldHVy
biBbc2VsZiB0ZXh0TWFya2VyUmFuZ2VGcm9tVmlzaWJsZVBvc2l0aW9uczp2cFJhbmdlLnN0YXJ0
IGVuZFBvc2l0aW9uOnZwUmFuZ2UuZW5kXTsKKyAgICB9CisKKyAgICBpZiAoW2F0dHJpYnV0ZSBp
c0VxdWFsVG9TdHJpbmc6QCJBWExlbmd0aEZvclRleHRNYXJrZXJSYW5nZSJdKSB7CisgICAgICAg
IFZpc2libGVQb3NpdGlvblJhbmdlIHZpc2libGVQb3NSYW5nZSA9IFtzZWxmIHZpc2libGVQb3Np
dGlvblJhbmdlRm9yVGV4dE1hcmtlclJhbmdlOnRleHRNYXJrZXJSYW5nZV07CisgICAgICAgIGlu
dCBsZW5ndGggPSBtX29iamVjdC0+bGVuZ3RoRm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UodmlzaWJs
ZVBvc1JhbmdlKTsKKyAgICAgICAgaWYgKGxlbmd0aCA8IDApCisgICAgICAgICAgICByZXR1cm4g
bmlsOworICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6bGVuZ3RoXTsKKyAg
ICB9CisKKyAgICAvLyBVc2VkIG9ubHkgYnkgRHVtcFJlbmRlclRyZWUgKHNvIGZhcikuCisgICAg
aWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhTdGFydFRleHRNYXJrZXJGb3JUZXh0
TWFya2VyUmFuZ2UiXSkgeworICAgICAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSB2aXNpYmxlUG9z
UmFuZ2UgPSBbc2VsZiB2aXNpYmxlUG9zaXRpb25SYW5nZUZvclRleHRNYXJrZXJSYW5nZTp0ZXh0
TWFya2VyUmFuZ2VdOworICAgICAgICByZXR1cm4gW3NlbGYgdGV4dE1hcmtlckZvclZpc2libGVQ
b3NpdGlvbjp2aXNpYmxlUG9zUmFuZ2Uuc3RhcnRdOworICAgIH0KKworICAgIGlmIChbYXR0cmli
dXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSJd
KSB7CisgICAgICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHZpc2libGVQb3NSYW5nZSA9IFtzZWxm
IHZpc2libGVQb3NpdGlvblJhbmdlRm9yVGV4dE1hcmtlclJhbmdlOnRleHRNYXJrZXJSYW5nZV07
CisgICAgICAgIHJldHVybiBbc2VsZiB0ZXh0TWFya2VyRm9yVmlzaWJsZVBvc2l0aW9uOnZpc2li
bGVQb3NSYW5nZS5lbmRdOworICAgIH0KKyAgICAKKyAgICBpZiAobV9vYmplY3QtPmlzQWNjZXNz
aWJpbGl0eVRhYmxlKCkpIHsKKyAgICAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5n
Ok5TQWNjZXNzaWJpbGl0eUNlbGxGb3JDb2x1bW5BbmRSb3dQYXJhbWV0ZXJpemVkQXR0cmlidXRl
XSkgeworICAgICAgICAgICAgaWYgKGFycmF5ID09IG5pbCB8fCBbYXJyYXkgY291bnRdICE9IDIp
CisgICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlU
YWJsZUNlbGwqIGNlbGwgPSBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5VGFibGUqPihtX29iamVj
dCktPmNlbGxGb3JDb2x1bW5BbmRSb3coW1thcnJheSBvYmplY3RBdEluZGV4OjBdIHVuc2lnbmVk
SW50VmFsdWVdLCBbW2FycmF5IG9iamVjdEF0SW5kZXg6MV0gdW5zaWduZWRJbnRWYWx1ZV0pOwor
ICAgICAgICAgICAgaWYgKCFjZWxsKQorICAgICAgICAgICAgICAgIHJldHVybiBuaWw7CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIHJldHVybiBjZWxsLT53cmFwcGVyKCk7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBpZiAobV9vYmplY3QtPmlzVGV4dENvbnRyb2woKSkgeworICAgICAgICBp
ZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6IChOU1N0cmluZyAqKWtBWExpbmVGb3JJbmRl
eFBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVdKSB7CisgICAgICAgICAgICBpbnQgbGluZU51bWJlciA9
IG1fb2JqZWN0LT5kb0FYTGluZUZvckluZGV4KFtudW1iZXIgaW50VmFsdWVdKTsKKyAgICAgICAg
ICAgIGlmIChsaW5lTnVtYmVyIDwgMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gbmlsOworICAg
ICAgICAgICAgcmV0dXJuIFtOU051bWJlciBudW1iZXJXaXRoVW5zaWduZWRJbnQ6bGluZU51bWJl
cl07CisgICAgICAgIH0KKworICAgICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6
IChOU1N0cmluZyAqKWtBWFJhbmdlRm9yTGluZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVdKSB7Cisg
ICAgICAgICAgICBQbGFpblRleHRSYW5nZSB0ZXh0UmFuZ2UgPSBtX29iamVjdC0+ZG9BWFJhbmdl
Rm9yTGluZShbbnVtYmVyIGludFZhbHVlXSk7CisgICAgICAgICAgICByZXR1cm4gW05TVmFsdWUg
dmFsdWVXaXRoUmFuZ2U6IE5TTWFrZVJhbmdlKHRleHRSYW5nZS5zdGFydCwgdGV4dFJhbmdlLmxl
bmd0aCldOworICAgICAgICB9CisKKyAgICAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3Ry
aW5nOiAoTlNTdHJpbmcqKWtBWFN0cmluZ0ZvclJhbmdlUGFyYW1ldGVyaXplZEF0dHJpYnV0ZV0p
IHsKKyAgICAgICAgICAgIFBsYWluVGV4dFJhbmdlIHBsYWluVGV4dFJhbmdlID0gUGxhaW5UZXh0
UmFuZ2UocmFuZ2UubG9jYXRpb24sIHJhbmdlLmxlbmd0aCk7CisgICAgICAgICAgICByZXR1cm4g
cmFuZ2VTZXQgPyAoaWQpKG1fb2JqZWN0LT5kb0FYU3RyaW5nRm9yUmFuZ2UocGxhaW5UZXh0UmFu
Z2UpKSA6IG5pbDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxU
b1N0cmluZzogKE5TU3RyaW5nKilrQVhSYW5nZUZvclBvc2l0aW9uUGFyYW1ldGVyaXplZEF0dHJp
YnV0ZV0pIHsKKyAgICAgICAgICAgIGlmICghcG9pbnRTZXQpCisgICAgICAgICAgICAgICAgcmV0
dXJuIG5pbDsKKyAgICAgICAgICAgIEludFBvaW50IHdlYkNvcmVQb2ludCA9IEludFBvaW50KHBv
aW50KTsKKyAgICAgICAgICAgIFBsYWluVGV4dFJhbmdlIHRleHRSYW5nZSA9IG1fb2JqZWN0LT5k
b0FYUmFuZ2VGb3JQb3NpdGlvbih3ZWJDb3JlUG9pbnQpOworICAgICAgICAgICAgcmV0dXJuIFtO
U1ZhbHVlIHZhbHVlV2l0aFJhbmdlOiBOU01ha2VSYW5nZSh0ZXh0UmFuZ2Uuc3RhcnQsIHRleHRS
YW5nZS5sZW5ndGgpXTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChbYXR0cmlidXRlIGlzRXF1
YWxUb1N0cmluZzogKE5TU3RyaW5nKilrQVhSYW5nZUZvckluZGV4UGFyYW1ldGVyaXplZEF0dHJp
YnV0ZV0pIHsKKyAgICAgICAgICAgIFBsYWluVGV4dFJhbmdlIHRleHRSYW5nZSA9IG1fb2JqZWN0
LT5kb0FYUmFuZ2VGb3JJbmRleChbbnVtYmVyIGludFZhbHVlXSk7CisgICAgICAgICAgICByZXR1
cm4gW05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6IE5TTWFrZVJhbmdlKHRleHRSYW5nZS5zdGFydCwg
dGV4dFJhbmdlLmxlbmd0aCldOworICAgICAgICB9CisKKyAgICAgICAgaWYgKFthdHRyaWJ1dGUg
aXNFcXVhbFRvU3RyaW5nOiAoTlNTdHJpbmcqKWtBWEJvdW5kc0ZvclJhbmdlUGFyYW1ldGVyaXpl
ZEF0dHJpYnV0ZV0pIHsKKyAgICAgICAgICAgIGlmICghcmFuZ2VTZXQpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIG5pbDsKKyAgICAgICAgICAgIFBsYWluVGV4dFJhbmdlIHBsYWluVGV4dFJhbmdl
ID0gUGxhaW5UZXh0UmFuZ2UocmFuZ2UubG9jYXRpb24sIHJhbmdlLmxlbmd0aCk7CisgICAgICAg
ICAgICBOU1JlY3QgcmVjdCA9IG1fb2JqZWN0LT5kb0FYQm91bmRzRm9yUmFuZ2UocGxhaW5UZXh0
UmFuZ2UpOworICAgICAgICAgICAgcmV0dXJuIFtOU1ZhbHVlIHZhbHVlV2l0aFJlY3Q6cmVjdF07
CisgICAgICAgIH0KKworICAgICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6IChO
U1N0cmluZyopa0FYUlRGRm9yUmFuZ2VQYXJhbWV0ZXJpemVkQXR0cmlidXRlXSkKKyAgICAgICAg
ICAgIHJldHVybiByYW5nZVNldCA/IFtzZWxmIGRvQVhSVEZGb3JSYW5nZTpyYW5nZV0gOiBuaWw7
CisKKyAgICAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOiAoTlNTdHJpbmcqKWtB
WEF0dHJpYnV0ZWRTdHJpbmdGb3JSYW5nZVBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVdKQorICAgICAg
ICAgICAgcmV0dXJuIHJhbmdlU2V0ID8gW3NlbGYgZG9BWEF0dHJpYnV0ZWRTdHJpbmdGb3JSYW5n
ZTpyYW5nZV0gOiBuaWw7CisKKyAgICAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5n
OiAoTlNTdHJpbmcqKWtBWFN0eWxlUmFuZ2VGb3JJbmRleFBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVd
KSB7CisgICAgICAgICAgICBQbGFpblRleHRSYW5nZSB0ZXh0UmFuZ2UgPSBtX29iamVjdC0+ZG9B
WFN0eWxlUmFuZ2VGb3JJbmRleChbbnVtYmVyIGludFZhbHVlXSk7CisgICAgICAgICAgICByZXR1
cm4gW05TVmFsdWUgdmFsdWVXaXRoUmFuZ2U6IE5TTWFrZVJhbmdlKHRleHRSYW5nZS5zdGFydCwg
dGV4dFJhbmdlLmxlbmd0aCldOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gVGhlcmUgYXJl
IHNvbWUgcGFyYW1ldGVycyB0aGF0IHN1cGVyIGhhbmRsZXMgdGhhdCBhcmUgbm90IGV4cGxpY2l0
bHkgcmV0dXJuZWQgYnkgdGhlIGxpc3Qgb2YgdGhlIGVsZW1lbnQncyBhdHRyaWJ1dGVzLgorICAg
IC8vIEluIHRoYXQgY2FzZSBpdCBtdXN0IGJlIHBhc3NlZCB0byBzdXBlci4gCisgICAgcmV0dXJu
IFtzdXBlciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6YXR0cmlidXRlIGZvclBhcmFtZXRl
cjpwYXJhbWV0ZXJdOworfQorCistIChCT09MKWFjY2Vzc2liaWxpdHlTdXBwb3J0c092ZXJyaWRk
ZW5BdHRyaWJ1dGVzCit7CisgICAgcmV0dXJuIFlFUzsKK30KKworLSAoQk9PTClhY2Nlc3NpYmls
aXR5U2hvdWxkVXNlVW5pcXVlSWQKK3sKKyAgICAvLyBBbGwgQVggb2JqZWN0IHdyYXBwZXJzIHNo
b3VsZCB1c2UgdW5pcXVlIElEJ3MgYmVjYXVzZSBpdCdzIGZhc3RlciB3aXRoaW4gQXBwS2l0IHRv
IGxvb2sgdGhlbSB1cC4KKyAgICByZXR1cm4gWUVTOworfQorCisvLyBBUEkgdGhhdCBBcHBLaXQg
dXNlcyBmb3IgZmFzdGVyIGFjY2VzcworLSAoTlNVSW50ZWdlcilhY2Nlc3NpYmlsaXR5SW5kZXhP
ZkNoaWxkOihpZCljaGlsZAoreworICAgIGlmICghW3NlbGYgdXBkYXRlT2JqZWN0QmFja2luZ1N0
b3JlXSkKKyAgICAgICAgcmV0dXJuIE5TTm90Rm91bmQ7CisgICAgCisgICAgLy8gVHJlZSBvYmpl
Y3RzIHJldHVybiB0aGVpciByb3dzIGFzIHRoZWlyIGNoaWxkcmVuLiBXZSBjYW4gdXNlIHRoZSBv
cmlnaW5hbCBtZXRob2QKKyAgICAvLyBoZXJlLCBiZWNhdXNlIHdlIHdvbid0IGdhaW4gYW55IHNw
ZWVkIHVwLgorICAgIGlmIChtX29iamVjdC0+aXNUcmVlKCkpCisgICAgICAgIHJldHVybiBbc3Vw
ZXIgYWNjZXNzaWJpbGl0eUluZGV4T2ZDaGlsZDpjaGlsZF07CisgICAgICAgCisgICAgY29uc3Qg
QWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBjaGlsZHJl
biA9IG1fb2JqZWN0LT5jaGlsZHJlbigpOworICAgICAgIAorICAgIGlmIChjaGlsZHJlbi5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiBbW3NlbGYgcmVuZGVyV2lkZ2V0Q2hpbGRyZW5dIGluZGV4
T2ZPYmplY3Q6Y2hpbGRdOworICAgIAorICAgIHVuc2lnbmVkIGNvdW50ID0gY2hpbGRyZW4uc2l6
ZSgpOworICAgIGZvciAodW5zaWduZWQgayA9IDA7IGsgPCBjb3VudDsgKytrKSB7CisgICAgICAg
IEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKiB3cmFwcGVyID0gY2hpbGRyZW5ba10tPndyYXBw
ZXIoKTsKKyAgICAgICAgaWYgKHdyYXBwZXIgPT0gY2hpbGQgfHwgKGNoaWxkcmVuW2tdLT5pc0F0
dGFjaG1lbnQoKSAmJiBbd3JhcHBlciBhdHRhY2htZW50Vmlld10gPT0gY2hpbGQpKSAKKyAgICAg
ICAgICAgIHJldHVybiBrOworICAgIH0KKworICAgIHJldHVybiBOU05vdEZvdW5kOworfQorCist
IChOU1VJbnRlZ2VyKWFjY2Vzc2liaWxpdHlBcnJheUF0dHJpYnV0ZUNvdW50OihOU1N0cmluZyAq
KWF0dHJpYnV0ZQoreworICAgIGlmICghW3NlbGYgdXBkYXRlT2JqZWN0QmFja2luZ1N0b3JlXSkK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3Ry
aW5nOk5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlXSkgeworICAgICAgICAvLyBUcmVl
IGl0ZW1zIG9iamVjdCByZXR1cm5zIGEgZGlmZmVyZW50IHNldCBvZiBjaGlsZHJlbiB0aGFuIHRo
b3NlIHRoYXQgYXJlIGluIGNoaWxkcmVuKCkKKyAgICAgICAgLy8gYmVjYXVzZSBhbiBBWE91dGxp
bmUgKHRoZSBtYWMgcm9sZSBpcyBiZWNvbWVzKSBoYXMgc29tZSBvZGQgc3RpcHVsYXRpb25zLgor
ICAgICAgICBpZiAobV9vYmplY3QtPmlzVHJlZSgpIHx8IG1fb2JqZWN0LT5pc1RyZWVJdGVtKCkp
CisgICAgICAgICAgICByZXR1cm4gW1tzZWxmIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpO
U0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZV0gY291bnRdOworICAgICAgICAKKyAgICAg
ICAgY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
JiBjaGlsZHJlbiA9IG1fb2JqZWN0LT5jaGlsZHJlbigpOworICAgICAgICBpZiAoY2hpbGRyZW4u
aXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIFtbc2VsZiByZW5kZXJXaWRnZXRDaGlsZHJl
bl0gY291bnRdOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIGNoaWxkcmVuLnNpemUoKTsKKyAg
ICB9CisgICAgCisgICAgcmV0dXJuIFtzdXBlciBhY2Nlc3NpYmlsaXR5QXJyYXlBdHRyaWJ1dGVD
b3VudDphdHRyaWJ1dGVdOworfQorCistIChOU0FycmF5ICopYWNjZXNzaWJpbGl0eUFycmF5QXR0
cmlidXRlVmFsdWVzOihOU1N0cmluZyAqKWF0dHJpYnV0ZSBpbmRleDooTlNVSW50ZWdlcilpbmRl
eCBtYXhDb3VudDooTlNVSW50ZWdlciltYXhDb3VudCAKK3sKKyAgICBpZiAoIVtzZWxmIHVwZGF0
ZU9iamVjdEJhY2tpbmdTdG9yZV0pCisgICAgICAgIHJldHVybiBuaWw7CisgICAgCisgICAgaWYg
KFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmli
dXRlXSkgeworICAgICAgICBpZiAobV9vYmplY3QtPmNoaWxkcmVuKCkuaXNFbXB0eSgpKSB7Cisg
ICAgICAgICAgICBOU0FycmF5ICpjaGlsZHJlbiA9IFtzZWxmIHJlbmRlcldpZGdldENoaWxkcmVu
XTsKKyAgICAgICAgICAgIGlmICghY2hpbGRyZW4pIAorICAgICAgICAgICAgICAgIHJldHVybiBu
aWw7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIE5TVUludGVnZXIgY2hpbGRDb3VudCA9IFtj
aGlsZHJlbiBjb3VudF07CisgICAgICAgICAgICBpZiAoaW5kZXggPj0gY2hpbGRDb3VudCkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gbmlsOworICAgICAgICAgICAgCisgICAgICAgICAgICBOU1VJ
bnRlZ2VyIGFycmF5TGVuZ3RoID0gbWluKGNoaWxkQ291bnQgLSBpbmRleCwgbWF4Q291bnQpOwor
ICAgICAgICAgICAgcmV0dXJuIFtjaGlsZHJlbiBzdWJhcnJheVdpdGhSYW5nZTpOU01ha2VSYW5n
ZShpbmRleCwgYXJyYXlMZW5ndGgpXTsKKyAgICAgICAgfSBlbHNlIGlmIChtX29iamVjdC0+aXNU
cmVlKCkpIHsKKyAgICAgICAgICAgIC8vIFRyZWUgb2JqZWN0cyByZXR1cm4gdGhlaXIgcm93cyBh
cyB0aGVpciBjaGlsZHJlbi4gV2UgY2FuIHVzZSB0aGUgb3JpZ2luYWwgbWV0aG9kIGluIHRoaXMg
Y2FzZS4KKyAgICAgICAgICAgIHJldHVybiBbc3VwZXIgYWNjZXNzaWJpbGl0eUFycmF5QXR0cmli
dXRlVmFsdWVzOmF0dHJpYnV0ZSBpbmRleDppbmRleCBtYXhDb3VudDptYXhDb3VudF07CisgICAg
ICAgIH0KKyAgICAgICAgCisgICAgICAgIGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vz
c2liaWxpdHlDaGlsZHJlblZlY3RvciYgY2hpbGRyZW4gPSBtX29iamVjdC0+Y2hpbGRyZW4oKTsK
KyAgICAgICAgdW5zaWduZWQgY2hpbGRDb3VudCA9IGNoaWxkcmVuLnNpemUoKTsKKyAgICAgICAg
aWYgKGluZGV4ID49IGNoaWxkQ291bnQpCisgICAgICAgICAgICByZXR1cm4gbmlsOworICAgICAg
ICAKKyAgICAgICAgdW5zaWduZWQgYXZhaWxhYmxlID0gbWluKGNoaWxkQ291bnQgLSBpbmRleCwg
bWF4Q291bnQpOworICAgICAgICAKKyAgICAgICAgTlNNdXRhYmxlQXJyYXkgKnN1YmFycmF5ID0g
W05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OmF2YWlsYWJsZV07CisgICAgICAgIGZv
ciAodW5zaWduZWQgYWRkZWQgPSAwOyBhZGRlZCA8IGF2YWlsYWJsZTsgKytpbmRleCwgKythZGRl
ZCkgeworICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqIHdyYXBwZXIgPSBj
aGlsZHJlbltpbmRleF0tPndyYXBwZXIoKTsKKyAgICAgICAgICAgIGlmICh3cmFwcGVyKSB7Cisg
ICAgICAgICAgICAgICAgLy8gVGhlIGF0dGFjaG1lbnQgdmlldyBzaG91bGQgYmUgcmV0dXJuZWQs
IG90aGVyd2lzZSBBWCBwYWxpbmRyb21lIGVycm9ycyBvY2N1ci4KKyAgICAgICAgICAgICAgICBp
ZiAoY2hpbGRyZW5baW5kZXhdLT5pc0F0dGFjaG1lbnQoKSAmJiBbd3JhcHBlciBhdHRhY2htZW50
Vmlld10pCisgICAgICAgICAgICAgICAgICAgIFtzdWJhcnJheSBhZGRPYmplY3Q6W3dyYXBwZXIg
YXR0YWNobWVudFZpZXddXTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ICAgIFtzdWJhcnJheSBhZGRPYmplY3Q6d3JhcHBlcl07CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiBzdWJhcnJheTsKKyAgICB9CisgICAgCisgICAg
cmV0dXJuIFtzdXBlciBhY2Nlc3NpYmlsaXR5QXJyYXlBdHRyaWJ1dGVWYWx1ZXM6YXR0cmlidXRl
IGluZGV4OmluZGV4IG1heENvdW50Om1heENvdW50XTsKK30KKworLy8gVGhpcyBpcyBzZXQgYnkg
RFJUIHdoZW4gaXQgd2FudHMgdG8gbGlzdGVuIGZvciBub3RpZmljYXRpb25zLgorc3RhdGljIEJP
T0wgYWNjZXNzaWJpbGl0eVNob3VsZFJlcG9zdE5vdGlmaWNhdGlvbnM7CistICh2b2lkKWFjY2Vz
c2liaWxpdHlTZXRTaG91bGRSZXBvc3ROb3RpZmljYXRpb25zOihCT09MKXJlcG9zdAoreworICAg
IGFjY2Vzc2liaWxpdHlTaG91bGRSZXBvc3ROb3RpZmljYXRpb25zID0gcmVwb3N0OworfQorCist
ICh2b2lkKWFjY2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246KE5TU3RyaW5nICopbm90aWZp
Y2F0aW9uTmFtZQoreworICAgIGlmIChhY2Nlc3NpYmlsaXR5U2hvdWxkUmVwb3N0Tm90aWZpY2F0
aW9ucykgeworICAgICAgICBOU0RpY3Rpb25hcnkqIHVzZXJJbmZvID0gW05TRGljdGlvbmFyeSBk
aWN0aW9uYXJ5V2l0aE9iamVjdHNBbmRLZXlzOm5vdGlmaWNhdGlvbk5hbWUsIEAibm90aWZpY2F0
aW9uTmFtZSIsIG5pbF07CisgICAgICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENl
bnRlcl0gcG9zdE5vdGlmaWNhdGlvbk5hbWU6QCJBWERSVE5vdGlmaWNhdGlvbiIgb2JqZWN0Om5p
bCB1c2VySW5mbzp1c2VySW5mb107CisgICAgfQorfQorCitAZW5kCisKKyNlbmRpZiAvLyBIQVZF
KEFDQ0VTU0lCSUxJVFkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQko
cmV2aXNpb24gOTUzOTQpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcs
NyBAQAogICovCiAKICNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXIuaCIKKyNpbXBvcnQgIldlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLmgi
CiAKICNpZiBIQVZFKEFDQ0VTU0lCSUxJVFkpCiAKQEAgLTMzNCw3ICszMzQsNyBAQCAtIChOU0Fy
cmF5ICopYWNjZXNzaWJpbGl0eUFycmF5QXR0cmlidXRlCiAKIEBlbmQKIAotQGltcGxlbWVudGF0
aW9uIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyCitAaW1wbGVtZW50YXRpb24gV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXIKIAogLSAoaWQpaW5pdFdpdGhBY2Nlc3NpYmlsaXR5T2JqZWN0
OihBY2Nlc3NpYmlsaXR5T2JqZWN0KilheE9iamVjdAogewpAQCAtMTM0Nyw3ICsxMzQ3LDcgQEAg
c3RhdGljIE5TTXV0YWJsZUFycmF5KiBjb252ZXJ0VG9OU0FycmF5KAogICAgIHVuc2lnbmVkIGxl
bmd0aCA9IHZlY3Rvci5zaXplKCk7CiAgICAgTlNNdXRhYmxlQXJyYXkqIGFycmF5ID0gW05TTXV0
YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OiBsZW5ndGhdOwogICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlciogd3JhcHBlciA9IHZlY3RvcltpXS0+d3JhcHBlcigpOworICAgICAgICBXZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlciogd3JhcHBlciA9IHZlY3RvcltpXS0+d3JhcHBlcigpOwogICAg
ICAgICBBU1NFUlQod3JhcHBlcik7CiAgICAgICAgIGlmICh3cmFwcGVyKSB7CiAgICAgICAgICAg
ICAvLyB3ZSB3YW50IHRvIHJldHVybiB0aGUgYXR0YWNobWVudCB2aWV3IGluc3RlYWQgb2YgdGhl
IG9iamVjdCByZXByZXNlbnRpbmcgdGhlIGF0dGFjaG1lbnQuCkBAIC0yNzQ1LDggKzI3NDUsOCBA
QCAtIChpZClhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6KE5TU3RyCiAgICAgZWxzZSBpZiAo
QVhPYmplY3RJc1RleHRNYXJrZXJSYW5nZShwYXJhbWV0ZXIpKQogICAgICAgICB0ZXh0TWFya2Vy
UmFuZ2UgPSBwYXJhbWV0ZXI7CiAKLSAgICBlbHNlIGlmIChbcGFyYW1ldGVyIGlzS2luZE9mQ2xh
c3M6W0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHNlbGZdXSkKLSAgICAgICAgdWlFbGVtZW50
ID0gWyhBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciopcGFyYW1ldGVyIGFjY2Vzc2liaWxpdHlP
YmplY3RdOworICAgIGVsc2UgaWYgKFtwYXJhbWV0ZXIgaXNLaW5kT2ZDbGFzczpbV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXIgc2VsZl1dKQorICAgICAgICB1aUVsZW1lbnQgPSBbKFdlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKilwYXJhbWV0ZXIgYWNjZXNzaWJpbGl0eU9iamVjdF07
CiAKICAgICBlbHNlIGlmIChbcGFyYW1ldGVyIGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIHNlbGZd
XSkKICAgICAgICAgbnVtYmVyID0gcGFyYW1ldGVyOwpAQCAtMjc3Miw4ICsyNzcyLDggQEAgLSAo
aWQpYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOihOU1N0cgogICAgIC8vIGRpc3BhdGNoCiAg
ICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dHNGb3JTZWFyY2hQcmVkaWNhdGVQYXJhbWV0ZXJpemVkQXR0cmlidXRlXSkgewogICAgICAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBheFN0YXJ0T2JqZWN0ID0gMDsKLSAgICAgICAgaWYgKFtbZGlj
dGlvbmFyeSBvYmplY3RGb3JLZXk6QCJBWFN0YXJ0RWxlbWVudCJdIGlzS2luZE9mQ2xhc3M6W0Fj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHNlbGZdXSkKLSAgICAgICAgICAgIGF4U3RhcnRPYmpl
Y3QgPSBbKEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKilbZGljdGlvbmFyeSBvYmplY3RGb3JL
ZXk6QCJBWFN0YXJ0RWxlbWVudCJdIGFjY2Vzc2liaWxpdHlPYmplY3RdOworICAgICAgICBpZiAo
W1tkaWN0aW9uYXJ5IG9iamVjdEZvcktleTpAIkFYU3RhcnRFbGVtZW50Il0gaXNLaW5kT2ZDbGFz
czpbV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgc2VsZl1dKQorICAgICAgICAgICAgYXhT
dGFydE9iamVjdCA9IFsoV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqKVtkaWN0aW9uYXJ5
IG9iamVjdEZvcktleTpAIkFYU3RhcnRFbGVtZW50Il0gYWNjZXNzaWJpbGl0eU9iamVjdF07CiAg
ICAgICAgIAogICAgICAgICBBY2Nlc3NpYmlsaXR5U2VhcmNoRGlyZWN0aW9uIGF4U2VhcmNoRGly
ZWN0aW9uID0gU2VhcmNoRGlyZWN0aW9uTmV4dDsKICAgICAgICAgaWYgKFtbZGljdGlvbmFyeSBv
YmplY3RGb3JLZXk6QCJBWERpcmVjdGlvbiJdIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIHNlbGZd
XSkKQEAgLTMwODAsNyArMzA4MCw3IEBAIC0gKE5TVUludGVnZXIpYWNjZXNzaWJpbGl0eUluZGV4
T2ZDaGlsZDoKICAgICAKICAgICB1bnNpZ25lZCBjb3VudCA9IGNoaWxkcmVuLnNpemUoKTsKICAg
ICBmb3IgKHVuc2lnbmVkIGsgPSAwOyBrIDwgY291bnQ7ICsraykgewotICAgICAgICBBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlciogd3JhcHBlciA9IGNoaWxkcmVuW2tdLT53cmFwcGVyKCk7Cisg
ICAgICAgIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKiB3cmFwcGVyID0gY2hpbGRyZW5b
a10tPndyYXBwZXIoKTsKICAgICAgICAgaWYgKHdyYXBwZXIgPT0gY2hpbGQgfHwgKGNoaWxkcmVu
W2tdLT5pc0F0dGFjaG1lbnQoKSAmJiBbd3JhcHBlciBhdHRhY2htZW50Vmlld10gPT0gY2hpbGQp
KSAKICAgICAgICAgICAgIHJldHVybiBrOwogICAgIH0KQEAgLTMxNDAsNyArMzE0MCw3IEBAIC0g
KE5TQXJyYXkgKilhY2Nlc3NpYmlsaXR5QXJyYXlBdHRyaWJ1dGUKICAgICAgICAgCiAgICAgICAg
IE5TTXV0YWJsZUFycmF5ICpzdWJhcnJheSA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBh
Y2l0eTphdmFpbGFibGVdOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGFkZGVkID0gMDsgYWRkZWQg
PCBhdmFpbGFibGU7ICsraW5kZXgsICsrYWRkZWQpIHsKLSAgICAgICAgICAgIEFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyKiB3cmFwcGVyID0gY2hpbGRyZW5baW5kZXhdLT53cmFwcGVyKCk7Cisg
ICAgICAgICAgICBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciogd3JhcHBlciA9IGNoaWxk
cmVuW2luZGV4XS0+d3JhcHBlcigpOwogICAgICAgICAgICAgaWYgKHdyYXBwZXIpIHsKICAgICAg
ICAgICAgICAgICAvLyBUaGUgYXR0YWNobWVudCB2aWV3IHNob3VsZCBiZSByZXR1cm5lZCwgb3Ro
ZXJ3aXNlIEFYIHBhbGluZHJvbWUgZXJyb3JzIG9jY3VyLgogICAgICAgICAgICAgICAgIGlmIChj
aGlsZHJlbltpbmRleF0tPmlzQXR0YWNobWVudCgpICYmIFt3cmFwcGVyIGF0dGFjaG1lbnRWaWV3
XSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4
dENvbnRyb2xsZXJDb3JlVGV4dC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyQ29yZVRleHQubW0JKHJldmlz
aW9uIDk1Mzk0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBs
ZXhUZXh0Q29udHJvbGxlckNvcmVUZXh0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3
IEBAIGV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBrQ1RUeXBlc2V0dGVyT3AKIH0KICNlbmRpZgog
Ci1AaW50ZXJmYWNlIENhc2NhZGVMaXN0IDogTlNBcnJheSB7CitAaW50ZXJmYWNlIFdlYkNhc2Nh
ZGVMaXN0IDogTlNBcnJheSB7CiAgICAgQHByaXZhdGUKICAgICBjb25zdCBXZWJDb3JlOjpGb250
KiBfZm9udDsKICAgICBVQ2hhcjMyIF9jaGFyYWN0ZXI7CkBAIC02MCw3ICs2MCw3IEBAIC0gKGlk
KWluaXRXaXRoRm9udDooY29uc3QgV2ViQ29yZTo6Rm9udCoKIAogQGVuZAogCi1AaW1wbGVtZW50
YXRpb24gQ2FzY2FkZUxpc3QKK0BpbXBsZW1lbnRhdGlvbiBXZWJDYXNjYWRlTGlzdAogCiAtIChp
ZClpbml0V2l0aEZvbnQ6KGNvbnN0IFdlYkNvcmU6OkZvbnQqKWZvbnQgY2hhcmFjdGVyOihVQ2hh
cjMyKWNoYXJhY3RlcgogewpAQCAtMTkzLDcgKzE5Myw3IEBAIHZvaWQgQ29tcGxleFRleHRDb250
cm9sbGVyOjpjb2xsZWN0Q29tcGwKICAgICAgICAgVTE2X0dFVChjcCwgMCwgMCwgbGVuZ3RoLCBi
YXNlQ2hhcmFjdGVyKTsKICAgICAgICAgZm9udERhdGEgPSBtX2ZvbnQuZm9udERhdGFBdCgwKS0+
Zm9udERhdGFGb3JDaGFyYWN0ZXIoYmFzZUNoYXJhY3Rlcik7CiAKLSAgICAgICAgUmV0YWluUHRy
PENhc2NhZGVMaXN0PiBjYXNjYWRlTGlzdChBZG9wdE5TLCBbW0Nhc2NhZGVMaXN0IGFsbG9jXSBp
bml0V2l0aEZvbnQ6Jm1fZm9udCBjaGFyYWN0ZXI6YmFzZUNoYXJhY3Rlcl0pOworICAgICAgICBS
ZXRhaW5QdHI8V2ViQ2FzY2FkZUxpc3Q+IGNhc2NhZGVMaXN0KEFkb3B0TlMsIFtbV2ViQ2FzY2Fk
ZUxpc3QgYWxsb2NdIGluaXRXaXRoRm9udDombV9mb250IGNoYXJhY3RlcjpiYXNlQ2hhcmFjdGVy
XSk7CiAKICAgICAgICAgc3RyaW5nQXR0cmlidXRlcy5hZG9wdENGKENGRGljdGlvbmFyeUNyZWF0
ZU11dGFibGVDb3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIGZvbnREYXRhLT5nZXRDRlN0cmlu
Z0F0dHJpYnV0ZXMobV9mb250LnR5cGVzZXR0aW5nRmVhdHVyZXMoKSwgZm9udERhdGEtPnBsYXRm
b3JtRGF0YSgpLm9yaWVudGF0aW9uKCkpKSk7CiAgICAgICAgIHN0YXRpYyBjb25zdCB2b2lkKiBh
dHRyaWJ1dGVLZXlzW10gPSB7IGtDVEZvbnRDYXNjYWRlTGlzdEF0dHJpYnV0ZSB9OwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL0xhbmd1YWdlLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9MYW5ndWFnZS5tbQkocmV2aXNpb24gOTUzOTQpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvTGFuZ3VhZ2UubW0JKHdvcmtpbmcgY29weSkK
QEAgLTM2LDExICszNiwxMSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogc3RhdGljIE5T
U3RyaW5nICpwcmVmZXJyZWRMYW5ndWFnZUNvZGU7CiAKLUBpbnRlcmZhY2UgTGFuZ3VhZ2VDaGFu
Z2VPYnNlcnZlciA6IE5TT2JqZWN0IHsKK0BpbnRlcmZhY2UgV2ViTGFuZ3VhZ2VDaGFuZ2VPYnNl
cnZlciA6IE5TT2JqZWN0IHsKIH0KIEBlbmQKIAotQGltcGxlbWVudGF0aW9uIExhbmd1YWdlQ2hh
bmdlT2JzZXJ2ZXIKK0BpbXBsZW1lbnRhdGlvbiBXZWJMYW5ndWFnZUNoYW5nZU9ic2VydmVyCiAK
ICsgKHZvaWQpX3dlYmtpdF9sYW5ndWFnZVByZWZlcmVuY2VzRGlkQ2hhbmdlCiB7CkBAIC0xMDQs
NyArMTA0LDcgQEAgU3RyaW5nIHBsYXRmb3JtRGVmYXVsdExhbmd1YWdlKCkKIAogICAgIHN0YXRp
YyBib29sIGxhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXJBZGRlZDsKICAgICBpZiAoIWxhbmd1YWdlQ2hh
bmdlT2JzZXJ2ZXJBZGRlZCkgewotICAgICAgICBbW05TRGlzdHJpYnV0ZWROb3RpZmljYXRpb25D
ZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6W0xhbmd1YWdlQ2hhbmdlT2JzZXJ2ZXIg
c2VsZl0KKyAgICAgICAgW1tOU0Rpc3RyaWJ1dGVkTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRD
ZW50ZXJdIGFkZE9ic2VydmVyOltXZWJMYW5ndWFnZUNoYW5nZU9ic2VydmVyIHNlbGZdCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZWxlY3RvcjpAc2VsZWN0b3IoX3dlYmtpdF9sYW5ndWFnZVByZWZlcmVuY2VzRGlkQ2hhbmdlKQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG5hbWU6QCJBcHBsZUxhbmd1YWdlUHJlZmVyZW5jZXNDaGFuZ2VkTm90aWZpY2F0aW9u
IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvYmplY3Q6bmlsXTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9T
Y3JvbGxBbmltYXRvck1hYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9TY3JvbGxBbmltYXRvck1hYy5oCShyZXZpc2lvbiA5NTM5NCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
NiwxNSArMzYsMTMgQEAKICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKICNpZmRlZiBfX09C
SkNfXwotQGNsYXNzIFNjcm9sbEFuaW1hdGlvbkhlbHBlckRlbGVnYXRlOwotQGNsYXNzIFNjcm9s
bGJhclBhaW50ZXJEZWxlZ2F0ZTsKLUBjbGFzcyBTY3JvbGxiYXJQYWludGVyQ29udHJvbGxlckRl
bGVnYXRlOwotQGNsYXNzIFNjcm9sbGJhclBhaW50ZXJEZWxlZ2F0ZTsKK0BjbGFzcyBXZWJTY3Jv
bGxBbmltYXRpb25IZWxwZXJEZWxlZ2F0ZTsKK0BjbGFzcyBXZWJTY3JvbGxiYXJQYWludGVyQ29u
dHJvbGxlckRlbGVnYXRlOworQGNsYXNzIFdlYlNjcm9sbGJhclBhaW50ZXJEZWxlZ2F0ZTsKICNl
bHNlCi1jbGFzcyBTY3JvbGxBbmltYXRpb25IZWxwZXJEZWxlZ2F0ZTsKLWNsYXNzIFNjcm9sbGJh
clBhaW50ZXJEZWxlZ2F0ZTsKLWNsYXNzIFNjcm9sbGJhclBhaW50ZXJDb250cm9sbGVyRGVsZWdh
dGU7Ci1jbGFzcyBTY3JvbGxiYXJQYWludGVyRGVsZWdhdGU7CitjbGFzcyBXZWJTY3JvbGxBbmlt
YXRpb25IZWxwZXJEZWxlZ2F0ZTsKK2NsYXNzIFdlYlNjcm9sbGJhclBhaW50ZXJDb250cm9sbGVy
RGVsZWdhdGU7CitjbGFzcyBXZWJTY3JvbGxiYXJQYWludGVyRGVsZWdhdGU7CiAjZW5kaWYKIAog
I2lmIFVTRShTQ1JPTExCQVJfUEFJTlRFUikKQEAgLTk3LDEyICs5NSwxMiBAQCBwdWJsaWM6CiAK
IHByaXZhdGU6CiAgICAgUmV0YWluUHRyPGlkPiBtX3Njcm9sbEFuaW1hdGlvbkhlbHBlcjsKLSAg
ICBSZXRhaW5QdHI8U2Nyb2xsQW5pbWF0aW9uSGVscGVyRGVsZWdhdGU+IG1fc2Nyb2xsQW5pbWF0
aW9uSGVscGVyRGVsZWdhdGU7CisgICAgUmV0YWluUHRyPFdlYlNjcm9sbEFuaW1hdGlvbkhlbHBl
ckRlbGVnYXRlPiBtX3Njcm9sbEFuaW1hdGlvbkhlbHBlckRlbGVnYXRlOwogCiAjaWYgVVNFKFND
Uk9MTEJBUl9QQUlOVEVSKQogICAgIFJldGFpblB0cjxTY3JvbGxiYXJQYWludGVyQ29udHJvbGxl
cj4gbV9zY3JvbGxiYXJQYWludGVyQ29udHJvbGxlcjsKLSAgICBSZXRhaW5QdHI8U2Nyb2xsYmFy
UGFpbnRlckNvbnRyb2xsZXJEZWxlZ2F0ZT4gbV9zY3JvbGxiYXJQYWludGVyQ29udHJvbGxlckRl
bGVnYXRlOwotICAgIFJldGFpblB0cjxpZD4gbV9zY3JvbGxiYXJQYWludGVyRGVsZWdhdGU7Cisg
ICAgUmV0YWluUHRyPFdlYlNjcm9sbGJhclBhaW50ZXJDb250cm9sbGVyRGVsZWdhdGU+IG1fc2Ny
b2xsYmFyUGFpbnRlckNvbnRyb2xsZXJEZWxlZ2F0ZTsKKyAgICBSZXRhaW5QdHI8V2ViU2Nyb2xs
YmFyUGFpbnRlckRlbGVnYXRlPiBtX3Njcm9sbGJhclBhaW50ZXJEZWxlZ2F0ZTsKIAogICAgIHZv
aWQgaW5pdGlhbFNjcm9sbGJhclBhaW50VGltZXJGaXJlZChUaW1lcjxTY3JvbGxBbmltYXRvck1h
Yz4qKTsKICAgICBUaW1lcjxTY3JvbGxBbmltYXRvck1hYz4gbV9pbml0aWFsU2Nyb2xsYmFyUGFp
bnRUaW1lcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRv
ck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xs
QW5pbWF0b3JNYWMubW0JKHJldmlzaW9uIDk1Mzk0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3
IEBAIC0gKE5TUG9pbnQpdGFyZ2V0T3JpZ2luOwogLSAoQ0dGbG9hdClfcHJvZ3Jlc3M7CiBAZW5k
CiAKLUBpbnRlcmZhY2UgU2Nyb2xsQW5pbWF0aW9uSGVscGVyRGVsZWdhdGUgOiBOU09iamVjdAor
QGludGVyZmFjZSBXZWJTY3JvbGxBbmltYXRpb25IZWxwZXJEZWxlZ2F0ZSA6IE5TT2JqZWN0CiB7
CiAgICAgV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JNYWMqIF9hbmltYXRvcjsKIH0KQEAgLTY5LDcg
KzY5LDcgQEAgc3RhdGljIE5TU2l6ZSBhYnMoTlNTaXplIHNpemUpCiAgICAgcmV0dXJuIGZpbmFs
U2l6ZTsgICAgCiB9CiAKLUBpbXBsZW1lbnRhdGlvbiBTY3JvbGxBbmltYXRpb25IZWxwZXJEZWxl
Z2F0ZQorQGltcGxlbWVudGF0aW9uIFdlYlNjcm9sbEFuaW1hdGlvbkhlbHBlckRlbGVnYXRlCiAK
IC0gKGlkKWluaXRXaXRoU2Nyb2xsQW5pbWF0b3I6KFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTWFj
KilzY3JvbGxBbmltYXRvcgogewpAQCAtMTUwLDE0ICsxNTAsMTQgQEAgLSAodm9pZClfcmVjdXJz
aXZlUmVjb21wdXRlVG9vbFRpcHMKIAogI2lmIFVTRShTQ1JPTExCQVJfUEFJTlRFUikKIAotQGlu
dGVyZmFjZSBTY3JvbGxiYXJQYWludGVyQ29udHJvbGxlckRlbGVnYXRlIDogTlNPYmplY3QKK0Bp
bnRlcmZhY2UgV2ViU2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXJEZWxlZ2F0ZSA6IE5TT2JqZWN0
CiB7CiAgICAgV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JNYWMqIF9hbmltYXRvcjsKIH0KIC0gKGlk
KWluaXRXaXRoU2Nyb2xsQW5pbWF0b3I6KFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTWFjKilzY3Jv
bGxBbmltYXRvcjsKIEBlbmQKIAotQGltcGxlbWVudGF0aW9uIFNjcm9sbGJhclBhaW50ZXJDb250
cm9sbGVyRGVsZWdhdGUKK0BpbXBsZW1lbnRhdGlvbiBXZWJTY3JvbGxiYXJQYWludGVyQ29udHJv
bGxlckRlbGVnYXRlCiAKIC0gKGlkKWluaXRXaXRoU2Nyb2xsQW5pbWF0b3I6KFdlYkNvcmU6OlNj
cm9sbEFuaW1hdG9yTWFjKilzY3JvbGxBbmltYXRvcgogewpAQCAtMjQyLDcgKzI0Miw3IEBAIC0g
KHZvaWQpc2Nyb2xsZXJJbXBQYWlyOihpZClzY3JvbGxlckltcFAKIAogQGVuZAogCi1AaW50ZXJm
YWNlIFNjcm9sbGJhclBhcnRBbmltYXRpb24gOiBOU0FuaW1hdGlvbgorQGludGVyZmFjZSBXZWJT
Y3JvbGxiYXJQYXJ0QW5pbWF0aW9uIDogTlNBbmltYXRpb24KIHsKICAgICBSZXRhaW5QdHI8U2Ny
b2xsYmFyUGFpbnRlcj4gX3Njcm9sbGVyUGFpbnRlcjsKICAgICBXZWJDb3JlOjpTY3JvbGxiYXJQ
YXJ0IF9wYXJ0OwpAQCAtMjUzLDcgKzI1Myw3IEBAIEBpbnRlcmZhY2UgU2Nyb2xsYmFyUGFydEFu
aW1hdGlvbiA6IE5TQW4KIC0gKGlkKWluaXRXaXRoU2Nyb2xsYmFyUGFpbnRlcjooU2Nyb2xsYmFy
UGFpbnRlcilzY3JvbGxlclBhaW50ZXIgcGFydDooV2ViQ29yZTo6U2Nyb2xsYmFyUGFydClwYXJ0
IHNjcm9sbEFuaW1hdG9yOihXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYyopc2Nyb2xsQW5pbWF0
b3IgYW5pbWF0ZUFscGhhVG86KENHRmxvYXQpbmV3QWxwaGEgZHVyYXRpb246KE5TVGltZUludGVy
dmFsKWR1cmF0aW9uOwogQGVuZAogCi1AaW1wbGVtZW50YXRpb24gU2Nyb2xsYmFyUGFydEFuaW1h
dGlvbgorQGltcGxlbWVudGF0aW9uIFdlYlNjcm9sbGJhclBhcnRBbmltYXRpb24KIAogLSAoaWQp
aW5pdFdpdGhTY3JvbGxiYXJQYWludGVyOihTY3JvbGxiYXJQYWludGVyKXNjcm9sbGVyUGFpbnRl
ciBwYXJ0OihXZWJDb3JlOjpTY3JvbGxiYXJQYXJ0KXBhcnQgc2Nyb2xsQW5pbWF0b3I6KFdlYkNv
cmU6OlNjcm9sbEFuaW1hdG9yTWFjKilzY3JvbGxBbmltYXRvciBhbmltYXRlQWxwaGFUbzooQ0dG
bG9hdCluZXdBbHBoYSBkdXJhdGlvbjooTlNUaW1lSW50ZXJ2YWwpZHVyYXRpb24KIHsKQEAgLTMw
MywyMSArMzAzLDIxIEBAIC0gKHZvaWQpc2Nyb2xsQW5pbWF0b3JEZXN0cm95ZWQKIAogQGVuZAog
Ci1AaW50ZXJmYWNlIFNjcm9sbGJhclBhaW50ZXJEZWxlZ2F0ZSA6IE5TT2JqZWN0PE5TQW5pbWF0
aW9uRGVsZWdhdGU+CitAaW50ZXJmYWNlIFdlYlNjcm9sbGJhclBhaW50ZXJEZWxlZ2F0ZSA6IE5T
T2JqZWN0PE5TQW5pbWF0aW9uRGVsZWdhdGU+CiB7CiAgICAgV2ViQ29yZTo6U2Nyb2xsQW5pbWF0
b3JNYWMqIF9hbmltYXRvcjsKIAotICAgIFJldGFpblB0cjxTY3JvbGxiYXJQYXJ0QW5pbWF0aW9u
PiBfdmVydGljYWxLbm9iQW5pbWF0aW9uOwotICAgIFJldGFpblB0cjxTY3JvbGxiYXJQYXJ0QW5p
bWF0aW9uPiBfaG9yaXpvbnRhbEtub2JBbmltYXRpb247CisgICAgUmV0YWluUHRyPFdlYlNjcm9s
bGJhclBhcnRBbmltYXRpb24+IF92ZXJ0aWNhbEtub2JBbmltYXRpb247CisgICAgUmV0YWluUHRy
PFdlYlNjcm9sbGJhclBhcnRBbmltYXRpb24+IF9ob3Jpem9udGFsS25vYkFuaW1hdGlvbjsKIAot
ICAgIFJldGFpblB0cjxTY3JvbGxiYXJQYXJ0QW5pbWF0aW9uPiBfdmVydGljYWxUcmFja0FuaW1h
dGlvbjsKLSAgICBSZXRhaW5QdHI8U2Nyb2xsYmFyUGFydEFuaW1hdGlvbj4gX2hvcml6b250YWxU
cmFja0FuaW1hdGlvbjsKKyAgICBSZXRhaW5QdHI8V2ViU2Nyb2xsYmFyUGFydEFuaW1hdGlvbj4g
X3ZlcnRpY2FsVHJhY2tBbmltYXRpb247CisgICAgUmV0YWluUHRyPFdlYlNjcm9sbGJhclBhcnRB
bmltYXRpb24+IF9ob3Jpem9udGFsVHJhY2tBbmltYXRpb247CiB9CiAtIChpZClpbml0V2l0aFNj
cm9sbEFuaW1hdG9yOihXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYyopc2Nyb2xsQW5pbWF0b3I7
CiAtICh2b2lkKWNhbmNlbEFuaW1hdGlvbnM7CiBAZW5kCiAKLUBpbXBsZW1lbnRhdGlvbiBTY3Jv
bGxiYXJQYWludGVyRGVsZWdhdGUKK0BpbXBsZW1lbnRhdGlvbiBXZWJTY3JvbGxiYXJQYWludGVy
RGVsZWdhdGUKIAogLSAoaWQpaW5pdFdpdGhTY3JvbGxBbmltYXRvcjooV2ViQ29yZTo6U2Nyb2xs
QW5pbWF0b3JNYWMqKXNjcm9sbEFuaW1hdG9yCiB7CkBAIC0zNTksNyArMzU5LDcgQEAgLSAoQ0FM
YXllciAqKWxheWVyCiAgICAgcmV0dXJuIGR1bW15TGF5ZXI7CiB9CiAKLS0gKHZvaWQpc2V0VXBB
bmltYXRpb246KFJldGFpblB0cjxTY3JvbGxiYXJQYXJ0QW5pbWF0aW9uPiYpc2Nyb2xsYmFyUGFy
dEFuaW1hdGlvbiBzY3JvbGxlclBhaW50ZXI6KFNjcm9sbGJhclBhaW50ZXIpc2Nyb2xsZXJQYWlu
dGVyIHBhcnQ6KFdlYkNvcmU6OlNjcm9sbGJhclBhcnQpcGFydCBhbmltYXRlQWxwaGFUbzooQ0dG
bG9hdCluZXdBbHBoYSBkdXJhdGlvbjooTlNUaW1lSW50ZXJ2YWwpZHVyYXRpb24KKy0gKHZvaWQp
c2V0VXBBbmltYXRpb246KFJldGFpblB0cjxXZWJTY3JvbGxiYXJQYXJ0QW5pbWF0aW9uPiYpc2Ny
b2xsYmFyUGFydEFuaW1hdGlvbiBzY3JvbGxlclBhaW50ZXI6KFNjcm9sbGJhclBhaW50ZXIpc2Ny
b2xsZXJQYWludGVyIHBhcnQ6KFdlYkNvcmU6OlNjcm9sbGJhclBhcnQpcGFydCBhbmltYXRlQWxw
aGFUbzooQ0dGbG9hdCluZXdBbHBoYSBkdXJhdGlvbjooTlNUaW1lSW50ZXJ2YWwpZHVyYXRpb24K
IHsKICAgICAvLyBJZiB0aGUgdXNlciBoYXMgc2Nyb2xsZWQgdGhlIHBhZ2UsIHRoZW4gdGhlIHNj
cm9sbGJhcnMgbXVzdCBiZSBhbmltYXRlZCBoZXJlLiAKICAgICAvLyBUaGlzIG92ZXJyaWRlcyB0
aGUgZWFybHkgcmV0dXJucy4KQEAgLTM5Miw3ICszOTIsNyBAQCAtICh2b2lkKXNldFVwQW5pbWF0
aW9uOihSZXRhaW5QdHI8U2Nyb2xsCiAKICAgICBbTlNBbmltYXRpb25Db250ZXh0IGJlZ2luR3Jv
dXBpbmddOwogICAgIFtbTlNBbmltYXRpb25Db250ZXh0IGN1cnJlbnRDb250ZXh0XSBzZXREdXJh
dGlvbjpkdXJhdGlvbl07Ci0gICAgc2Nyb2xsYmFyUGFydEFuaW1hdGlvbi5hZG9wdE5TKFtbU2Ny
b2xsYmFyUGFydEFuaW1hdGlvbiBhbGxvY10gaW5pdFdpdGhTY3JvbGxiYXJQYWludGVyOnNjcm9s
bGVyUGFpbnRlciAKKyAgICBzY3JvbGxiYXJQYXJ0QW5pbWF0aW9uLmFkb3B0TlMoW1tXZWJTY3Jv
bGxiYXJQYXJ0QW5pbWF0aW9uIGFsbG9jXSBpbml0V2l0aFNjcm9sbGJhclBhaW50ZXI6c2Nyb2xs
ZXJQYWludGVyIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwYXJ0OnBhcnQKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsQW5pbWF0
b3I6X2FuaW1hdG9yIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRlQWxwaGFUbzpuZXdBbHBoYSAKQEAgLTQ2
OSwxNiArNDY5LDE2IEBAIFNjcm9sbEFuaW1hdG9yTWFjOjpTY3JvbGxBbmltYXRvck1hYyhTY3IK
ICAgICAsIG1faGF2ZVNjcm9sbGVkU2luY2VQYWdlTG9hZChmYWxzZSkKICAgICAsIG1fbmVlZHNT
Y3JvbGxlclN0eWxlVXBkYXRlKGZhbHNlKQogewotICAgIG1fc2Nyb2xsQW5pbWF0aW9uSGVscGVy
RGVsZWdhdGUuYWRvcHROUyhbW1Njcm9sbEFuaW1hdGlvbkhlbHBlckRlbGVnYXRlIGFsbG9jXSBp
bml0V2l0aFNjcm9sbEFuaW1hdG9yOnRoaXNdKTsKKyAgICBtX3Njcm9sbEFuaW1hdGlvbkhlbHBl
ckRlbGVnYXRlLmFkb3B0TlMoW1tXZWJTY3JvbGxBbmltYXRpb25IZWxwZXJEZWxlZ2F0ZSBhbGxv
Y10gaW5pdFdpdGhTY3JvbGxBbmltYXRvcjp0aGlzXSk7CiAgICAgbV9zY3JvbGxBbmltYXRpb25I
ZWxwZXIuYWRvcHROUyhbW05TQ2xhc3NGcm9tU3RyaW5nKEAiTlNTY3JvbGxBbmltYXRpb25IZWxw
ZXIiKSBhbGxvY10gaW5pdFdpdGhEZWxlZ2F0ZTptX3Njcm9sbEFuaW1hdGlvbkhlbHBlckRlbGVn
YXRlLmdldCgpXSk7CiAKICNpZiBVU0UoU0NST0xMQkFSX1BBSU5URVIpCi0gICAgbV9zY3JvbGxi
YXJQYWludGVyQ29udHJvbGxlckRlbGVnYXRlLmFkb3B0TlMoW1tTY3JvbGxiYXJQYWludGVyQ29u
dHJvbGxlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFNjcm9sbEFuaW1hdG9yOnRoaXNdKTsKKyAg
ICBtX3Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVyRGVsZWdhdGUuYWRvcHROUyhbW1dlYlNjcm9s
bGJhclBhaW50ZXJDb250cm9sbGVyRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoU2Nyb2xsQW5pbWF0
b3I6dGhpc10pOwogICAgIG1fc2Nyb2xsYmFyUGFpbnRlckNvbnRyb2xsZXIgPSBbW1tOU0NsYXNz
RnJvbVN0cmluZyhAIk5TU2Nyb2xsZXJJbXBQYWlyIikgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNl
XTsKICAgICBbbV9zY3JvbGxiYXJQYWludGVyQ29udHJvbGxlci5nZXQoKSBzZXREZWxlZ2F0ZTpt
X3Njcm9sbGJhclBhaW50ZXJDb250cm9sbGVyRGVsZWdhdGUuZ2V0KCldOwogICAgIFttX3Njcm9s
bGJhclBhaW50ZXJDb250cm9sbGVyLmdldCgpIHNldFNjcm9sbGVyU3R5bGU6d2tSZWNvbW1lbmRl
ZFNjcm9sbGVyU3R5bGUoKV07CiAKLSAgICBtX3Njcm9sbGJhclBhaW50ZXJEZWxlZ2F0ZS5hZG9w
dE5TKFtbU2Nyb2xsYmFyUGFpbnRlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFNjcm9sbEFuaW1h
dG9yOnRoaXNdKTsKKyAgICBtX3Njcm9sbGJhclBhaW50ZXJEZWxlZ2F0ZS5hZG9wdE5TKFtbV2Vi
U2Nyb2xsYmFyUGFpbnRlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFNjcm9sbEFuaW1hdG9yOnRo
aXNdKTsKICNlbmRpZgogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Ny
b2xsYmFyVGhlbWVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tCShyZXZpc2lvbiA5NTM5NCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAt
NTksNyArNTksNyBAQCBzdGF0aWMgU2Nyb2xsYmFyUGFpbnRlck1hcCogc2Nyb2xsYmFyTWFwCiAK
IH0KIAotQGludGVyZmFjZSBTY3JvbGxiYXJQcmVmc09ic2VydmVyIDogTlNPYmplY3QKK0BpbnRl
cmZhY2UgV2ViU2Nyb2xsYmFyUHJlZnNPYnNlcnZlciA6IE5TT2JqZWN0CiB7CiB9CiAKQEAgLTY5
LDcgKzY5LDcgQEAgKyAodm9pZCliZWhhdmlvclByZWZzQ2hhbmdlZDooTlNOb3RpZmljYQogCiBA
ZW5kCiAKLUBpbXBsZW1lbnRhdGlvbiBTY3JvbGxiYXJQcmVmc09ic2VydmVyCitAaW1wbGVtZW50
YXRpb24gV2ViU2Nyb2xsYmFyUHJlZnNPYnNlcnZlcgogCiArICh2b2lkKWFwcGVhcmFuY2VQcmVm
c0NoYW5nZWQ6KE5TTm90aWZpY2F0aW9uKil1bnVzZWROb3RpZmljYXRpb24KIHsKQEAgLTE5Miw3
ICsxOTIsNyBAQCBTY3JvbGxiYXJUaGVtZU1hYzo6U2Nyb2xsYmFyVGhlbWVNYWMoKQogICAgIHN0
YXRpYyBib29sIGluaXRpYWxpemVkOwogICAgIGlmICghaW5pdGlhbGl6ZWQpIHsKICAgICAgICAg
aW5pdGlhbGl6ZWQgPSB0cnVlOwotICAgICAgICBbU2Nyb2xsYmFyUHJlZnNPYnNlcnZlciByZWdp
c3RlckFzT2JzZXJ2ZXJdOworICAgICAgICBbV2ViU2Nyb2xsYmFyUHJlZnNPYnNlcnZlciByZWdp
c3RlckFzT2JzZXJ2ZXJdOwogICAgICAgICBwcmVmZXJlbmNlc0NoYW5nZWQoKTsKICAgICB9CiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29raWVTdG9yYWdl
TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L0Nvb2tpZVN0b3JhZ2VNYWMubW0JKHJldmlzaW9uIDk1Mzk0KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llU3RvcmFnZU1hYy5tbQkod29ya2luZyBjb3B5KQpA
QCAtNDAsMTQgKzQwLDE0IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1AaW50ZXJm
YWNlIENvb2tpZVN0b3JhZ2VPYmpDQWRhcHRlciA6IE5TT2JqZWN0CitAaW50ZXJmYWNlIFdlYkNv
b2tpZVN0b3JhZ2VPYmpDQWRhcHRlciA6IE5TT2JqZWN0CiAtKHZvaWQpbm90aWZ5Q29va2llc0No
YW5nZWRPbk1haW5UaHJlYWQ7CiAtKHZvaWQpY29va2llc0NoYW5nZWROb3RpZmljYXRpb25IYW5k
bGVyOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbjsKIC0odm9pZClzdGFydExpc3Rlbmlu
Z0ZvckNvb2tpZUNoYW5nZU5vdGlmaWNhdGlvbnM7CiAtKHZvaWQpc3RvcExpc3RlbmluZ0ZvckNv
b2tpZUNoYW5nZU5vdGlmaWNhdGlvbnM7CiBAZW5kCiAKLUBpbXBsZW1lbnRhdGlvbiBDb29raWVT
dG9yYWdlT2JqQ0FkYXB0ZXIKK0BpbXBsZW1lbnRhdGlvbiBXZWJDb29raWVTdG9yYWdlT2JqQ0Fk
YXB0ZXIKIAogLSh2b2lkKW5vdGlmeUNvb2tpZXNDaGFuZ2VkT25NYWluVGhyZWFkCiB7CkBAIC05
NiwxMiArOTYsMTIgQEAgdm9pZCBzZXRDb29raWVTdG9yYWdlUHJpdmF0ZUJyb3dzaW5nRW5hYgog
ICAgIHdrU2V0Q29va2llU3RvcmFnZVByaXZhdGVCcm93c2luZ0VuYWJsZWQoZW5hYmxlZCk7CiB9
CiAKLXN0YXRpYyBDb29raWVTdG9yYWdlT2JqQ0FkYXB0ZXIgKmNvb2tpZVN0b3JhZ2VBZGFwdGVy
Oworc3RhdGljIFdlYkNvb2tpZVN0b3JhZ2VPYmpDQWRhcHRlciAqY29va2llU3RvcmFnZUFkYXB0
ZXI7CiAKIHZvaWQgc3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKCkKIHsKICAgICBpZiAoIWNv
b2tpZVN0b3JhZ2VBZGFwdGVyKQotICAgICAgICBjb29raWVTdG9yYWdlQWRhcHRlciA9IFtbQ29v
a2llU3RvcmFnZU9iakNBZGFwdGVyIGFsbG9jXSBpbml0XTsKKyAgICAgICAgY29va2llU3RvcmFn
ZUFkYXB0ZXIgPSBbW1dlYkNvb2tpZVN0b3JhZ2VPYmpDQWRhcHRlciBhbGxvY10gaW5pdF07CiAg
ICAgW2Nvb2tpZVN0b3JhZ2VBZGFwdGVyIHN0YXJ0TGlzdGVuaW5nRm9yQ29va2llQ2hhbmdlTm90
aWZpY2F0aW9uc107CiB9CiAK
</data>
<flag name="review"
          id="104575"
          type_id="1"
          status="+"
          setter="sam"
    />
    <flag name="commit-queue"
          id="104582"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107801</attachid>
            <date>2011-09-18 16:56:58 -0700</date>
            <delta_ts>2011-09-19 10:45:14 -0700</delta_ts>
            <desc>JavaScriptCore part</desc>
            <filename>68323_jsc_r1.diff</filename>
            <type>text/plain</type>
            <size>3994</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTUzOTkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAK
KzIwMTEtMDktMTggIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KKworICAgICAgICBK
YXZhU2NyaXB0Q29yZSBwYXJ0IG9mIFttYWNdIFdlYktpdCBjb250YWlucyBPYmplY3RpdmUtQyBj
bGFzc2VzIHRoYXQgYXJlIG5vdCBwcmVmaXhlZCB3aXRoIGl0cyBzdGFuZGFyZCBwcmVmaXhlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjgzMjMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW5hbWVkIFBy
b2ZpbGVyU2VydmVyIHRvIEpTUHJvZmlsZXJTZXJ2ZXIuCisgICAgICAgIFJlbmFtZWQgV1RGTWFp
blRocmVhZENhbGxlciB0byBKU1dURk1haW5UaHJlYWRDYWxsZXIuCisKKyAgICAgICAgKiBwcm9m
aWxlci9Qcm9maWxlclNlcnZlci5tbToKKyAgICAgICAgKCtbSlNQcm9maWxlclNlcnZlciBzaGFy
ZWRQcm9maWxlU2VydmVyXSk6CisgICAgICAgIChKU0M6OnN0YXJ0UHJvZmlsZXJTZXJ2ZXJJZk5l
ZWRlZCk6CisgICAgICAgICogd3RmL21hYy9NYWluVGhyZWFkTWFjLm1tOgorICAgICAgICAoV1RG
Ojppbml0aWFsaXplTWFpblRocmVhZFBsYXRmb3JtKToKKyAgICAgICAgKFdURjo6aW5pdGlhbGl6
ZU1haW5UaHJlYWRUb1Byb2Nlc3NNYWluVGhyZWFkUGxhdGZvcm0pOgorCiAyMDExLTA5LTE3ICBG
aWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgREZHIEpJVCBzaG91bGQg
aW5saW5lIE1hdGgubWluLCBNYXRoLm1heCwgYW5kIE1hdGguc3FydApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyU2VydmVyLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlclNlcnZlci5tbQkocmV2aXNpb24g
OTUzOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJTZXJ2ZXIu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTM0LDIzICszNCwyMyBAQAogI2ltcG9ydCA8Rm91bmRhdGlv
bi9OU0Rpc3RyaWJ1dGVkTm90aWZpY2F0aW9uQ2VudGVyLmg+CiAjZW5kaWYKIAotQGludGVyZmFj
ZSBQcm9maWxlclNlcnZlciA6IE5TT2JqZWN0IHsKK0BpbnRlcmZhY2UgSlNQcm9maWxlclNlcnZl
ciA6IE5TT2JqZWN0IHsKIEBwcml2YXRlCiAgICAgTlNTdHJpbmcgKl9zZXJ2ZXJOYW1lOwogICAg
IHVuc2lnbmVkIF9saXN0ZW5lckNvdW50OwogfQotKyAoUHJvZmlsZXJTZXJ2ZXIgKilzaGFyZWRQ
cm9maWxlU2VydmVyOworKyAoSlNQcm9maWxlclNlcnZlciAqKXNoYXJlZFByb2ZpbGVTZXJ2ZXI7
CiAtICh2b2lkKXN0YXJ0UHJvZmlsaW5nOwogLSAodm9pZClzdG9wUHJvZmlsaW5nOwogQGVuZAog
Ci1AaW1wbGVtZW50YXRpb24gUHJvZmlsZXJTZXJ2ZXIKK0BpbXBsZW1lbnRhdGlvbiBKU1Byb2Zp
bGVyU2VydmVyCiAKLSsgKFByb2ZpbGVyU2VydmVyICopc2hhcmVkUHJvZmlsZVNlcnZlcgorKyAo
SlNQcm9maWxlclNlcnZlciAqKXNoYXJlZFByb2ZpbGVTZXJ2ZXIKIHsKLSAgICBzdGF0aWMgUHJv
ZmlsZXJTZXJ2ZXIgKnNoYXJlZFNlcnZlcjsKKyAgICBzdGF0aWMgSlNQcm9maWxlclNlcnZlciAq
c2hhcmVkU2VydmVyOwogICAgIGlmICghc2hhcmVkU2VydmVyKQotICAgICAgICBzaGFyZWRTZXJ2
ZXIgPSBbW1Byb2ZpbGVyU2VydmVyIGFsbG9jXSBpbml0XTsKKyAgICAgICAgc2hhcmVkU2VydmVy
ID0gW1tKU1Byb2ZpbGVyU2VydmVyIGFsbG9jXSBpbml0XTsKICAgICByZXR1cm4gc2hhcmVkU2Vy
dmVyOwogfQogCkBAIC0xMDksNyArMTA5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIHZvaWQgc3Rh
cnRQcm9maWxlclNlcnZlcklmTmVlZGVkKCkKIHsKLSAgICBbUHJvZmlsZXJTZXJ2ZXIgc2hhcmVk
UHJvZmlsZVNlcnZlcl07CisgICAgW0pTUHJvZmlsZXJTZXJ2ZXIgc2hhcmVkUHJvZmlsZVNlcnZl
cl07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi9tYWMvTWFpblRocmVhZE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL21hYy9NYWluVGhyZWFkTWFjLm1tCShyZXZpc2lvbiA5NTM5OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvbWFjL01haW5UaHJlYWRNYWMubW0JKHdvcmtpbmcgY29weSkK
QEAgLTM1LDIzICszNSwyMyBAQAogI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbXBvcnQg
PHd0Zi9UaHJlYWRpbmcuaD4KIAotQGludGVyZmFjZSBXVEZNYWluVGhyZWFkQ2FsbGVyIDogTlNP
YmplY3QgeworQGludGVyZmFjZSBKU1dURk1haW5UaHJlYWRDYWxsZXIgOiBOU09iamVjdCB7CiB9
CiAtICh2b2lkKWNhbGw7CiBAZW5kCiAKLUBpbXBsZW1lbnRhdGlvbiBXVEZNYWluVGhyZWFkQ2Fs
bGVyCitAaW1wbGVtZW50YXRpb24gSlNXVEZNYWluVGhyZWFkQ2FsbGVyCiAKIC0gKHZvaWQpY2Fs
bAogewogICAgIFdURjo6ZGlzcGF0Y2hGdW5jdGlvbnNGcm9tTWFpblRocmVhZCgpOwogfQogCi1A
ZW5kIC8vIGltcGxlbWVudGF0aW9uIFdURk1haW5UaHJlYWRDYWxsZXIKK0BlbmQgLy8gaW1wbGVt
ZW50YXRpb24gSlNXVEZNYWluVGhyZWFkQ2FsbGVyCiAKIG5hbWVzcGFjZSBXVEYgewogCi1zdGF0
aWMgV1RGTWFpblRocmVhZENhbGxlciogc3RhdGljTWFpblRocmVhZENhbGxlcjsKK3N0YXRpYyBK
U1dURk1haW5UaHJlYWRDYWxsZXIqIHN0YXRpY01haW5UaHJlYWRDYWxsZXI7CiBzdGF0aWMgYm9v
bCBpc1RpbWVyUG9zdGVkOyAvLyBUaGlzIGlzIG9ubHkgYWNjZXNzZWQgb24gdGhlICdtYWluJyB0
aHJlYWQuCiBzdGF0aWMgYm9vbCBtYWluVGhyZWFkRXN0YWJsaXNoZWRBc1B0aHJlYWRNYWluOwog
c3RhdGljIHB0aHJlYWRfdCBtYWluVGhyZWFkUHRocmVhZDsKQEAgLTYwLDcgKzYwLDcgQEAgc3Rh
dGljIE5TVGhyZWFkKiBtYWluVGhyZWFkTlNUaHJlYWQ7CiB2b2lkIGluaXRpYWxpemVNYWluVGhy
ZWFkUGxhdGZvcm0oKQogewogICAgIEFTU0VSVCghc3RhdGljTWFpblRocmVhZENhbGxlcik7Ci0g
ICAgc3RhdGljTWFpblRocmVhZENhbGxlciA9IFtbV1RGTWFpblRocmVhZENhbGxlciBhbGxvY10g
aW5pdF07CisgICAgc3RhdGljTWFpblRocmVhZENhbGxlciA9IFtbSlNXVEZNYWluVGhyZWFkQ2Fs
bGVyIGFsbG9jXSBpbml0XTsKIAogICAgIG1haW5UaHJlYWRFc3RhYmxpc2hlZEFzUHRocmVhZE1h
aW4gPSBmYWxzZTsKICAgICBtYWluVGhyZWFkUHRocmVhZCA9IHB0aHJlYWRfc2VsZigpOwpAQCAt
NzMsNyArNzMsNyBAQCB2b2lkIGluaXRpYWxpemVNYWluVGhyZWFkVG9Qcm9jZXNzTWFpblRoCiAg
ICAgICAgIE5TTG9nKEAiV2ViS2l0IFRocmVhZGluZyBWaW9sYXRpb24gLSBpbml0aWFsIHVzZSBv
ZiBXZWJLaXQgZnJvbSBhIHNlY29uZGFyeSB0aHJlYWQuIik7CiAKICAgICBBU1NFUlQoIXN0YXRp
Y01haW5UaHJlYWRDYWxsZXIpOwotICAgIHN0YXRpY01haW5UaHJlYWRDYWxsZXIgPSBbW1dURk1h
aW5UaHJlYWRDYWxsZXIgYWxsb2NdIGluaXRdOworICAgIHN0YXRpY01haW5UaHJlYWRDYWxsZXIg
PSBbW0pTV1RGTWFpblRocmVhZENhbGxlciBhbGxvY10gaW5pdF07CiAKICAgICBtYWluVGhyZWFk
RXN0YWJsaXNoZWRBc1B0aHJlYWRNYWluID0gdHJ1ZTsKICAgICBtYWluVGhyZWFkUHRocmVhZCA9
IDA7Cg==
</data>
<flag name="review"
          id="104583"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>