<?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>188350</bug_id>
          
          <creation_ts>2018-08-06 12:53:40 -0700</creation_ts>
          <short_desc>Use a 1-byte enum class for TextDirection</short_desc>
          <delta_ts>2018-08-13 11:20:31 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1448202</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-06 12:53:40 -0700</bug_when>
    <thetext>Use a 1-byte enum class for TextDirection</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1448205</commentid>
    <comment_count>1</comment_count>
      <attachid>346644</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-06 12:57:33 -0700</bug_when>
    <thetext>Created attachment 346644
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1448207</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-08-06 13:01:02 -0700</bug_when>
    <thetext>Attachment 346644 did not pass style-queue:


ERROR: Source/WebCore/platform/text/WritingMode.h:36:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/UserInterfaceLayoutDirection.h:30:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/testing/Internals.h:617:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
Total errors found: 3 in 72 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1448209</commentid>
    <comment_count>3</comment_count>
      <attachid>346645</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-06 13:11:59 -0700</bug_when>
    <thetext>Created attachment 346645
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1448210</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-08-06 13:13:40 -0700</bug_when>
    <thetext>Attachment 346645 did not pass style-queue:


ERROR: Source/WebCore/platform/text/WritingMode.h:36:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/UserInterfaceLayoutDirection.h:30:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/testing/Internals.h:617:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
Total errors found: 3 in 73 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1448223</commentid>
    <comment_count>5</comment_count>
      <attachid>346650</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-06 13:35:31 -0700</bug_when>
    <thetext>Created attachment 346650
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1448226</commentid>
    <comment_count>6</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-08-06 13:39:25 -0700</bug_when>
    <thetext>Attachment 346650 did not pass style-queue:


ERROR: Source/WebCore/platform/text/WritingMode.h:36:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/UserInterfaceLayoutDirection.h:30:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/testing/Internals.h:617:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
Total errors found: 3 in 74 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1448317</commentid>
    <comment_count>7</comment_count>
      <attachid>346670</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-06 17:58:08 -0700</bug_when>
    <thetext>Created attachment 346670
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1448320</commentid>
    <comment_count>8</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-08-06 18:00:08 -0700</bug_when>
    <thetext>Attachment 346670 did not pass style-queue:


ERROR: Source/WebCore/platform/text/WritingMode.h:36:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/UserInterfaceLayoutDirection.h:30:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/testing/Internals.h:617:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
Total errors found: 3 in 78 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1448328</commentid>
    <comment_count>9</comment_count>
      <attachid>346675</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-06 18:37:50 -0700</bug_when>
    <thetext>Created attachment 346675
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1448330</commentid>
    <comment_count>10</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-08-06 18:41:10 -0700</bug_when>
    <thetext>Attachment 346675 did not pass style-queue:


ERROR: Source/WebCore/platform/text/WritingMode.h:36:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/UserInterfaceLayoutDirection.h:30:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/testing/Internals.h:617:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
Total errors found: 3 in 77 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1448470</commentid>
    <comment_count>11</comment_count>
      <attachid>346710</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-07 10:01:17 -0700</bug_when>
    <thetext>Created attachment 346710
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1448473</commentid>
    <comment_count>12</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-08-07 10:04:21 -0700</bug_when>
    <thetext>Attachment 346710 did not pass style-queue:


ERROR: Source/WebCore/platform/text/WritingMode.h:36:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/platform/UserInterfaceLayoutDirection.h:30:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/testing/Internals.h:617:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
Total errors found: 3 in 78 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449688</commentid>
    <comment_count>13</comment_count>
      <attachid>346710</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-08-13 11:19:10 -0700</bug_when>
    <thetext>Comment on attachment 346710
Patch

Clearing flags on attachment: 346710

Committed r234808: &lt;https://trac.webkit.org/changeset/234808&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449689</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-08-13 11:19:12 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449690</commentid>
    <comment_count>15</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-08-13 11:20:31 -0700</bug_when>
    <thetext>&lt;rdar://problem/43242507&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>346644</attachid>
            <date>2018-08-06 12:57:33 -0700</date>
            <delta_ts>2018-08-06 13:11:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188350-20180806125732.patch</filename>
            <type>text/plain</type>
            <size>115121</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNDU2OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2NCBAQAorMjAxOC0wOC0wNiAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFVzZSBhIDEt
Ynl0ZSBlbnVtIGNsYXNzIGZvciBUZXh0RGlyZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODgzNTAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb24uaDoKKyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBUZXh0RGlyZWN0aW9u
IGNvbnN0KToKKyAgICAgICAgKiBjc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6Om1hdGNoQWxsUnVsZXMpOgorICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dXBkYXRl
VGl0bGVGcm9tVGl0bGVFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRU
aXRsZSk6CisgICAgICAgICogZG9tL1Bvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBv
c2l0aW9uOjpwcmltYXJ5RGlyZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBkb20vUmFuZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2U6OmNvbGxlY3RTZWxlY3Rpb25SZWN0c1dpdGhvdXRV
bmlvbkludGVyaW9yTGluZXMgY29uc3QpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKToKKyAgICAgICAg
KiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmJhc2VXcml0
aW5nRGlyZWN0aW9uRm9yU2VsZWN0aW9uU3RhcnQgY29uc3QpOgorICAgICAgICAqIGVkaXRpbmcv
RnJhbWVTZWxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246Ondp
bGxCZU1vZGlmaWVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjptb2RpZnlF
eHRlbmRpbmdSaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5
RXh0ZW5kaW5nRm9yd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6bW9k
aWZ5TW92aW5nUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246Om1vZGlm
eUV4dGVuZGluZ0xlZnQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246Om1vZGlm
eUV4dGVuZGluZ0JhY2t3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpt
b2RpZnlNb3ZpbmdMZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjp0ZXh0
U2VsZWN0aW9uSW50ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjptb2Rp
ZnkpOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlZpc2libGVQb3NpdGlvbjo6bGVmdFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uOjpyaWdodFZpc3VhbGx5RGlz
dGluY3RDYW5kaWRhdGUgY29uc3QpOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVVuaXRzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnZpc3VhbFdvcmRQb3NpdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpsZWZ0V29yZFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnJpZ2h0V29yZFBvc2l0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmxlZnRCb3VuZGFyeU9mTGluZSk6CisgICAgICAgIChX
ZWJDb3JlOjpyaWdodEJvdW5kYXJ5T2ZMaW5lKToKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpkaXJlY3Rpb25hbGl0eUlmaGFz
RGlyQXV0b0F0dHJpYnV0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6
ZGlyZWN0aW9uYWxpdHkgY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpzZXR1cERhdGVUaW1lQ2hv
b3NlclBhcmFtZXRlcnMpOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmRp
cmVjdGlvbkZvckZvcm1EYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9y
bUNvbnRyb2xFbGVtZW50OjphZGp1c3RJbm5lclRleHRTdHlsZSBjb25zdCk6CisgICAgICAgICog
aHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUaXRsZUVs
ZW1lbnQ6OmNvbXB1dGVkVGV4dFdpdGhEaXJlY3Rpb24pOgorICAgICAgICAqIGh0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OnRvVGV4dERpcmVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRpcmVjdGlvbiBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnRleHRPZmZzZXQpOgorICAgICAg
ICAqIGh0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTbGlkZXJDb250YWluZXI6OmxheW91dCk6CisgICAgICAgICogaHRtbC9zaGFkb3cv
VGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb250
cm9sSW5uZXJFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUpOgorICAgICAgICAqIHBhZ2UvQ2hy
b21lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6c2V0VG9vbFRpcCk6CisgICAgICAg
ICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFnaW5hdGlvbk1vZGVG
b3JSZW5kZXJTdHlsZSk6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy55YW1sOgorICAgICAgICAq
IHBsYXRmb3JtL1JlY3RFZGdlcy5oOgorICAgICAgICAoV2ViQ29yZTo6UmVjdEVkZ2VzOjpzdGFy
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZWN0RWRnZXM6OmVuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZWN0RWRnZXM6OnN0YXJ0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlY3RFZGdlczo6
ZW5kIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlY3RFZGdlczo6c2V0U3RhcnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVjdEVkZ2VzOjpzZXRFbmQpOgorICAgICAgICAqIHBsYXRmb3JtL1Vz
ZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGxleFRl
eHRDb250cm9sbGVyOjpjb21wdXRlRXhwYW5zaW9uT3Bwb3J0dW5pdHkpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRD
YXNjYWRlOjpleHBhbnNpb25PcHBvcnR1bml0eUNvdW50SW50ZXJuYWwpOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udENhc2NhZGU6OmxlYWRpbmdFeHBhbnNpb25PcHBvcnR1bml0eSk6CisgICAgICAg
IChXZWJDb3JlOjpGb250Q2FzY2FkZTo6dHJhaWxpbmdFeHBhbnNpb25PcHBvcnR1bml0eSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0JpZGlUZXh0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmg6CisgICAgICAgIChXZWJDb3JlOjpUZXh0UnVuOjpUZXh0
UnVuKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRSdW46OnJ0bCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0UnVuOjpsdHIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFJ1bjo6
c2V0RGlyZWN0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9y
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldpZHRoSXRlcmF0b3I6OldpZHRoSXRlcmF0b3IpOgor
ICAgICAgICAqIHBsYXRmb3JtL2lvcy9TZWxlY3Rpb25SZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNlbGVjdGlvblJlY3Q6OlNlbGVjdGlvblJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL3Rl
eHQvQmlkaVJlc29sdmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpCaWRpU3RhdHVzOjpCaWRpU3Rh
dHVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1N0cmluZ1dpdGhEaXJlY3Rpb24uaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS90ZXh0L1dyaXRpbmdNb2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpp
c0xlZnRUb1JpZ2h0RGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmlzVmVydGljYWxXcml0
aW5nTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjppc0ZsaXBwZWRXcml0aW5nTW9kZSk6CisgICAg
ICAgIChXZWJDb3JlOjptYXBMb2dpY2FsU2lkZVRvUGh5c2ljYWxTaWRlKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVz
dWx0OjpzcGVsbGluZ1Rvb2xUaXAgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJl
c3VsdDo6dGl0bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6aW5u
ZXJUZXh0SWZUcnVuY2F0ZWQgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVCb3gu
aDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUJveDo6ZGlyZWN0aW9uIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OklubGluZUJveDo6aXNMZWZ0VG9SaWdodERpcmVjdGlvbiBjb25zdCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5saW5lRmxvd0JveDo6cGFpbnRGaWxsTGF5ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9Jbmxp
bmVJdGVyYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6ZW1iZWRDaGFyRnJvbURpcmVjdGlvbik6
CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5saW5lVGV4dEJveDo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6bWlycm9yUlRMU2Vn
bWVudCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRldGVybWlu
ZURpcmVjdGlvbmFsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6dGV4
dEFsaWdubWVudEZvckxpbmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tG
bG93Ojp1cGRhdGVMb2dpY2FsV2lkdGhGb3JBbGlnbm1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQmxvY2tGbG93OjpoYW5kbGVUcmFpbGluZ1NwYWNlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCbG9ja0Zsb3c6OmxheW91dFJ1bnNBbmRGbG9hdHNJblJhbmdlKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVJbmxp
bmVTdGF0aWNEaXN0YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVQ
b3NpdGlvbmVkTG9naWNhbFdpZHRoVXNpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aFJlcGxhY2VkIGNvbnN0KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6YXBwbHlMaW5lQ2xhbXAp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGcmFnbWVudGVkRmxvdy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJGcmFnbWVudGVkRmxvdzo6dXBkYXRlTG9naWNhbFdpZHRoKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckZyYWdtZW50ZWRGbG93Ojp1cGRhdGVGcmFnbWVudHNGcmFn
bWVudGVkRmxvd1BvcnRpb25SZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllck1vZGVsT2JqZWN0
OjpzaG91bGRQbGFjZUJsb2NrRGlyZWN0aW9uU2Nyb2xsYmFyT25MZWZ0IGNvbnN0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTWFycXVlZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJNYXJxdWVlOjpkaXJlY3Rpb24gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJN
ZW51TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZW51TGlzdDo6YWRqdXN0SW5u
ZXJTdHlsZSk6CisgICAgICAgIChSZW5kZXJNZW51TGlzdDo6Y2xpZW50UGFkZGluZ0xlZnQgY29u
c3QpOgorICAgICAgICAoUmVuZGVyTWVudUxpc3Q6OmNsaWVudFBhZGRpbmdSaWdodCBjb25zdCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWVJT1M6OnBvcHVwSW50ZXJuYWxQYWRkaW5nQm94IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludE1lbnVMaXN0QnV0dG9uRGVjb3JhdGlv
bnMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludE1lbnVMaXN0QnV0dG9uRGVjb3JhdGlvbnMpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBvcHVwSW50ZXJuYWxQYWRkaW5nQm94
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpzZXRQb3B1cEJ1dHRv
bkNlbGxTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRTZWFy
Y2hGaWVsZENhbmNlbEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6
cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24pOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1M
QmxvY2s6Om1pcnJvcklmTmVlZGVkIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhN
TE9wZXJhdG9yOjpsYXlvdXRCbG9jayk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpSZW5kZXJTdHlsZSk6
CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTdHlsZTo6aXNMZWZ0VG9SaWdodERpcmVjdGlvbiBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbERpcmVjdGlvbik6CisgICAgICAgICogdGVz
dGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsU2V0
dGluZ3M6OnN5c3RlbUxheW91dERpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5h
bFNldHRpbmdzOjpzZXRTeXN0ZW1MYXlvdXREaXJlY3Rpb24pOgorICAgICAgICAqIHRlc3Rpbmcv
SW50ZXJuYWxzLmg6CisKIDIwMTgtMDgtMDMgIEJlbiBSaWNoYXJkcyAgPGJlbnRvbl9yaWNoYXJk
c0BhcHBsZS5jb20+CiAKICAgICAgICAgV2Ugc2hvdWxkIGNhY2hlIHRoZSBjb21waWxlZCBzYW5k
Ym94IHByb2ZpbGUgaW4gYSBkYXRhIHZhdWx0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCShyZXZpc2lvbiAyMzQ1MTQp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmlu
ZyYgdGFnKCkgY29uc3QgeyByZXR1cm4gbV90YWc7IH0KICAgICBjb25zdCBVUkwmIGljb24oKSBj
b25zdCB7IHJldHVybiBtX2ljb247IH0KIAotICAgIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9kaXJlY3Rpb24gPT0gRGlyZWN0aW9uOjpSdGwgPyBSVEwgOiBMVFI7
IH0KKyAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGlyZWN0
aW9uID09IERpcmVjdGlvbjo6UnRsID8gVGV4dERpcmVjdGlvbjo6UlRMIDogVGV4dERpcmVjdGlv
bjo6TFRSOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpc3BhdGNoQ2xpY2tFdmVudCgp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlzcGF0Y2hDbG9zZUV2ZW50KCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgJKHJldmlz
aW9uIDIzNDUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBp
bmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxNTAsMTAgKzMxNTAsMTAgQEAgdGVtcGxhdGU8PiBp
bmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTUwogewogICAgIG1fcHJpbWl0aXZlVW5pdFR5cGUg
PSBDU1NfVkFMVUVfSUQ7CiAgICAgc3dpdGNoIChlKSB7Ci0gICAgY2FzZSBMVFI6CisgICAgY2Fz
ZSBUZXh0RGlyZWN0aW9uOjpMVFI6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVl
THRyOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFJUTDoKKyAgICBjYXNlIFRleHREaXJlY3Rp
b246OlJUTDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVSdGw7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KQEAgLTMxNjUsMTUgKzMxNjUsMTUgQEAgdGVtcGxhdGU8PiBpbmxpbmUg
Q1NTUHJpbWl0aXZlVmFsdWU6Om9wZQogCiAgICAgc3dpdGNoIChtX3ZhbHVlLnZhbHVlSUQpIHsK
ICAgICBjYXNlIENTU1ZhbHVlTHRyOgotICAgICAgICByZXR1cm4gTFRSOworICAgICAgICByZXR1
cm4gVGV4dERpcmVjdGlvbjo6TFRSOwogICAgIGNhc2UgQ1NTVmFsdWVSdGw6Ci0gICAgICAgIHJl
dHVybiBSVEw7CisgICAgICAgIHJldHVybiBUZXh0RGlyZWN0aW9uOjpSVEw7CiAgICAgZGVmYXVs
dDoKICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgcmV0dXJuIExUUjsKKyAgICByZXR1cm4gVGV4dERpcmVjdGlvbjo6TFRSOwogfQogCiB0ZW1w
bGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoV3JpdGlu
Z01vZGUgZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9y
LmNwcAkocmV2aXNpb24gMjM0NTE0KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxl
Q29sbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTE4LDcgKzUxOCw3IEBAIHZvaWQgRWxl
bWVudFJ1bGVDb2xsZWN0b3I6Om1hdGNoQWxsUnVsZXMKICAgICAgICAgICAgIGJvb2wgaXNBdXRv
OwogICAgICAgICAgICAgVGV4dERpcmVjdGlvbiB0ZXh0RGlyZWN0aW9uID0gZG93bmNhc3Q8SFRN
TEVsZW1lbnQ+KHN0eWxlZEVsZW1lbnQpLmRpcmVjdGlvbmFsaXR5SWZoYXNEaXJBdXRvQXR0cmli
dXRlKGlzQXV0byk7CiAgICAgICAgICAgICBpZiAoaXNBdXRvKQotICAgICAgICAgICAgICAgIG1f
cmVzdWx0LmFkZE1hdGNoZWRQcm9wZXJ0aWVzKHRleHREaXJlY3Rpb24gPT0gTFRSID8gbGVmdFRv
UmlnaHREZWNsYXJhdGlvbigpIDogcmlnaHRUb0xlZnREZWNsYXJhdGlvbigpKTsKKyAgICAgICAg
ICAgICAgICBtX3Jlc3VsdC5hZGRNYXRjaGVkUHJvcGVydGllcyh0ZXh0RGlyZWN0aW9uID09IFRl
eHREaXJlY3Rpb246OkxUUiA/IGxlZnRUb1JpZ2h0RGVjbGFyYXRpb24oKSA6IHJpZ2h0VG9MZWZ0
RGVjbGFyYXRpb24oKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAJKHJldmlzaW9uIDIzNDUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MTQsNyArMTUxNCw3IEBAIHZvaWQgRG9jdW1l
bnQ6OnVwZGF0ZVRpdGxlRnJvbVRpdGxlRWxlbWUKICAgICAgICAgdXBkYXRlVGl0bGUoZG93bmNh
c3Q8SFRNTFRpdGxlRWxlbWVudD4oKm1fdGl0bGVFbGVtZW50KS50ZXh0V2l0aERpcmVjdGlvbigp
KTsKICAgICBlbHNlIGlmIChpczxTVkdUaXRsZUVsZW1lbnQ+KCptX3RpdGxlRWxlbWVudCkpIHsK
ICAgICAgICAgLy8gRklYTUU6IERvZXMgdGhlIFNWRyB0aXRsZSBlbGVtZW50IGhhdmUgYSB0ZXh0
IGRpcmVjdGlvbj8KLSAgICAgICAgdXBkYXRlVGl0bGUoeyBkb3duY2FzdDxTVkdUaXRsZUVsZW1l
bnQ+KCptX3RpdGxlRWxlbWVudCkudGV4dENvbnRlbnQoKSwgTFRSIH0pOworICAgICAgICB1cGRh
dGVUaXRsZSh7IGRvd25jYXN0PFNWR1RpdGxlRWxlbWVudD4oKm1fdGl0bGVFbGVtZW50KS50ZXh0
Q29udGVudCgpLCBUZXh0RGlyZWN0aW9uOjpMVFIgfSk7CiAgICAgfQogfQogCkBAIC0xNTQ2LDcg
KzE1NDYsNyBAQCB2b2lkIERvY3VtZW50OjpzZXRUaXRsZShjb25zdCBTdHJpbmcmIHRpCiAgICAg
ZWxzZSBpZiAoaXM8U1ZHVGl0bGVFbGVtZW50PihtX3RpdGxlRWxlbWVudC5nZXQoKSkpCiAgICAg
ICAgIGRvd25jYXN0PFNWR1RpdGxlRWxlbWVudD4oKm1fdGl0bGVFbGVtZW50KS5zZXRUZXh0Q29u
dGVudCh0aXRsZSk7CiAgICAgZWxzZQotICAgICAgICB1cGRhdGVUaXRsZSh7IHRpdGxlLCBMVFIg
fSk7CisgICAgICAgIHVwZGF0ZVRpdGxlKHsgdGl0bGUsIFRleHREaXJlY3Rpb246OkxUUiB9KTsK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBUaXRsZVRyYWl0czsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZG9tL1Bvc2l0aW9uLmNwcAkocmV2aXNpb24gMjM0NTE0KQorKysgU291cmNlL1dlYkNvcmUvZG9t
L1Bvc2l0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM4OCwxMCArMTM4OCwxMCBAQCB2b2lk
IFBvc2l0aW9uOjpnZXRJbmxpbmVCb3hBbmRPZmZzZXQoRUFmCiBUZXh0RGlyZWN0aW9uIFBvc2l0
aW9uOjpwcmltYXJ5RGlyZWN0aW9uKCkgY29uc3QKIHsKICAgICBpZiAoIW1fYW5jaG9yTm9kZS0+
cmVuZGVyZXIoKSkKLSAgICAgICAgcmV0dXJuIExUUjsKKyAgICAgICAgcmV0dXJuIFRleHREaXJl
Y3Rpb246OkxUUjsKICAgICBpZiAoYXV0byogYmxvY2tGbG93ID0gbGluZWFnZU9mVHlwZTxSZW5k
ZXJCbG9ja0Zsb3c+KCptX2FuY2hvck5vZGUtPnJlbmRlcmVyKCkpLmZpcnN0KCkpCiAgICAgICAg
IHJldHVybiBibG9ja0Zsb3ctPnN0eWxlKCkuZGlyZWN0aW9uKCk7Ci0gICAgcmV0dXJuIExUUjsK
KyAgICByZXR1cm4gVGV4dERpcmVjdGlvbjo6TFRSOwogfQogCiAjaWYgRU5BQkxFKFRSRUVfREVC
VUdHSU5HKQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCShyZXZpc2lvbiAyMzQ1MTQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDMxLDcgKzE0MzEs
NyBAQCBpbnQgUmFuZ2U6OmNvbGxlY3RTZWxlY3Rpb25SZWN0c1dpdGhvdXRVCiAgICAgICAgIGlm
IChyZWN0c1tqXS5saW5lTnVtYmVyKCkgIT0gcmVjdHNbaiAtIDFdLmxpbmVOdW1iZXIoKSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBTZWxlY3Rpb25SZWN0JiBwcmV2aW91c1JlY3Qg
PSByZWN0c1tqIC0gMV07Ci0gICAgICAgIGJvb2wgcHJldmlvdXNSZWN0TWF5Tm90UmVhY2hSaWdo
dEVkZ2UgPSAocHJldmlvdXNSZWN0LmRpcmVjdGlvbigpID09IExUUiAmJiBwcmV2aW91c1JlY3Qu
Y29udGFpbnNFbmQoKSkgfHwgKHByZXZpb3VzUmVjdC5kaXJlY3Rpb24oKSA9PSBSVEwgJiYgcHJl
dmlvdXNSZWN0LmNvbnRhaW5zU3RhcnQoKSk7CisgICAgICAgIGJvb2wgcHJldmlvdXNSZWN0TWF5
Tm90UmVhY2hSaWdodEVkZ2UgPSAocHJldmlvdXNSZWN0LmRpcmVjdGlvbigpID09IFRleHREaXJl
Y3Rpb246OkxUUiAmJiBwcmV2aW91c1JlY3QuY29udGFpbnNFbmQoKSkgfHwgKHByZXZpb3VzUmVj
dC5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpSVEwgJiYgcHJldmlvdXNSZWN0LmNvbnRh
aW5zU3RhcnQoKSk7CiAgICAgICAgIGlmIChwcmV2aW91c1JlY3RNYXlOb3RSZWFjaFJpZ2h0RWRn
ZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpbnQgYWRqdXN0ZWRXaWR0aCA9IHJl
Y3RzW2pdLmxvZ2ljYWxMZWZ0KCkgLSBwcmV2aW91c1JlY3QubG9naWNhbExlZnQoKTsKQEAgLTE0
NDYsMTAgKzE0NDYsMTAgQEAgaW50IFJhbmdlOjpjb2xsZWN0U2VsZWN0aW9uUmVjdHNXaXRob3V0
VQogICAgICAgICBTZWxlY3Rpb25SZWN0JiBzZWxlY3Rpb25SZWN0ID0gcmVjdHNbaV07CiAgICAg
ICAgIGlmICghc2VsZWN0aW9uUmVjdC5pc0xpbmVCcmVhaygpICYmIHNlbGVjdGlvblJlY3QubGlu
ZU51bWJlcigpID49IG1heExpbmVOdW1iZXIpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgaWYgKHNlbGVjdGlvblJlY3QuZGlyZWN0aW9uKCkgPT0gUlRMICYmIHNlbGVjdGlvblJlY3Qu
aXNGaXJzdE9uTGluZSgpKSB7CisgICAgICAgIGlmIChzZWxlY3Rpb25SZWN0LmRpcmVjdGlvbigp
ID09IFRleHREaXJlY3Rpb246OlJUTCAmJiBzZWxlY3Rpb25SZWN0LmlzRmlyc3RPbkxpbmUoKSkg
ewogICAgICAgICAgICAgc2VsZWN0aW9uUmVjdC5zZXRMb2dpY2FsV2lkdGgoc2VsZWN0aW9uUmVj
dC5sb2dpY2FsV2lkdGgoKSArIHNlbGVjdGlvblJlY3QubG9naWNhbExlZnQoKSAtIHNlbGVjdGlv
blJlY3QubWluWCgpKTsKICAgICAgICAgICAgIHNlbGVjdGlvblJlY3Quc2V0TG9naWNhbExlZnQo
c2VsZWN0aW9uUmVjdC5taW5YKCkpOwotICAgICAgICB9IGVsc2UgaWYgKHNlbGVjdGlvblJlY3Qu
ZGlyZWN0aW9uKCkgPT0gTFRSICYmIHNlbGVjdGlvblJlY3QuaXNMYXN0T25MaW5lKCkpCisgICAg
ICAgIH0gZWxzZSBpZiAoc2VsZWN0aW9uUmVjdC5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9u
OjpMVFIgJiYgc2VsZWN0aW9uUmVjdC5pc0xhc3RPbkxpbmUoKSkKICAgICAgICAgICAgIHNlbGVj
dGlvblJlY3Quc2V0TG9naWNhbFdpZHRoKHNlbGVjdGlvblJlY3QubWF4WCgpIC0gc2VsZWN0aW9u
UmVjdC5sb2dpY2FsTGVmdCgpKTsKICAgICB9CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdGluZy5jcHAJKHJldmlzaW9uIDIzNDUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2MiwxMCArMzYyLDEwIEBAIFRleHREaXJl
Y3Rpb24gZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9jaygKIHsKICAgICBhdXRvIGJsb2NrID0gZW5j
bG9zaW5nQmxvY2socG9zaXRpb24uY29udGFpbmVyTm9kZSgpKTsKICAgICBpZiAoIWJsb2NrKQot
ICAgICAgICByZXR1cm4gTFRSOworICAgICAgICByZXR1cm4gVGV4dERpcmVjdGlvbjo6TFRSOwog
ICAgIGF1dG8gcmVuZGVyZXIgPSBibG9jay0+cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVy
KQotICAgICAgICByZXR1cm4gTFRSOworICAgICAgICByZXR1cm4gVGV4dERpcmVjdGlvbjo6TFRS
OwogICAgIHJldHVybiByZW5kZXJlci0+c3R5bGUoKS5kaXJlY3Rpb24oKTsKIH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkocmV2aXNpb24gMjM0NTE0KQorKysgU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzYyLDkgKzE3NjIs
OSBAQCBXcml0aW5nRGlyZWN0aW9uIEVkaXRvcjo6YmFzZVdyaXRpbmdEaXJlCiAgICAgfQogCiAg
ICAgc3dpdGNoIChyZW5kZXJlci0+c3R5bGUoKS5kaXJlY3Rpb24oKSkgewotICAgIGNhc2UgTFRS
OgorICAgIGNhc2UgVGV4dERpcmVjdGlvbjo6TFRSOgogICAgICAgICByZXR1cm4gTGVmdFRvUmln
aHRXcml0aW5nRGlyZWN0aW9uOwotICAgIGNhc2UgUlRMOgorICAgIGNhc2UgVGV4dERpcmVjdGlv
bjo6UlRMOgogICAgICAgICByZXR1cm4gUmlnaHRUb0xlZnRXcml0aW5nRGlyZWN0aW9uOwogICAg
IH0KICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3Bw
CShyZXZpc2lvbiAyMzQ1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0
aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMzLDcgKzYzMyw3IEBAIHZvaWQgRnJhbWVTZWxl
Y3Rpb246OndpbGxCZU1vZGlmaWVkKEVBbHQKICAgICB9IGVsc2UgewogICAgICAgICBzd2l0Y2gg
KGRpcmVjdGlvbikgewogICAgICAgICBjYXNlIERpcmVjdGlvblJpZ2h0OgotICAgICAgICAgICAg
aWYgKGRpcmVjdGlvbk9mU2VsZWN0aW9uKCkgPT0gTFRSKQorICAgICAgICAgICAgaWYgKGRpcmVj
dGlvbk9mU2VsZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSKQogICAgICAgICAgICAgICAg
IGJhc2VJc1N0YXJ0ID0gdHJ1ZTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBi
YXNlSXNTdGFydCA9IGZhbHNlOwpAQCAtNjQyLDcgKzY0Miw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rp
b246OndpbGxCZU1vZGlmaWVkKEVBbHQKICAgICAgICAgICAgIGJhc2VJc1N0YXJ0ID0gdHJ1ZTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIERpcmVjdGlvbkxlZnQ6Ci0gICAgICAg
ICAgICBpZiAoZGlyZWN0aW9uT2ZTZWxlY3Rpb24oKSA9PSBMVFIpCisgICAgICAgICAgICBpZiAo
ZGlyZWN0aW9uT2ZTZWxlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpCiAgICAgICAgICAg
ICAgICAgYmFzZUlzU3RhcnQgPSBmYWxzZTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
ICAgICBiYXNlSXNTdGFydCA9IHRydWU7CkBAIC03MTgsMjMgKzcxOCwyMyBAQCBWaXNpYmxlUG9z
aXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeUV4CiAgICAgLy8gVGhlIGRpZmZlcmVuY2UgYmV0
d2VlbiBtb2RpZnlFeHRlbmRpbmdSaWdodCBhbmQgbW9kaWZ5RXh0ZW5kaW5nRm9yd2FyZCBpczoK
ICAgICAvLyBtb2RpZnlFeHRlbmRpbmdGb3J3YXJkIGFsd2F5cyBleHRlbmRzIGZvcndhcmQgbG9n
aWNhbGx5LgogICAgIC8vIG1vZGlmeUV4dGVuZGluZ1JpZ2h0IGJlaGF2ZXMgdGhlIHNhbWUgYXMg
bW9kaWZ5RXh0ZW5kaW5nRm9yd2FyZCBleGNlcHQgZm9yIGV4dGVuZGluZyBjaGFyYWN0ZXIgb3Ig
d29yZCwKLSAgICAvLyBpdCBleHRlbmRzIGZvcndhcmQgbG9naWNhbGx5IGlmIHRoZSBlbmNsb3Np
bmcgYmxvY2sgaXMgTFRSIGRpcmVjdGlvbiwKLSAgICAvLyBidXQgaXQgZXh0ZW5kcyBiYWNrd2Fy
ZCBsb2dpY2FsbHkgaWYgdGhlIGVuY2xvc2luZyBibG9jayBpcyBSVEwgZGlyZWN0aW9uLgorICAg
IC8vIGl0IGV4dGVuZHMgZm9yd2FyZCBsb2dpY2FsbHkgaWYgdGhlIGVuY2xvc2luZyBibG9jayBp
cyBUZXh0RGlyZWN0aW9uOjpMVFIsCisgICAgLy8gYnV0IGl0IGV4dGVuZHMgYmFja3dhcmQgbG9n
aWNhbGx5IGlmIHRoZSBlbmNsb3NpbmcgYmxvY2sgaXMgVGV4dERpcmVjdGlvbjo6UlRMLgogICAg
IHN3aXRjaCAoZ3JhbnVsYXJpdHkpIHsKICAgICBjYXNlIENoYXJhY3RlckdyYW51bGFyaXR5Ogot
ICAgICAgICBpZiAoZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9jaygpID09IExUUikKKyAgICAgICAg
aWYgKGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2soKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpCiAg
ICAgICAgICAgICBwb3MgPSBwb3MubmV4dChDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSk7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIHBvcyA9IHBvcy5wcmV2aW91cyhDYW5ub3RDcm9zc0Vk
aXRpbmdCb3VuZGFyeSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV29yZEdyYW51bGFyaXR5
OgotICAgICAgICBpZiAoZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9jaygpID09IExUUikKKyAgICAg
ICAgaWYgKGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2soKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIp
CiAgICAgICAgICAgICBwb3MgPSBuZXh0V29yZFBvc2l0aW9uRm9yUGxhdGZvcm0ocG9zKTsKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgcG9zID0gcHJldmlvdXNXb3JkUG9zaXRpb24ocG9zKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBMaW5lQm91bmRhcnk6Ci0gICAgICAgIGlmIChkaXJl
Y3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCkgPT0gTFRSKQorICAgICAgICBpZiAoZGlyZWN0aW9uT2ZF
bmNsb3NpbmdCbG9jaygpID09IFRleHREaXJlY3Rpb246OkxUUikKICAgICAgICAgICAgIHBvcyA9
IG1vZGlmeUV4dGVuZGluZ0ZvcndhcmQoZ3JhbnVsYXJpdHkpOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBwb3MgPSBtb2RpZnlFeHRlbmRpbmdCYWNrd2FyZChncmFudWxhcml0eSk7CkBAIC03
NTMsNyArNzUzLDcgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlFeAog
ICAgICAgICBicmVhazsKICAgICB9CiAjaWYgRU5BQkxFKFVTRVJTRUxFQ1RfQUxMKQotICAgIGFk
anVzdFBvc2l0aW9uRm9yVXNlclNlbGVjdEFsbChwb3MsIGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxv
Y2soKSA9PSBMVFIpOworICAgIGFkanVzdFBvc2l0aW9uRm9yVXNlclNlbGVjdEFsbChwb3MsIGRp
cmVjdGlvbk9mRW5jbG9zaW5nQmxvY2soKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpOwogI2VuZGlm
CiAgICAgcmV0dXJuIHBvczsKIH0KQEAgLTc5OCw3ICs3OTgsNyBAQCBWaXNpYmxlUG9zaXRpb24g
RnJhbWVTZWxlY3Rpb246Om1vZGlmeUV4CiAgICAgICAgIGJyZWFrOwogICAgIH0KICNpZiBFTkFC
TEUoVVNFUlNFTEVDVF9BTEwpCi0gICAgIGFkanVzdFBvc2l0aW9uRm9yVXNlclNlbGVjdEFsbChw
b3MsIGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2soKSA9PSBMVFIpOworICAgIGFkanVzdFBvc2l0
aW9uRm9yVXNlclNlbGVjdEFsbChwb3MsIGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2soKSA9PSBU
ZXh0RGlyZWN0aW9uOjpMVFIpOwogI2VuZGlmCiAgICAgcmV0dXJuIHBvczsKIH0KQEAgLTgxMSw3
ICs4MTEsNyBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeU1vCiAgICAg
c3dpdGNoIChncmFudWxhcml0eSkgewogICAgIGNhc2UgQ2hhcmFjdGVyR3JhbnVsYXJpdHk6CiAg
ICAgICAgIGlmIChpc1JhbmdlKCkpIHsKLSAgICAgICAgICAgIGlmIChkaXJlY3Rpb25PZlNlbGVj
dGlvbigpID09IExUUikKKyAgICAgICAgICAgIGlmIChkaXJlY3Rpb25PZlNlbGVjdGlvbigpID09
IFRleHREaXJlY3Rpb246OkxUUikKICAgICAgICAgICAgICAgICBwb3MgPSBWaXNpYmxlUG9zaXRp
b24obV9zZWxlY3Rpb24uZW5kKCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpOwogICAgICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgICAgIHBvcyA9IFZpc2libGVQb3NpdGlvbihtX3NlbGVjdGlv
bi5zdGFydCgpLCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKTsKQEAgLTkzNSwyMyArOTM1LDIzIEBA
IFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5RXgKICAgICAvLyBUaGUgZGlm
ZmVyZW5jZSBiZXR3ZWVuIG1vZGlmeUV4dGVuZGluZ0xlZnQgYW5kIG1vZGlmeUV4dGVuZGluZ0Jh
Y2t3YXJkIGlzOgogICAgIC8vIG1vZGlmeUV4dGVuZGluZ0JhY2t3YXJkIGFsd2F5cyBleHRlbmRz
IGJhY2t3YXJkIGxvZ2ljYWxseS4KICAgICAvLyBtb2RpZnlFeHRlbmRpbmdMZWZ0IGJlaGF2ZXMg
dGhlIHNhbWUgYXMgbW9kaWZ5RXh0ZW5kaW5nQmFja3dhcmQgZXhjZXB0IGZvciBleHRlbmRpbmcg
Y2hhcmFjdGVyIG9yIHdvcmQsCi0gICAgLy8gaXQgZXh0ZW5kcyBiYWNrd2FyZCBsb2dpY2FsbHkg
aWYgdGhlIGVuY2xvc2luZyBibG9jayBpcyBMVFIgZGlyZWN0aW9uLAotICAgIC8vIGJ1dCBpdCBl
eHRlbmRzIGZvcndhcmQgbG9naWNhbGx5IGlmIHRoZSBlbmNsb3NpbmcgYmxvY2sgaXMgUlRMIGRp
cmVjdGlvbi4KKyAgICAvLyBpdCBleHRlbmRzIGJhY2t3YXJkIGxvZ2ljYWxseSBpZiB0aGUgZW5j
bG9zaW5nIGJsb2NrIGlzIFRleHREaXJlY3Rpb246OkxUUiwKKyAgICAvLyBidXQgaXQgZXh0ZW5k
cyBmb3J3YXJkIGxvZ2ljYWxseSBpZiB0aGUgZW5jbG9zaW5nIGJsb2NrIGlzIFRleHREaXJlY3Rp
b246OlJUTC4KICAgICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7CiAgICAgY2FzZSBDaGFyYWN0ZXJH
cmFudWxhcml0eToKLSAgICAgICAgaWYgKGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2soKSA9PSBM
VFIpCisgICAgICAgIGlmIChkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCkgPT0gVGV4dERpcmVj
dGlvbjo6TFRSKQogICAgICAgICAgICAgcG9zID0gcG9zLnByZXZpb3VzKENhbm5vdENyb3NzRWRp
dGluZ0JvdW5kYXJ5KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcG9zID0gcG9zLm5leHQo
Q2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdv
cmRHcmFudWxhcml0eToKLSAgICAgICAgaWYgKGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2soKSA9
PSBMVFIpCisgICAgICAgIGlmIChkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCkgPT0gVGV4dERp
cmVjdGlvbjo6TFRSKQogICAgICAgICAgICAgcG9zID0gcHJldmlvdXNXb3JkUG9zaXRpb24ocG9z
KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcG9zID0gbmV4dFdvcmRQb3NpdGlvbkZvclBs
YXRmb3JtKHBvcyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTGluZUJvdW5kYXJ5OgotICAg
ICAgICBpZiAoZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9jaygpID09IExUUikKKyAgICAgICAgaWYg
KGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2soKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpCiAgICAg
ICAgICAgICBwb3MgPSBtb2RpZnlFeHRlbmRpbmdCYWNrd2FyZChncmFudWxhcml0eSk7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIHBvcyA9IG1vZGlmeUV4dGVuZGluZ0ZvcndhcmQoZ3JhbnVs
YXJpdHkpOwpAQCAtOTY5LDcgKzk2OSw3IEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlv
bjo6bW9kaWZ5RXgKICAgICAgICAgYnJlYWs7CiAgICAgfQogI2lmIEVOQUJMRShVU0VSU0VMRUNU
X0FMTCkKLSAgICBhZGp1c3RQb3NpdGlvbkZvclVzZXJTZWxlY3RBbGwocG9zLCAhKGRpcmVjdGlv
bk9mRW5jbG9zaW5nQmxvY2soKSA9PSBMVFIpKTsKKyAgICBhZGp1c3RQb3NpdGlvbkZvclVzZXJT
ZWxlY3RBbGwocG9zLCAhKGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2soKSA9PSBUZXh0RGlyZWN0
aW9uOjpMVFIpKTsKICNlbmRpZgogICAgIHJldHVybiBwb3M7CiB9CkBAIC0xMDE5LDcgKzEwMTks
NyBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeUV4CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KICNpZiBFTkFCTEUoVVNFUlNFTEVDVF9BTEwpCi0gICAgYWRqdXN0UG9zaXRp
b25Gb3JVc2VyU2VsZWN0QWxsKHBvcywgIShkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCkgPT0g
TFRSKSk7CisgICAgYWRqdXN0UG9zaXRpb25Gb3JVc2VyU2VsZWN0QWxsKHBvcywgIShkaXJlY3Rp
b25PZkVuY2xvc2luZ0Jsb2NrKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSKSk7CiAjZW5kaWYKICAg
ICByZXR1cm4gcG9zOwogfQpAQCAtMTAzMiw3ICsxMDMyLDcgQEAgVmlzaWJsZVBvc2l0aW9uIEZy
YW1lU2VsZWN0aW9uOjptb2RpZnlNbwogICAgIHN3aXRjaCAoZ3JhbnVsYXJpdHkpIHsKICAgICBj
YXNlIENoYXJhY3RlckdyYW51bGFyaXR5OgogICAgICAgICBpZiAoaXNSYW5nZSgpKQotICAgICAg
ICAgICAgaWYgKGRpcmVjdGlvbk9mU2VsZWN0aW9uKCkgPT0gTFRSKQorICAgICAgICAgICAgaWYg
KGRpcmVjdGlvbk9mU2VsZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSKQogICAgICAgICAg
ICAgICAgIHBvcyA9IFZpc2libGVQb3NpdGlvbihtX3NlbGVjdGlvbi5zdGFydCgpLCBtX3NlbGVj
dGlvbi5hZmZpbml0eSgpKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBwb3Mg
PSBWaXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24uZW5kKCksIG1fc2VsZWN0aW9uLmFmZmluaXR5
KCkpOwpAQCAtMTE1NCw3ICsxMTU0LDcgQEAgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQgRnJhbWVT
ZWxlY3Rpb246OgogICAgIGJvb2wgZmxpcCA9IGZhbHNlOwogICAgIGlmIChhbHRlciA9PSBGcmFt
ZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUpIHsKICAgICAgICAgaW50ZW50LnR5cGUgPSBBWFRl
eHRTdGF0ZUNoYW5nZVR5cGVTZWxlY3Rpb25Nb3ZlOwotICAgICAgICBmbGlwID0gaXNSYW5nZSgp
ICYmIGRpcmVjdGlvbk9mU2VsZWN0aW9uKCkgPT0gUlRMOworICAgICAgICBmbGlwID0gaXNSYW5n
ZSgpICYmIGRpcmVjdGlvbk9mU2VsZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6UlRMOwogICAg
IH0gZWxzZQogICAgICAgICBpbnRlbnQudHlwZSA9IEFYVGV4dFN0YXRlQ2hhbmdlVHlwZVNlbGVj
dGlvbkV4dGVuZDsKICAgICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7CkBAIC0xMzc1LDcgKzEzNzUs
NyBAQCBib29sIEZyYW1lU2VsZWN0aW9uOjptb2RpZnkoRUFsdGVyYXRpb24gCiAgICAgICAgICAg
ICBzZXRFeHRlbnQocG9zaXRpb24sIHVzZXJUcmlnZ2VyZWQpOwogICAgICAgICBlbHNlIHsKICAg
ICAgICAgICAgIFRleHREaXJlY3Rpb24gdGV4dERpcmVjdGlvbiA9IGRpcmVjdGlvbk9mRW5jbG9z
aW5nQmxvY2soKTsKLSAgICAgICAgICAgIGlmIChkaXJlY3Rpb24gPT0gRGlyZWN0aW9uRm9yd2Fy
ZCB8fCAodGV4dERpcmVjdGlvbiA9PSBMVFIgJiYgZGlyZWN0aW9uID09IERpcmVjdGlvblJpZ2h0
KSB8fCAodGV4dERpcmVjdGlvbiA9PSBSVEwgJiYgZGlyZWN0aW9uID09IERpcmVjdGlvbkxlZnQp
KQorICAgICAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBEaXJlY3Rpb25Gb3J3YXJkIHx8ICh0ZXh0
RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUiAmJiBkaXJlY3Rpb24gPT0gRGlyZWN0aW9u
UmlnaHQpIHx8ICh0ZXh0RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OlJUTCAmJiBkaXJlY3Rp
b24gPT0gRGlyZWN0aW9uTGVmdCkpCiAgICAgICAgICAgICAgICAgc2V0RW5kKHBvc2l0aW9uLCB1
c2VyVHJpZ2dlcmVkKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBzZXRTdGFy
dChwb3NpdGlvbiwgdXNlclRyaWdnZXJlZCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1Zpc2libGVQb3NpdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9WaXNpYmxlUG9zaXRpb24uY3BwCShyZXZpc2lvbiAyMzQ1MTQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNyw3ICsx
MjcsNyBAQCBQb3NpdGlvbiBWaXNpYmxlUG9zaXRpb246OmxlZnRWaXN1YWxseURpCiAgICAgICAg
IGludCBvZmZzZXQ7CiAgICAgICAgIHAuZ2V0SW5saW5lQm94QW5kT2Zmc2V0KG1fYWZmaW5pdHks
IHByaW1hcnlEaXJlY3Rpb24sIGJveCwgb2Zmc2V0KTsKICAgICAgICAgaWYgKCFib3gpCi0gICAg
ICAgICAgICByZXR1cm4gcHJpbWFyeURpcmVjdGlvbiA9PSBMVFIgPyBwcmV2aW91c1Zpc3VhbGx5
RGlzdGluY3RDYW5kaWRhdGUobV9kZWVwUG9zaXRpb24pIDogbmV4dFZpc3VhbGx5RGlzdGluY3RD
YW5kaWRhdGUobV9kZWVwUG9zaXRpb24pOworICAgICAgICAgICAgcmV0dXJuIHByaW1hcnlEaXJl
Y3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gcHJldmlvdXNWaXN1YWxseURpc3RpbmN0Q2Fu
ZGlkYXRlKG1fZGVlcFBvc2l0aW9uKSA6IG5leHRWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1f
ZGVlcFBvc2l0aW9uKTsKIAogICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gJmJveC0+
cmVuZGVyZXIoKTsKIApAQCAtMTM4LDcgKzEzOCw3IEBAIFBvc2l0aW9uIFZpc2libGVQb3NpdGlv
bjo6bGVmdFZpc3VhbGx5RGkKICAgICAgICAgICAgIGlmICghcmVuZGVyZXItPm5vZGUoKSkgewog
ICAgICAgICAgICAgICAgIGJveCA9IGJveC0+cHJldkxlYWZDaGlsZCgpOwogICAgICAgICAgICAg
ICAgIGlmICghYm94KQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJpbWFyeURpcmVjdGlv
biA9PSBMVFIgPyBwcmV2aW91c1Zpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUobV9kZWVwUG9zaXRp
b24pIDogbmV4dFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUobV9kZWVwUG9zaXRpb24pOworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gcHJpbWFyeURpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9u
OjpMVFIgPyBwcmV2aW91c1Zpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUobV9kZWVwUG9zaXRpb24p
IDogbmV4dFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUobV9kZWVwUG9zaXRpb24pOwogICAgICAg
ICAgICAgICAgIHJlbmRlcmVyID0gJmJveC0+cmVuZGVyZXIoKTsKICAgICAgICAgICAgICAgICBv
ZmZzZXQgPSBib3gtPmNhcmV0UmlnaHRtb3N0T2Zmc2V0KCk7CiAgICAgICAgICAgICAgICAgY29u
dGludWU7CkBAIC0xNTYsNyArMTU2LDcgQEAgUG9zaXRpb24gVmlzaWJsZVBvc2l0aW9uOjpsZWZ0
VmlzdWFsbHlEaQogICAgICAgICAgICAgICAgIC8vIE92ZXJzaG90IHRvIHRoZSBsZWZ0LgogICAg
ICAgICAgICAgICAgIElubGluZUJveCogcHJldkJveCA9IGJveC0+cHJldkxlYWZDaGlsZElnbm9y
aW5nTGluZUJyZWFrKCk7CiAgICAgICAgICAgICAgICAgaWYgKCFwcmV2Qm94KSB7Ci0gICAgICAg
ICAgICAgICAgICAgIFBvc2l0aW9uIHBvc2l0aW9uT25MZWZ0ID0gcHJpbWFyeURpcmVjdGlvbiA9
PSBMVFIgPyBwcmV2aW91c1Zpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUobV9kZWVwUG9zaXRpb24p
IDogbmV4dFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUobV9kZWVwUG9zaXRpb24pOworICAgICAg
ICAgICAgICAgICAgICBQb3NpdGlvbiBwb3NpdGlvbk9uTGVmdCA9IHByaW1hcnlEaXJlY3Rpb24g
PT0gVGV4dERpcmVjdGlvbjo6TFRSID8gcHJldmlvdXNWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRl
KG1fZGVlcFBvc2l0aW9uKSA6IG5leHRWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBv
c2l0aW9uKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHBvc2l0aW9uT25MZWZ0LmlzTnVsbCgp
KQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFBvc2l0aW9uKCk7CiAKQEAgLTE4Mywx
MCArMTgzLDEwIEBAIFBvc2l0aW9uIFZpc2libGVQb3NpdGlvbjo6bGVmdFZpc3VhbGx5RGkKICAg
ICAgICAgICAgIGlmIChib3gtPmRpcmVjdGlvbigpID09IHByaW1hcnlEaXJlY3Rpb24pIHsKICAg
ICAgICAgICAgICAgICBpZiAoIXByZXZCb3gpIHsKICAgICAgICAgICAgICAgICAgICAgSW5saW5l
Qm94KiBsb2dpY2FsU3RhcnQgPSBudWxscHRyOwotICAgICAgICAgICAgICAgICAgICBpZiAocHJp
bWFyeURpcmVjdGlvbiA9PSBMVFIgPyBib3gtPnJvb3QoKS5nZXRMb2dpY2FsU3RhcnRCb3hXaXRo
Tm9kZShsb2dpY2FsU3RhcnQpIDogYm94LT5yb290KCkuZ2V0TG9naWNhbEVuZEJveFdpdGhOb2Rl
KGxvZ2ljYWxTdGFydCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHByaW1hcnlEaXJlY3Rp
b24gPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gYm94LT5yb290KCkuZ2V0TG9naWNhbFN0YXJ0Qm94
V2l0aE5vZGUobG9naWNhbFN0YXJ0KSA6IGJveC0+cm9vdCgpLmdldExvZ2ljYWxFbmRCb3hXaXRo
Tm9kZShsb2dpY2FsU3RhcnQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBib3ggPSBsb2dp
Y2FsU3RhcnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJlciA9ICZib3gtPnJlbmRl
cmVyKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgPSBwcmltYXJ5RGlyZWN0aW9u
ID09IExUUiA/IGJveC0+Y2FyZXRNaW5PZmZzZXQoKSA6IGJveC0+Y2FyZXRNYXhPZmZzZXQoKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCA9IHByaW1hcnlEaXJlY3Rpb24gPT0gVGV4
dERpcmVjdGlvbjo6TFRSID8gYm94LT5jYXJldE1pbk9mZnNldCgpIDogYm94LT5jYXJldE1heE9m
ZnNldCgpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgIH0KQEAgLTI0Nyw3ICsyNDcsNyBAQCBQb3NpdGlvbiBWaXNpYmxl
UG9zaXRpb246OmxlZnRWaXN1YWxseURpCiAgICAgICAgICAgICAgICAgICAgIGxldmVsID0gYm94
LT5iaWRpTGV2ZWwoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgcmVuZGVy
ZXIgPSAmYm94LT5yZW5kZXJlcigpOwotICAgICAgICAgICAgICAgIG9mZnNldCA9IHByaW1hcnlE
aXJlY3Rpb24gPT0gTFRSID8gYm94LT5jYXJldE1pbk9mZnNldCgpIDogYm94LT5jYXJldE1heE9m
ZnNldCgpOworICAgICAgICAgICAgICAgIG9mZnNldCA9IHByaW1hcnlEaXJlY3Rpb24gPT0gVGV4
dERpcmVjdGlvbjo6TFRSID8gYm94LT5jYXJldE1pbk9mZnNldCgpIDogYm94LT5jYXJldE1heE9m
ZnNldCgpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAg
LTI5Nyw3ICsyOTcsNyBAQCBQb3NpdGlvbiBWaXNpYmxlUG9zaXRpb246OnJpZ2h0VmlzdWFsbHlE
CiAgICAgICAgIGludCBvZmZzZXQ7CiAgICAgICAgIHAuZ2V0SW5saW5lQm94QW5kT2Zmc2V0KG1f
YWZmaW5pdHksIHByaW1hcnlEaXJlY3Rpb24sIGJveCwgb2Zmc2V0KTsKICAgICAgICAgaWYgKCFi
b3gpCi0gICAgICAgICAgICByZXR1cm4gcHJpbWFyeURpcmVjdGlvbiA9PSBMVFIgPyBuZXh0Vmlz
dWFsbHlEaXN0aW5jdENhbmRpZGF0ZShtX2RlZXBQb3NpdGlvbikgOiBwcmV2aW91c1Zpc3VhbGx5
RGlzdGluY3RDYW5kaWRhdGUobV9kZWVwUG9zaXRpb24pOworICAgICAgICAgICAgcmV0dXJuIHBy
aW1hcnlEaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gbmV4dFZpc3VhbGx5RGlzdGlu
Y3RDYW5kaWRhdGUobV9kZWVwUG9zaXRpb24pIDogcHJldmlvdXNWaXN1YWxseURpc3RpbmN0Q2Fu
ZGlkYXRlKG1fZGVlcFBvc2l0aW9uKTsKIAogICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVy
ID0gJmJveC0+cmVuZGVyZXIoKTsKIApAQCAtMzA4LDcgKzMwOCw3IEBAIFBvc2l0aW9uIFZpc2li
bGVQb3NpdGlvbjo6cmlnaHRWaXN1YWxseUQKICAgICAgICAgICAgIGlmICghcmVuZGVyZXItPm5v
ZGUoKSkgewogICAgICAgICAgICAgICAgIGJveCA9IGJveC0+bmV4dExlYWZDaGlsZCgpOwogICAg
ICAgICAgICAgICAgIGlmICghYm94KQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJpbWFy
eURpcmVjdGlvbiA9PSBMVFIgPyBuZXh0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZShtX2RlZXBQ
b3NpdGlvbikgOiBwcmV2aW91c1Zpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUobV9kZWVwUG9zaXRp
b24pOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJpbWFyeURpcmVjdGlvbiA9PSBUZXh0
RGlyZWN0aW9uOjpMVFIgPyBuZXh0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZShtX2RlZXBQb3Np
dGlvbikgOiBwcmV2aW91c1Zpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUobV9kZWVwUG9zaXRpb24p
OwogICAgICAgICAgICAgICAgIHJlbmRlcmVyID0gJmJveC0+cmVuZGVyZXIoKTsKICAgICAgICAg
ICAgICAgICBvZmZzZXQgPSBib3gtPmNhcmV0TGVmdG1vc3RPZmZzZXQoKTsKICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKQEAgLTMyNiw3ICszMjYsNyBAQCBQb3NpdGlvbiBWaXNpYmxlUG9zaXRp
b246OnJpZ2h0VmlzdWFsbHlECiAgICAgICAgICAgICAgICAgLy8gT3ZlcnNob3QgdG8gdGhlIHJp
Z2h0LgogICAgICAgICAgICAgICAgIElubGluZUJveCogbmV4dEJveCA9IGJveC0+bmV4dExlYWZD
aGlsZElnbm9yaW5nTGluZUJyZWFrKCk7CiAgICAgICAgICAgICAgICAgaWYgKCFuZXh0Qm94KSB7
Ci0gICAgICAgICAgICAgICAgICAgIFBvc2l0aW9uIHBvc2l0aW9uT25SaWdodCA9IHByaW1hcnlE
aXJlY3Rpb24gPT0gTFRSID8gbmV4dFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUobV9kZWVwUG9z
aXRpb24pIDogcHJldmlvdXNWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9u
KTsKKyAgICAgICAgICAgICAgICAgICAgUG9zaXRpb24gcG9zaXRpb25PblJpZ2h0ID0gcHJpbWFy
eURpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBuZXh0VmlzdWFsbHlEaXN0aW5jdENh
bmRpZGF0ZShtX2RlZXBQb3NpdGlvbikgOiBwcmV2aW91c1Zpc3VhbGx5RGlzdGluY3RDYW5kaWRh
dGUobV9kZWVwUG9zaXRpb24pOwogICAgICAgICAgICAgICAgICAgICBpZiAocG9zaXRpb25PblJp
Z2h0LmlzTnVsbCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFBvc2l0aW9uKCk7
CiAKQEAgLTM1MywxMCArMzUzLDEwIEBAIFBvc2l0aW9uIFZpc2libGVQb3NpdGlvbjo6cmlnaHRW
aXN1YWxseUQKICAgICAgICAgICAgIGlmIChib3gtPmRpcmVjdGlvbigpID09IHByaW1hcnlEaXJl
Y3Rpb24pIHsKICAgICAgICAgICAgICAgICBpZiAoIW5leHRCb3gpIHsKICAgICAgICAgICAgICAg
ICAgICAgSW5saW5lQm94KiBsb2dpY2FsRW5kID0gbnVsbHB0cjsKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKHByaW1hcnlEaXJlY3Rpb24gPT0gTFRSID8gYm94LT5yb290KCkuZ2V0TG9naWNhbEVu
ZEJveFdpdGhOb2RlKGxvZ2ljYWxFbmQpIDogYm94LT5yb290KCkuZ2V0TG9naWNhbFN0YXJ0Qm94
V2l0aE5vZGUobG9naWNhbEVuZCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHByaW1hcnlE
aXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gYm94LT5yb290KCkuZ2V0TG9naWNhbEVu
ZEJveFdpdGhOb2RlKGxvZ2ljYWxFbmQpIDogYm94LT5yb290KCkuZ2V0TG9naWNhbFN0YXJ0Qm94
V2l0aE5vZGUobG9naWNhbEVuZCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGJveCA9IGxv
Z2ljYWxFbmQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJlciA9ICZib3gtPnJlbmRl
cmVyKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgPSBwcmltYXJ5RGlyZWN0aW9u
ID09IExUUiA/IGJveC0+Y2FyZXRNYXhPZmZzZXQoKSA6IGJveC0+Y2FyZXRNaW5PZmZzZXQoKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCA9IHByaW1hcnlEaXJlY3Rpb24gPT0gVGV4
dERpcmVjdGlvbjo6TFRSID8gYm94LT5jYXJldE1heE9mZnNldCgpIDogYm94LT5jYXJldE1pbk9m
ZnNldCgpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgIH0KQEAgLTQyMCw3ICs0MjAsNyBAQCBQb3NpdGlvbiBWaXNpYmxl
UG9zaXRpb246OnJpZ2h0VmlzdWFsbHlECiAgICAgICAgICAgICAgICAgICAgIGxldmVsID0gYm94
LT5iaWRpTGV2ZWwoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgcmVuZGVy
ZXIgPSAmYm94LT5yZW5kZXJlcigpOwotICAgICAgICAgICAgICAgIG9mZnNldCA9IHByaW1hcnlE
aXJlY3Rpb24gPT0gTFRSID8gYm94LT5jYXJldE1heE9mZnNldCgpIDogYm94LT5jYXJldE1pbk9m
ZnNldCgpOworICAgICAgICAgICAgICAgIG9mZnNldCA9IHByaW1hcnlEaXJlY3Rpb24gPT0gVGV4
dERpcmVjdGlvbjo6TFRSID8gYm94LT5jYXJldE1heE9mZnNldCgpIDogYm94LT5jYXJldE1pbk9m
ZnNldCgpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAJKHJldmlzaW9uIDIzNDUx
NCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDA4LDcgKzQwOCw3IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gdmlzdWFsV29y
ZFBvc2l0aW8KIAogICAgICAgICBib29sIGlzV29yZEJyZWFrOwogICAgICAgICBib29sIGJveEhh
c1NhbWVEaXJlY3Rpb25hbGl0eUFzQmxvY2sgPSBib3gtPmRpcmVjdGlvbigpID09IGJsb2NrRGly
ZWN0aW9uOwotICAgICAgICBib29sIG1vdmluZ0JhY2t3YXJkID0gKGRpcmVjdGlvbiA9PSBNb3Zl
TGVmdCAmJiBib3gtPmRpcmVjdGlvbigpID09IExUUikgfHwgKGRpcmVjdGlvbiA9PSBNb3ZlUmln
aHQgJiYgYm94LT5kaXJlY3Rpb24oKSA9PSBSVEwpOworICAgICAgICBib29sIG1vdmluZ0JhY2t3
YXJkID0gKGRpcmVjdGlvbiA9PSBNb3ZlTGVmdCAmJiBib3gtPmRpcmVjdGlvbigpID09IFRleHRE
aXJlY3Rpb246OkxUUikgfHwgKGRpcmVjdGlvbiA9PSBNb3ZlUmlnaHQgJiYgYm94LT5kaXJlY3Rp
b24oKSA9PSBUZXh0RGlyZWN0aW9uOjpSVEwpOwogICAgICAgICBpZiAoKHNraXBzU3BhY2VXaGVu
TW92aW5nUmlnaHQgJiYgYm94SGFzU2FtZURpcmVjdGlvbmFsaXR5QXNCbG9jaykKICAgICAgICAg
ICAgIHx8ICghc2tpcHNTcGFjZVdoZW5Nb3ZpbmdSaWdodCAmJiBtb3ZpbmdCYWNrd2FyZCkpIHsK
ICAgICAgICAgICAgIGJvb2wgbG9naWNhbFN0YXJ0SW5SZW5kZXJlciA9IG9mZnNldEluQm94ID09
IHN0YXRpY19jYXN0PGludD4odGV4dEJveC5zdGFydCgpKSAmJiBwcmV2aW91c0JveEluRGlmZmVy
ZW50TGluZTsKQEAgLTQzOSw3ICs0MzksNyBAQCBWaXNpYmxlUG9zaXRpb24gbGVmdFdvcmRQb3Np
dGlvbihjb25zdCBWCiAgICAgLy8gRklYTUU6IEhvdyBzaG91bGQgd2UgaGFuZGxlIGEgbm9uLWVk
aXRhYmxlIHBvc2l0aW9uPwogICAgIGlmIChsZWZ0V29yZEJyZWFrLmlzTnVsbCgpICYmIGlzRWRp
dGFibGVQb3NpdGlvbih2aXNpYmxlUG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKSkpIHsKICAgICAg
ICAgVGV4dERpcmVjdGlvbiBibG9ja0RpcmVjdGlvbiA9IGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxv
Y2sodmlzaWJsZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCkpOwotICAgICAgICBsZWZ0V29yZEJy
ZWFrID0gYmxvY2tEaXJlY3Rpb24gPT0gTFRSID8gc3RhcnRPZkVkaXRhYmxlQ29udGVudCh2aXNp
YmxlUG9zaXRpb24pIDogZW5kT2ZFZGl0YWJsZUNvbnRlbnQodmlzaWJsZVBvc2l0aW9uKTsKKyAg
ICAgICAgbGVmdFdvcmRCcmVhayA9IGJsb2NrRGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxU
UiA/IHN0YXJ0T2ZFZGl0YWJsZUNvbnRlbnQodmlzaWJsZVBvc2l0aW9uKSA6IGVuZE9mRWRpdGFi
bGVDb250ZW50KHZpc2libGVQb3NpdGlvbik7CiAgICAgfQogICAgIHJldHVybiBsZWZ0V29yZEJy
ZWFrOwogfQpAQCAtNDUyLDcgKzQ1Miw3IEBAIFZpc2libGVQb3NpdGlvbiByaWdodFdvcmRQb3Np
dGlvbihjb25zdCAKICAgICAvLyBGSVhNRTogSG93IHNob3VsZCB3ZSBoYW5kbGUgYSBub24tZWRp
dGFibGUgcG9zaXRpb24/CiAgICAgaWYgKHJpZ2h0V29yZEJyZWFrLmlzTnVsbCgpICYmIGlzRWRp
dGFibGVQb3NpdGlvbih2aXNpYmxlUG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKSkpIHsKICAgICAg
ICAgVGV4dERpcmVjdGlvbiBibG9ja0RpcmVjdGlvbiA9IGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxv
Y2sodmlzaWJsZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCkpOwotICAgICAgICByaWdodFdvcmRC
cmVhayA9IGJsb2NrRGlyZWN0aW9uID09IExUUiA/IGVuZE9mRWRpdGFibGVDb250ZW50KHZpc2li
bGVQb3NpdGlvbikgOiBzdGFydE9mRWRpdGFibGVDb250ZW50KHZpc2libGVQb3NpdGlvbik7Cisg
ICAgICAgIHJpZ2h0V29yZEJyZWFrID0gYmxvY2tEaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6
TFRSID8gZW5kT2ZFZGl0YWJsZUNvbnRlbnQodmlzaWJsZVBvc2l0aW9uKSA6IHN0YXJ0T2ZFZGl0
YWJsZUNvbnRlbnQodmlzaWJsZVBvc2l0aW9uKTsKICAgICB9CiAgICAgcmV0dXJuIHJpZ2h0V29y
ZEJyZWFrOwogfQpAQCAtMTUyOSwxMiArMTUyOSwxMiBAQCBib29sIGlzRW5kT2ZFZGl0YWJsZU9y
Tm9uRWRpdGFibGVDb250ZW50CiAKIFZpc2libGVQb3NpdGlvbiBsZWZ0Qm91bmRhcnlPZkxpbmUo
Y29uc3QgVmlzaWJsZVBvc2l0aW9uJiBjLCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiwgYm9vbCog
cmVhY2hlZEJvdW5kYXJ5KQogewotICAgIHJldHVybiBkaXJlY3Rpb24gPT0gTFRSID8gbG9naWNh
bFN0YXJ0T2ZMaW5lKGMsIHJlYWNoZWRCb3VuZGFyeSkgOiBsb2dpY2FsRW5kT2ZMaW5lKGMsIHJl
YWNoZWRCb3VuZGFyeSk7CisgICAgcmV0dXJuIGRpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpM
VFIgPyBsb2dpY2FsU3RhcnRPZkxpbmUoYywgcmVhY2hlZEJvdW5kYXJ5KSA6IGxvZ2ljYWxFbmRP
ZkxpbmUoYywgcmVhY2hlZEJvdW5kYXJ5KTsKIH0KIAogVmlzaWJsZVBvc2l0aW9uIHJpZ2h0Qm91
bmRhcnlPZkxpbmUoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBjLCBUZXh0RGlyZWN0aW9uIGRpcmVj
dGlvbiwgYm9vbCogcmVhY2hlZEJvdW5kYXJ5KQogewotICAgIHJldHVybiBkaXJlY3Rpb24gPT0g
TFRSID8gbG9naWNhbEVuZE9mTGluZShjLCByZWFjaGVkQm91bmRhcnkpIDogbG9naWNhbFN0YXJ0
T2ZMaW5lKGMsIHJlYWNoZWRCb3VuZGFyeSk7CisgICAgcmV0dXJuIGRpcmVjdGlvbiA9PSBUZXh0
RGlyZWN0aW9uOjpMVFIgPyBsb2dpY2FsRW5kT2ZMaW5lKGMsIHJlYWNoZWRCb3VuZGFyeSkgOiBs
b2dpY2FsU3RhcnRPZkxpbmUoYywgcmVhY2hlZEJvdW5kYXJ5KTsKIH0KIAogc3RhdGljIGJvb2wg
ZGlyZWN0aW9uSXNEb3duc3RyZWFtKFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24pCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAkocmV2aXNpb24gMjM0NTE0KQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwMCw3
ICs4MDAsNyBAQCBUZXh0RGlyZWN0aW9uIEhUTUxFbGVtZW50OjpkaXJlY3Rpb25hbGl0CiB7CiAg
ICAgaWYgKCEoc2VsZk9yQW5jZXN0b3JIYXNEaXJBdXRvQXR0cmlidXRlKCkgJiYgaGFzRGlyZWN0
aW9uQXV0bygpKSkgewogICAgICAgICBpc0F1dG8gPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuIExU
UjsKKyAgICAgICAgcmV0dXJuIFRleHREaXJlY3Rpb246OkxUUjsKICAgICB9CiAKICAgICBpc0F1
dG8gPSB0cnVlOwpAQCAtODE1LDcgKzgxNSw3IEBAIFRleHREaXJlY3Rpb24gSFRNTEVsZW1lbnQ6
OmRpcmVjdGlvbmFsaXQKICAgICAgICAgVUNoYXJEaXJlY3Rpb24gdGV4dERpcmVjdGlvbiA9IHRl
eHRFbGVtZW50LnZhbHVlKCkuZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oJmhhc1N0cm9uZ0RpcmVj
dGlvbmFsaXR5KTsKICAgICAgICAgaWYgKHN0cm9uZ0RpcmVjdGlvbmFsaXR5VGV4dE5vZGUpCiAg
ICAgICAgICAgICAqc3Ryb25nRGlyZWN0aW9uYWxpdHlUZXh0Tm9kZSA9IGhhc1N0cm9uZ0RpcmVj
dGlvbmFsaXR5ID8gJnRleHRFbGVtZW50IDogbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuICh0ZXh0
RGlyZWN0aW9uID09IFVfTEVGVF9UT19SSUdIVCkgPyBMVFIgOiBSVEw7CisgICAgICAgIHJldHVy
biAodGV4dERpcmVjdGlvbiA9PSBVX0xFRlRfVE9fUklHSFQpID8gVGV4dERpcmVjdGlvbjo6TFRS
IDogVGV4dERpcmVjdGlvbjo6UlRMOwogICAgIH0KIAogICAgIFJlZlB0cjxOb2RlPiBub2RlID0g
Zmlyc3RDaGlsZCgpOwpAQCAtODQyLDE0ICs4NDIsMTQgQEAgVGV4dERpcmVjdGlvbiBIVE1MRWxl
bWVudDo6ZGlyZWN0aW9uYWxpdAogICAgICAgICAgICAgaWYgKGhhc1N0cm9uZ0RpcmVjdGlvbmFs
aXR5KSB7CiAgICAgICAgICAgICAgICAgaWYgKHN0cm9uZ0RpcmVjdGlvbmFsaXR5VGV4dE5vZGUp
CiAgICAgICAgICAgICAgICAgICAgICpzdHJvbmdEaXJlY3Rpb25hbGl0eVRleHROb2RlID0gbm9k
ZS5nZXQoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gKHRleHREaXJlY3Rpb24gPT0gVV9MRUZU
X1RPX1JJR0hUKSA/IExUUiA6IFJUTDsKKyAgICAgICAgICAgICAgICByZXR1cm4gKHRleHREaXJl
Y3Rpb24gPT0gVV9MRUZUX1RPX1JJR0hUKSA/IFRleHREaXJlY3Rpb246OkxUUiA6IFRleHREaXJl
Y3Rpb246OlJUTDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBub2RlID0gTm9k
ZVRyYXZlcnNhbDo6bmV4dCgqbm9kZSwgdGhpcyk7CiAgICAgfQogICAgIGlmIChzdHJvbmdEaXJl
Y3Rpb25hbGl0eVRleHROb2RlKQogICAgICAgICAqc3Ryb25nRGlyZWN0aW9uYWxpdHlUZXh0Tm9k
ZSA9IG51bGxwdHI7Ci0gICAgcmV0dXJuIExUUjsKKyAgICByZXR1cm4gVGV4dERpcmVjdGlvbjo6
TFRSOwogfQogCiB2b2lkIEhUTUxFbGVtZW50OjpkaXJBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0
b21pY1N0cmluZyYgdmFsdWUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5jcHAJKHJldmlzaW9uIDIzNDUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElu
cHV0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwOTgsNyArMjA5OCw3IEBAIGJvb2wg
SFRNTElucHV0RWxlbWVudDo6c2V0dXBEYXRlVGltZUNob28KICAgICBlbHNlCiAgICAgICAgIHBh
cmFtZXRlcnMuYW5jaG9yUmVjdEluUm9vdFZpZXcgPSBJbnRSZWN0KCk7CiAgICAgcGFyYW1ldGVy
cy5jdXJyZW50VmFsdWUgPSB2YWx1ZSgpOwotICAgIHBhcmFtZXRlcnMuaXNBbmNob3JFbGVtZW50
UlRMID0gY29tcHV0ZWRTdHlsZSgpLT5kaXJlY3Rpb24oKSA9PSBSVEw7CisgICAgcGFyYW1ldGVy
cy5pc0FuY2hvckVsZW1lbnRSVEwgPSBjb21wdXRlZFN0eWxlKCktPmRpcmVjdGlvbigpID09IFRl
eHREaXJlY3Rpb246OlJUTDsKICNpZiBFTkFCTEUoREFUQUxJU1RfRUxFTUVOVCkKICAgICBpZiAo
YXV0byBkYXRhTGlzdCA9IHRoaXMtPmRhdGFMaXN0KCkpIHsKICAgICAgICAgUmVmPEhUTUxDb2xs
ZWN0aW9uPiBvcHRpb25zID0gZGF0YUxpc3QtPm9wdGlvbnMoKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCShyZXZpc2lv
biAyMzQ1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzc1LDcgKzc3NSw3IEBAIFN0cmluZyBIVE1MVGV4
dEZvcm1Db250cm9sRWxlbWVudDo6ZGlyZWMKICAgICAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKGRpckF0dHJpYnV0ZVZhbHVlLCAiYXV0byIpKSB7CiAgICAgICAgICAgICBi
b29sIGlzQXV0bzsKICAgICAgICAgICAgIFRleHREaXJlY3Rpb24gdGV4dERpcmVjdGlvbiA9IHN0
YXRpY19jYXN0PGNvbnN0IEhUTUxFbGVtZW50Kj4oZWxlbWVudCktPmRpcmVjdGlvbmFsaXR5SWZo
YXNEaXJBdXRvQXR0cmlidXRlKGlzQXV0byk7Ci0gICAgICAgICAgICByZXR1cm4gdGV4dERpcmVj
dGlvbiA9PSBSVEwgPyAicnRsIiA6ICJsdHIiOworICAgICAgICAgICAgcmV0dXJuIHRleHREaXJl
Y3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6UlRMID8gInJ0bCIgOiAibHRyIjsKICAgICAgICAgfQog
ICAgIH0KIApAQCAtODM3LDcgKzgzNyw3IEBAIHZvaWQgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQ6OmFkanVzdEkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgdGV4
dEJsb2NrU3R5bGUuc2V0RGlyZWN0aW9uKExUUik7CisgICAgICAgIHRleHRCbG9ja1N0eWxlLnNl
dERpcmVjdGlvbihUZXh0RGlyZWN0aW9uOjpMVFIpOwogICAgIH0KICNlbmRpZgogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUaXRsZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMzQ1MTQp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUaXRsZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04MCw3ICs4MCw3IEBAIFN0cmluZyBIVE1MVGl0bGVFbGVtZW50Ojp0ZXh0KCkgY29u
c3QKIAogU3RyaW5nV2l0aERpcmVjdGlvbiBIVE1MVGl0bGVFbGVtZW50Ojpjb21wdXRlZFRleHRX
aXRoRGlyZWN0aW9uKCkKIHsKLSAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IExUUjsKKyAg
ICBhdXRvIGRpcmVjdGlvbiA9IFRleHREaXJlY3Rpb246OkxUUjsKICAgICBpZiAoYXV0byogY29t
cHV0ZWRTdHlsZSA9IHRoaXMtPmNvbXB1dGVkU3R5bGUoKSkKICAgICAgICAgZGlyZWN0aW9uID0g
Y29tcHV0ZWRTdHlsZS0+ZGlyZWN0aW9uKCk7CiAgICAgZWxzZQpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3Bw
CShyZXZpc2lvbiAyMzQ1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTUsMjEgKzI5NSwyMSBA
QCBpbmxpbmUgVGV4dERpcmVjdGlvbiBDYW52YXNSZW5kZXJpbmdDb250CiAgICAgICAgICpjb21w
dXRlZFN0eWxlID0gc3R5bGU7CiAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKICAgICBjYXNlIERp
cmVjdGlvbjo6SW5oZXJpdDoKLSAgICAgICAgcmV0dXJuIHN0eWxlID8gc3R5bGUtPmRpcmVjdGlv
bigpIDogTFRSOworICAgICAgICByZXR1cm4gc3R5bGUgPyBzdHlsZS0+ZGlyZWN0aW9uKCkgOiBU
ZXh0RGlyZWN0aW9uOjpMVFI7CiAgICAgY2FzZSBEaXJlY3Rpb246OlJ0bDoKLSAgICAgICAgcmV0
dXJuIFJUTDsKKyAgICAgICAgcmV0dXJuIFRleHREaXJlY3Rpb246OlJUTDsKICAgICBjYXNlIERp
cmVjdGlvbjo6THRyOgotICAgICAgICByZXR1cm4gTFRSOworICAgICAgICByZXR1cm4gVGV4dERp
cmVjdGlvbjo6TFRSOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1
cm4gTFRSOworICAgIHJldHVybiBUZXh0RGlyZWN0aW9uOjpMVFI7CiB9CiAKIENhbnZhc0RpcmVj
dGlvbiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRpcmVjdGlvbigpIGNvbnN0CiB7CiAgICAg
aWYgKHN0YXRlKCkuZGlyZWN0aW9uID09IERpcmVjdGlvbjo6SW5oZXJpdCkKICAgICAgICAgY2Fu
dmFzKCkuZG9jdW1lbnQoKS51cGRhdGVTdHlsZUlmTmVlZGVkKCk7Ci0gICAgcmV0dXJuIHRvVGV4
dERpcmVjdGlvbihzdGF0ZSgpLmRpcmVjdGlvbikgPT0gUlRMID8gQ2FudmFzRGlyZWN0aW9uOjpS
dGwgOiBDYW52YXNEaXJlY3Rpb246Okx0cjsKKyAgICByZXR1cm4gdG9UZXh0RGlyZWN0aW9uKHN0
YXRlKCkuZGlyZWN0aW9uKSA9PSBUZXh0RGlyZWN0aW9uOjpSVEwgPyBDYW52YXNEaXJlY3Rpb246
OlJ0bCA6IENhbnZhc0RpcmVjdGlvbjo6THRyOwogfQogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyRDo6c2V0RGlyZWN0aW9uKENhbnZhc0RpcmVjdGlvbiBkaXJlY3Rpb24pCkBAIC00Mjks
NyArNDI5LDcgQEAgRmxvYXRQb2ludCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnRleAogICAg
ICAgICBicmVhazsKICAgICB9CiAKLSAgICBib29sIGlzUlRMID0gZGlyZWN0aW9uID09IFJUTDsK
KyAgICBib29sIGlzUlRMID0gZGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OlJUTDsKICAgICBh
dXRvIGFsaWduID0gc3RhdGUoKS50ZXh0QWxpZ247CiAgICAgaWYgKGFsaWduID09IFN0YXJ0VGV4
dEFsaWduKQogICAgICAgICBhbGlnbiA9IGlzUlRMID8gUmlnaHRUZXh0QWxpZ24gOiBMZWZ0VGV4
dEFsaWduOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJU
aHVtYkVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMzQ1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzEsNyAr
MTcxLDcgQEAgdm9pZCBSZW5kZXJTbGlkZXJDb250YWluZXI6OmxheW91dCgpCiAgICAgICAgIC8v
IEZJWE1FOiBXb3JrIGFyb3VuZCByb3VuZGluZyBpc3N1ZXMgaW4gUlRMIHZlcnRpY2FsIHNsaWRl
cnMuIFdlIHdhbnQgdGhlbSB0bwogICAgICAgICAvLyByZW5kZXIgaWRlbnRpY2FsbHkgdG8gTFRS
IHZlcnRpY2FsIHNsaWRlcnMuIFdlIGNhbiByZW1vdmUgdGhpcyB3b3JrIGFyb3VuZCB3aGVuCiAg
ICAgICAgIC8vIHN1YnBpeGVsIHJlbmRlcmluZyBpcyBlbmFibGVkIG9uIGFsbCBwb3J0cy4KLSAg
ICAgICAgbXV0YWJsZVN0eWxlKCkuc2V0RGlyZWN0aW9uKExUUik7CisgICAgICAgIG11dGFibGVT
dHlsZSgpLnNldERpcmVjdGlvbihUZXh0RGlyZWN0aW9uOjpMVFIpOwogICAgIH0KIAogICAgIFJl
bmRlckJveCogdGh1bWIgPSBpbnB1dC5zbGlkZXJUaHVtYkVsZW1lbnQoKSA/IGlucHV0LnNsaWRl
clRodW1iRWxlbWVudCgpLT5yZW5kZXJCb3goKSA6IG51bGxwdHI7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5j
cHAJKHJldmlzaW9uIDIzNDUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRD
b250cm9sSW5uZXJFbGVtZW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw3ICsxMDksNyBA
QCBzdGQ6Om9wdGlvbmFsPEVsZW1lbnRTdHlsZT4gVGV4dENvbnRyb2xJCiAgICAgbmV3U3R5bGUt
PnNldEZsZXhHcm93KDEpOwogICAgIG5ld1N0eWxlLT5zZXRNaW5XaWR0aChMZW5ndGggeyAwLCBG
aXhlZCB9KTsgLy8gTmVlZGVkIGZvciBjb3JyZWN0IHNocmlua2luZy4KICAgICBuZXdTdHlsZS0+
c2V0RGlzcGxheShEaXNwbGF5VHlwZTo6QmxvY2spOwotICAgIG5ld1N0eWxlLT5zZXREaXJlY3Rp
b24oTFRSKTsKKyAgICBuZXdTdHlsZS0+c2V0RGlyZWN0aW9uKFRleHREaXJlY3Rpb246OkxUUik7
CiAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0aGUgc2hhZG93IERPTSB0byBiZSBlZGl0YWJsZSwgc28g
d2Ugc2V0IHRoaXMgYmxvY2sgdG8gcmVhZC1vbmx5IGluIGNhc2UgdGhlIGlucHV0IGl0c2VsZiBp
cyBlZGl0YWJsZS4KICAgICBuZXdTdHlsZS0+c2V0VXNlck1vZGlmeShVc2VyTW9kaWZ5OjpSZWFk
T25seSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAJKHJldmlzaW9uIDIzNDUxNCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU2LDcg
KzM1Niw3IEBAIHZvaWQgQ2hyb21lOjpzZXRUb29sVGlwKGNvbnN0IEhpdFRlc3RSZXMKICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChmb3JtLT5yZW5kZXJlcigpKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRvb2xUaXBEaXJlY3Rpb24gPSBmb3JtLT5yZW5kZXJlcigpLT5zdHlsZSgp
LmRpcmVjdGlvbigpOwogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRvb2xUaXBEaXJlY3Rpb24gPSBMVFI7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdG9vbFRpcERpcmVjdGlvbiA9IFRleHREaXJlY3Rpb246OkxUUjsKICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTM2
Nyw3ICszNjcsNyBAQCB2b2lkIENocm9tZTo6c2V0VG9vbFRpcChjb25zdCBIaXRUZXN0UmVzCiAg
ICAgICAgICAgICAvLyBGSVhNRTogTmVlZCB0byBwYXNzIHRoaXMgVVJMIHRocm91Z2ggdXNlclZp
c2libGVTdHJpbmcgb25jZSB0aGF0J3MgaW4gV2ViQ29yZQogICAgICAgICAgICAgdG9vbFRpcCA9
IHJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwoKS5zdHJpbmcoKTsKICAgICAgICAgICAgIC8vIFVSTCBh
bHdheXMgZGlzcGxheSBhcyBMVFIuCi0gICAgICAgICAgICB0b29sVGlwRGlyZWN0aW9uID0gTFRS
OworICAgICAgICAgICAgdG9vbFRpcERpcmVjdGlvbiA9IFRleHREaXJlY3Rpb246OkxUUjsKICAg
ICAgICAgfQogICAgIH0KIApAQCAtMzg5LDcgKzM4OSw3IEBAIHZvaWQgQ2hyb21lOjpzZXRUb29s
VGlwKGNvbnN0IEhpdFRlc3RSZXMKICAgICAgICAgICAgICAgICAvLyBpbXBsZW1lbnRhdGlvbnMg
ZG9uJ3QgdXNlIHRleHQgZGlyZWN0aW9uIGluZm9ybWF0aW9uIGZvcgogICAgICAgICAgICAgICAg
IC8vIENocm9tZUNsaWVudDo6c2V0VG9vbFRpcC4gV2UnbGwgd29yayBvbiB0b29sdGlwIHRleHQK
ICAgICAgICAgICAgICAgICAvLyBkaXJlY3Rpb24gZHVyaW5nIGJpZGkgY2xlYW51cCBpbiBmb3Jt
IGlucHV0cy4KLSAgICAgICAgICAgICAgICB0b29sVGlwRGlyZWN0aW9uID0gTFRSOworICAgICAg
ICAgICAgICAgIHRvb2xUaXBEaXJlY3Rpb24gPSBUZXh0RGlyZWN0aW9uOjpMVFI7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3Bw
CShyZXZpc2lvbiAyMzQ1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE2Miw3ICsxNjIsNyBAQCBQYWdpbmF0aW9uOjpNb2RlIHBhZ2lu
YXRpb25Nb2RlRm9yUmVuZGVyCiAgICAgLy8gaXMgaG9yaXpvbnRhbCwgdGhlbiB3ZSB1c2UgVGV4
dERpcmVjdGlvbiB0byBjaG9vc2UgYmV0d2VlbiB0aG9zZSBvcHRpb25zLiBJZiB0aGUgV3JpdGlu
Z01vZGUKICAgICAvLyBpcyB2ZXJ0aWNhbCwgdGhlbiB0aGUgZGlyZWN0aW9uIG9mIHRoZSB2ZXJ0
aWNhbGl0eSBkaWN0YXRlcyB0aGUgY2hvaWNlLgogICAgIGlmIChvdmVyZmxvdyA9PSBPdmVyZmxv
dzo6UGFnZWRYKSB7Ci0gICAgICAgIGlmICgoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUgJiYgdGV4
dERpcmVjdGlvbiA9PSBMVFIpIHx8IHdyaXRpbmdNb2RlID09IExlZnRUb1JpZ2h0V3JpdGluZ01v
ZGUpCisgICAgICAgIGlmICgoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUgJiYgdGV4dERpcmVjdGlv
biA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpIHx8IHdyaXRpbmdNb2RlID09IExlZnRUb1JpZ2h0V3Jp
dGluZ01vZGUpCiAgICAgICAgICAgICByZXR1cm4gUGFnaW5hdGlvbjo6TGVmdFRvUmlnaHRQYWdp
bmF0ZWQ7CiAgICAgICAgIHJldHVybiBQYWdpbmF0aW9uOjpSaWdodFRvTGVmdFBhZ2luYXRlZDsK
ICAgICB9CkBAIC0xNzAsNyArMTcwLDcgQEAgUGFnaW5hdGlvbjo6TW9kZSBwYWdpbmF0aW9uTW9k
ZUZvclJlbmRlcgogICAgIC8vIHBhZ2VkLXkgYWx3YXlzIGNvcnJlc3BvbmRzIHRvIFRvcFRvQm90
dG9tUGFnaW5hdGVkIG9yIEJvdHRvbVRvVG9wUGFnaW5hdGVkLiBJZiB0aGUgV3JpdGluZ01vZGUK
ICAgICAvLyBpcyBob3Jpem9udGFsLCB0aGVuIHRoZSBkaXJlY3Rpb24gb2YgdGhlIGhvcml6b250
YWxpdHkgZGljdGF0ZXMgdGhlIGNob2ljZS4gSWYgdGhlIFdyaXRpbmdNb2RlCiAgICAgLy8gaXMg
dmVydGljYWwsIHRoZW4gd2UgdXNlIFRleHREaXJlY3Rpb24gdG8gY2hvb3NlIGJldHdlZW4gdGhv
c2Ugb3B0aW9ucy4gCi0gICAgaWYgKHdyaXRpbmdNb2RlID09IFRvcFRvQm90dG9tV3JpdGluZ01v
ZGUgfHwgKCFpc0hvcml6b250YWxXcml0aW5nTW9kZSAmJiB0ZXh0RGlyZWN0aW9uID09IFJUTCkp
CisgICAgaWYgKHdyaXRpbmdNb2RlID09IFRvcFRvQm90dG9tV3JpdGluZ01vZGUgfHwgKCFpc0hv
cml6b250YWxXcml0aW5nTW9kZSAmJiB0ZXh0RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OlJU
TCkpCiAgICAgICAgIHJldHVybiBQYWdpbmF0aW9uOjpUb3BUb0JvdHRvbVBhZ2luYXRlZDsKICAg
ICByZXR1cm4gUGFnaW5hdGlvbjo6Qm90dG9tVG9Ub3BQYWdpbmF0ZWQ7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9TZXR0aW5ncy55YW1sCShyZXZpc2lvbiAyMzQ1MTQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1NldHRpbmdzLnlhbWwJKHdvcmtpbmcgY29weSkKQEAgLTUwOCw3ICs1MDgsNyBAQCB1
c2VySW50ZXJmYWNlRGlyZWN0aW9uUG9saWN5OgogICBpbml0aWFsOiBVc2VySW50ZXJmYWNlRGly
ZWN0aW9uUG9saWN5OjpDb250ZW50CiBzeXN0ZW1MYXlvdXREaXJlY3Rpb246CiAgIHR5cGU6IFRl
eHREaXJlY3Rpb24KLSAgaW5pdGlhbDogTFRSCisgIGluaXRpYWw6IFRleHREaXJlY3Rpb246OkxU
UgogCiBhbGxvd0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZVN0YXJUb01hdGNoQW55UHJvdG9j
b2w6CiAgIGluaXRpYWw6IGZhbHNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZWN0
RWRnZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZWN0RWRnZXMu
aAkocmV2aXNpb24gMjM0NTE0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVjdEVkZ2Vz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDE4ICs1OSwxOCBAQCBwdWJsaWM6CiAgICAgCiAgICAg
VCYgYmVmb3JlKFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKSB7IHJldHVybiBhdChtYXBMb2dpY2Fs
U2lkZVRvUGh5c2ljYWxTaWRlKHdyaXRpbmdNb2RlLCBMb2dpY2FsQm94U2lkZTo6QmVmb3JlKSk7
IH0KICAgICBUJiBhZnRlcihXcml0aW5nTW9kZSB3cml0aW5nTW9kZSkgeyByZXR1cm4gYXQobWFw
TG9naWNhbFNpZGVUb1BoeXNpY2FsU2lkZSh3cml0aW5nTW9kZSwgTG9naWNhbEJveFNpZGU6OkFm
dGVyKSk7IH0KLSAgICBUJiBzdGFydChXcml0aW5nTW9kZSB3cml0aW5nTW9kZSwgVGV4dERpcmVj
dGlvbiBkaXJlY3Rpb24gPSBMVFIpIHsgcmV0dXJuIGF0KG1hcExvZ2ljYWxTaWRlVG9QaHlzaWNh
bFNpZGUobWFrZVRleHRGbG93KHdyaXRpbmdNb2RlLCBkaXJlY3Rpb24pLCBMb2dpY2FsQm94U2lk
ZTo6U3RhcnQpKTsgfQotICAgIFQmIGVuZChXcml0aW5nTW9kZSB3cml0aW5nTW9kZSwgVGV4dERp
cmVjdGlvbiBkaXJlY3Rpb24gPSBMVFIpIHsgcmV0dXJuIGF0KG1hcExvZ2ljYWxTaWRlVG9QaHlz
aWNhbFNpZGUobWFrZVRleHRGbG93KHdyaXRpbmdNb2RlLCBkaXJlY3Rpb24pLCBMb2dpY2FsQm94
U2lkZTo6RW5kKSk7IH0KKyAgICBUJiBzdGFydChXcml0aW5nTW9kZSB3cml0aW5nTW9kZSwgVGV4
dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBUZXh0RGlyZWN0aW9uOjpMVFIpIHsgcmV0dXJuIGF0KG1h
cExvZ2ljYWxTaWRlVG9QaHlzaWNhbFNpZGUobWFrZVRleHRGbG93KHdyaXRpbmdNb2RlLCBkaXJl
Y3Rpb24pLCBMb2dpY2FsQm94U2lkZTo6U3RhcnQpKTsgfQorICAgIFQmIGVuZChXcml0aW5nTW9k
ZSB3cml0aW5nTW9kZSwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBUZXh0RGlyZWN0aW9uOjpM
VFIpIHsgcmV0dXJuIGF0KG1hcExvZ2ljYWxTaWRlVG9QaHlzaWNhbFNpZGUobWFrZVRleHRGbG93
KHdyaXRpbmdNb2RlLCBkaXJlY3Rpb24pLCBMb2dpY2FsQm94U2lkZTo6RW5kKSk7IH0KICAgICAK
ICAgICBjb25zdCBUJiBiZWZvcmUoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUpIGNvbnN0IHsgcmV0
dXJuIGF0KG1hcExvZ2ljYWxTaWRlVG9QaHlzaWNhbFNpZGUod3JpdGluZ01vZGUsIExvZ2ljYWxC
b3hTaWRlOjpCZWZvcmUpKTsgfQogICAgIGNvbnN0IFQmIGFmdGVyKFdyaXRpbmdNb2RlIHdyaXRp
bmdNb2RlKSBjb25zdCB7IHJldHVybiBhdChtYXBMb2dpY2FsU2lkZVRvUGh5c2ljYWxTaWRlKHdy
aXRpbmdNb2RlLCBMb2dpY2FsQm94U2lkZTo6QWZ0ZXIpKTsgfQotICAgIGNvbnN0IFQmIHN0YXJ0
KFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IExUUikg
Y29uc3QgeyByZXR1cm4gYXQobWFwTG9naWNhbFNpZGVUb1BoeXNpY2FsU2lkZShtYWtlVGV4dEZs
b3cod3JpdGluZ01vZGUsIGRpcmVjdGlvbiksIExvZ2ljYWxCb3hTaWRlOjpTdGFydCkpOyB9Ci0g
ICAgY29uc3QgVCYgZW5kKFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBUZXh0RGlyZWN0aW9uIGRp
cmVjdGlvbiA9IExUUikgY29uc3QgeyByZXR1cm4gYXQobWFwTG9naWNhbFNpZGVUb1BoeXNpY2Fs
U2lkZShtYWtlVGV4dEZsb3cod3JpdGluZ01vZGUsIGRpcmVjdGlvbiksIExvZ2ljYWxCb3hTaWRl
OjpFbmQpKTsgfQorICAgIGNvbnN0IFQmIHN0YXJ0KFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBU
ZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IFRleHREaXJlY3Rpb246OkxUUikgY29uc3QgeyByZXR1
cm4gYXQobWFwTG9naWNhbFNpZGVUb1BoeXNpY2FsU2lkZShtYWtlVGV4dEZsb3cod3JpdGluZ01v
ZGUsIGRpcmVjdGlvbiksIExvZ2ljYWxCb3hTaWRlOjpTdGFydCkpOyB9CisgICAgY29uc3QgVCYg
ZW5kKFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IFRl
eHREaXJlY3Rpb246OkxUUikgY29uc3QgeyByZXR1cm4gYXQobWFwTG9naWNhbFNpZGVUb1BoeXNp
Y2FsU2lkZShtYWtlVGV4dEZsb3cod3JpdGluZ01vZGUsIGRpcmVjdGlvbiksIExvZ2ljYWxCb3hT
aWRlOjpFbmQpKTsgfQogICAgIAogICAgIHZvaWQgc2V0QmVmb3JlKGNvbnN0IFQmIGJlZm9yZSwg
V3JpdGluZ01vZGUgd3JpdGluZ01vZGUpIHsgdGhpcy0+YmVmb3JlKHdyaXRpbmdNb2RlKSA9IGJl
Zm9yZTsgfQogICAgIHZvaWQgc2V0QWZ0ZXIoY29uc3QgVCYgYWZ0ZXIsIFdyaXRpbmdNb2RlIHdy
aXRpbmdNb2RlKSB7IHRoaXMtPmFmdGVyKHdyaXRpbmdNb2RlKSA9IGFmdGVyOyB9Ci0gICAgdm9p
ZCBzZXRTdGFydChjb25zdCBUJiBzdGFydCwgV3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIFRleHRE
aXJlY3Rpb24gZGlyZWN0aW9uID0gTFRSKSB7IHRoaXMtPnN0YXJ0KHdyaXRpbmdNb2RlLCBkaXJl
Y3Rpb24pID0gc3RhcnQ7IH0KLSAgICB2b2lkIHNldEVuZChjb25zdCBUJiBlbmQsIFdyaXRpbmdN
b2RlIHdyaXRpbmdNb2RlLCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IExUUikgeyB0aGlzLT5l
bmQod3JpdGluZ01vZGUsIGRpcmVjdGlvbikgPSBlbmQ7IH0KKyAgICB2b2lkIHNldFN0YXJ0KGNv
bnN0IFQmIHN0YXJ0LCBXcml0aW5nTW9kZSB3cml0aW5nTW9kZSwgVGV4dERpcmVjdGlvbiBkaXJl
Y3Rpb24gPSBUZXh0RGlyZWN0aW9uOjpMVFIpIHsgdGhpcy0+c3RhcnQod3JpdGluZ01vZGUsIGRp
cmVjdGlvbikgPSBzdGFydDsgfQorICAgIHZvaWQgc2V0RW5kKGNvbnN0IFQmIGVuZCwgV3JpdGlu
Z01vZGUgd3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gVGV4dERpcmVjdGlv
bjo6TFRSKSB7IHRoaXMtPmVuZCh3cml0aW5nTW9kZSwgZGlyZWN0aW9uKSA9IGVuZDsgfQogICAg
IAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZWN0RWRnZXMmIG90aGVyKSBjb25zdCB7IHJl
dHVybiBtX3NpZGVzID09IG90aGVyLm1fc2lkZXM7IH0KICAgICBib29sIG9wZXJhdG9yIT0oY29u
c3QgUmVjdEVkZ2VzJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9zaWRlcyAhPSBvdGhlci5tX3Np
ZGVzOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VySW50ZXJmYWNlTGF5b3V0
RGlyZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlcklu
dGVyZmFjZUxheW91dERpcmVjdGlvbi5oCShyZXZpc2lvbiAyMzQ1MTQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Vc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIzLDEzICsyMywxMCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLSNpZm5kZWYgVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbl9oCi0jZGVmaW5l
IFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25faAorI3ByYWdtYSBvbmNlCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotZW51bSBjbGFzcyBVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uIHsg
TFRSLCBSVEwgfTsKK2VudW0gY2xhc3MgVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiA6IHVp
bnQ4X3QgeyBMVFIsIFJUTCB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250cm9sbGVyLmNw
cAkocmV2aXNpb24gMjM0NTE0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Q29tcGxleFRleHRDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI4LDcgKzEyOCw3
IEBAIHZvaWQgQ29tcGxleFRleHRDb250cm9sbGVyOjpjb21wdXRlRXhwYW4KICAgICBpZiAoIW1f
ZXhwYW5zaW9uKQogICAgICAgICBtX2V4cGFuc2lvblBlck9wcG9ydHVuaXR5ID0gMDsKICAgICBl
bHNlIHsKLSAgICAgICAgdW5zaWduZWQgZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudCA9IEZvbnRD
YXNjYWRlOjpleHBhbnNpb25PcHBvcnR1bml0eUNvdW50KG1fcnVuLnRleHQoKSwgbV9ydW4ubHRy
KCkgPyBMVFIgOiBSVEwsIG1fcnVuLmV4cGFuc2lvbkJlaGF2aW9yKCkpLmZpcnN0OworICAgICAg
ICB1bnNpZ25lZCBleHBhbnNpb25PcHBvcnR1bml0eUNvdW50ID0gRm9udENhc2NhZGU6OmV4cGFu
c2lvbk9wcG9ydHVuaXR5Q291bnQobV9ydW4udGV4dCgpLCBtX3J1bi5sdHIoKSA/IFRleHREaXJl
Y3Rpb246OkxUUiA6IFRleHREaXJlY3Rpb246OlJUTCwgbV9ydW4uZXhwYW5zaW9uQmVoYXZpb3Io
KSkuZmlyc3Q7CiAKICAgICAgICAgaWYgKCFleHBhbnNpb25PcHBvcnR1bml0eUNvdW50KQogICAg
ICAgICAgICAgbV9leHBhbnNpb25QZXJPcHBvcnR1bml0eSA9IDA7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCShyZXZpc2lvbiAy
MzQ1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNzQsNyArMTA3NCw3IEBAIHN0ZDo6cGFpcjx1bnNpZ25l
ZCwgYm9vbD4gRm9udENhc2NhZGU6OmUKICAgICAgICAgKytjb3VudDsKICAgICAgICAgaXNBZnRl
ckV4cGFuc2lvbiA9IHRydWU7CiAgICAgfQotICAgIGlmIChkaXJlY3Rpb24gPT0gTFRSKSB7Cisg
ICAgaWYgKGRpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpIHsKICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICBpZiAodHJlYXRB
c1NwYWNlKGNoYXJhY3RlcnNbaV0pKSB7CiAgICAgICAgICAgICAgICAgY291bnQrKzsKQEAgLTEx
MTEsNyArMTExMSw3IEBAIHN0ZDo6cGFpcjx1bnNpZ25lZCwgYm9vbD4gRm9udENhc2NhZGU6OmUK
ICAgICAgICAgKytjb3VudDsKICAgICAgICAgaXNBZnRlckV4cGFuc2lvbiA9IHRydWU7CiAgICAg
fQotICAgIGlmIChkaXJlY3Rpb24gPT0gTFRSKSB7CisgICAgaWYgKGRpcmVjdGlvbiA9PSBUZXh0
RGlyZWN0aW9uOjpMVFIpIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0
aDsgKytpKSB7CiAgICAgICAgICAgICBVQ2hhcjMyIGNoYXJhY3RlciA9IGNoYXJhY3RlcnNbaV07
CiAgICAgICAgICAgICBpZiAodHJlYXRBc1NwYWNlKGNoYXJhY3RlcikpIHsKQEAgLTExODIsNyAr
MTE4Miw3IEBAIGJvb2wgRm9udENhc2NhZGU6OmxlYWRpbmdFeHBhbnNpb25PcHBvcnQKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgVUNoYXIzMiBpbml0aWFsQ2hhcmFjdGVyOwotICAgIGlm
IChkaXJlY3Rpb24gPT0gTFRSKSB7CisgICAgaWYgKGRpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9u
OjpMVFIpIHsKICAgICAgICAgaW5pdGlhbENoYXJhY3RlciA9IHN0cmluZ1ZpZXdbMF07CiAgICAg
ICAgIGlmIChVMTZfSVNfTEVBRChpbml0aWFsQ2hhcmFjdGVyKSAmJiBzdHJpbmdWaWV3Lmxlbmd0
aCgpID4gMSAmJiBVMTZfSVNfVFJBSUwoc3RyaW5nVmlld1sxXSkpCiAgICAgICAgICAgICBpbml0
aWFsQ2hhcmFjdGVyID0gVTE2X0dFVF9TVVBQTEVNRU5UQVJZKGluaXRpYWxDaGFyYWN0ZXIsIHN0
cmluZ1ZpZXdbMV0pOwpAQCAtMTIwMSw3ICsxMjAxLDcgQEAgYm9vbCBGb250Q2FzY2FkZTo6dHJh
aWxpbmdFeHBhbnNpb25PcHBvcgogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBVQ2hhcjMy
IGZpbmFsQ2hhcmFjdGVyOwotICAgIGlmIChkaXJlY3Rpb24gPT0gTFRSKSB7CisgICAgaWYgKGRp
cmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpIHsKICAgICAgICAgZmluYWxDaGFyYWN0ZXIg
PSBzdHJpbmdWaWV3W3N0cmluZ1ZpZXcubGVuZ3RoKCkgLSAxXTsKICAgICAgICAgaWYgKFUxNl9J
U19UUkFJTChmaW5hbENoYXJhY3RlcikgJiYgc3RyaW5nVmlldy5sZW5ndGgoKSA+IDEgJiYgVTE2
X0lTX0xFQUQoc3RyaW5nVmlld1tzdHJpbmdWaWV3Lmxlbmd0aCgpIC0gMl0pKQogICAgICAgICAg
ICAgZmluYWxDaGFyYWN0ZXIgPSBVMTZfR0VUX1NVUFBMRU1FTlRBUlkoc3RyaW5nVmlld1tzdHJp
bmdWaWV3Lmxlbmd0aCgpIC0gMl0sIGZpbmFsQ2hhcmFjdGVyKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAkocmV2
aXNpb24gMjM0NTE0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgzLDcgKzY4Myw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3QmlkaVRleHQoY29uc3QKICAgICB3aGlsZSAoYmlkaVJ1bikgewog
ICAgICAgICBUZXh0UnVuIHN1YnJ1biA9IHJ1bi5zdWJSdW4oYmlkaVJ1bi0+c3RhcnQoKSwgYmlk
aVJ1bi0+c3RvcCgpIC0gYmlkaVJ1bi0+c3RhcnQoKSk7CiAgICAgICAgIGJvb2wgaXNSVEwgPSBi
aWRpUnVuLT5sZXZlbCgpICUgMjsKLSAgICAgICAgc3VicnVuLnNldERpcmVjdGlvbihpc1JUTCA/
IFJUTCA6IExUUik7CisgICAgICAgIHN1YnJ1bi5zZXREaXJlY3Rpb24oaXNSVEwgPyBUZXh0RGly
ZWN0aW9uOjpSVEwgOiBUZXh0RGlyZWN0aW9uOjpMVFIpOwogICAgICAgICBzdWJydW4uc2V0RGly
ZWN0aW9uYWxPdmVycmlkZShiaWRpUnVuLT5kaXJPdmVycmlkZShmYWxzZSkpOwogCiAgICAgICAg
IGZsb2F0IHdpZHRoID0gZm9udC5kcmF3VGV4dCgqdGhpcywgc3VicnVuLCBjdXJyUG9pbnQsIDAs
IHN0ZDo6bnVsbG9wdCwgY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmgJKHJldmlzaW9uIDIzNDUxNCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uaAkod29ya2luZyBjb3B5
KQpAQCAtNDQsNyArNDQsNyBAQCBzdHJ1Y3QgV2lkdGhJdGVyYXRvcjsKIGNsYXNzIFRleHRSdW4g
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIGV4cGxpY2l0IFRl
eHRSdW4oY29uc3QgU3RyaW5nJiB0ZXh0LCBmbG9hdCB4cG9zID0gMCwgZmxvYXQgZXhwYW5zaW9u
ID0gMCwgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uQmVoYXZpb3IgPSBEZWZhdWx0RXhwYW5z
aW9uLCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IExUUiwgYm9vbCBkaXJlY3Rpb25hbE92ZXJy
aWRlID0gZmFsc2UsIGJvb2wgY2hhcmFjdGVyU2NhbkZvckNvZGVQYXRoID0gdHJ1ZSkKKyAgICBl
eHBsaWNpdCBUZXh0UnVuKGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeHBvcyA9IDAsIGZsb2F0
IGV4cGFuc2lvbiA9IDAsIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbkJlaGF2aW9yID0gRGVm
YXVsdEV4cGFuc2lvbiwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBUZXh0RGlyZWN0aW9uOjpM
VFIsIGJvb2wgZGlyZWN0aW9uYWxPdmVycmlkZSA9IGZhbHNlLCBib29sIGNoYXJhY3RlclNjYW5G
b3JDb2RlUGF0aCA9IHRydWUpCiAgICAgICAgIDogbV90ZXh0KHRleHQpCiAgICAgICAgICwgbV90
YWJTaXplKDApCiAgICAgICAgICwgbV94cG9zKHhwb3MpCkBAIC01MiwxNCArNTIsMTQgQEAgcHVi
bGljOgogICAgICAgICAsIG1fZXhwYW5zaW9uKGV4cGFuc2lvbikKICAgICAgICAgLCBtX2V4cGFu
c2lvbkJlaGF2aW9yKGV4cGFuc2lvbkJlaGF2aW9yKQogICAgICAgICAsIG1fYWxsb3dUYWJzKGZh
bHNlKQotICAgICAgICAsIG1fZGlyZWN0aW9uKGRpcmVjdGlvbikKKyAgICAgICAgLCBtX2RpcmVj
dGlvbihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGlyZWN0aW9uKSkKICAgICAgICAgLCBtX2RpcmVj
dGlvbmFsT3ZlcnJpZGUoZGlyZWN0aW9uYWxPdmVycmlkZSkKICAgICAgICAgLCBtX2NoYXJhY3Rl
clNjYW5Gb3JDb2RlUGF0aChjaGFyYWN0ZXJTY2FuRm9yQ29kZVBhdGgpCiAgICAgICAgICwgbV9k
aXNhYmxlU3BhY2luZyhmYWxzZSkKICAgICB7CiAgICAgfQogCi0gICAgZXhwbGljaXQgVGV4dFJ1
bihTdHJpbmdWaWV3IHN0cmluZ1ZpZXcsIGZsb2F0IHhwb3MgPSAwLCBmbG9hdCBleHBhbnNpb24g
PSAwLCBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpb25CZWhhdmlvciA9IERlZmF1bHRFeHBhbnNp
b24sIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gTFRSLCBib29sIGRpcmVjdGlvbmFsT3ZlcnJp
ZGUgPSBmYWxzZSwgYm9vbCBjaGFyYWN0ZXJTY2FuRm9yQ29kZVBhdGggPSB0cnVlKQorICAgIGV4
cGxpY2l0IFRleHRSdW4oU3RyaW5nVmlldyBzdHJpbmdWaWV3LCBmbG9hdCB4cG9zID0gMCwgZmxv
YXQgZXhwYW5zaW9uID0gMCwgRXhwYW5zaW9uQmVoYXZpb3IgZXhwYW5zaW9uQmVoYXZpb3IgPSBE
ZWZhdWx0RXhwYW5zaW9uLCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IFRleHREaXJlY3Rpb246
OkxUUiwgYm9vbCBkaXJlY3Rpb25hbE92ZXJyaWRlID0gZmFsc2UsIGJvb2wgY2hhcmFjdGVyU2Nh
bkZvckNvZGVQYXRoID0gdHJ1ZSkKICAgICAgICAgOiBUZXh0UnVuKHN0cmluZ1ZpZXcudG9TdHJp
bmdXaXRob3V0Q29weWluZygpLCB4cG9zLCBleHBhbnNpb24sIGV4cGFuc2lvbkJlaGF2aW9yLCBk
aXJlY3Rpb24sIGRpcmVjdGlvbmFsT3ZlcnJpZGUsIGNoYXJhY3RlclNjYW5Gb3JDb2RlUGF0aCkK
ICAgICB7CiAgICAgfQpAQCAtMTAzLDE0ICsxMDMsMTQgQEAgcHVibGljOgogICAgIGZsb2F0IGV4
cGFuc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fZXhwYW5zaW9uOyB9CiAgICAgRXhwYW5zaW9uQmVo
YXZpb3IgZXhwYW5zaW9uQmVoYXZpb3IoKSBjb25zdCB7IHJldHVybiBtX2V4cGFuc2lvbkJlaGF2
aW9yOyB9CiAgICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxUZXh0RGlyZWN0aW9uPihtX2RpcmVjdGlvbik7IH0KLSAgICBib29sIHJ0bCgpIGNv
bnN0IHsgcmV0dXJuIG1fZGlyZWN0aW9uID09IFJUTDsgfQotICAgIGJvb2wgbHRyKCkgY29uc3Qg
eyByZXR1cm4gbV9kaXJlY3Rpb24gPT0gTFRSOyB9CisgICAgYm9vbCBydGwoKSBjb25zdCB7IHJl
dHVybiBzdGF0aWNfY2FzdDxUZXh0RGlyZWN0aW9uPihtX2RpcmVjdGlvbikgPT0gVGV4dERpcmVj
dGlvbjo6UlRMOyB9CisgICAgYm9vbCBsdHIoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxU
ZXh0RGlyZWN0aW9uPihtX2RpcmVjdGlvbikgPT0gVGV4dERpcmVjdGlvbjo6TFRSOyB9CiAgICAg
Ym9vbCBkaXJlY3Rpb25hbE92ZXJyaWRlKCkgY29uc3QgeyByZXR1cm4gbV9kaXJlY3Rpb25hbE92
ZXJyaWRlOyB9CiAgICAgYm9vbCBjaGFyYWN0ZXJTY2FuRm9yQ29kZVBhdGgoKSBjb25zdCB7IHJl
dHVybiBtX2NoYXJhY3RlclNjYW5Gb3JDb2RlUGF0aDsgfQogICAgIGJvb2wgc3BhY2luZ0Rpc2Fi
bGVkKCkgY29uc3QgeyByZXR1cm4gbV9kaXNhYmxlU3BhY2luZzsgfQogCiAgICAgdm9pZCBkaXNh
YmxlU3BhY2luZygpIHsgbV9kaXNhYmxlU3BhY2luZyA9IHRydWU7IH0KLSAgICB2b2lkIHNldERp
cmVjdGlvbihUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbikgeyBtX2RpcmVjdGlvbiA9IGRpcmVjdGlv
bjsgfQorICAgIHZvaWQgc2V0RGlyZWN0aW9uKFRleHREaXJlY3Rpb24gZGlyZWN0aW9uKSB7IG1f
ZGlyZWN0aW9uID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRpcmVjdGlvbik7IH0KICAgICB2b2lk
IHNldERpcmVjdGlvbmFsT3ZlcnJpZGUoYm9vbCBvdmVycmlkZSkgeyBtX2RpcmVjdGlvbmFsT3Zl
cnJpZGUgPSBvdmVycmlkZTsgfQogICAgIHZvaWQgc2V0Q2hhcmFjdGVyU2NhbkZvckNvZGVQYXRo
KGJvb2wgc2NhbikgeyBtX2NoYXJhY3RlclNjYW5Gb3JDb2RlUGF0aCA9IHNjYW47IH0KICAgICBT
dHJpbmdWaWV3IHRleHQoKSBjb25zdCB7IHJldHVybiBtX3RleHQ7IH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwCShyZXZp
c2lvbiAyMzQ1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0
ZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBXaWR0aEl0ZXJhdG9y
OjpXaWR0aEl0ZXJhdG9yKGNvbnN0IEZvbnRDCiAgICAgaWYgKCFtX2V4cGFuc2lvbikKICAgICAg
ICAgbV9leHBhbnNpb25QZXJPcHBvcnR1bml0eSA9IDA7CiAgICAgZWxzZSB7Ci0gICAgICAgIHVu
c2lnbmVkIGV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQgPSBGb250Q2FzY2FkZTo6ZXhwYW5zaW9u
T3Bwb3J0dW5pdHlDb3VudChtX3J1bi50ZXh0KCksIG1fcnVuLmx0cigpID8gTFRSIDogUlRMLCBy
dW4uZXhwYW5zaW9uQmVoYXZpb3IoKSkuZmlyc3Q7CisgICAgICAgIHVuc2lnbmVkIGV4cGFuc2lv
bk9wcG9ydHVuaXR5Q291bnQgPSBGb250Q2FzY2FkZTo6ZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3Vu
dChtX3J1bi50ZXh0KCksIG1fcnVuLmx0cigpID8gVGV4dERpcmVjdGlvbjo6TFRSIDogVGV4dERp
cmVjdGlvbjo6UlRMLCBydW4uZXhwYW5zaW9uQmVoYXZpb3IoKSkuZmlyc3Q7CiAKICAgICAgICAg
aWYgKCFleHBhbnNpb25PcHBvcnR1bml0eUNvdW50KQogICAgICAgICAgICAgbV9leHBhbnNpb25Q
ZXJPcHBvcnR1bml0eSA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2Vs
ZWN0aW9uUmVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1NlbGVjdGlvblJlY3QuY3BwCShyZXZpc2lvbiAyMzQ1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvU2VsZWN0aW9uUmVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMy
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTZWxlY3Rpb25SZWN0OjpTZWxlY3Rpb25SZWN0
KGNvbnN0IEludFJlY3QmIHJlY3QsIGJvb2wgaXNIb3Jpem9udGFsLCBpbnQgcGFnZU51bWJlcikK
ICAgICA6IG1fcmVjdChyZWN0KQotICAgICwgbV9kaXJlY3Rpb24oTFRSKQorICAgICwgbV9kaXJl
Y3Rpb24oVGV4dERpcmVjdGlvbjo6TFRSKQogICAgICwgbV9taW5YKDApCiAgICAgLCBtX21heFgo
MCkKICAgICAsIG1fbWF4WSgwKQpAQCAtNzIsNyArNzIsNyBAQCBTZWxlY3Rpb25SZWN0OjpTZWxl
Y3Rpb25SZWN0KGNvbnN0IEludFJlCiB9CiAKIFNlbGVjdGlvblJlY3Q6OlNlbGVjdGlvblJlY3Qo
KQotICAgIDogbV9kaXJlY3Rpb24oTFRSKQorICAgIDogbV9kaXJlY3Rpb24oVGV4dERpcmVjdGlv
bjo6TFRSKQogICAgICwgbV9taW5YKDApCiAgICAgLCBtX21heFgoMCkKICAgICAsIG1fbWF4WSgw
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpUmVzb2x2ZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5oCShy
ZXZpc2lvbiAyMzQ1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlSZXNv
bHZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC04NiwxMCArODYsMTAgQEAgc3RydWN0IEJpZGlTdGF0
dXMgewogICAgIC8vIENyZWF0ZXMgYSBCaWRpU3RhdHVzIHJlcHJlc2VudGluZyBhIG5ldyBwYXJh
Z3JhcGggcm9vdCB3aXRoIGEgZGVmYXVsdCBkaXJlY3Rpb24uCiAgICAgLy8gVXNlcyBUZXh0RGly
ZWN0aW9uIGFzIGl0IG9ubHkgaGFzIHR3byBwb3NzaWJpbGl0aWVzIGluc3RlYWQgb2YgVUNoYXJE
aXJlY3Rpb24gd2hpY2ggaGFzIGF0IGxlYXN0IDE5LgogICAgIEJpZGlTdGF0dXMoVGV4dERpcmVj
dGlvbiBkaXJlY3Rpb24sIGJvb2wgaXNPdmVycmlkZSkKLSAgICAgICAgOiBlb3IoZGlyZWN0aW9u
ID09IExUUiA/IFVfTEVGVF9UT19SSUdIVCA6IFVfUklHSFRfVE9fTEVGVCkKKyAgICAgICAgOiBl
b3IoZGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUiA/IFVfTEVGVF9UT19SSUdIVCA6IFVf
UklHSFRfVE9fTEVGVCkKICAgICAgICAgLCBsYXN0U3Ryb25nKGVvcikKICAgICAgICAgLCBsYXN0
KGVvcikKLSAgICAgICAgLCBjb250ZXh0KEJpZGlDb250ZXh0OjpjcmVhdGUoZGlyZWN0aW9uID09
IExUUiA/IDAgOiAxLCBlb3IsIGlzT3ZlcnJpZGUpKQorICAgICAgICAsIGNvbnRleHQoQmlkaUNv
bnRleHQ6OmNyZWF0ZShkaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gMCA6IDEsIGVv
ciwgaXNPdmVycmlkZSkpCiAgICAgewogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9TdHJpbmdXaXRoRGlyZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9TdHJpbmdXaXRoRGlyZWN0aW9uLmgJKHJldmlzaW9uIDIzNDUx
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvU3RyaW5nV2l0aERpcmVjdGlvbi5o
CSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
c3RydWN0IFN0cmluZ1dpdGhEaXJlY3Rpb24gewogICAgIFN0cmluZyBzdHJpbmc7Ci0gICAgVGV4
dERpcmVjdGlvbiBkaXJlY3Rpb24geyBMVFIgfTsKKyAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlv
biB7IFRleHREaXJlY3Rpb246OkxUUiB9OwogfTsKIAogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiBhLCBjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiBi
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Xcml0aW5nTW9kZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvV3JpdGluZ01vZGUuaAkocmV2
aXNpb24gMjM0NTE0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Xcml0aW5nTW9k
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxMSArMzMsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1lbnVtIFRleHREaXJlY3Rpb24geyBMVFIsIFJUTCB9OworZW51bSBjbGFzcyBUZXh0
RGlyZWN0aW9uIDogdWludDhfdCB7IExUUiwgUlRMIH07CiAKIGlubGluZSBib29sIGlzTGVmdFRv
UmlnaHREaXJlY3Rpb24oVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pCiB7Ci0gICAgcmV0dXJuIGRp
cmVjdGlvbiA9PSBMVFI7CisgICAgcmV0dXJuIGRpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpM
VFI7CiB9CiAKIGVudW0gV3JpdGluZ01vZGUgewpAQCAtNDcsMTkgKzQ3LDE5IEBAIGVudW0gV3Jp
dGluZ01vZGUgewogICAgIFJpZ2h0VG9MZWZ0V3JpdGluZ01vZGUgPSAzLCAvLyB2ZXJ0aWNhbC1y
bAogfTsKIAotI2RlZmluZSBNQUtFX1RFWFRfRkxPVyh3cml0aW5nTW9kZSwgZGlyZWN0aW9uKSAg
KCh3cml0aW5nTW9kZSkgPDwgMSB8IChkaXJlY3Rpb24pKQorI2RlZmluZSBNQUtFX1RFWFRfRkxP
Vyh3cml0aW5nTW9kZSwgZGlyZWN0aW9uKSAgKCh3cml0aW5nTW9kZSkgPDwgMSB8IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihkaXJlY3Rpb24pKQogCiAvLyBEZWZpbmUgdGhlIHRleHQgZmxvdyBpbiB0
ZXJtcyBvZiB0aGUgd3JpdGluZyBtb2RlIGFuZCB0aGUgdGV4dCBkaXJlY3Rpb24uIFRoZSBmaXJz
dAogLy8gcGFydCBpcyB0aGUgbGluZSBncm93aW5nIGRpcmVjdGlvbiBhbmQgdGhlIHNlY29uZCBw
YXJ0IGlzIHRoZSBibG9jayBncm93aW5nIGRpcmVjdGlvbi4KIGVudW0gVGV4dEZsb3cgewotICAg
IElubGluZUVhc3RCbG9ja1NvdXRoID0gTUFLRV9URVhUX0ZMT1coVG9wVG9Cb3R0b21Xcml0aW5n
TW9kZSwgTFRSKSwKLSAgICBJbmxpbmVXZXN0QmxvY2tTb3V0aCA9IE1BS0VfVEVYVF9GTE9XKFRv
cFRvQm90dG9tV3JpdGluZ01vZGUsIFJUTCksCi0gICAgSW5saW5lRWFzdEJsb2NrTm9ydGggPSBN
QUtFX1RFWFRfRkxPVyhCb3R0b21Ub1RvcFdyaXRpbmdNb2RlLCBMVFIpLAotICAgIElubGluZVdl
c3RCbG9ja05vcnRoID0gTUFLRV9URVhUX0ZMT1coQm90dG9tVG9Ub3BXcml0aW5nTW9kZSwgUlRM
KSwKLSAgICBJbmxpbmVTb3V0aEJsb2NrRWFzdCA9IE1BS0VfVEVYVF9GTE9XKExlZnRUb1JpZ2h0
V3JpdGluZ01vZGUsIExUUiksCi0gICAgSW5saW5lU291dGhCbG9ja1dlc3QgPSBNQUtFX1RFWFRf
RkxPVyhMZWZ0VG9SaWdodFdyaXRpbmdNb2RlLCBSVEwpLAotICAgIElubGluZU5vcnRoQmxvY2tF
YXN0ID0gTUFLRV9URVhUX0ZMT1coUmlnaHRUb0xlZnRXcml0aW5nTW9kZSwgTFRSKSwKLSAgICBJ
bmxpbmVOb3J0aEJsb2NrV2VzdCA9IE1BS0VfVEVYVF9GTE9XKFJpZ2h0VG9MZWZ0V3JpdGluZ01v
ZGUsIFJUTCkKKyAgICBJbmxpbmVFYXN0QmxvY2tTb3V0aCA9IE1BS0VfVEVYVF9GTE9XKFRvcFRv
Qm90dG9tV3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb246OkxUUiksCisgICAgSW5saW5lV2VzdEJs
b2NrU291dGggPSBNQUtFX1RFWFRfRkxPVyhUb3BUb0JvdHRvbVdyaXRpbmdNb2RlLCBUZXh0RGly
ZWN0aW9uOjpSVEwpLAorICAgIElubGluZUVhc3RCbG9ja05vcnRoID0gTUFLRV9URVhUX0ZMT1co
Qm90dG9tVG9Ub3BXcml0aW5nTW9kZSwgVGV4dERpcmVjdGlvbjo6TFRSKSwKKyAgICBJbmxpbmVX
ZXN0QmxvY2tOb3J0aCA9IE1BS0VfVEVYVF9GTE9XKEJvdHRvbVRvVG9wV3JpdGluZ01vZGUsIFRl
eHREaXJlY3Rpb246OlJUTCksCisgICAgSW5saW5lU291dGhCbG9ja0Vhc3QgPSBNQUtFX1RFWFRf
RkxPVyhMZWZ0VG9SaWdodFdyaXRpbmdNb2RlLCBUZXh0RGlyZWN0aW9uOjpMVFIpLAorICAgIElu
bGluZVNvdXRoQmxvY2tXZXN0ID0gTUFLRV9URVhUX0ZMT1coTGVmdFRvUmlnaHRXcml0aW5nTW9k
ZSwgVGV4dERpcmVjdGlvbjo6UlRMKSwKKyAgICBJbmxpbmVOb3J0aEJsb2NrRWFzdCA9IE1BS0Vf
VEVYVF9GTE9XKFJpZ2h0VG9MZWZ0V3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb246OkxUUiksCisg
ICAgSW5saW5lTm9ydGhCbG9ja1dlc3QgPSBNQUtFX1RFWFRfRkxPVyhSaWdodFRvTGVmdFdyaXRp
bmdNb2RlLCBUZXh0RGlyZWN0aW9uOjpSVEwpCiB9OwogCiBpbmxpbmUgVGV4dEZsb3cgbWFrZVRl
eHRGbG93KFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbikK
QEAgLTkxLDEzICs5MSwxMyBAQCBpbmxpbmUgYm9vbCBpc1ZlcnRpY2FsVGV4dEZsb3coVGV4dEZs
b3cgCiAvLyBMaW5lcyBoYXZlIHZlcnRpY2FsIG9yaWVudGF0aW9uOyBtb2RlcyB2ZXJ0aWNhbC1s
ciBvciB2ZXJ0aWNhbC1ybC4KIGlubGluZSBib29sIGlzVmVydGljYWxXcml0aW5nTW9kZShXcml0
aW5nTW9kZSB3cml0aW5nTW9kZSkKIHsKLSAgICByZXR1cm4gaXNWZXJ0aWNhbFRleHRGbG93KG1h
a2VUZXh0Rmxvdyh3cml0aW5nTW9kZSwgTFRSKSk7CisgICAgcmV0dXJuIGlzVmVydGljYWxUZXh0
RmxvdyhtYWtlVGV4dEZsb3cod3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb246OkxUUikpOwogfQog
CiAvLyBCbG9jayBwcm9ncmVzc2lvbiBpbmNyZWFzZXMgaW4gdGhlIG9wcG9zaXRlIGRpcmVjdGlv
biB0byBub3JtYWw7IG1vZGVzIHZlcnRpY2FsLXJsIG9yIGhvcml6b250YWwtYnQuCiBpbmxpbmUg
Ym9vbCBpc0ZsaXBwZWRXcml0aW5nTW9kZShXcml0aW5nTW9kZSB3cml0aW5nTW9kZSkKIHsKLSAg
ICByZXR1cm4gaXNGbGlwcGVkVGV4dEZsb3cobWFrZVRleHRGbG93KHdyaXRpbmdNb2RlLCBMVFIp
KTsKKyAgICByZXR1cm4gaXNGbGlwcGVkVGV4dEZsb3cobWFrZVRleHRGbG93KHdyaXRpbmdNb2Rl
LCBUZXh0RGlyZWN0aW9uOjpMVFIpKTsKIH0KIAogLy8gTGluZXMgaGF2ZSBob3Jpem9udGFsIG9y
aWVudGF0aW9uOyBtb2RlcyBob3Jpem9udGFsLXRiIG9yIGhvcml6b250YWwtYnQuCkBAIC0xNjEs
NyArMTYxLDcgQEAgaW5saW5lIFBoeXNpY2FsQm94U2lkZSBtYXBMb2dpY2FsU2lkZVRvUAogaW5s
aW5lIFBoeXNpY2FsQm94U2lkZSBtYXBMb2dpY2FsU2lkZVRvUGh5c2ljYWxTaWRlKFdyaXRpbmdN
b2RlIHdyaXRpbmdNb2RlLCBMb2dpY2FsQm94U2lkZSBsb2dpY2FsU2lkZSkKIHsKICAgICAvLyBT
ZXQgdGhlIGRpcmVjdGlvbiBzdWNoIHRoYXQgc2lkZSBpcyBtaXJyb3JlZCBpZiBpc0ZsaXBwZWRX
cml0aW5nTW9kZSgpIGlzIHRydWUKLSAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IGlzRmxp
cHBlZFdyaXRpbmdNb2RlKHdyaXRpbmdNb2RlKSA/IFJUTCA6IExUUjsKKyAgICBUZXh0RGlyZWN0
aW9uIGRpcmVjdGlvbiA9IGlzRmxpcHBlZFdyaXRpbmdNb2RlKHdyaXRpbmdNb2RlKSA/IFRleHRE
aXJlY3Rpb246OlJUTCA6IFRleHREaXJlY3Rpb246OkxUUjsKICAgICByZXR1cm4gbWFwTG9naWNh
bFNpZGVUb1BoeXNpY2FsU2lkZShtYWtlVGV4dEZsb3cod3JpdGluZ01vZGUsIGRpcmVjdGlvbiks
IGxvZ2ljYWxTaWRlKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRl
c3RSZXN1bHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRU
ZXN0UmVzdWx0LmNwcAkocmV2aXNpb24gMjM0NTE0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0hpdFRlc3RSZXN1bHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjAsNyArMjIwLDcgQEAg
U3RyaW5nIEhpdFRlc3RSZXN1bHQ6OnNlbGVjdGVkVGV4dCgpIGNvbgogCiBTdHJpbmcgSGl0VGVz
dFJlc3VsdDo6c3BlbGxpbmdUb29sVGlwKFRleHREaXJlY3Rpb24mIGRpcikgY29uc3QKIHsKLSAg
ICBkaXIgPSBMVFI7CisgICAgZGlyID0gVGV4dERpcmVjdGlvbjo6TFRSOwogICAgIC8vIFJldHVy
biB0aGUgdG9vbCB0aXAgc3RyaW5nIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHBvaW50LCBpZiBhbnku
IE9ubHkgbWFya2VycyBhc3NvY2lhdGVkIHdpdGggYmFkIGdyYW1tYXIKICAgICAvLyBjdXJyZW50
bHkgc3VwcGx5IHN0cmluZ3MsIGJ1dCBtYXliZSBzb21lZGF5IG1hcmtlcnMgYXNzb2NpYXRlZCB3
aXRoIG1pc3NwZWxsZWQgd29yZHMgd2lsbCBhbHNvLgogICAgIGlmICghbV9pbm5lck5vblNoYXJl
ZE5vZGUpCkBAIC0yNTEsNyArMjUxLDcgQEAgU3RyaW5nIEhpdFRlc3RSZXN1bHQ6OnJlcGxhY2Vk
U3RyaW5nKCkgYwogICAgIAogU3RyaW5nIEhpdFRlc3RSZXN1bHQ6OnRpdGxlKFRleHREaXJlY3Rp
b24mIGRpcikgY29uc3QKIHsKLSAgICBkaXIgPSBMVFI7CisgICAgZGlyID0gVGV4dERpcmVjdGlv
bjo6TFRSOwogICAgIC8vIEZpbmQgdGhlIHRpdGxlIGluIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBE
T00gbm9kZS4KICAgICAvLyBGb3IgPGFyZWE+IHRhZ3MgaW4gaW1hZ2UgbWFwcywgd2FsayB0aGUg
dHJlZSBmb3IgdGhlIDxhcmVhPiwgbm90IHRoZSA8aW1nPiB1c2luZyBpdC4KICAgICBmb3IgKE5v
ZGUqIHRpdGxlTm9kZSA9IG1faW5uZXJOb2RlLmdldCgpOyB0aXRsZU5vZGU7IHRpdGxlTm9kZSA9
IHRpdGxlTm9kZS0+cGFyZW50SW5Db21wb3NlZFRyZWUoKSkgewpAQCAtMjkwLDcgKzI5MCw3IEBA
IFN0cmluZyBIaXRUZXN0UmVzdWx0Ojppbm5lclRleHRJZlRydW5jYXQKICAgICAgICAgfQogICAg
IH0KIAotICAgIGRpciA9IExUUjsKKyAgICBkaXIgPSBUZXh0RGlyZWN0aW9uOjpMVFI7CiAgICAg
cmV0dXJuIFN0cmluZygpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5s
aW5lQm94LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJv
eC5oCShyZXZpc2lvbiAyMzQ1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5l
Qm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTIxOCw4ICsyMTgsOCBAQCBwdWJsaWM6CiAKICAgICB1
bnNpZ25lZCBjaGFyIGJpZGlMZXZlbCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0ZmllbGRzLmJpZGlF
bWJlZGRpbmdMZXZlbCgpOyB9CiAgICAgdm9pZCBzZXRCaWRpTGV2ZWwodW5zaWduZWQgY2hhciBs
ZXZlbCkgeyBtX2JpdGZpZWxkcy5zZXRCaWRpRW1iZWRkaW5nTGV2ZWwobGV2ZWwpOyB9Ci0gICAg
VGV4dERpcmVjdGlvbiBkaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBiaWRpTGV2ZWwoKSAlIDIg
PyBSVEwgOiBMVFI7IH0KLSAgICBib29sIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSBjb25zdCB7
IHJldHVybiBkaXJlY3Rpb24oKSA9PSBMVFI7IH0KKyAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlv
bigpIGNvbnN0IHsgcmV0dXJuIGJpZGlMZXZlbCgpICUgMiA/IFRleHREaXJlY3Rpb246OlJUTCA6
IFRleHREaXJlY3Rpb246OkxUUjsgfQorICAgIGJvb2wgaXNMZWZ0VG9SaWdodERpcmVjdGlvbigp
IGNvbnN0IHsgcmV0dXJuIGRpcmVjdGlvbigpID09IFRleHREaXJlY3Rpb246OkxUUjsgfQogICAg
IGludCBjYXJldExlZnRtb3N0T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gaXNMZWZ0VG9SaWdodERp
cmVjdGlvbigpID8gY2FyZXRNaW5PZmZzZXQoKSA6IGNhcmV0TWF4T2Zmc2V0KCk7IH0KICAgICBp
bnQgY2FyZXRSaWdodG1vc3RPZmZzZXQoKSBjb25zdCB7IHJldHVybiBpc0xlZnRUb1JpZ2h0RGly
ZWN0aW9uKCkgPyBjYXJldE1heE9mZnNldCgpIDogY2FyZXRNaW5PZmZzZXQoKTsgfQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCShyZXZpc2lvbiAy
MzQ1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEyNTEsNyArMTI1MSw3IEBAIHZvaWQgSW5saW5lRmxvd0JveDo6cGFp
bnRGaWxsTGF5ZXIoY29uc3QKICAgICAgICAgLy8gdGhlIHByZXZpb3VzIGxpbmUgbGVmdCBvZmYu
CiAgICAgICAgIExheW91dFVuaXQgbG9naWNhbE9mZnNldE9uTGluZSA9IDA7CiAgICAgICAgIExh
eW91dFVuaXQgdG90YWxMb2dpY2FsV2lkdGg7Ci0gICAgICAgIGlmIChyZW5kZXJlcigpLnN0eWxl
KCkuZGlyZWN0aW9uKCkgPT0gTFRSKSB7CisgICAgICAgIGlmIChyZW5kZXJlcigpLnN0eWxlKCku
ZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSKSB7CiAgICAgICAgICAgICBmb3IgKElu
bGluZUZsb3dCb3gqIGN1cnIgPSBwcmV2TGluZUJveCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+cHJl
dkxpbmVCb3goKSkKICAgICAgICAgICAgICAgICBsb2dpY2FsT2Zmc2V0T25MaW5lICs9IGN1cnIt
PmxvZ2ljYWxXaWR0aCgpOwogICAgICAgICAgICAgdG90YWxMb2dpY2FsV2lkdGggPSBsb2dpY2Fs
T2Zmc2V0T25MaW5lOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUl0ZXJh
dG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUl0ZXJh
dG9yLmgJKHJldmlzaW9uIDIzNDUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Jbmxp
bmVJdGVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDIsOCArMTQyLDggQEAgaW5saW5lIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBJbmxpbmVJdGVyYQogc3RhdGljIGlubGluZSBVQ2hhckRpcmVj
dGlvbiBlbWJlZENoYXJGcm9tRGlyZWN0aW9uKFRleHREaXJlY3Rpb24gZGlyZWN0aW9uLCBFVW5p
Y29kZUJpZGkgdW5pY29kZUJpZGkpCiB7CiAgICAgaWYgKHVuaWNvZGVCaWRpID09IEVtYmVkKQot
ICAgICAgICByZXR1cm4gZGlyZWN0aW9uID09IFJUTCA/IFVfUklHSFRfVE9fTEVGVF9FTUJFRERJ
TkcgOiBVX0xFRlRfVE9fUklHSFRfRU1CRURESU5HOwotICAgIHJldHVybiBkaXJlY3Rpb24gPT0g
UlRMID8gVV9SSUdIVF9UT19MRUZUX09WRVJSSURFIDogVV9MRUZUX1RPX1JJR0hUX09WRVJSSURF
OworICAgICAgICByZXR1cm4gZGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OlJUTCA/IFVfUklH
SFRfVE9fTEVGVF9FTUJFRERJTkcgOiBVX0xFRlRfVE9fUklHSFRfRU1CRURESU5HOworICAgIHJl
dHVybiBkaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6UlRMID8gVV9SSUdIVF9UT19MRUZUX09W
RVJSSURFIDogVV9MRUZUX1RPX1JJR0hUX09WRVJSSURFOwogfQogCiB0ZW1wbGF0ZSA8Y2xhc3Mg
T2JzZXJ2ZXI+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3gu
Y3BwCShyZXZpc2lvbiAyMzQ1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5l
VGV4dEJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5Miw3ICs1OTIsNyBAQCB2b2lkIElubGlu
ZVRleHRCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpCiAgICAgICAgICAgICBpZiAoIWlzSG9yaXpv
bnRhbCgpKSB7CiAgICAgICAgICAgICAgICAgdGV4dERlY29yYXRpb25TZWxlY3Rpb25DbGlwT3V0
UmVjdC5tb3ZlKDAsIGxvZ2ljYWxXaWR0aEJlZm9yZVJhbmdlKTsKICAgICAgICAgICAgICAgICB0
ZXh0RGVjb3JhdGlvblNlbGVjdGlvbkNsaXBPdXRSZWN0LnNldEhlaWdodChsb2dpY2FsU2VsZWN0
aW9uV2lkdGgpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChkaXJlY3Rpb24oKSA9PSBSVEwpIHsK
KyAgICAgICAgICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6UlRM
KSB7CiAgICAgICAgICAgICAgICAgdGV4dERlY29yYXRpb25TZWxlY3Rpb25DbGlwT3V0UmVjdC5t
b3ZlKGxvZ2ljYWxXaWR0aEFmdGVyUmFuZ2UsIDApOwogICAgICAgICAgICAgICAgIHRleHREZWNv
cmF0aW9uU2VsZWN0aW9uQ2xpcE91dFJlY3Quc2V0V2lkdGgobG9naWNhbFNlbGVjdGlvbldpZHRo
KTsKICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC0xMTM4LDcgKzExMzgsNyBAQCB2b2lkIElubGlu
ZVRleHRCb3g6OnBhaW50Q29tcG9zaXRpb25VbmRlCiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBtaXJy
b3JSVExTZWdtZW50KGZsb2F0IGxvZ2ljYWxXaWR0aCwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24s
IGZsb2F0JiBzdGFydCwgZmxvYXQgd2lkdGgpCiB7Ci0gICAgaWYgKGRpcmVjdGlvbiA9PSBMVFIp
CisgICAgaWYgKGRpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpCiAgICAgICAgIHJldHVy
bjsKICAgICBzdGFydCA9IGxvZ2ljYWxXaWR0aCAtIHdpZHRoIC0gc3RhcnQ7CiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHJldmlzaW9uIDIzNDUxNCkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMwOTUsNyArMzA5NSw3IEBAIGNvbnN0IGNoYXIqIFJlbmRlckJsb2NrOjpyZW5kZXJO
YW1lKCkgY28KIAogVGV4dFJ1biBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihTdHJpbmdW
aWV3IHN0cmluZ1ZpZXcsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgRXhwYW5zaW9uQmVoYXZp
b3IgZXhwYW5zaW9uLCBUZXh0UnVuRmxhZ3MgZmxhZ3MpCiB7Ci0gICAgVGV4dERpcmVjdGlvbiB0
ZXh0RGlyZWN0aW9uID0gTFRSOworICAgIGF1dG8gdGV4dERpcmVjdGlvbiA9IFRleHREaXJlY3Rp
b246OkxUUjsKICAgICBib29sIGRpcmVjdGlvbmFsT3ZlcnJpZGUgPSBzdHlsZS5ydGxPcmRlcmlu
ZygpID09IE9yZGVyOjpWaXN1YWw7CiAgICAgaWYgKGZsYWdzICE9IERlZmF1bHRUZXh0UnVuRmxh
Z3MpIHsKICAgICAgICAgaWYgKGZsYWdzICYgUmVzcGVjdERpcmVjdGlvbikKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCShy
ZXZpc2lvbiAyMzQ1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tM
aW5lTGF5b3V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAsMTEgKzYwLDExIEBAIHN0YXRpYyB2
b2lkIGRldGVybWluZURpcmVjdGlvbmFsaXR5KFRleHQKICAgICAgICAgaWYgKFVDaGFyIGN1cnJl
bnQgPSBpdGVyLmN1cnJlbnQoKSkgewogICAgICAgICAgICAgVUNoYXJEaXJlY3Rpb24gY2hhckRp
cmVjdGlvbiA9IHVfY2hhckRpcmVjdGlvbihjdXJyZW50KTsKICAgICAgICAgICAgIGlmIChjaGFy
RGlyZWN0aW9uID09IFVfTEVGVF9UT19SSUdIVCkgewotICAgICAgICAgICAgICAgIGRpciA9IExU
UjsKKyAgICAgICAgICAgICAgICBkaXIgPSBUZXh0RGlyZWN0aW9uOjpMVFI7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGNoYXJEaXJlY3Rp
b24gPT0gVV9SSUdIVF9UT19MRUZUIHx8IGNoYXJEaXJlY3Rpb24gPT0gVV9SSUdIVF9UT19MRUZU
X0FSQUJJQykgewotICAgICAgICAgICAgICAgIGRpciA9IFJUTDsKKyAgICAgICAgICAgICAgICBk
aXIgPSBUZXh0RGlyZWN0aW9uOjpSVEw7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CkBAIC0zNDgsNyArMzQ4LDcgQEAgVGV4dEFsaWduTW9kZSBSZW5k
ZXJCbG9ja0Zsb3c6OnRleHRBbGlnbgogI2lmIEVOQUJMRShDU1MzX1RFWFQpCiAgICAgVGV4dEp1
c3RpZnkgdGV4dEp1c3RpZnkgPSBzdHlsZSgpLnRleHRKdXN0aWZ5KCk7CiAgICAgaWYgKGFsaWdu
bWVudCA9PSBUZXh0QWxpZ25Nb2RlOjpKdXN0aWZ5ICYmIHRleHRKdXN0aWZ5ID09IFRleHRKdXN0
aWZ5OjpOb25lKQotICAgICAgICByZXR1cm4gc3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBMVFIgPyBU
ZXh0QWxpZ25Nb2RlOjpMZWZ0IDogVGV4dEFsaWduTW9kZTo6UmlnaHQ7CisgICAgICAgIHJldHVy
biBzdHlsZSgpLmRpcmVjdGlvbigpID09IFRleHREaXJlY3Rpb246OkxUUiA/IFRleHRBbGlnbk1v
ZGU6OkxlZnQgOiBUZXh0QWxpZ25Nb2RlOjpSaWdodDsKICNlbmRpZgogCiAgICAgaWYgKGVuZHNX
aXRoU29mdEJyZWFrKQpAQCAtNjUwLDEzICs2NTAsMTMgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6
OnVwZGF0ZUxvZ2ljYWxXaWR0aAogICAgICAgICB9CiAgICAgICAgIEZBTExUSFJPVUdIOwogICAg
IGNhc2UgVGV4dEFsaWduTW9kZTo6U3RhcnQ6Ci0gICAgICAgIGlmIChkaXJlY3Rpb24gPT0gTFRS
KQorICAgICAgICBpZiAoZGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUikKICAgICAgICAg
ICAgIHVwZGF0ZUxvZ2ljYWxXaWR0aEZvckxlZnRBbGlnbmVkQmxvY2soc3R5bGUoKS5pc0xlZnRU
b1JpZ2h0RGlyZWN0aW9uKCksIHRyYWlsaW5nU3BhY2VSdW4sIGxvZ2ljYWxMZWZ0LCB0b3RhbExv
Z2ljYWxXaWR0aCwgYXZhaWxhYmxlTG9naWNhbFdpZHRoKTsKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgdXBkYXRlTG9naWNhbFdpZHRoRm9yUmlnaHRBbGlnbmVkQmxvY2soc3R5bGUoKS5pc0xl
ZnRUb1JpZ2h0RGlyZWN0aW9uKCksIHRyYWlsaW5nU3BhY2VSdW4sIGxvZ2ljYWxMZWZ0LCB0b3Rh
bExvZ2ljYWxXaWR0aCwgYXZhaWxhYmxlTG9naWNhbFdpZHRoKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpFbmQ6Ci0gICAgICAgIGlmIChkaXJlY3Rpb24gPT0gTFRS
KQorICAgICAgICBpZiAoZGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUikKICAgICAgICAg
ICAgIHVwZGF0ZUxvZ2ljYWxXaWR0aEZvclJpZ2h0QWxpZ25lZEJsb2NrKHN0eWxlKCkuaXNMZWZ0
VG9SaWdodERpcmVjdGlvbigpLCB0cmFpbGluZ1NwYWNlUnVuLCBsb2dpY2FsTGVmdCwgdG90YWxM
b2dpY2FsV2lkdGgsIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7CiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIHVwZGF0ZUxvZ2ljYWxXaWR0aEZvckxlZnRBbGlnbmVkQmxvY2soc3R5bGUoKS5pc0xl
ZnRUb1JpZ2h0RGlyZWN0aW9uKCksIHRyYWlsaW5nU3BhY2VSdW4sIGxvZ2ljYWxMZWZ0LCB0b3Rh
bExvZ2ljYWxXaWR0aCwgYXZhaWxhYmxlTG9naWNhbFdpZHRoKTsKQEAgLTEwNjEsNyArMTA2MSw3
IEBAIGlubGluZSBCaWRpUnVuKiBSZW5kZXJCbG9ja0Zsb3c6OmhhbmRsZVQKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKICAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IHN0eWxlKCkuZGly
ZWN0aW9uKCk7Ci0gICAgYm9vbCBzaG91bGRSZW9yZGVyID0gdHJhaWxpbmdTcGFjZVJ1biAhPSAo
ZGlyZWN0aW9uID09IExUUiA/IGJpZGlSdW5zLmxhc3RSdW4oKSA6IGJpZGlSdW5zLmZpcnN0UnVu
KCkpOworICAgIGJvb2wgc2hvdWxkUmVvcmRlciA9IHRyYWlsaW5nU3BhY2VSdW4gIT0gKGRpcmVj
dGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBiaWRpUnVucy5sYXN0UnVuKCkgOiBiaWRpUnVu
cy5maXJzdFJ1bigpKTsKICAgICBpZiAoZmlyc3RTcGFjZSAhPSB0cmFpbGluZ1NwYWNlUnVuLT5z
dGFydCgpKSB7CiAgICAgICAgIEJpZGlDb250ZXh0KiBiYXNlQ29udGV4dCA9IGN1cnJlbnRDb250
ZXh0OwogICAgICAgICB3aGlsZSAoQmlkaUNvbnRleHQqIHBhcmVudCA9IGJhc2VDb250ZXh0LT5w
YXJlbnQoKSkKQEAgLTEwNzAsNyArMTA3MCw3IEBAIGlubGluZSBCaWRpUnVuKiBSZW5kZXJCbG9j
a0Zsb3c6OmhhbmRsZVQKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEJpZGlSdW4+IG5ld1RyYWls
aW5nUnVuID0gc3RkOjptYWtlX3VuaXF1ZTxCaWRpUnVuPihmaXJzdFNwYWNlLCB0cmFpbGluZ1Nw
YWNlUnVuLT5tX3N0b3AsIHRyYWlsaW5nU3BhY2VSdW4tPnJlbmRlcmVyKCksIGJhc2VDb250ZXh0
LCBVX09USEVSX05FVVRSQUwpOwogICAgICAgICB0cmFpbGluZ1NwYWNlUnVuLT5tX3N0b3AgPSBm
aXJzdFNwYWNlOwogICAgICAgICB0cmFpbGluZ1NwYWNlUnVuID0gbmV3VHJhaWxpbmdSdW4uZ2V0
KCk7Ci0gICAgICAgIGlmIChkaXJlY3Rpb24gPT0gTFRSKQorICAgICAgICBpZiAoZGlyZWN0aW9u
ID09IFRleHREaXJlY3Rpb246OkxUUikKICAgICAgICAgICAgIGJpZGlSdW5zLmFwcGVuZFJ1bihX
VEZNb3ZlKG5ld1RyYWlsaW5nUnVuKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGJpZGlS
dW5zLnByZXBlbmRSdW4oV1RGTW92ZShuZXdUcmFpbGluZ1J1bikpOwpAQCAtMTA3OSw3ICsxMDc5
LDcgQEAgaW5saW5lIEJpZGlSdW4qIFJlbmRlckJsb2NrRmxvdzo6aGFuZGxlVAogICAgIGlmICgh
c2hvdWxkUmVvcmRlcikKICAgICAgICAgcmV0dXJuIHRyYWlsaW5nU3BhY2VSdW47CiAKLSAgICBp
ZiAoZGlyZWN0aW9uID09IExUUikgeworICAgIGlmIChkaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlv
bjo6TFRSKSB7CiAgICAgICAgIGJpZGlSdW5zLm1vdmVSdW5Ub0VuZCh0cmFpbGluZ1NwYWNlUnVu
KTsKICAgICAgICAgdHJhaWxpbmdTcGFjZVJ1bi0+bV9sZXZlbCA9IDA7CiAgICAgfSBlbHNlIHsK
QEAgLTEzNzgsNyArMTM3OCw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpsYXlvdXRSdW5zQW5k
RmxvYXQKICAgICAgICAgICAgIGlmIChsYXN0Um9vdEJveCgpKQogICAgICAgICAgICAgICAgIGxh
c3RSb290Qm94KCktPnNldExpbmVCcmVha0luZm8oZW5kLnJlbmRlcmVyKCksIGVuZC5vZmZzZXQo
KSwgcmVzb2x2ZXIuc3RhdHVzKCkpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgVmlz
dWFsRGlyZWN0aW9uT3ZlcnJpZGUgb3ZlcnJpZGUgPSAoc3R5bGVUb1VzZS5ydGxPcmRlcmluZygp
ID09IE9yZGVyOjpWaXN1YWwgPyAoc3R5bGVUb1VzZS5kaXJlY3Rpb24oKSA9PSBMVFIgPyBWaXN1
YWxMZWZ0VG9SaWdodE92ZXJyaWRlIDogVmlzdWFsUmlnaHRUb0xlZnRPdmVycmlkZSkgOiBOb1Zp
c3VhbE92ZXJyaWRlKTsKKyAgICAgICAgICAgIFZpc3VhbERpcmVjdGlvbk92ZXJyaWRlIG92ZXJy
aWRlID0gKHN0eWxlVG9Vc2UucnRsT3JkZXJpbmcoKSA9PSBPcmRlcjo6VmlzdWFsID8gKHN0eWxl
VG9Vc2UuZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gVmlzdWFsTGVmdFRvUmln
aHRPdmVycmlkZSA6IFZpc3VhbFJpZ2h0VG9MZWZ0T3ZlcnJpZGUpIDogTm9WaXN1YWxPdmVycmlk
ZSk7CiAKICAgICAgICAgICAgIGlmIChpc05ld1VCQVBhcmFncmFwaCAmJiBzdHlsZVRvVXNlLnVu
aWNvZGVCaWRpKCkgPT0gUGxhaW50ZXh0ICYmICFyZXNvbHZlci5jb250ZXh0KCktPnBhcmVudCgp
KSB7CiAgICAgICAgICAgICAgICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBzdHlsZVRvVXNl
LmRpcmVjdGlvbigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAJ
KHJldmlzaW9uIDIzNDUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3gu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzMwLDcgKzMzMzAsNyBAQCBzdGF0aWMgdm9pZCBjb21w
dXRlSW5saW5lU3RhdGljRGlzdGFuY2UoCiAgICAgLy8gYm90aCAibGVmdCIgYW5kICJyaWdodCIg
cHJvcGVydGllcyBhcmUgImF1dG8iLCB3ZSBjYW4gY29uc2lkZXIgdGhhdCBvbmUgb2YKICAgICAv
LyB0aGVtIChkZXBlbmRpbmcgb24gdGhlIGRpcmVjdGlvbikgaXMgc2ltcGx5ICIwIi4KICAgICBp
ZiAocGFyZW50LT5pc1JlbmRlckdyaWQoKSAmJiBwYXJlbnQgPT0gY2hpbGQtPmNvbnRhaW5pbmdC
bG9jaygpKSB7Ci0gICAgICAgIGlmIChwYXJlbnREaXJlY3Rpb24gPT0gTFRSKQorICAgICAgICBp
ZiAocGFyZW50RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUikKICAgICAgICAgICAgIGxv
Z2ljYWxMZWZ0LnNldFZhbHVlKEZpeGVkLCAwKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
bG9naWNhbFJpZ2h0LnNldFZhbHVlKEZpeGVkLCAwKTsKQEAgLTMzMzgsNyArMzMzOCw3IEBAIHN0
YXRpYyB2b2lkIGNvbXB1dGVJbmxpbmVTdGF0aWNEaXN0YW5jZSgKICAgICB9CiAKICAgICAvLyBG
SVhNRTogVGhlIHN0YXRpYyBkaXN0YW5jZSBjb21wdXRhdGlvbiBoYXMgbm90IGJlZW4gcGF0Y2hl
ZCBmb3IgbWl4ZWQgd3JpdGluZyBtb2RlcyB5ZXQuCi0gICAgaWYgKHBhcmVudERpcmVjdGlvbiA9
PSBMVFIpIHsKKyAgICBpZiAocGFyZW50RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUikg
ewogICAgICAgICBMYXlvdXRVbml0IHN0YXRpY1Bvc2l0aW9uID0gY2hpbGQtPmxheWVyKCktPnN0
YXRpY0lubGluZVBvc2l0aW9uKCkgLSBjb250YWluZXJCbG9jay5ib3JkZXJMb2dpY2FsTGVmdCgp
OwogICAgICAgICBmb3IgKGF1dG8qIGN1cnJlbnQgPSBwYXJlbnQ7IGN1cnJlbnQgJiYgY3VycmVu
dCAhPSAmY29udGFpbmVyQmxvY2s7IGN1cnJlbnQgPSBjdXJyZW50LT5jb250YWluZXIoKSkgewog
ICAgICAgICAgICAgaWYgKCFpczxSZW5kZXJCb3g+KCpjdXJyZW50KSkKQEAgLTM1OTcsNyArMzU5
Nyw3IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWwKICAgICAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8gVXNlIHRoZSBjb250YWluaW5nIGJsb2Nr
J3MgZGlyZWN0aW9uIHJhdGhlciB0aGFuIHRoZSBwYXJlbnQgYmxvY2sncwogICAgICAgICAgICAg
ICAgIC8vIHBlciBDU1MgMi4xIHJlZmVyZW5jZSB0ZXN0IGFic3Bvcy1ub24tcmVwbGFjZWQtd2lk
dGgtbWFyZ2luLTAwMC4KLSAgICAgICAgICAgICAgICBpZiAoY29udGFpbmVyRGlyZWN0aW9uID09
IExUUikgeworICAgICAgICAgICAgICAgIGlmIChjb250YWluZXJEaXJlY3Rpb24gPT0gVGV4dERp
cmVjdGlvbjo6TFRSKSB7CiAgICAgICAgICAgICAgICAgICAgIG1hcmdpbkxvZ2ljYWxMZWZ0VmFs
dWUgPSAwOwogICAgICAgICAgICAgICAgICAgICBtYXJnaW5Mb2dpY2FsUmlnaHRWYWx1ZSA9IGF2
YWlsYWJsZVNwYWNlOyAvLyB3aWxsIGJlIG5lZ2F0aXZlCiAgICAgICAgICAgICAgICAgfSBlbHNl
IHsKQEAgLTM2MjAsNyArMzYyMCw3IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25l
ZExvZ2ljYWwKIAogICAgICAgICAgICAgLy8gVXNlIHRoZSBjb250YWluaW5nIGJsb2NrJ3MgZGly
ZWN0aW9uIHJhdGhlciB0aGFuIHRoZSBwYXJlbnQgYmxvY2sncwogICAgICAgICAgICAgLy8gcGVy
IENTUyAyLjEgcmVmZXJlbmNlIHRlc3QgYWJzcG9zLW5vbi1yZXBsYWNlZC13aWR0aC1tYXJnaW4t
MDAwLgotICAgICAgICAgICAgaWYgKGNvbnRhaW5lckRpcmVjdGlvbiA9PSBSVEwpCisgICAgICAg
ICAgICBpZiAoY29udGFpbmVyRGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OlJUTCkKICAgICAg
ICAgICAgICAgICBsb2dpY2FsTGVmdFZhbHVlID0gKGF2YWlsYWJsZVNwYWNlICsgbG9naWNhbExl
ZnRWYWx1ZSkgLSBtYXJnaW5Mb2dpY2FsTGVmdFZhbHVlIC0gbWFyZ2luTG9naWNhbFJpZ2h0VmFs
dWU7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewpAQCAtNDA5NSw3ICs0MDk1LDcgQEAgdm9pZCBS
ZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbAogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgLy8gVXNlIHRoZSBjb250YWluaW5nIGJsb2NrJ3MgZGlyZWN0aW9uIHJhdGhlciB0
aGFuIHRoZSBwYXJlbnQgYmxvY2sncwogICAgICAgICAgICAgLy8gcGVyIENTUyAyLjEgcmVmZXJl
bmNlIHRlc3QgYWJzcG9zLXJlcGxhY2VkLXdpZHRoLW1hcmdpbi0wMDAuCi0gICAgICAgICAgICBp
ZiAoY29udGFpbmVyRGlyZWN0aW9uID09IExUUikgeworICAgICAgICAgICAgaWYgKGNvbnRhaW5l
ckRpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpIHsKICAgICAgICAgICAgICAgICBtYXJn
aW5Mb2dpY2FsTGVmdEFsaWFzID0gMDsKICAgICAgICAgICAgICAgICBtYXJnaW5Mb2dpY2FsUmln
aHRBbGlhcyA9IGRpZmZlcmVuY2U7IC8vIHdpbGwgYmUgbmVnYXRpdmUKICAgICAgICAgICAgIH0g
ZWxzZSB7CkBAIC00MTQzLDcgKzQxNDMsNyBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0
aW9uZWRMb2dpY2FsCiAgICAgICAgIGxvZ2ljYWxSaWdodFZhbHVlID0gdmFsdWVGb3JMZW5ndGgo
bG9naWNhbFJpZ2h0LCBjb250YWluZXJMb2dpY2FsV2lkdGgpOwogICAgICAgICBsb2dpY2FsTGVm
dFZhbHVlID0gdmFsdWVGb3JMZW5ndGgobG9naWNhbExlZnQsIGNvbnRhaW5lckxvZ2ljYWxXaWR0
aCk7CiAgICAgICAgIC8vIElmIHRoZSBjb250YWluaW5nIGJsb2NrIGlzIHJpZ2h0LXRvLWxlZnQs
IHRoZW4gcHVzaCB0aGUgbGVmdCBwb3NpdGlvbiBhcyBmYXIgdG8gdGhlIHJpZ2h0IGFzIHBvc3Np
YmxlCi0gICAgICAgIGlmIChjb250YWluZXJEaXJlY3Rpb24gPT0gUlRMKSB7CisgICAgICAgIGlm
IChjb250YWluZXJEaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6UlRMKSB7CiAgICAgICAgICAg
ICBpbnQgdG90YWxMb2dpY2FsV2lkdGggPSBjb21wdXRlZFZhbHVlcy5tX2V4dGVudCArIGxvZ2lj
YWxMZWZ0VmFsdWUgKyBsb2dpY2FsUmlnaHRWYWx1ZSArICBtYXJnaW5Mb2dpY2FsTGVmdEFsaWFz
ICsgbWFyZ2luTG9naWNhbFJpZ2h0QWxpYXM7CiAgICAgICAgICAgICBsb2dpY2FsTGVmdFZhbHVl
ID0gY29udGFpbmVyTG9naWNhbFdpZHRoIC0gKHRvdGFsTG9naWNhbFdpZHRoIC0gbG9naWNhbExl
ZnRWYWx1ZSk7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCShyZXZpc2lvbiAyMzQ1
MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxl
Qm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTc2LDcgKzk3Niw3IEBAIHZvaWQgUmVuZGVyRGVw
cmVjYXRlZEZsZXhpYmxlQm94OjphcHBseUwKICAgICAgICAgY2hpbGQtPmxheW91dElmTmVlZGVk
KCk7CiAKICAgICAgICAgLy8gRklYTUU6IEZvciBub3cgZG9uJ3Qgc3VwcG9ydCBSVEwuCi0gICAg
ICAgIGlmIChzdHlsZSgpLmRpcmVjdGlvbigpICE9IExUUikKKyAgICAgICAgaWYgKHN0eWxlKCku
ZGlyZWN0aW9uKCkgIT0gVGV4dERpcmVjdGlvbjo6TFRSKQogICAgICAgICAgICAgY29udGludWU7
CiAKICAgICAgICAgLy8gR2V0IHRoZSBsYXN0IGxpbmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGcmFnbWVudGVkRmxvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50ZWRGbG93LmNwcAkocmV2aXNpb24gMjM0NTE0
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50ZWRGbG93LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTY4LDcgKzE2OCw3IEBAIHZvaWQgUmVuZGVyRnJhZ21lbnRlZEZs
b3c6OnVwZGF0ZUxvZ2ljYWwKICAgICAvLyBJZiB0aGUgZnJhZ21lbnRzIGhhdmUgbm9uLXVuaWZv
cm0gbG9naWNhbCB3aWR0aHMsIHRoZW4gaW5zZXJ0IGluc2V0IGluZm9ybWF0aW9uIGZvciB0aGUg
UmVuZGVyRnJhZ21lbnRlZEZsb3cuCiAgICAgZm9yIChhdXRvJiBmcmFnbWVudCA6IG1fZnJhZ21l
bnRMaXN0KSB7CiAgICAgICAgIExheW91dFVuaXQgZnJhZ21lbnRMb2dpY2FsV2lkdGggPSBmcmFn
bWVudC0+cGFnZUxvZ2ljYWxXaWR0aCgpOwotICAgICAgICBMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0
ID0gc3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBMVFIgPyBMYXlvdXRVbml0KCkgOiBsb2dpY2FsV2lk
dGggLSBmcmFnbWVudExvZ2ljYWxXaWR0aDsKKyAgICAgICAgTGF5b3V0VW5pdCBsb2dpY2FsTGVm
dCA9IHN0eWxlKCkuZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gTGF5b3V0VW5p
dCgpIDogbG9naWNhbFdpZHRoIC0gZnJhZ21lbnRMb2dpY2FsV2lkdGg7CiAgICAgICAgIGZyYWdt
ZW50LT5zZXRSZW5kZXJCb3hGcmFnbWVudEluZm8odGhpcywgbG9naWNhbExlZnQsIGZyYWdtZW50
TG9naWNhbFdpZHRoLCBmYWxzZSk7CiAgICAgfQogfQpAQCAtNzg3LDcgKzc4Nyw3IEBAIHZvaWQg
UmVuZGVyRnJhZ21lbnRlZEZsb3c6OnVwZGF0ZUZyYWdtZW4KICAgICAgICAgTGF5b3V0VW5pdCBm
cmFnbWVudExvZ2ljYWxXaWR0aCA9IGZyYWdtZW50LT5wYWdlTG9naWNhbFdpZHRoKCk7CiAgICAg
ICAgIExheW91dFVuaXQgZnJhZ21lbnRMb2dpY2FsSGVpZ2h0ID0gc3RkOjptaW48TGF5b3V0VW5p
dD4oUmVuZGVyRnJhZ21lbnRlZEZsb3c6Om1heExvZ2ljYWxIZWlnaHQoKSAtIGxvZ2ljYWxIZWln
aHQsIGZyYWdtZW50LT5sb2dpY2FsSGVpZ2h0T2ZBbGxGcmFnbWVudGVkRmxvd0NvbnRlbnQoKSk7
CiAKLSAgICAgICAgTGF5b3V0UmVjdCBmcmFnbWVudFJlY3Qoc3R5bGUoKS5kaXJlY3Rpb24oKSA9
PSBMVFIgPyBMYXlvdXRVbml0KCkgOiBsb2dpY2FsV2lkdGgoKSAtIGZyYWdtZW50TG9naWNhbFdp
ZHRoLCBsb2dpY2FsSGVpZ2h0LCBmcmFnbWVudExvZ2ljYWxXaWR0aCwgZnJhZ21lbnRMb2dpY2Fs
SGVpZ2h0KTsKKyAgICAgICAgTGF5b3V0UmVjdCBmcmFnbWVudFJlY3Qoc3R5bGUoKS5kaXJlY3Rp
b24oKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBMYXlvdXRVbml0KCkgOiBsb2dpY2FsV2lkdGgo
KSAtIGZyYWdtZW50TG9naWNhbFdpZHRoLCBsb2dpY2FsSGVpZ2h0LCBmcmFnbWVudExvZ2ljYWxX
aWR0aCwgZnJhZ21lbnRMb2dpY2FsSGVpZ2h0KTsKIAogICAgICAgICBmcmFnbWVudC0+c2V0RnJh
Z21lbnRlZEZsb3dQb3J0aW9uUmVjdChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gZnJhZ21l
bnRSZWN0IDogZnJhZ21lbnRSZWN0LnRyYW5zcG9zZWRSZWN0KCkpOwogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwCShy
ZXZpc2lvbiAyMzQ1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NSw3ICsyNDUsNyBAQCBib29sIFJl
bmRlckxheWVyTW9kZWxPYmplY3Q6OnNob3VsZFBsYWNlCiAgICAgY2FzZSBVc2VySW50ZXJmYWNl
RGlyZWN0aW9uUG9saWN5OjpDb250ZW50OgogICAgICAgICByZXR1cm4gc3R5bGUoKS5zaG91bGRQ
bGFjZUJsb2NrRGlyZWN0aW9uU2Nyb2xsYmFyT25MZWZ0KCk7CiAgICAgY2FzZSBVc2VySW50ZXJm
YWNlRGlyZWN0aW9uUG9saWN5OjpTeXN0ZW06Ci0gICAgICAgIHJldHVybiBzZXR0aW5ncygpLnN5
c3RlbUxheW91dERpcmVjdGlvbigpID09IFJUTDsKKyAgICAgICAgcmV0dXJuIHNldHRpbmdzKCku
c3lzdGVtTGF5b3V0RGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6UlRMOwogICAgIH0KICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gc3R5bGUoKS5zaG91bGRQbGFjZUJs
b2NrRGlyZWN0aW9uU2Nyb2xsYmFyT25MZWZ0KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTWFycXVlZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck1hcnF1ZWUuY3BwCShyZXZpc2lvbiAyMzQ1MTQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTWFycXVlZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNCw5
ICsxMDQsOSBAQCBNYXJxdWVlRGlyZWN0aW9uIFJlbmRlck1hcnF1ZWU6OmRpcmVjdGlvCiAgICAg
aWYgKHJlc3VsdCA9PSBNYXJxdWVlRGlyZWN0aW9uOjpBdXRvKQogICAgICAgICByZXN1bHQgPSBN
YXJxdWVlRGlyZWN0aW9uOjpCYWNrd2FyZDsKICAgICBpZiAocmVzdWx0ID09IE1hcnF1ZWVEaXJl
Y3Rpb246OkZvcndhcmQpCi0gICAgICAgIHJlc3VsdCA9IChkaXIgPT0gTFRSKSA/IE1hcnF1ZWVE
aXJlY3Rpb246OlJpZ2h0IDogTWFycXVlZURpcmVjdGlvbjo6TGVmdDsKKyAgICAgICAgcmVzdWx0
ID0gKGRpciA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpID8gTWFycXVlZURpcmVjdGlvbjo6UmlnaHQg
OiBNYXJxdWVlRGlyZWN0aW9uOjpMZWZ0OwogICAgIGlmIChyZXN1bHQgPT0gTWFycXVlZURpcmVj
dGlvbjo6QmFja3dhcmQpCi0gICAgICAgIHJlc3VsdCA9IChkaXIgPT0gTFRSKSA/IE1hcnF1ZWVE
aXJlY3Rpb246OkxlZnQgOiBNYXJxdWVlRGlyZWN0aW9uOjpSaWdodDsKKyAgICAgICAgcmVzdWx0
ID0gKGRpciA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpID8gTWFycXVlZURpcmVjdGlvbjo6TGVmdCA6
IE1hcnF1ZWVEaXJlY3Rpb246OlJpZ2h0OwogICAgIAogICAgIC8vIE5vdyB3ZSBoYXZlIHRoZSBy
ZWFsIGRpcmVjdGlvbi4gIE5leHQgd2UgY2hlY2sgdG8gc2VlIGlmIHRoZSBpbmNyZW1lbnQgaXMg
bmVnYXRpdmUuCiAgICAgLy8gSWYgc28sIHRoZW4gd2UgcmV2ZXJzZSB0aGUgZGlyZWN0aW9uLgpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCShyZXZp
c2lvbiAyMzQ1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBSZW5kZXJNZW51TGlz
dDo6YWRqdXN0SW5uZXJTdHlsZSgpCiAgICAgICAgIC8vIEl0ZW1zIGluIHRoZSBwb3B1cCB3aWxs
IG5vdCByZXNwZWN0IHRoZSBDU1MgdGV4dC1hbGlnbiBhbmQgZGlyZWN0aW9uIHByb3BlcnRpZXMs
CiAgICAgICAgIC8vIHNvIHdlIG11c3QgYWRqdXN0IG91ciBvd24gc3R5bGUgdG8gbWF0Y2guCiAg
ICAgICAgIGlubmVyU3R5bGUuc2V0VGV4dEFsaWduKFRleHRBbGlnbk1vZGU6OkxlZnQpOwotICAg
ICAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IChtX2J1dHRvblRleHQgJiYgbV9idXR0b25U
ZXh0LT50ZXh0KCkuZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oKSA9PSBVX1JJR0hUX1RPX0xFRlQp
ID8gUlRMIDogTFRSOworICAgICAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IChtX2J1dHRv
blRleHQgJiYgbV9idXR0b25UZXh0LT50ZXh0KCkuZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oKSA9
PSBVX1JJR0hUX1RPX0xFRlQpID8gVGV4dERpcmVjdGlvbjo6UlRMIDogVGV4dERpcmVjdGlvbjo6
TFRSOwogICAgICAgICBpbm5lclN0eWxlLnNldERpcmVjdGlvbihkaXJlY3Rpb24pOwogI2lmIFBM
QVRGT1JNKElPUykKICAgICB9IGVsc2UgaWYgKGRvY3VtZW50KCkucGFnZSgpLT5jaHJvbWUoKS5z
ZWxlY3RJdGVtQWxpZ25tZW50Rm9sbG93c01lbnVXcml0aW5nRGlyZWN0aW9uKCkpIHsKQEAgLTEz
Niw3ICsxMzYsNyBAQCB2b2lkIFJlbmRlck1lbnVMaXN0OjphZGp1c3RJbm5lclN0eWxlKCkKICAg
ICAgICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb247CiAgICAgICAgIEVVbmljb2RlQmlkaSB1bmlj
b2RlQmlkaTsKICAgICAgICAgaWYgKG11bHRpcGxlKCkgJiYgc2VsZWN0ZWRPcHRpb25Db3VudCgq
dGhpcykgIT0gMSkgewotICAgICAgICAgICAgZGlyZWN0aW9uID0gKG1fYnV0dG9uVGV4dCAmJiBt
X2J1dHRvblRleHQtPnRleHQoKS5kZWZhdWx0V3JpdGluZ0RpcmVjdGlvbigpID09IFVfUklHSFRf
VE9fTEVGVCkgPyBSVEwgOiBMVFI7CisgICAgICAgICAgICBkaXJlY3Rpb24gPSAobV9idXR0b25U
ZXh0ICYmIG1fYnV0dG9uVGV4dC0+dGV4dCgpLmRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKCkgPT0g
VV9SSUdIVF9UT19MRUZUKSA/IFRleHREaXJlY3Rpb246OlJUTCA6IFRleHREaXJlY3Rpb246OkxU
UjsKICAgICAgICAgICAgIHVuaWNvZGVCaWRpID0gVUJOb3JtYWw7CiAgICAgICAgIH0gZWxzZSBp
ZiAobV9vcHRpb25TdHlsZSkgewogICAgICAgICAgICAgZGlyZWN0aW9uID0gbV9vcHRpb25TdHls
ZS0+ZGlyZWN0aW9uKCk7CkBAIC01NzksNyArNTc5LDcgQEAgY29uc3QgaW50IGVuZE9mTGluZVBh
ZGRpbmcgPSAyOwogCiBMYXlvdXRVbml0IFJlbmRlck1lbnVMaXN0OjpjbGllbnRQYWRkaW5nTGVm
dCgpIGNvbnN0CiB7Ci0gICAgaWYgKChzdHlsZSgpLmFwcGVhcmFuY2UoKSA9PSBNZW51bGlzdFBh
cnQgfHwgc3R5bGUoKS5hcHBlYXJhbmNlKCkgPT0gTWVudWxpc3RCdXR0b25QYXJ0KSAmJiBzdHls
ZSgpLmRpcmVjdGlvbigpID09IFJUTCkgeworICAgIGlmICgoc3R5bGUoKS5hcHBlYXJhbmNlKCkg
PT0gTWVudWxpc3RQYXJ0IHx8IHN0eWxlKCkuYXBwZWFyYW5jZSgpID09IE1lbnVsaXN0QnV0dG9u
UGFydCkgJiYgc3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpSVEwpIHsKICAg
ICAgICAgLy8gRm9yIHRoZXNlIGFwcGVhcmFuY2UgdmFsdWVzLCB0aGUgdGhlbWUgYXBwbGllcyBw
YWRkaW5nIHRvIGxlYXZlIHJvb20gZm9yIHRoZQogICAgICAgICAvLyBkcm9wLWRvd24gYnV0dG9u
LiBCdXQgbGVhdmluZyByb29tIGZvciB0aGUgYnV0dG9uIGluc2lkZSB0aGUgcG9wdXAgbWVudSBp
dHNlbGYKICAgICAgICAgLy8gbG9va3Mgc3RyYW5nZSwgc28gd2UgcmV0dXJuIGEgc21hbGwgZGVm
YXVsdCBwYWRkaW5nIHRvIGF2b2lkIGhhdmluZyBhIGxhcmdlIGVtcHR5CkBAIC01OTMsNyArNTkz
LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJNZW51TGlzdDo6Y2xpZW50UGFkZGluZwogCiBMYXlvdXRV
bml0IFJlbmRlck1lbnVMaXN0OjpjbGllbnRQYWRkaW5nUmlnaHQoKSBjb25zdAogewotICAgIGlm
ICgoc3R5bGUoKS5hcHBlYXJhbmNlKCkgPT0gTWVudWxpc3RQYXJ0IHx8IHN0eWxlKCkuYXBwZWFy
YW5jZSgpID09IE1lbnVsaXN0QnV0dG9uUGFydCkgJiYgc3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBM
VFIpCisgICAgaWYgKChzdHlsZSgpLmFwcGVhcmFuY2UoKSA9PSBNZW51bGlzdFBhcnQgfHwgc3R5
bGUoKS5hcHBlYXJhbmNlKCkgPT0gTWVudWxpc3RCdXR0b25QYXJ0KSAmJiBzdHlsZSgpLmRpcmVj
dGlvbigpID09IFRleHREaXJlY3Rpb246OkxUUikKICAgICAgICAgcmV0dXJuIGVuZE9mTGluZVBh
ZGRpbmc7CiAKICAgICByZXR1cm4gcGFkZGluZ1JpZ2h0KCkgKyBtX2lubmVyQmxvY2stPnBhZGRp
bmdSaWdodCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9T
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlP
Uy5tbQkocmV2aXNpb24gMjM0NTE0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRoZW1lSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01MjksNyArNTI5LDcgQEAgY29uc3QgZmxv
YXQgTWVudUxpc3RCdXR0b25QYWRkaW5nQWZ0ZXIgPQogTGVuZ3RoQm94IFJlbmRlclRoZW1lSU9T
Ojpwb3B1cEludGVybmFsUGFkZGluZ0JveChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpIGNvbnN0
CiB7CiAgICAgaWYgKHN0eWxlLmFwcGVhcmFuY2UoKSA9PSBNZW51bGlzdEJ1dHRvblBhcnQpIHsK
LSAgICAgICAgaWYgKHN0eWxlLmRpcmVjdGlvbigpID09IFJUTCkKKyAgICAgICAgaWYgKHN0eWxl
LmRpcmVjdGlvbigpID09IFRleHREaXJlY3Rpb246OlJUTCkKICAgICAgICAgICAgIHJldHVybiB7
IDAsIDAsIDAsIHN0YXRpY19jYXN0PGludD4oTWVudUxpc3RCdXR0b25QYWRkaW5nQWZ0ZXIgKyBz
dHlsZS5ib3JkZXJUb3BXaWR0aCgpKSB9OwogICAgICAgICByZXR1cm4geyAwLCBzdGF0aWNfY2Fz
dDxpbnQ+KE1lbnVMaXN0QnV0dG9uUGFkZGluZ0FmdGVyICsgc3R5bGUuYm9yZGVyVG9wV2lkdGgo
KSksIDAsIDAgfTsKICAgICB9CkBAIC02MzAsNyArNjMwLDcgQEAgdm9pZCBSZW5kZXJUaGVtZUlP
Uzo6YWRqdXN0TWVudUxpc3RCdXR0bwogYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRNZW51TGlz
dEJ1dHRvbkRlY29yYXRpb25zKGNvbnN0IFJlbmRlckJveCYgYm94LCBjb25zdCBQYWludEluZm8m
IHBhaW50SW5mbywgY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewogICAgIGF1dG8mIHN0eWxlID0g
Ym94LnN0eWxlKCk7Ci0gICAgYm9vbCBpc1JUTCA9IHN0eWxlLmRpcmVjdGlvbigpID09IFJUTDsK
KyAgICBib29sIGlzUlRMID0gc3R5bGUuZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6UlRM
OwogICAgIGZsb2F0IGJvcmRlclRvcFdpZHRoID0gc3R5bGUuYm9yZGVyVG9wV2lkdGgoKTsKICAg
ICBGbG9hdFJlY3QgY2xpcChyZWN0LngoKSArIHN0eWxlLmJvcmRlckxlZnRXaWR0aCgpLCByZWN0
LnkoKSArIHN0eWxlLmJvcmRlclRvcFdpZHRoKCksIHJlY3Qud2lkdGgoKSAtIHN0eWxlLmJvcmRl
ckxlZnRXaWR0aCgpIC0gc3R5bGUuYm9yZGVyUmlnaHRXaWR0aCgpLCByZWN0LmhlaWdodCgpIC0g
c3R5bGUuYm9yZGVyVG9wV2lkdGgoKSAtIHN0eWxlLmJvcmRlckJvdHRvbVdpZHRoKCkpOwogICAg
IENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29u
dGV4dCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5t
bQkocmV2aXNpb24gMjM0NTE0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNDg0LDcgKzE0ODQsNyBAQCB2b2lkIFJlbmRl
clRoZW1lTWFjOjpwYWludE1lbnVMaXN0QnV0dG9uCiAKIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBh
aW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJCb3gmIHJlbmRlcmVyLCBj
b25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAg
IGJvb2wgaXNSVEwgPSByZW5kZXJlci5zdHlsZSgpLmRpcmVjdGlvbigpID09IFJUTDsKKyAgICBi
b29sIGlzUlRMID0gcmVuZGVyZXIuc3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9u
OjpSVEw7CiAgICAgSW50UmVjdCBib3VuZHMgPSBJbnRSZWN0KHJlY3QueCgpICsgcmVuZGVyZXIu
c3R5bGUoKS5ib3JkZXJMZWZ0V2lkdGgoKSwKICAgICAgICAgcmVjdC55KCkgKyByZW5kZXJlci5z
dHlsZSgpLmJvcmRlclRvcFdpZHRoKCksCiAgICAgICAgIHJlY3Qud2lkdGgoKSAtIHJlbmRlcmVy
LnN0eWxlKCkuYm9yZGVyTGVmdFdpZHRoKCkgLSByZW5kZXJlci5zdHlsZSgpLmJvcmRlclJpZ2h0
V2lkdGgoKSwKQEAgLTE1OTMsNyArMTU5Myw3IEBAIHZvaWQgUmVuZGVyVGhlbWVNYWM6OmFkanVz
dE1lbnVMaXN0U3R5bGUKIExlbmd0aEJveCBSZW5kZXJUaGVtZU1hYzo6cG9wdXBJbnRlcm5hbFBh
ZGRpbmdCb3goY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKSBjb25zdAogewogICAgIGlmIChzdHls
ZS5hcHBlYXJhbmNlKCkgPT0gTWVudWxpc3RQYXJ0KSB7Ci0gICAgICAgIGNvbnN0IGludCogcGFk
ZGluZyA9IHBvcHVwQnV0dG9uUGFkZGluZyhjb250cm9sU2l6ZUZvckZvbnQoc3R5bGUpLCBzdHls
ZS5kaXJlY3Rpb24oKSA9PSBSVEwpOworICAgICAgICBjb25zdCBpbnQqIHBhZGRpbmcgPSBwb3B1
cEJ1dHRvblBhZGRpbmcoY29udHJvbFNpemVGb3JGb250KHN0eWxlKSwgc3R5bGUuZGlyZWN0aW9u
KCkgPT0gVGV4dERpcmVjdGlvbjo6UlRMKTsKICAgICAgICAgcmV0dXJuIHsgc3RhdGljX2Nhc3Q8
aW50PihwYWRkaW5nW3RvcFBhZGRpbmddICogc3R5bGUuZWZmZWN0aXZlWm9vbSgpKSwKICAgICAg
ICAgICAgIHN0YXRpY19jYXN0PGludD4ocGFkZGluZ1tyaWdodFBhZGRpbmddICogc3R5bGUuZWZm
ZWN0aXZlWm9vbSgpKSwKICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludD4ocGFkZGluZ1tib3R0
b21QYWRkaW5nXSAqIHN0eWxlLmVmZmVjdGl2ZVpvb20oKSksCkBAIC0xNjA0LDcgKzE2MDQsNyBA
QCBMZW5ndGhCb3ggUmVuZGVyVGhlbWVNYWM6OnBvcHVwSW50ZXJuYWxQCiAgICAgICAgIGZsb2F0
IGFycm93V2lkdGggPSBiYXNlQXJyb3dXaWR0aCAqIChzdHlsZS5jb21wdXRlZEZvbnRQaXhlbFNp
emUoKSAvIGJhc2VGb250U2l6ZSk7CiAgICAgICAgIGZsb2F0IHJpZ2h0UGFkZGluZyA9IGNlaWxm
KGFycm93V2lkdGggKyAoYXJyb3dQYWRkaW5nQmVmb3JlICsgYXJyb3dQYWRkaW5nQWZ0ZXIgKyBw
YWRkaW5nQmVmb3JlU2VwYXJhdG9yKSAqIHN0eWxlLmVmZmVjdGl2ZVpvb20oKSk7CiAgICAgICAg
IGZsb2F0IGxlZnRQYWRkaW5nID0gc3R5bGVkUG9wdXBQYWRkaW5nTGVmdCAqIHN0eWxlLmVmZmVj
dGl2ZVpvb20oKTsKLSAgICAgICAgaWYgKHN0eWxlLmRpcmVjdGlvbigpID09IFJUTCkKKyAgICAg
ICAgaWYgKHN0eWxlLmRpcmVjdGlvbigpID09IFRleHREaXJlY3Rpb246OlJUTCkKICAgICAgICAg
ICAgIHN0ZDo6c3dhcChyaWdodFBhZGRpbmcsIGxlZnRQYWRkaW5nKTsKICAgICAgICAgcmV0dXJu
IHsgc3RhdGljX2Nhc3Q8aW50PihzdHlsZWRQb3B1cFBhZGRpbmdUb3AgKiBzdHlsZS5lZmZlY3Rp
dmVab29tKCkpLAogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50PihyaWdodFBhZGRpbmcpLApA
QCAtMTY1MSw3ICsxNjUxLDcgQEAgdm9pZCBSZW5kZXJUaGVtZU1hYzo6c2V0UG9wdXBCdXR0b25D
ZWxsUwogICAgIC8vIFNldCB0aGUgY29udHJvbCBzaXplIGJhc2VkIG9mZiB0aGUgcmVjdGFuZ2xl
IHdlJ3JlIHBhaW50aW5nIGludG8uCiAgICAgc2V0Q29udHJvbFNpemUocG9wdXBCdXR0b24sIHBv
cHVwQnV0dG9uU2l6ZXMoKSwgYnV0dG9uU2l6ZSwgby5zdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSk7
CiAKLSAgICBwb3B1cEJ1dHRvbi51c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uID0gby5zdHls
ZSgpLmRpcmVjdGlvbigpID09IExUUiA/IE5TVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbkxl
ZnRUb1JpZ2h0IDogTlNVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uUmlnaHRUb0xlZnQ7Cisg
ICAgcG9wdXBCdXR0b24udXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiA9IG8uc3R5bGUoKS5k
aXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBOU1VzZXJJbnRlcmZhY2VMYXlvdXRE
aXJlY3Rpb25MZWZ0VG9SaWdodCA6IE5TVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvblJpZ2h0
VG9MZWZ0OwogCiAgICAgLy8gVXBkYXRlIHRoZSB2YXJpb3VzIHN0YXRlcyB3ZSByZXNwb25kIHRv
LgogICAgIHVwZGF0ZUNoZWNrZWRTdGF0ZShwb3B1cEJ1dHRvbiwgbyk7CkBAIC0xOTMyLDcgKzE5
MzIsNyBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNlYXJjaEZpZWxkQ2FuCiAgICAgRmxv
YXRSZWN0IGxvY2FsQm91bmRzID0gYWRqdXN0ZWRDYW5jZWxCdXR0b25SZWN0KFtzZWFyY2ggY2Fu
Y2VsQnV0dG9uUmVjdEZvckJvdW5kczpOU1JlY3Qoc25hcHBlZEludFJlY3QoaW5wdXRCb3guY29u
dGVudEJveFJlY3QoKSkpXSk7CiAgICAgLy8gQWRqdXN0IHBvc2l0aW9uIGJhc2VkIG9uIHRoZSBj
b250ZW50IGRpcmVjdGlvbi4KICAgICBmbG9hdCBhZGp1c3RlZFhQb3NpdGlvbjsKLSAgICBpZiAo
Ym94LnN0eWxlKCkuZGlyZWN0aW9uKCkgPT0gUlRMKQorICAgIGlmIChib3guc3R5bGUoKS5kaXJl
Y3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpSVEwpCiAgICAgICAgIGFkanVzdGVkWFBvc2l0aW9u
ID0gaW5wdXRCb3guY29udGVudEJveFJlY3QoKS54KCk7CiAgICAgZWxzZQogICAgICAgICBhZGp1
c3RlZFhQb3NpdGlvbiA9IGlucHV0Qm94LmNvbnRlbnRCb3hSZWN0KCkubWF4WCgpIC0gbG9jYWxC
b3VuZHMuc2l6ZSgpLndpZHRoKCk7CkBAIC0yMDY4LDcgKzIwNjgsNyBAQCBib29sIFJlbmRlclRo
ZW1lTWFjOjpwYWludFNlYXJjaEZpZWxkUmVzCiAgICAgRmxvYXRSZWN0IGxvY2FsQm91bmRzID0g
YWRqdXN0ZWRSZXN1bHRCdXR0b25SZWN0KFtzZWFyY2ggc2VhcmNoQnV0dG9uUmVjdEZvckJvdW5k
czpOU1JlY3Qoc25hcHBlZEludFJlY3QoaW5wdXRCb3guY29udGVudEJveFJlY3QoKSkpXSk7CiAg
ICAgLy8gQWRqdXN0IHBvc2l0aW9uIGJhc2VkIG9uIHRoZSBjb250ZW50IGRpcmVjdGlvbi4KICAg
ICBmbG9hdCBhZGp1c3RlZFhQb3NpdGlvbjsKLSAgICBpZiAoYm94LnN0eWxlKCkuZGlyZWN0aW9u
KCkgPT0gUlRMKQorICAgIGlmIChib3guc3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0
aW9uOjpSVEwpCiAgICAgICAgIGFkanVzdGVkWFBvc2l0aW9uID0gaW5wdXRCb3guY29udGVudEJv
eFJlY3QoKS5tYXhYKCkgLSBsb2NhbEJvdW5kcy5zaXplKCkud2lkdGgoKTsKICAgICBlbHNlCiAg
ICAgICAgIGFkanVzdGVkWFBvc2l0aW9uID0gaW5wdXRCb3guY29udGVudEJveFJlY3QoKS54KCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJsb2Nr
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRl
ck1hdGhNTEJsb2NrLmNwcAkocmV2aXNpb24gMjM0NTE0KQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5
LDcgKzg5LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJNYXRoTUxCbG9jazo6bWF0aEF4aXNIZQogCiBM
YXlvdXRVbml0IFJlbmRlck1hdGhNTEJsb2NrOjptaXJyb3JJZk5lZWRlZChMYXlvdXRVbml0IGhv
cml6b250YWxPZmZzZXQsIExheW91dFVuaXQgYm94V2lkdGgpIGNvbnN0CiB7Ci0gICAgaWYgKHN0
eWxlKCkuZGlyZWN0aW9uKCkgPT0gUlRMKQorICAgIGlmIChzdHlsZSgpLmRpcmVjdGlvbigpID09
IFRleHREaXJlY3Rpb246OlJUTCkKICAgICAgICAgcmV0dXJuIGxvZ2ljYWxXaWR0aCgpIC0gYm94
V2lkdGggLSBob3Jpem9udGFsT2Zmc2V0OwogCiAgICAgcmV0dXJuIGhvcml6b250YWxPZmZzZXQ7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJh
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTE9wZXJhdG9yLmNwcAkocmV2aXNpb24gMjM0NTE0KQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIzOCw3ICsyMzgsNyBAQCB2b2lkIFJlbmRlck1hdGhNTE9wZXJhdG9yOjpsYXlvdXRC
bG9jayhiCiAgICAgICAgIHNldExvZ2ljYWxXaWR0aCh3aWR0aCk7CiAKICAgICAgICAgLy8gV2Ug
dGhlbiBtb3ZlIHRoZSBjaGlsZHJlbiB0byB0YWtlIHNwYWNpbmcgaW50byBhY2NvdW50LgotICAg
ICAgICBMYXlvdXRQb2ludCBob3Jpem9udGFsU2hpZnQoc3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBM
VFIgPyBsZWFkaW5nU3BhY2VWYWx1ZSA6IC1sZWFkaW5nU3BhY2VWYWx1ZSwgMCk7CisgICAgICAg
IExheW91dFBvaW50IGhvcml6b250YWxTaGlmdChzdHlsZSgpLmRpcmVjdGlvbigpID09IFRleHRE
aXJlY3Rpb246OkxUUiA/IGxlYWRpbmdTcGFjZVZhbHVlIDogLWxlYWRpbmdTcGFjZVZhbHVlLCAw
KTsKICAgICAgICAgZm9yIChhdXRvKiBjaGlsZCA9IGZpcnN0Q2hpbGRCb3goKTsgY2hpbGQ7IGNo
aWxkID0gY2hpbGQtPm5leHRTaWJsaW5nQm94KCkpCiAgICAgICAgICAgICBjaGlsZC0+c2V0TG9j
YXRpb24oY2hpbGQtPmxvY2F0aW9uKCkgKyBob3Jpem9udGFsU2hpZnQpOwogICAgIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAkocmV2
aXNpb24gMjM0NTE0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUyLDcgKzE1Miw3IEBAIFJlbmRlclN0eWxlOjpS
ZW5kZXJTdHlsZShDcmVhdGVEZWZhdWx0U3QKICNpZiBFTkFCTEUoQ1VSU09SX1ZJU0lCSUxJVFkp
CiAgICAgbV9pbmhlcml0ZWRGbGFncy5jdXJzb3JWaXNpYmlsaXR5ID0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KGluaXRpYWxDdXJzb3JWaXNpYmlsaXR5KCkpOwogI2VuZGlmCi0gICAgbV9pbmhlcml0
ZWRGbGFncy5kaXJlY3Rpb24gPSBpbml0aWFsRGlyZWN0aW9uKCk7CisgICAgbV9pbmhlcml0ZWRG
bGFncy5kaXJlY3Rpb24gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlhbERpcmVjdGlvbigp
KTsKICAgICBtX2luaGVyaXRlZEZsYWdzLndoaXRlU3BhY2UgPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oaW5pdGlhbFdoaXRlU3BhY2UoKSk7CiAgICAgbV9pbmhlcml0ZWRGbGFncy5ib3JkZXJDb2xs
YXBzZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbml0aWFsQm9yZGVyQ29sbGFwc2UoKSk7CiAg
ICAgbV9pbmhlcml0ZWRGbGFncy5ydGxPcmRlcmluZyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihp
bml0aWFsUlRMT3JkZXJpbmcoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGUuaAkocmV2aXNpb24gMjM0NTE0KQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4OCw3ICsz
ODgsNyBAQCBwdWJsaWM6CiAgICAgVGV4dFpvb20gdGV4dFpvb20oKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxUZXh0Wm9vbT4obV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFpvb20pOyB9CiAK
ICAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PFRleHREaXJlY3Rpb24+KG1faW5oZXJpdGVkRmxhZ3MuZGlyZWN0aW9uKTsgfQotICAgIGJvb2wg
aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIGRpcmVjdGlvbigpID09IExU
UjsgfQorICAgIGJvb2wgaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIGRp
cmVjdGlvbigpID09IFRleHREaXJlY3Rpb246OkxUUjsgfQogICAgIGJvb2wgaGFzRXhwbGljaXRs
eVNldERpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbm9uSW5oZXJpdGVkRmxhZ3MuaGFzRXhw
bGljaXRseVNldERpcmVjdGlvbjsgfQogCiAgICAgY29uc3QgTGVuZ3RoJiBzcGVjaWZpZWRMaW5l
SGVpZ2h0KCkgY29uc3Q7CkBAIC0xNDQyLDcgKzE0NDIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IENhcHRpb25TaWRlIGluaXRpYWxDYXB0aW9uU2lkZSgpIHsgcmV0dXJuIENhcHRpb25TaWRlOjpU
b3A7IH0KICAgICBzdGF0aWMgQ29sdW1uQXhpcyBpbml0aWFsQ29sdW1uQXhpcygpIHsgcmV0dXJu
IENvbHVtbkF4aXM6OkF1dG87IH0KICAgICBzdGF0aWMgQ29sdW1uUHJvZ3Jlc3Npb24gaW5pdGlh
bENvbHVtblByb2dyZXNzaW9uKCkgeyByZXR1cm4gQ29sdW1uUHJvZ3Jlc3Npb246Ok5vcm1hbDsg
fQotICAgIHN0YXRpYyBUZXh0RGlyZWN0aW9uIGluaXRpYWxEaXJlY3Rpb24oKSB7IHJldHVybiBM
VFI7IH0KKyAgICBzdGF0aWMgVGV4dERpcmVjdGlvbiBpbml0aWFsRGlyZWN0aW9uKCkgeyByZXR1
cm4gVGV4dERpcmVjdGlvbjo6TFRSOyB9CiAgICAgc3RhdGljIFdyaXRpbmdNb2RlIGluaXRpYWxX
cml0aW5nTW9kZSgpIHsgcmV0dXJuIFRvcFRvQm90dG9tV3JpdGluZ01vZGU7IH0KICAgICBzdGF0
aWMgVGV4dENvbWJpbmUgaW5pdGlhbFRleHRDb21iaW5lKCkgeyByZXR1cm4gVGV4dENvbWJpbmU6
Ok5vbmU7IH0KICAgICBzdGF0aWMgVGV4dE9yaWVudGF0aW9uIGluaXRpYWxUZXh0T3JpZW50YXRp
b24oKSB7IHJldHVybiBUZXh0T3JpZW50YXRpb246Ok1peGVkOyB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAJKHJldmlzaW9uIDIzNDUxNCkKKysr
IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTgyMCw5ICs4MjAsOSBAQCBFeGNlcHRpb25PcjxTdHJpbmc+IEludGVybmFsU2V0dGlu
Z3M6OnN5CiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZh
bGlkQWNjZXNzRXJyb3IgfTsKICAgICBzd2l0Y2ggKHNldHRpbmdzKCkuc3lzdGVtTGF5b3V0RGly
ZWN0aW9uKCkpIHsKLSAgICBjYXNlIExUUjoKKyAgICBjYXNlIFRleHREaXJlY3Rpb246OkxUUjoK
ICAgICAgICAgcmV0dXJuIFN0cmluZyB7ICJMVFIiX3MgfTsKLSAgICBjYXNlIFJUTDoKKyAgICBj
YXNlIFRleHREaXJlY3Rpb246OlJUTDoKICAgICAgICAgcmV0dXJuIFN0cmluZyB7ICJSVEwiX3Mg
fTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC04MzQsMTEgKzgzNCwxMSBA
QCBFeGNlcHRpb25Pcjx2b2lkPiBJbnRlcm5hbFNldHRpbmdzOjpzZXRTCiAgICAgaWYgKCFtX3Bh
Z2UpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkQWNjZXNzRXJyb3IgfTsKICAg
ICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZGlyZWN0aW9uLCAibHRyIikpIHsK
LSAgICAgICAgc2V0dGluZ3MoKS5zZXRTeXN0ZW1MYXlvdXREaXJlY3Rpb24oTFRSKTsKKyAgICAg
ICAgc2V0dGluZ3MoKS5zZXRTeXN0ZW1MYXlvdXREaXJlY3Rpb24oVGV4dERpcmVjdGlvbjo6TFRS
KTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKGRpcmVjdGlvbiwgInJ0bCIpKSB7Ci0gICAgICAgIHNldHRpbmdzKCkuc2V0
U3lzdGVtTGF5b3V0RGlyZWN0aW9uKFJUTCk7CisgICAgICAgIHNldHRpbmdzKCkuc2V0U3lzdGVt
TGF5b3V0RGlyZWN0aW9uKFRleHREaXJlY3Rpb246OlJUTCk7CiAgICAgICAgIHJldHVybiB7IH07
CiAgICAgfQogICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkQWNjZXNzRXJyb3IgfTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAkocmV2aXNpb24gMjM0NTE0KQorKysgU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAkod29ya2luZyBjb3B5KQpAQCAtNjEyLDcg
KzYxMiw3IEBAIHB1YmxpYzoKIAogICAgIFJlZlB0cjxHQ09ic2VydmF0aW9uPiBvYnNlcnZlR0Mo
SlNDOjpKU1ZhbHVlKTsKIAotICAgIGVudW0gY2xhc3MgVXNlckludGVyZmFjZUxheW91dERpcmVj
dGlvbiB7IExUUiwgUlRMIH07CisgICAgZW51bSBjbGFzcyBVc2VySW50ZXJmYWNlTGF5b3V0RGly
ZWN0aW9uIDogdWludDhfdCB7IExUUiwgUlRMIH07CiAgICAgdm9pZCBzZXRVc2VySW50ZXJmYWNl
TGF5b3V0RGlyZWN0aW9uKFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24pOwogCiAgICAgYm9v
bCB1c2VyUHJlZmVyc1JlZHVjZWRNb3Rpb24oKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lv
biAyMzQ1NjgpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDIyIEBACisyMDE4LTA4LTA2ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIGEgMS1ieXRlIGVudW0gY2xhc3MgZm9yIFRleHRE
aXJlY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4ODM1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogU2hhcmVkL1dlYlBvcHVwSXRlbS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwSXRl
bTo6V2ViUG9wdXBJdGVtKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJ
bnRlcmFjdGlvbi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyB3ZWJTZWxlY3Rpb25SZWN0
c0ZvclNlbGVjdGlvblJlY3RzOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUG9wdXBN
ZW51UHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5TWFjOjpw
b3B1bGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5TWFjOjpzaG93UG9w
dXBNZW51KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwTWVu
dS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudTo6c2hvdyk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpnZXRBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbik6CisKIDIwMTgtMDgtMDMgIEFsZXgg
Q2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggc3Bl
bGxpbmcgb2YgIm92ZXJyaWRkZW4iCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQb3B1
cEl0ZW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBvcHVwSXRl
bS5jcHAJKHJldmlzaW9uIDIzNDUxNCkKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBvcHVw
SXRlbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYktp
dCB7CiAKIFdlYlBvcHVwSXRlbTo6V2ViUG9wdXBJdGVtKCkKICAgICA6IG1fdHlwZShJdGVtKQot
ICAgICwgbV90ZXh0RGlyZWN0aW9uKExUUikKKyAgICAsIG1fdGV4dERpcmVjdGlvbihUZXh0RGly
ZWN0aW9uOjpMVFIpCiAgICAgLCBtX2hhc1RleHREaXJlY3Rpb25PdmVycmlkZShmYWxzZSkKICAg
ICAsIG1faXNFbmFibGVkKHRydWUpCiAgICAgLCBtX2lzU2VsZWN0ZWQoZmFsc2UpCkBAIC00NCw3
ICs0NCw3IEBAIFdlYlBvcHVwSXRlbTo6V2ViUG9wdXBJdGVtKCkKIAogV2ViUG9wdXBJdGVtOjpX
ZWJQb3B1cEl0ZW0oVHlwZSB0eXBlKQogICAgIDogbV90eXBlKHR5cGUpCi0gICAgLCBtX3RleHRE
aXJlY3Rpb24oTFRSKQorICAgICwgbV90ZXh0RGlyZWN0aW9uKFRleHREaXJlY3Rpb246OkxUUikK
ICAgICAsIG1faGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlKGZhbHNlKQogICAgICwgbV9pc0VuYWJs
ZWQodHJ1ZSkKICAgICAsIG1faXNMYWJlbChmYWxzZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQkocmV2
aXNpb24gMjM0NTE0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMTc1NCw3ICsxNzU0LDcgQEAgLSAo
TlNBcnJheSAqKXdlYlNlbGVjdGlvblJlY3RzRm9yU2VsZWN0aQogICAgICAgICBjb25zdCBXZWJD
b3JlOjpTZWxlY3Rpb25SZWN0JiBjb3JlUmVjdCA9IHNlbGVjdGlvblJlY3RzW2ldOwogICAgICAg
ICBXZWJTZWxlY3Rpb25SZWN0ICp3ZWJSZWN0ID0gW1dlYlNlbGVjdGlvblJlY3Qgc2VsZWN0aW9u
UmVjdF07CiAgICAgICAgIHdlYlJlY3QucmVjdCA9IGNvcmVSZWN0LnJlY3QoKTsKLSAgICAgICAg
d2ViUmVjdC53cml0aW5nRGlyZWN0aW9uID0gY29yZVJlY3QuZGlyZWN0aW9uKCkgPT0gTFRSID8g
V0tXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQgOiBXS1dyaXRpbmdEaXJlY3Rpb25SaWdodFRv
TGVmdDsKKyAgICAgICAgd2ViUmVjdC53cml0aW5nRGlyZWN0aW9uID0gY29yZVJlY3QuZGlyZWN0
aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gV0tXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmln
aHQgOiBXS1dyaXRpbmdEaXJlY3Rpb25SaWdodFRvTGVmdDsKICAgICAgICAgd2ViUmVjdC5pc0xp
bmVCcmVhayA9IGNvcmVSZWN0LmlzTGluZUJyZWFrKCk7CiAgICAgICAgIHdlYlJlY3QuaXNGaXJz
dE9uTGluZSA9IGNvcmVSZWN0LmlzRmlyc3RPbkxpbmUoKTsKICAgICAgICAgd2ViUmVjdC5pc0xh
c3RPbkxpbmUgPSBjb3JlUmVjdC5pc0xhc3RPbkxpbmUoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9XZWJQb3B1cE1lbnVQcm94eU1hYy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUG9wdXBNZW51UHJveHlNYWMubW0JKHJldmlzaW9u
IDIzNDUxNCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQb3B1cE1lbnVQcm94
eU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNzMsOSArNzMsOSBAQCB2b2lkIFdlYlBvcHVwTWVu
dVByb3h5TWFjOjpwb3B1bGF0ZShjb25zCiAgICAgICAgICAgICBOU01lbnVJdGVtICptZW51SXRl
bSA9IFttX3BvcHVwIGxhc3RJdGVtXTsKIAogICAgICAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJs
ZVBhcmFncmFwaFN0eWxlPiBwYXJhZ3JhcGhTdHlsZSA9IGFkb3B0TlMoW1tOU1BhcmFncmFwaFN0
eWxlIGRlZmF1bHRQYXJhZ3JhcGhTdHlsZV0gbXV0YWJsZUNvcHldKTsKLSAgICAgICAgICAgIE5T
V3JpdGluZ0RpcmVjdGlvbiB3cml0aW5nRGlyZWN0aW9uID0gaXRlbXNbaV0ubV90ZXh0RGlyZWN0
aW9uID09IExUUiA/IE5TV3JpdGluZ0RpcmVjdGlvbkxlZnRUb1JpZ2h0IDogTlNXcml0aW5nRGly
ZWN0aW9uUmlnaHRUb0xlZnQ7CisgICAgICAgICAgICBOU1dyaXRpbmdEaXJlY3Rpb24gd3JpdGlu
Z0RpcmVjdGlvbiA9IGl0ZW1zW2ldLm1fdGV4dERpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpM
VFIgPyBOU1dyaXRpbmdEaXJlY3Rpb25MZWZ0VG9SaWdodCA6IE5TV3JpdGluZ0RpcmVjdGlvblJp
Z2h0VG9MZWZ0OwogICAgICAgICAgICAgW3BhcmFncmFwaFN0eWxlIHNldEJhc2VXcml0aW5nRGly
ZWN0aW9uOndyaXRpbmdEaXJlY3Rpb25dOwotICAgICAgICAgICAgW3BhcmFncmFwaFN0eWxlIHNl
dEFsaWdubWVudDptZW51VGV4dERpcmVjdGlvbiA9PSBMVFIgPyBOU1RleHRBbGlnbm1lbnRMZWZ0
IDogTlNUZXh0QWxpZ25tZW50UmlnaHRdOworICAgICAgICAgICAgW3BhcmFncmFwaFN0eWxlIHNl
dEFsaWdubWVudDptZW51VGV4dERpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBOU1Rl
eHRBbGlnbm1lbnRMZWZ0IDogTlNUZXh0QWxpZ25tZW50UmlnaHRdOwogICAgICAgICAgICAgUmV0
YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IGF0dHJpYnV0ZXMgPSBhZG9wdE5TKFtbTlNNdXRh
YmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhPYmplY3RzQW5kS2V5czoKICAgICAgICAgICAg
ICAgICBwYXJhZ3JhcGhTdHlsZS5nZXQoKSwgTlNQYXJhZ3JhcGhTdHlsZUF0dHJpYnV0ZU5hbWUs
CiAgICAgICAgICAgICAgICAgZm9udCwgTlNGb250QXR0cmlidXRlTmFtZSwKQEAgLTExMSwxMCAr
MTExLDEwIEBAIHZvaWQgV2ViUG9wdXBNZW51UHJveHlNYWM6OnNob3dQb3B1cE1lbnUKIAogICAg
IFttX3BvcHVwIGF0dGFjaFBvcFVwV2l0aEZyYW1lOnJlY3QgaW5WaWV3Om1fd2ViVmlld107CiAg
ICAgW21fcG9wdXAgc2VsZWN0SXRlbUF0SW5kZXg6c2VsZWN0ZWRJbmRleF07Ci0gICAgW21fcG9w
dXAgc2V0VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbjp0ZXh0RGlyZWN0aW9uID09IExUUiA/
IE5TVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbkxlZnRUb1JpZ2h0IDogTlNVc2VySW50ZXJm
YWNlTGF5b3V0RGlyZWN0aW9uUmlnaHRUb0xlZnRdOworICAgIFttX3BvcHVwIHNldFVzZXJJbnRl
cmZhY2VMYXlvdXREaXJlY3Rpb246dGV4dERpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIg
PyBOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25MZWZ0VG9SaWdodCA6IE5TVXNlckludGVy
ZmFjZUxheW91dERpcmVjdGlvblJpZ2h0VG9MZWZ0XTsKIAogICAgIE5TTWVudSAqbWVudSA9IFtt
X3BvcHVwIG1lbnVdOwotICAgIFttZW51IHNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246
dGV4dERpcmVjdGlvbiA9PSBMVFIgPyBOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25MZWZ0
VG9SaWdodCA6IE5TVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvblJpZ2h0VG9MZWZ0XTsKKyAg
ICBbbWVudSBzZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uOnRleHREaXJlY3Rpb24gPT0g
VGV4dERpcmVjdGlvbjo6TFRSID8gTlNVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uTGVmdFRv
UmlnaHQgOiBOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25SaWdodFRvTGVmdF07CiAKICAg
ICAvLyBUaGVzZSB2YWx1ZXMgd2VyZSBib3Jyb3dlZCBmcm9tIEFwcEtpdCB0byBtYXRjaCB0aGVp
ciBwbGFjZW1lbnQgb2YgdGhlIG1lbnUuCiAgICAgY29uc3QgaW50IHBvcE92ZXJIb3Jpem9udGFs
QWRqdXN0ID0gLTEzOwpAQCAtMTI5LDE4ICsxMjksMTggQEAgdm9pZCBXZWJQb3B1cE1lbnVQcm94
eU1hYzo6c2hvd1BvcHVwTWVudQogICAgICAgICBpZiAodGl0bGVGcmFtZS5zaXplLndpZHRoIDw9
IDAgfHwgdGl0bGVGcmFtZS5zaXplLmhlaWdodCA8PSAwKQogICAgICAgICAgICAgdGl0bGVGcmFt
ZSA9IHJlY3Q7CiAgICAgICAgIGZsb2F0IHZlcnRpY2FsT2Zmc2V0ID0gcm91bmRmKChOU01heFko
cmVjdCkgLSBOU01heFkodGl0bGVGcmFtZSkpICsgTlNIZWlnaHQodGl0bGVGcmFtZSkpICsgMTsK
LSAgICAgICAgaWYgKHRleHREaXJlY3Rpb24gPT0gTFRSKQorICAgICAgICBpZiAodGV4dERpcmVj
dGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpCiAgICAgICAgICAgICBsb2NhdGlvbiA9IE5TTWFr
ZVBvaW50KE5TTWluWChyZWN0KSArIHBvcE92ZXJIb3Jpem9udGFsQWRqdXN0LCBOU01heFkocmVj
dCkgLSB2ZXJ0aWNhbE9mZnNldCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGxvY2F0aW9u
ID0gTlNNYWtlUG9pbnQoTlNNYXhYKHJlY3QpIC0gcG9wT3Zlckhvcml6b250YWxBZGp1c3QsIE5T
TWF4WShyZWN0KSAtIHZlcnRpY2FsT2Zmc2V0KTsKICAgICB9IGVsc2UgewotICAgICAgICBpZiAo
dGV4dERpcmVjdGlvbiA9PSBMVFIpCisgICAgICAgIGlmICh0ZXh0RGlyZWN0aW9uID09IFRleHRE
aXJlY3Rpb246OkxUUikKICAgICAgICAgICAgIGxvY2F0aW9uID0gTlNNYWtlUG9pbnQoTlNNaW5Y
KHJlY3QpICsgcG9wVW5kZXJIb3Jpem9udGFsQWRqdXN0LCBOU01heFkocmVjdCkgKyBwb3BVbmRl
clZlcnRpY2FsQWRqdXN0KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbG9jYXRpb24gPSBO
U01ha2VQb2ludChOU01heFgocmVjdCkgLSBwb3BVbmRlckhvcml6b250YWxBZGp1c3QsIE5TTWF4
WShyZWN0KSArIHBvcFVuZGVyVmVydGljYWxBZGp1c3QpOwogICAgIH0KICAgICBSZXRhaW5QdHI8
TlNWaWV3PiBkdW1teVZpZXcgPSBhZG9wdE5TKFtbTlNWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
OnJlY3RdKTsKLSAgICBbZHVtbXlWaWV3LmdldCgpIHNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJl
Y3Rpb246dGV4dERpcmVjdGlvbiA9PSBMVFIgPyBOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rp
b25MZWZ0VG9SaWdodCA6IE5TVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvblJpZ2h0VG9MZWZ0
XTsKKyAgICBbZHVtbXlWaWV3LmdldCgpIHNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246
dGV4dERpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBOU1VzZXJJbnRlcmZhY2VMYXlv
dXREaXJlY3Rpb25MZWZ0VG9SaWdodCA6IE5TVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvblJp
Z2h0VG9MZWZ0XTsKICAgICBbbV93ZWJWaWV3IGFkZFN1YnZpZXc6ZHVtbXlWaWV3LmdldCgpXTsK
ICAgICBsb2NhdGlvbiA9IFtkdW1teVZpZXcgY29udmVydFBvaW50OmxvY2F0aW9uIGZyb21WaWV3
Om1fd2ViVmlld107CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQb3B1cE1lbnUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuY3BwCShyZXZpc2lvbiAyMzQ1MTQpCisr
KyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBNZW51LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTEyLDcgKzExMiw3IEBAIHZvaWQgV2ViUG9wdXBNZW51Ojpz
aG93KGNvbnN0IEludFJlY3QmIHIKICAgICBQbGF0Zm9ybVBvcHVwTWVudURhdGEgcGxhdGZvcm1E
YXRhOwogICAgIHNldFVwUGxhdGZvcm1EYXRhKHBhZ2VDb29yZGluYXRlcywgcGxhdGZvcm1EYXRh
KTsKIAotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2hvd1BvcHVwTWVudShwYWdlQ29vcmRp
bmF0ZXMsIG1fcG9wdXBDbGllbnQtPm1lbnVTdHlsZSgpLnRleHREaXJlY3Rpb24oKSwgaXRlbXMs
IGluZGV4LCBwbGF0Zm9ybURhdGEpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OlNob3dQb3B1cE1lbnUocGFnZUNvb3JkaW5hdGVzLCBzdGF0aWNfY2FzdDx1
aW50NjRfdD4obV9wb3B1cENsaWVudC0+bWVudVN0eWxlKCkudGV4dERpcmVjdGlvbigpKSwgaXRl
bXMsIGluZGV4LCBwbGF0Zm9ybURhdGEpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIAogdm9pZCBX
ZWJQb3B1cE1lbnU6OmhpZGUoKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvaW9zL1dlYlBhZ2VJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0JKHJldmlzaW9uIDIzNDUxNCkKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0yMzExLDcgKzIzMTEsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldEFzc2lzdGVkTm9kZUlu
Zm9ybWF0aW9uCiAgICAgICAgIGJvb2wgaW5GaXhlZCA9IGZhbHNlOwogICAgICAgICByZW5kZXJl
ci0+bG9jYWxUb0NvbnRhaW5lclBvaW50KEZsb2F0UG9pbnQoKSwgbnVsbHB0ciwgVXNlVHJhbnNm
b3JtcywgJmluRml4ZWQpOwogICAgICAgICBpbmZvcm1hdGlvbi5pbnNpZGVGaXhlZFBvc2l0aW9u
ID0gaW5GaXhlZDsKLSAgICAgICAgaW5mb3JtYXRpb24uaXNSVEwgPSByZW5kZXJlci0+c3R5bGUo
KS5kaXJlY3Rpb24oKSA9PSBSVEw7CisgICAgICAgIGluZm9ybWF0aW9uLmlzUlRMID0gcmVuZGVy
ZXItPnN0eWxlKCkuZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6UlRMOwogCiAgICAgICAg
IEZyYW1lVmlldyogZnJhbWVWaWV3ID0gZWxlbWVudEZyYW1lLnZpZXcoKTsKICAgICAgICAgaWYg
KGluRml4ZWQgJiYgZWxlbWVudEZyYW1lLmlzTWFpbkZyYW1lKCkgJiYgIWZyYW1lVmlldy0+ZnJh
bWUoKS5zZXR0aW5ncygpLnZpc3VhbFZpZXdwb3J0RW5hYmxlZCgpKSB7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExl
Z2FjeS9pb3MvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzQ1MTQpCisrKyBTb3VyY2UvV2ViS2l0TGVn
YWN5L2lvcy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxOC0w
OC0wNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAg
ICAgIFVzZSBhIDEtYnl0ZSBlbnVtIGNsYXNzIGZvciBUZXh0RGlyZWN0aW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODgzNTAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lSU9TLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBzZWxlY3Rpb25SZWN0c0ZvckNvcmVS
YW5nZTpdKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRpb24ubW06
CisgICAgICAgICgtW1dlYlZpc2libGVQb3NpdGlvbiB0ZXh0RGlyZWN0aW9uXSk6CisgICAgICAg
ICgtW1dlYlZpc2libGVQb3NpdGlvbiBkaXJlY3Rpb25Jc0Rvd25zdHJlYW06XSk6CisgICAgICAg
ICogV2ViVmlldy9XZWJQREZWaWV3SU9TLm1tOgorICAgICAgICAoLVtXZWJQREZWaWV3IF9jaGVj
a1BERlRpdGxlXSk6CisKIDIwMTgtMDctMDQgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBh
cHBsZS5jb20+CiAKICAgICAgICAgSW50cm9kdWNlIFBMQVRGT1JNKElPU01BQykKSW5kZXg6IFNv
dXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lSU9TLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
SU9TLm1tCShyZXZpc2lvbiAyMzQ1MTQpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjIwLDcgKzIyMCw3
IEBAIC0gKE5TQXJyYXkgKilzZWxlY3Rpb25SZWN0c0ZvckNvcmVSYW5nZToKICAgICAgICAgU2Vs
ZWN0aW9uUmVjdCAmY29yZVJlY3QgPSByZWN0c1tpXTsKICAgICAgICAgV2ViU2VsZWN0aW9uUmVj
dCAqd2ViUmVjdCA9IFtXZWJTZWxlY3Rpb25SZWN0IHNlbGVjdGlvblJlY3RdOwogICAgICAgICB3
ZWJSZWN0LnJlY3QgPSBzdGF0aWNfY2FzdDxDR1JlY3Q+KGNvcmVSZWN0LnJlY3QoKSk7Ci0gICAg
ICAgIHdlYlJlY3Qud3JpdGluZ0RpcmVjdGlvbiA9IGNvcmVSZWN0LmRpcmVjdGlvbigpID09IExU
UiA/IFdLV3JpdGluZ0RpcmVjdGlvbkxlZnRUb1JpZ2h0IDogV0tXcml0aW5nRGlyZWN0aW9uUmln
aHRUb0xlZnQ7CisgICAgICAgIHdlYlJlY3Qud3JpdGluZ0RpcmVjdGlvbiA9IGNvcmVSZWN0LmRp
cmVjdGlvbigpID09IFRleHREaXJlY3Rpb246OkxUUiA/IFdLV3JpdGluZ0RpcmVjdGlvbkxlZnRU
b1JpZ2h0IDogV0tXcml0aW5nRGlyZWN0aW9uUmlnaHRUb0xlZnQ7CiAgICAgICAgIHdlYlJlY3Qu
aXNMaW5lQnJlYWsgPSBjb3JlUmVjdC5pc0xpbmVCcmVhaygpOwogICAgICAgICB3ZWJSZWN0Lmlz
Rmlyc3RPbkxpbmUgPSBjb3JlUmVjdC5pc0ZpcnN0T25MaW5lKCk7CiAgICAgICAgIHdlYlJlY3Qu
aXNMYXN0T25MaW5lID0gY29yZVJlY3QuaXNMYXN0T25MaW5lKCk7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRpb24ubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViVmlzaWJs
ZVBvc2l0aW9uLm1tCShyZXZpc2lvbiAyMzQ1MTQpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L2lv
cy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAg
LTEzMiw3ICsxMzIsNyBAQCAtIChOU1N0cmluZyAqKWRlc2NyaXB0aW9uCiAtIChUZXh0RGlyZWN0
aW9uKXRleHREaXJlY3Rpb24KIHsKICAgICAvLyBUT0RPOiBpbXBsZW1lbnQKLSAgICByZXR1cm4g
TFRSOworICAgIHJldHVybiBUZXh0RGlyZWN0aW9uOjpMVFI7CiB9CiAKIC0gKEJPT0wpZGlyZWN0
aW9uSXNEb3duc3RyZWFtOihXZWJUZXh0QWRqdXN0bWVudERpcmVjdGlvbilkaXJlY3Rpb24KQEAg
LTE0NCwxMSArMTQ0LDkgQEAgLSAoQk9PTClkaXJlY3Rpb25Jc0Rvd25zdHJlYW06KFdlYlRleHRB
ZAogICAgICAgICByZXR1cm4gWUVTOwogICAgIAogICAgIAotICAgIGlmIChbc2VsZiB0ZXh0RGly
ZWN0aW9uXSA9PSBMVFIpIHsKKyAgICBpZiAoW3NlbGYgdGV4dERpcmVjdGlvbl0gPT0gVGV4dERp
cmVjdGlvbjo6TFRSKQogICAgICAgICByZXR1cm4gKGRpcmVjdGlvbiA9PSBXZWJUZXh0QWRqdXN0
bWVudFJpZ2h0KTsKLSAgICB9IGVsc2UgewotICAgICAgICByZXR1cm4gKGRpcmVjdGlvbiA9PSBX
ZWJUZXh0QWRqdXN0bWVudExlZnQpOwotICAgIH0KKyAgICByZXR1cm4gKGRpcmVjdGlvbiA9PSBX
ZWJUZXh0QWRqdXN0bWVudExlZnQpOwogfQogCiAtIChXZWJWaXNpYmxlUG9zaXRpb24gKilwb3Np
dGlvbkJ5TW92aW5nSW5EaXJlY3Rpb246KFdlYlRleHRBZGp1c3RtZW50RGlyZWN0aW9uKWRpcmVj
dGlvbiBhbW91bnQ6KFVJbnQzMilhbW91bnQgd2l0aEFmZmluaXR5RG93bnN0cmVhbTooQk9PTClh
ZmZpbml0eURvd25zdHJlYW0KSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcv
V2ViUERGVmlld0lPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9X
ZWJWaWV3L1dlYlBERlZpZXdJT1MubW0JKHJldmlzaW9uIDIzNDUxNCkKKysrIFNvdXJjZS9XZWJL
aXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld0lPUy5tbQkod29ya2luZyBjb3B5KQpAQCAt
Mjk5LDcgKzI5OSw3IEBAIC0gKHZvaWQpX2NoZWNrUERGVGl0bGUKICAgICBpZiAoW3RpdGxlIGxl
bmd0aF0pIHsKICAgICAgICAgW190aXRsZSByZWxlYXNlXTsKICAgICAgICAgX3RpdGxlID0gW3Rp
dGxlIGNvcHldOwotICAgICAgICBjb3JlKFtzZWxmIF9mcmFtZV0pLT5sb2FkZXIoKS5jbGllbnQo
KS5kaXNwYXRjaERpZFJlY2VpdmVUaXRsZSh7IHRpdGxlLCBMVFIgfSk7CisgICAgICAgIGNvcmUo
W3NlbGYgX2ZyYW1lXSktPmxvYWRlcigpLmNsaWVudCgpLmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxl
KHsgdGl0bGUsIFRleHREaXJlY3Rpb246OkxUUiB9KTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNDUxNCkKKysrIFNvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE4
LTA4LTA2ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgVXNlIGEgMS1ieXRlIGVudW0gY2xhc3MgZm9yIFRleHREaXJlY3Rpb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODM1MAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
UG9wdXBNZW51TWFjLm1tOgorICAgICAgICAoUG9wdXBNZW51TWFjOjpwb3B1bGF0ZSk6CisgICAg
ICAgIChQb3B1cE1lbnVNYWM6OnNob3cpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5z
aXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2UpOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUu
bW06CisgICAgICAgICgtW1dlYkZyYW1lIF9kaXNwYXRjaERpZFJlY2VpdmVUaXRsZTpdKToKKwog
MjAxOC0wOC0wMSAgTmFuIFdhbmcgIDxuX3dhbmdAYXBwbGUuY29tPgogCiAgICAgICAgIEFYOiBB
T006IEFkZCBBUklBIElETCBBdHRyaWJ1dGUgUmVmbGVjdGlvbgpJbmRleDogU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvUG9wdXBNZW51TWFjLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1BvcHVwTWVudU1hYy5tbQko
cmV2aXNpb24gMjM0NTE0KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvUG9wdXBNZW51TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQg
UG9wdXBNZW51TWFjOjpwb3B1bGF0ZSgpCiAgICAgICAgIFttX3BvcHVwIGFkZEl0ZW1XaXRoVGl0
bGU6QCIiXTsKIAogICAgIFRleHREaXJlY3Rpb24gbWVudVRleHREaXJlY3Rpb24gPSBtX2NsaWVu
dC0+bWVudVN0eWxlKCkudGV4dERpcmVjdGlvbigpOwotICAgIFttX3BvcHVwIHNldFVzZXJJbnRl
cmZhY2VMYXlvdXREaXJlY3Rpb246bWVudVRleHREaXJlY3Rpb24gPT0gTFRSID8gTlNVc2VySW50
ZXJmYWNlTGF5b3V0RGlyZWN0aW9uTGVmdFRvUmlnaHQgOiBOU1VzZXJJbnRlcmZhY2VMYXlvdXRE
aXJlY3Rpb25SaWdodFRvTGVmdF07CisgICAgW21fcG9wdXAgc2V0VXNlckludGVyZmFjZUxheW91
dERpcmVjdGlvbjptZW51VGV4dERpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBOU1Vz
ZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25MZWZ0VG9SaWdodCA6IE5TVXNlckludGVyZmFjZUxh
eW91dERpcmVjdGlvblJpZ2h0VG9MZWZ0XTsKIAogICAgIEFTU0VSVChtX2NsaWVudCk7CiAgICAg
aW50IHNpemUgPSBtX2NsaWVudC0+bGlzdFNpemUoKTsKQEAgLTkwLDggKzkwLDggQEAgdm9pZCBQ
b3B1cE1lbnVNYWM6OnBvcHVsYXRlKCkKICAgICAgICAgfQogCiAgICAgICAgIFJldGFpblB0cjxO
U011dGFibGVQYXJhZ3JhcGhTdHlsZT4gcGFyYWdyYXBoU3R5bGUgPSBhZG9wdE5TKFtbTlNQYXJh
Z3JhcGhTdHlsZSBkZWZhdWx0UGFyYWdyYXBoU3R5bGVdIG11dGFibGVDb3B5XSk7Ci0gICAgICAg
IFtwYXJhZ3JhcGhTdHlsZSBzZXRBbGlnbm1lbnQ6bWVudVRleHREaXJlY3Rpb24gPT0gTFRSID8g
TlNUZXh0QWxpZ25tZW50TGVmdCA6IE5TVGV4dEFsaWdubWVudFJpZ2h0XTsKLSAgICAgICAgTlNX
cml0aW5nRGlyZWN0aW9uIHdyaXRpbmdEaXJlY3Rpb24gPSBzdHlsZS50ZXh0RGlyZWN0aW9uKCkg
PT0gTFRSID8gTlNXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQgOiBOU1dyaXRpbmdEaXJlY3Rp
b25SaWdodFRvTGVmdDsKKyAgICAgICAgW3BhcmFncmFwaFN0eWxlIHNldEFsaWdubWVudDptZW51
VGV4dERpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBOU1RleHRBbGlnbm1lbnRMZWZ0
IDogTlNUZXh0QWxpZ25tZW50UmlnaHRdOworICAgICAgICBOU1dyaXRpbmdEaXJlY3Rpb24gd3Jp
dGluZ0RpcmVjdGlvbiA9IHN0eWxlLnRleHREaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpM
VFIgPyBOU1dyaXRpbmdEaXJlY3Rpb25MZWZ0VG9SaWdodCA6IE5TV3JpdGluZ0RpcmVjdGlvblJp
Z2h0VG9MZWZ0OwogICAgICAgICBbcGFyYWdyYXBoU3R5bGUgc2V0QmFzZVdyaXRpbmdEaXJlY3Rp
b246d3JpdGluZ0RpcmVjdGlvbl07CiAgICAgICAgIGlmIChzdHlsZS5oYXNUZXh0RGlyZWN0aW9u
T3ZlcnJpZGUoKSkgewogICAgICAgICAgICAgUmV0YWluUHRyPE5TTnVtYmVyPiB3cml0aW5nRGly
ZWN0aW9uVmFsdWUgPSBhZG9wdE5TKFtbTlNOdW1iZXIgYWxsb2NdIGluaXRXaXRoSW50ZWdlcjp3
cml0aW5nRGlyZWN0aW9uICsgTlNXcml0aW5nRGlyZWN0aW9uT3ZlcnJpZGVdKTsKQEAgLTE0Niwx
MCArMTQ2LDEwIEBAIHZvaWQgUG9wdXBNZW51TWFjOjpzaG93KGNvbnN0IEludFJlY3QmIHIKIAog
ICAgIFttX3BvcHVwIGF0dGFjaFBvcFVwV2l0aEZyYW1lOnIgaW5WaWV3OnZpZXddOwogICAgIFtt
X3BvcHVwIHNlbGVjdEl0ZW1BdEluZGV4OmluZGV4XTsKLSAgICBbbV9wb3B1cCBzZXRVc2VySW50
ZXJmYWNlTGF5b3V0RGlyZWN0aW9uOnRleHREaXJlY3Rpb24gPT0gTFRSID8gTlNVc2VySW50ZXJm
YWNlTGF5b3V0RGlyZWN0aW9uTGVmdFRvUmlnaHQgOiBOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJl
Y3Rpb25SaWdodFRvTGVmdF07CisgICAgW21fcG9wdXAgc2V0VXNlckludGVyZmFjZUxheW91dERp
cmVjdGlvbjp0ZXh0RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUiA/IE5TVXNlckludGVy
ZmFjZUxheW91dERpcmVjdGlvbkxlZnRUb1JpZ2h0IDogTlNVc2VySW50ZXJmYWNlTGF5b3V0RGly
ZWN0aW9uUmlnaHRUb0xlZnRdOwogCiAgICAgTlNNZW51ICptZW51ID0gW21fcG9wdXAgbWVudV07
Ci0gICAgW21lbnUgc2V0VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbjp0ZXh0RGlyZWN0aW9u
ID09IExUUiA/IE5TVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbkxlZnRUb1JpZ2h0IDogTlNV
c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uUmlnaHRUb0xlZnRdOworICAgIFttZW51IHNldFVz
ZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246dGV4dERpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9u
OjpMVFIgPyBOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25MZWZ0VG9SaWdodCA6IE5TVXNl
ckludGVyZmFjZUxheW91dERpcmVjdGlvblJpZ2h0VG9MZWZ0XTsKIAogICAgIE5TUG9pbnQgbG9j
YXRpb247CiAgICAgQ1RGb250UmVmIGZvbnQgPSBtX2NsaWVudC0+bWVudVN0eWxlKCkuZm9udCgp
LnByaW1hcnlGb250KCkuZ2V0Q1RGb250KCk7CkBAIC0xNjgsNyArMTY4LDcgQEAgdm9pZCBQb3B1
cE1lbnVNYWM6OnNob3coY29uc3QgSW50UmVjdCYgcgogICAgICAgICB2ZXJ0T2Zmc2V0ICs9IENU
Rm9udEdldERlc2NlbnQoZm9udCkgLSBDVEZvbnRHZXREZXNjZW50KGRlZmF1bHRGb250LmdldCgp
KTsKICAgICAgICAgdmVydE9mZnNldCA9IGZtaW5mKE5TSGVpZ2h0KHIpLCB2ZXJ0T2Zmc2V0KTsK
ICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIwMAotICAgICAgICBp
ZiAodGV4dERpcmVjdGlvbiA9PSBMVFIpCisgICAgICAgIGlmICh0ZXh0RGlyZWN0aW9uID09IFRl
eHREaXJlY3Rpb246OkxUUikKICAgICAgICAgICAgIGxvY2F0aW9uID0gTlNNYWtlUG9pbnQoTlNN
aW5YKHIpICsgcG9wT3Zlckhvcml6b250YWxBZGp1c3QsIE5TTWF4WShyKSAtIHZlcnRPZmZzZXQp
OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBsb2NhdGlvbiA9IE5TTWFrZVBvaW50KE5TTWF4
WChyKSAtIHBvcE92ZXJIb3Jpem9udGFsQWRqdXN0LCBOU01heFkocikgLSB2ZXJ0T2Zmc2V0KTsK
QEAgLTE3Nyw3ICsxNzcsNyBAQCB2b2lkIFBvcHVwTWVudU1hYzo6c2hvdyhjb25zdCBJbnRSZWN0
JiByCiAjZW5kaWYKICAgICB9IGVsc2UgewogI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTAxMjAwCi0gICAgICAgIGlmICh0ZXh0RGlyZWN0aW9uID09IExUUikKKyAgICAg
ICAgaWYgKHRleHREaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSKQogICAgICAgICAgICAg
bG9jYXRpb24gPSBOU01ha2VQb2ludChOU01pblgocikgKyBwb3BVbmRlckhvcml6b250YWxBZGp1
c3QsIE5TTWF4WShyKSArIHBvcFVuZGVyVmVydGljYWxBZGp1c3QpOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICBsb2NhdGlvbiA9IE5TTWFrZVBvaW50KE5TTWF4WChyKSAtIHBvcFVuZGVySG9y
aXpvbnRhbEFkanVzdCwgTlNNYXhZKHIpICsgcG9wVW5kZXJWZXJ0aWNhbEFkanVzdCk7CkBAIC0x
OTMsNyArMTkzLDcgQEAgdm9pZCBQb3B1cE1lbnVNYWM6OnNob3coY29uc3QgSW50UmVjdCYgcgog
ICAgIFJlZjxQb3B1cE1lbnVNYWM+IHByb3RlY3RvcigqdGhpcyk7CiAKICAgICBSZXRhaW5QdHI8
TlNWaWV3PiBkdW1teVZpZXcgPSBhZG9wdE5TKFtbTlNWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
OnJdKTsKLSAgICBbZHVtbXlWaWV3LmdldCgpIHNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rp
b246dGV4dERpcmVjdGlvbiA9PSBMVFIgPyBOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25M
ZWZ0VG9SaWdodCA6IE5TVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvblJpZ2h0VG9MZWZ0XTsK
KyAgICBbZHVtbXlWaWV3LmdldCgpIHNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246dGV4
dERpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBOU1VzZXJJbnRlcmZhY2VMYXlvdXRE
aXJlY3Rpb25MZWZ0VG9SaWdodCA6IE5TVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvblJpZ2h0
VG9MZWZ0XTsKICAgICBbdmlldyBhZGRTdWJ2aWV3OmR1bW15Vmlldy5nZXQoKV07CiAgICAgbG9j
YXRpb24gPSBbZHVtbXlWaWV3IGNvbnZlcnRQb2ludDpsb2NhdGlvbiBmcm9tVmlldzp2aWV3XTsK
ICAgICAKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCShyZXZpc2lvbiAyMzQ1MTQp
CisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMTQ5NCw3ICsxNDk0LDcgQEAgdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6dHJhbnNpdGlvblRvQwogICAgIC8vIGxpa2UgdGhlIG9uZXMgdGhh
dCBTYWZhcmkgdXNlcyBmb3IgYm9va21hcmtzIGl0IGlzIHRoZSBvbmx5IHdheSB0aGUgRG9jdW1l
bnRMb2FkZXIKICAgICAvLyB3aWxsIGdldCB0aGUgcHJvcGVyIHRpdGxlLgogICAgIGlmIChhdXRv
KiBkb2N1bWVudExvYWRlciA9IFtkYXRhU291cmNlIF9kb2N1bWVudExvYWRlcl0pCi0gICAgICAg
IGRvY3VtZW50TG9hZGVyLT5zZXRUaXRsZSh7IFtkYXRhU291cmNlIHBhZ2VUaXRsZV0sIExUUiB9
KTsKKyAgICAgICAgZG9jdW1lbnRMb2FkZXItPnNldFRpdGxlKHsgW2RhdGFTb3VyY2UgcGFnZVRp
dGxlXSwgVGV4dERpcmVjdGlvbjo6TFRSIH0pOwogCiAgICAgaWYgKGF1dG8qIG93bmVyRWxlbWVu
dCA9IGNvcmVGcmFtZS0+b3duZXJFbGVtZW50KCkpCiAgICAgICAgIGNvcmVGcmFtZS0+dmlldygp
LT5zZXRDYW5IYXZlU2Nyb2xsYmFycyhvd25lckVsZW1lbnQtPnNjcm9sbGluZ01vZGUoKSAhPSBT
Y3JvbGxiYXJBbHdheXNPZmYpOwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJGcmFtZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYkZyYW1lLm1tCShyZXZpc2lvbiAyMzQ1MTQpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMzM3LDcgKzIzMzcs
NyBAQCAtICh2b2lkKV9kaXNwYXRjaERpZFJlY2VpdmVUaXRsZTooTlNTdHJpCiAgICAgRnJhbWUq
IGNvcmVGcmFtZSA9IF9wcml2YXRlLT5jb3JlRnJhbWU7CiAgICAgaWYgKCFjb3JlRnJhbWUpCiAg
ICAgICAgIHJldHVybjsKLSAgICBjb3JlRnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmRpc3BhdGNo
RGlkUmVjZWl2ZVRpdGxlKHsgdGl0bGUsIExUUiB9KTsKKyAgICBjb3JlRnJhbWUtPmxvYWRlcigp
LmNsaWVudCgpLmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKHsgdGl0bGUsIFRleHREaXJlY3Rpb246
OkxUUiB9KTsKIH0KIAogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKSW5kZXg6IFRvb2xzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNDYxNCkKKysr
IFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE4LTA4
LTA2ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgVXNlIGEgMS1ieXRlIGVudW0gY2xhc3MgZm9yIFRleHREaXJlY3Rpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODM1MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpURVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TdHJp
bmdXaXRoRGlyZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPDwpOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Db21tYW5kQmFja0ZvcndhcmQubW06CisgICAgICAgIChURVNUX0YpOgor
CiAyMDE4LTA4LTA2ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtpT1NdIENhcmV0IGRpc2FwcGVhcnMgYWZ0ZXIgcmVzaWduaW5nIGFuZCBiZWNvbWlu
ZyBmaXJzdCByZXNwb25kZXIgaWYgYWN0aXZlIGZvY3VzIHN0YXRlIGlzIHJldGFpbmVkCkluZGV4
OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29tcGxleFRleHRDb250cm9sbGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29t
cGxleFRleHRDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjM0NTE0KQorKysgVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM1Miw3ICszNTIsNyBAQCBURVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVyVGVz
dCwgVG90YWxXCiAKICAgICBVQ2hhciBjaGFyYWN0ZXJzW10gPSB7IDB4NjQ0LCAnICcsIDB4NjQ0
LCAnICcsIDB4NjQ0IH07CiAgICAgc2l6ZV90IGNoYXJhY3RlcnNMZW5ndGggPSBXVEZfQVJSQVlf
TEVOR1RIKGNoYXJhY3RlcnMpOwotICAgIFRleHRSdW4gdGV4dFJ1bihTdHJpbmdWaWV3KGNoYXJh
Y3RlcnMsIGNoYXJhY3RlcnNMZW5ndGgpLCAwLCAxNCwgRGVmYXVsdEV4cGFuc2lvbiwgUlRMKTsK
KyAgICBUZXh0UnVuIHRleHRSdW4oU3RyaW5nVmlldyhjaGFyYWN0ZXJzLCBjaGFyYWN0ZXJzTGVu
Z3RoKSwgMCwgMTQsIERlZmF1bHRFeHBhbnNpb24sIFRleHREaXJlY3Rpb246OlJUTCk7CiAgICAg
YXV0byBydW4gPSBDb21wbGV4VGV4dENvbnRyb2xsZXI6OkNvbXBsZXhUZXh0UnVuOjpjcmVhdGUo
YWR2YW5jZXMsIG9yaWdpbnMsIHsgNSwgNiwgNywgOCwgOSB9LCB7IDQsIDMsIDIsIDEsIDAgfSwg
aW5pdGlhbEFkdmFuY2UsIGZvbnQucHJpbWFyeUZvbnQoKSwgY2hhcmFjdGVycywgMCwgY2hhcmFj
dGVyc0xlbmd0aCwgMCwgNSwgZmFsc2UpOwogICAgIFZlY3RvcjxSZWY8Q29tcGxleFRleHRDb250
cm9sbGVyOjpDb21wbGV4VGV4dFJ1bj4+IHJ1bnM7CiAgICAgcnVucy5hcHBlbmQoV1RGTW92ZShy
dW4pKTsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TdHJpbmdXaXRo
RGlyZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvU3RyaW5nV2l0aERpcmVjdGlvbi5jcHAJKHJldmlzaW9uIDIzNDUxNCkKKysrIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TdHJpbmdXaXRoRGlyZWN0aW9uLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzEsNDkgKzMxLDY2IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6
Om9zdHJlYW0mIG9zLCBjb25zdCBUZXh0RGlyZWN0aW9uJiBkaXJlY3Rpb24pCit7CisgICAgc3dp
dGNoIChkaXJlY3Rpb24pIHsKKyAgICBjYXNlIFRleHREaXJlY3Rpb246OkxUUjoKKyAgICAgICAg
b3MgPDwgIlRleHREaXJlY3Rpb246OkxUUiI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgVGV4
dERpcmVjdGlvbjo6UlRMOgorICAgICAgICBvcyA8PCAiVGV4dERpcmVjdGlvbjo6UlRMIjsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiBvczsKK30KKworfQorCiBuYW1lc3BhY2Ug
VGVzdFdlYktpdEFQSSB7CiAKIFRFU1QoU3RyaW5nV2l0aERpcmVjdGlvbiwgVHJ1bmNhdGVBdEVu
ZFdpdGhMZWZ0VG9SaWdodFN0cmluZykKIHsKLSAgICBTdHJpbmdXaXRoRGlyZWN0aW9uIHN0cmlu
ZyB7ICJDYXBwdWNjaW5vIiwgTFRSIH07CisgICAgU3RyaW5nV2l0aERpcmVjdGlvbiBzdHJpbmcg
eyAiQ2FwcHVjY2lubyIsIFRleHREaXJlY3Rpb246OkxUUiB9OwogICAgIFN0cmluZ1dpdGhEaXJl
Y3Rpb24gcmVzdWx0OwogCiAgICAgcmVzdWx0ID0gdHJ1bmNhdGVGcm9tRW5kKHN0cmluZywgMCk7
Ci0gICAgRVhQRUNUX0VRKExUUiwgcmVzdWx0LmRpcmVjdGlvbik7CisgICAgRVhQRUNUX0VRKFRl
eHREaXJlY3Rpb246OkxUUiwgcmVzdWx0LmRpcmVjdGlvbik7CiAgICAgRVhQRUNUX0VRKCIiLCBy
ZXN1bHQuc3RyaW5nKTsKIAogICAgIHJlc3VsdCA9IHRydW5jYXRlRnJvbUVuZChzdHJpbmcsIDEp
OwotICAgIEVYUEVDVF9FUShMVFIsIHJlc3VsdC5kaXJlY3Rpb24pOworICAgIEVYUEVDVF9FUShU
ZXh0RGlyZWN0aW9uOjpMVFIsIHJlc3VsdC5kaXJlY3Rpb24pOwogICAgIEVYUEVDVF9FUSgiQyIs
IHJlc3VsdC5zdHJpbmcpOwogCiAgICAgcmVzdWx0ID0gdHJ1bmNhdGVGcm9tRW5kKHN0cmluZywg
Mik7Ci0gICAgRVhQRUNUX0VRKExUUiwgcmVzdWx0LmRpcmVjdGlvbik7CisgICAgRVhQRUNUX0VR
KFRleHREaXJlY3Rpb246OkxUUiwgcmVzdWx0LmRpcmVjdGlvbik7CiAgICAgRVhQRUNUX0VRKCJD
YSIsIHJlc3VsdC5zdHJpbmcpOwogCiAgICAgcmVzdWx0ID0gdHJ1bmNhdGVGcm9tRW5kKHN0cmlu
ZywgMTAwMCk7Ci0gICAgRVhQRUNUX0VRKExUUiwgcmVzdWx0LmRpcmVjdGlvbik7CisgICAgRVhQ
RUNUX0VRKFRleHREaXJlY3Rpb246OkxUUiwgcmVzdWx0LmRpcmVjdGlvbik7CiAgICAgRVhQRUNU
X0VRKCJDYXBwdWNjaW5vIiwgcmVzdWx0LnN0cmluZyk7CiB9CiAKIFRFU1QoU3RyaW5nV2l0aERp
cmVjdGlvbiwgVHJ1bmNhdGVBdEVuZFdpdGhSaWdodFRvTGVmdFN0cmluZykKIHsKLSAgICBTdHJp
bmdXaXRoRGlyZWN0aW9uIHN0cmluZyB7IFN0cmluZzo6ZnJvbVVURjgoIten1rjXpNa815XWvNem
1rQn15nXoNeV1rkiKSwgUlRMIH07CisgICAgU3RyaW5nV2l0aERpcmVjdGlvbiBzdHJpbmcgeyBT
dHJpbmc6OmZyb21VVEY4KCLXp9a416TWvNeV1rzXpta0J9eZ16DXlda5IiksIFRleHREaXJlY3Rp
b246OlJUTCB9OwogICAgIFN0cmluZ1dpdGhEaXJlY3Rpb24gcmVzdWx0OwogCiAgICAgcmVzdWx0
ID0gdHJ1bmNhdGVGcm9tRW5kKHN0cmluZywgMCk7Ci0gICAgRVhQRUNUX0VRKFJUTCwgcmVzdWx0
LmRpcmVjdGlvbik7CisgICAgRVhQRUNUX0VRKFRleHREaXJlY3Rpb246OlJUTCwgcmVzdWx0LmRp
cmVjdGlvbik7CiAgICAgRVhQRUNUX0VRKCIiLCByZXN1bHQuc3RyaW5nKTsKIAogICAgIHJlc3Vs
dCA9IHRydW5jYXRlRnJvbUVuZChzdHJpbmcsIDEpOwotICAgIEVYUEVDVF9FUShSVEwsIHJlc3Vs
dC5kaXJlY3Rpb24pOworICAgIEVYUEVDVF9FUShUZXh0RGlyZWN0aW9uOjpSVEwsIHJlc3VsdC5k
aXJlY3Rpb24pOwogICAgIEVYUEVDVF9FUShTdHJpbmc6OmZyb21VVEY4KCLXpyIpLCByZXN1bHQu
c3RyaW5nKTsKIAogICAgIHJlc3VsdCA9IHRydW5jYXRlRnJvbUVuZChzdHJpbmcsIDIpOwotICAg
IEVYUEVDVF9FUShSVEwsIHJlc3VsdC5kaXJlY3Rpb24pOworICAgIEVYUEVDVF9FUShUZXh0RGly
ZWN0aW9uOjpSVEwsIHJlc3VsdC5kaXJlY3Rpb24pOwogICAgIEVYUEVDVF9FUShTdHJpbmc6OmZy
b21VVEY4KCLXp9a4IiksIHJlc3VsdC5zdHJpbmcpOwogCiAgICAgcmVzdWx0ID0gdHJ1bmNhdGVG
cm9tRW5kKHN0cmluZywgMTAwMCk7Ci0gICAgRVhQRUNUX0VRKFJUTCwgcmVzdWx0LmRpcmVjdGlv
bik7CisgICAgRVhQRUNUX0VRKFRleHREaXJlY3Rpb246OlJUTCwgcmVzdWx0LmRpcmVjdGlvbik7
CiAgICAgRVhQRUNUX0VRKFN0cmluZzo6ZnJvbVVURjgoIten1rjXpNa815XWvNem1rQn15nXoNeV
1rkiKSwgcmVzdWx0LnN0cmluZyk7CiB9CiAKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvQ29tbWFuZEJhY2tGb3J3YXJkLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29tbWFuZEJhY2tGb3J3YXJkLm1tCShy
ZXZpc2lvbiAyMzQ1MTQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0NvbW1hbmRCYWNrRm9yd2FyZC5tbQkod29ya2luZyBjb3B5KQpAQCAtMTc4LDcgKzE3OCw3IEBA
IHB1YmxpYzoKICAgICB9CiB9OwogCi1URVNUX0YoV2ViS2l0Ml9Db21tYW5kQmFja0ZvcndhcmRU
ZXN0V0tXZWJWaWV3LCBMVFIpCitURVNUX0YoV2ViS2l0Ml9Db21tYW5kQmFja0ZvcndhcmRUZXN0
V0tXZWJWaWV3LCBUZXh0RGlyZWN0aW9uOjpMVFIpCiB7CiAgICAgRVhQRUNUX0VRKE5TVXNlcklu
dGVyZmFjZUxheW91dERpcmVjdGlvbkxlZnRUb1JpZ2h0LCBbd2ViVmlldyB1c2VySW50ZXJmYWNl
TGF5b3V0RGlyZWN0aW9uXSk7CiAgICAgCkBAIC0yMjMsNyArMjIzLDcgQEAgVEVTVF9GKFdlYktp
dDJfQ29tbWFuZEJhY2tGb3J3YXJkVGVzdFdLVwogCiAjZW5kaWYKIAotVEVTVF9GKFdlYktpdDJf
Q29tbWFuZEJhY2tGb3J3YXJkVGVzdFdLVmlldywgTFRSKQorVEVTVF9GKFdlYktpdDJfQ29tbWFu
ZEJhY2tGb3J3YXJkVGVzdFdLVmlldywgVGV4dERpcmVjdGlvbjo6TFRSKQogewogICAgIEVYUEVD
VF9FUShOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25MZWZ0VG9SaWdodCwgW3dlYlZpZXcg
dXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbl0pOwogICAgIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>346645</attachid>
            <date>2018-08-06 13:11:59 -0700</date>
            <delta_ts>2018-08-06 13:35:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188350-20180806131158.patch</filename>
            <type>text/plain</type>
            <size>117489</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNDU2OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2NCBAQAorMjAxOC0wOC0wNiAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFVzZSBhIDEt
Ynl0ZSBlbnVtIGNsYXNzIGZvciBUZXh0RGlyZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODgzNTAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb24uaDoKKyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBUZXh0RGlyZWN0aW9u
IGNvbnN0KToKKyAgICAgICAgKiBjc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6Om1hdGNoQWxsUnVsZXMpOgorICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dXBkYXRl
VGl0bGVGcm9tVGl0bGVFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRU
aXRsZSk6CisgICAgICAgICogZG9tL1Bvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBv
c2l0aW9uOjpwcmltYXJ5RGlyZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBkb20vUmFuZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2U6OmNvbGxlY3RTZWxlY3Rpb25SZWN0c1dpdGhvdXRV
bmlvbkludGVyaW9yTGluZXMgY29uc3QpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKToKKyAgICAgICAg
KiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmJhc2VXcml0
aW5nRGlyZWN0aW9uRm9yU2VsZWN0aW9uU3RhcnQgY29uc3QpOgorICAgICAgICAqIGVkaXRpbmcv
RnJhbWVTZWxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246Ondp
bGxCZU1vZGlmaWVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjptb2RpZnlF
eHRlbmRpbmdSaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5
RXh0ZW5kaW5nRm9yd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6bW9k
aWZ5TW92aW5nUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246Om1vZGlm
eUV4dGVuZGluZ0xlZnQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246Om1vZGlm
eUV4dGVuZGluZ0JhY2t3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpt
b2RpZnlNb3ZpbmdMZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjp0ZXh0
U2VsZWN0aW9uSW50ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjptb2Rp
ZnkpOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlZpc2libGVQb3NpdGlvbjo6bGVmdFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uOjpyaWdodFZpc3VhbGx5RGlz
dGluY3RDYW5kaWRhdGUgY29uc3QpOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVVuaXRzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnZpc3VhbFdvcmRQb3NpdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpsZWZ0V29yZFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnJpZ2h0V29yZFBvc2l0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmxlZnRCb3VuZGFyeU9mTGluZSk6CisgICAgICAgIChX
ZWJDb3JlOjpyaWdodEJvdW5kYXJ5T2ZMaW5lKToKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpkaXJlY3Rpb25hbGl0eUlmaGFz
RGlyQXV0b0F0dHJpYnV0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6
ZGlyZWN0aW9uYWxpdHkgY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpzZXR1cERhdGVUaW1lQ2hv
b3NlclBhcmFtZXRlcnMpOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmRp
cmVjdGlvbkZvckZvcm1EYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9y
bUNvbnRyb2xFbGVtZW50OjphZGp1c3RJbm5lclRleHRTdHlsZSBjb25zdCk6CisgICAgICAgICog
aHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUaXRsZUVs
ZW1lbnQ6OmNvbXB1dGVkVGV4dFdpdGhEaXJlY3Rpb24pOgorICAgICAgICAqIGh0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OnRvVGV4dERpcmVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRpcmVjdGlvbiBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnRleHRPZmZzZXQpOgorICAgICAg
ICAqIGh0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTbGlkZXJDb250YWluZXI6OmxheW91dCk6CisgICAgICAgICogaHRtbC9zaGFkb3cv
VGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb250
cm9sSW5uZXJFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUpOgorICAgICAgICAqIHBhZ2UvQ2hy
b21lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6c2V0VG9vbFRpcCk6CisgICAgICAg
ICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFnaW5hdGlvbk1vZGVG
b3JSZW5kZXJTdHlsZSk6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy55YW1sOgorICAgICAgICAq
IHBsYXRmb3JtL1JlY3RFZGdlcy5oOgorICAgICAgICAoV2ViQ29yZTo6UmVjdEVkZ2VzOjpzdGFy
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZWN0RWRnZXM6OmVuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZWN0RWRnZXM6OnN0YXJ0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlY3RFZGdlczo6
ZW5kIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlY3RFZGdlczo6c2V0U3RhcnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVjdEVkZ2VzOjpzZXRFbmQpOgorICAgICAgICAqIHBsYXRmb3JtL1Vz
ZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGxleFRl
eHRDb250cm9sbGVyOjpjb21wdXRlRXhwYW5zaW9uT3Bwb3J0dW5pdHkpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRD
YXNjYWRlOjpleHBhbnNpb25PcHBvcnR1bml0eUNvdW50SW50ZXJuYWwpOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udENhc2NhZGU6OmxlYWRpbmdFeHBhbnNpb25PcHBvcnR1bml0eSk6CisgICAgICAg
IChXZWJDb3JlOjpGb250Q2FzY2FkZTo6dHJhaWxpbmdFeHBhbnNpb25PcHBvcnR1bml0eSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0JpZGlUZXh0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmg6CisgICAgICAgIChXZWJDb3JlOjpUZXh0UnVuOjpUZXh0
UnVuKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRSdW46OnJ0bCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0UnVuOjpsdHIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFJ1bjo6
c2V0RGlyZWN0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9y
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldpZHRoSXRlcmF0b3I6OldpZHRoSXRlcmF0b3IpOgor
ICAgICAgICAqIHBsYXRmb3JtL2lvcy9TZWxlY3Rpb25SZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNlbGVjdGlvblJlY3Q6OlNlbGVjdGlvblJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL3Rl
eHQvQmlkaVJlc29sdmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpCaWRpU3RhdHVzOjpCaWRpU3Rh
dHVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1N0cmluZ1dpdGhEaXJlY3Rpb24uaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS90ZXh0L1dyaXRpbmdNb2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpp
c0xlZnRUb1JpZ2h0RGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmlzVmVydGljYWxXcml0
aW5nTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjppc0ZsaXBwZWRXcml0aW5nTW9kZSk6CisgICAg
ICAgIChXZWJDb3JlOjptYXBMb2dpY2FsU2lkZVRvUGh5c2ljYWxTaWRlKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVz
dWx0OjpzcGVsbGluZ1Rvb2xUaXAgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJl
c3VsdDo6dGl0bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6aW5u
ZXJUZXh0SWZUcnVuY2F0ZWQgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVCb3gu
aDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUJveDo6ZGlyZWN0aW9uIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OklubGluZUJveDo6aXNMZWZ0VG9SaWdodERpcmVjdGlvbiBjb25zdCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5saW5lRmxvd0JveDo6cGFpbnRGaWxsTGF5ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9Jbmxp
bmVJdGVyYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6ZW1iZWRDaGFyRnJvbURpcmVjdGlvbik6
CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5saW5lVGV4dEJveDo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6bWlycm9yUlRMU2Vn
bWVudCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRldGVybWlu
ZURpcmVjdGlvbmFsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6dGV4
dEFsaWdubWVudEZvckxpbmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tG
bG93Ojp1cGRhdGVMb2dpY2FsV2lkdGhGb3JBbGlnbm1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQmxvY2tGbG93OjpoYW5kbGVUcmFpbGluZ1NwYWNlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCbG9ja0Zsb3c6OmxheW91dFJ1bnNBbmRGbG9hdHNJblJhbmdlKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVJbmxp
bmVTdGF0aWNEaXN0YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVQ
b3NpdGlvbmVkTG9naWNhbFdpZHRoVXNpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aFJlcGxhY2VkIGNvbnN0KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6YXBwbHlMaW5lQ2xhbXAp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGcmFnbWVudGVkRmxvdy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJGcmFnbWVudGVkRmxvdzo6dXBkYXRlTG9naWNhbFdpZHRoKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckZyYWdtZW50ZWRGbG93Ojp1cGRhdGVGcmFnbWVudHNGcmFn
bWVudGVkRmxvd1BvcnRpb25SZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllck1vZGVsT2JqZWN0
OjpzaG91bGRQbGFjZUJsb2NrRGlyZWN0aW9uU2Nyb2xsYmFyT25MZWZ0IGNvbnN0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTWFycXVlZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJNYXJxdWVlOjpkaXJlY3Rpb24gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJN
ZW51TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZW51TGlzdDo6YWRqdXN0SW5u
ZXJTdHlsZSk6CisgICAgICAgIChSZW5kZXJNZW51TGlzdDo6Y2xpZW50UGFkZGluZ0xlZnQgY29u
c3QpOgorICAgICAgICAoUmVuZGVyTWVudUxpc3Q6OmNsaWVudFBhZGRpbmdSaWdodCBjb25zdCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWVJT1M6OnBvcHVwSW50ZXJuYWxQYWRkaW5nQm94IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludE1lbnVMaXN0QnV0dG9uRGVjb3JhdGlv
bnMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludE1lbnVMaXN0QnV0dG9uRGVjb3JhdGlvbnMpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBvcHVwSW50ZXJuYWxQYWRkaW5nQm94
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpzZXRQb3B1cEJ1dHRv
bkNlbGxTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRTZWFy
Y2hGaWVsZENhbmNlbEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6
cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24pOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1M
QmxvY2s6Om1pcnJvcklmTmVlZGVkIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhN
TE9wZXJhdG9yOjpsYXlvdXRCbG9jayk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpSZW5kZXJTdHlsZSk6
CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTdHlsZTo6aXNMZWZ0VG9SaWdodERpcmVjdGlvbiBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbERpcmVjdGlvbik6CisgICAgICAgICogdGVz
dGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsU2V0
dGluZ3M6OnN5c3RlbUxheW91dERpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5h
bFNldHRpbmdzOjpzZXRTeXN0ZW1MYXlvdXREaXJlY3Rpb24pOgorICAgICAgICAqIHRlc3Rpbmcv
SW50ZXJuYWxzLmg6CisKIDIwMTgtMDgtMDMgIEJlbiBSaWNoYXJkcyAgPGJlbnRvbl9yaWNoYXJk
c0BhcHBsZS5jb20+CiAKICAgICAgICAgV2Ugc2hvdWxkIGNhY2hlIHRoZSBjb21waWxlZCBzYW5k
Ym94IHByb2ZpbGUgaW4gYSBkYXRhIHZhdWx0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCShyZXZpc2lvbiAyMzQ1MTQp
CisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmlu
ZyYgdGFnKCkgY29uc3QgeyByZXR1cm4gbV90YWc7IH0KICAgICBjb25zdCBVUkwmIGljb24oKSBj
b25zdCB7IHJldHVybiBtX2ljb247IH0KIAotICAgIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9kaXJlY3Rpb24gPT0gRGlyZWN0aW9uOjpSdGwgPyBSVEwgOiBMVFI7
IH0KKyAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZGlyZWN0
aW9uID09IERpcmVjdGlvbjo6UnRsID8gVGV4dERpcmVjdGlvbjo6UlRMIDogVGV4dERpcmVjdGlv
bjo6TFRSOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpc3BhdGNoQ2xpY2tFdmVudCgp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlzcGF0Y2hDbG9zZUV2ZW50KCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNl
VGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsv
V2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCShyZXZpc2lvbiAyMzQ1MTQpCisrKyBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNl
VGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzNSw3ICszMzUsNyBAQCBzdGF0aWMgaW50IG9m
ZnNldEFkanVzdG1lbnRGb3JMaXN0SXRlbShjCiAgICAgLy8gV2UgbmVlZCB0byBhZGp1c3QgdGhl
IG9mZnNldHMgZm9yIHRoZSBsaXN0IGl0ZW0gbWFya2VyIGluCiAgICAgLy8gTGVmdC1Uby1SaWdo
dCB0ZXh0LCBzaW5jZSB3ZSBleHBvc2UgaXQgdG9nZXRoZXIgd2l0aCB0aGUgdGV4dC4KICAgICBS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gb2JqZWN0LT5yZW5kZXJlcigpOwotICAgIGlmIChpczxS
ZW5kZXJMaXN0SXRlbT4ocmVuZGVyZXIpICYmIHJlbmRlcmVyLT5zdHlsZSgpLmRpcmVjdGlvbigp
ID09IExUUikKKyAgICBpZiAoaXM8UmVuZGVyTGlzdEl0ZW0+KHJlbmRlcmVyKSAmJiByZW5kZXJl
ci0+c3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpCiAgICAgICAgIHJl
dHVybiBkb3duY2FzdDxSZW5kZXJMaXN0SXRlbT4oKnJlbmRlcmVyKS5tYXJrZXJUZXh0V2l0aFN1
ZmZpeCgpLmxlbmd0aCgpOwogCiAgICAgcmV0dXJuIDA7CkBAIC00NjIsNyArNDYyLDcgQEAgc3Rh
dGljIGdjaGFyKiB3ZWJraXRBY2Nlc3NpYmxlVGV4dEdldFRleAogICAgICAgICBSZW5kZXJPYmpl
Y3QqIG9ialJlbmRlcmVyID0gY29yZU9iamVjdC0+cmVuZGVyZXIoKTsKICAgICAgICAgaWYgKGlz
PFJlbmRlckxpc3RJdGVtPihvYmpSZW5kZXJlcikpIHsKICAgICAgICAgICAgIFN0cmluZyBtYXJr
ZXJUZXh0ID0gZG93bmNhc3Q8UmVuZGVyTGlzdEl0ZW0+KCpvYmpSZW5kZXJlcikubWFya2VyVGV4
dFdpdGhTdWZmaXgoKTsKLSAgICAgICAgICAgIHJldCA9IG9ialJlbmRlcmVyLT5zdHlsZSgpLmRp
cmVjdGlvbigpID09IExUUiA/IG1hcmtlclRleHQgKyByZXQgOiByZXQgKyBtYXJrZXJUZXh0Owor
ICAgICAgICAgICAgcmV0ID0gb2JqUmVuZGVyZXItPnN0eWxlKCkuZGlyZWN0aW9uKCkgPT0gVGV4
dERpcmVjdGlvbjo6TFRSID8gbWFya2VyVGV4dCArIHJldCA6IHJldCArIG1hcmtlclRleHQ7CiAg
ICAgICAgICAgICBpZiAoZW5kT2Zmc2V0ID09IC0xKQogICAgICAgICAgICAgICAgIGFjdHVhbEVu
ZE9mZnNldCA9IHJldC5sZW5ndGgoKSArIG1hcmtlclRleHQubGVuZ3RoKCk7CiAgICAgICAgIH0K
QEAgLTkwNSwxMSArOTA1LDExIEBAIHN0YXRpYyBjaGFyKiB3ZWJraXRBY2Nlc3NpYmxlVGV4dExp
bmVGb3IKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gY29yZU9iamVjdC0+cmVuZGVyZXIo
KTsKICAgICBpZiAocmVuZGVyZXItPmlzTGlzdEl0ZW0oKSkgewogICAgICAgICAvLyBGb3IgTGVm
dC10by1SaWdodCwgdGhlIGxpc3QgaXRlbSBtYXJrZXIgaXMgYXQgdGhlIGJlZ2lubmluZyBvZiB0
aGUgZXhwb3NlZCB0ZXh0LgotICAgICAgICBpZiAocmVuZGVyZXItPnN0eWxlKCkuZGlyZWN0aW9u
KCkgPT0gTFRSICYmIGlzRmlyc3RWaXNpYmxlUG9zaXRpb25Jbk5vZGUoc2VsZWN0ZWRMaW5lLnZp
c2libGVTdGFydCgpLCBub2RlKSkKKyAgICAgICAgaWYgKHJlbmRlcmVyLT5zdHlsZSgpLmRpcmVj
dGlvbigpID09IFRleHREaXJlY3Rpb246OkxUUiAmJiBpc0ZpcnN0VmlzaWJsZVBvc2l0aW9uSW5O
b2RlKHNlbGVjdGVkTGluZS52aXNpYmxlU3RhcnQoKSwgbm9kZSkpCiAgICAgICAgICAgICAqc3Rh
cnRPZmZzZXQgPSAwOwogCiAgICAgICAgIC8vIEZvciBSaWdodC10by1MZWZ0LCB0aGUgbGlzdCBp
dGVtIG1hcmtlciBpcyBhdCB0aGUgZW5kIG9mIHRoZSBleHBvc2VkIHRleHQuCi0gICAgICAgIGlm
IChyZW5kZXJlci0+c3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBSVEwgJiYgaXNMYXN0VmlzaWJsZVBv
c2l0aW9uSW5Ob2RlKHNlbGVjdGVkTGluZS52aXNpYmxlRW5kKCksIG5vZGUpKQorICAgICAgICBp
ZiAocmVuZGVyZXItPnN0eWxlKCkuZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6UlRMICYm
IGlzTGFzdFZpc2libGVQb3NpdGlvbkluTm9kZShzZWxlY3RlZExpbmUudmlzaWJsZUVuZCgpLCBu
b2RlKSkKICAgICAgICAgICAgICplbmRPZmZzZXQgPSBhY2Nlc3NpYmlsaXR5T2JqZWN0TGVuZ3Ro
KGNvcmVPYmplY3QpOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1p
dGl2ZVZhbHVlTWFwcGluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCShyZXZpc2lvbiAyMzQ1MTQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
MTUwLDEwICszMTUwLDEwIEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1MKIHsKICAgICBtX3ByaW1pdGl2ZVVuaXRUeXBlID0gQ1NTX1ZBTFVFX0lEOwogICAgIHN3aXRj
aCAoZSkgewotICAgIGNhc2UgTFRSOgorICAgIGNhc2UgVGV4dERpcmVjdGlvbjo6TFRSOgogICAg
ICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUx0cjsKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBSVEw6CisgICAgY2FzZSBUZXh0RGlyZWN0aW9uOjpSVEw6CiAgICAgICAgIG1fdmFsdWUu
dmFsdWVJRCA9IENTU1ZhbHVlUnRsOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0zMTY1LDE1
ICszMTY1LDE1IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGUKIAog
ICAgIHN3aXRjaCAobV92YWx1ZS52YWx1ZUlEKSB7CiAgICAgY2FzZSBDU1NWYWx1ZUx0cjoKLSAg
ICAgICAgcmV0dXJuIExUUjsKKyAgICAgICAgcmV0dXJuIFRleHREaXJlY3Rpb246OkxUUjsKICAg
ICBjYXNlIENTU1ZhbHVlUnRsOgotICAgICAgICByZXR1cm4gUlRMOworICAgICAgICByZXR1cm4g
VGV4dERpcmVjdGlvbjo6UlRMOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0K
IAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBMVFI7CisgICAgcmV0dXJu
IFRleHREaXJlY3Rpb246OkxUUjsKIH0KIAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFdyaXRpbmdNb2RlIGUpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAJKHJldmlzaW9uIDIzNDUxNCkKKysr
IFNvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTUxOCw3ICs1MTgsNyBAQCB2b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjptYXRjaEFs
bFJ1bGVzCiAgICAgICAgICAgICBib29sIGlzQXV0bzsKICAgICAgICAgICAgIFRleHREaXJlY3Rp
b24gdGV4dERpcmVjdGlvbiA9IGRvd25jYXN0PEhUTUxFbGVtZW50PihzdHlsZWRFbGVtZW50KS5k
aXJlY3Rpb25hbGl0eUlmaGFzRGlyQXV0b0F0dHJpYnV0ZShpc0F1dG8pOwogICAgICAgICAgICAg
aWYgKGlzQXV0bykKLSAgICAgICAgICAgICAgICBtX3Jlc3VsdC5hZGRNYXRjaGVkUHJvcGVydGll
cyh0ZXh0RGlyZWN0aW9uID09IExUUiA/IGxlZnRUb1JpZ2h0RGVjbGFyYXRpb24oKSA6IHJpZ2h0
VG9MZWZ0RGVjbGFyYXRpb24oKSk7CisgICAgICAgICAgICAgICAgbV9yZXN1bHQuYWRkTWF0Y2hl
ZFByb3BlcnRpZXModGV4dERpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBsZWZ0VG9S
aWdodERlY2xhcmF0aW9uKCkgOiByaWdodFRvTGVmdERlY2xhcmF0aW9uKCkpOwogICAgICAgICB9
CiAgICAgfQogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAyMzQ1
MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNTE0LDcgKzE1MTQsNyBAQCB2b2lkIERvY3VtZW50Ojp1cGRhdGVUaXRsZUZyb21UaXRsZUVs
ZW1lCiAgICAgICAgIHVwZGF0ZVRpdGxlKGRvd25jYXN0PEhUTUxUaXRsZUVsZW1lbnQ+KCptX3Rp
dGxlRWxlbWVudCkudGV4dFdpdGhEaXJlY3Rpb24oKSk7CiAgICAgZWxzZSBpZiAoaXM8U1ZHVGl0
bGVFbGVtZW50PigqbV90aXRsZUVsZW1lbnQpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBEb2VzIHRo
ZSBTVkcgdGl0bGUgZWxlbWVudCBoYXZlIGEgdGV4dCBkaXJlY3Rpb24/Ci0gICAgICAgIHVwZGF0
ZVRpdGxlKHsgZG93bmNhc3Q8U1ZHVGl0bGVFbGVtZW50PigqbV90aXRsZUVsZW1lbnQpLnRleHRD
b250ZW50KCksIExUUiB9KTsKKyAgICAgICAgdXBkYXRlVGl0bGUoeyBkb3duY2FzdDxTVkdUaXRs
ZUVsZW1lbnQ+KCptX3RpdGxlRWxlbWVudCkudGV4dENvbnRlbnQoKSwgVGV4dERpcmVjdGlvbjo6
TFRSIH0pOwogICAgIH0KIH0KIApAQCAtMTU0Niw3ICsxNTQ2LDcgQEAgdm9pZCBEb2N1bWVudDo6
c2V0VGl0bGUoY29uc3QgU3RyaW5nJiB0aQogICAgIGVsc2UgaWYgKGlzPFNWR1RpdGxlRWxlbWVu
dD4obV90aXRsZUVsZW1lbnQuZ2V0KCkpKQogICAgICAgICBkb3duY2FzdDxTVkdUaXRsZUVsZW1l
bnQ+KCptX3RpdGxlRWxlbWVudCkuc2V0VGV4dENvbnRlbnQodGl0bGUpOwogICAgIGVsc2UKLSAg
ICAgICAgdXBkYXRlVGl0bGUoeyB0aXRsZSwgTFRSIH0pOworICAgICAgICB1cGRhdGVUaXRsZSh7
IHRpdGxlLCBUZXh0RGlyZWN0aW9uOjpMVFIgfSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lPiBz
dHJ1Y3QgVGl0bGVUcmFpdHM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAJKHJldmlzaW9u
IDIzNDUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEzODgsMTAgKzEzODgsMTAgQEAgdm9pZCBQb3NpdGlvbjo6Z2V0SW5saW5lQm94QW5k
T2Zmc2V0KEVBZgogVGV4dERpcmVjdGlvbiBQb3NpdGlvbjo6cHJpbWFyeURpcmVjdGlvbigpIGNv
bnN0CiB7CiAgICAgaWYgKCFtX2FuY2hvck5vZGUtPnJlbmRlcmVyKCkpCi0gICAgICAgIHJldHVy
biBMVFI7CisgICAgICAgIHJldHVybiBUZXh0RGlyZWN0aW9uOjpMVFI7CiAgICAgaWYgKGF1dG8q
IGJsb2NrRmxvdyA9IGxpbmVhZ2VPZlR5cGU8UmVuZGVyQmxvY2tGbG93PigqbV9hbmNob3JOb2Rl
LT5yZW5kZXJlcigpKS5maXJzdCgpKQogICAgICAgICByZXR1cm4gYmxvY2tGbG93LT5zdHlsZSgp
LmRpcmVjdGlvbigpOwotICAgIHJldHVybiBMVFI7CisgICAgcmV0dXJuIFRleHREaXJlY3Rpb246
OkxUUjsKIH0KIAogI2lmIEVOQUJMRShUUkVFX0RFQlVHR0lORykKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9SYW5nZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1Jhbmdl
LmNwcAkocmV2aXNpb24gMjM0NTE0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTQzMSw3ICsxNDMxLDcgQEAgaW50IFJhbmdlOjpjb2xsZWN0U2Vs
ZWN0aW9uUmVjdHNXaXRob3V0VQogICAgICAgICBpZiAocmVjdHNbal0ubGluZU51bWJlcigpICE9
IHJlY3RzW2ogLSAxXS5saW5lTnVtYmVyKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgU2VsZWN0aW9uUmVjdCYgcHJldmlvdXNSZWN0ID0gcmVjdHNbaiAtIDFdOwotICAgICAgICBi
b29sIHByZXZpb3VzUmVjdE1heU5vdFJlYWNoUmlnaHRFZGdlID0gKHByZXZpb3VzUmVjdC5kaXJl
Y3Rpb24oKSA9PSBMVFIgJiYgcHJldmlvdXNSZWN0LmNvbnRhaW5zRW5kKCkpIHx8IChwcmV2aW91
c1JlY3QuZGlyZWN0aW9uKCkgPT0gUlRMICYmIHByZXZpb3VzUmVjdC5jb250YWluc1N0YXJ0KCkp
OworICAgICAgICBib29sIHByZXZpb3VzUmVjdE1heU5vdFJlYWNoUmlnaHRFZGdlID0gKHByZXZp
b3VzUmVjdC5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgJiYgcHJldmlvdXNSZWN0
LmNvbnRhaW5zRW5kKCkpIHx8IChwcmV2aW91c1JlY3QuZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVj
dGlvbjo6UlRMICYmIHByZXZpb3VzUmVjdC5jb250YWluc1N0YXJ0KCkpOwogICAgICAgICBpZiAo
cHJldmlvdXNSZWN0TWF5Tm90UmVhY2hSaWdodEVkZ2UpCiAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgaW50IGFkanVzdGVkV2lkdGggPSByZWN0c1tqXS5sb2dpY2FsTGVmdCgpIC0gcHJl
dmlvdXNSZWN0LmxvZ2ljYWxMZWZ0KCk7CkBAIC0xNDQ2LDEwICsxNDQ2LDEwIEBAIGludCBSYW5n
ZTo6Y29sbGVjdFNlbGVjdGlvblJlY3RzV2l0aG91dFUKICAgICAgICAgU2VsZWN0aW9uUmVjdCYg
c2VsZWN0aW9uUmVjdCA9IHJlY3RzW2ldOwogICAgICAgICBpZiAoIXNlbGVjdGlvblJlY3QuaXNM
aW5lQnJlYWsoKSAmJiBzZWxlY3Rpb25SZWN0LmxpbmVOdW1iZXIoKSA+PSBtYXhMaW5lTnVtYmVy
KQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmIChzZWxlY3Rpb25SZWN0LmRpcmVj
dGlvbigpID09IFJUTCAmJiBzZWxlY3Rpb25SZWN0LmlzRmlyc3RPbkxpbmUoKSkgeworICAgICAg
ICBpZiAoc2VsZWN0aW9uUmVjdC5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpSVEwgJiYg
c2VsZWN0aW9uUmVjdC5pc0ZpcnN0T25MaW5lKCkpIHsKICAgICAgICAgICAgIHNlbGVjdGlvblJl
Y3Quc2V0TG9naWNhbFdpZHRoKHNlbGVjdGlvblJlY3QubG9naWNhbFdpZHRoKCkgKyBzZWxlY3Rp
b25SZWN0LmxvZ2ljYWxMZWZ0KCkgLSBzZWxlY3Rpb25SZWN0Lm1pblgoKSk7CiAgICAgICAgICAg
ICBzZWxlY3Rpb25SZWN0LnNldExvZ2ljYWxMZWZ0KHNlbGVjdGlvblJlY3QubWluWCgpKTsKLSAg
ICAgICAgfSBlbHNlIGlmIChzZWxlY3Rpb25SZWN0LmRpcmVjdGlvbigpID09IExUUiAmJiBzZWxl
Y3Rpb25SZWN0LmlzTGFzdE9uTGluZSgpKQorICAgICAgICB9IGVsc2UgaWYgKHNlbGVjdGlvblJl
Y3QuZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSICYmIHNlbGVjdGlvblJlY3QuaXNM
YXN0T25MaW5lKCkpCiAgICAgICAgICAgICBzZWxlY3Rpb25SZWN0LnNldExvZ2ljYWxXaWR0aChz
ZWxlY3Rpb25SZWN0Lm1heFgoKSAtIHNlbGVjdGlvblJlY3QubG9naWNhbExlZnQoKSk7CiAgICAg
fQogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwCShyZXZpc2lvbiAyMzQ1
MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNjIsMTAgKzM2MiwxMCBAQCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbk9mRW5jbG9zaW5n
QmxvY2soCiB7CiAgICAgYXV0byBibG9jayA9IGVuY2xvc2luZ0Jsb2NrKHBvc2l0aW9uLmNvbnRh
aW5lck5vZGUoKSk7CiAgICAgaWYgKCFibG9jaykKLSAgICAgICAgcmV0dXJuIExUUjsKKyAgICAg
ICAgcmV0dXJuIFRleHREaXJlY3Rpb246OkxUUjsKICAgICBhdXRvIHJlbmRlcmVyID0gYmxvY2st
PnJlbmRlcmVyKCk7CiAgICAgaWYgKCFyZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIExUUjsKKyAg
ICAgICAgcmV0dXJuIFRleHREaXJlY3Rpb246OkxUUjsKICAgICByZXR1cm4gcmVuZGVyZXItPnN0
eWxlKCkuZGlyZWN0aW9uKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAJ
KHJldmlzaW9uIDIzNDUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTc2Miw5ICsxNzYyLDkgQEAgV3JpdGluZ0RpcmVjdGlvbiBFZGl0
b3I6OmJhc2VXcml0aW5nRGlyZQogICAgIH0KIAogICAgIHN3aXRjaCAocmVuZGVyZXItPnN0eWxl
KCkuZGlyZWN0aW9uKCkpIHsKLSAgICBjYXNlIExUUjoKKyAgICBjYXNlIFRleHREaXJlY3Rpb246
OkxUUjoKICAgICAgICAgcmV0dXJuIExlZnRUb1JpZ2h0V3JpdGluZ0RpcmVjdGlvbjsKLSAgICBj
YXNlIFJUTDoKKyAgICBjYXNlIFRleHREaXJlY3Rpb246OlJUTDoKICAgICAgICAgcmV0dXJuIFJp
Z2h0VG9MZWZ0V3JpdGluZ0RpcmVjdGlvbjsKICAgICB9CiAgICAgCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAkocmV2aXNpb24gMjM0NTE0KQorKysgU291
cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTYzMyw3ICs2MzMsNyBAQCB2b2lkIEZyYW1lU2VsZWN0aW9uOjp3aWxsQmVNb2RpZmllZChFQWx0
CiAgICAgfSBlbHNlIHsKICAgICAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKICAgICAgICAgY2Fz
ZSBEaXJlY3Rpb25SaWdodDoKLSAgICAgICAgICAgIGlmIChkaXJlY3Rpb25PZlNlbGVjdGlvbigp
ID09IExUUikKKyAgICAgICAgICAgIGlmIChkaXJlY3Rpb25PZlNlbGVjdGlvbigpID09IFRleHRE
aXJlY3Rpb246OkxUUikKICAgICAgICAgICAgICAgICBiYXNlSXNTdGFydCA9IHRydWU7CiAgICAg
ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgYmFzZUlzU3RhcnQgPSBmYWxzZTsKQEAgLTY0
Miw3ICs2NDIsNyBAQCB2b2lkIEZyYW1lU2VsZWN0aW9uOjp3aWxsQmVNb2RpZmllZChFQWx0CiAg
ICAgICAgICAgICBiYXNlSXNTdGFydCA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBEaXJlY3Rpb25MZWZ0OgotICAgICAgICAgICAgaWYgKGRpcmVjdGlvbk9mU2VsZWN0
aW9uKCkgPT0gTFRSKQorICAgICAgICAgICAgaWYgKGRpcmVjdGlvbk9mU2VsZWN0aW9uKCkgPT0g
VGV4dERpcmVjdGlvbjo6TFRSKQogICAgICAgICAgICAgICAgIGJhc2VJc1N0YXJ0ID0gZmFsc2U7
CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgYmFzZUlzU3RhcnQgPSB0cnVlOwpA
QCAtNzE4LDIzICs3MTgsMjMgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2Rp
ZnlFeAogICAgIC8vIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gbW9kaWZ5RXh0ZW5kaW5nUmlnaHQg
YW5kIG1vZGlmeUV4dGVuZGluZ0ZvcndhcmQgaXM6CiAgICAgLy8gbW9kaWZ5RXh0ZW5kaW5nRm9y
d2FyZCBhbHdheXMgZXh0ZW5kcyBmb3J3YXJkIGxvZ2ljYWxseS4KICAgICAvLyBtb2RpZnlFeHRl
bmRpbmdSaWdodCBiZWhhdmVzIHRoZSBzYW1lIGFzIG1vZGlmeUV4dGVuZGluZ0ZvcndhcmQgZXhj
ZXB0IGZvciBleHRlbmRpbmcgY2hhcmFjdGVyIG9yIHdvcmQsCi0gICAgLy8gaXQgZXh0ZW5kcyBm
b3J3YXJkIGxvZ2ljYWxseSBpZiB0aGUgZW5jbG9zaW5nIGJsb2NrIGlzIExUUiBkaXJlY3Rpb24s
Ci0gICAgLy8gYnV0IGl0IGV4dGVuZHMgYmFja3dhcmQgbG9naWNhbGx5IGlmIHRoZSBlbmNsb3Np
bmcgYmxvY2sgaXMgUlRMIGRpcmVjdGlvbi4KKyAgICAvLyBpdCBleHRlbmRzIGZvcndhcmQgbG9n
aWNhbGx5IGlmIHRoZSBlbmNsb3NpbmcgYmxvY2sgaXMgVGV4dERpcmVjdGlvbjo6TFRSLAorICAg
IC8vIGJ1dCBpdCBleHRlbmRzIGJhY2t3YXJkIGxvZ2ljYWxseSBpZiB0aGUgZW5jbG9zaW5nIGJs
b2NrIGlzIFRleHREaXJlY3Rpb246OlJUTC4KICAgICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7CiAg
ICAgY2FzZSBDaGFyYWN0ZXJHcmFudWxhcml0eToKLSAgICAgICAgaWYgKGRpcmVjdGlvbk9mRW5j
bG9zaW5nQmxvY2soKSA9PSBMVFIpCisgICAgICAgIGlmIChkaXJlY3Rpb25PZkVuY2xvc2luZ0Js
b2NrKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSKQogICAgICAgICAgICAgcG9zID0gcG9zLm5leHQo
Q2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBw
b3MgPSBwb3MucHJldmlvdXMoQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIFdvcmRHcmFudWxhcml0eToKLSAgICAgICAgaWYgKGRpcmVjdGlvbk9m
RW5jbG9zaW5nQmxvY2soKSA9PSBMVFIpCisgICAgICAgIGlmIChkaXJlY3Rpb25PZkVuY2xvc2lu
Z0Jsb2NrKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSKQogICAgICAgICAgICAgcG9zID0gbmV4dFdv
cmRQb3NpdGlvbkZvclBsYXRmb3JtKHBvcyk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBv
cyA9IHByZXZpb3VzV29yZFBvc2l0aW9uKHBvcyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
TGluZUJvdW5kYXJ5OgotICAgICAgICBpZiAoZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9jaygpID09
IExUUikKKyAgICAgICAgaWYgKGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2soKSA9PSBUZXh0RGly
ZWN0aW9uOjpMVFIpCiAgICAgICAgICAgICBwb3MgPSBtb2RpZnlFeHRlbmRpbmdGb3J3YXJkKGdy
YW51bGFyaXR5KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcG9zID0gbW9kaWZ5RXh0ZW5k
aW5nQmFja3dhcmQoZ3JhbnVsYXJpdHkpOwpAQCAtNzUzLDcgKzc1Myw3IEBAIFZpc2libGVQb3Np
dGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5RXgKICAgICAgICAgYnJlYWs7CiAgICAgfQogI2lm
IEVOQUJMRShVU0VSU0VMRUNUX0FMTCkKLSAgICBhZGp1c3RQb3NpdGlvbkZvclVzZXJTZWxlY3RB
bGwocG9zLCBkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCkgPT0gTFRSKTsKKyAgICBhZGp1c3RQ
b3NpdGlvbkZvclVzZXJTZWxlY3RBbGwocG9zLCBkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCkg
PT0gVGV4dERpcmVjdGlvbjo6TFRSKTsKICNlbmRpZgogICAgIHJldHVybiBwb3M7CiB9CkBAIC03
OTgsNyArNzk4LDcgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlFeAog
ICAgICAgICBicmVhazsKICAgICB9CiAjaWYgRU5BQkxFKFVTRVJTRUxFQ1RfQUxMKQotICAgICBh
ZGp1c3RQb3NpdGlvbkZvclVzZXJTZWxlY3RBbGwocG9zLCBkaXJlY3Rpb25PZkVuY2xvc2luZ0Js
b2NrKCkgPT0gTFRSKTsKKyAgICBhZGp1c3RQb3NpdGlvbkZvclVzZXJTZWxlY3RBbGwocG9zLCBk
aXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSKTsKICNlbmRp
ZgogICAgIHJldHVybiBwb3M7CiB9CkBAIC04MTEsNyArODExLDcgQEAgVmlzaWJsZVBvc2l0aW9u
IEZyYW1lU2VsZWN0aW9uOjptb2RpZnlNbwogICAgIHN3aXRjaCAoZ3JhbnVsYXJpdHkpIHsKICAg
ICBjYXNlIENoYXJhY3RlckdyYW51bGFyaXR5OgogICAgICAgICBpZiAoaXNSYW5nZSgpKSB7Ci0g
ICAgICAgICAgICBpZiAoZGlyZWN0aW9uT2ZTZWxlY3Rpb24oKSA9PSBMVFIpCisgICAgICAgICAg
ICBpZiAoZGlyZWN0aW9uT2ZTZWxlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpCiAgICAg
ICAgICAgICAgICAgcG9zID0gVmlzaWJsZVBvc2l0aW9uKG1fc2VsZWN0aW9uLmVuZCgpLCBtX3Nl
bGVjdGlvbi5hZmZpbml0eSgpKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBw
b3MgPSBWaXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24uc3RhcnQoKSwgbV9zZWxlY3Rpb24uYWZm
aW5pdHkoKSk7CkBAIC05MzUsMjMgKzkzNSwyMyBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxl
Y3Rpb246Om1vZGlmeUV4CiAgICAgLy8gVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBtb2RpZnlFeHRl
bmRpbmdMZWZ0IGFuZCBtb2RpZnlFeHRlbmRpbmdCYWNrd2FyZCBpczoKICAgICAvLyBtb2RpZnlF
eHRlbmRpbmdCYWNrd2FyZCBhbHdheXMgZXh0ZW5kcyBiYWNrd2FyZCBsb2dpY2FsbHkuCiAgICAg
Ly8gbW9kaWZ5RXh0ZW5kaW5nTGVmdCBiZWhhdmVzIHRoZSBzYW1lIGFzIG1vZGlmeUV4dGVuZGlu
Z0JhY2t3YXJkIGV4Y2VwdCBmb3IgZXh0ZW5kaW5nIGNoYXJhY3RlciBvciB3b3JkLAotICAgIC8v
IGl0IGV4dGVuZHMgYmFja3dhcmQgbG9naWNhbGx5IGlmIHRoZSBlbmNsb3NpbmcgYmxvY2sgaXMg
TFRSIGRpcmVjdGlvbiwKLSAgICAvLyBidXQgaXQgZXh0ZW5kcyBmb3J3YXJkIGxvZ2ljYWxseSBp
ZiB0aGUgZW5jbG9zaW5nIGJsb2NrIGlzIFJUTCBkaXJlY3Rpb24uCisgICAgLy8gaXQgZXh0ZW5k
cyBiYWNrd2FyZCBsb2dpY2FsbHkgaWYgdGhlIGVuY2xvc2luZyBibG9jayBpcyBUZXh0RGlyZWN0
aW9uOjpMVFIsCisgICAgLy8gYnV0IGl0IGV4dGVuZHMgZm9yd2FyZCBsb2dpY2FsbHkgaWYgdGhl
IGVuY2xvc2luZyBibG9jayBpcyBUZXh0RGlyZWN0aW9uOjpSVEwuCiAgICAgc3dpdGNoIChncmFu
dWxhcml0eSkgewogICAgIGNhc2UgQ2hhcmFjdGVyR3JhbnVsYXJpdHk6Ci0gICAgICAgIGlmIChk
aXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCkgPT0gTFRSKQorICAgICAgICBpZiAoZGlyZWN0aW9u
T2ZFbmNsb3NpbmdCbG9jaygpID09IFRleHREaXJlY3Rpb246OkxUUikKICAgICAgICAgICAgIHBv
cyA9IHBvcy5wcmV2aW91cyhDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSk7CiAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIHBvcyA9IHBvcy5uZXh0KENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5
KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6Ci0gICAgICAgIGlm
IChkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCkgPT0gTFRSKQorICAgICAgICBpZiAoZGlyZWN0
aW9uT2ZFbmNsb3NpbmdCbG9jaygpID09IFRleHREaXJlY3Rpb246OkxUUikKICAgICAgICAgICAg
IHBvcyA9IHByZXZpb3VzV29yZFBvc2l0aW9uKHBvcyk7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIHBvcyA9IG5leHRXb3JkUG9zaXRpb25Gb3JQbGF0Zm9ybShwb3MpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIExpbmVCb3VuZGFyeToKLSAgICAgICAgaWYgKGRpcmVjdGlvbk9mRW5jbG9z
aW5nQmxvY2soKSA9PSBMVFIpCisgICAgICAgIGlmIChkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2Nr
KCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSKQogICAgICAgICAgICAgcG9zID0gbW9kaWZ5RXh0ZW5k
aW5nQmFja3dhcmQoZ3JhbnVsYXJpdHkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBwb3Mg
PSBtb2RpZnlFeHRlbmRpbmdGb3J3YXJkKGdyYW51bGFyaXR5KTsKQEAgLTk2OSw3ICs5NjksNyBA
QCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeUV4CiAgICAgICAgIGJyZWFr
OwogICAgIH0KICNpZiBFTkFCTEUoVVNFUlNFTEVDVF9BTEwpCi0gICAgYWRqdXN0UG9zaXRpb25G
b3JVc2VyU2VsZWN0QWxsKHBvcywgIShkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCkgPT0gTFRS
KSk7CisgICAgYWRqdXN0UG9zaXRpb25Gb3JVc2VyU2VsZWN0QWxsKHBvcywgIShkaXJlY3Rpb25P
ZkVuY2xvc2luZ0Jsb2NrKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSKSk7CiAjZW5kaWYKICAgICBy
ZXR1cm4gcG9zOwogfQpAQCAtMTAxOSw3ICsxMDE5LDcgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1l
U2VsZWN0aW9uOjptb2RpZnlFeAogICAgICAgICBicmVhazsKICAgICB9CiAjaWYgRU5BQkxFKFVT
RVJTRUxFQ1RfQUxMKQotICAgIGFkanVzdFBvc2l0aW9uRm9yVXNlclNlbGVjdEFsbChwb3MsICEo
ZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9jaygpID09IExUUikpOworICAgIGFkanVzdFBvc2l0aW9u
Rm9yVXNlclNlbGVjdEFsbChwb3MsICEoZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9jaygpID09IFRl
eHREaXJlY3Rpb246OkxUUikpOwogI2VuZGlmCiAgICAgcmV0dXJuIHBvczsKIH0KQEAgLTEwMzIs
NyArMTAzMiw3IEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5TW8KICAg
ICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7CiAgICAgY2FzZSBDaGFyYWN0ZXJHcmFudWxhcml0eToK
ICAgICAgICAgaWYgKGlzUmFuZ2UoKSkKLSAgICAgICAgICAgIGlmIChkaXJlY3Rpb25PZlNlbGVj
dGlvbigpID09IExUUikKKyAgICAgICAgICAgIGlmIChkaXJlY3Rpb25PZlNlbGVjdGlvbigpID09
IFRleHREaXJlY3Rpb246OkxUUikKICAgICAgICAgICAgICAgICBwb3MgPSBWaXNpYmxlUG9zaXRp
b24obV9zZWxlY3Rpb24uc3RhcnQoKSwgbV9zZWxlY3Rpb24uYWZmaW5pdHkoKSk7CiAgICAgICAg
ICAgICBlbHNlCiAgICAgICAgICAgICAgICAgcG9zID0gVmlzaWJsZVBvc2l0aW9uKG1fc2VsZWN0
aW9uLmVuZCgpLCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKTsKQEAgLTExNTQsNyArMTE1NCw3IEBA
IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50IEZyYW1lU2VsZWN0aW9uOjoKICAgICBib29sIGZsaXAg
PSBmYWxzZTsKICAgICBpZiAoYWx0ZXIgPT0gRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRpb25Nb3Zl
KSB7CiAgICAgICAgIGludGVudC50eXBlID0gQVhUZXh0U3RhdGVDaGFuZ2VUeXBlU2VsZWN0aW9u
TW92ZTsKLSAgICAgICAgZmxpcCA9IGlzUmFuZ2UoKSAmJiBkaXJlY3Rpb25PZlNlbGVjdGlvbigp
ID09IFJUTDsKKyAgICAgICAgZmxpcCA9IGlzUmFuZ2UoKSAmJiBkaXJlY3Rpb25PZlNlbGVjdGlv
bigpID09IFRleHREaXJlY3Rpb246OlJUTDsKICAgICB9IGVsc2UKICAgICAgICAgaW50ZW50LnR5
cGUgPSBBWFRleHRTdGF0ZUNoYW5nZVR5cGVTZWxlY3Rpb25FeHRlbmQ7CiAgICAgc3dpdGNoIChn
cmFudWxhcml0eSkgewpAQCAtMTM3NSw3ICsxMzc1LDcgQEAgYm9vbCBGcmFtZVNlbGVjdGlvbjo6
bW9kaWZ5KEVBbHRlcmF0aW9uIAogICAgICAgICAgICAgc2V0RXh0ZW50KHBvc2l0aW9uLCB1c2Vy
VHJpZ2dlcmVkKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBUZXh0RGlyZWN0aW9uIHRl
eHREaXJlY3Rpb24gPSBkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCk7Ci0gICAgICAgICAgICBp
ZiAoZGlyZWN0aW9uID09IERpcmVjdGlvbkZvcndhcmQgfHwgKHRleHREaXJlY3Rpb24gPT0gTFRS
ICYmIGRpcmVjdGlvbiA9PSBEaXJlY3Rpb25SaWdodCkgfHwgKHRleHREaXJlY3Rpb24gPT0gUlRM
ICYmIGRpcmVjdGlvbiA9PSBEaXJlY3Rpb25MZWZ0KSkKKyAgICAgICAgICAgIGlmIChkaXJlY3Rp
b24gPT0gRGlyZWN0aW9uRm9yd2FyZCB8fCAodGV4dERpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9u
OjpMVFIgJiYgZGlyZWN0aW9uID09IERpcmVjdGlvblJpZ2h0KSB8fCAodGV4dERpcmVjdGlvbiA9
PSBUZXh0RGlyZWN0aW9uOjpSVEwgJiYgZGlyZWN0aW9uID09IERpcmVjdGlvbkxlZnQpKQogICAg
ICAgICAgICAgICAgIHNldEVuZChwb3NpdGlvbiwgdXNlclRyaWdnZXJlZCk7CiAgICAgICAgICAg
ICBlbHNlCiAgICAgICAgICAgICAgICAgc2V0U3RhcnQocG9zaXRpb24sIHVzZXJUcmlnZ2VyZWQp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcAkocmV2
aXNpb24gMjM0NTE0KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsNyArMTI3LDcgQEAgUG9zaXRpb24gVmlzaWJsZVBv
c2l0aW9uOjpsZWZ0VmlzdWFsbHlEaQogICAgICAgICBpbnQgb2Zmc2V0OwogICAgICAgICBwLmdl
dElubGluZUJveEFuZE9mZnNldChtX2FmZmluaXR5LCBwcmltYXJ5RGlyZWN0aW9uLCBib3gsIG9m
ZnNldCk7CiAgICAgICAgIGlmICghYm94KQotICAgICAgICAgICAgcmV0dXJuIHByaW1hcnlEaXJl
Y3Rpb24gPT0gTFRSID8gcHJldmlvdXNWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBv
c2l0aW9uKSA6IG5leHRWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9uKTsK
KyAgICAgICAgICAgIHJldHVybiBwcmltYXJ5RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxU
UiA/IHByZXZpb3VzVmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZShtX2RlZXBQb3NpdGlvbikgOiBu
ZXh0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZShtX2RlZXBQb3NpdGlvbik7CiAKICAgICAgICAg
UmVuZGVyT2JqZWN0KiByZW5kZXJlciA9ICZib3gtPnJlbmRlcmVyKCk7CiAKQEAgLTEzOCw3ICsx
MzgsNyBAQCBQb3NpdGlvbiBWaXNpYmxlUG9zaXRpb246OmxlZnRWaXN1YWxseURpCiAgICAgICAg
ICAgICBpZiAoIXJlbmRlcmVyLT5ub2RlKCkpIHsKICAgICAgICAgICAgICAgICBib3ggPSBib3gt
PnByZXZMZWFmQ2hpbGQoKTsKICAgICAgICAgICAgICAgICBpZiAoIWJveCkKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHByaW1hcnlEaXJlY3Rpb24gPT0gTFRSID8gcHJldmlvdXNWaXN1YWxs
eURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9uKSA6IG5leHRWaXN1YWxseURpc3RpbmN0
Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBy
aW1hcnlEaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gcHJldmlvdXNWaXN1YWxseURp
c3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9uKSA6IG5leHRWaXN1YWxseURpc3RpbmN0Q2Fu
ZGlkYXRlKG1fZGVlcFBvc2l0aW9uKTsKICAgICAgICAgICAgICAgICByZW5kZXJlciA9ICZib3gt
PnJlbmRlcmVyKCk7CiAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gYm94LT5jYXJldFJpZ2h0bW9z
dE9mZnNldCgpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTU2LDcgKzE1Niw3IEBA
IFBvc2l0aW9uIFZpc2libGVQb3NpdGlvbjo6bGVmdFZpc3VhbGx5RGkKICAgICAgICAgICAgICAg
ICAvLyBPdmVyc2hvdCB0byB0aGUgbGVmdC4KICAgICAgICAgICAgICAgICBJbmxpbmVCb3gqIHBy
ZXZCb3ggPSBib3gtPnByZXZMZWFmQ2hpbGRJZ25vcmluZ0xpbmVCcmVhaygpOwogICAgICAgICAg
ICAgICAgIGlmICghcHJldkJveCkgewotICAgICAgICAgICAgICAgICAgICBQb3NpdGlvbiBwb3Np
dGlvbk9uTGVmdCA9IHByaW1hcnlEaXJlY3Rpb24gPT0gTFRSID8gcHJldmlvdXNWaXN1YWxseURp
c3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9uKSA6IG5leHRWaXN1YWxseURpc3RpbmN0Q2Fu
ZGlkYXRlKG1fZGVlcFBvc2l0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgUG9zaXRpb24gcG9z
aXRpb25PbkxlZnQgPSBwcmltYXJ5RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUiA/IHBy
ZXZpb3VzVmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZShtX2RlZXBQb3NpdGlvbikgOiBuZXh0Vmlz
dWFsbHlEaXN0aW5jdENhbmRpZGF0ZShtX2RlZXBQb3NpdGlvbik7CiAgICAgICAgICAgICAgICAg
ICAgIGlmIChwb3NpdGlvbk9uTGVmdC5pc051bGwoKSkKICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBQb3NpdGlvbigpOwogCkBAIC0xODMsMTAgKzE4MywxMCBAQCBQb3NpdGlvbiBWaXNp
YmxlUG9zaXRpb246OmxlZnRWaXN1YWxseURpCiAgICAgICAgICAgICBpZiAoYm94LT5kaXJlY3Rp
b24oKSA9PSBwcmltYXJ5RGlyZWN0aW9uKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFwcmV2Qm94
KSB7CiAgICAgICAgICAgICAgICAgICAgIElubGluZUJveCogbG9naWNhbFN0YXJ0ID0gbnVsbHB0
cjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHByaW1hcnlEaXJlY3Rpb24gPT0gTFRSID8gYm94
LT5yb290KCkuZ2V0TG9naWNhbFN0YXJ0Qm94V2l0aE5vZGUobG9naWNhbFN0YXJ0KSA6IGJveC0+
cm9vdCgpLmdldExvZ2ljYWxFbmRCb3hXaXRoTm9kZShsb2dpY2FsU3RhcnQpKSB7CisgICAgICAg
ICAgICAgICAgICAgIGlmIChwcmltYXJ5RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUiA/
IGJveC0+cm9vdCgpLmdldExvZ2ljYWxTdGFydEJveFdpdGhOb2RlKGxvZ2ljYWxTdGFydCkgOiBi
b3gtPnJvb3QoKS5nZXRMb2dpY2FsRW5kQm94V2l0aE5vZGUobG9naWNhbFN0YXJ0KSkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgYm94ID0gbG9naWNhbFN0YXJ0OwogICAgICAgICAgICAgICAg
ICAgICAgICAgcmVuZGVyZXIgPSAmYm94LT5yZW5kZXJlcigpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgb2Zmc2V0ID0gcHJpbWFyeURpcmVjdGlvbiA9PSBMVFIgPyBib3gtPmNhcmV0TWluT2Zm
c2V0KCkgOiBib3gtPmNhcmV0TWF4T2Zmc2V0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBv
ZmZzZXQgPSBwcmltYXJ5RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUiA/IGJveC0+Y2Fy
ZXRNaW5PZmZzZXQoKSA6IGJveC0+Y2FyZXRNYXhPZmZzZXQoKTsKICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CkBAIC0y
NDcsNyArMjQ3LDcgQEAgUG9zaXRpb24gVmlzaWJsZVBvc2l0aW9uOjpsZWZ0VmlzdWFsbHlEaQog
ICAgICAgICAgICAgICAgICAgICBsZXZlbCA9IGJveC0+YmlkaUxldmVsKCk7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgIHJlbmRlcmVyID0gJmJveC0+cmVuZGVyZXIoKTsKLSAg
ICAgICAgICAgICAgICBvZmZzZXQgPSBwcmltYXJ5RGlyZWN0aW9uID09IExUUiA/IGJveC0+Y2Fy
ZXRNaW5PZmZzZXQoKSA6IGJveC0+Y2FyZXRNYXhPZmZzZXQoKTsKKyAgICAgICAgICAgICAgICBv
ZmZzZXQgPSBwcmltYXJ5RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUiA/IGJveC0+Y2Fy
ZXRNaW5PZmZzZXQoKSA6IGJveC0+Y2FyZXRNYXhPZmZzZXQoKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0yOTcsNyArMjk3LDcgQEAgUG9zaXRpb24g
VmlzaWJsZVBvc2l0aW9uOjpyaWdodFZpc3VhbGx5RAogICAgICAgICBpbnQgb2Zmc2V0OwogICAg
ICAgICBwLmdldElubGluZUJveEFuZE9mZnNldChtX2FmZmluaXR5LCBwcmltYXJ5RGlyZWN0aW9u
LCBib3gsIG9mZnNldCk7CiAgICAgICAgIGlmICghYm94KQotICAgICAgICAgICAgcmV0dXJuIHBy
aW1hcnlEaXJlY3Rpb24gPT0gTFRSID8gbmV4dFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUobV9k
ZWVwUG9zaXRpb24pIDogcHJldmlvdXNWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBv
c2l0aW9uKTsKKyAgICAgICAgICAgIHJldHVybiBwcmltYXJ5RGlyZWN0aW9uID09IFRleHREaXJl
Y3Rpb246OkxUUiA/IG5leHRWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9u
KSA6IHByZXZpb3VzVmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZShtX2RlZXBQb3NpdGlvbik7CiAK
ICAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9ICZib3gtPnJlbmRlcmVyKCk7CiAKQEAg
LTMwOCw3ICszMDgsNyBAQCBQb3NpdGlvbiBWaXNpYmxlUG9zaXRpb246OnJpZ2h0VmlzdWFsbHlE
CiAgICAgICAgICAgICBpZiAoIXJlbmRlcmVyLT5ub2RlKCkpIHsKICAgICAgICAgICAgICAgICBi
b3ggPSBib3gtPm5leHRMZWFmQ2hpbGQoKTsKICAgICAgICAgICAgICAgICBpZiAoIWJveCkKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHByaW1hcnlEaXJlY3Rpb24gPT0gTFRSID8gbmV4dFZp
c3VhbGx5RGlzdGluY3RDYW5kaWRhdGUobV9kZWVwUG9zaXRpb24pIDogcHJldmlvdXNWaXN1YWxs
eURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHByaW1hcnlEaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gbmV4dFZpc3Vh
bGx5RGlzdGluY3RDYW5kaWRhdGUobV9kZWVwUG9zaXRpb24pIDogcHJldmlvdXNWaXN1YWxseURp
c3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9uKTsKICAgICAgICAgICAgICAgICByZW5kZXJl
ciA9ICZib3gtPnJlbmRlcmVyKCk7CiAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gYm94LT5jYXJl
dExlZnRtb3N0T2Zmc2V0KCk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0zMjYsNyAr
MzI2LDcgQEAgUG9zaXRpb24gVmlzaWJsZVBvc2l0aW9uOjpyaWdodFZpc3VhbGx5RAogICAgICAg
ICAgICAgICAgIC8vIE92ZXJzaG90IHRvIHRoZSByaWdodC4KICAgICAgICAgICAgICAgICBJbmxp
bmVCb3gqIG5leHRCb3ggPSBib3gtPm5leHRMZWFmQ2hpbGRJZ25vcmluZ0xpbmVCcmVhaygpOwog
ICAgICAgICAgICAgICAgIGlmICghbmV4dEJveCkgewotICAgICAgICAgICAgICAgICAgICBQb3Np
dGlvbiBwb3NpdGlvbk9uUmlnaHQgPSBwcmltYXJ5RGlyZWN0aW9uID09IExUUiA/IG5leHRWaXN1
YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9uKSA6IHByZXZpb3VzVmlzdWFsbHlE
aXN0aW5jdENhbmRpZGF0ZShtX2RlZXBQb3NpdGlvbik7CisgICAgICAgICAgICAgICAgICAgIFBv
c2l0aW9uIHBvc2l0aW9uT25SaWdodCA9IHByaW1hcnlEaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlv
bjo6TFRSID8gbmV4dFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUobV9kZWVwUG9zaXRpb24pIDog
cHJldmlvdXNWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9uKTsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKHBvc2l0aW9uT25SaWdodC5pc051bGwoKSkKICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBQb3NpdGlvbigpOwogCkBAIC0zNTMsMTAgKzM1MywxMCBAQCBQ
b3NpdGlvbiBWaXNpYmxlUG9zaXRpb246OnJpZ2h0VmlzdWFsbHlECiAgICAgICAgICAgICBpZiAo
Ym94LT5kaXJlY3Rpb24oKSA9PSBwcmltYXJ5RGlyZWN0aW9uKSB7CiAgICAgICAgICAgICAgICAg
aWYgKCFuZXh0Qm94KSB7CiAgICAgICAgICAgICAgICAgICAgIElubGluZUJveCogbG9naWNhbEVu
ZCA9IG51bGxwdHI7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwcmltYXJ5RGlyZWN0aW9uID09
IExUUiA/IGJveC0+cm9vdCgpLmdldExvZ2ljYWxFbmRCb3hXaXRoTm9kZShsb2dpY2FsRW5kKSA6
IGJveC0+cm9vdCgpLmdldExvZ2ljYWxTdGFydEJveFdpdGhOb2RlKGxvZ2ljYWxFbmQpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChwcmltYXJ5RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246
OkxUUiA/IGJveC0+cm9vdCgpLmdldExvZ2ljYWxFbmRCb3hXaXRoTm9kZShsb2dpY2FsRW5kKSA6
IGJveC0+cm9vdCgpLmdldExvZ2ljYWxTdGFydEJveFdpdGhOb2RlKGxvZ2ljYWxFbmQpKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBib3ggPSBsb2dpY2FsRW5kOwogICAgICAgICAgICAgICAg
ICAgICAgICAgcmVuZGVyZXIgPSAmYm94LT5yZW5kZXJlcigpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgb2Zmc2V0ID0gcHJpbWFyeURpcmVjdGlvbiA9PSBMVFIgPyBib3gtPmNhcmV0TWF4T2Zm
c2V0KCkgOiBib3gtPmNhcmV0TWluT2Zmc2V0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBv
ZmZzZXQgPSBwcmltYXJ5RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUiA/IGJveC0+Y2Fy
ZXRNYXhPZmZzZXQoKSA6IGJveC0+Y2FyZXRNaW5PZmZzZXQoKTsKICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CkBAIC00
MjAsNyArNDIwLDcgQEAgUG9zaXRpb24gVmlzaWJsZVBvc2l0aW9uOjpyaWdodFZpc3VhbGx5RAog
ICAgICAgICAgICAgICAgICAgICBsZXZlbCA9IGJveC0+YmlkaUxldmVsKCk7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgIHJlbmRlcmVyID0gJmJveC0+cmVuZGVyZXIoKTsKLSAg
ICAgICAgICAgICAgICBvZmZzZXQgPSBwcmltYXJ5RGlyZWN0aW9uID09IExUUiA/IGJveC0+Y2Fy
ZXRNYXhPZmZzZXQoKSA6IGJveC0+Y2FyZXRNaW5PZmZzZXQoKTsKKyAgICAgICAgICAgICAgICBv
ZmZzZXQgPSBwcmltYXJ5RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUiA/IGJveC0+Y2Fy
ZXRNYXhPZmZzZXQoKSA6IGJveC0+Y2FyZXRNaW5PZmZzZXQoKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1Zpc2libGVVbml0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9W
aXNpYmxlVW5pdHMuY3BwCShyZXZpc2lvbiAyMzQ1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1Zpc2libGVVbml0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwOCw3ICs0MDgsNyBAQCBz
dGF0aWMgVmlzaWJsZVBvc2l0aW9uIHZpc3VhbFdvcmRQb3NpdGlvCiAKICAgICAgICAgYm9vbCBp
c1dvcmRCcmVhazsKICAgICAgICAgYm9vbCBib3hIYXNTYW1lRGlyZWN0aW9uYWxpdHlBc0Jsb2Nr
ID0gYm94LT5kaXJlY3Rpb24oKSA9PSBibG9ja0RpcmVjdGlvbjsKLSAgICAgICAgYm9vbCBtb3Zp
bmdCYWNrd2FyZCA9IChkaXJlY3Rpb24gPT0gTW92ZUxlZnQgJiYgYm94LT5kaXJlY3Rpb24oKSA9
PSBMVFIpIHx8IChkaXJlY3Rpb24gPT0gTW92ZVJpZ2h0ICYmIGJveC0+ZGlyZWN0aW9uKCkgPT0g
UlRMKTsKKyAgICAgICAgYm9vbCBtb3ZpbmdCYWNrd2FyZCA9IChkaXJlY3Rpb24gPT0gTW92ZUxl
ZnQgJiYgYm94LT5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpIHx8IChkaXJlY3Rp
b24gPT0gTW92ZVJpZ2h0ICYmIGJveC0+ZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6UlRM
KTsKICAgICAgICAgaWYgKChza2lwc1NwYWNlV2hlbk1vdmluZ1JpZ2h0ICYmIGJveEhhc1NhbWVE
aXJlY3Rpb25hbGl0eUFzQmxvY2spCiAgICAgICAgICAgICB8fCAoIXNraXBzU3BhY2VXaGVuTW92
aW5nUmlnaHQgJiYgbW92aW5nQmFja3dhcmQpKSB7CiAgICAgICAgICAgICBib29sIGxvZ2ljYWxT
dGFydEluUmVuZGVyZXIgPSBvZmZzZXRJbkJveCA9PSBzdGF0aWNfY2FzdDxpbnQ+KHRleHRCb3gu
c3RhcnQoKSkgJiYgcHJldmlvdXNCb3hJbkRpZmZlcmVudExpbmU7CkBAIC00MzksNyArNDM5LDcg
QEAgVmlzaWJsZVBvc2l0aW9uIGxlZnRXb3JkUG9zaXRpb24oY29uc3QgVgogICAgIC8vIEZJWE1F
OiBIb3cgc2hvdWxkIHdlIGhhbmRsZSBhIG5vbi1lZGl0YWJsZSBwb3NpdGlvbj8KICAgICBpZiAo
bGVmdFdvcmRCcmVhay5pc051bGwoKSAmJiBpc0VkaXRhYmxlUG9zaXRpb24odmlzaWJsZVBvc2l0
aW9uLmRlZXBFcXVpdmFsZW50KCkpKSB7CiAgICAgICAgIFRleHREaXJlY3Rpb24gYmxvY2tEaXJl
Y3Rpb24gPSBkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKHZpc2libGVQb3NpdGlvbi5kZWVwRXF1
aXZhbGVudCgpKTsKLSAgICAgICAgbGVmdFdvcmRCcmVhayA9IGJsb2NrRGlyZWN0aW9uID09IExU
UiA/IHN0YXJ0T2ZFZGl0YWJsZUNvbnRlbnQodmlzaWJsZVBvc2l0aW9uKSA6IGVuZE9mRWRpdGFi
bGVDb250ZW50KHZpc2libGVQb3NpdGlvbik7CisgICAgICAgIGxlZnRXb3JkQnJlYWsgPSBibG9j
a0RpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBzdGFydE9mRWRpdGFibGVDb250ZW50
KHZpc2libGVQb3NpdGlvbikgOiBlbmRPZkVkaXRhYmxlQ29udGVudCh2aXNpYmxlUG9zaXRpb24p
OwogICAgIH0KICAgICByZXR1cm4gbGVmdFdvcmRCcmVhazsKIH0KQEAgLTQ1Miw3ICs0NTIsNyBA
QCBWaXNpYmxlUG9zaXRpb24gcmlnaHRXb3JkUG9zaXRpb24oY29uc3QgCiAgICAgLy8gRklYTUU6
IEhvdyBzaG91bGQgd2UgaGFuZGxlIGEgbm9uLWVkaXRhYmxlIHBvc2l0aW9uPwogICAgIGlmIChy
aWdodFdvcmRCcmVhay5pc051bGwoKSAmJiBpc0VkaXRhYmxlUG9zaXRpb24odmlzaWJsZVBvc2l0
aW9uLmRlZXBFcXVpdmFsZW50KCkpKSB7CiAgICAgICAgIFRleHREaXJlY3Rpb24gYmxvY2tEaXJl
Y3Rpb24gPSBkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKHZpc2libGVQb3NpdGlvbi5kZWVwRXF1
aXZhbGVudCgpKTsKLSAgICAgICAgcmlnaHRXb3JkQnJlYWsgPSBibG9ja0RpcmVjdGlvbiA9PSBM
VFIgPyBlbmRPZkVkaXRhYmxlQ29udGVudCh2aXNpYmxlUG9zaXRpb24pIDogc3RhcnRPZkVkaXRh
YmxlQ29udGVudCh2aXNpYmxlUG9zaXRpb24pOworICAgICAgICByaWdodFdvcmRCcmVhayA9IGJs
b2NrRGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUiA/IGVuZE9mRWRpdGFibGVDb250ZW50
KHZpc2libGVQb3NpdGlvbikgOiBzdGFydE9mRWRpdGFibGVDb250ZW50KHZpc2libGVQb3NpdGlv
bik7CiAgICAgfQogICAgIHJldHVybiByaWdodFdvcmRCcmVhazsKIH0KQEAgLTE1MjksMTIgKzE1
MjksMTIgQEAgYm9vbCBpc0VuZE9mRWRpdGFibGVPck5vbkVkaXRhYmxlQ29udGVudAogCiBWaXNp
YmxlUG9zaXRpb24gbGVmdEJvdW5kYXJ5T2ZMaW5lKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYywg
VGV4dERpcmVjdGlvbiBkaXJlY3Rpb24sIGJvb2wqIHJlYWNoZWRCb3VuZGFyeSkKIHsKLSAgICBy
ZXR1cm4gZGlyZWN0aW9uID09IExUUiA/IGxvZ2ljYWxTdGFydE9mTGluZShjLCByZWFjaGVkQm91
bmRhcnkpIDogbG9naWNhbEVuZE9mTGluZShjLCByZWFjaGVkQm91bmRhcnkpOworICAgIHJldHVy
biBkaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gbG9naWNhbFN0YXJ0T2ZMaW5lKGMs
IHJlYWNoZWRCb3VuZGFyeSkgOiBsb2dpY2FsRW5kT2ZMaW5lKGMsIHJlYWNoZWRCb3VuZGFyeSk7
CiB9CiAKIFZpc2libGVQb3NpdGlvbiByaWdodEJvdW5kYXJ5T2ZMaW5lKGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYgYywgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24sIGJvb2wqIHJlYWNoZWRCb3VuZGFy
eSkKIHsKLSAgICByZXR1cm4gZGlyZWN0aW9uID09IExUUiA/IGxvZ2ljYWxFbmRPZkxpbmUoYywg
cmVhY2hlZEJvdW5kYXJ5KSA6IGxvZ2ljYWxTdGFydE9mTGluZShjLCByZWFjaGVkQm91bmRhcnkp
OworICAgIHJldHVybiBkaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gbG9naWNhbEVu
ZE9mTGluZShjLCByZWFjaGVkQm91bmRhcnkpIDogbG9naWNhbFN0YXJ0T2ZMaW5lKGMsIHJlYWNo
ZWRCb3VuZGFyeSk7CiB9CiAKIHN0YXRpYyBib29sIGRpcmVjdGlvbklzRG93bnN0cmVhbShTZWxl
Y3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDIzNDUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MDAsNyArODAwLDcgQEAgVGV4dERpcmVjdGlvbiBI
VE1MRWxlbWVudDo6ZGlyZWN0aW9uYWxpdAogewogICAgIGlmICghKHNlbGZPckFuY2VzdG9ySGFz
RGlyQXV0b0F0dHJpYnV0ZSgpICYmIGhhc0RpcmVjdGlvbkF1dG8oKSkpIHsKICAgICAgICAgaXNB
dXRvID0gZmFsc2U7Ci0gICAgICAgIHJldHVybiBMVFI7CisgICAgICAgIHJldHVybiBUZXh0RGly
ZWN0aW9uOjpMVFI7CiAgICAgfQogCiAgICAgaXNBdXRvID0gdHJ1ZTsKQEAgLTgxNSw3ICs4MTUs
NyBAQCBUZXh0RGlyZWN0aW9uIEhUTUxFbGVtZW50OjpkaXJlY3Rpb25hbGl0CiAgICAgICAgIFVD
aGFyRGlyZWN0aW9uIHRleHREaXJlY3Rpb24gPSB0ZXh0RWxlbWVudC52YWx1ZSgpLmRlZmF1bHRX
cml0aW5nRGlyZWN0aW9uKCZoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSk7CiAgICAgICAgIGlmIChz
dHJvbmdEaXJlY3Rpb25hbGl0eVRleHROb2RlKQogICAgICAgICAgICAgKnN0cm9uZ0RpcmVjdGlv
bmFsaXR5VGV4dE5vZGUgPSBoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSA/ICZ0ZXh0RWxlbWVudCA6
IG51bGxwdHI7Ci0gICAgICAgIHJldHVybiAodGV4dERpcmVjdGlvbiA9PSBVX0xFRlRfVE9fUklH
SFQpID8gTFRSIDogUlRMOworICAgICAgICByZXR1cm4gKHRleHREaXJlY3Rpb24gPT0gVV9MRUZU
X1RPX1JJR0hUKSA/IFRleHREaXJlY3Rpb246OkxUUiA6IFRleHREaXJlY3Rpb246OlJUTDsKICAg
ICB9CiAKICAgICBSZWZQdHI8Tm9kZT4gbm9kZSA9IGZpcnN0Q2hpbGQoKTsKQEAgLTg0MiwxNCAr
ODQyLDE0IEBAIFRleHREaXJlY3Rpb24gSFRNTEVsZW1lbnQ6OmRpcmVjdGlvbmFsaXQKICAgICAg
ICAgICAgIGlmIChoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSkgewogICAgICAgICAgICAgICAgIGlm
IChzdHJvbmdEaXJlY3Rpb25hbGl0eVRleHROb2RlKQogICAgICAgICAgICAgICAgICAgICAqc3Ry
b25nRGlyZWN0aW9uYWxpdHlUZXh0Tm9kZSA9IG5vZGUuZ2V0KCk7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuICh0ZXh0RGlyZWN0aW9uID09IFVfTEVGVF9UT19SSUdIVCkgPyBMVFIgOiBSVEw7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuICh0ZXh0RGlyZWN0aW9uID09IFVfTEVGVF9UT19SSUdIVCkg
PyBUZXh0RGlyZWN0aW9uOjpMVFIgOiBUZXh0RGlyZWN0aW9uOjpSVEw7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KICAgICAgICAgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHQoKm5vZGUsIHRo
aXMpOwogICAgIH0KICAgICBpZiAoc3Ryb25nRGlyZWN0aW9uYWxpdHlUZXh0Tm9kZSkKICAgICAg
ICAgKnN0cm9uZ0RpcmVjdGlvbmFsaXR5VGV4dE5vZGUgPSBudWxscHRyOwotICAgIHJldHVybiBM
VFI7CisgICAgcmV0dXJuIFRleHREaXJlY3Rpb246OkxUUjsKIH0KIAogdm9pZCBIVE1MRWxlbWVu
dDo6ZGlyQXR0cmlidXRlQ2hhbmdlZChjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMzQ1MTQp
CisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMDk4LDcgKzIwOTgsNyBAQCBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnNldHVwRGF0
ZVRpbWVDaG9vCiAgICAgZWxzZQogICAgICAgICBwYXJhbWV0ZXJzLmFuY2hvclJlY3RJblJvb3RW
aWV3ID0gSW50UmVjdCgpOwogICAgIHBhcmFtZXRlcnMuY3VycmVudFZhbHVlID0gdmFsdWUoKTsK
LSAgICBwYXJhbWV0ZXJzLmlzQW5jaG9yRWxlbWVudFJUTCA9IGNvbXB1dGVkU3R5bGUoKS0+ZGly
ZWN0aW9uKCkgPT0gUlRMOworICAgIHBhcmFtZXRlcnMuaXNBbmNob3JFbGVtZW50UlRMID0gY29t
cHV0ZWRTdHlsZSgpLT5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpSVEw7CiAjaWYgRU5B
QkxFKERBVEFMSVNUX0VMRU1FTlQpCiAgICAgaWYgKGF1dG8gZGF0YUxpc3QgPSB0aGlzLT5kYXRh
TGlzdCgpKSB7CiAgICAgICAgIFJlZjxIVE1MQ29sbGVjdGlvbj4gb3B0aW9ucyA9IGRhdGFMaXN0
LT5vcHRpb25zKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAkocmV2aXNpb24gMjM0NTE0KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTc3NSw3ICs3NzUsNyBAQCBTdHJpbmcgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmRpcmVj
CiAgICAgICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShkaXJBdHRyaWJ1dGVW
YWx1ZSwgImF1dG8iKSkgewogICAgICAgICAgICAgYm9vbCBpc0F1dG87CiAgICAgICAgICAgICBU
ZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24gPSBzdGF0aWNfY2FzdDxjb25zdCBIVE1MRWxlbWVu
dCo+KGVsZW1lbnQpLT5kaXJlY3Rpb25hbGl0eUlmaGFzRGlyQXV0b0F0dHJpYnV0ZShpc0F1dG8p
OwotICAgICAgICAgICAgcmV0dXJuIHRleHREaXJlY3Rpb24gPT0gUlRMID8gInJ0bCIgOiAibHRy
IjsKKyAgICAgICAgICAgIHJldHVybiB0ZXh0RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OlJU
TCA/ICJydGwiIDogImx0ciI7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTgzNyw3ICs4MzcsNyBA
QCB2b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjphZGp1c3RJCiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogCi0gICAgICAgIHRleHRCbG9ja1N0eWxlLnNldERpcmVjdGlvbihM
VFIpOworICAgICAgICB0ZXh0QmxvY2tTdHlsZS5zZXREaXJlY3Rpb24oVGV4dERpcmVjdGlvbjo6
TFRSKTsKICAgICB9CiAjZW5kaWYKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRp
dGxlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGl0
bGVFbGVtZW50LmNwcAkocmV2aXNpb24gMjM0NTE0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGl0bGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsNyArODAsNyBAQCBTdHJp
bmcgSFRNTFRpdGxlRWxlbWVudDo6dGV4dCgpIGNvbnN0CiAKIFN0cmluZ1dpdGhEaXJlY3Rpb24g
SFRNTFRpdGxlRWxlbWVudDo6Y29tcHV0ZWRUZXh0V2l0aERpcmVjdGlvbigpCiB7Ci0gICAgVGV4
dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBMVFI7CisgICAgYXV0byBkaXJlY3Rpb24gPSBUZXh0RGly
ZWN0aW9uOjpMVFI7CiAgICAgaWYgKGF1dG8qIGNvbXB1dGVkU3R5bGUgPSB0aGlzLT5jb21wdXRl
ZFN0eWxlKCkpCiAgICAgICAgIGRpcmVjdGlvbiA9IGNvbXB1dGVkU3R5bGUtPmRpcmVjdGlvbigp
OwogICAgIGVsc2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAkocmV2aXNpb24gMjM0NTE0KQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjk1LDIxICsyOTUsMjEgQEAgaW5saW5lIFRleHREaXJlY3Rpb24gQ2Fu
dmFzUmVuZGVyaW5nQ29udAogICAgICAgICAqY29tcHV0ZWRTdHlsZSA9IHN0eWxlOwogICAgIHN3
aXRjaCAoZGlyZWN0aW9uKSB7CiAgICAgY2FzZSBEaXJlY3Rpb246OkluaGVyaXQ6Ci0gICAgICAg
IHJldHVybiBzdHlsZSA/IHN0eWxlLT5kaXJlY3Rpb24oKSA6IExUUjsKKyAgICAgICAgcmV0dXJu
IHN0eWxlID8gc3R5bGUtPmRpcmVjdGlvbigpIDogVGV4dERpcmVjdGlvbjo6TFRSOwogICAgIGNh
c2UgRGlyZWN0aW9uOjpSdGw6Ci0gICAgICAgIHJldHVybiBSVEw7CisgICAgICAgIHJldHVybiBU
ZXh0RGlyZWN0aW9uOjpSVEw7CiAgICAgY2FzZSBEaXJlY3Rpb246Okx0cjoKLSAgICAgICAgcmV0
dXJuIExUUjsKKyAgICAgICAgcmV0dXJuIFRleHREaXJlY3Rpb246OkxUUjsKICAgICB9CiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIExUUjsKKyAgICByZXR1cm4gVGV4dERp
cmVjdGlvbjo6TFRSOwogfQogCiBDYW52YXNEaXJlY3Rpb24gQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEOjpkaXJlY3Rpb24oKSBjb25zdAogewogICAgIGlmIChzdGF0ZSgpLmRpcmVjdGlvbiA9PSBE
aXJlY3Rpb246OkluaGVyaXQpCiAgICAgICAgIGNhbnZhcygpLmRvY3VtZW50KCkudXBkYXRlU3R5
bGVJZk5lZWRlZCgpOwotICAgIHJldHVybiB0b1RleHREaXJlY3Rpb24oc3RhdGUoKS5kaXJlY3Rp
b24pID09IFJUTCA/IENhbnZhc0RpcmVjdGlvbjo6UnRsIDogQ2FudmFzRGlyZWN0aW9uOjpMdHI7
CisgICAgcmV0dXJuIHRvVGV4dERpcmVjdGlvbihzdGF0ZSgpLmRpcmVjdGlvbikgPT0gVGV4dERp
cmVjdGlvbjo6UlRMID8gQ2FudmFzRGlyZWN0aW9uOjpSdGwgOiBDYW52YXNEaXJlY3Rpb246Okx0
cjsKIH0KIAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldERpcmVjdGlvbihDYW52
YXNEaXJlY3Rpb24gZGlyZWN0aW9uKQpAQCAtNDI5LDcgKzQyOSw3IEBAIEZsb2F0UG9pbnQgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjp0ZXgKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAg
Ym9vbCBpc1JUTCA9IGRpcmVjdGlvbiA9PSBSVEw7CisgICAgYm9vbCBpc1JUTCA9IGRpcmVjdGlv
biA9PSBUZXh0RGlyZWN0aW9uOjpSVEw7CiAgICAgYXV0byBhbGlnbiA9IHN0YXRlKCkudGV4dEFs
aWduOwogICAgIGlmIChhbGlnbiA9PSBTdGFydFRleHRBbGlnbikKICAgICAgICAgYWxpZ24gPSBp
c1JUTCA/IFJpZ2h0VGV4dEFsaWduIDogTGVmdFRleHRBbGlnbjsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcAkocmV2aXNpb24g
MjM0NTE0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcxLDcgKzE3MSw3IEBAIHZvaWQgUmVuZGVyU2xpZGVy
Q29udGFpbmVyOjpsYXlvdXQoKQogICAgICAgICAvLyBGSVhNRTogV29yayBhcm91bmQgcm91bmRp
bmcgaXNzdWVzIGluIFJUTCB2ZXJ0aWNhbCBzbGlkZXJzLiBXZSB3YW50IHRoZW0gdG8KICAgICAg
ICAgLy8gcmVuZGVyIGlkZW50aWNhbGx5IHRvIExUUiB2ZXJ0aWNhbCBzbGlkZXJzLiBXZSBjYW4g
cmVtb3ZlIHRoaXMgd29yayBhcm91bmQgd2hlbgogICAgICAgICAvLyBzdWJwaXhlbCByZW5kZXJp
bmcgaXMgZW5hYmxlZCBvbiBhbGwgcG9ydHMuCi0gICAgICAgIG11dGFibGVTdHlsZSgpLnNldERp
cmVjdGlvbihMVFIpOworICAgICAgICBtdXRhYmxlU3R5bGUoKS5zZXREaXJlY3Rpb24oVGV4dERp
cmVjdGlvbjo6TFRSKTsKICAgICB9CiAKICAgICBSZW5kZXJCb3gqIHRodW1iID0gaW5wdXQuc2xp
ZGVyVGh1bWJFbGVtZW50KCkgPyBpbnB1dC5zbGlkZXJUaHVtYkVsZW1lbnQoKS0+cmVuZGVyQm94
KCkgOiBudWxscHRyOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRy
b2xJbm5lckVsZW1lbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCShyZXZpc2lvbiAyMzQ1MTQpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDksNyArMTA5LDcgQEAgc3RkOjpvcHRpb25hbDxFbGVtZW50U3R5
bGU+IFRleHRDb250cm9sSQogICAgIG5ld1N0eWxlLT5zZXRGbGV4R3JvdygxKTsKICAgICBuZXdT
dHlsZS0+c2V0TWluV2lkdGgoTGVuZ3RoIHsgMCwgRml4ZWQgfSk7IC8vIE5lZWRlZCBmb3IgY29y
cmVjdCBzaHJpbmtpbmcuCiAgICAgbmV3U3R5bGUtPnNldERpc3BsYXkoRGlzcGxheVR5cGU6OkJs
b2NrKTsKLSAgICBuZXdTdHlsZS0+c2V0RGlyZWN0aW9uKExUUik7CisgICAgbmV3U3R5bGUtPnNl
dERpcmVjdGlvbihUZXh0RGlyZWN0aW9uOjpMVFIpOwogICAgIC8vIFdlIGRvbid0IHdhbnQgdGhl
IHNoYWRvdyBET00gdG8gYmUgZWRpdGFibGUsIHNvIHdlIHNldCB0aGlzIGJsb2NrIHRvIHJlYWQt
b25seSBpbiBjYXNlIHRoZSBpbnB1dCBpdHNlbGYgaXMgZWRpdGFibGUuCiAgICAgbmV3U3R5bGUt
PnNldFVzZXJNb2RpZnkoVXNlck1vZGlmeTo6UmVhZE9ubHkpOwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0Nocm9tZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9D
aHJvbWUuY3BwCShyZXZpc2lvbiAyMzQ1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9t
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1Niw3ICszNTYsNyBAQCB2b2lkIENocm9tZTo6c2V0
VG9vbFRpcChjb25zdCBIaXRUZXN0UmVzCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZm9y
bS0+cmVuZGVyZXIoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sVGlwRGlyZWN0
aW9uID0gZm9ybS0+cmVuZGVyZXIoKS0+c3R5bGUoKS5kaXJlY3Rpb24oKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sVGlwRGly
ZWN0aW9uID0gTFRSOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xUaXBEaXJlY3Rp
b24gPSBUZXh0RGlyZWN0aW9uOjpMVFI7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0zNjcsNyArMzY3LDcgQEAgdm9pZCBDaHJvbWU6
OnNldFRvb2xUaXAoY29uc3QgSGl0VGVzdFJlcwogICAgICAgICAgICAgLy8gRklYTUU6IE5lZWQg
dG8gcGFzcyB0aGlzIFVSTCB0aHJvdWdoIHVzZXJWaXNpYmxlU3RyaW5nIG9uY2UgdGhhdCdzIGlu
IFdlYkNvcmUKICAgICAgICAgICAgIHRvb2xUaXAgPSByZXN1bHQuYWJzb2x1dGVMaW5rVVJMKCku
c3RyaW5nKCk7CiAgICAgICAgICAgICAvLyBVUkwgYWx3YXlzIGRpc3BsYXkgYXMgTFRSLgotICAg
ICAgICAgICAgdG9vbFRpcERpcmVjdGlvbiA9IExUUjsKKyAgICAgICAgICAgIHRvb2xUaXBEaXJl
Y3Rpb24gPSBUZXh0RGlyZWN0aW9uOjpMVFI7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTM4OSw3
ICszODksNyBAQCB2b2lkIENocm9tZTo6c2V0VG9vbFRpcChjb25zdCBIaXRUZXN0UmVzCiAgICAg
ICAgICAgICAgICAgLy8gaW1wbGVtZW50YXRpb25zIGRvbid0IHVzZSB0ZXh0IGRpcmVjdGlvbiBp
bmZvcm1hdGlvbiBmb3IKICAgICAgICAgICAgICAgICAvLyBDaHJvbWVDbGllbnQ6OnNldFRvb2xU
aXAuIFdlJ2xsIHdvcmsgb24gdG9vbHRpcCB0ZXh0CiAgICAgICAgICAgICAgICAgLy8gZGlyZWN0
aW9uIGR1cmluZyBiaWRpIGNsZWFudXAgaW4gZm9ybSBpbnB1dHMuCi0gICAgICAgICAgICAgICAg
dG9vbFRpcERpcmVjdGlvbiA9IExUUjsKKyAgICAgICAgICAgICAgICB0b29sVGlwRGlyZWN0aW9u
ID0gVGV4dERpcmVjdGlvbjo6TFRSOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkocmV2aXNpb24gMjM0NTE0KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjIsNyAr
MTYyLDcgQEAgUGFnaW5hdGlvbjo6TW9kZSBwYWdpbmF0aW9uTW9kZUZvclJlbmRlcgogICAgIC8v
IGlzIGhvcml6b250YWwsIHRoZW4gd2UgdXNlIFRleHREaXJlY3Rpb24gdG8gY2hvb3NlIGJldHdl
ZW4gdGhvc2Ugb3B0aW9ucy4gSWYgdGhlIFdyaXRpbmdNb2RlCiAgICAgLy8gaXMgdmVydGljYWws
IHRoZW4gdGhlIGRpcmVjdGlvbiBvZiB0aGUgdmVydGljYWxpdHkgZGljdGF0ZXMgdGhlIGNob2lj
ZS4KICAgICBpZiAob3ZlcmZsb3cgPT0gT3ZlcmZsb3c6OlBhZ2VkWCkgewotICAgICAgICBpZiAo
KGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlICYmIHRleHREaXJlY3Rpb24gPT0gTFRSKSB8fCB3cml0
aW5nTW9kZSA9PSBMZWZ0VG9SaWdodFdyaXRpbmdNb2RlKQorICAgICAgICBpZiAoKGlzSG9yaXpv
bnRhbFdyaXRpbmdNb2RlICYmIHRleHREaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSKSB8
fCB3cml0aW5nTW9kZSA9PSBMZWZ0VG9SaWdodFdyaXRpbmdNb2RlKQogICAgICAgICAgICAgcmV0
dXJuIFBhZ2luYXRpb246OkxlZnRUb1JpZ2h0UGFnaW5hdGVkOwogICAgICAgICByZXR1cm4gUGFn
aW5hdGlvbjo6UmlnaHRUb0xlZnRQYWdpbmF0ZWQ7CiAgICAgfQpAQCAtMTcwLDcgKzE3MCw3IEBA
IFBhZ2luYXRpb246Ok1vZGUgcGFnaW5hdGlvbk1vZGVGb3JSZW5kZXIKICAgICAvLyBwYWdlZC15
IGFsd2F5cyBjb3JyZXNwb25kcyB0byBUb3BUb0JvdHRvbVBhZ2luYXRlZCBvciBCb3R0b21Ub1Rv
cFBhZ2luYXRlZC4gSWYgdGhlIFdyaXRpbmdNb2RlCiAgICAgLy8gaXMgaG9yaXpvbnRhbCwgdGhl
biB0aGUgZGlyZWN0aW9uIG9mIHRoZSBob3Jpem9udGFsaXR5IGRpY3RhdGVzIHRoZSBjaG9pY2Uu
IElmIHRoZSBXcml0aW5nTW9kZQogICAgIC8vIGlzIHZlcnRpY2FsLCB0aGVuIHdlIHVzZSBUZXh0
RGlyZWN0aW9uIHRvIGNob29zZSBiZXR3ZWVuIHRob3NlIG9wdGlvbnMuIAotICAgIGlmICh3cml0
aW5nTW9kZSA9PSBUb3BUb0JvdHRvbVdyaXRpbmdNb2RlIHx8ICghaXNIb3Jpem9udGFsV3JpdGlu
Z01vZGUgJiYgdGV4dERpcmVjdGlvbiA9PSBSVEwpKQorICAgIGlmICh3cml0aW5nTW9kZSA9PSBU
b3BUb0JvdHRvbVdyaXRpbmdNb2RlIHx8ICghaXNIb3Jpem9udGFsV3JpdGluZ01vZGUgJiYgdGV4
dERpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpSVEwpKQogICAgICAgICByZXR1cm4gUGFnaW5h
dGlvbjo6VG9wVG9Cb3R0b21QYWdpbmF0ZWQ7CiAgICAgcmV0dXJuIFBhZ2luYXRpb246OkJvdHRv
bVRvVG9wUGFnaW5hdGVkOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55
YW1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbAkocmV2
aXNpb24gMjM0NTE0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MDgsNyArNTA4LDcgQEAgdXNlckludGVyZmFjZURpcmVjdGlvblBvbGlj
eToKICAgaW5pdGlhbDogVXNlckludGVyZmFjZURpcmVjdGlvblBvbGljeTo6Q29udGVudAogc3lz
dGVtTGF5b3V0RGlyZWN0aW9uOgogICB0eXBlOiBUZXh0RGlyZWN0aW9uCi0gIGluaXRpYWw6IExU
UgorICBpbml0aWFsOiBUZXh0RGlyZWN0aW9uOjpMVFIKIAogYWxsb3dDb250ZW50U2VjdXJpdHlQ
b2xpY3lTb3VyY2VTdGFyVG9NYXRjaEFueVByb3RvY29sOgogICBpbml0aWFsOiBmYWxzZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVjdEVkZ2VzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVjdEVkZ2VzLmgJKHJldmlzaW9uIDIzNDUxNCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlY3RFZGdlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSwx
OCArNTksMTggQEAgcHVibGljOgogICAgIAogICAgIFQmIGJlZm9yZShXcml0aW5nTW9kZSB3cml0
aW5nTW9kZSkgeyByZXR1cm4gYXQobWFwTG9naWNhbFNpZGVUb1BoeXNpY2FsU2lkZSh3cml0aW5n
TW9kZSwgTG9naWNhbEJveFNpZGU6OkJlZm9yZSkpOyB9CiAgICAgVCYgYWZ0ZXIoV3JpdGluZ01v
ZGUgd3JpdGluZ01vZGUpIHsgcmV0dXJuIGF0KG1hcExvZ2ljYWxTaWRlVG9QaHlzaWNhbFNpZGUo
d3JpdGluZ01vZGUsIExvZ2ljYWxCb3hTaWRlOjpBZnRlcikpOyB9Ci0gICAgVCYgc3RhcnQoV3Jp
dGluZ01vZGUgd3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gTFRSKSB7IHJl
dHVybiBhdChtYXBMb2dpY2FsU2lkZVRvUGh5c2ljYWxTaWRlKG1ha2VUZXh0Rmxvdyh3cml0aW5n
TW9kZSwgZGlyZWN0aW9uKSwgTG9naWNhbEJveFNpZGU6OlN0YXJ0KSk7IH0KLSAgICBUJiBlbmQo
V3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gTFRSKSB7
IHJldHVybiBhdChtYXBMb2dpY2FsU2lkZVRvUGh5c2ljYWxTaWRlKG1ha2VUZXh0Rmxvdyh3cml0
aW5nTW9kZSwgZGlyZWN0aW9uKSwgTG9naWNhbEJveFNpZGU6OkVuZCkpOyB9CisgICAgVCYgc3Rh
cnQoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gVGV4
dERpcmVjdGlvbjo6TFRSKSB7IHJldHVybiBhdChtYXBMb2dpY2FsU2lkZVRvUGh5c2ljYWxTaWRl
KG1ha2VUZXh0Rmxvdyh3cml0aW5nTW9kZSwgZGlyZWN0aW9uKSwgTG9naWNhbEJveFNpZGU6OlN0
YXJ0KSk7IH0KKyAgICBUJiBlbmQoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIFRleHREaXJlY3Rp
b24gZGlyZWN0aW9uID0gVGV4dERpcmVjdGlvbjo6TFRSKSB7IHJldHVybiBhdChtYXBMb2dpY2Fs
U2lkZVRvUGh5c2ljYWxTaWRlKG1ha2VUZXh0Rmxvdyh3cml0aW5nTW9kZSwgZGlyZWN0aW9uKSwg
TG9naWNhbEJveFNpZGU6OkVuZCkpOyB9CiAgICAgCiAgICAgY29uc3QgVCYgYmVmb3JlKFdyaXRp
bmdNb2RlIHdyaXRpbmdNb2RlKSBjb25zdCB7IHJldHVybiBhdChtYXBMb2dpY2FsU2lkZVRvUGh5
c2ljYWxTaWRlKHdyaXRpbmdNb2RlLCBMb2dpY2FsQm94U2lkZTo6QmVmb3JlKSk7IH0KICAgICBj
b25zdCBUJiBhZnRlcihXcml0aW5nTW9kZSB3cml0aW5nTW9kZSkgY29uc3QgeyByZXR1cm4gYXQo
bWFwTG9naWNhbFNpZGVUb1BoeXNpY2FsU2lkZSh3cml0aW5nTW9kZSwgTG9naWNhbEJveFNpZGU6
OkFmdGVyKSk7IH0KLSAgICBjb25zdCBUJiBzdGFydChXcml0aW5nTW9kZSB3cml0aW5nTW9kZSwg
VGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBMVFIpIGNvbnN0IHsgcmV0dXJuIGF0KG1hcExvZ2lj
YWxTaWRlVG9QaHlzaWNhbFNpZGUobWFrZVRleHRGbG93KHdyaXRpbmdNb2RlLCBkaXJlY3Rpb24p
LCBMb2dpY2FsQm94U2lkZTo6U3RhcnQpKTsgfQotICAgIGNvbnN0IFQmIGVuZChXcml0aW5nTW9k
ZSB3cml0aW5nTW9kZSwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBMVFIpIGNvbnN0IHsgcmV0
dXJuIGF0KG1hcExvZ2ljYWxTaWRlVG9QaHlzaWNhbFNpZGUobWFrZVRleHRGbG93KHdyaXRpbmdN
b2RlLCBkaXJlY3Rpb24pLCBMb2dpY2FsQm94U2lkZTo6RW5kKSk7IH0KKyAgICBjb25zdCBUJiBz
dGFydChXcml0aW5nTW9kZSB3cml0aW5nTW9kZSwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBU
ZXh0RGlyZWN0aW9uOjpMVFIpIGNvbnN0IHsgcmV0dXJuIGF0KG1hcExvZ2ljYWxTaWRlVG9QaHlz
aWNhbFNpZGUobWFrZVRleHRGbG93KHdyaXRpbmdNb2RlLCBkaXJlY3Rpb24pLCBMb2dpY2FsQm94
U2lkZTo6U3RhcnQpKTsgfQorICAgIGNvbnN0IFQmIGVuZChXcml0aW5nTW9kZSB3cml0aW5nTW9k
ZSwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBUZXh0RGlyZWN0aW9uOjpMVFIpIGNvbnN0IHsg
cmV0dXJuIGF0KG1hcExvZ2ljYWxTaWRlVG9QaHlzaWNhbFNpZGUobWFrZVRleHRGbG93KHdyaXRp
bmdNb2RlLCBkaXJlY3Rpb24pLCBMb2dpY2FsQm94U2lkZTo6RW5kKSk7IH0KICAgICAKICAgICB2
b2lkIHNldEJlZm9yZShjb25zdCBUJiBiZWZvcmUsIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKSB7
IHRoaXMtPmJlZm9yZSh3cml0aW5nTW9kZSkgPSBiZWZvcmU7IH0KICAgICB2b2lkIHNldEFmdGVy
KGNvbnN0IFQmIGFmdGVyLCBXcml0aW5nTW9kZSB3cml0aW5nTW9kZSkgeyB0aGlzLT5hZnRlcih3
cml0aW5nTW9kZSkgPSBhZnRlcjsgfQotICAgIHZvaWQgc2V0U3RhcnQoY29uc3QgVCYgc3RhcnQs
IFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IExUUikg
eyB0aGlzLT5zdGFydCh3cml0aW5nTW9kZSwgZGlyZWN0aW9uKSA9IHN0YXJ0OyB9Ci0gICAgdm9p
ZCBzZXRFbmQoY29uc3QgVCYgZW5kLCBXcml0aW5nTW9kZSB3cml0aW5nTW9kZSwgVGV4dERpcmVj
dGlvbiBkaXJlY3Rpb24gPSBMVFIpIHsgdGhpcy0+ZW5kKHdyaXRpbmdNb2RlLCBkaXJlY3Rpb24p
ID0gZW5kOyB9CisgICAgdm9pZCBzZXRTdGFydChjb25zdCBUJiBzdGFydCwgV3JpdGluZ01vZGUg
d3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gVGV4dERpcmVjdGlvbjo6TFRS
KSB7IHRoaXMtPnN0YXJ0KHdyaXRpbmdNb2RlLCBkaXJlY3Rpb24pID0gc3RhcnQ7IH0KKyAgICB2
b2lkIHNldEVuZChjb25zdCBUJiBlbmQsIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBUZXh0RGly
ZWN0aW9uIGRpcmVjdGlvbiA9IFRleHREaXJlY3Rpb246OkxUUikgeyB0aGlzLT5lbmQod3JpdGlu
Z01vZGUsIGRpcmVjdGlvbikgPSBlbmQ7IH0KICAgICAKICAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgUmVjdEVkZ2VzJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9zaWRlcyA9PSBvdGhlci5tX3Np
ZGVzOyB9CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJlY3RFZGdlcyYgb3RoZXIpIGNvbnN0
IHsgcmV0dXJuIG1fc2lkZXMgIT0gb3RoZXIubV9zaWRlczsgfQpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24uaAko
cmV2aXNpb24gMjM0NTE0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckludGVyZmFj
ZUxheW91dERpcmVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxMyArMjMsMTAgQEAKICAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFVzZXJJbnRl
cmZhY2VMYXlvdXREaXJlY3Rpb25faAotI2RlZmluZSBVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0
aW9uX2gKKyNwcmFnbWEgb25jZQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVudW0gY2xhc3Mg
VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiB7IExUUiwgUlRMIH07CitlbnVtIGNsYXNzIFVz
ZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24gOiB1aW50OF90IHsgTFRSLCBSVEwgfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gVXNlckludGVyZmFjZUxheW91dERpcmVj
dGlvbl9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4
dENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDIzNDUxNCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIENvbXBsZXhUZXh0Q29udHJv
bGxlcjo6Y29tcHV0ZUV4cGFuCiAgICAgaWYgKCFtX2V4cGFuc2lvbikKICAgICAgICAgbV9leHBh
bnNpb25QZXJPcHBvcnR1bml0eSA9IDA7CiAgICAgZWxzZSB7Ci0gICAgICAgIHVuc2lnbmVkIGV4
cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQgPSBGb250Q2FzY2FkZTo6ZXhwYW5zaW9uT3Bwb3J0dW5p
dHlDb3VudChtX3J1bi50ZXh0KCksIG1fcnVuLmx0cigpID8gTFRSIDogUlRMLCBtX3J1bi5leHBh
bnNpb25CZWhhdmlvcigpKS5maXJzdDsKKyAgICAgICAgdW5zaWduZWQgZXhwYW5zaW9uT3Bwb3J0
dW5pdHlDb3VudCA9IEZvbnRDYXNjYWRlOjpleHBhbnNpb25PcHBvcnR1bml0eUNvdW50KG1fcnVu
LnRleHQoKSwgbV9ydW4ubHRyKCkgPyBUZXh0RGlyZWN0aW9uOjpMVFIgOiBUZXh0RGlyZWN0aW9u
OjpSVEwsIG1fcnVuLmV4cGFuc2lvbkJlaGF2aW9yKCkpLmZpcnN0OwogCiAgICAgICAgIGlmICgh
ZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudCkKICAgICAgICAgICAgIG1fZXhwYW5zaW9uUGVyT3Bw
b3J0dW5pdHkgPSAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dENhc2NhZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRDYXNjYWRlLmNwcAkocmV2aXNpb24gMjM0NTE0KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDc0
LDcgKzEwNzQsNyBAQCBzdGQ6OnBhaXI8dW5zaWduZWQsIGJvb2w+IEZvbnRDYXNjYWRlOjplCiAg
ICAgICAgICsrY291bnQ7CiAgICAgICAgIGlzQWZ0ZXJFeHBhbnNpb24gPSB0cnVlOwogICAgIH0K
LSAgICBpZiAoZGlyZWN0aW9uID09IExUUikgeworICAgIGlmIChkaXJlY3Rpb24gPT0gVGV4dERp
cmVjdGlvbjo6TFRSKSB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7
ICsraSkgewogICAgICAgICAgICAgaWYgKHRyZWF0QXNTcGFjZShjaGFyYWN0ZXJzW2ldKSkgewog
ICAgICAgICAgICAgICAgIGNvdW50Kys7CkBAIC0xMTExLDcgKzExMTEsNyBAQCBzdGQ6OnBhaXI8
dW5zaWduZWQsIGJvb2w+IEZvbnRDYXNjYWRlOjplCiAgICAgICAgICsrY291bnQ7CiAgICAgICAg
IGlzQWZ0ZXJFeHBhbnNpb24gPSB0cnVlOwogICAgIH0KLSAgICBpZiAoZGlyZWN0aW9uID09IExU
UikgeworICAgIGlmIChkaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSKSB7CiAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewogICAgICAgICAgICAgVUNo
YXIzMiBjaGFyYWN0ZXIgPSBjaGFyYWN0ZXJzW2ldOwogICAgICAgICAgICAgaWYgKHRyZWF0QXNT
cGFjZShjaGFyYWN0ZXIpKSB7CkBAIC0xMTgyLDcgKzExODIsNyBAQCBib29sIEZvbnRDYXNjYWRl
OjpsZWFkaW5nRXhwYW5zaW9uT3Bwb3J0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIFVD
aGFyMzIgaW5pdGlhbENoYXJhY3RlcjsKLSAgICBpZiAoZGlyZWN0aW9uID09IExUUikgeworICAg
IGlmIChkaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSKSB7CiAgICAgICAgIGluaXRpYWxD
aGFyYWN0ZXIgPSBzdHJpbmdWaWV3WzBdOwogICAgICAgICBpZiAoVTE2X0lTX0xFQUQoaW5pdGlh
bENoYXJhY3RlcikgJiYgc3RyaW5nVmlldy5sZW5ndGgoKSA+IDEgJiYgVTE2X0lTX1RSQUlMKHN0
cmluZ1ZpZXdbMV0pKQogICAgICAgICAgICAgaW5pdGlhbENoYXJhY3RlciA9IFUxNl9HRVRfU1VQ
UExFTUVOVEFSWShpbml0aWFsQ2hhcmFjdGVyLCBzdHJpbmdWaWV3WzFdKTsKQEAgLTEyMDEsNyAr
MTIwMSw3IEBAIGJvb2wgRm9udENhc2NhZGU6OnRyYWlsaW5nRXhwYW5zaW9uT3Bwb3IKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgVUNoYXIzMiBmaW5hbENoYXJhY3RlcjsKLSAgICBpZiAo
ZGlyZWN0aW9uID09IExUUikgeworICAgIGlmIChkaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6
TFRSKSB7CiAgICAgICAgIGZpbmFsQ2hhcmFjdGVyID0gc3RyaW5nVmlld1tzdHJpbmdWaWV3Lmxl
bmd0aCgpIC0gMV07CiAgICAgICAgIGlmIChVMTZfSVNfVFJBSUwoZmluYWxDaGFyYWN0ZXIpICYm
IHN0cmluZ1ZpZXcubGVuZ3RoKCkgPiAxICYmIFUxNl9JU19MRUFEKHN0cmluZ1ZpZXdbc3RyaW5n
Vmlldy5sZW5ndGgoKSAtIDJdKSkKICAgICAgICAgICAgIGZpbmFsQ2hhcmFjdGVyID0gVTE2X0dF
VF9TVVBQTEVNRU5UQVJZKHN0cmluZ1ZpZXdbc3RyaW5nVmlldy5sZW5ndGgoKSAtIDJdLCBmaW5h
bENoYXJhY3Rlcik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAJKHJldmlzaW9uIDIzNDUxNCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY4Myw3ICs2ODMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0JpZGlUZXh0
KGNvbnN0CiAgICAgd2hpbGUgKGJpZGlSdW4pIHsKICAgICAgICAgVGV4dFJ1biBzdWJydW4gPSBy
dW4uc3ViUnVuKGJpZGlSdW4tPnN0YXJ0KCksIGJpZGlSdW4tPnN0b3AoKSAtIGJpZGlSdW4tPnN0
YXJ0KCkpOwogICAgICAgICBib29sIGlzUlRMID0gYmlkaVJ1bi0+bGV2ZWwoKSAlIDI7Ci0gICAg
ICAgIHN1YnJ1bi5zZXREaXJlY3Rpb24oaXNSVEwgPyBSVEwgOiBMVFIpOworICAgICAgICBzdWJy
dW4uc2V0RGlyZWN0aW9uKGlzUlRMID8gVGV4dERpcmVjdGlvbjo6UlRMIDogVGV4dERpcmVjdGlv
bjo6TFRSKTsKICAgICAgICAgc3VicnVuLnNldERpcmVjdGlvbmFsT3ZlcnJpZGUoYmlkaVJ1bi0+
ZGlyT3ZlcnJpZGUoZmFsc2UpKTsKIAogICAgICAgICBmbG9hdCB3aWR0aCA9IGZvbnQuZHJhd1Rl
eHQoKnRoaXMsIHN1YnJ1biwgY3VyclBvaW50LCAwLCBzdGQ6Om51bGxvcHQsIGN1c3RvbUZvbnRO
b3RSZWFkeUFjdGlvbik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9U
ZXh0UnVuLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
VGV4dFJ1bi5oCShyZXZpc2lvbiAyMzQ1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9UZXh0UnVuLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDcgQEAgc3RydWN0
IFdpZHRoSXRlcmF0b3I7CiBjbGFzcyBUZXh0UnVuIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBUZXh0UnVuKGNvbnN0IFN0cmluZyYgdGV4dCwg
ZmxvYXQgeHBvcyA9IDAsIGZsb2F0IGV4cGFuc2lvbiA9IDAsIEV4cGFuc2lvbkJlaGF2aW9yIGV4
cGFuc2lvbkJlaGF2aW9yID0gRGVmYXVsdEV4cGFuc2lvbiwgVGV4dERpcmVjdGlvbiBkaXJlY3Rp
b24gPSBMVFIsIGJvb2wgZGlyZWN0aW9uYWxPdmVycmlkZSA9IGZhbHNlLCBib29sIGNoYXJhY3Rl
clNjYW5Gb3JDb2RlUGF0aCA9IHRydWUpCisgICAgZXhwbGljaXQgVGV4dFJ1bihjb25zdCBTdHJp
bmcmIHRleHQsIGZsb2F0IHhwb3MgPSAwLCBmbG9hdCBleHBhbnNpb24gPSAwLCBFeHBhbnNpb25C
ZWhhdmlvciBleHBhbnNpb25CZWhhdmlvciA9IERlZmF1bHRFeHBhbnNpb24sIFRleHREaXJlY3Rp
b24gZGlyZWN0aW9uID0gVGV4dERpcmVjdGlvbjo6TFRSLCBib29sIGRpcmVjdGlvbmFsT3ZlcnJp
ZGUgPSBmYWxzZSwgYm9vbCBjaGFyYWN0ZXJTY2FuRm9yQ29kZVBhdGggPSB0cnVlKQogICAgICAg
ICA6IG1fdGV4dCh0ZXh0KQogICAgICAgICAsIG1fdGFiU2l6ZSgwKQogICAgICAgICAsIG1feHBv
cyh4cG9zKQpAQCAtNTIsMTQgKzUyLDE0IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX2V4cGFuc2lv
bihleHBhbnNpb24pCiAgICAgICAgICwgbV9leHBhbnNpb25CZWhhdmlvcihleHBhbnNpb25CZWhh
dmlvcikKICAgICAgICAgLCBtX2FsbG93VGFicyhmYWxzZSkKLSAgICAgICAgLCBtX2RpcmVjdGlv
bihkaXJlY3Rpb24pCisgICAgICAgICwgbV9kaXJlY3Rpb24oc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KGRpcmVjdGlvbikpCiAgICAgICAgICwgbV9kaXJlY3Rpb25hbE92ZXJyaWRlKGRpcmVjdGlvbmFs
T3ZlcnJpZGUpCiAgICAgICAgICwgbV9jaGFyYWN0ZXJTY2FuRm9yQ29kZVBhdGgoY2hhcmFjdGVy
U2NhbkZvckNvZGVQYXRoKQogICAgICAgICAsIG1fZGlzYWJsZVNwYWNpbmcoZmFsc2UpCiAgICAg
ewogICAgIH0KIAotICAgIGV4cGxpY2l0IFRleHRSdW4oU3RyaW5nVmlldyBzdHJpbmdWaWV3LCBm
bG9hdCB4cG9zID0gMCwgZmxvYXQgZXhwYW5zaW9uID0gMCwgRXhwYW5zaW9uQmVoYXZpb3IgZXhw
YW5zaW9uQmVoYXZpb3IgPSBEZWZhdWx0RXhwYW5zaW9uLCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlv
biA9IExUUiwgYm9vbCBkaXJlY3Rpb25hbE92ZXJyaWRlID0gZmFsc2UsIGJvb2wgY2hhcmFjdGVy
U2NhbkZvckNvZGVQYXRoID0gdHJ1ZSkKKyAgICBleHBsaWNpdCBUZXh0UnVuKFN0cmluZ1ZpZXcg
c3RyaW5nVmlldywgZmxvYXQgeHBvcyA9IDAsIGZsb2F0IGV4cGFuc2lvbiA9IDAsIEV4cGFuc2lv
bkJlaGF2aW9yIGV4cGFuc2lvbkJlaGF2aW9yID0gRGVmYXVsdEV4cGFuc2lvbiwgVGV4dERpcmVj
dGlvbiBkaXJlY3Rpb24gPSBUZXh0RGlyZWN0aW9uOjpMVFIsIGJvb2wgZGlyZWN0aW9uYWxPdmVy
cmlkZSA9IGZhbHNlLCBib29sIGNoYXJhY3RlclNjYW5Gb3JDb2RlUGF0aCA9IHRydWUpCiAgICAg
ICAgIDogVGV4dFJ1bihzdHJpbmdWaWV3LnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSwgeHBvcywg
ZXhwYW5zaW9uLCBleHBhbnNpb25CZWhhdmlvciwgZGlyZWN0aW9uLCBkaXJlY3Rpb25hbE92ZXJy
aWRlLCBjaGFyYWN0ZXJTY2FuRm9yQ29kZVBhdGgpCiAgICAgewogICAgIH0KQEAgLTEwMywxNCAr
MTAzLDE0IEBAIHB1YmxpYzoKICAgICBmbG9hdCBleHBhbnNpb24oKSBjb25zdCB7IHJldHVybiBt
X2V4cGFuc2lvbjsgfQogICAgIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbkJlaGF2aW9yKCkg
Y29uc3QgeyByZXR1cm4gbV9leHBhbnNpb25CZWhhdmlvcjsgfQogICAgIFRleHREaXJlY3Rpb24g
ZGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dERpcmVjdGlvbj4obV9k
aXJlY3Rpb24pOyB9Ci0gICAgYm9vbCBydGwoKSBjb25zdCB7IHJldHVybiBtX2RpcmVjdGlvbiA9
PSBSVEw7IH0KLSAgICBib29sIGx0cigpIGNvbnN0IHsgcmV0dXJuIG1fZGlyZWN0aW9uID09IExU
UjsgfQorICAgIGJvb2wgcnRsKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dERpcmVj
dGlvbj4obV9kaXJlY3Rpb24pID09IFRleHREaXJlY3Rpb246OlJUTDsgfQorICAgIGJvb2wgbHRy
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dERpcmVjdGlvbj4obV9kaXJlY3Rpb24p
ID09IFRleHREaXJlY3Rpb246OkxUUjsgfQogICAgIGJvb2wgZGlyZWN0aW9uYWxPdmVycmlkZSgp
IGNvbnN0IHsgcmV0dXJuIG1fZGlyZWN0aW9uYWxPdmVycmlkZTsgfQogICAgIGJvb2wgY2hhcmFj
dGVyU2NhbkZvckNvZGVQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9jaGFyYWN0ZXJTY2FuRm9yQ29k
ZVBhdGg7IH0KICAgICBib29sIHNwYWNpbmdEaXNhYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlz
YWJsZVNwYWNpbmc7IH0KIAogICAgIHZvaWQgZGlzYWJsZVNwYWNpbmcoKSB7IG1fZGlzYWJsZVNw
YWNpbmcgPSB0cnVlOyB9Ci0gICAgdm9pZCBzZXREaXJlY3Rpb24oVGV4dERpcmVjdGlvbiBkaXJl
Y3Rpb24pIHsgbV9kaXJlY3Rpb24gPSBkaXJlY3Rpb247IH0KKyAgICB2b2lkIHNldERpcmVjdGlv
bihUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbikgeyBtX2RpcmVjdGlvbiA9IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihkaXJlY3Rpb24pOyB9CiAgICAgdm9pZCBzZXREaXJlY3Rpb25hbE92ZXJyaWRlKGJv
b2wgb3ZlcnJpZGUpIHsgbV9kaXJlY3Rpb25hbE92ZXJyaWRlID0gb3ZlcnJpZGU7IH0KICAgICB2
b2lkIHNldENoYXJhY3RlclNjYW5Gb3JDb2RlUGF0aChib29sIHNjYW4pIHsgbV9jaGFyYWN0ZXJT
Y2FuRm9yQ29kZVBhdGggPSBzY2FuOyB9CiAgICAgU3RyaW5nVmlldyB0ZXh0KCkgY29uc3QgeyBy
ZXR1cm4gbV90ZXh0OyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9X
aWR0aEl0ZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcAkocmV2aXNpb24gMjM0NTE0KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTUzLDcgKzUzLDcgQEAgV2lkdGhJdGVyYXRvcjo6V2lkdGhJdGVyYXRvcihjb25zdCBGb250
QwogICAgIGlmICghbV9leHBhbnNpb24pCiAgICAgICAgIG1fZXhwYW5zaW9uUGVyT3Bwb3J0dW5p
dHkgPSAwOwogICAgIGVsc2UgewotICAgICAgICB1bnNpZ25lZCBleHBhbnNpb25PcHBvcnR1bml0
eUNvdW50ID0gRm9udENhc2NhZGU6OmV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQobV9ydW4udGV4
dCgpLCBtX3J1bi5sdHIoKSA/IExUUiA6IFJUTCwgcnVuLmV4cGFuc2lvbkJlaGF2aW9yKCkpLmZp
cnN0OworICAgICAgICB1bnNpZ25lZCBleHBhbnNpb25PcHBvcnR1bml0eUNvdW50ID0gRm9udENh
c2NhZGU6OmV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQobV9ydW4udGV4dCgpLCBtX3J1bi5sdHIo
KSA/IFRleHREaXJlY3Rpb246OkxUUiA6IFRleHREaXJlY3Rpb246OlJUTCwgcnVuLmV4cGFuc2lv
bkJlaGF2aW9yKCkpLmZpcnN0OwogCiAgICAgICAgIGlmICghZXhwYW5zaW9uT3Bwb3J0dW5pdHlD
b3VudCkKICAgICAgICAgICAgIG1fZXhwYW5zaW9uUGVyT3Bwb3J0dW5pdHkgPSAwOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1NlbGVjdGlvblJlY3QuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TZWxlY3Rpb25SZWN0LmNwcAkocmV2aXNp
b24gMjM0NTE0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1NlbGVjdGlvblJlY3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogU2VsZWN0aW9uUmVjdDo6U2VsZWN0aW9uUmVjdChjb25zdCBJbnRSZWN0JiByZWN0LCBib29s
IGlzSG9yaXpvbnRhbCwgaW50IHBhZ2VOdW1iZXIpCiAgICAgOiBtX3JlY3QocmVjdCkKLSAgICAs
IG1fZGlyZWN0aW9uKExUUikKKyAgICAsIG1fZGlyZWN0aW9uKFRleHREaXJlY3Rpb246OkxUUikK
ICAgICAsIG1fbWluWCgwKQogICAgICwgbV9tYXhYKDApCiAgICAgLCBtX21heFkoMCkKQEAgLTcy
LDcgKzcyLDcgQEAgU2VsZWN0aW9uUmVjdDo6U2VsZWN0aW9uUmVjdChjb25zdCBJbnRSZQogfQog
CiBTZWxlY3Rpb25SZWN0OjpTZWxlY3Rpb25SZWN0KCkKLSAgICA6IG1fZGlyZWN0aW9uKExUUikK
KyAgICA6IG1fZGlyZWN0aW9uKFRleHREaXJlY3Rpb246OkxUUikKICAgICAsIG1fbWluWCgwKQog
ICAgICwgbV9tYXhYKDApCiAgICAgLCBtX21heFkoMCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvQmlkaVJlc29sdmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9CaWRpUmVzb2x2ZXIuaAkocmV2aXNpb24gMjM0NTE0KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpUmVzb2x2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
ODYsMTAgKzg2LDEwIEBAIHN0cnVjdCBCaWRpU3RhdHVzIHsKICAgICAvLyBDcmVhdGVzIGEgQmlk
aVN0YXR1cyByZXByZXNlbnRpbmcgYSBuZXcgcGFyYWdyYXBoIHJvb3Qgd2l0aCBhIGRlZmF1bHQg
ZGlyZWN0aW9uLgogICAgIC8vIFVzZXMgVGV4dERpcmVjdGlvbiBhcyBpdCBvbmx5IGhhcyB0d28g
cG9zc2liaWxpdGllcyBpbnN0ZWFkIG9mIFVDaGFyRGlyZWN0aW9uIHdoaWNoIGhhcyBhdCBsZWFz
dCAxOS4KICAgICBCaWRpU3RhdHVzKFRleHREaXJlY3Rpb24gZGlyZWN0aW9uLCBib29sIGlzT3Zl
cnJpZGUpCi0gICAgICAgIDogZW9yKGRpcmVjdGlvbiA9PSBMVFIgPyBVX0xFRlRfVE9fUklHSFQg
OiBVX1JJR0hUX1RPX0xFRlQpCisgICAgICAgIDogZW9yKGRpcmVjdGlvbiA9PSBUZXh0RGlyZWN0
aW9uOjpMVFIgPyBVX0xFRlRfVE9fUklHSFQgOiBVX1JJR0hUX1RPX0xFRlQpCiAgICAgICAgICwg
bGFzdFN0cm9uZyhlb3IpCiAgICAgICAgICwgbGFzdChlb3IpCi0gICAgICAgICwgY29udGV4dChC
aWRpQ29udGV4dDo6Y3JlYXRlKGRpcmVjdGlvbiA9PSBMVFIgPyAwIDogMSwgZW9yLCBpc092ZXJy
aWRlKSkKKyAgICAgICAgLCBjb250ZXh0KEJpZGlDb250ZXh0OjpjcmVhdGUoZGlyZWN0aW9uID09
IFRleHREaXJlY3Rpb246OkxUUiA/IDAgOiAxLCBlb3IsIGlzT3ZlcnJpZGUpKQogICAgIHsKICAg
ICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvU3RyaW5nV2l0aERpcmVj
dGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvU3RyaW5n
V2l0aERpcmVjdGlvbi5oCShyZXZpc2lvbiAyMzQ1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1N0cmluZ1dpdGhEaXJlY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyAr
NDcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBTdHJpbmdXaXRoRGlyZWN0aW9u
IHsKICAgICBTdHJpbmcgc3RyaW5nOwotICAgIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uIHsgTFRS
IH07CisgICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24geyBUZXh0RGlyZWN0aW9uOjpMVFIgfTsK
IH07CiAKIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYg
YSwgY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgYikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvV3JpdGluZ01vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L1dyaXRpbmdNb2RlLmgJKHJldmlzaW9uIDIzNDUxNCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvV3JpdGluZ01vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzMs
MTEgKzMzLDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotZW51bSBUZXh0RGlyZWN0aW9u
IHsgTFRSLCBSVEwgfTsKK2VudW0gY2xhc3MgVGV4dERpcmVjdGlvbiA6IHVpbnQ4X3QgeyBMVFIs
IFJUTCB9OwogCiBpbmxpbmUgYm9vbCBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKFRleHREaXJlY3Rp
b24gZGlyZWN0aW9uKQogewotICAgIHJldHVybiBkaXJlY3Rpb24gPT0gTFRSOworICAgIHJldHVy
biBkaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSOwogfQogCiBlbnVtIFdyaXRpbmdNb2Rl
IHsKQEAgLTQ3LDE5ICs0NywxOSBAQCBlbnVtIFdyaXRpbmdNb2RlIHsKICAgICBSaWdodFRvTGVm
dFdyaXRpbmdNb2RlID0gMywgLy8gdmVydGljYWwtcmwKIH07CiAKLSNkZWZpbmUgTUFLRV9URVhU
X0ZMT1cod3JpdGluZ01vZGUsIGRpcmVjdGlvbikgICgod3JpdGluZ01vZGUpIDw8IDEgfCAoZGly
ZWN0aW9uKSkKKyNkZWZpbmUgTUFLRV9URVhUX0ZMT1cod3JpdGluZ01vZGUsIGRpcmVjdGlvbikg
ICgod3JpdGluZ01vZGUpIDw8IDEgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGlyZWN0aW9uKSkK
IAogLy8gRGVmaW5lIHRoZSB0ZXh0IGZsb3cgaW4gdGVybXMgb2YgdGhlIHdyaXRpbmcgbW9kZSBh
bmQgdGhlIHRleHQgZGlyZWN0aW9uLiBUaGUgZmlyc3QKIC8vIHBhcnQgaXMgdGhlIGxpbmUgZ3Jv
d2luZyBkaXJlY3Rpb24gYW5kIHRoZSBzZWNvbmQgcGFydCBpcyB0aGUgYmxvY2sgZ3Jvd2luZyBk
aXJlY3Rpb24uCiBlbnVtIFRleHRGbG93IHsKLSAgICBJbmxpbmVFYXN0QmxvY2tTb3V0aCA9IE1B
S0VfVEVYVF9GTE9XKFRvcFRvQm90dG9tV3JpdGluZ01vZGUsIExUUiksCi0gICAgSW5saW5lV2Vz
dEJsb2NrU291dGggPSBNQUtFX1RFWFRfRkxPVyhUb3BUb0JvdHRvbVdyaXRpbmdNb2RlLCBSVEwp
LAotICAgIElubGluZUVhc3RCbG9ja05vcnRoID0gTUFLRV9URVhUX0ZMT1coQm90dG9tVG9Ub3BX
cml0aW5nTW9kZSwgTFRSKSwKLSAgICBJbmxpbmVXZXN0QmxvY2tOb3J0aCA9IE1BS0VfVEVYVF9G
TE9XKEJvdHRvbVRvVG9wV3JpdGluZ01vZGUsIFJUTCksCi0gICAgSW5saW5lU291dGhCbG9ja0Vh
c3QgPSBNQUtFX1RFWFRfRkxPVyhMZWZ0VG9SaWdodFdyaXRpbmdNb2RlLCBMVFIpLAotICAgIElu
bGluZVNvdXRoQmxvY2tXZXN0ID0gTUFLRV9URVhUX0ZMT1coTGVmdFRvUmlnaHRXcml0aW5nTW9k
ZSwgUlRMKSwKLSAgICBJbmxpbmVOb3J0aEJsb2NrRWFzdCA9IE1BS0VfVEVYVF9GTE9XKFJpZ2h0
VG9MZWZ0V3JpdGluZ01vZGUsIExUUiksCi0gICAgSW5saW5lTm9ydGhCbG9ja1dlc3QgPSBNQUtF
X1RFWFRfRkxPVyhSaWdodFRvTGVmdFdyaXRpbmdNb2RlLCBSVEwpCisgICAgSW5saW5lRWFzdEJs
b2NrU291dGggPSBNQUtFX1RFWFRfRkxPVyhUb3BUb0JvdHRvbVdyaXRpbmdNb2RlLCBUZXh0RGly
ZWN0aW9uOjpMVFIpLAorICAgIElubGluZVdlc3RCbG9ja1NvdXRoID0gTUFLRV9URVhUX0ZMT1co
VG9wVG9Cb3R0b21Xcml0aW5nTW9kZSwgVGV4dERpcmVjdGlvbjo6UlRMKSwKKyAgICBJbmxpbmVF
YXN0QmxvY2tOb3J0aCA9IE1BS0VfVEVYVF9GTE9XKEJvdHRvbVRvVG9wV3JpdGluZ01vZGUsIFRl
eHREaXJlY3Rpb246OkxUUiksCisgICAgSW5saW5lV2VzdEJsb2NrTm9ydGggPSBNQUtFX1RFWFRf
RkxPVyhCb3R0b21Ub1RvcFdyaXRpbmdNb2RlLCBUZXh0RGlyZWN0aW9uOjpSVEwpLAorICAgIElu
bGluZVNvdXRoQmxvY2tFYXN0ID0gTUFLRV9URVhUX0ZMT1coTGVmdFRvUmlnaHRXcml0aW5nTW9k
ZSwgVGV4dERpcmVjdGlvbjo6TFRSKSwKKyAgICBJbmxpbmVTb3V0aEJsb2NrV2VzdCA9IE1BS0Vf
VEVYVF9GTE9XKExlZnRUb1JpZ2h0V3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb246OlJUTCksCisg
ICAgSW5saW5lTm9ydGhCbG9ja0Vhc3QgPSBNQUtFX1RFWFRfRkxPVyhSaWdodFRvTGVmdFdyaXRp
bmdNb2RlLCBUZXh0RGlyZWN0aW9uOjpMVFIpLAorICAgIElubGluZU5vcnRoQmxvY2tXZXN0ID0g
TUFLRV9URVhUX0ZMT1coUmlnaHRUb0xlZnRXcml0aW5nTW9kZSwgVGV4dERpcmVjdGlvbjo6UlRM
KQogfTsKIAogaW5saW5lIFRleHRGbG93IG1ha2VUZXh0RmxvdyhXcml0aW5nTW9kZSB3cml0aW5n
TW9kZSwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pCkBAIC05MSwxMyArOTEsMTMgQEAgaW5saW5l
IGJvb2wgaXNWZXJ0aWNhbFRleHRGbG93KFRleHRGbG93IAogLy8gTGluZXMgaGF2ZSB2ZXJ0aWNh
bCBvcmllbnRhdGlvbjsgbW9kZXMgdmVydGljYWwtbHIgb3IgdmVydGljYWwtcmwuCiBpbmxpbmUg
Ym9vbCBpc1ZlcnRpY2FsV3JpdGluZ01vZGUoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUpCiB7Ci0g
ICAgcmV0dXJuIGlzVmVydGljYWxUZXh0RmxvdyhtYWtlVGV4dEZsb3cod3JpdGluZ01vZGUsIExU
UikpOworICAgIHJldHVybiBpc1ZlcnRpY2FsVGV4dEZsb3cobWFrZVRleHRGbG93KHdyaXRpbmdN
b2RlLCBUZXh0RGlyZWN0aW9uOjpMVFIpKTsKIH0KIAogLy8gQmxvY2sgcHJvZ3Jlc3Npb24gaW5j
cmVhc2VzIGluIHRoZSBvcHBvc2l0ZSBkaXJlY3Rpb24gdG8gbm9ybWFsOyBtb2RlcyB2ZXJ0aWNh
bC1ybCBvciBob3Jpem9udGFsLWJ0LgogaW5saW5lIGJvb2wgaXNGbGlwcGVkV3JpdGluZ01vZGUo
V3JpdGluZ01vZGUgd3JpdGluZ01vZGUpCiB7Ci0gICAgcmV0dXJuIGlzRmxpcHBlZFRleHRGbG93
KG1ha2VUZXh0Rmxvdyh3cml0aW5nTW9kZSwgTFRSKSk7CisgICAgcmV0dXJuIGlzRmxpcHBlZFRl
eHRGbG93KG1ha2VUZXh0Rmxvdyh3cml0aW5nTW9kZSwgVGV4dERpcmVjdGlvbjo6TFRSKSk7CiB9
CiAKIC8vIExpbmVzIGhhdmUgaG9yaXpvbnRhbCBvcmllbnRhdGlvbjsgbW9kZXMgaG9yaXpvbnRh
bC10YiBvciBob3Jpem9udGFsLWJ0LgpAQCAtMTYxLDcgKzE2MSw3IEBAIGlubGluZSBQaHlzaWNh
bEJveFNpZGUgbWFwTG9naWNhbFNpZGVUb1AKIGlubGluZSBQaHlzaWNhbEJveFNpZGUgbWFwTG9n
aWNhbFNpZGVUb1BoeXNpY2FsU2lkZShXcml0aW5nTW9kZSB3cml0aW5nTW9kZSwgTG9naWNhbEJv
eFNpZGUgbG9naWNhbFNpZGUpCiB7CiAgICAgLy8gU2V0IHRoZSBkaXJlY3Rpb24gc3VjaCB0aGF0
IHNpZGUgaXMgbWlycm9yZWQgaWYgaXNGbGlwcGVkV3JpdGluZ01vZGUoKSBpcyB0cnVlCi0gICAg
VGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBpc0ZsaXBwZWRXcml0aW5nTW9kZSh3cml0aW5nTW9k
ZSkgPyBSVEwgOiBMVFI7CisgICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBpc0ZsaXBwZWRX
cml0aW5nTW9kZSh3cml0aW5nTW9kZSkgPyBUZXh0RGlyZWN0aW9uOjpSVEwgOiBUZXh0RGlyZWN0
aW9uOjpMVFI7CiAgICAgcmV0dXJuIG1hcExvZ2ljYWxTaWRlVG9QaHlzaWNhbFNpZGUobWFrZVRl
eHRGbG93KHdyaXRpbmdNb2RlLCBkaXJlY3Rpb24pLCBsb2dpY2FsU2lkZSk7CiB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAJKHJldmlzaW9uIDIz
NDUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjIwLDcgKzIyMCw3IEBAIFN0cmluZyBIaXRUZXN0UmVzdWx0OjpzZWxl
Y3RlZFRleHQoKSBjb24KIAogU3RyaW5nIEhpdFRlc3RSZXN1bHQ6OnNwZWxsaW5nVG9vbFRpcChU
ZXh0RGlyZWN0aW9uJiBkaXIpIGNvbnN0CiB7Ci0gICAgZGlyID0gTFRSOworICAgIGRpciA9IFRl
eHREaXJlY3Rpb246OkxUUjsKICAgICAvLyBSZXR1cm4gdGhlIHRvb2wgdGlwIHN0cmluZyBhc3Nv
Y2lhdGVkIHdpdGggdGhpcyBwb2ludCwgaWYgYW55LiBPbmx5IG1hcmtlcnMgYXNzb2NpYXRlZCB3
aXRoIGJhZCBncmFtbWFyCiAgICAgLy8gY3VycmVudGx5IHN1cHBseSBzdHJpbmdzLCBidXQgbWF5
YmUgc29tZWRheSBtYXJrZXJzIGFzc29jaWF0ZWQgd2l0aCBtaXNzcGVsbGVkIHdvcmRzIHdpbGwg
YWxzby4KICAgICBpZiAoIW1faW5uZXJOb25TaGFyZWROb2RlKQpAQCAtMjUxLDcgKzI1MSw3IEBA
IFN0cmluZyBIaXRUZXN0UmVzdWx0OjpyZXBsYWNlZFN0cmluZygpIGMKICAgICAKIFN0cmluZyBI
aXRUZXN0UmVzdWx0Ojp0aXRsZShUZXh0RGlyZWN0aW9uJiBkaXIpIGNvbnN0CiB7Ci0gICAgZGly
ID0gTFRSOworICAgIGRpciA9IFRleHREaXJlY3Rpb246OkxUUjsKICAgICAvLyBGaW5kIHRoZSB0
aXRsZSBpbiB0aGUgbmVhcmVzdCBlbmNsb3NpbmcgRE9NIG5vZGUuCiAgICAgLy8gRm9yIDxhcmVh
PiB0YWdzIGluIGltYWdlIG1hcHMsIHdhbGsgdGhlIHRyZWUgZm9yIHRoZSA8YXJlYT4sIG5vdCB0
aGUgPGltZz4gdXNpbmcgaXQuCiAgICAgZm9yIChOb2RlKiB0aXRsZU5vZGUgPSBtX2lubmVyTm9k
ZS5nZXQoKTsgdGl0bGVOb2RlOyB0aXRsZU5vZGUgPSB0aXRsZU5vZGUtPnBhcmVudEluQ29tcG9z
ZWRUcmVlKCkpIHsKQEAgLTI5MCw3ICsyOTAsNyBAQCBTdHJpbmcgSGl0VGVzdFJlc3VsdDo6aW5u
ZXJUZXh0SWZUcnVuY2F0CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBkaXIgPSBMVFI7CisgICAg
ZGlyID0gVGV4dERpcmVjdGlvbjo6TFRSOwogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVCb3guaAkocmV2aXNpb24gMjM0NTE0KQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveC5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
MTgsOCArMjE4LDggQEAgcHVibGljOgogCiAgICAgdW5zaWduZWQgY2hhciBiaWRpTGV2ZWwoKSBj
b25zdCB7IHJldHVybiBtX2JpdGZpZWxkcy5iaWRpRW1iZWRkaW5nTGV2ZWwoKTsgfQogICAgIHZv
aWQgc2V0QmlkaUxldmVsKHVuc2lnbmVkIGNoYXIgbGV2ZWwpIHsgbV9iaXRmaWVsZHMuc2V0Qmlk
aUVtYmVkZGluZ0xldmVsKGxldmVsKTsgfQotICAgIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gYmlkaUxldmVsKCkgJSAyID8gUlRMIDogTFRSOyB9Ci0gICAgYm9vbCBp
c0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gZGlyZWN0aW9uKCkgPT0gTFRS
OyB9CisgICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBiaWRpTGV2
ZWwoKSAlIDIgPyBUZXh0RGlyZWN0aW9uOjpSVEwgOiBUZXh0RGlyZWN0aW9uOjpMVFI7IH0KKyAg
ICBib29sIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBkaXJlY3Rpb24o
KSA9PSBUZXh0RGlyZWN0aW9uOjpMVFI7IH0KICAgICBpbnQgY2FyZXRMZWZ0bW9zdE9mZnNldCgp
IGNvbnN0IHsgcmV0dXJuIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IGNhcmV0TWluT2Zmc2V0
KCkgOiBjYXJldE1heE9mZnNldCgpOyB9CiAgICAgaW50IGNhcmV0UmlnaHRtb3N0T2Zmc2V0KCkg
Y29uc3QgeyByZXR1cm4gaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gY2FyZXRNYXhPZmZzZXQo
KSA6IGNhcmV0TWluT2Zmc2V0KCk7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0lubGluZUZsb3dCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9JbmxpbmVGbG93Qm94LmNwcAkocmV2aXNpb24gMjM0NTE0KQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUxLDcgKzEy
NTEsNyBAQCB2b2lkIElubGluZUZsb3dCb3g6OnBhaW50RmlsbExheWVyKGNvbnN0CiAgICAgICAg
IC8vIHRoZSBwcmV2aW91cyBsaW5lIGxlZnQgb2ZmLgogICAgICAgICBMYXlvdXRVbml0IGxvZ2lj
YWxPZmZzZXRPbkxpbmUgPSAwOwogICAgICAgICBMYXlvdXRVbml0IHRvdGFsTG9naWNhbFdpZHRo
OwotICAgICAgICBpZiAocmVuZGVyZXIoKS5zdHlsZSgpLmRpcmVjdGlvbigpID09IExUUikgewor
ICAgICAgICBpZiAocmVuZGVyZXIoKS5zdHlsZSgpLmRpcmVjdGlvbigpID09IFRleHREaXJlY3Rp
b246OkxUUikgewogICAgICAgICAgICAgZm9yIChJbmxpbmVGbG93Qm94KiBjdXJyID0gcHJldkxp
bmVCb3goKTsgY3VycjsgY3VyciA9IGN1cnItPnByZXZMaW5lQm94KCkpCiAgICAgICAgICAgICAg
ICAgbG9naWNhbE9mZnNldE9uTGluZSArPSBjdXJyLT5sb2dpY2FsV2lkdGgoKTsKICAgICAgICAg
ICAgIHRvdGFsTG9naWNhbFdpZHRoID0gbG9naWNhbE9mZnNldE9uTGluZTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5oCShyZXZpc2lvbiAyMzQ1MTQpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaAkod29ya2luZyBjb3B5
KQpAQCAtMTQyLDggKzE0Miw4IEBAIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgSW5saW5l
SXRlcmEKIHN0YXRpYyBpbmxpbmUgVUNoYXJEaXJlY3Rpb24gZW1iZWRDaGFyRnJvbURpcmVjdGlv
bihUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiwgRVVuaWNvZGVCaWRpIHVuaWNvZGVCaWRpKQogewog
ICAgIGlmICh1bmljb2RlQmlkaSA9PSBFbWJlZCkKLSAgICAgICAgcmV0dXJuIGRpcmVjdGlvbiA9
PSBSVEwgPyBVX1JJR0hUX1RPX0xFRlRfRU1CRURESU5HIDogVV9MRUZUX1RPX1JJR0hUX0VNQkVE
RElORzsKLSAgICByZXR1cm4gZGlyZWN0aW9uID09IFJUTCA/IFVfUklHSFRfVE9fTEVGVF9PVkVS
UklERSA6IFVfTEVGVF9UT19SSUdIVF9PVkVSUklERTsKKyAgICAgICAgcmV0dXJuIGRpcmVjdGlv
biA9PSBUZXh0RGlyZWN0aW9uOjpSVEwgPyBVX1JJR0hUX1RPX0xFRlRfRU1CRURESU5HIDogVV9M
RUZUX1RPX1JJR0hUX0VNQkVERElORzsKKyAgICByZXR1cm4gZGlyZWN0aW9uID09IFRleHREaXJl
Y3Rpb246OlJUTCA/IFVfUklHSFRfVE9fTEVGVF9PVkVSUklERSA6IFVfTEVGVF9UT19SSUdIVF9P
VkVSUklERTsKIH0KIAogdGVtcGxhdGUgPGNsYXNzIE9ic2VydmVyPgpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAkocmV2aXNpb24gMjM0NTE0KQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01OTIsNyArNTkyLDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludChQYWludEluZm8m
IHBhaQogICAgICAgICAgICAgaWYgKCFpc0hvcml6b250YWwoKSkgewogICAgICAgICAgICAgICAg
IHRleHREZWNvcmF0aW9uU2VsZWN0aW9uQ2xpcE91dFJlY3QubW92ZSgwLCBsb2dpY2FsV2lkdGhC
ZWZvcmVSYW5nZSk7CiAgICAgICAgICAgICAgICAgdGV4dERlY29yYXRpb25TZWxlY3Rpb25DbGlw
T3V0UmVjdC5zZXRIZWlnaHQobG9naWNhbFNlbGVjdGlvbldpZHRoKTsKLSAgICAgICAgICAgIH0g
ZWxzZSBpZiAoZGlyZWN0aW9uKCkgPT0gUlRMKSB7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGRp
cmVjdGlvbigpID09IFRleHREaXJlY3Rpb246OlJUTCkgewogICAgICAgICAgICAgICAgIHRleHRE
ZWNvcmF0aW9uU2VsZWN0aW9uQ2xpcE91dFJlY3QubW92ZShsb2dpY2FsV2lkdGhBZnRlclJhbmdl
LCAwKTsKICAgICAgICAgICAgICAgICB0ZXh0RGVjb3JhdGlvblNlbGVjdGlvbkNsaXBPdXRSZWN0
LnNldFdpZHRoKGxvZ2ljYWxTZWxlY3Rpb25XaWR0aCk7CiAgICAgICAgICAgICB9IGVsc2UgewpA
QCAtMTEzOCw3ICsxMTM4LDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludENvbXBvc2l0aW9u
VW5kZQogCiBzdGF0aWMgaW5saW5lIHZvaWQgbWlycm9yUlRMU2VnbWVudChmbG9hdCBsb2dpY2Fs
V2lkdGgsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uLCBmbG9hdCYgc3RhcnQsIGZsb2F0IHdpZHRo
KQogewotICAgIGlmIChkaXJlY3Rpb24gPT0gTFRSKQorICAgIGlmIChkaXJlY3Rpb24gPT0gVGV4
dERpcmVjdGlvbjo6TFRSKQogICAgICAgICByZXR1cm47CiAgICAgc3RhcnQgPSBsb2dpY2FsV2lk
dGggLSB3aWR0aCAtIHN0YXJ0OwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suY3BwCShyZXZpc2lvbiAyMzQ1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDk1LDcgKzMwOTUsNyBAQCBj
b25zdCBjaGFyKiBSZW5kZXJCbG9jazo6cmVuZGVyTmFtZSgpIGNvCiAKIFRleHRSdW4gUmVuZGVy
QmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oU3RyaW5nVmlldyBzdHJpbmdWaWV3LCBjb25zdCBSZW5k
ZXJTdHlsZSYgc3R5bGUsIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbiwgVGV4dFJ1bkZsYWdz
IGZsYWdzKQogewotICAgIFRleHREaXJlY3Rpb24gdGV4dERpcmVjdGlvbiA9IExUUjsKKyAgICBh
dXRvIHRleHREaXJlY3Rpb24gPSBUZXh0RGlyZWN0aW9uOjpMVFI7CiAgICAgYm9vbCBkaXJlY3Rp
b25hbE92ZXJyaWRlID0gc3R5bGUucnRsT3JkZXJpbmcoKSA9PSBPcmRlcjo6VmlzdWFsOwogICAg
IGlmIChmbGFncyAhPSBEZWZhdWx0VGV4dFJ1bkZsYWdzKSB7CiAgICAgICAgIGlmIChmbGFncyAm
IFJlc3BlY3REaXJlY3Rpb24pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2tMaW5lTGF5b3V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAkocmV2aXNpb24gMjM0NTE0KQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTYwLDExICs2MCwxMSBAQCBzdGF0aWMgdm9pZCBkZXRlcm1pbmVEaXJlY3Rpb25hbGl0
eShUZXh0CiAgICAgICAgIGlmIChVQ2hhciBjdXJyZW50ID0gaXRlci5jdXJyZW50KCkpIHsKICAg
ICAgICAgICAgIFVDaGFyRGlyZWN0aW9uIGNoYXJEaXJlY3Rpb24gPSB1X2NoYXJEaXJlY3Rpb24o
Y3VycmVudCk7CiAgICAgICAgICAgICBpZiAoY2hhckRpcmVjdGlvbiA9PSBVX0xFRlRfVE9fUklH
SFQpIHsKLSAgICAgICAgICAgICAgICBkaXIgPSBMVFI7CisgICAgICAgICAgICAgICAgZGlyID0g
VGV4dERpcmVjdGlvbjo6TFRSOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGlmIChjaGFyRGlyZWN0aW9uID09IFVfUklHSFRfVE9fTEVGVCB8fCBj
aGFyRGlyZWN0aW9uID09IFVfUklHSFRfVE9fTEVGVF9BUkFCSUMpIHsKLSAgICAgICAgICAgICAg
ICBkaXIgPSBSVEw7CisgICAgICAgICAgICAgICAgZGlyID0gVGV4dERpcmVjdGlvbjo6UlRMOwog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMzQ4
LDcgKzM0OCw3IEBAIFRleHRBbGlnbk1vZGUgUmVuZGVyQmxvY2tGbG93Ojp0ZXh0QWxpZ24KICNp
ZiBFTkFCTEUoQ1NTM19URVhUKQogICAgIFRleHRKdXN0aWZ5IHRleHRKdXN0aWZ5ID0gc3R5bGUo
KS50ZXh0SnVzdGlmeSgpOwogICAgIGlmIChhbGlnbm1lbnQgPT0gVGV4dEFsaWduTW9kZTo6SnVz
dGlmeSAmJiB0ZXh0SnVzdGlmeSA9PSBUZXh0SnVzdGlmeTo6Tm9uZSkKLSAgICAgICAgcmV0dXJu
IHN0eWxlKCkuZGlyZWN0aW9uKCkgPT0gTFRSID8gVGV4dEFsaWduTW9kZTo6TGVmdCA6IFRleHRB
bGlnbk1vZGU6OlJpZ2h0OworICAgICAgICByZXR1cm4gc3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBU
ZXh0RGlyZWN0aW9uOjpMVFIgPyBUZXh0QWxpZ25Nb2RlOjpMZWZ0IDogVGV4dEFsaWduTW9kZTo6
UmlnaHQ7CiAjZW5kaWYKIAogICAgIGlmIChlbmRzV2l0aFNvZnRCcmVhaykKQEAgLTY1MCwxMyAr
NjUwLDEzIEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93Ojp1cGRhdGVMb2dpY2FsV2lkdGgKICAgICAg
ICAgfQogICAgICAgICBGQUxMVEhST1VHSDsKICAgICBjYXNlIFRleHRBbGlnbk1vZGU6OlN0YXJ0
OgotICAgICAgICBpZiAoZGlyZWN0aW9uID09IExUUikKKyAgICAgICAgaWYgKGRpcmVjdGlvbiA9
PSBUZXh0RGlyZWN0aW9uOjpMVFIpCiAgICAgICAgICAgICB1cGRhdGVMb2dpY2FsV2lkdGhGb3JM
ZWZ0QWxpZ25lZEJsb2NrKHN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpLCB0cmFpbGlu
Z1NwYWNlUnVuLCBsb2dpY2FsTGVmdCwgdG90YWxMb2dpY2FsV2lkdGgsIGF2YWlsYWJsZUxvZ2lj
YWxXaWR0aCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHVwZGF0ZUxvZ2ljYWxXaWR0aEZv
clJpZ2h0QWxpZ25lZEJsb2NrKHN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpLCB0cmFp
bGluZ1NwYWNlUnVuLCBsb2dpY2FsTGVmdCwgdG90YWxMb2dpY2FsV2lkdGgsIGF2YWlsYWJsZUxv
Z2ljYWxXaWR0aCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6RW5k
OgotICAgICAgICBpZiAoZGlyZWN0aW9uID09IExUUikKKyAgICAgICAgaWYgKGRpcmVjdGlvbiA9
PSBUZXh0RGlyZWN0aW9uOjpMVFIpCiAgICAgICAgICAgICB1cGRhdGVMb2dpY2FsV2lkdGhGb3JS
aWdodEFsaWduZWRCbG9jayhzdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSwgdHJhaWxp
bmdTcGFjZVJ1biwgbG9naWNhbExlZnQsIHRvdGFsTG9naWNhbFdpZHRoLCBhdmFpbGFibGVMb2dp
Y2FsV2lkdGgpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB1cGRhdGVMb2dpY2FsV2lkdGhG
b3JMZWZ0QWxpZ25lZEJsb2NrKHN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpLCB0cmFp
bGluZ1NwYWNlUnVuLCBsb2dpY2FsTGVmdCwgdG90YWxMb2dpY2FsV2lkdGgsIGF2YWlsYWJsZUxv
Z2ljYWxXaWR0aCk7CkBAIC0xMDYxLDcgKzEwNjEsNyBAQCBpbmxpbmUgQmlkaVJ1biogUmVuZGVy
QmxvY2tGbG93OjpoYW5kbGVUCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgVGV4dERp
cmVjdGlvbiBkaXJlY3Rpb24gPSBzdHlsZSgpLmRpcmVjdGlvbigpOwotICAgIGJvb2wgc2hvdWxk
UmVvcmRlciA9IHRyYWlsaW5nU3BhY2VSdW4gIT0gKGRpcmVjdGlvbiA9PSBMVFIgPyBiaWRpUnVu
cy5sYXN0UnVuKCkgOiBiaWRpUnVucy5maXJzdFJ1bigpKTsKKyAgICBib29sIHNob3VsZFJlb3Jk
ZXIgPSB0cmFpbGluZ1NwYWNlUnVuICE9IChkaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRS
ID8gYmlkaVJ1bnMubGFzdFJ1bigpIDogYmlkaVJ1bnMuZmlyc3RSdW4oKSk7CiAgICAgaWYgKGZp
cnN0U3BhY2UgIT0gdHJhaWxpbmdTcGFjZVJ1bi0+c3RhcnQoKSkgewogICAgICAgICBCaWRpQ29u
dGV4dCogYmFzZUNvbnRleHQgPSBjdXJyZW50Q29udGV4dDsKICAgICAgICAgd2hpbGUgKEJpZGlD
b250ZXh0KiBwYXJlbnQgPSBiYXNlQ29udGV4dC0+cGFyZW50KCkpCkBAIC0xMDcwLDcgKzEwNzAs
NyBAQCBpbmxpbmUgQmlkaVJ1biogUmVuZGVyQmxvY2tGbG93OjpoYW5kbGVUCiAgICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxCaWRpUnVuPiBuZXdUcmFpbGluZ1J1biA9IHN0ZDo6bWFrZV91bmlxdWU8
QmlkaVJ1bj4oZmlyc3RTcGFjZSwgdHJhaWxpbmdTcGFjZVJ1bi0+bV9zdG9wLCB0cmFpbGluZ1Nw
YWNlUnVuLT5yZW5kZXJlcigpLCBiYXNlQ29udGV4dCwgVV9PVEhFUl9ORVVUUkFMKTsKICAgICAg
ICAgdHJhaWxpbmdTcGFjZVJ1bi0+bV9zdG9wID0gZmlyc3RTcGFjZTsKICAgICAgICAgdHJhaWxp
bmdTcGFjZVJ1biA9IG5ld1RyYWlsaW5nUnVuLmdldCgpOwotICAgICAgICBpZiAoZGlyZWN0aW9u
ID09IExUUikKKyAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpCiAg
ICAgICAgICAgICBiaWRpUnVucy5hcHBlbmRSdW4oV1RGTW92ZShuZXdUcmFpbGluZ1J1bikpOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICBiaWRpUnVucy5wcmVwZW5kUnVuKFdURk1vdmUobmV3
VHJhaWxpbmdSdW4pKTsKQEAgLTEwNzksNyArMTA3OSw3IEBAIGlubGluZSBCaWRpUnVuKiBSZW5k
ZXJCbG9ja0Zsb3c6OmhhbmRsZVQKICAgICBpZiAoIXNob3VsZFJlb3JkZXIpCiAgICAgICAgIHJl
dHVybiB0cmFpbGluZ1NwYWNlUnVuOwogCi0gICAgaWYgKGRpcmVjdGlvbiA9PSBMVFIpIHsKKyAg
ICBpZiAoZGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUikgewogICAgICAgICBiaWRpUnVu
cy5tb3ZlUnVuVG9FbmQodHJhaWxpbmdTcGFjZVJ1bik7CiAgICAgICAgIHRyYWlsaW5nU3BhY2VS
dW4tPm1fbGV2ZWwgPSAwOwogICAgIH0gZWxzZSB7CkBAIC0xMzc4LDcgKzEzNzgsNyBAQCB2b2lk
IFJlbmRlckJsb2NrRmxvdzo6bGF5b3V0UnVuc0FuZEZsb2F0CiAgICAgICAgICAgICBpZiAobGFz
dFJvb3RCb3goKSkKICAgICAgICAgICAgICAgICBsYXN0Um9vdEJveCgpLT5zZXRMaW5lQnJlYWtJ
bmZvKGVuZC5yZW5kZXJlcigpLCBlbmQub2Zmc2V0KCksIHJlc29sdmVyLnN0YXR1cygpKTsKICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFZpc3VhbERpcmVjdGlvbk92ZXJyaWRlIG92ZXJy
aWRlID0gKHN0eWxlVG9Vc2UucnRsT3JkZXJpbmcoKSA9PSBPcmRlcjo6VmlzdWFsID8gKHN0eWxl
VG9Vc2UuZGlyZWN0aW9uKCkgPT0gTFRSID8gVmlzdWFsTGVmdFRvUmlnaHRPdmVycmlkZSA6IFZp
c3VhbFJpZ2h0VG9MZWZ0T3ZlcnJpZGUpIDogTm9WaXN1YWxPdmVycmlkZSk7CisgICAgICAgICAg
ICBWaXN1YWxEaXJlY3Rpb25PdmVycmlkZSBvdmVycmlkZSA9IChzdHlsZVRvVXNlLnJ0bE9yZGVy
aW5nKCkgPT0gT3JkZXI6OlZpc3VhbCA/IChzdHlsZVRvVXNlLmRpcmVjdGlvbigpID09IFRleHRE
aXJlY3Rpb246OkxUUiA/IFZpc3VhbExlZnRUb1JpZ2h0T3ZlcnJpZGUgOiBWaXN1YWxSaWdodFRv
TGVmdE92ZXJyaWRlKSA6IE5vVmlzdWFsT3ZlcnJpZGUpOwogCiAgICAgICAgICAgICBpZiAoaXNO
ZXdVQkFQYXJhZ3JhcGggJiYgc3R5bGVUb1VzZS51bmljb2RlQmlkaSgpID09IFBsYWludGV4dCAm
JiAhcmVzb2x2ZXIuY29udGV4dCgpLT5wYXJlbnQoKSkgewogICAgICAgICAgICAgICAgIFRleHRE
aXJlY3Rpb24gZGlyZWN0aW9uID0gc3R5bGVUb1VzZS5kaXJlY3Rpb24oKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCShyZXZpc2lvbiAyMzQ1MTQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMz
MCw3ICszMzMwLDcgQEAgc3RhdGljIHZvaWQgY29tcHV0ZUlubGluZVN0YXRpY0Rpc3RhbmNlKAog
ICAgIC8vIGJvdGggImxlZnQiIGFuZCAicmlnaHQiIHByb3BlcnRpZXMgYXJlICJhdXRvIiwgd2Ug
Y2FuIGNvbnNpZGVyIHRoYXQgb25lIG9mCiAgICAgLy8gdGhlbSAoZGVwZW5kaW5nIG9uIHRoZSBk
aXJlY3Rpb24pIGlzIHNpbXBseSAiMCIuCiAgICAgaWYgKHBhcmVudC0+aXNSZW5kZXJHcmlkKCkg
JiYgcGFyZW50ID09IGNoaWxkLT5jb250YWluaW5nQmxvY2soKSkgewotICAgICAgICBpZiAocGFy
ZW50RGlyZWN0aW9uID09IExUUikKKyAgICAgICAgaWYgKHBhcmVudERpcmVjdGlvbiA9PSBUZXh0
RGlyZWN0aW9uOjpMVFIpCiAgICAgICAgICAgICBsb2dpY2FsTGVmdC5zZXRWYWx1ZShGaXhlZCwg
MCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGxvZ2ljYWxSaWdodC5zZXRWYWx1ZShGaXhl
ZCwgMCk7CkBAIC0zMzM4LDcgKzMzMzgsNyBAQCBzdGF0aWMgdm9pZCBjb21wdXRlSW5saW5lU3Rh
dGljRGlzdGFuY2UoCiAgICAgfQogCiAgICAgLy8gRklYTUU6IFRoZSBzdGF0aWMgZGlzdGFuY2Ug
Y29tcHV0YXRpb24gaGFzIG5vdCBiZWVuIHBhdGNoZWQgZm9yIG1peGVkIHdyaXRpbmcgbW9kZXMg
eWV0LgotICAgIGlmIChwYXJlbnREaXJlY3Rpb24gPT0gTFRSKSB7CisgICAgaWYgKHBhcmVudERp
cmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpIHsKICAgICAgICAgTGF5b3V0VW5pdCBzdGF0
aWNQb3NpdGlvbiA9IGNoaWxkLT5sYXllcigpLT5zdGF0aWNJbmxpbmVQb3NpdGlvbigpIC0gY29u
dGFpbmVyQmxvY2suYm9yZGVyTG9naWNhbExlZnQoKTsKICAgICAgICAgZm9yIChhdXRvKiBjdXJy
ZW50ID0gcGFyZW50OyBjdXJyZW50ICYmIGN1cnJlbnQgIT0gJmNvbnRhaW5lckJsb2NrOyBjdXJy
ZW50ID0gY3VycmVudC0+Y29udGFpbmVyKCkpIHsKICAgICAgICAgICAgIGlmICghaXM8UmVuZGVy
Qm94PigqY3VycmVudCkpCkBAIC0zNTk3LDcgKzM1OTcsNyBAQCB2b2lkIFJlbmRlckJveDo6Y29t
cHV0ZVBvc2l0aW9uZWRMb2dpY2FsCiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ICAgIC8vIFVzZSB0aGUgY29udGFpbmluZyBibG9jaydzIGRpcmVjdGlvbiByYXRoZXIgdGhhbiB0
aGUgcGFyZW50IGJsb2NrJ3MKICAgICAgICAgICAgICAgICAvLyBwZXIgQ1NTIDIuMSByZWZlcmVu
Y2UgdGVzdCBhYnNwb3Mtbm9uLXJlcGxhY2VkLXdpZHRoLW1hcmdpbi0wMDAuCi0gICAgICAgICAg
ICAgICAgaWYgKGNvbnRhaW5lckRpcmVjdGlvbiA9PSBMVFIpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoY29udGFpbmVyRGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUikgewogICAgICAgICAg
ICAgICAgICAgICBtYXJnaW5Mb2dpY2FsTGVmdFZhbHVlID0gMDsKICAgICAgICAgICAgICAgICAg
ICAgbWFyZ2luTG9naWNhbFJpZ2h0VmFsdWUgPSBhdmFpbGFibGVTcGFjZTsgLy8gd2lsbCBiZSBu
ZWdhdGl2ZQogICAgICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC0zNjIwLDcgKzM2MjAsNyBAQCB2
b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsCiAKICAgICAgICAgICAgIC8v
IFVzZSB0aGUgY29udGFpbmluZyBibG9jaydzIGRpcmVjdGlvbiByYXRoZXIgdGhhbiB0aGUgcGFy
ZW50IGJsb2NrJ3MKICAgICAgICAgICAgIC8vIHBlciBDU1MgMi4xIHJlZmVyZW5jZSB0ZXN0IGFi
c3Bvcy1ub24tcmVwbGFjZWQtd2lkdGgtbWFyZ2luLTAwMC4KLSAgICAgICAgICAgIGlmIChjb250
YWluZXJEaXJlY3Rpb24gPT0gUlRMKQorICAgICAgICAgICAgaWYgKGNvbnRhaW5lckRpcmVjdGlv
biA9PSBUZXh0RGlyZWN0aW9uOjpSVEwpCiAgICAgICAgICAgICAgICAgbG9naWNhbExlZnRWYWx1
ZSA9IChhdmFpbGFibGVTcGFjZSArIGxvZ2ljYWxMZWZ0VmFsdWUpIC0gbWFyZ2luTG9naWNhbExl
ZnRWYWx1ZSAtIG1hcmdpbkxvZ2ljYWxSaWdodFZhbHVlOwogICAgICAgICB9CiAgICAgfSBlbHNl
IHsKQEAgLTQwOTUsNyArNDA5NSw3IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25l
ZExvZ2ljYWwKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIFVzZSB0aGUgY29udGFp
bmluZyBibG9jaydzIGRpcmVjdGlvbiByYXRoZXIgdGhhbiB0aGUgcGFyZW50IGJsb2NrJ3MKICAg
ICAgICAgICAgIC8vIHBlciBDU1MgMi4xIHJlZmVyZW5jZSB0ZXN0IGFic3Bvcy1yZXBsYWNlZC13
aWR0aC1tYXJnaW4tMDAwLgotICAgICAgICAgICAgaWYgKGNvbnRhaW5lckRpcmVjdGlvbiA9PSBM
VFIpIHsKKyAgICAgICAgICAgIGlmIChjb250YWluZXJEaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlv
bjo6TFRSKSB7CiAgICAgICAgICAgICAgICAgbWFyZ2luTG9naWNhbExlZnRBbGlhcyA9IDA7CiAg
ICAgICAgICAgICAgICAgbWFyZ2luTG9naWNhbFJpZ2h0QWxpYXMgPSBkaWZmZXJlbmNlOyAvLyB3
aWxsIGJlIG5lZ2F0aXZlCiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtNDE0Myw3ICs0MTQzLDcg
QEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbAogICAgICAgICBsb2dp
Y2FsUmlnaHRWYWx1ZSA9IHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxSaWdodCwgY29udGFpbmVyTG9n
aWNhbFdpZHRoKTsKICAgICAgICAgbG9naWNhbExlZnRWYWx1ZSA9IHZhbHVlRm9yTGVuZ3RoKGxv
Z2ljYWxMZWZ0LCBjb250YWluZXJMb2dpY2FsV2lkdGgpOwogICAgICAgICAvLyBJZiB0aGUgY29u
dGFpbmluZyBibG9jayBpcyByaWdodC10by1sZWZ0LCB0aGVuIHB1c2ggdGhlIGxlZnQgcG9zaXRp
b24gYXMgZmFyIHRvIHRoZSByaWdodCBhcyBwb3NzaWJsZQotICAgICAgICBpZiAoY29udGFpbmVy
RGlyZWN0aW9uID09IFJUTCkgeworICAgICAgICBpZiAoY29udGFpbmVyRGlyZWN0aW9uID09IFRl
eHREaXJlY3Rpb246OlJUTCkgewogICAgICAgICAgICAgaW50IHRvdGFsTG9naWNhbFdpZHRoID0g
Y29tcHV0ZWRWYWx1ZXMubV9leHRlbnQgKyBsb2dpY2FsTGVmdFZhbHVlICsgbG9naWNhbFJpZ2h0
VmFsdWUgKyAgbWFyZ2luTG9naWNhbExlZnRBbGlhcyArIG1hcmdpbkxvZ2ljYWxSaWdodEFsaWFz
OwogICAgICAgICAgICAgbG9naWNhbExlZnRWYWx1ZSA9IGNvbnRhaW5lckxvZ2ljYWxXaWR0aCAt
ICh0b3RhbExvZ2ljYWxXaWR0aCAtIGxvZ2ljYWxMZWZ0VmFsdWUpOwogICAgICAgICB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRl
ZEZsZXhpYmxlQm94LmNwcAkocmV2aXNpb24gMjM0NTE0KQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTk3Niw3ICs5NzYsNyBAQCB2b2lkIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6YXBwbHlM
CiAgICAgICAgIGNoaWxkLT5sYXlvdXRJZk5lZWRlZCgpOwogCiAgICAgICAgIC8vIEZJWE1FOiBG
b3Igbm93IGRvbid0IHN1cHBvcnQgUlRMLgotICAgICAgICBpZiAoc3R5bGUoKS5kaXJlY3Rpb24o
KSAhPSBMVFIpCisgICAgICAgIGlmIChzdHlsZSgpLmRpcmVjdGlvbigpICE9IFRleHREaXJlY3Rp
b246OkxUUikKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIC8vIEdldCB0aGUgbGFz
dCBsaW5lCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhZ21lbnRlZEZs
b3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFn
bWVudGVkRmxvdy5jcHAJKHJldmlzaW9uIDIzNDUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGcmFnbWVudGVkRmxvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OCw3ICsx
NjgsNyBAQCB2b2lkIFJlbmRlckZyYWdtZW50ZWRGbG93Ojp1cGRhdGVMb2dpY2FsCiAgICAgLy8g
SWYgdGhlIGZyYWdtZW50cyBoYXZlIG5vbi11bmlmb3JtIGxvZ2ljYWwgd2lkdGhzLCB0aGVuIGlu
c2VydCBpbnNldCBpbmZvcm1hdGlvbiBmb3IgdGhlIFJlbmRlckZyYWdtZW50ZWRGbG93LgogICAg
IGZvciAoYXV0byYgZnJhZ21lbnQgOiBtX2ZyYWdtZW50TGlzdCkgewogICAgICAgICBMYXlvdXRV
bml0IGZyYWdtZW50TG9naWNhbFdpZHRoID0gZnJhZ21lbnQtPnBhZ2VMb2dpY2FsV2lkdGgoKTsK
LSAgICAgICAgTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCA9IHN0eWxlKCkuZGlyZWN0aW9uKCkgPT0g
TFRSID8gTGF5b3V0VW5pdCgpIDogbG9naWNhbFdpZHRoIC0gZnJhZ21lbnRMb2dpY2FsV2lkdGg7
CisgICAgICAgIExheW91dFVuaXQgbG9naWNhbExlZnQgPSBzdHlsZSgpLmRpcmVjdGlvbigpID09
IFRleHREaXJlY3Rpb246OkxUUiA/IExheW91dFVuaXQoKSA6IGxvZ2ljYWxXaWR0aCAtIGZyYWdt
ZW50TG9naWNhbFdpZHRoOwogICAgICAgICBmcmFnbWVudC0+c2V0UmVuZGVyQm94RnJhZ21lbnRJ
bmZvKHRoaXMsIGxvZ2ljYWxMZWZ0LCBmcmFnbWVudExvZ2ljYWxXaWR0aCwgZmFsc2UpOwogICAg
IH0KIH0KQEAgLTc4Nyw3ICs3ODcsNyBAQCB2b2lkIFJlbmRlckZyYWdtZW50ZWRGbG93Ojp1cGRh
dGVGcmFnbWVuCiAgICAgICAgIExheW91dFVuaXQgZnJhZ21lbnRMb2dpY2FsV2lkdGggPSBmcmFn
bWVudC0+cGFnZUxvZ2ljYWxXaWR0aCgpOwogICAgICAgICBMYXlvdXRVbml0IGZyYWdtZW50TG9n
aWNhbEhlaWdodCA9IHN0ZDo6bWluPExheW91dFVuaXQ+KFJlbmRlckZyYWdtZW50ZWRGbG93Ojpt
YXhMb2dpY2FsSGVpZ2h0KCkgLSBsb2dpY2FsSGVpZ2h0LCBmcmFnbWVudC0+bG9naWNhbEhlaWdo
dE9mQWxsRnJhZ21lbnRlZEZsb3dDb250ZW50KCkpOwogCi0gICAgICAgIExheW91dFJlY3QgZnJh
Z21lbnRSZWN0KHN0eWxlKCkuZGlyZWN0aW9uKCkgPT0gTFRSID8gTGF5b3V0VW5pdCgpIDogbG9n
aWNhbFdpZHRoKCkgLSBmcmFnbWVudExvZ2ljYWxXaWR0aCwgbG9naWNhbEhlaWdodCwgZnJhZ21l
bnRMb2dpY2FsV2lkdGgsIGZyYWdtZW50TG9naWNhbEhlaWdodCk7CisgICAgICAgIExheW91dFJl
Y3QgZnJhZ21lbnRSZWN0KHN0eWxlKCkuZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRS
ID8gTGF5b3V0VW5pdCgpIDogbG9naWNhbFdpZHRoKCkgLSBmcmFnbWVudExvZ2ljYWxXaWR0aCwg
bG9naWNhbEhlaWdodCwgZnJhZ21lbnRMb2dpY2FsV2lkdGgsIGZyYWdtZW50TG9naWNhbEhlaWdo
dCk7CiAKICAgICAgICAgZnJhZ21lbnQtPnNldEZyYWdtZW50ZWRGbG93UG9ydGlvblJlY3QoaXNI
b3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGZyYWdtZW50UmVjdCA6IGZyYWdtZW50UmVjdC50cmFu
c3Bvc2VkUmVjdCgpKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyTW9kZWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcAkocmV2aXNpb24gMjM0NTE0KQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNDUsNyArMjQ1LDcgQEAgYm9vbCBSZW5kZXJMYXllck1vZGVsT2JqZWN0OjpzaG91
bGRQbGFjZQogICAgIGNhc2UgVXNlckludGVyZmFjZURpcmVjdGlvblBvbGljeTo6Q29udGVudDoK
ICAgICAgICAgcmV0dXJuIHN0eWxlKCkuc2hvdWxkUGxhY2VCbG9ja0RpcmVjdGlvblNjcm9sbGJh
ck9uTGVmdCgpOwogICAgIGNhc2UgVXNlckludGVyZmFjZURpcmVjdGlvblBvbGljeTo6U3lzdGVt
OgotICAgICAgICByZXR1cm4gc2V0dGluZ3MoKS5zeXN0ZW1MYXlvdXREaXJlY3Rpb24oKSA9PSBS
VEw7CisgICAgICAgIHJldHVybiBzZXR0aW5ncygpLnN5c3RlbUxheW91dERpcmVjdGlvbigpID09
IFRleHREaXJlY3Rpb246OlJUTDsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgcmV0dXJuIHN0eWxlKCkuc2hvdWxkUGxhY2VCbG9ja0RpcmVjdGlvblNjcm9sbGJhck9uTGVm
dCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1hcnF1ZWUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNYXJxdWVlLmNwcAko
cmV2aXNpb24gMjM0NTE0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1hcnF1
ZWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsOSArMTA0LDkgQEAgTWFycXVlZURpcmVjdGlv
biBSZW5kZXJNYXJxdWVlOjpkaXJlY3RpbwogICAgIGlmIChyZXN1bHQgPT0gTWFycXVlZURpcmVj
dGlvbjo6QXV0bykKICAgICAgICAgcmVzdWx0ID0gTWFycXVlZURpcmVjdGlvbjo6QmFja3dhcmQ7
CiAgICAgaWYgKHJlc3VsdCA9PSBNYXJxdWVlRGlyZWN0aW9uOjpGb3J3YXJkKQotICAgICAgICBy
ZXN1bHQgPSAoZGlyID09IExUUikgPyBNYXJxdWVlRGlyZWN0aW9uOjpSaWdodCA6IE1hcnF1ZWVE
aXJlY3Rpb246OkxlZnQ7CisgICAgICAgIHJlc3VsdCA9IChkaXIgPT0gVGV4dERpcmVjdGlvbjo6
TFRSKSA/IE1hcnF1ZWVEaXJlY3Rpb246OlJpZ2h0IDogTWFycXVlZURpcmVjdGlvbjo6TGVmdDsK
ICAgICBpZiAocmVzdWx0ID09IE1hcnF1ZWVEaXJlY3Rpb246OkJhY2t3YXJkKQotICAgICAgICBy
ZXN1bHQgPSAoZGlyID09IExUUikgPyBNYXJxdWVlRGlyZWN0aW9uOjpMZWZ0IDogTWFycXVlZURp
cmVjdGlvbjo6UmlnaHQ7CisgICAgICAgIHJlc3VsdCA9IChkaXIgPT0gVGV4dERpcmVjdGlvbjo6
TFRSKSA/IE1hcnF1ZWVEaXJlY3Rpb246OkxlZnQgOiBNYXJxdWVlRGlyZWN0aW9uOjpSaWdodDsK
ICAgICAKICAgICAvLyBOb3cgd2UgaGF2ZSB0aGUgcmVhbCBkaXJlY3Rpb24uICBOZXh0IHdlIGNo
ZWNrIHRvIHNlZSBpZiB0aGUgaW5jcmVtZW50IGlzIG5lZ2F0aXZlLgogICAgIC8vIElmIHNvLCB0
aGVuIHdlIHJldmVyc2UgdGhlIGRpcmVjdGlvbi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJNZW51TGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcAkocmV2aXNpb24gMjM0NTE0KQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI4
LDcgKzEyOCw3IEBAIHZvaWQgUmVuZGVyTWVudUxpc3Q6OmFkanVzdElubmVyU3R5bGUoKQogICAg
ICAgICAvLyBJdGVtcyBpbiB0aGUgcG9wdXAgd2lsbCBub3QgcmVzcGVjdCB0aGUgQ1NTIHRleHQt
YWxpZ24gYW5kIGRpcmVjdGlvbiBwcm9wZXJ0aWVzLAogICAgICAgICAvLyBzbyB3ZSBtdXN0IGFk
anVzdCBvdXIgb3duIHN0eWxlIHRvIG1hdGNoLgogICAgICAgICBpbm5lclN0eWxlLnNldFRleHRB
bGlnbihUZXh0QWxpZ25Nb2RlOjpMZWZ0KTsKLSAgICAgICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rp
b24gPSAobV9idXR0b25UZXh0ICYmIG1fYnV0dG9uVGV4dC0+dGV4dCgpLmRlZmF1bHRXcml0aW5n
RGlyZWN0aW9uKCkgPT0gVV9SSUdIVF9UT19MRUZUKSA/IFJUTCA6IExUUjsKKyAgICAgICAgVGV4
dERpcmVjdGlvbiBkaXJlY3Rpb24gPSAobV9idXR0b25UZXh0ICYmIG1fYnV0dG9uVGV4dC0+dGV4
dCgpLmRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKCkgPT0gVV9SSUdIVF9UT19MRUZUKSA/IFRleHRE
aXJlY3Rpb246OlJUTCA6IFRleHREaXJlY3Rpb246OkxUUjsKICAgICAgICAgaW5uZXJTdHlsZS5z
ZXREaXJlY3Rpb24oZGlyZWN0aW9uKTsKICNpZiBQTEFURk9STShJT1MpCiAgICAgfSBlbHNlIGlm
IChkb2N1bWVudCgpLnBhZ2UoKS0+Y2hyb21lKCkuc2VsZWN0SXRlbUFsaWdubWVudEZvbGxvd3NN
ZW51V3JpdGluZ0RpcmVjdGlvbigpKSB7CkBAIC0xMzYsNyArMTM2LDcgQEAgdm9pZCBSZW5kZXJN
ZW51TGlzdDo6YWRqdXN0SW5uZXJTdHlsZSgpCiAgICAgICAgIFRleHREaXJlY3Rpb24gZGlyZWN0
aW9uOwogICAgICAgICBFVW5pY29kZUJpZGkgdW5pY29kZUJpZGk7CiAgICAgICAgIGlmIChtdWx0
aXBsZSgpICYmIHNlbGVjdGVkT3B0aW9uQ291bnQoKnRoaXMpICE9IDEpIHsKLSAgICAgICAgICAg
IGRpcmVjdGlvbiA9IChtX2J1dHRvblRleHQgJiYgbV9idXR0b25UZXh0LT50ZXh0KCkuZGVmYXVs
dFdyaXRpbmdEaXJlY3Rpb24oKSA9PSBVX1JJR0hUX1RPX0xFRlQpID8gUlRMIDogTFRSOworICAg
ICAgICAgICAgZGlyZWN0aW9uID0gKG1fYnV0dG9uVGV4dCAmJiBtX2J1dHRvblRleHQtPnRleHQo
KS5kZWZhdWx0V3JpdGluZ0RpcmVjdGlvbigpID09IFVfUklHSFRfVE9fTEVGVCkgPyBUZXh0RGly
ZWN0aW9uOjpSVEwgOiBUZXh0RGlyZWN0aW9uOjpMVFI7CiAgICAgICAgICAgICB1bmljb2RlQmlk
aSA9IFVCTm9ybWFsOwogICAgICAgICB9IGVsc2UgaWYgKG1fb3B0aW9uU3R5bGUpIHsKICAgICAg
ICAgICAgIGRpcmVjdGlvbiA9IG1fb3B0aW9uU3R5bGUtPmRpcmVjdGlvbigpOwpAQCAtNTc5LDcg
KzU3OSw3IEBAIGNvbnN0IGludCBlbmRPZkxpbmVQYWRkaW5nID0gMjsKIAogTGF5b3V0VW5pdCBS
ZW5kZXJNZW51TGlzdDo6Y2xpZW50UGFkZGluZ0xlZnQoKSBjb25zdAogewotICAgIGlmICgoc3R5
bGUoKS5hcHBlYXJhbmNlKCkgPT0gTWVudWxpc3RQYXJ0IHx8IHN0eWxlKCkuYXBwZWFyYW5jZSgp
ID09IE1lbnVsaXN0QnV0dG9uUGFydCkgJiYgc3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBSVEwpIHsK
KyAgICBpZiAoKHN0eWxlKCkuYXBwZWFyYW5jZSgpID09IE1lbnVsaXN0UGFydCB8fCBzdHlsZSgp
LmFwcGVhcmFuY2UoKSA9PSBNZW51bGlzdEJ1dHRvblBhcnQpICYmIHN0eWxlKCkuZGlyZWN0aW9u
KCkgPT0gVGV4dERpcmVjdGlvbjo6UlRMKSB7CiAgICAgICAgIC8vIEZvciB0aGVzZSBhcHBlYXJh
bmNlIHZhbHVlcywgdGhlIHRoZW1lIGFwcGxpZXMgcGFkZGluZyB0byBsZWF2ZSByb29tIGZvciB0
aGUKICAgICAgICAgLy8gZHJvcC1kb3duIGJ1dHRvbi4gQnV0IGxlYXZpbmcgcm9vbSBmb3IgdGhl
IGJ1dHRvbiBpbnNpZGUgdGhlIHBvcHVwIG1lbnUgaXRzZWxmCiAgICAgICAgIC8vIGxvb2tzIHN0
cmFuZ2UsIHNvIHdlIHJldHVybiBhIHNtYWxsIGRlZmF1bHQgcGFkZGluZyB0byBhdm9pZCBoYXZp
bmcgYSBsYXJnZSBlbXB0eQpAQCAtNTkzLDcgKzU5Myw3IEBAIExheW91dFVuaXQgUmVuZGVyTWVu
dUxpc3Q6OmNsaWVudFBhZGRpbmcKIAogTGF5b3V0VW5pdCBSZW5kZXJNZW51TGlzdDo6Y2xpZW50
UGFkZGluZ1JpZ2h0KCkgY29uc3QKIHsKLSAgICBpZiAoKHN0eWxlKCkuYXBwZWFyYW5jZSgpID09
IE1lbnVsaXN0UGFydCB8fCBzdHlsZSgpLmFwcGVhcmFuY2UoKSA9PSBNZW51bGlzdEJ1dHRvblBh
cnQpICYmIHN0eWxlKCkuZGlyZWN0aW9uKCkgPT0gTFRSKQorICAgIGlmICgoc3R5bGUoKS5hcHBl
YXJhbmNlKCkgPT0gTWVudWxpc3RQYXJ0IHx8IHN0eWxlKCkuYXBwZWFyYW5jZSgpID09IE1lbnVs
aXN0QnV0dG9uUGFydCkgJiYgc3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpM
VFIpCiAgICAgICAgIHJldHVybiBlbmRPZkxpbmVQYWRkaW5nOwogCiAgICAgcmV0dXJuIHBhZGRp
bmdSaWdodCgpICsgbV9pbm5lckJsb2NrLT5wYWRkaW5nUmlnaHQoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0JKHJldmlzaW9uIDIzNDUxNCkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQkod29ya2luZyBjb3B5
KQpAQCAtNTI5LDcgKzUyOSw3IEBAIGNvbnN0IGZsb2F0IE1lbnVMaXN0QnV0dG9uUGFkZGluZ0Fm
dGVyID0KIExlbmd0aEJveCBSZW5kZXJUaGVtZUlPUzo6cG9wdXBJbnRlcm5hbFBhZGRpbmdCb3go
Y29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKSBjb25zdAogewogICAgIGlmIChzdHlsZS5hcHBlYXJh
bmNlKCkgPT0gTWVudWxpc3RCdXR0b25QYXJ0KSB7Ci0gICAgICAgIGlmIChzdHlsZS5kaXJlY3Rp
b24oKSA9PSBSVEwpCisgICAgICAgIGlmIChzdHlsZS5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0
aW9uOjpSVEwpCiAgICAgICAgICAgICByZXR1cm4geyAwLCAwLCAwLCBzdGF0aWNfY2FzdDxpbnQ+
KE1lbnVMaXN0QnV0dG9uUGFkZGluZ0FmdGVyICsgc3R5bGUuYm9yZGVyVG9wV2lkdGgoKSkgfTsK
ICAgICAgICAgcmV0dXJuIHsgMCwgc3RhdGljX2Nhc3Q8aW50PihNZW51TGlzdEJ1dHRvblBhZGRp
bmdBZnRlciArIHN0eWxlLmJvcmRlclRvcFdpZHRoKCkpLCAwLCAwIH07CiAgICAgfQpAQCAtNjMw
LDcgKzYzMCw3IEBAIHZvaWQgUmVuZGVyVGhlbWVJT1M6OmFkanVzdE1lbnVMaXN0QnV0dG8KIGJv
b2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0aW9ucyhjb25zdCBS
ZW5kZXJCb3gmIGJveCwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCkKIHsKICAgICBhdXRvJiBzdHlsZSA9IGJveC5zdHlsZSgpOwotICAgIGJvb2wgaXNS
VEwgPSBzdHlsZS5kaXJlY3Rpb24oKSA9PSBSVEw7CisgICAgYm9vbCBpc1JUTCA9IHN0eWxlLmRp
cmVjdGlvbigpID09IFRleHREaXJlY3Rpb246OlJUTDsKICAgICBmbG9hdCBib3JkZXJUb3BXaWR0
aCA9IHN0eWxlLmJvcmRlclRvcFdpZHRoKCk7CiAgICAgRmxvYXRSZWN0IGNsaXAocmVjdC54KCkg
KyBzdHlsZS5ib3JkZXJMZWZ0V2lkdGgoKSwgcmVjdC55KCkgKyBzdHlsZS5ib3JkZXJUb3BXaWR0
aCgpLCByZWN0LndpZHRoKCkgLSBzdHlsZS5ib3JkZXJMZWZ0V2lkdGgoKSAtIHN0eWxlLmJvcmRl
clJpZ2h0V2lkdGgoKSwgcmVjdC5oZWlnaHQoKSAtIHN0eWxlLmJvcmRlclRvcFdpZHRoKCkgLSBz
dHlsZS5ib3JkZXJCb3R0b21XaWR0aCgpKTsKICAgICBDR0NvbnRleHRSZWYgY2dDb250ZXh0ID0g
cGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0JKHJldmlzaW9uIDIzNDUxNCkKKysrIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQkod29ya2luZyBjb3B5KQpA
QCAtMTQ4NCw3ICsxNDg0LDcgQEAgdm9pZCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRNZW51TGlzdEJ1
dHRvbgogCiBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludE1lbnVMaXN0QnV0dG9uRGVjb3JhdGlv
bnMoY29uc3QgUmVuZGVyQm94JiByZW5kZXJlciwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKLSAgICBib29sIGlzUlRMID0gcmVuZGVyZXIuc3R5
bGUoKS5kaXJlY3Rpb24oKSA9PSBSVEw7CisgICAgYm9vbCBpc1JUTCA9IHJlbmRlcmVyLnN0eWxl
KCkuZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6UlRMOwogICAgIEludFJlY3QgYm91bmRz
ID0gSW50UmVjdChyZWN0LngoKSArIHJlbmRlcmVyLnN0eWxlKCkuYm9yZGVyTGVmdFdpZHRoKCks
CiAgICAgICAgIHJlY3QueSgpICsgcmVuZGVyZXIuc3R5bGUoKS5ib3JkZXJUb3BXaWR0aCgpLAog
ICAgICAgICByZWN0LndpZHRoKCkgLSByZW5kZXJlci5zdHlsZSgpLmJvcmRlckxlZnRXaWR0aCgp
IC0gcmVuZGVyZXIuc3R5bGUoKS5ib3JkZXJSaWdodFdpZHRoKCksCkBAIC0xNTkzLDcgKzE1OTMs
NyBAQCB2b2lkIFJlbmRlclRoZW1lTWFjOjphZGp1c3RNZW51TGlzdFN0eWxlCiBMZW5ndGhCb3gg
UmVuZGVyVGhlbWVNYWM6OnBvcHVwSW50ZXJuYWxQYWRkaW5nQm94KGNvbnN0IFJlbmRlclN0eWxl
JiBzdHlsZSkgY29uc3QKIHsKICAgICBpZiAoc3R5bGUuYXBwZWFyYW5jZSgpID09IE1lbnVsaXN0
UGFydCkgewotICAgICAgICBjb25zdCBpbnQqIHBhZGRpbmcgPSBwb3B1cEJ1dHRvblBhZGRpbmco
Y29udHJvbFNpemVGb3JGb250KHN0eWxlKSwgc3R5bGUuZGlyZWN0aW9uKCkgPT0gUlRMKTsKKyAg
ICAgICAgY29uc3QgaW50KiBwYWRkaW5nID0gcG9wdXBCdXR0b25QYWRkaW5nKGNvbnRyb2xTaXpl
Rm9yRm9udChzdHlsZSksIHN0eWxlLmRpcmVjdGlvbigpID09IFRleHREaXJlY3Rpb246OlJUTCk7
CiAgICAgICAgIHJldHVybiB7IHN0YXRpY19jYXN0PGludD4ocGFkZGluZ1t0b3BQYWRkaW5nXSAq
IHN0eWxlLmVmZmVjdGl2ZVpvb20oKSksCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KHBh
ZGRpbmdbcmlnaHRQYWRkaW5nXSAqIHN0eWxlLmVmZmVjdGl2ZVpvb20oKSksCiAgICAgICAgICAg
ICBzdGF0aWNfY2FzdDxpbnQ+KHBhZGRpbmdbYm90dG9tUGFkZGluZ10gKiBzdHlsZS5lZmZlY3Rp
dmVab29tKCkpLApAQCAtMTYwNCw3ICsxNjA0LDcgQEAgTGVuZ3RoQm94IFJlbmRlclRoZW1lTWFj
Ojpwb3B1cEludGVybmFsUAogICAgICAgICBmbG9hdCBhcnJvd1dpZHRoID0gYmFzZUFycm93V2lk
dGggKiAoc3R5bGUuY29tcHV0ZWRGb250UGl4ZWxTaXplKCkgLyBiYXNlRm9udFNpemUpOwogICAg
ICAgICBmbG9hdCByaWdodFBhZGRpbmcgPSBjZWlsZihhcnJvd1dpZHRoICsgKGFycm93UGFkZGlu
Z0JlZm9yZSArIGFycm93UGFkZGluZ0FmdGVyICsgcGFkZGluZ0JlZm9yZVNlcGFyYXRvcikgKiBz
dHlsZS5lZmZlY3RpdmVab29tKCkpOwogICAgICAgICBmbG9hdCBsZWZ0UGFkZGluZyA9IHN0eWxl
ZFBvcHVwUGFkZGluZ0xlZnQgKiBzdHlsZS5lZmZlY3RpdmVab29tKCk7Ci0gICAgICAgIGlmIChz
dHlsZS5kaXJlY3Rpb24oKSA9PSBSVEwpCisgICAgICAgIGlmIChzdHlsZS5kaXJlY3Rpb24oKSA9
PSBUZXh0RGlyZWN0aW9uOjpSVEwpCiAgICAgICAgICAgICBzdGQ6OnN3YXAocmlnaHRQYWRkaW5n
LCBsZWZ0UGFkZGluZyk7CiAgICAgICAgIHJldHVybiB7IHN0YXRpY19jYXN0PGludD4oc3R5bGVk
UG9wdXBQYWRkaW5nVG9wICogc3R5bGUuZWZmZWN0aXZlWm9vbSgpKSwKICAgICAgICAgICAgIHN0
YXRpY19jYXN0PGludD4ocmlnaHRQYWRkaW5nKSwKQEAgLTE2NTEsNyArMTY1MSw3IEBAIHZvaWQg
UmVuZGVyVGhlbWVNYWM6OnNldFBvcHVwQnV0dG9uQ2VsbFMKICAgICAvLyBTZXQgdGhlIGNvbnRy
b2wgc2l6ZSBiYXNlZCBvZmYgdGhlIHJlY3RhbmdsZSB3ZSdyZSBwYWludGluZyBpbnRvLgogICAg
IHNldENvbnRyb2xTaXplKHBvcHVwQnV0dG9uLCBwb3B1cEJ1dHRvblNpemVzKCksIGJ1dHRvblNp
emUsIG8uc3R5bGUoKS5lZmZlY3RpdmVab29tKCkpOwogCi0gICAgcG9wdXBCdXR0b24udXNlcklu
dGVyZmFjZUxheW91dERpcmVjdGlvbiA9IG8uc3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBMVFIgPyBO
U1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25MZWZ0VG9SaWdodCA6IE5TVXNlckludGVyZmFj
ZUxheW91dERpcmVjdGlvblJpZ2h0VG9MZWZ0OworICAgIHBvcHVwQnV0dG9uLnVzZXJJbnRlcmZh
Y2VMYXlvdXREaXJlY3Rpb24gPSBvLnN0eWxlKCkuZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlv
bjo6TFRSID8gTlNVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uTGVmdFRvUmlnaHQgOiBOU1Vz
ZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25SaWdodFRvTGVmdDsKIAogICAgIC8vIFVwZGF0ZSB0
aGUgdmFyaW91cyBzdGF0ZXMgd2UgcmVzcG9uZCB0by4KICAgICB1cGRhdGVDaGVja2VkU3RhdGUo
cG9wdXBCdXR0b24sIG8pOwpAQCAtMTkzMiw3ICsxOTMyLDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1h
Yzo6cGFpbnRTZWFyY2hGaWVsZENhbgogICAgIEZsb2F0UmVjdCBsb2NhbEJvdW5kcyA9IGFkanVz
dGVkQ2FuY2VsQnV0dG9uUmVjdChbc2VhcmNoIGNhbmNlbEJ1dHRvblJlY3RGb3JCb3VuZHM6TlNS
ZWN0KHNuYXBwZWRJbnRSZWN0KGlucHV0Qm94LmNvbnRlbnRCb3hSZWN0KCkpKV0pOwogICAgIC8v
IEFkanVzdCBwb3NpdGlvbiBiYXNlZCBvbiB0aGUgY29udGVudCBkaXJlY3Rpb24uCiAgICAgZmxv
YXQgYWRqdXN0ZWRYUG9zaXRpb247Ci0gICAgaWYgKGJveC5zdHlsZSgpLmRpcmVjdGlvbigpID09
IFJUTCkKKyAgICBpZiAoYm94LnN0eWxlKCkuZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6
UlRMKQogICAgICAgICBhZGp1c3RlZFhQb3NpdGlvbiA9IGlucHV0Qm94LmNvbnRlbnRCb3hSZWN0
KCkueCgpOwogICAgIGVsc2UKICAgICAgICAgYWRqdXN0ZWRYUG9zaXRpb24gPSBpbnB1dEJveC5j
b250ZW50Qm94UmVjdCgpLm1heFgoKSAtIGxvY2FsQm91bmRzLnNpemUoKS53aWR0aCgpOwpAQCAt
MjA2OCw3ICsyMDY4LDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRTZWFyY2hGaWVsZFJl
cwogICAgIEZsb2F0UmVjdCBsb2NhbEJvdW5kcyA9IGFkanVzdGVkUmVzdWx0QnV0dG9uUmVjdChb
c2VhcmNoIHNlYXJjaEJ1dHRvblJlY3RGb3JCb3VuZHM6TlNSZWN0KHNuYXBwZWRJbnRSZWN0KGlu
cHV0Qm94LmNvbnRlbnRCb3hSZWN0KCkpKV0pOwogICAgIC8vIEFkanVzdCBwb3NpdGlvbiBiYXNl
ZCBvbiB0aGUgY29udGVudCBkaXJlY3Rpb24uCiAgICAgZmxvYXQgYWRqdXN0ZWRYUG9zaXRpb247
Ci0gICAgaWYgKGJveC5zdHlsZSgpLmRpcmVjdGlvbigpID09IFJUTCkKKyAgICBpZiAoYm94LnN0
eWxlKCkuZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6UlRMKQogICAgICAgICBhZGp1c3Rl
ZFhQb3NpdGlvbiA9IGlucHV0Qm94LmNvbnRlbnRCb3hSZWN0KCkubWF4WCgpIC0gbG9jYWxCb3Vu
ZHMuc2l6ZSgpLndpZHRoKCk7CiAgICAgZWxzZQogICAgICAgICBhZGp1c3RlZFhQb3NpdGlvbiA9
IGlucHV0Qm94LmNvbnRlbnRCb3hSZWN0KCkueCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAJKHJldmlzaW9u
IDIzNDUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1M
QmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSw3ICs4OSw3IEBAIExheW91dFVuaXQgUmVu
ZGVyTWF0aE1MQmxvY2s6Om1hdGhBeGlzSGUKIAogTGF5b3V0VW5pdCBSZW5kZXJNYXRoTUxCbG9j
azo6bWlycm9ySWZOZWVkZWQoTGF5b3V0VW5pdCBob3Jpem9udGFsT2Zmc2V0LCBMYXlvdXRVbml0
IGJveFdpZHRoKSBjb25zdAogewotICAgIGlmIChzdHlsZSgpLmRpcmVjdGlvbigpID09IFJUTCkK
KyAgICBpZiAoc3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpSVEwpCiAgICAg
ICAgIHJldHVybiBsb2dpY2FsV2lkdGgoKSAtIGJveFdpZHRoIC0gaG9yaXpvbnRhbE9mZnNldDsK
IAogICAgIHJldHVybiBob3Jpem9udGFsT2Zmc2V0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAJKHJl
dmlzaW9uIDIzNDUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MT3BlcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzgsNyArMjM4LDcgQEAgdm9p
ZCBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6bGF5b3V0QmxvY2soYgogICAgICAgICBzZXRMb2dpY2Fs
V2lkdGgod2lkdGgpOwogCiAgICAgICAgIC8vIFdlIHRoZW4gbW92ZSB0aGUgY2hpbGRyZW4gdG8g
dGFrZSBzcGFjaW5nIGludG8gYWNjb3VudC4KLSAgICAgICAgTGF5b3V0UG9pbnQgaG9yaXpvbnRh
bFNoaWZ0KHN0eWxlKCkuZGlyZWN0aW9uKCkgPT0gTFRSID8gbGVhZGluZ1NwYWNlVmFsdWUgOiAt
bGVhZGluZ1NwYWNlVmFsdWUsIDApOworICAgICAgICBMYXlvdXRQb2ludCBob3Jpem9udGFsU2hp
ZnQoc3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBsZWFkaW5nU3Bh
Y2VWYWx1ZSA6IC1sZWFkaW5nU3BhY2VWYWx1ZSwgMCk7CiAgICAgICAgIGZvciAoYXV0byogY2hp
bGQgPSBmaXJzdENoaWxkQm94KCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZ0Jv
eCgpKQogICAgICAgICAgICAgY2hpbGQtPnNldExvY2F0aW9uKGNoaWxkLT5sb2NhdGlvbigpICsg
aG9yaXpvbnRhbFNoaWZ0KTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAJKHJldmlzaW9uIDIzNDUxNCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE1Miw3ICsxNTIsNyBAQCBSZW5kZXJTdHlsZTo6UmVuZGVyU3R5bGUoQ3JlYXRlRGVmYXVsdFN0
CiAjaWYgRU5BQkxFKENVUlNPUl9WSVNJQklMSVRZKQogICAgIG1faW5oZXJpdGVkRmxhZ3MuY3Vy
c29yVmlzaWJpbGl0eSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbml0aWFsQ3Vyc29yVmlzaWJp
bGl0eSgpKTsKICNlbmRpZgotICAgIG1faW5oZXJpdGVkRmxhZ3MuZGlyZWN0aW9uID0gaW5pdGlh
bERpcmVjdGlvbigpOworICAgIG1faW5oZXJpdGVkRmxhZ3MuZGlyZWN0aW9uID0gc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGluaXRpYWxEaXJlY3Rpb24oKSk7CiAgICAgbV9pbmhlcml0ZWRGbGFncy53
aGl0ZVNwYWNlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluaXRpYWxXaGl0ZVNwYWNlKCkpOwog
ICAgIG1faW5oZXJpdGVkRmxhZ3MuYm9yZGVyQ29sbGFwc2UgPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oaW5pdGlhbEJvcmRlckNvbGxhcHNlKCkpOwogICAgIG1faW5oZXJpdGVkRmxhZ3MucnRsT3Jk
ZXJpbmcgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlhbFJUTE9yZGVyaW5nKCkpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgJKHJldmlz
aW9uIDIzNDUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zODgsNyArMzg4LDcgQEAgcHVibGljOgogICAgIFRleHRa
b29tIHRleHRab29tKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dFpvb20+KG1fcmFy
ZUluaGVyaXRlZERhdGEtPnRleHRab29tKTsgfQogCiAgICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rp
b24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0RGlyZWN0aW9uPihtX2luaGVyaXRl
ZEZsYWdzLmRpcmVjdGlvbik7IH0KLSAgICBib29sIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSBj
b25zdCB7IHJldHVybiBkaXJlY3Rpb24oKSA9PSBMVFI7IH0KKyAgICBib29sIGlzTGVmdFRvUmln
aHREaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBkaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9u
OjpMVFI7IH0KICAgICBib29sIGhhc0V4cGxpY2l0bHlTZXREaXJlY3Rpb24oKSBjb25zdCB7IHJl
dHVybiBtX25vbkluaGVyaXRlZEZsYWdzLmhhc0V4cGxpY2l0bHlTZXREaXJlY3Rpb247IH0KIAog
ICAgIGNvbnN0IExlbmd0aCYgc3BlY2lmaWVkTGluZUhlaWdodCgpIGNvbnN0OwpAQCAtMTQ0Miw3
ICsxNDQyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBDYXB0aW9uU2lkZSBpbml0aWFsQ2FwdGlv
blNpZGUoKSB7IHJldHVybiBDYXB0aW9uU2lkZTo6VG9wOyB9CiAgICAgc3RhdGljIENvbHVtbkF4
aXMgaW5pdGlhbENvbHVtbkF4aXMoKSB7IHJldHVybiBDb2x1bW5BeGlzOjpBdXRvOyB9CiAgICAg
c3RhdGljIENvbHVtblByb2dyZXNzaW9uIGluaXRpYWxDb2x1bW5Qcm9ncmVzc2lvbigpIHsgcmV0
dXJuIENvbHVtblByb2dyZXNzaW9uOjpOb3JtYWw7IH0KLSAgICBzdGF0aWMgVGV4dERpcmVjdGlv
biBpbml0aWFsRGlyZWN0aW9uKCkgeyByZXR1cm4gTFRSOyB9CisgICAgc3RhdGljIFRleHREaXJl
Y3Rpb24gaW5pdGlhbERpcmVjdGlvbigpIHsgcmV0dXJuIFRleHREaXJlY3Rpb246OkxUUjsgfQog
ICAgIHN0YXRpYyBXcml0aW5nTW9kZSBpbml0aWFsV3JpdGluZ01vZGUoKSB7IHJldHVybiBUb3BU
b0JvdHRvbVdyaXRpbmdNb2RlOyB9CiAgICAgc3RhdGljIFRleHRDb21iaW5lIGluaXRpYWxUZXh0
Q29tYmluZSgpIHsgcmV0dXJuIFRleHRDb21iaW5lOjpOb25lOyB9CiAgICAgc3RhdGljIFRleHRP
cmllbnRhdGlvbiBpbml0aWFsVGV4dE9yaWVudGF0aW9uKCkgeyByZXR1cm4gVGV4dE9yaWVudGF0
aW9uOjpNaXhlZDsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRp
bmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0
dGluZ3MuY3BwCShyZXZpc2lvbiAyMzQ1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFsU2V0dGluZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MjAsOSArODIwLDkgQEAgRXhj
ZXB0aW9uT3I8U3RyaW5nPiBJbnRlcm5hbFNldHRpbmdzOjpzeQogICAgIGlmICghbV9wYWdlKQog
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yIH07CiAgICAgc3dp
dGNoIChzZXR0aW5ncygpLnN5c3RlbUxheW91dERpcmVjdGlvbigpKSB7Ci0gICAgY2FzZSBMVFI6
CisgICAgY2FzZSBUZXh0RGlyZWN0aW9uOjpMVFI6CiAgICAgICAgIHJldHVybiBTdHJpbmcgeyAi
TFRSIl9zIH07Ci0gICAgY2FzZSBSVEw6CisgICAgY2FzZSBUZXh0RGlyZWN0aW9uOjpSVEw6CiAg
ICAgICAgIHJldHVybiBTdHJpbmcgeyAiUlRMIl9zIH07CiAgICAgfQogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwpAQCAtODM0LDExICs4MzQsMTEgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSW50ZXJu
YWxTZXR0aW5nczo6c2V0UwogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yIH07CiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKGRpcmVjdGlvbiwgImx0ciIpKSB7Ci0gICAgICAgIHNldHRpbmdzKCkuc2V0U3lz
dGVtTGF5b3V0RGlyZWN0aW9uKExUUik7CisgICAgICAgIHNldHRpbmdzKCkuc2V0U3lzdGVtTGF5
b3V0RGlyZWN0aW9uKFRleHREaXJlY3Rpb246OkxUUik7CiAgICAgICAgIHJldHVybiB7IH07CiAg
ICAgfQogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShkaXJlY3Rpb24sICJy
dGwiKSkgewotICAgICAgICBzZXR0aW5ncygpLnNldFN5c3RlbUxheW91dERpcmVjdGlvbihSVEwp
OworICAgICAgICBzZXR0aW5ncygpLnNldFN5c3RlbUxheW91dERpcmVjdGlvbihUZXh0RGlyZWN0
aW9uOjpSVEwpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmgJKHJldmlzaW9uIDIzNDUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxMiw3ICs2MTIsNyBAQCBwdWJsaWM6CiAKICAgICBS
ZWZQdHI8R0NPYnNlcnZhdGlvbj4gb2JzZXJ2ZUdDKEpTQzo6SlNWYWx1ZSk7CiAKLSAgICBlbnVt
IGNsYXNzIFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24geyBMVFIsIFJUTCB9OworICAgIGVu
dW0gY2xhc3MgVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiA6IHVpbnQ4X3QgeyBMVFIsIFJU
TCB9OwogICAgIHZvaWQgc2V0VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbihVc2VySW50ZXJm
YWNlTGF5b3V0RGlyZWN0aW9uKTsKIAogICAgIGJvb2wgdXNlclByZWZlcnNSZWR1Y2VkTW90aW9u
KCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjM0NTY4KQorKysgU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMiBAQAorMjAxOC0wOC0wNiAg
QWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFVz
ZSBhIDEtYnl0ZSBlbnVtIGNsYXNzIGZvciBUZXh0RGlyZWN0aW9uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODgzNTAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9XZWJQb3B1cEl0ZW0uY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cEl0ZW06OldlYlBvcHVwSXRlbSk6CisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgt
W1dLQ29udGVudFZpZXcgd2ViU2VsZWN0aW9uUmVjdHNGb3JTZWxlY3Rpb25SZWN0czpdKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBvcHVwTWVudVByb3h5TWFjLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eU1hYzo6cG9wdWxhdGUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQb3B1cE1lbnVQcm94eU1hYzo6c2hvd1BvcHVwTWVudSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQb3B1cE1lbnU6OnNob3cpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2Vi
UGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0QXNzaXN0ZWROb2RlSW5m
b3JtYXRpb24pOgorCiAyMDE4LTA4LTAzICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgRml4IHNwZWxsaW5nIG9mICJvdmVycmlkZGVuIgpJbmRl
eDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUG9wdXBJdGVtLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQb3B1cEl0ZW0uY3BwCShyZXZpc2lvbiAyMzQ1MTQpCisr
KyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQb3B1cEl0ZW0uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBXZWJQb3B1cEl0ZW06OldlYlBv
cHVwSXRlbSgpCiAgICAgOiBtX3R5cGUoSXRlbSkKLSAgICAsIG1fdGV4dERpcmVjdGlvbihMVFIp
CisgICAgLCBtX3RleHREaXJlY3Rpb24oVGV4dERpcmVjdGlvbjo6TFRSKQogICAgICwgbV9oYXNU
ZXh0RGlyZWN0aW9uT3ZlcnJpZGUoZmFsc2UpCiAgICAgLCBtX2lzRW5hYmxlZCh0cnVlKQogICAg
ICwgbV9pc1NlbGVjdGVkKGZhbHNlKQpAQCAtNDQsNyArNDQsNyBAQCBXZWJQb3B1cEl0ZW06Oldl
YlBvcHVwSXRlbSgpCiAKIFdlYlBvcHVwSXRlbTo6V2ViUG9wdXBJdGVtKFR5cGUgdHlwZSkKICAg
ICA6IG1fdHlwZSh0eXBlKQotICAgICwgbV90ZXh0RGlyZWN0aW9uKExUUikKKyAgICAsIG1fdGV4
dERpcmVjdGlvbihUZXh0RGlyZWN0aW9uOjpMVFIpCiAgICAgLCBtX2hhc1RleHREaXJlY3Rpb25P
dmVycmlkZShmYWxzZSkKICAgICAsIG1faXNFbmFibGVkKHRydWUpCiAgICAgLCBtX2lzTGFiZWwo
ZmFsc2UpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0JKHJldmlzaW9uIDIzNDUxNCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTE3NTQsNyArMTc1NCw3IEBAIC0gKE5TQXJyYXkgKil3ZWJTZWxlY3Rpb25SZWN0
c0ZvclNlbGVjdGkKICAgICAgICAgY29uc3QgV2ViQ29yZTo6U2VsZWN0aW9uUmVjdCYgY29yZVJl
Y3QgPSBzZWxlY3Rpb25SZWN0c1tpXTsKICAgICAgICAgV2ViU2VsZWN0aW9uUmVjdCAqd2ViUmVj
dCA9IFtXZWJTZWxlY3Rpb25SZWN0IHNlbGVjdGlvblJlY3RdOwogICAgICAgICB3ZWJSZWN0LnJl
Y3QgPSBjb3JlUmVjdC5yZWN0KCk7Ci0gICAgICAgIHdlYlJlY3Qud3JpdGluZ0RpcmVjdGlvbiA9
IGNvcmVSZWN0LmRpcmVjdGlvbigpID09IExUUiA/IFdLV3JpdGluZ0RpcmVjdGlvbkxlZnRUb1Jp
Z2h0IDogV0tXcml0aW5nRGlyZWN0aW9uUmlnaHRUb0xlZnQ7CisgICAgICAgIHdlYlJlY3Qud3Jp
dGluZ0RpcmVjdGlvbiA9IGNvcmVSZWN0LmRpcmVjdGlvbigpID09IFRleHREaXJlY3Rpb246OkxU
UiA/IFdLV3JpdGluZ0RpcmVjdGlvbkxlZnRUb1JpZ2h0IDogV0tXcml0aW5nRGlyZWN0aW9uUmln
aHRUb0xlZnQ7CiAgICAgICAgIHdlYlJlY3QuaXNMaW5lQnJlYWsgPSBjb3JlUmVjdC5pc0xpbmVC
cmVhaygpOwogICAgICAgICB3ZWJSZWN0LmlzRmlyc3RPbkxpbmUgPSBjb3JlUmVjdC5pc0ZpcnN0
T25MaW5lKCk7CiAgICAgICAgIHdlYlJlY3QuaXNMYXN0T25MaW5lID0gY29yZVJlY3QuaXNMYXN0
T25MaW5lKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUG9wdXBNZW51
UHJveHlNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dl
YlBvcHVwTWVudVByb3h5TWFjLm1tCShyZXZpc2lvbiAyMzQ1MTQpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvV2ViUG9wdXBNZW51UHJveHlNYWMubW0JKHdvcmtpbmcgY29weSkKQEAg
LTczLDkgKzczLDkgQEAgdm9pZCBXZWJQb3B1cE1lbnVQcm94eU1hYzo6cG9wdWxhdGUoY29ucwog
ICAgICAgICAgICAgTlNNZW51SXRlbSAqbWVudUl0ZW0gPSBbbV9wb3B1cCBsYXN0SXRlbV07CiAK
ICAgICAgICAgICAgIFJldGFpblB0cjxOU011dGFibGVQYXJhZ3JhcGhTdHlsZT4gcGFyYWdyYXBo
U3R5bGUgPSBhZG9wdE5TKFtbTlNQYXJhZ3JhcGhTdHlsZSBkZWZhdWx0UGFyYWdyYXBoU3R5bGVd
IG11dGFibGVDb3B5XSk7Ci0gICAgICAgICAgICBOU1dyaXRpbmdEaXJlY3Rpb24gd3JpdGluZ0Rp
cmVjdGlvbiA9IGl0ZW1zW2ldLm1fdGV4dERpcmVjdGlvbiA9PSBMVFIgPyBOU1dyaXRpbmdEaXJl
Y3Rpb25MZWZ0VG9SaWdodCA6IE5TV3JpdGluZ0RpcmVjdGlvblJpZ2h0VG9MZWZ0OworICAgICAg
ICAgICAgTlNXcml0aW5nRGlyZWN0aW9uIHdyaXRpbmdEaXJlY3Rpb24gPSBpdGVtc1tpXS5tX3Rl
eHREaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gTlNXcml0aW5nRGlyZWN0aW9uTGVm
dFRvUmlnaHQgOiBOU1dyaXRpbmdEaXJlY3Rpb25SaWdodFRvTGVmdDsKICAgICAgICAgICAgIFtw
YXJhZ3JhcGhTdHlsZSBzZXRCYXNlV3JpdGluZ0RpcmVjdGlvbjp3cml0aW5nRGlyZWN0aW9uXTsK
LSAgICAgICAgICAgIFtwYXJhZ3JhcGhTdHlsZSBzZXRBbGlnbm1lbnQ6bWVudVRleHREaXJlY3Rp
b24gPT0gTFRSID8gTlNUZXh0QWxpZ25tZW50TGVmdCA6IE5TVGV4dEFsaWdubWVudFJpZ2h0XTsK
KyAgICAgICAgICAgIFtwYXJhZ3JhcGhTdHlsZSBzZXRBbGlnbm1lbnQ6bWVudVRleHREaXJlY3Rp
b24gPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gTlNUZXh0QWxpZ25tZW50TGVmdCA6IE5TVGV4dEFs
aWdubWVudFJpZ2h0XTsKICAgICAgICAgICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5
PiBhdHRyaWJ1dGVzID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRX
aXRoT2JqZWN0c0FuZEtleXM6CiAgICAgICAgICAgICAgICAgcGFyYWdyYXBoU3R5bGUuZ2V0KCks
IE5TUGFyYWdyYXBoU3R5bGVBdHRyaWJ1dGVOYW1lLAogICAgICAgICAgICAgICAgIGZvbnQsIE5T
Rm9udEF0dHJpYnV0ZU5hbWUsCkBAIC0xMTEsMTAgKzExMSwxMCBAQCB2b2lkIFdlYlBvcHVwTWVu
dVByb3h5TWFjOjpzaG93UG9wdXBNZW51CiAKICAgICBbbV9wb3B1cCBhdHRhY2hQb3BVcFdpdGhG
cmFtZTpyZWN0IGluVmlldzptX3dlYlZpZXddOwogICAgIFttX3BvcHVwIHNlbGVjdEl0ZW1BdElu
ZGV4OnNlbGVjdGVkSW5kZXhdOwotICAgIFttX3BvcHVwIHNldFVzZXJJbnRlcmZhY2VMYXlvdXRE
aXJlY3Rpb246dGV4dERpcmVjdGlvbiA9PSBMVFIgPyBOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJl
Y3Rpb25MZWZ0VG9SaWdodCA6IE5TVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvblJpZ2h0VG9M
ZWZ0XTsKKyAgICBbbV9wb3B1cCBzZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uOnRleHRE
aXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gTlNVc2VySW50ZXJmYWNlTGF5b3V0RGly
ZWN0aW9uTGVmdFRvUmlnaHQgOiBOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25SaWdodFRv
TGVmdF07CiAKICAgICBOU01lbnUgKm1lbnUgPSBbbV9wb3B1cCBtZW51XTsKLSAgICBbbWVudSBz
ZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uOnRleHREaXJlY3Rpb24gPT0gTFRSID8gTlNV
c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uTGVmdFRvUmlnaHQgOiBOU1VzZXJJbnRlcmZhY2VM
YXlvdXREaXJlY3Rpb25SaWdodFRvTGVmdF07CisgICAgW21lbnUgc2V0VXNlckludGVyZmFjZUxh
eW91dERpcmVjdGlvbjp0ZXh0RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUiA/IE5TVXNl
ckludGVyZmFjZUxheW91dERpcmVjdGlvbkxlZnRUb1JpZ2h0IDogTlNVc2VySW50ZXJmYWNlTGF5
b3V0RGlyZWN0aW9uUmlnaHRUb0xlZnRdOwogCiAgICAgLy8gVGhlc2UgdmFsdWVzIHdlcmUgYm9y
cm93ZWQgZnJvbSBBcHBLaXQgdG8gbWF0Y2ggdGhlaXIgcGxhY2VtZW50IG9mIHRoZSBtZW51Lgog
ICAgIGNvbnN0IGludCBwb3BPdmVySG9yaXpvbnRhbEFkanVzdCA9IC0xMzsKQEAgLTEyOSwxOCAr
MTI5LDE4IEBAIHZvaWQgV2ViUG9wdXBNZW51UHJveHlNYWM6OnNob3dQb3B1cE1lbnUKICAgICAg
ICAgaWYgKHRpdGxlRnJhbWUuc2l6ZS53aWR0aCA8PSAwIHx8IHRpdGxlRnJhbWUuc2l6ZS5oZWln
aHQgPD0gMCkKICAgICAgICAgICAgIHRpdGxlRnJhbWUgPSByZWN0OwogICAgICAgICBmbG9hdCB2
ZXJ0aWNhbE9mZnNldCA9IHJvdW5kZigoTlNNYXhZKHJlY3QpIC0gTlNNYXhZKHRpdGxlRnJhbWUp
KSArIE5TSGVpZ2h0KHRpdGxlRnJhbWUpKSArIDE7Ci0gICAgICAgIGlmICh0ZXh0RGlyZWN0aW9u
ID09IExUUikKKyAgICAgICAgaWYgKHRleHREaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRS
KQogICAgICAgICAgICAgbG9jYXRpb24gPSBOU01ha2VQb2ludChOU01pblgocmVjdCkgKyBwb3BP
dmVySG9yaXpvbnRhbEFkanVzdCwgTlNNYXhZKHJlY3QpIC0gdmVydGljYWxPZmZzZXQpOwogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICBsb2NhdGlvbiA9IE5TTWFrZVBvaW50KE5TTWF4WChyZWN0
KSAtIHBvcE92ZXJIb3Jpem9udGFsQWRqdXN0LCBOU01heFkocmVjdCkgLSB2ZXJ0aWNhbE9mZnNl
dCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKHRleHREaXJlY3Rpb24gPT0gTFRSKQorICAg
ICAgICBpZiAodGV4dERpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpCiAgICAgICAgICAg
ICBsb2NhdGlvbiA9IE5TTWFrZVBvaW50KE5TTWluWChyZWN0KSArIHBvcFVuZGVySG9yaXpvbnRh
bEFkanVzdCwgTlNNYXhZKHJlY3QpICsgcG9wVW5kZXJWZXJ0aWNhbEFkanVzdCk7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIGxvY2F0aW9uID0gTlNNYWtlUG9pbnQoTlNNYXhYKHJlY3QpIC0g
cG9wVW5kZXJIb3Jpem9udGFsQWRqdXN0LCBOU01heFkocmVjdCkgKyBwb3BVbmRlclZlcnRpY2Fs
QWRqdXN0KTsKICAgICB9CiAgICAgUmV0YWluUHRyPE5TVmlldz4gZHVtbXlWaWV3ID0gYWRvcHRO
UyhbW05TVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpyZWN0XSk7Ci0gICAgW2R1bW15Vmlldy5n
ZXQoKSBzZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uOnRleHREaXJlY3Rpb24gPT0gTFRS
ID8gTlNVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uTGVmdFRvUmlnaHQgOiBOU1VzZXJJbnRl
cmZhY2VMYXlvdXREaXJlY3Rpb25SaWdodFRvTGVmdF07CisgICAgW2R1bW15Vmlldy5nZXQoKSBz
ZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uOnRleHREaXJlY3Rpb24gPT0gVGV4dERpcmVj
dGlvbjo6TFRSID8gTlNVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uTGVmdFRvUmlnaHQgOiBO
U1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25SaWdodFRvTGVmdF07CiAgICAgW21fd2ViVmll
dyBhZGRTdWJ2aWV3OmR1bW15Vmlldy5nZXQoKV07CiAgICAgbG9jYXRpb24gPSBbZHVtbXlWaWV3
IGNvbnZlcnRQb2ludDpsb2NhdGlvbiBmcm9tVmlldzptX3dlYlZpZXddOwogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBNZW51LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUG9w
dXBNZW51LmNwcAkocmV2aXNpb24gMjM0NTE0KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwTWVudS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMiw3
ICsxMTIsNyBAQCB2b2lkIFdlYlBvcHVwTWVudTo6c2hvdyhjb25zdCBJbnRSZWN0JiByCiAgICAg
UGxhdGZvcm1Qb3B1cE1lbnVEYXRhIHBsYXRmb3JtRGF0YTsKICAgICBzZXRVcFBsYXRmb3JtRGF0
YShwYWdlQ29vcmRpbmF0ZXMsIHBsYXRmb3JtRGF0YSk7CiAKLSAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OlNob3dQb3B1cE1lbnUocGFnZUNvb3JkaW5hdGVzLCBtX3BvcHVwQ2xpZW50LT5tZW51
U3R5bGUoKS50ZXh0RGlyZWN0aW9uKCksIGl0ZW1zLCBpbmRleCwgcGxhdGZvcm1EYXRhKSwgbV9w
YWdlLT5wYWdlSUQoKSk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaG93UG9wdXBNZW51
KHBhZ2VDb29yZGluYXRlcywgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG1fcG9wdXBDbGllbnQtPm1l
bnVTdHlsZSgpLnRleHREaXJlY3Rpb24oKSksIGl0ZW1zLCBpbmRleCwgcGxhdGZvcm1EYXRhKSwg
bV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKIHZvaWQgV2ViUG9wdXBNZW51OjpoaWRlKCkKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9T
Lm1tCShyZXZpc2lvbiAyMzQ1MTQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9pb3MvV2ViUGFnZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjMxMSw3ICsyMzExLDcgQEAg
dm9pZCBXZWJQYWdlOjpnZXRBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbgogICAgICAgICBib29sIGlu
Rml4ZWQgPSBmYWxzZTsKICAgICAgICAgcmVuZGVyZXItPmxvY2FsVG9Db250YWluZXJQb2ludChG
bG9hdFBvaW50KCksIG51bGxwdHIsIFVzZVRyYW5zZm9ybXMsICZpbkZpeGVkKTsKICAgICAgICAg
aW5mb3JtYXRpb24uaW5zaWRlRml4ZWRQb3NpdGlvbiA9IGluRml4ZWQ7Ci0gICAgICAgIGluZm9y
bWF0aW9uLmlzUlRMID0gcmVuZGVyZXItPnN0eWxlKCkuZGlyZWN0aW9uKCkgPT0gUlRMOworICAg
ICAgICBpbmZvcm1hdGlvbi5pc1JUTCA9IHJlbmRlcmVyLT5zdHlsZSgpLmRpcmVjdGlvbigpID09
IFRleHREaXJlY3Rpb246OlJUTDsKIAogICAgICAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IGVs
ZW1lbnRGcmFtZS52aWV3KCk7CiAgICAgICAgIGlmIChpbkZpeGVkICYmIGVsZW1lbnRGcmFtZS5p
c01haW5GcmFtZSgpICYmICFmcmFtZVZpZXctPmZyYW1lKCkuc2V0dGluZ3MoKS52aXN1YWxWaWV3
cG9ydEVuYWJsZWQoKSkgewpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwkocmV2aXNp
b24gMjM0NTE0KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTgtMDgtMDYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBVc2UgYSAxLWJ5dGUgZW51bSBjbGFz
cyBmb3IgVGV4dERpcmVjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTg4MzUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUlPUy5tbToKKyAgICAgICAgKC1b
V2ViRnJhbWUgc2VsZWN0aW9uUmVjdHNGb3JDb3JlUmFuZ2U6XSk6CisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViVmlzaWJsZVBvc2l0aW9uLm1tOgorICAgICAgICAoLVtXZWJWaXNpYmxlUG9z
aXRpb24gdGV4dERpcmVjdGlvbl0pOgorICAgICAgICAoLVtXZWJWaXNpYmxlUG9zaXRpb24gZGly
ZWN0aW9uSXNEb3duc3RyZWFtOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViUERGVmlld0lPUy5t
bToKKyAgICAgICAgKC1bV2ViUERGVmlldyBfY2hlY2tQREZUaXRsZV0pOgorCiAyMDE4LTA3LTA0
ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIEludHJv
ZHVjZSBQTEFURk9STShJT1NNQUMpCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVn
YWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUlPUy5tbQkocmV2aXNpb24gMjM0NTE0KQor
KysgU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVJT1MubW0J
KHdvcmtpbmcgY29weSkKQEAgLTIyMCw3ICsyMjAsNyBAQCAtIChOU0FycmF5ICopc2VsZWN0aW9u
UmVjdHNGb3JDb3JlUmFuZ2U6CiAgICAgICAgIFNlbGVjdGlvblJlY3QgJmNvcmVSZWN0ID0gcmVj
dHNbaV07CiAgICAgICAgIFdlYlNlbGVjdGlvblJlY3QgKndlYlJlY3QgPSBbV2ViU2VsZWN0aW9u
UmVjdCBzZWxlY3Rpb25SZWN0XTsKICAgICAgICAgd2ViUmVjdC5yZWN0ID0gc3RhdGljX2Nhc3Q8
Q0dSZWN0Pihjb3JlUmVjdC5yZWN0KCkpOwotICAgICAgICB3ZWJSZWN0LndyaXRpbmdEaXJlY3Rp
b24gPSBjb3JlUmVjdC5kaXJlY3Rpb24oKSA9PSBMVFIgPyBXS1dyaXRpbmdEaXJlY3Rpb25MZWZ0
VG9SaWdodCA6IFdLV3JpdGluZ0RpcmVjdGlvblJpZ2h0VG9MZWZ0OworICAgICAgICB3ZWJSZWN0
LndyaXRpbmdEaXJlY3Rpb24gPSBjb3JlUmVjdC5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9u
OjpMVFIgPyBXS1dyaXRpbmdEaXJlY3Rpb25MZWZ0VG9SaWdodCA6IFdLV3JpdGluZ0RpcmVjdGlv
blJpZ2h0VG9MZWZ0OwogICAgICAgICB3ZWJSZWN0LmlzTGluZUJyZWFrID0gY29yZVJlY3QuaXNM
aW5lQnJlYWsoKTsKICAgICAgICAgd2ViUmVjdC5pc0ZpcnN0T25MaW5lID0gY29yZVJlY3QuaXNG
aXJzdE9uTGluZSgpOwogICAgICAgICB3ZWJSZWN0LmlzTGFzdE9uTGluZSA9IGNvcmVSZWN0Lmlz
TGFzdE9uTGluZSgpOwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBv
cnQvV2ViVmlzaWJsZVBvc2l0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2libGVQb3NpdGlvbi5tbQkocmV2aXNpb24gMjM0
NTE0KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViVmlzaWJs
ZVBvc2l0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMzIsNyArMTMyLDcgQEAgLSAoTlNTdHJp
bmcgKilkZXNjcmlwdGlvbgogLSAoVGV4dERpcmVjdGlvbil0ZXh0RGlyZWN0aW9uCiB7CiAgICAg
Ly8gVE9ETzogaW1wbGVtZW50Ci0gICAgcmV0dXJuIExUUjsKKyAgICByZXR1cm4gVGV4dERpcmVj
dGlvbjo6TFRSOwogfQogCiAtIChCT09MKWRpcmVjdGlvbklzRG93bnN0cmVhbTooV2ViVGV4dEFk
anVzdG1lbnREaXJlY3Rpb24pZGlyZWN0aW9uCkBAIC0xNDQsMTEgKzE0NCw5IEBAIC0gKEJPT0wp
ZGlyZWN0aW9uSXNEb3duc3RyZWFtOihXZWJUZXh0QWQKICAgICAgICAgcmV0dXJuIFlFUzsKICAg
ICAKICAgICAKLSAgICBpZiAoW3NlbGYgdGV4dERpcmVjdGlvbl0gPT0gTFRSKSB7CisgICAgaWYg
KFtzZWxmIHRleHREaXJlY3Rpb25dID09IFRleHREaXJlY3Rpb246OkxUUikKICAgICAgICAgcmV0
dXJuIChkaXJlY3Rpb24gPT0gV2ViVGV4dEFkanVzdG1lbnRSaWdodCk7Ci0gICAgfSBlbHNlIHsK
LSAgICAgICAgcmV0dXJuIChkaXJlY3Rpb24gPT0gV2ViVGV4dEFkanVzdG1lbnRMZWZ0KTsKLSAg
ICB9CisgICAgcmV0dXJuIChkaXJlY3Rpb24gPT0gV2ViVGV4dEFkanVzdG1lbnRMZWZ0KTsKIH0K
IAogLSAoV2ViVmlzaWJsZVBvc2l0aW9uICopcG9zaXRpb25CeU1vdmluZ0luRGlyZWN0aW9uOihX
ZWJUZXh0QWRqdXN0bWVudERpcmVjdGlvbilkaXJlY3Rpb24gYW1vdW50OihVSW50MzIpYW1vdW50
IHdpdGhBZmZpbml0eURvd25zdHJlYW06KEJPT0wpYWZmaW5pdHlEb3duc3RyZWFtCkluZGV4OiBT
b3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdJT1MubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3SU9TLm1tCShy
ZXZpc2lvbiAyMzQ1MTQpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBE
RlZpZXdJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5OSw3ICsyOTksNyBAQCAtICh2b2lkKV9j
aGVja1BERlRpdGxlCiAgICAgaWYgKFt0aXRsZSBsZW5ndGhdKSB7CiAgICAgICAgIFtfdGl0bGUg
cmVsZWFzZV07CiAgICAgICAgIF90aXRsZSA9IFt0aXRsZSBjb3B5XTsKLSAgICAgICAgY29yZShb
c2VsZiBfZnJhbWVdKS0+bG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUo
eyB0aXRsZSwgTFRSIH0pOworICAgICAgICBjb3JlKFtzZWxmIF9mcmFtZV0pLT5sb2FkZXIoKS5j
bGllbnQoKS5kaXNwYXRjaERpZFJlY2VpdmVUaXRsZSh7IHRpdGxlLCBUZXh0RGlyZWN0aW9uOjpM
VFIgfSk7CiAgICAgfQogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyMzQ1MTQpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxOC0wOC0wNiAgQWxleCBDaHJpc3RlbnNlbiAg
PGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFVzZSBhIDEtYnl0ZSBlbnVtIGNs
YXNzIGZvciBUZXh0RGlyZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xODgzNTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1BvcHVwTWVudU1hYy5tbToKKyAgICAgICAg
KFBvcHVwTWVudU1hYzo6cG9wdWxhdGUpOgorICAgICAgICAoUG9wdXBNZW51TWFjOjpzaG93KToK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAg
ICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0aW9uVG9Db21taXR0ZWRGb3JOZXdQYWdl
KToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBf
ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGU6XSk6CisKIDIwMTgtMDgtMDEgIE5hbiBXYW5nICA8bl93
YW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBBWDogQU9NOiBBZGQgQVJJQSBJREwgQXR0cmlidXRl
IFJlZmxlY3Rpb24KSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1BvcHVwTWVudU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9Qb3B1cE1lbnVNYWMubW0JKHJldmlzaW9uIDIzNDUxNCkKKysrIFNvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1BvcHVwTWVudU1hYy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNjcsNyArNjcsNyBAQCB2b2lkIFBvcHVwTWVudU1hYzo6cG9wdWxhdGUoKQog
ICAgICAgICBbbV9wb3B1cCBhZGRJdGVtV2l0aFRpdGxlOkAiIl07CiAKICAgICBUZXh0RGlyZWN0
aW9uIG1lbnVUZXh0RGlyZWN0aW9uID0gbV9jbGllbnQtPm1lbnVTdHlsZSgpLnRleHREaXJlY3Rp
b24oKTsKLSAgICBbbV9wb3B1cCBzZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uOm1lbnVU
ZXh0RGlyZWN0aW9uID09IExUUiA/IE5TVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbkxlZnRU
b1JpZ2h0IDogTlNVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uUmlnaHRUb0xlZnRdOworICAg
IFttX3BvcHVwIHNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246bWVudVRleHREaXJlY3Rp
b24gPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gTlNVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9u
TGVmdFRvUmlnaHQgOiBOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25SaWdodFRvTGVmdF07
CiAKICAgICBBU1NFUlQobV9jbGllbnQpOwogICAgIGludCBzaXplID0gbV9jbGllbnQtPmxpc3RT
aXplKCk7CkBAIC05MCw4ICs5MCw4IEBAIHZvaWQgUG9wdXBNZW51TWFjOjpwb3B1bGF0ZSgpCiAg
ICAgICAgIH0KIAogICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlUGFyYWdyYXBoU3R5bGU+IHBh
cmFncmFwaFN0eWxlID0gYWRvcHROUyhbW05TUGFyYWdyYXBoU3R5bGUgZGVmYXVsdFBhcmFncmFw
aFN0eWxlXSBtdXRhYmxlQ29weV0pOwotICAgICAgICBbcGFyYWdyYXBoU3R5bGUgc2V0QWxpZ25t
ZW50Om1lbnVUZXh0RGlyZWN0aW9uID09IExUUiA/IE5TVGV4dEFsaWdubWVudExlZnQgOiBOU1Rl
eHRBbGlnbm1lbnRSaWdodF07Ci0gICAgICAgIE5TV3JpdGluZ0RpcmVjdGlvbiB3cml0aW5nRGly
ZWN0aW9uID0gc3R5bGUudGV4dERpcmVjdGlvbigpID09IExUUiA/IE5TV3JpdGluZ0RpcmVjdGlv
bkxlZnRUb1JpZ2h0IDogTlNXcml0aW5nRGlyZWN0aW9uUmlnaHRUb0xlZnQ7CisgICAgICAgIFtw
YXJhZ3JhcGhTdHlsZSBzZXRBbGlnbm1lbnQ6bWVudVRleHREaXJlY3Rpb24gPT0gVGV4dERpcmVj
dGlvbjo6TFRSID8gTlNUZXh0QWxpZ25tZW50TGVmdCA6IE5TVGV4dEFsaWdubWVudFJpZ2h0XTsK
KyAgICAgICAgTlNXcml0aW5nRGlyZWN0aW9uIHdyaXRpbmdEaXJlY3Rpb24gPSBzdHlsZS50ZXh0
RGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gTlNXcml0aW5nRGlyZWN0aW9uTGVm
dFRvUmlnaHQgOiBOU1dyaXRpbmdEaXJlY3Rpb25SaWdodFRvTGVmdDsKICAgICAgICAgW3BhcmFn
cmFwaFN0eWxlIHNldEJhc2VXcml0aW5nRGlyZWN0aW9uOndyaXRpbmdEaXJlY3Rpb25dOwogICAg
ICAgICBpZiAoc3R5bGUuaGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlKCkpIHsKICAgICAgICAgICAg
IFJldGFpblB0cjxOU051bWJlcj4gd3JpdGluZ0RpcmVjdGlvblZhbHVlID0gYWRvcHROUyhbW05T
TnVtYmVyIGFsbG9jXSBpbml0V2l0aEludGVnZXI6d3JpdGluZ0RpcmVjdGlvbiArIE5TV3JpdGlu
Z0RpcmVjdGlvbk92ZXJyaWRlXSk7CkBAIC0xNDYsMTAgKzE0NiwxMCBAQCB2b2lkIFBvcHVwTWVu
dU1hYzo6c2hvdyhjb25zdCBJbnRSZWN0JiByCiAKICAgICBbbV9wb3B1cCBhdHRhY2hQb3BVcFdp
dGhGcmFtZTpyIGluVmlldzp2aWV3XTsKICAgICBbbV9wb3B1cCBzZWxlY3RJdGVtQXRJbmRleDpp
bmRleF07Ci0gICAgW21fcG9wdXAgc2V0VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbjp0ZXh0
RGlyZWN0aW9uID09IExUUiA/IE5TVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbkxlZnRUb1Jp
Z2h0IDogTlNVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uUmlnaHRUb0xlZnRdOworICAgIFtt
X3BvcHVwIHNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246dGV4dERpcmVjdGlvbiA9PSBU
ZXh0RGlyZWN0aW9uOjpMVFIgPyBOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25MZWZ0VG9S
aWdodCA6IE5TVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvblJpZ2h0VG9MZWZ0XTsKIAogICAg
IE5TTWVudSAqbWVudSA9IFttX3BvcHVwIG1lbnVdOwotICAgIFttZW51IHNldFVzZXJJbnRlcmZh
Y2VMYXlvdXREaXJlY3Rpb246dGV4dERpcmVjdGlvbiA9PSBMVFIgPyBOU1VzZXJJbnRlcmZhY2VM
YXlvdXREaXJlY3Rpb25MZWZ0VG9SaWdodCA6IE5TVXNlckludGVyZmFjZUxheW91dERpcmVjdGlv
blJpZ2h0VG9MZWZ0XTsKKyAgICBbbWVudSBzZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9u
OnRleHREaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gTlNVc2VySW50ZXJmYWNlTGF5
b3V0RGlyZWN0aW9uTGVmdFRvUmlnaHQgOiBOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25S
aWdodFRvTGVmdF07CiAKICAgICBOU1BvaW50IGxvY2F0aW9uOwogICAgIENURm9udFJlZiBmb250
ID0gbV9jbGllbnQtPm1lbnVTdHlsZSgpLmZvbnQoKS5wcmltYXJ5Rm9udCgpLmdldENURm9udCgp
OwpAQCAtMTY4LDcgKzE2OCw3IEBAIHZvaWQgUG9wdXBNZW51TWFjOjpzaG93KGNvbnN0IEludFJl
Y3QmIHIKICAgICAgICAgdmVydE9mZnNldCArPSBDVEZvbnRHZXREZXNjZW50KGZvbnQpIC0gQ1RG
b250R2V0RGVzY2VudChkZWZhdWx0Rm9udC5nZXQoKSk7CiAgICAgICAgIHZlcnRPZmZzZXQgPSBm
bWluZihOU0hlaWdodChyKSwgdmVydE9mZnNldCk7CiAjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDEyMDAKLSAgICAgICAgaWYgKHRleHREaXJlY3Rpb24gPT0gTFRSKQor
ICAgICAgICBpZiAodGV4dERpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpCiAgICAgICAg
ICAgICBsb2NhdGlvbiA9IE5TTWFrZVBvaW50KE5TTWluWChyKSArIHBvcE92ZXJIb3Jpem9udGFs
QWRqdXN0LCBOU01heFkocikgLSB2ZXJ0T2Zmc2V0KTsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgbG9jYXRpb24gPSBOU01ha2VQb2ludChOU01heFgocikgLSBwb3BPdmVySG9yaXpvbnRhbEFk
anVzdCwgTlNNYXhZKHIpIC0gdmVydE9mZnNldCk7CkBAIC0xNzcsNyArMTc3LDcgQEAgdm9pZCBQ
b3B1cE1lbnVNYWM6OnNob3coY29uc3QgSW50UmVjdCYgcgogI2VuZGlmCiAgICAgfSBlbHNlIHsK
ICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIwMAotICAgICAgICBp
ZiAodGV4dERpcmVjdGlvbiA9PSBMVFIpCisgICAgICAgIGlmICh0ZXh0RGlyZWN0aW9uID09IFRl
eHREaXJlY3Rpb246OkxUUikKICAgICAgICAgICAgIGxvY2F0aW9uID0gTlNNYWtlUG9pbnQoTlNN
aW5YKHIpICsgcG9wVW5kZXJIb3Jpem9udGFsQWRqdXN0LCBOU01heFkocikgKyBwb3BVbmRlclZl
cnRpY2FsQWRqdXN0KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbG9jYXRpb24gPSBOU01h
a2VQb2ludChOU01heFgocikgLSBwb3BVbmRlckhvcml6b250YWxBZGp1c3QsIE5TTWF4WShyKSAr
IHBvcFVuZGVyVmVydGljYWxBZGp1c3QpOwpAQCAtMTkzLDcgKzE5Myw3IEBAIHZvaWQgUG9wdXBN
ZW51TWFjOjpzaG93KGNvbnN0IEludFJlY3QmIHIKICAgICBSZWY8UG9wdXBNZW51TWFjPiBwcm90
ZWN0b3IoKnRoaXMpOwogCiAgICAgUmV0YWluUHRyPE5TVmlldz4gZHVtbXlWaWV3ID0gYWRvcHRO
UyhbW05TVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpyXSk7Ci0gICAgW2R1bW15Vmlldy5nZXQo
KSBzZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uOnRleHREaXJlY3Rpb24gPT0gTFRSID8g
TlNVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uTGVmdFRvUmlnaHQgOiBOU1VzZXJJbnRlcmZh
Y2VMYXlvdXREaXJlY3Rpb25SaWdodFRvTGVmdF07CisgICAgW2R1bW15Vmlldy5nZXQoKSBzZXRV
c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uOnRleHREaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlv
bjo6TFRSID8gTlNVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uTGVmdFRvUmlnaHQgOiBOU1Vz
ZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25SaWdodFRvTGVmdF07CiAgICAgW3ZpZXcgYWRkU3Vi
dmlldzpkdW1teVZpZXcuZ2V0KCldOwogICAgIGxvY2F0aW9uID0gW2R1bW15VmlldyBjb252ZXJ0
UG9pbnQ6bG9jYXRpb24gZnJvbVZpZXc6dmlld107CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5tbQkocmV2aXNpb24gMjM0NTE0KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHdvcmtpbmcgY29weSkK
QEAgLTE0OTQsNyArMTQ5NCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5zaXRp
b25Ub0MKICAgICAvLyBsaWtlIHRoZSBvbmVzIHRoYXQgU2FmYXJpIHVzZXMgZm9yIGJvb2ttYXJr
cyBpdCBpcyB0aGUgb25seSB3YXkgdGhlIERvY3VtZW50TG9hZGVyCiAgICAgLy8gd2lsbCBnZXQg
dGhlIHByb3BlciB0aXRsZS4KICAgICBpZiAoYXV0byogZG9jdW1lbnRMb2FkZXIgPSBbZGF0YVNv
dXJjZSBfZG9jdW1lbnRMb2FkZXJdKQotICAgICAgICBkb2N1bWVudExvYWRlci0+c2V0VGl0bGUo
eyBbZGF0YVNvdXJjZSBwYWdlVGl0bGVdLCBMVFIgfSk7CisgICAgICAgIGRvY3VtZW50TG9hZGVy
LT5zZXRUaXRsZSh7IFtkYXRhU291cmNlIHBhZ2VUaXRsZV0sIFRleHREaXJlY3Rpb246OkxUUiB9
KTsKIAogICAgIGlmIChhdXRvKiBvd25lckVsZW1lbnQgPSBjb3JlRnJhbWUtPm93bmVyRWxlbWVu
dCgpKQogICAgICAgICBjb3JlRnJhbWUtPnZpZXcoKS0+c2V0Q2FuSGF2ZVNjcm9sbGJhcnMob3du
ZXJFbGVtZW50LT5zY3JvbGxpbmdNb2RlKCkgIT0gU2Nyb2xsYmFyQWx3YXlzT2ZmKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQkocmV2aXNpb24g
MjM0NTE0KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQko
d29ya2luZyBjb3B5KQpAQCAtMjMzNyw3ICsyMzM3LDcgQEAgLSAodm9pZClfZGlzcGF0Y2hEaWRS
ZWNlaXZlVGl0bGU6KE5TU3RyaQogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBfcHJpdmF0ZS0+Y29y
ZUZyYW1lOwogICAgIGlmICghY29yZUZyYW1lKQogICAgICAgICByZXR1cm47Ci0gICAgY29yZUZy
YW1lLT5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERpZFJlY2VpdmVUaXRsZSh7IHRpdGxlLCBM
VFIgfSk7CisgICAgY29yZUZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERpZFJlY2Vp
dmVUaXRsZSh7IHRpdGxlLCBUZXh0RGlyZWN0aW9uOjpMVFIgfSk7CiB9CiAKICNlbmRpZiAvLyBQ
TEFURk9STShJT1MpCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
Q2hhbmdlTG9nCShyZXZpc2lvbiAyMzQ2MTQpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxOC0wOC0wNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFj
aHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFVzZSBhIDEtYnl0ZSBlbnVtIGNsYXNz
IGZvciBUZXh0RGlyZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xODgzNTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db21wbGV4VGV4dENvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU3RyaW5nV2l0aERpcmVjdGlvbi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1Qp
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29tbWFuZEJhY2tG
b3J3YXJkLm1tOgorICAgICAgICAoVEVTVF9GKToKKwogMjAxOC0wOC0wNiAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBDYXJldCBkaXNhcHBl
YXJzIGFmdGVyIHJlc2lnbmluZyBhbmQgYmVjb21pbmcgZmlyc3QgcmVzcG9uZGVyIGlmIGFjdGl2
ZSBmb2N1cyBzdGF0ZSBpcyByZXRhaW5lZApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAJKHJl
dmlzaW9uIDIzNDUxNCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db21w
bGV4VGV4dENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTIsNyArMzUyLDcgQEAg
VEVTVF9GKENvbXBsZXhUZXh0Q29udHJvbGxlclRlc3QsIFRvdGFsVwogCiAgICAgVUNoYXIgY2hh
cmFjdGVyc1tdID0geyAweDY0NCwgJyAnLCAweDY0NCwgJyAnLCAweDY0NCB9OwogICAgIHNpemVf
dCBjaGFyYWN0ZXJzTGVuZ3RoID0gV1RGX0FSUkFZX0xFTkdUSChjaGFyYWN0ZXJzKTsKLSAgICBU
ZXh0UnVuIHRleHRSdW4oU3RyaW5nVmlldyhjaGFyYWN0ZXJzLCBjaGFyYWN0ZXJzTGVuZ3RoKSwg
MCwgMTQsIERlZmF1bHRFeHBhbnNpb24sIFJUTCk7CisgICAgVGV4dFJ1biB0ZXh0UnVuKFN0cmlu
Z1ZpZXcoY2hhcmFjdGVycywgY2hhcmFjdGVyc0xlbmd0aCksIDAsIDE0LCBEZWZhdWx0RXhwYW5z
aW9uLCBUZXh0RGlyZWN0aW9uOjpSVEwpOwogICAgIGF1dG8gcnVuID0gQ29tcGxleFRleHRDb250
cm9sbGVyOjpDb21wbGV4VGV4dFJ1bjo6Y3JlYXRlKGFkdmFuY2VzLCBvcmlnaW5zLCB7IDUsIDYs
IDcsIDgsIDkgfSwgeyA0LCAzLCAyLCAxLCAwIH0sIGluaXRpYWxBZHZhbmNlLCBmb250LnByaW1h
cnlGb250KCksIGNoYXJhY3RlcnMsIDAsIGNoYXJhY3RlcnNMZW5ndGgsIDAsIDUsIGZhbHNlKTsK
ICAgICBWZWN0b3I8UmVmPENvbXBsZXhUZXh0Q29udHJvbGxlcjo6Q29tcGxleFRleHRSdW4+PiBy
dW5zOwogICAgIHJ1bnMuYXBwZW5kKFdURk1vdmUocnVuKSk7CkluZGV4OiBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYkNvcmUvU3RyaW5nV2l0aERpcmVjdGlvbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1N0cmluZ1dpdGhEaXJlY3Rpb24u
Y3BwCShyZXZpc2lvbiAyMzQ1MTQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvU3RyaW5nV2l0aERpcmVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDQ5ICszMSw2
NiBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAorbmFtZXNwYWNlIFdlYkNvcmUgewor
CitzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBvcywgY29uc3QgVGV4dERp
cmVjdGlvbiYgZGlyZWN0aW9uKQoreworICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7CisgICAgY2Fz
ZSBUZXh0RGlyZWN0aW9uOjpMVFI6CisgICAgICAgIG9zIDw8ICJUZXh0RGlyZWN0aW9uOjpMVFIi
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFRleHREaXJlY3Rpb246OlJUTDoKKyAgICAgICAg
b3MgPDwgIlRleHREaXJlY3Rpb246OlJUTCI7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBy
ZXR1cm4gb3M7Cit9CisKK30KKwogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBURVNUKFN0
cmluZ1dpdGhEaXJlY3Rpb24sIFRydW5jYXRlQXRFbmRXaXRoTGVmdFRvUmlnaHRTdHJpbmcpCiB7
Ci0gICAgU3RyaW5nV2l0aERpcmVjdGlvbiBzdHJpbmcgeyAiQ2FwcHVjY2lubyIsIExUUiB9Owor
ICAgIFN0cmluZ1dpdGhEaXJlY3Rpb24gc3RyaW5nIHsgIkNhcHB1Y2Npbm8iLCBUZXh0RGlyZWN0
aW9uOjpMVFIgfTsKICAgICBTdHJpbmdXaXRoRGlyZWN0aW9uIHJlc3VsdDsKIAogICAgIHJlc3Vs
dCA9IHRydW5jYXRlRnJvbUVuZChzdHJpbmcsIDApOwotICAgIEVYUEVDVF9FUShMVFIsIHJlc3Vs
dC5kaXJlY3Rpb24pOworICAgIEVYUEVDVF9FUShUZXh0RGlyZWN0aW9uOjpMVFIsIHJlc3VsdC5k
aXJlY3Rpb24pOwogICAgIEVYUEVDVF9FUSgiIiwgcmVzdWx0LnN0cmluZyk7CiAKICAgICByZXN1
bHQgPSB0cnVuY2F0ZUZyb21FbmQoc3RyaW5nLCAxKTsKLSAgICBFWFBFQ1RfRVEoTFRSLCByZXN1
bHQuZGlyZWN0aW9uKTsKKyAgICBFWFBFQ1RfRVEoVGV4dERpcmVjdGlvbjo6TFRSLCByZXN1bHQu
ZGlyZWN0aW9uKTsKICAgICBFWFBFQ1RfRVEoIkMiLCByZXN1bHQuc3RyaW5nKTsKIAogICAgIHJl
c3VsdCA9IHRydW5jYXRlRnJvbUVuZChzdHJpbmcsIDIpOwotICAgIEVYUEVDVF9FUShMVFIsIHJl
c3VsdC5kaXJlY3Rpb24pOworICAgIEVYUEVDVF9FUShUZXh0RGlyZWN0aW9uOjpMVFIsIHJlc3Vs
dC5kaXJlY3Rpb24pOwogICAgIEVYUEVDVF9FUSgiQ2EiLCByZXN1bHQuc3RyaW5nKTsKIAogICAg
IHJlc3VsdCA9IHRydW5jYXRlRnJvbUVuZChzdHJpbmcsIDEwMDApOwotICAgIEVYUEVDVF9FUShM
VFIsIHJlc3VsdC5kaXJlY3Rpb24pOworICAgIEVYUEVDVF9FUShUZXh0RGlyZWN0aW9uOjpMVFIs
IHJlc3VsdC5kaXJlY3Rpb24pOwogICAgIEVYUEVDVF9FUSgiQ2FwcHVjY2lubyIsIHJlc3VsdC5z
dHJpbmcpOwogfQogCiBURVNUKFN0cmluZ1dpdGhEaXJlY3Rpb24sIFRydW5jYXRlQXRFbmRXaXRo
UmlnaHRUb0xlZnRTdHJpbmcpCiB7Ci0gICAgU3RyaW5nV2l0aERpcmVjdGlvbiBzdHJpbmcgeyBT
dHJpbmc6OmZyb21VVEY4KCLXp9a416TWvNeV1rzXpta0J9eZ16DXlda5IiksIFJUTCB9OworICAg
IFN0cmluZ1dpdGhEaXJlY3Rpb24gc3RyaW5nIHsgU3RyaW5nOjpmcm9tVVRGOCgi16fWuNek1rzX
lda816bWtCfXmdeg15XWuSIpLCBUZXh0RGlyZWN0aW9uOjpSVEwgfTsKICAgICBTdHJpbmdXaXRo
RGlyZWN0aW9uIHJlc3VsdDsKIAogICAgIHJlc3VsdCA9IHRydW5jYXRlRnJvbUVuZChzdHJpbmcs
IDApOwotICAgIEVYUEVDVF9FUShSVEwsIHJlc3VsdC5kaXJlY3Rpb24pOworICAgIEVYUEVDVF9F
UShUZXh0RGlyZWN0aW9uOjpSVEwsIHJlc3VsdC5kaXJlY3Rpb24pOwogICAgIEVYUEVDVF9FUSgi
IiwgcmVzdWx0LnN0cmluZyk7CiAKICAgICByZXN1bHQgPSB0cnVuY2F0ZUZyb21FbmQoc3RyaW5n
LCAxKTsKLSAgICBFWFBFQ1RfRVEoUlRMLCByZXN1bHQuZGlyZWN0aW9uKTsKKyAgICBFWFBFQ1Rf
RVEoVGV4dERpcmVjdGlvbjo6UlRMLCByZXN1bHQuZGlyZWN0aW9uKTsKICAgICBFWFBFQ1RfRVEo
U3RyaW5nOjpmcm9tVVRGOCgi16ciKSwgcmVzdWx0LnN0cmluZyk7CiAKICAgICByZXN1bHQgPSB0
cnVuY2F0ZUZyb21FbmQoc3RyaW5nLCAyKTsKLSAgICBFWFBFQ1RfRVEoUlRMLCByZXN1bHQuZGly
ZWN0aW9uKTsKKyAgICBFWFBFQ1RfRVEoVGV4dERpcmVjdGlvbjo6UlRMLCByZXN1bHQuZGlyZWN0
aW9uKTsKICAgICBFWFBFQ1RfRVEoU3RyaW5nOjpmcm9tVVRGOCgi16fWuCIpLCByZXN1bHQuc3Ry
aW5nKTsKIAogICAgIHJlc3VsdCA9IHRydW5jYXRlRnJvbUVuZChzdHJpbmcsIDEwMDApOwotICAg
IEVYUEVDVF9FUShSVEwsIHJlc3VsdC5kaXJlY3Rpb24pOworICAgIEVYUEVDVF9FUShUZXh0RGly
ZWN0aW9uOjpSVEwsIHJlc3VsdC5kaXJlY3Rpb24pOwogICAgIEVYUEVDVF9FUShTdHJpbmc6OmZy
b21VVEY4KCLXp9a416TWvNeV1rzXpta0J9eZ16DXlda5IiksIHJlc3VsdC5zdHJpbmcpOwogfQog
CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbW1hbmRCYWNr
Rm9yd2FyZC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0NvbW1hbmRCYWNrRm9yd2FyZC5tbQkocmV2aXNpb24gMjM0NTE0KQorKysgVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db21tYW5kQmFja0ZvcndhcmQubW0JKHdv
cmtpbmcgY29weSkKQEAgLTE3OCw3ICsxNzgsNyBAQCBwdWJsaWM6CiAgICAgfQogfTsKIAotVEVT
VF9GKFdlYktpdDJfQ29tbWFuZEJhY2tGb3J3YXJkVGVzdFdLV2ViVmlldywgTFRSKQorVEVTVF9G
KFdlYktpdDJfQ29tbWFuZEJhY2tGb3J3YXJkVGVzdFdLV2ViVmlldywgVGV4dERpcmVjdGlvbjo6
TFRSKQogewogICAgIEVYUEVDVF9FUShOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25MZWZ0
VG9SaWdodCwgW3dlYlZpZXcgdXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbl0pOwogICAgIApA
QCAtMjIzLDcgKzIyMyw3IEBAIFRFU1RfRihXZWJLaXQyX0NvbW1hbmRCYWNrRm9yd2FyZFRlc3RX
S1cKIAogI2VuZGlmCiAKLVRFU1RfRihXZWJLaXQyX0NvbW1hbmRCYWNrRm9yd2FyZFRlc3RXS1Zp
ZXcsIExUUikKK1RFU1RfRihXZWJLaXQyX0NvbW1hbmRCYWNrRm9yd2FyZFRlc3RXS1ZpZXcsIFRl
eHREaXJlY3Rpb246OkxUUikKIHsKICAgICBFWFBFQ1RfRVEoTlNVc2VySW50ZXJmYWNlTGF5b3V0
RGlyZWN0aW9uTGVmdFRvUmlnaHQsIFt3ZWJWaWV3IHVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rp
b25dKTsKICAgICAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>346650</attachid>
            <date>2018-08-06 13:35:31 -0700</date>
            <delta_ts>2018-08-06 17:58:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188350-20180806133530.patch</filename>
            <type>text/plain</type>
            <size>118470</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNDYxNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2NCBAQAorMjAxOC0wOC0wNiAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFVzZSBhIDEt
Ynl0ZSBlbnVtIGNsYXNzIGZvciBUZXh0RGlyZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODgzNTAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb24uaDoKKyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBUZXh0RGlyZWN0aW9u
IGNvbnN0KToKKyAgICAgICAgKiBjc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6Om1hdGNoQWxsUnVsZXMpOgorICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dXBkYXRl
VGl0bGVGcm9tVGl0bGVFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRU
aXRsZSk6CisgICAgICAgICogZG9tL1Bvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBv
c2l0aW9uOjpwcmltYXJ5RGlyZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBkb20vUmFuZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2U6OmNvbGxlY3RTZWxlY3Rpb25SZWN0c1dpdGhvdXRV
bmlvbkludGVyaW9yTGluZXMgY29uc3QpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKToKKyAgICAgICAg
KiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmJhc2VXcml0
aW5nRGlyZWN0aW9uRm9yU2VsZWN0aW9uU3RhcnQgY29uc3QpOgorICAgICAgICAqIGVkaXRpbmcv
RnJhbWVTZWxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246Ondp
bGxCZU1vZGlmaWVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjptb2RpZnlF
eHRlbmRpbmdSaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5
RXh0ZW5kaW5nRm9yd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6bW9k
aWZ5TW92aW5nUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246Om1vZGlm
eUV4dGVuZGluZ0xlZnQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246Om1vZGlm
eUV4dGVuZGluZ0JhY2t3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpt
b2RpZnlNb3ZpbmdMZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjp0ZXh0
U2VsZWN0aW9uSW50ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjptb2Rp
ZnkpOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlZpc2libGVQb3NpdGlvbjo6bGVmdFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uOjpyaWdodFZpc3VhbGx5RGlz
dGluY3RDYW5kaWRhdGUgY29uc3QpOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVVuaXRzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnZpc3VhbFdvcmRQb3NpdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpsZWZ0V29yZFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnJpZ2h0V29yZFBvc2l0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmxlZnRCb3VuZGFyeU9mTGluZSk6CisgICAgICAgIChX
ZWJDb3JlOjpyaWdodEJvdW5kYXJ5T2ZMaW5lKToKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpkaXJlY3Rpb25hbGl0eUlmaGFz
RGlyQXV0b0F0dHJpYnV0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6
ZGlyZWN0aW9uYWxpdHkgY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpzZXR1cERhdGVUaW1lQ2hv
b3NlclBhcmFtZXRlcnMpOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmRp
cmVjdGlvbkZvckZvcm1EYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9y
bUNvbnRyb2xFbGVtZW50OjphZGp1c3RJbm5lclRleHRTdHlsZSBjb25zdCk6CisgICAgICAgICog
aHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUaXRsZUVs
ZW1lbnQ6OmNvbXB1dGVkVGV4dFdpdGhEaXJlY3Rpb24pOgorICAgICAgICAqIGh0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OnRvVGV4dERpcmVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRpcmVjdGlvbiBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnRleHRPZmZzZXQpOgorICAgICAg
ICAqIGh0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTbGlkZXJDb250YWluZXI6OmxheW91dCk6CisgICAgICAgICogaHRtbC9zaGFkb3cv
VGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb250
cm9sSW5uZXJFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUpOgorICAgICAgICAqIHBhZ2UvQ2hy
b21lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6c2V0VG9vbFRpcCk6CisgICAgICAg
ICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFnaW5hdGlvbk1vZGVG
b3JSZW5kZXJTdHlsZSk6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy55YW1sOgorICAgICAgICAq
IHBsYXRmb3JtL1JlY3RFZGdlcy5oOgorICAgICAgICAoV2ViQ29yZTo6UmVjdEVkZ2VzOjpzdGFy
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZWN0RWRnZXM6OmVuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZWN0RWRnZXM6OnN0YXJ0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlY3RFZGdlczo6
ZW5kIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlY3RFZGdlczo6c2V0U3RhcnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVjdEVkZ2VzOjpzZXRFbmQpOgorICAgICAgICAqIHBsYXRmb3JtL1Vz
ZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGxleFRl
eHRDb250cm9sbGVyOjpjb21wdXRlRXhwYW5zaW9uT3Bwb3J0dW5pdHkpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRD
YXNjYWRlOjpleHBhbnNpb25PcHBvcnR1bml0eUNvdW50SW50ZXJuYWwpOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udENhc2NhZGU6OmxlYWRpbmdFeHBhbnNpb25PcHBvcnR1bml0eSk6CisgICAgICAg
IChXZWJDb3JlOjpGb250Q2FzY2FkZTo6dHJhaWxpbmdFeHBhbnNpb25PcHBvcnR1bml0eSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0JpZGlUZXh0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmg6CisgICAgICAgIChXZWJDb3JlOjpUZXh0UnVuOjpUZXh0
UnVuKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRSdW46OnJ0bCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0UnVuOjpsdHIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFJ1bjo6
c2V0RGlyZWN0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9y
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldpZHRoSXRlcmF0b3I6OldpZHRoSXRlcmF0b3IpOgor
ICAgICAgICAqIHBsYXRmb3JtL2lvcy9TZWxlY3Rpb25SZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNlbGVjdGlvblJlY3Q6OlNlbGVjdGlvblJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL3Rl
eHQvQmlkaVJlc29sdmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpCaWRpU3RhdHVzOjpCaWRpU3Rh
dHVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1N0cmluZ1dpdGhEaXJlY3Rpb24uaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS90ZXh0L1dyaXRpbmdNb2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpp
c0xlZnRUb1JpZ2h0RGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmlzVmVydGljYWxXcml0
aW5nTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjppc0ZsaXBwZWRXcml0aW5nTW9kZSk6CisgICAg
ICAgIChXZWJDb3JlOjptYXBMb2dpY2FsU2lkZVRvUGh5c2ljYWxTaWRlKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVz
dWx0OjpzcGVsbGluZ1Rvb2xUaXAgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJl
c3VsdDo6dGl0bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6aW5u
ZXJUZXh0SWZUcnVuY2F0ZWQgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVCb3gu
aDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUJveDo6ZGlyZWN0aW9uIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OklubGluZUJveDo6aXNMZWZ0VG9SaWdodERpcmVjdGlvbiBjb25zdCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5saW5lRmxvd0JveDo6cGFpbnRGaWxsTGF5ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9Jbmxp
bmVJdGVyYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6ZW1iZWRDaGFyRnJvbURpcmVjdGlvbik6
CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5saW5lVGV4dEJveDo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6bWlycm9yUlRMU2Vn
bWVudCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRldGVybWlu
ZURpcmVjdGlvbmFsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6dGV4
dEFsaWdubWVudEZvckxpbmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tG
bG93Ojp1cGRhdGVMb2dpY2FsV2lkdGhGb3JBbGlnbm1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQmxvY2tGbG93OjpoYW5kbGVUcmFpbGluZ1NwYWNlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCbG9ja0Zsb3c6OmxheW91dFJ1bnNBbmRGbG9hdHNJblJhbmdlKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVJbmxp
bmVTdGF0aWNEaXN0YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVQ
b3NpdGlvbmVkTG9naWNhbFdpZHRoVXNpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aFJlcGxhY2VkIGNvbnN0KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6YXBwbHlMaW5lQ2xhbXAp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGcmFnbWVudGVkRmxvdy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJGcmFnbWVudGVkRmxvdzo6dXBkYXRlTG9naWNhbFdpZHRoKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckZyYWdtZW50ZWRGbG93Ojp1cGRhdGVGcmFnbWVudHNGcmFn
bWVudGVkRmxvd1BvcnRpb25SZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllck1vZGVsT2JqZWN0
OjpzaG91bGRQbGFjZUJsb2NrRGlyZWN0aW9uU2Nyb2xsYmFyT25MZWZ0IGNvbnN0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTWFycXVlZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJNYXJxdWVlOjpkaXJlY3Rpb24gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJN
ZW51TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZW51TGlzdDo6YWRqdXN0SW5u
ZXJTdHlsZSk6CisgICAgICAgIChSZW5kZXJNZW51TGlzdDo6Y2xpZW50UGFkZGluZ0xlZnQgY29u
c3QpOgorICAgICAgICAoUmVuZGVyTWVudUxpc3Q6OmNsaWVudFBhZGRpbmdSaWdodCBjb25zdCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWVJT1M6OnBvcHVwSW50ZXJuYWxQYWRkaW5nQm94IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludE1lbnVMaXN0QnV0dG9uRGVjb3JhdGlv
bnMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludE1lbnVMaXN0QnV0dG9uRGVjb3JhdGlvbnMpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBvcHVwSW50ZXJuYWxQYWRkaW5nQm94
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpzZXRQb3B1cEJ1dHRv
bkNlbGxTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRTZWFy
Y2hGaWVsZENhbmNlbEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6
cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24pOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1M
QmxvY2s6Om1pcnJvcklmTmVlZGVkIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhN
TE9wZXJhdG9yOjpsYXlvdXRCbG9jayk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpSZW5kZXJTdHlsZSk6
CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTdHlsZTo6aXNMZWZ0VG9SaWdodERpcmVjdGlvbiBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbERpcmVjdGlvbik6CisgICAgICAgICogdGVz
dGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsU2V0
dGluZ3M6OnN5c3RlbUxheW91dERpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5h
bFNldHRpbmdzOjpzZXRTeXN0ZW1MYXlvdXREaXJlY3Rpb24pOgorICAgICAgICAqIHRlc3Rpbmcv
SW50ZXJuYWxzLmg6CisKIDIwMTgtMDgtMDYgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBs
ZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIzNDU2OS4KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uLmgJKHJldmlzaW9uIDIzNDUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBAQCBw
dWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiB0YWcoKSBjb25zdCB7IHJldHVybiBtX3RhZzsgfQog
ICAgIGNvbnN0IFVSTCYgaWNvbigpIGNvbnN0IHsgcmV0dXJuIG1faWNvbjsgfQogCi0gICAgVGV4
dERpcmVjdGlvbiBkaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2RpcmVjdGlvbiA9PSBEaXJl
Y3Rpb246OlJ0bCA/IFJUTCA6IExUUjsgfQorICAgIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9kaXJlY3Rpb24gPT0gRGlyZWN0aW9uOjpSdGwgPyBUZXh0RGlyZWN0
aW9uOjpSVEwgOiBUZXh0RGlyZWN0aW9uOjpMVFI7IH0KIAogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgZGlzcGF0Y2hDbGlja0V2ZW50KCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaXNwYXRj
aENsb3NlRXZlbnQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dl
YktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAJ
KHJldmlzaW9uIDIzNDUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dl
YktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzM1LDcg
KzMzNSw3IEBAIHN0YXRpYyBpbnQgb2Zmc2V0QWRqdXN0bWVudEZvckxpc3RJdGVtKGMKICAgICAv
LyBXZSBuZWVkIHRvIGFkanVzdCB0aGUgb2Zmc2V0cyBmb3IgdGhlIGxpc3QgaXRlbSBtYXJrZXIg
aW4KICAgICAvLyBMZWZ0LVRvLVJpZ2h0IHRleHQsIHNpbmNlIHdlIGV4cG9zZSBpdCB0b2dldGhl
ciB3aXRoIHRoZSB0ZXh0LgogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBvYmplY3QtPnJl
bmRlcmVyKCk7Ci0gICAgaWYgKGlzPFJlbmRlckxpc3RJdGVtPihyZW5kZXJlcikgJiYgcmVuZGVy
ZXItPnN0eWxlKCkuZGlyZWN0aW9uKCkgPT0gTFRSKQorICAgIGlmIChpczxSZW5kZXJMaXN0SXRl
bT4ocmVuZGVyZXIpICYmIHJlbmRlcmVyLT5zdHlsZSgpLmRpcmVjdGlvbigpID09IFRleHREaXJl
Y3Rpb246OkxUUikKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlckxpc3RJdGVtPigqcmVu
ZGVyZXIpLm1hcmtlclRleHRXaXRoU3VmZml4KCkubGVuZ3RoKCk7CiAKICAgICByZXR1cm4gMDsK
QEAgLTQ2Miw3ICs0NjIsNyBAQCBzdGF0aWMgZ2NoYXIqIHdlYmtpdEFjY2Vzc2libGVUZXh0R2V0
VGV4CiAgICAgICAgIFJlbmRlck9iamVjdCogb2JqUmVuZGVyZXIgPSBjb3JlT2JqZWN0LT5yZW5k
ZXJlcigpOwogICAgICAgICBpZiAoaXM8UmVuZGVyTGlzdEl0ZW0+KG9ialJlbmRlcmVyKSkgewog
ICAgICAgICAgICAgU3RyaW5nIG1hcmtlclRleHQgPSBkb3duY2FzdDxSZW5kZXJMaXN0SXRlbT4o
Km9ialJlbmRlcmVyKS5tYXJrZXJUZXh0V2l0aFN1ZmZpeCgpOwotICAgICAgICAgICAgcmV0ID0g
b2JqUmVuZGVyZXItPnN0eWxlKCkuZGlyZWN0aW9uKCkgPT0gTFRSID8gbWFya2VyVGV4dCArIHJl
dCA6IHJldCArIG1hcmtlclRleHQ7CisgICAgICAgICAgICByZXQgPSBvYmpSZW5kZXJlci0+c3R5
bGUoKS5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBtYXJrZXJUZXh0ICsgcmV0
IDogcmV0ICsgbWFya2VyVGV4dDsKICAgICAgICAgICAgIGlmIChlbmRPZmZzZXQgPT0gLTEpCiAg
ICAgICAgICAgICAgICAgYWN0dWFsRW5kT2Zmc2V0ID0gcmV0Lmxlbmd0aCgpICsgbWFya2VyVGV4
dC5sZW5ndGgoKTsKICAgICAgICAgfQpAQCAtOTA1LDExICs5MDUsMTEgQEAgc3RhdGljIGNoYXIq
IHdlYmtpdEFjY2Vzc2libGVUZXh0TGluZUZvcgogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIg
PSBjb3JlT2JqZWN0LT5yZW5kZXJlcigpOwogICAgIGlmIChyZW5kZXJlci0+aXNMaXN0SXRlbSgp
KSB7CiAgICAgICAgIC8vIEZvciBMZWZ0LXRvLVJpZ2h0LCB0aGUgbGlzdCBpdGVtIG1hcmtlciBp
cyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBleHBvc2VkIHRleHQuCi0gICAgICAgIGlmIChyZW5k
ZXJlci0+c3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBMVFIgJiYgaXNGaXJzdFZpc2libGVQb3NpdGlv
bkluTm9kZShzZWxlY3RlZExpbmUudmlzaWJsZVN0YXJ0KCksIG5vZGUpKQorICAgICAgICBpZiAo
cmVuZGVyZXItPnN0eWxlKCkuZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSICYmIGlz
Rmlyc3RWaXNpYmxlUG9zaXRpb25Jbk5vZGUoc2VsZWN0ZWRMaW5lLnZpc2libGVTdGFydCgpLCBu
b2RlKSkKICAgICAgICAgICAgICpzdGFydE9mZnNldCA9IDA7CiAKICAgICAgICAgLy8gRm9yIFJp
Z2h0LXRvLUxlZnQsIHRoZSBsaXN0IGl0ZW0gbWFya2VyIGlzIGF0IHRoZSBlbmQgb2YgdGhlIGV4
cG9zZWQgdGV4dC4KLSAgICAgICAgaWYgKHJlbmRlcmVyLT5zdHlsZSgpLmRpcmVjdGlvbigpID09
IFJUTCAmJiBpc0xhc3RWaXNpYmxlUG9zaXRpb25Jbk5vZGUoc2VsZWN0ZWRMaW5lLnZpc2libGVF
bmQoKSwgbm9kZSkpCisgICAgICAgIGlmIChyZW5kZXJlci0+c3R5bGUoKS5kaXJlY3Rpb24oKSA9
PSBUZXh0RGlyZWN0aW9uOjpSVEwgJiYgaXNMYXN0VmlzaWJsZVBvc2l0aW9uSW5Ob2RlKHNlbGVj
dGVkTGluZS52aXNpYmxlRW5kKCksIG5vZGUpKQogICAgICAgICAgICAgKmVuZE9mZnNldCA9IGFj
Y2Vzc2liaWxpdHlPYmplY3RMZW5ndGgoY29yZU9iamVjdCk7CiAgICAgfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgJKHJldmlzaW9u
IDIzNDUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxNTAsMTAgKzMxNTAsMTAgQEAgdGVtcGxhdGU8PiBpbmxp
bmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTUwogewogICAgIG1fcHJpbWl0aXZlVW5pdFR5cGUgPSBD
U1NfVkFMVUVfSUQ7CiAgICAgc3dpdGNoIChlKSB7Ci0gICAgY2FzZSBMVFI6CisgICAgY2FzZSBU
ZXh0RGlyZWN0aW9uOjpMVFI6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlTHRy
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFJUTDoKKyAgICBjYXNlIFRleHREaXJlY3Rpb246
OlJUTDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVSdGw7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KQEAgLTMxNjUsMTUgKzMxNjUsMTUgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NT
UHJpbWl0aXZlVmFsdWU6Om9wZQogCiAgICAgc3dpdGNoIChtX3ZhbHVlLnZhbHVlSUQpIHsKICAg
ICBjYXNlIENTU1ZhbHVlTHRyOgotICAgICAgICByZXR1cm4gTFRSOworICAgICAgICByZXR1cm4g
VGV4dERpcmVjdGlvbjo6TFRSOwogICAgIGNhc2UgQ1NTVmFsdWVSdGw6Ci0gICAgICAgIHJldHVy
biBSVEw7CisgICAgICAgIHJldHVybiBUZXh0RGlyZWN0aW9uOjpSVEw7CiAgICAgZGVmYXVsdDoK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
cmV0dXJuIExUUjsKKyAgICByZXR1cm4gVGV4dERpcmVjdGlvbjo6TFRSOwogfQogCiB0ZW1wbGF0
ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoV3JpdGluZ01v
ZGUgZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29sbGVjdG9yLmNw
cAkocmV2aXNpb24gMjM0NTE0KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0VsZW1lbnRSdWxlQ29s
bGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTE4LDcgKzUxOCw3IEBAIHZvaWQgRWxlbWVu
dFJ1bGVDb2xsZWN0b3I6Om1hdGNoQWxsUnVsZXMKICAgICAgICAgICAgIGJvb2wgaXNBdXRvOwog
ICAgICAgICAgICAgVGV4dERpcmVjdGlvbiB0ZXh0RGlyZWN0aW9uID0gZG93bmNhc3Q8SFRNTEVs
ZW1lbnQ+KHN0eWxlZEVsZW1lbnQpLmRpcmVjdGlvbmFsaXR5SWZoYXNEaXJBdXRvQXR0cmlidXRl
KGlzQXV0byk7CiAgICAgICAgICAgICBpZiAoaXNBdXRvKQotICAgICAgICAgICAgICAgIG1fcmVz
dWx0LmFkZE1hdGNoZWRQcm9wZXJ0aWVzKHRleHREaXJlY3Rpb24gPT0gTFRSID8gbGVmdFRvUmln
aHREZWNsYXJhdGlvbigpIDogcmlnaHRUb0xlZnREZWNsYXJhdGlvbigpKTsKKyAgICAgICAgICAg
ICAgICBtX3Jlc3VsdC5hZGRNYXRjaGVkUHJvcGVydGllcyh0ZXh0RGlyZWN0aW9uID09IFRleHRE
aXJlY3Rpb246OkxUUiA/IGxlZnRUb1JpZ2h0RGVjbGFyYXRpb24oKSA6IHJpZ2h0VG9MZWZ0RGVj
bGFyYXRpb24oKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAJKHJldmlzaW9uIDIzNDUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MTQsNyArMTUxNCw3IEBAIHZvaWQgRG9jdW1lbnQ6
OnVwZGF0ZVRpdGxlRnJvbVRpdGxlRWxlbWUKICAgICAgICAgdXBkYXRlVGl0bGUoZG93bmNhc3Q8
SFRNTFRpdGxlRWxlbWVudD4oKm1fdGl0bGVFbGVtZW50KS50ZXh0V2l0aERpcmVjdGlvbigpKTsK
ICAgICBlbHNlIGlmIChpczxTVkdUaXRsZUVsZW1lbnQ+KCptX3RpdGxlRWxlbWVudCkpIHsKICAg
ICAgICAgLy8gRklYTUU6IERvZXMgdGhlIFNWRyB0aXRsZSBlbGVtZW50IGhhdmUgYSB0ZXh0IGRp
cmVjdGlvbj8KLSAgICAgICAgdXBkYXRlVGl0bGUoeyBkb3duY2FzdDxTVkdUaXRsZUVsZW1lbnQ+
KCptX3RpdGxlRWxlbWVudCkudGV4dENvbnRlbnQoKSwgTFRSIH0pOworICAgICAgICB1cGRhdGVU
aXRsZSh7IGRvd25jYXN0PFNWR1RpdGxlRWxlbWVudD4oKm1fdGl0bGVFbGVtZW50KS50ZXh0Q29u
dGVudCgpLCBUZXh0RGlyZWN0aW9uOjpMVFIgfSk7CiAgICAgfQogfQogCkBAIC0xNTQ2LDcgKzE1
NDYsNyBAQCB2b2lkIERvY3VtZW50OjpzZXRUaXRsZShjb25zdCBTdHJpbmcmIHRpCiAgICAgZWxz
ZSBpZiAoaXM8U1ZHVGl0bGVFbGVtZW50PihtX3RpdGxlRWxlbWVudC5nZXQoKSkpCiAgICAgICAg
IGRvd25jYXN0PFNWR1RpdGxlRWxlbWVudD4oKm1fdGl0bGVFbGVtZW50KS5zZXRUZXh0Q29udGVu
dCh0aXRsZSk7CiAgICAgZWxzZQotICAgICAgICB1cGRhdGVUaXRsZSh7IHRpdGxlLCBMVFIgfSk7
CisgICAgICAgIHVwZGF0ZVRpdGxlKHsgdGl0bGUsIFRleHREaXJlY3Rpb246OkxUUiB9KTsKIH0K
IAogdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBUaXRsZVRyYWl0czsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9t
L1Bvc2l0aW9uLmNwcAkocmV2aXNpb24gMjM0NTE0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1Bv
c2l0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM4OCwxMCArMTM4OCwxMCBAQCB2b2lkIFBv
c2l0aW9uOjpnZXRJbmxpbmVCb3hBbmRPZmZzZXQoRUFmCiBUZXh0RGlyZWN0aW9uIFBvc2l0aW9u
OjpwcmltYXJ5RGlyZWN0aW9uKCkgY29uc3QKIHsKICAgICBpZiAoIW1fYW5jaG9yTm9kZS0+cmVu
ZGVyZXIoKSkKLSAgICAgICAgcmV0dXJuIExUUjsKKyAgICAgICAgcmV0dXJuIFRleHREaXJlY3Rp
b246OkxUUjsKICAgICBpZiAoYXV0byogYmxvY2tGbG93ID0gbGluZWFnZU9mVHlwZTxSZW5kZXJC
bG9ja0Zsb3c+KCptX2FuY2hvck5vZGUtPnJlbmRlcmVyKCkpLmZpcnN0KCkpCiAgICAgICAgIHJl
dHVybiBibG9ja0Zsb3ctPnN0eWxlKCkuZGlyZWN0aW9uKCk7Ci0gICAgcmV0dXJuIExUUjsKKyAg
ICByZXR1cm4gVGV4dERpcmVjdGlvbjo6TFRSOwogfQogCiAjaWYgRU5BQkxFKFRSRUVfREVCVUdH
SU5HKQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCShyZXZpc2lvbiAyMzQ1MTQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9kb20vUmFuZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDMxLDcgKzE0MzEsNyBA
QCBpbnQgUmFuZ2U6OmNvbGxlY3RTZWxlY3Rpb25SZWN0c1dpdGhvdXRVCiAgICAgICAgIGlmIChy
ZWN0c1tqXS5saW5lTnVtYmVyKCkgIT0gcmVjdHNbaiAtIDFdLmxpbmVOdW1iZXIoKSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICBTZWxlY3Rpb25SZWN0JiBwcmV2aW91c1JlY3QgPSBy
ZWN0c1tqIC0gMV07Ci0gICAgICAgIGJvb2wgcHJldmlvdXNSZWN0TWF5Tm90UmVhY2hSaWdodEVk
Z2UgPSAocHJldmlvdXNSZWN0LmRpcmVjdGlvbigpID09IExUUiAmJiBwcmV2aW91c1JlY3QuY29u
dGFpbnNFbmQoKSkgfHwgKHByZXZpb3VzUmVjdC5kaXJlY3Rpb24oKSA9PSBSVEwgJiYgcHJldmlv
dXNSZWN0LmNvbnRhaW5zU3RhcnQoKSk7CisgICAgICAgIGJvb2wgcHJldmlvdXNSZWN0TWF5Tm90
UmVhY2hSaWdodEVkZ2UgPSAocHJldmlvdXNSZWN0LmRpcmVjdGlvbigpID09IFRleHREaXJlY3Rp
b246OkxUUiAmJiBwcmV2aW91c1JlY3QuY29udGFpbnNFbmQoKSkgfHwgKHByZXZpb3VzUmVjdC5k
aXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpSVEwgJiYgcHJldmlvdXNSZWN0LmNvbnRhaW5z
U3RhcnQoKSk7CiAgICAgICAgIGlmIChwcmV2aW91c1JlY3RNYXlOb3RSZWFjaFJpZ2h0RWRnZSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpbnQgYWRqdXN0ZWRXaWR0aCA9IHJlY3Rz
W2pdLmxvZ2ljYWxMZWZ0KCkgLSBwcmV2aW91c1JlY3QubG9naWNhbExlZnQoKTsKQEAgLTE0NDYs
MTAgKzE0NDYsMTAgQEAgaW50IFJhbmdlOjpjb2xsZWN0U2VsZWN0aW9uUmVjdHNXaXRob3V0VQog
ICAgICAgICBTZWxlY3Rpb25SZWN0JiBzZWxlY3Rpb25SZWN0ID0gcmVjdHNbaV07CiAgICAgICAg
IGlmICghc2VsZWN0aW9uUmVjdC5pc0xpbmVCcmVhaygpICYmIHNlbGVjdGlvblJlY3QubGluZU51
bWJlcigpID49IG1heExpbmVOdW1iZXIpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
aWYgKHNlbGVjdGlvblJlY3QuZGlyZWN0aW9uKCkgPT0gUlRMICYmIHNlbGVjdGlvblJlY3QuaXNG
aXJzdE9uTGluZSgpKSB7CisgICAgICAgIGlmIChzZWxlY3Rpb25SZWN0LmRpcmVjdGlvbigpID09
IFRleHREaXJlY3Rpb246OlJUTCAmJiBzZWxlY3Rpb25SZWN0LmlzRmlyc3RPbkxpbmUoKSkgewog
ICAgICAgICAgICAgc2VsZWN0aW9uUmVjdC5zZXRMb2dpY2FsV2lkdGgoc2VsZWN0aW9uUmVjdC5s
b2dpY2FsV2lkdGgoKSArIHNlbGVjdGlvblJlY3QubG9naWNhbExlZnQoKSAtIHNlbGVjdGlvblJl
Y3QubWluWCgpKTsKICAgICAgICAgICAgIHNlbGVjdGlvblJlY3Quc2V0TG9naWNhbExlZnQoc2Vs
ZWN0aW9uUmVjdC5taW5YKCkpOwotICAgICAgICB9IGVsc2UgaWYgKHNlbGVjdGlvblJlY3QuZGly
ZWN0aW9uKCkgPT0gTFRSICYmIHNlbGVjdGlvblJlY3QuaXNMYXN0T25MaW5lKCkpCisgICAgICAg
IH0gZWxzZSBpZiAoc2VsZWN0aW9uUmVjdC5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpM
VFIgJiYgc2VsZWN0aW9uUmVjdC5pc0xhc3RPbkxpbmUoKSkKICAgICAgICAgICAgIHNlbGVjdGlv
blJlY3Quc2V0TG9naWNhbFdpZHRoKHNlbGVjdGlvblJlY3QubWF4WCgpIC0gc2VsZWN0aW9uUmVj
dC5sb2dpY2FsTGVmdCgpKTsKICAgICB9CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dGluZy5jcHAJKHJldmlzaW9uIDIzNDUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2MiwxMCArMzYyLDEwIEBAIFRleHREaXJlY3Rp
b24gZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9jaygKIHsKICAgICBhdXRvIGJsb2NrID0gZW5jbG9z
aW5nQmxvY2socG9zaXRpb24uY29udGFpbmVyTm9kZSgpKTsKICAgICBpZiAoIWJsb2NrKQotICAg
ICAgICByZXR1cm4gTFRSOworICAgICAgICByZXR1cm4gVGV4dERpcmVjdGlvbjo6TFRSOwogICAg
IGF1dG8gcmVuZGVyZXIgPSBibG9jay0+cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyKQot
ICAgICAgICByZXR1cm4gTFRSOworICAgICAgICByZXR1cm4gVGV4dERpcmVjdGlvbjo6TFRSOwog
ICAgIHJldHVybiByZW5kZXJlci0+c3R5bGUoKS5kaXJlY3Rpb24oKTsKIH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkocmV2aXNpb24gMjM0NTE0KQorKysgU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzYyLDkgKzE3NjIsOSBA
QCBXcml0aW5nRGlyZWN0aW9uIEVkaXRvcjo6YmFzZVdyaXRpbmdEaXJlCiAgICAgfQogCiAgICAg
c3dpdGNoIChyZW5kZXJlci0+c3R5bGUoKS5kaXJlY3Rpb24oKSkgewotICAgIGNhc2UgTFRSOgor
ICAgIGNhc2UgVGV4dERpcmVjdGlvbjo6TFRSOgogICAgICAgICByZXR1cm4gTGVmdFRvUmlnaHRX
cml0aW5nRGlyZWN0aW9uOwotICAgIGNhc2UgUlRMOgorICAgIGNhc2UgVGV4dERpcmVjdGlvbjo6
UlRMOgogICAgICAgICByZXR1cm4gUmlnaHRUb0xlZnRXcml0aW5nRGlyZWN0aW9uOwogICAgIH0K
ICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCShy
ZXZpc2lvbiAyMzQ1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9u
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMzLDcgKzYzMyw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rp
b246OndpbGxCZU1vZGlmaWVkKEVBbHQKICAgICB9IGVsc2UgewogICAgICAgICBzd2l0Y2ggKGRp
cmVjdGlvbikgewogICAgICAgICBjYXNlIERpcmVjdGlvblJpZ2h0OgotICAgICAgICAgICAgaWYg
KGRpcmVjdGlvbk9mU2VsZWN0aW9uKCkgPT0gTFRSKQorICAgICAgICAgICAgaWYgKGRpcmVjdGlv
bk9mU2VsZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSKQogICAgICAgICAgICAgICAgIGJh
c2VJc1N0YXJ0ID0gdHJ1ZTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBiYXNl
SXNTdGFydCA9IGZhbHNlOwpAQCAtNjQyLDcgKzY0Miw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246
OndpbGxCZU1vZGlmaWVkKEVBbHQKICAgICAgICAgICAgIGJhc2VJc1N0YXJ0ID0gdHJ1ZTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIERpcmVjdGlvbkxlZnQ6Ci0gICAgICAgICAg
ICBpZiAoZGlyZWN0aW9uT2ZTZWxlY3Rpb24oKSA9PSBMVFIpCisgICAgICAgICAgICBpZiAoZGly
ZWN0aW9uT2ZTZWxlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpCiAgICAgICAgICAgICAg
ICAgYmFzZUlzU3RhcnQgPSBmYWxzZTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAg
ICBiYXNlSXNTdGFydCA9IHRydWU7CkBAIC03MTgsMjMgKzcxOCwyMyBAQCBWaXNpYmxlUG9zaXRp
b24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeUV4CiAgICAgLy8gVGhlIGRpZmZlcmVuY2UgYmV0d2Vl
biBtb2RpZnlFeHRlbmRpbmdSaWdodCBhbmQgbW9kaWZ5RXh0ZW5kaW5nRm9yd2FyZCBpczoKICAg
ICAvLyBtb2RpZnlFeHRlbmRpbmdGb3J3YXJkIGFsd2F5cyBleHRlbmRzIGZvcndhcmQgbG9naWNh
bGx5LgogICAgIC8vIG1vZGlmeUV4dGVuZGluZ1JpZ2h0IGJlaGF2ZXMgdGhlIHNhbWUgYXMgbW9k
aWZ5RXh0ZW5kaW5nRm9yd2FyZCBleGNlcHQgZm9yIGV4dGVuZGluZyBjaGFyYWN0ZXIgb3Igd29y
ZCwKLSAgICAvLyBpdCBleHRlbmRzIGZvcndhcmQgbG9naWNhbGx5IGlmIHRoZSBlbmNsb3Npbmcg
YmxvY2sgaXMgTFRSIGRpcmVjdGlvbiwKLSAgICAvLyBidXQgaXQgZXh0ZW5kcyBiYWNrd2FyZCBs
b2dpY2FsbHkgaWYgdGhlIGVuY2xvc2luZyBibG9jayBpcyBSVEwgZGlyZWN0aW9uLgorICAgIC8v
IGl0IGV4dGVuZHMgZm9yd2FyZCBsb2dpY2FsbHkgaWYgdGhlIGVuY2xvc2luZyBibG9jayBpcyBU
ZXh0RGlyZWN0aW9uOjpMVFIsCisgICAgLy8gYnV0IGl0IGV4dGVuZHMgYmFja3dhcmQgbG9naWNh
bGx5IGlmIHRoZSBlbmNsb3NpbmcgYmxvY2sgaXMgVGV4dERpcmVjdGlvbjo6UlRMLgogICAgIHN3
aXRjaCAoZ3JhbnVsYXJpdHkpIHsKICAgICBjYXNlIENoYXJhY3RlckdyYW51bGFyaXR5OgotICAg
ICAgICBpZiAoZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9jaygpID09IExUUikKKyAgICAgICAgaWYg
KGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2soKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpCiAgICAg
ICAgICAgICBwb3MgPSBwb3MubmV4dChDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSk7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIHBvcyA9IHBvcy5wcmV2aW91cyhDYW5ub3RDcm9zc0VkaXRp
bmdCb3VuZGFyeSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV29yZEdyYW51bGFyaXR5Ogot
ICAgICAgICBpZiAoZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9jaygpID09IExUUikKKyAgICAgICAg
aWYgKGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2soKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpCiAg
ICAgICAgICAgICBwb3MgPSBuZXh0V29yZFBvc2l0aW9uRm9yUGxhdGZvcm0ocG9zKTsKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgcG9zID0gcHJldmlvdXNXb3JkUG9zaXRpb24ocG9zKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBMaW5lQm91bmRhcnk6Ci0gICAgICAgIGlmIChkaXJlY3Rp
b25PZkVuY2xvc2luZ0Jsb2NrKCkgPT0gTFRSKQorICAgICAgICBpZiAoZGlyZWN0aW9uT2ZFbmNs
b3NpbmdCbG9jaygpID09IFRleHREaXJlY3Rpb246OkxUUikKICAgICAgICAgICAgIHBvcyA9IG1v
ZGlmeUV4dGVuZGluZ0ZvcndhcmQoZ3JhbnVsYXJpdHkpOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBwb3MgPSBtb2RpZnlFeHRlbmRpbmdCYWNrd2FyZChncmFudWxhcml0eSk7CkBAIC03NTMs
NyArNzUzLDcgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlFeAogICAg
ICAgICBicmVhazsKICAgICB9CiAjaWYgRU5BQkxFKFVTRVJTRUxFQ1RfQUxMKQotICAgIGFkanVz
dFBvc2l0aW9uRm9yVXNlclNlbGVjdEFsbChwb3MsIGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2so
KSA9PSBMVFIpOworICAgIGFkanVzdFBvc2l0aW9uRm9yVXNlclNlbGVjdEFsbChwb3MsIGRpcmVj
dGlvbk9mRW5jbG9zaW5nQmxvY2soKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpOwogI2VuZGlmCiAg
ICAgcmV0dXJuIHBvczsKIH0KQEAgLTc5OCw3ICs3OTgsNyBAQCBWaXNpYmxlUG9zaXRpb24gRnJh
bWVTZWxlY3Rpb246Om1vZGlmeUV4CiAgICAgICAgIGJyZWFrOwogICAgIH0KICNpZiBFTkFCTEUo
VVNFUlNFTEVDVF9BTEwpCi0gICAgIGFkanVzdFBvc2l0aW9uRm9yVXNlclNlbGVjdEFsbChwb3Ms
IGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2soKSA9PSBMVFIpOworICAgIGFkanVzdFBvc2l0aW9u
Rm9yVXNlclNlbGVjdEFsbChwb3MsIGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2soKSA9PSBUZXh0
RGlyZWN0aW9uOjpMVFIpOwogI2VuZGlmCiAgICAgcmV0dXJuIHBvczsKIH0KQEAgLTgxMSw3ICs4
MTEsNyBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeU1vCiAgICAgc3dp
dGNoIChncmFudWxhcml0eSkgewogICAgIGNhc2UgQ2hhcmFjdGVyR3JhbnVsYXJpdHk6CiAgICAg
ICAgIGlmIChpc1JhbmdlKCkpIHsKLSAgICAgICAgICAgIGlmIChkaXJlY3Rpb25PZlNlbGVjdGlv
bigpID09IExUUikKKyAgICAgICAgICAgIGlmIChkaXJlY3Rpb25PZlNlbGVjdGlvbigpID09IFRl
eHREaXJlY3Rpb246OkxUUikKICAgICAgICAgICAgICAgICBwb3MgPSBWaXNpYmxlUG9zaXRpb24o
bV9zZWxlY3Rpb24uZW5kKCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkpOwogICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgIHBvcyA9IFZpc2libGVQb3NpdGlvbihtX3NlbGVjdGlvbi5z
dGFydCgpLCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKTsKQEAgLTkzNSwyMyArOTM1LDIzIEBAIFZp
c2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5RXgKICAgICAvLyBUaGUgZGlmZmVy
ZW5jZSBiZXR3ZWVuIG1vZGlmeUV4dGVuZGluZ0xlZnQgYW5kIG1vZGlmeUV4dGVuZGluZ0JhY2t3
YXJkIGlzOgogICAgIC8vIG1vZGlmeUV4dGVuZGluZ0JhY2t3YXJkIGFsd2F5cyBleHRlbmRzIGJh
Y2t3YXJkIGxvZ2ljYWxseS4KICAgICAvLyBtb2RpZnlFeHRlbmRpbmdMZWZ0IGJlaGF2ZXMgdGhl
IHNhbWUgYXMgbW9kaWZ5RXh0ZW5kaW5nQmFja3dhcmQgZXhjZXB0IGZvciBleHRlbmRpbmcgY2hh
cmFjdGVyIG9yIHdvcmQsCi0gICAgLy8gaXQgZXh0ZW5kcyBiYWNrd2FyZCBsb2dpY2FsbHkgaWYg
dGhlIGVuY2xvc2luZyBibG9jayBpcyBMVFIgZGlyZWN0aW9uLAotICAgIC8vIGJ1dCBpdCBleHRl
bmRzIGZvcndhcmQgbG9naWNhbGx5IGlmIHRoZSBlbmNsb3NpbmcgYmxvY2sgaXMgUlRMIGRpcmVj
dGlvbi4KKyAgICAvLyBpdCBleHRlbmRzIGJhY2t3YXJkIGxvZ2ljYWxseSBpZiB0aGUgZW5jbG9z
aW5nIGJsb2NrIGlzIFRleHREaXJlY3Rpb246OkxUUiwKKyAgICAvLyBidXQgaXQgZXh0ZW5kcyBm
b3J3YXJkIGxvZ2ljYWxseSBpZiB0aGUgZW5jbG9zaW5nIGJsb2NrIGlzIFRleHREaXJlY3Rpb246
OlJUTC4KICAgICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7CiAgICAgY2FzZSBDaGFyYWN0ZXJHcmFu
dWxhcml0eToKLSAgICAgICAgaWYgKGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2soKSA9PSBMVFIp
CisgICAgICAgIGlmIChkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCkgPT0gVGV4dERpcmVjdGlv
bjo6TFRSKQogICAgICAgICAgICAgcG9zID0gcG9zLnByZXZpb3VzKENhbm5vdENyb3NzRWRpdGlu
Z0JvdW5kYXJ5KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcG9zID0gcG9zLm5leHQoQ2Fu
bm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdvcmRH
cmFudWxhcml0eToKLSAgICAgICAgaWYgKGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2soKSA9PSBM
VFIpCisgICAgICAgIGlmIChkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCkgPT0gVGV4dERpcmVj
dGlvbjo6TFRSKQogICAgICAgICAgICAgcG9zID0gcHJldmlvdXNXb3JkUG9zaXRpb24ocG9zKTsK
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgcG9zID0gbmV4dFdvcmRQb3NpdGlvbkZvclBsYXRm
b3JtKHBvcyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTGluZUJvdW5kYXJ5OgotICAgICAg
ICBpZiAoZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9jaygpID09IExUUikKKyAgICAgICAgaWYgKGRp
cmVjdGlvbk9mRW5jbG9zaW5nQmxvY2soKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpCiAgICAgICAg
ICAgICBwb3MgPSBtb2RpZnlFeHRlbmRpbmdCYWNrd2FyZChncmFudWxhcml0eSk7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIHBvcyA9IG1vZGlmeUV4dGVuZGluZ0ZvcndhcmQoZ3JhbnVsYXJp
dHkpOwpAQCAtOTY5LDcgKzk2OSw3IEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6
bW9kaWZ5RXgKICAgICAgICAgYnJlYWs7CiAgICAgfQogI2lmIEVOQUJMRShVU0VSU0VMRUNUX0FM
TCkKLSAgICBhZGp1c3RQb3NpdGlvbkZvclVzZXJTZWxlY3RBbGwocG9zLCAhKGRpcmVjdGlvbk9m
RW5jbG9zaW5nQmxvY2soKSA9PSBMVFIpKTsKKyAgICBhZGp1c3RQb3NpdGlvbkZvclVzZXJTZWxl
Y3RBbGwocG9zLCAhKGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2soKSA9PSBUZXh0RGlyZWN0aW9u
OjpMVFIpKTsKICNlbmRpZgogICAgIHJldHVybiBwb3M7CiB9CkBAIC0xMDE5LDcgKzEwMTksNyBA
QCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeUV4CiAgICAgICAgIGJyZWFr
OwogICAgIH0KICNpZiBFTkFCTEUoVVNFUlNFTEVDVF9BTEwpCi0gICAgYWRqdXN0UG9zaXRpb25G
b3JVc2VyU2VsZWN0QWxsKHBvcywgIShkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCkgPT0gTFRS
KSk7CisgICAgYWRqdXN0UG9zaXRpb25Gb3JVc2VyU2VsZWN0QWxsKHBvcywgIShkaXJlY3Rpb25P
ZkVuY2xvc2luZ0Jsb2NrKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSKSk7CiAjZW5kaWYKICAgICBy
ZXR1cm4gcG9zOwogfQpAQCAtMTAzMiw3ICsxMDMyLDcgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1l
U2VsZWN0aW9uOjptb2RpZnlNbwogICAgIHN3aXRjaCAoZ3JhbnVsYXJpdHkpIHsKICAgICBjYXNl
IENoYXJhY3RlckdyYW51bGFyaXR5OgogICAgICAgICBpZiAoaXNSYW5nZSgpKQotICAgICAgICAg
ICAgaWYgKGRpcmVjdGlvbk9mU2VsZWN0aW9uKCkgPT0gTFRSKQorICAgICAgICAgICAgaWYgKGRp
cmVjdGlvbk9mU2VsZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSKQogICAgICAgICAgICAg
ICAgIHBvcyA9IFZpc2libGVQb3NpdGlvbihtX3NlbGVjdGlvbi5zdGFydCgpLCBtX3NlbGVjdGlv
bi5hZmZpbml0eSgpKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBwb3MgPSBW
aXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24uZW5kKCksIG1fc2VsZWN0aW9uLmFmZmluaXR5KCkp
OwpAQCAtMTE1NCw3ICsxMTU0LDcgQEAgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQgRnJhbWVTZWxl
Y3Rpb246OgogICAgIGJvb2wgZmxpcCA9IGZhbHNlOwogICAgIGlmIChhbHRlciA9PSBGcmFtZVNl
bGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUpIHsKICAgICAgICAgaW50ZW50LnR5cGUgPSBBWFRleHRT
dGF0ZUNoYW5nZVR5cGVTZWxlY3Rpb25Nb3ZlOwotICAgICAgICBmbGlwID0gaXNSYW5nZSgpICYm
IGRpcmVjdGlvbk9mU2VsZWN0aW9uKCkgPT0gUlRMOworICAgICAgICBmbGlwID0gaXNSYW5nZSgp
ICYmIGRpcmVjdGlvbk9mU2VsZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6UlRMOwogICAgIH0g
ZWxzZQogICAgICAgICBpbnRlbnQudHlwZSA9IEFYVGV4dFN0YXRlQ2hhbmdlVHlwZVNlbGVjdGlv
bkV4dGVuZDsKICAgICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7CkBAIC0xMzc1LDcgKzEzNzUsNyBA
QCBib29sIEZyYW1lU2VsZWN0aW9uOjptb2RpZnkoRUFsdGVyYXRpb24gCiAgICAgICAgICAgICBz
ZXRFeHRlbnQocG9zaXRpb24sIHVzZXJUcmlnZ2VyZWQpOwogICAgICAgICBlbHNlIHsKICAgICAg
ICAgICAgIFRleHREaXJlY3Rpb24gdGV4dERpcmVjdGlvbiA9IGRpcmVjdGlvbk9mRW5jbG9zaW5n
QmxvY2soKTsKLSAgICAgICAgICAgIGlmIChkaXJlY3Rpb24gPT0gRGlyZWN0aW9uRm9yd2FyZCB8
fCAodGV4dERpcmVjdGlvbiA9PSBMVFIgJiYgZGlyZWN0aW9uID09IERpcmVjdGlvblJpZ2h0KSB8
fCAodGV4dERpcmVjdGlvbiA9PSBSVEwgJiYgZGlyZWN0aW9uID09IERpcmVjdGlvbkxlZnQpKQor
ICAgICAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBEaXJlY3Rpb25Gb3J3YXJkIHx8ICh0ZXh0RGly
ZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUiAmJiBkaXJlY3Rpb24gPT0gRGlyZWN0aW9uUmln
aHQpIHx8ICh0ZXh0RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OlJUTCAmJiBkaXJlY3Rpb24g
PT0gRGlyZWN0aW9uTGVmdCkpCiAgICAgICAgICAgICAgICAgc2V0RW5kKHBvc2l0aW9uLCB1c2Vy
VHJpZ2dlcmVkKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBzZXRTdGFydChw
b3NpdGlvbiwgdXNlclRyaWdnZXJlZCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zp
c2libGVQb3NpdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9W
aXNpYmxlUG9zaXRpb24uY3BwCShyZXZpc2lvbiAyMzQ1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNyw3ICsxMjcs
NyBAQCBQb3NpdGlvbiBWaXNpYmxlUG9zaXRpb246OmxlZnRWaXN1YWxseURpCiAgICAgICAgIGlu
dCBvZmZzZXQ7CiAgICAgICAgIHAuZ2V0SW5saW5lQm94QW5kT2Zmc2V0KG1fYWZmaW5pdHksIHBy
aW1hcnlEaXJlY3Rpb24sIGJveCwgb2Zmc2V0KTsKICAgICAgICAgaWYgKCFib3gpCi0gICAgICAg
ICAgICByZXR1cm4gcHJpbWFyeURpcmVjdGlvbiA9PSBMVFIgPyBwcmV2aW91c1Zpc3VhbGx5RGlz
dGluY3RDYW5kaWRhdGUobV9kZWVwUG9zaXRpb24pIDogbmV4dFZpc3VhbGx5RGlzdGluY3RDYW5k
aWRhdGUobV9kZWVwUG9zaXRpb24pOworICAgICAgICAgICAgcmV0dXJuIHByaW1hcnlEaXJlY3Rp
b24gPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gcHJldmlvdXNWaXN1YWxseURpc3RpbmN0Q2FuZGlk
YXRlKG1fZGVlcFBvc2l0aW9uKSA6IG5leHRWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVl
cFBvc2l0aW9uKTsKIAogICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gJmJveC0+cmVu
ZGVyZXIoKTsKIApAQCAtMTM4LDcgKzEzOCw3IEBAIFBvc2l0aW9uIFZpc2libGVQb3NpdGlvbjo6
bGVmdFZpc3VhbGx5RGkKICAgICAgICAgICAgIGlmICghcmVuZGVyZXItPm5vZGUoKSkgewogICAg
ICAgICAgICAgICAgIGJveCA9IGJveC0+cHJldkxlYWZDaGlsZCgpOwogICAgICAgICAgICAgICAg
IGlmICghYm94KQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJpbWFyeURpcmVjdGlvbiA9
PSBMVFIgPyBwcmV2aW91c1Zpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUobV9kZWVwUG9zaXRpb24p
IDogbmV4dFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUobV9kZWVwUG9zaXRpb24pOworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gcHJpbWFyeURpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpM
VFIgPyBwcmV2aW91c1Zpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUobV9kZWVwUG9zaXRpb24pIDog
bmV4dFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUobV9kZWVwUG9zaXRpb24pOwogICAgICAgICAg
ICAgICAgIHJlbmRlcmVyID0gJmJveC0+cmVuZGVyZXIoKTsKICAgICAgICAgICAgICAgICBvZmZz
ZXQgPSBib3gtPmNhcmV0UmlnaHRtb3N0T2Zmc2V0KCk7CiAgICAgICAgICAgICAgICAgY29udGlu
dWU7CkBAIC0xNTYsNyArMTU2LDcgQEAgUG9zaXRpb24gVmlzaWJsZVBvc2l0aW9uOjpsZWZ0Vmlz
dWFsbHlEaQogICAgICAgICAgICAgICAgIC8vIE92ZXJzaG90IHRvIHRoZSBsZWZ0LgogICAgICAg
ICAgICAgICAgIElubGluZUJveCogcHJldkJveCA9IGJveC0+cHJldkxlYWZDaGlsZElnbm9yaW5n
TGluZUJyZWFrKCk7CiAgICAgICAgICAgICAgICAgaWYgKCFwcmV2Qm94KSB7Ci0gICAgICAgICAg
ICAgICAgICAgIFBvc2l0aW9uIHBvc2l0aW9uT25MZWZ0ID0gcHJpbWFyeURpcmVjdGlvbiA9PSBM
VFIgPyBwcmV2aW91c1Zpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUobV9kZWVwUG9zaXRpb24pIDog
bmV4dFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUobV9kZWVwUG9zaXRpb24pOworICAgICAgICAg
ICAgICAgICAgICBQb3NpdGlvbiBwb3NpdGlvbk9uTGVmdCA9IHByaW1hcnlEaXJlY3Rpb24gPT0g
VGV4dERpcmVjdGlvbjo6TFRSID8gcHJldmlvdXNWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1f
ZGVlcFBvc2l0aW9uKSA6IG5leHRWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0
aW9uKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHBvc2l0aW9uT25MZWZ0LmlzTnVsbCgpKQog
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFBvc2l0aW9uKCk7CiAKQEAgLTE4MywxMCAr
MTgzLDEwIEBAIFBvc2l0aW9uIFZpc2libGVQb3NpdGlvbjo6bGVmdFZpc3VhbGx5RGkKICAgICAg
ICAgICAgIGlmIChib3gtPmRpcmVjdGlvbigpID09IHByaW1hcnlEaXJlY3Rpb24pIHsKICAgICAg
ICAgICAgICAgICBpZiAoIXByZXZCb3gpIHsKICAgICAgICAgICAgICAgICAgICAgSW5saW5lQm94
KiBsb2dpY2FsU3RhcnQgPSBudWxscHRyOwotICAgICAgICAgICAgICAgICAgICBpZiAocHJpbWFy
eURpcmVjdGlvbiA9PSBMVFIgPyBib3gtPnJvb3QoKS5nZXRMb2dpY2FsU3RhcnRCb3hXaXRoTm9k
ZShsb2dpY2FsU3RhcnQpIDogYm94LT5yb290KCkuZ2V0TG9naWNhbEVuZEJveFdpdGhOb2RlKGxv
Z2ljYWxTdGFydCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHByaW1hcnlEaXJlY3Rpb24g
PT0gVGV4dERpcmVjdGlvbjo6TFRSID8gYm94LT5yb290KCkuZ2V0TG9naWNhbFN0YXJ0Qm94V2l0
aE5vZGUobG9naWNhbFN0YXJ0KSA6IGJveC0+cm9vdCgpLmdldExvZ2ljYWxFbmRCb3hXaXRoTm9k
ZShsb2dpY2FsU3RhcnQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBib3ggPSBsb2dpY2Fs
U3RhcnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJlciA9ICZib3gtPnJlbmRlcmVy
KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgPSBwcmltYXJ5RGlyZWN0aW9uID09
IExUUiA/IGJveC0+Y2FyZXRNaW5PZmZzZXQoKSA6IGJveC0+Y2FyZXRNYXhPZmZzZXQoKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCA9IHByaW1hcnlEaXJlY3Rpb24gPT0gVGV4dERp
cmVjdGlvbjo6TFRSID8gYm94LT5jYXJldE1pbk9mZnNldCgpIDogYm94LT5jYXJldE1heE9mZnNl
dCgpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgICAgIH0KQEAgLTI0Nyw3ICsyNDcsNyBAQCBQb3NpdGlvbiBWaXNpYmxlUG9z
aXRpb246OmxlZnRWaXN1YWxseURpCiAgICAgICAgICAgICAgICAgICAgIGxldmVsID0gYm94LT5i
aWRpTGV2ZWwoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgcmVuZGVyZXIg
PSAmYm94LT5yZW5kZXJlcigpOwotICAgICAgICAgICAgICAgIG9mZnNldCA9IHByaW1hcnlEaXJl
Y3Rpb24gPT0gTFRSID8gYm94LT5jYXJldE1pbk9mZnNldCgpIDogYm94LT5jYXJldE1heE9mZnNl
dCgpOworICAgICAgICAgICAgICAgIG9mZnNldCA9IHByaW1hcnlEaXJlY3Rpb24gPT0gVGV4dERp
cmVjdGlvbjo6TFRSID8gYm94LT5jYXJldE1pbk9mZnNldCgpIDogYm94LT5jYXJldE1heE9mZnNl
dCgpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTI5
Nyw3ICsyOTcsNyBAQCBQb3NpdGlvbiBWaXNpYmxlUG9zaXRpb246OnJpZ2h0VmlzdWFsbHlECiAg
ICAgICAgIGludCBvZmZzZXQ7CiAgICAgICAgIHAuZ2V0SW5saW5lQm94QW5kT2Zmc2V0KG1fYWZm
aW5pdHksIHByaW1hcnlEaXJlY3Rpb24sIGJveCwgb2Zmc2V0KTsKICAgICAgICAgaWYgKCFib3gp
Ci0gICAgICAgICAgICByZXR1cm4gcHJpbWFyeURpcmVjdGlvbiA9PSBMVFIgPyBuZXh0VmlzdWFs
bHlEaXN0aW5jdENhbmRpZGF0ZShtX2RlZXBQb3NpdGlvbikgOiBwcmV2aW91c1Zpc3VhbGx5RGlz
dGluY3RDYW5kaWRhdGUobV9kZWVwUG9zaXRpb24pOworICAgICAgICAgICAgcmV0dXJuIHByaW1h
cnlEaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gbmV4dFZpc3VhbGx5RGlzdGluY3RD
YW5kaWRhdGUobV9kZWVwUG9zaXRpb24pIDogcHJldmlvdXNWaXN1YWxseURpc3RpbmN0Q2FuZGlk
YXRlKG1fZGVlcFBvc2l0aW9uKTsKIAogICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0g
JmJveC0+cmVuZGVyZXIoKTsKIApAQCAtMzA4LDcgKzMwOCw3IEBAIFBvc2l0aW9uIFZpc2libGVQ
b3NpdGlvbjo6cmlnaHRWaXN1YWxseUQKICAgICAgICAgICAgIGlmICghcmVuZGVyZXItPm5vZGUo
KSkgewogICAgICAgICAgICAgICAgIGJveCA9IGJveC0+bmV4dExlYWZDaGlsZCgpOwogICAgICAg
ICAgICAgICAgIGlmICghYm94KQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJpbWFyeURp
cmVjdGlvbiA9PSBMVFIgPyBuZXh0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZShtX2RlZXBQb3Np
dGlvbikgOiBwcmV2aW91c1Zpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUobV9kZWVwUG9zaXRpb24p
OworICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJpbWFyeURpcmVjdGlvbiA9PSBUZXh0RGly
ZWN0aW9uOjpMVFIgPyBuZXh0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZShtX2RlZXBQb3NpdGlv
bikgOiBwcmV2aW91c1Zpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUobV9kZWVwUG9zaXRpb24pOwog
ICAgICAgICAgICAgICAgIHJlbmRlcmVyID0gJmJveC0+cmVuZGVyZXIoKTsKICAgICAgICAgICAg
ICAgICBvZmZzZXQgPSBib3gtPmNhcmV0TGVmdG1vc3RPZmZzZXQoKTsKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKQEAgLTMyNiw3ICszMjYsNyBAQCBQb3NpdGlvbiBWaXNpYmxlUG9zaXRpb246
OnJpZ2h0VmlzdWFsbHlECiAgICAgICAgICAgICAgICAgLy8gT3ZlcnNob3QgdG8gdGhlIHJpZ2h0
LgogICAgICAgICAgICAgICAgIElubGluZUJveCogbmV4dEJveCA9IGJveC0+bmV4dExlYWZDaGls
ZElnbm9yaW5nTGluZUJyZWFrKCk7CiAgICAgICAgICAgICAgICAgaWYgKCFuZXh0Qm94KSB7Ci0g
ICAgICAgICAgICAgICAgICAgIFBvc2l0aW9uIHBvc2l0aW9uT25SaWdodCA9IHByaW1hcnlEaXJl
Y3Rpb24gPT0gTFRSID8gbmV4dFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUobV9kZWVwUG9zaXRp
b24pIDogcHJldmlvdXNWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9uKTsK
KyAgICAgICAgICAgICAgICAgICAgUG9zaXRpb24gcG9zaXRpb25PblJpZ2h0ID0gcHJpbWFyeURp
cmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBuZXh0VmlzdWFsbHlEaXN0aW5jdENhbmRp
ZGF0ZShtX2RlZXBQb3NpdGlvbikgOiBwcmV2aW91c1Zpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUo
bV9kZWVwUG9zaXRpb24pOwogICAgICAgICAgICAgICAgICAgICBpZiAocG9zaXRpb25PblJpZ2h0
LmlzTnVsbCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFBvc2l0aW9uKCk7CiAK
QEAgLTM1MywxMCArMzUzLDEwIEBAIFBvc2l0aW9uIFZpc2libGVQb3NpdGlvbjo6cmlnaHRWaXN1
YWxseUQKICAgICAgICAgICAgIGlmIChib3gtPmRpcmVjdGlvbigpID09IHByaW1hcnlEaXJlY3Rp
b24pIHsKICAgICAgICAgICAgICAgICBpZiAoIW5leHRCb3gpIHsKICAgICAgICAgICAgICAgICAg
ICAgSW5saW5lQm94KiBsb2dpY2FsRW5kID0gbnVsbHB0cjsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKHByaW1hcnlEaXJlY3Rpb24gPT0gTFRSID8gYm94LT5yb290KCkuZ2V0TG9naWNhbEVuZEJv
eFdpdGhOb2RlKGxvZ2ljYWxFbmQpIDogYm94LT5yb290KCkuZ2V0TG9naWNhbFN0YXJ0Qm94V2l0
aE5vZGUobG9naWNhbEVuZCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHByaW1hcnlEaXJl
Y3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gYm94LT5yb290KCkuZ2V0TG9naWNhbEVuZEJv
eFdpdGhOb2RlKGxvZ2ljYWxFbmQpIDogYm94LT5yb290KCkuZ2V0TG9naWNhbFN0YXJ0Qm94V2l0
aE5vZGUobG9naWNhbEVuZCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGJveCA9IGxvZ2lj
YWxFbmQ7CiAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJlciA9ICZib3gtPnJlbmRlcmVy
KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgPSBwcmltYXJ5RGlyZWN0aW9uID09
IExUUiA/IGJveC0+Y2FyZXRNYXhPZmZzZXQoKSA6IGJveC0+Y2FyZXRNaW5PZmZzZXQoKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCA9IHByaW1hcnlEaXJlY3Rpb24gPT0gVGV4dERp
cmVjdGlvbjo6TFRSID8gYm94LT5jYXJldE1heE9mZnNldCgpIDogYm94LT5jYXJldE1pbk9mZnNl
dCgpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgICAgIH0KQEAgLTQyMCw3ICs0MjAsNyBAQCBQb3NpdGlvbiBWaXNpYmxlUG9z
aXRpb246OnJpZ2h0VmlzdWFsbHlECiAgICAgICAgICAgICAgICAgICAgIGxldmVsID0gYm94LT5i
aWRpTGV2ZWwoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgcmVuZGVyZXIg
PSAmYm94LT5yZW5kZXJlcigpOwotICAgICAgICAgICAgICAgIG9mZnNldCA9IHByaW1hcnlEaXJl
Y3Rpb24gPT0gTFRSID8gYm94LT5jYXJldE1heE9mZnNldCgpIDogYm94LT5jYXJldE1pbk9mZnNl
dCgpOworICAgICAgICAgICAgICAgIG9mZnNldCA9IHByaW1hcnlEaXJlY3Rpb24gPT0gVGV4dERp
cmVjdGlvbjo6TFRSID8gYm94LT5jYXJldE1heE9mZnNldCgpIDogYm94LT5jYXJldE1pbk9mZnNl
dCgpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAJKHJldmlzaW9uIDIzNDUxNCkK
KysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDA4LDcgKzQwOCw3IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gdmlzdWFsV29yZFBv
c2l0aW8KIAogICAgICAgICBib29sIGlzV29yZEJyZWFrOwogICAgICAgICBib29sIGJveEhhc1Nh
bWVEaXJlY3Rpb25hbGl0eUFzQmxvY2sgPSBib3gtPmRpcmVjdGlvbigpID09IGJsb2NrRGlyZWN0
aW9uOwotICAgICAgICBib29sIG1vdmluZ0JhY2t3YXJkID0gKGRpcmVjdGlvbiA9PSBNb3ZlTGVm
dCAmJiBib3gtPmRpcmVjdGlvbigpID09IExUUikgfHwgKGRpcmVjdGlvbiA9PSBNb3ZlUmlnaHQg
JiYgYm94LT5kaXJlY3Rpb24oKSA9PSBSVEwpOworICAgICAgICBib29sIG1vdmluZ0JhY2t3YXJk
ID0gKGRpcmVjdGlvbiA9PSBNb3ZlTGVmdCAmJiBib3gtPmRpcmVjdGlvbigpID09IFRleHREaXJl
Y3Rpb246OkxUUikgfHwgKGRpcmVjdGlvbiA9PSBNb3ZlUmlnaHQgJiYgYm94LT5kaXJlY3Rpb24o
KSA9PSBUZXh0RGlyZWN0aW9uOjpSVEwpOwogICAgICAgICBpZiAoKHNraXBzU3BhY2VXaGVuTW92
aW5nUmlnaHQgJiYgYm94SGFzU2FtZURpcmVjdGlvbmFsaXR5QXNCbG9jaykKICAgICAgICAgICAg
IHx8ICghc2tpcHNTcGFjZVdoZW5Nb3ZpbmdSaWdodCAmJiBtb3ZpbmdCYWNrd2FyZCkpIHsKICAg
ICAgICAgICAgIGJvb2wgbG9naWNhbFN0YXJ0SW5SZW5kZXJlciA9IG9mZnNldEluQm94ID09IHN0
YXRpY19jYXN0PGludD4odGV4dEJveC5zdGFydCgpKSAmJiBwcmV2aW91c0JveEluRGlmZmVyZW50
TGluZTsKQEAgLTQzOSw3ICs0MzksNyBAQCBWaXNpYmxlUG9zaXRpb24gbGVmdFdvcmRQb3NpdGlv
bihjb25zdCBWCiAgICAgLy8gRklYTUU6IEhvdyBzaG91bGQgd2UgaGFuZGxlIGEgbm9uLWVkaXRh
YmxlIHBvc2l0aW9uPwogICAgIGlmIChsZWZ0V29yZEJyZWFrLmlzTnVsbCgpICYmIGlzRWRpdGFi
bGVQb3NpdGlvbih2aXNpYmxlUG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKSkpIHsKICAgICAgICAg
VGV4dERpcmVjdGlvbiBibG9ja0RpcmVjdGlvbiA9IGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2so
dmlzaWJsZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCkpOwotICAgICAgICBsZWZ0V29yZEJyZWFr
ID0gYmxvY2tEaXJlY3Rpb24gPT0gTFRSID8gc3RhcnRPZkVkaXRhYmxlQ29udGVudCh2aXNpYmxl
UG9zaXRpb24pIDogZW5kT2ZFZGl0YWJsZUNvbnRlbnQodmlzaWJsZVBvc2l0aW9uKTsKKyAgICAg
ICAgbGVmdFdvcmRCcmVhayA9IGJsb2NrRGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUiA/
IHN0YXJ0T2ZFZGl0YWJsZUNvbnRlbnQodmlzaWJsZVBvc2l0aW9uKSA6IGVuZE9mRWRpdGFibGVD
b250ZW50KHZpc2libGVQb3NpdGlvbik7CiAgICAgfQogICAgIHJldHVybiBsZWZ0V29yZEJyZWFr
OwogfQpAQCAtNDUyLDcgKzQ1Miw3IEBAIFZpc2libGVQb3NpdGlvbiByaWdodFdvcmRQb3NpdGlv
bihjb25zdCAKICAgICAvLyBGSVhNRTogSG93IHNob3VsZCB3ZSBoYW5kbGUgYSBub24tZWRpdGFi
bGUgcG9zaXRpb24/CiAgICAgaWYgKHJpZ2h0V29yZEJyZWFrLmlzTnVsbCgpICYmIGlzRWRpdGFi
bGVQb3NpdGlvbih2aXNpYmxlUG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKSkpIHsKICAgICAgICAg
VGV4dERpcmVjdGlvbiBibG9ja0RpcmVjdGlvbiA9IGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2so
dmlzaWJsZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCkpOwotICAgICAgICByaWdodFdvcmRCcmVh
ayA9IGJsb2NrRGlyZWN0aW9uID09IExUUiA/IGVuZE9mRWRpdGFibGVDb250ZW50KHZpc2libGVQ
b3NpdGlvbikgOiBzdGFydE9mRWRpdGFibGVDb250ZW50KHZpc2libGVQb3NpdGlvbik7CisgICAg
ICAgIHJpZ2h0V29yZEJyZWFrID0gYmxvY2tEaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRS
ID8gZW5kT2ZFZGl0YWJsZUNvbnRlbnQodmlzaWJsZVBvc2l0aW9uKSA6IHN0YXJ0T2ZFZGl0YWJs
ZUNvbnRlbnQodmlzaWJsZVBvc2l0aW9uKTsKICAgICB9CiAgICAgcmV0dXJuIHJpZ2h0V29yZEJy
ZWFrOwogfQpAQCAtMTUyOSwxMiArMTUyOSwxMiBAQCBib29sIGlzRW5kT2ZFZGl0YWJsZU9yTm9u
RWRpdGFibGVDb250ZW50CiAKIFZpc2libGVQb3NpdGlvbiBsZWZ0Qm91bmRhcnlPZkxpbmUoY29u
c3QgVmlzaWJsZVBvc2l0aW9uJiBjLCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiwgYm9vbCogcmVh
Y2hlZEJvdW5kYXJ5KQogewotICAgIHJldHVybiBkaXJlY3Rpb24gPT0gTFRSID8gbG9naWNhbFN0
YXJ0T2ZMaW5lKGMsIHJlYWNoZWRCb3VuZGFyeSkgOiBsb2dpY2FsRW5kT2ZMaW5lKGMsIHJlYWNo
ZWRCb3VuZGFyeSk7CisgICAgcmV0dXJuIGRpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIg
PyBsb2dpY2FsU3RhcnRPZkxpbmUoYywgcmVhY2hlZEJvdW5kYXJ5KSA6IGxvZ2ljYWxFbmRPZkxp
bmUoYywgcmVhY2hlZEJvdW5kYXJ5KTsKIH0KIAogVmlzaWJsZVBvc2l0aW9uIHJpZ2h0Qm91bmRh
cnlPZkxpbmUoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBjLCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlv
biwgYm9vbCogcmVhY2hlZEJvdW5kYXJ5KQogewotICAgIHJldHVybiBkaXJlY3Rpb24gPT0gTFRS
ID8gbG9naWNhbEVuZE9mTGluZShjLCByZWFjaGVkQm91bmRhcnkpIDogbG9naWNhbFN0YXJ0T2ZM
aW5lKGMsIHJlYWNoZWRCb3VuZGFyeSk7CisgICAgcmV0dXJuIGRpcmVjdGlvbiA9PSBUZXh0RGly
ZWN0aW9uOjpMVFIgPyBsb2dpY2FsRW5kT2ZMaW5lKGMsIHJlYWNoZWRCb3VuZGFyeSkgOiBsb2dp
Y2FsU3RhcnRPZkxpbmUoYywgcmVhY2hlZEJvdW5kYXJ5KTsKIH0KIAogc3RhdGljIGJvb2wgZGly
ZWN0aW9uSXNEb3duc3RyZWFtKFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24pCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2F0ay9GcmFtZVNlbGVjdGlvbkF0ay5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9hdGsvRnJhbWVTZWxlY3Rpb25BdGsuY3BwCShy
ZXZpc2lvbiAyMzQ1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2F0ay9GcmFtZVNlbGVj
dGlvbkF0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAgc3RhdGljIHZvaWQg
ZW1pdFRleHRTZWxlY3Rpb25DaGFuZ2UoQWNjZQogICAgIC8vIHRoZSBsaXN0IGl0ZW0gbWFya2Vy
IGlzIGV4cG9zZWQgdGhyb3VnaCB0aGUgdGV4dCBvZiB0aGUgYWNjZXNzaWJsZSBsaXN0IGl0ZW0g
cmF0aGVyCiAgICAgLy8gdGhhbiB0aHJvdWdoIGEgc2VwYXJhdGUgYWNjZXNzaWJsZSBvYmplY3Qu
CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG9iamVjdC0+cmVuZGVyZXIoKTsKLSAgICBp
ZiAoaXM8UmVuZGVyTGlzdEl0ZW0+KHJlbmRlcmVyKSAmJiByZW5kZXJlci0+c3R5bGUoKS5kaXJl
Y3Rpb24oKSA9PSBMVFIpCisgICAgaWYgKGlzPFJlbmRlckxpc3RJdGVtPihyZW5kZXJlcikgJiYg
cmVuZGVyZXItPnN0eWxlKCkuZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSKQogICAg
ICAgICBvZmZzZXQgKz0gZG93bmNhc3Q8UmVuZGVyTGlzdEl0ZW0+KCpyZW5kZXJlcikubWFya2Vy
VGV4dFdpdGhTdWZmaXgoKS5sZW5ndGgoKTsKIAogICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShh
eE9iamVjdCwgInRleHQtY2FyZXQtbW92ZWQiLCBvZmZzZXQpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRWxlbWVudC5jcHAJKHJldmlzaW9uIDIzNDUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MDAsNyArODAwLDcgQEAgVGV4
dERpcmVjdGlvbiBIVE1MRWxlbWVudDo6ZGlyZWN0aW9uYWxpdAogewogICAgIGlmICghKHNlbGZP
ckFuY2VzdG9ySGFzRGlyQXV0b0F0dHJpYnV0ZSgpICYmIGhhc0RpcmVjdGlvbkF1dG8oKSkpIHsK
ICAgICAgICAgaXNBdXRvID0gZmFsc2U7Ci0gICAgICAgIHJldHVybiBMVFI7CisgICAgICAgIHJl
dHVybiBUZXh0RGlyZWN0aW9uOjpMVFI7CiAgICAgfQogCiAgICAgaXNBdXRvID0gdHJ1ZTsKQEAg
LTgxNSw3ICs4MTUsNyBAQCBUZXh0RGlyZWN0aW9uIEhUTUxFbGVtZW50OjpkaXJlY3Rpb25hbGl0
CiAgICAgICAgIFVDaGFyRGlyZWN0aW9uIHRleHREaXJlY3Rpb24gPSB0ZXh0RWxlbWVudC52YWx1
ZSgpLmRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKCZoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSk7CiAg
ICAgICAgIGlmIChzdHJvbmdEaXJlY3Rpb25hbGl0eVRleHROb2RlKQogICAgICAgICAgICAgKnN0
cm9uZ0RpcmVjdGlvbmFsaXR5VGV4dE5vZGUgPSBoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSA/ICZ0
ZXh0RWxlbWVudCA6IG51bGxwdHI7Ci0gICAgICAgIHJldHVybiAodGV4dERpcmVjdGlvbiA9PSBV
X0xFRlRfVE9fUklHSFQpID8gTFRSIDogUlRMOworICAgICAgICByZXR1cm4gKHRleHREaXJlY3Rp
b24gPT0gVV9MRUZUX1RPX1JJR0hUKSA/IFRleHREaXJlY3Rpb246OkxUUiA6IFRleHREaXJlY3Rp
b246OlJUTDsKICAgICB9CiAKICAgICBSZWZQdHI8Tm9kZT4gbm9kZSA9IGZpcnN0Q2hpbGQoKTsK
QEAgLTg0MiwxNCArODQyLDE0IEBAIFRleHREaXJlY3Rpb24gSFRNTEVsZW1lbnQ6OmRpcmVjdGlv
bmFsaXQKICAgICAgICAgICAgIGlmIChoYXNTdHJvbmdEaXJlY3Rpb25hbGl0eSkgewogICAgICAg
ICAgICAgICAgIGlmIChzdHJvbmdEaXJlY3Rpb25hbGl0eVRleHROb2RlKQogICAgICAgICAgICAg
ICAgICAgICAqc3Ryb25nRGlyZWN0aW9uYWxpdHlUZXh0Tm9kZSA9IG5vZGUuZ2V0KCk7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuICh0ZXh0RGlyZWN0aW9uID09IFVfTEVGVF9UT19SSUdIVCkgPyBM
VFIgOiBSVEw7CisgICAgICAgICAgICAgICAgcmV0dXJuICh0ZXh0RGlyZWN0aW9uID09IFVfTEVG
VF9UT19SSUdIVCkgPyBUZXh0RGlyZWN0aW9uOjpMVFIgOiBUZXh0RGlyZWN0aW9uOjpSVEw7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5l
eHQoKm5vZGUsIHRoaXMpOwogICAgIH0KICAgICBpZiAoc3Ryb25nRGlyZWN0aW9uYWxpdHlUZXh0
Tm9kZSkKICAgICAgICAgKnN0cm9uZ0RpcmVjdGlvbmFsaXR5VGV4dE5vZGUgPSBudWxscHRyOwot
ICAgIHJldHVybiBMVFI7CisgICAgcmV0dXJuIFRleHREaXJlY3Rpb246OkxUUjsKIH0KIAogdm9p
ZCBIVE1MRWxlbWVudDo6ZGlyQXR0cmlidXRlQ2hhbmdlZChjb25zdCBBdG9taWNTdHJpbmcmIHZh
bHVlKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCShyZXZp
c2lvbiAyMzQ1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMDk4LDcgKzIwOTgsNyBAQCBib29sIEhUTUxJbnB1dEVsZW1l
bnQ6OnNldHVwRGF0ZVRpbWVDaG9vCiAgICAgZWxzZQogICAgICAgICBwYXJhbWV0ZXJzLmFuY2hv
clJlY3RJblJvb3RWaWV3ID0gSW50UmVjdCgpOwogICAgIHBhcmFtZXRlcnMuY3VycmVudFZhbHVl
ID0gdmFsdWUoKTsKLSAgICBwYXJhbWV0ZXJzLmlzQW5jaG9yRWxlbWVudFJUTCA9IGNvbXB1dGVk
U3R5bGUoKS0+ZGlyZWN0aW9uKCkgPT0gUlRMOworICAgIHBhcmFtZXRlcnMuaXNBbmNob3JFbGVt
ZW50UlRMID0gY29tcHV0ZWRTdHlsZSgpLT5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpS
VEw7CiAjaWYgRU5BQkxFKERBVEFMSVNUX0VMRU1FTlQpCiAgICAgaWYgKGF1dG8gZGF0YUxpc3Qg
PSB0aGlzLT5kYXRhTGlzdCgpKSB7CiAgICAgICAgIFJlZjxIVE1MQ29sbGVjdGlvbj4gb3B0aW9u
cyA9IGRhdGFMaXN0LT5vcHRpb25zKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAkocmV2aXNpb24gMjM0NTE0KQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTc3NSw3ICs3NzUsNyBAQCBTdHJpbmcgSFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQ6OmRpcmVjCiAgICAgICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShk
aXJBdHRyaWJ1dGVWYWx1ZSwgImF1dG8iKSkgewogICAgICAgICAgICAgYm9vbCBpc0F1dG87CiAg
ICAgICAgICAgICBUZXh0RGlyZWN0aW9uIHRleHREaXJlY3Rpb24gPSBzdGF0aWNfY2FzdDxjb25z
dCBIVE1MRWxlbWVudCo+KGVsZW1lbnQpLT5kaXJlY3Rpb25hbGl0eUlmaGFzRGlyQXV0b0F0dHJp
YnV0ZShpc0F1dG8pOwotICAgICAgICAgICAgcmV0dXJuIHRleHREaXJlY3Rpb24gPT0gUlRMID8g
InJ0bCIgOiAibHRyIjsKKyAgICAgICAgICAgIHJldHVybiB0ZXh0RGlyZWN0aW9uID09IFRleHRE
aXJlY3Rpb246OlJUTCA/ICJydGwiIDogImx0ciI7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTgz
Nyw3ICs4MzcsNyBAQCB2b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjphZGp1c3RJCiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIHRleHRCbG9ja1N0eWxlLnNl
dERpcmVjdGlvbihMVFIpOworICAgICAgICB0ZXh0QmxvY2tTdHlsZS5zZXREaXJlY3Rpb24oVGV4
dERpcmVjdGlvbjo6TFRSKTsKICAgICB9CiAjZW5kaWYKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRpdGxlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcAkocmV2aXNpb24gMjM0NTE0KQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsNyAr
ODAsNyBAQCBTdHJpbmcgSFRNTFRpdGxlRWxlbWVudDo6dGV4dCgpIGNvbnN0CiAKIFN0cmluZ1dp
dGhEaXJlY3Rpb24gSFRNTFRpdGxlRWxlbWVudDo6Y29tcHV0ZWRUZXh0V2l0aERpcmVjdGlvbigp
CiB7Ci0gICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBMVFI7CisgICAgYXV0byBkaXJlY3Rp
b24gPSBUZXh0RGlyZWN0aW9uOjpMVFI7CiAgICAgaWYgKGF1dG8qIGNvbXB1dGVkU3R5bGUgPSB0
aGlzLT5jb21wdXRlZFN0eWxlKCkpCiAgICAgICAgIGRpcmVjdGlvbiA9IGNvbXB1dGVkU3R5bGUt
PmRpcmVjdGlvbigpOwogICAgIGVsc2UKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAkocmV2aXNpb24gMjM0
NTE0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjk1LDIxICsyOTUsMjEgQEAgaW5saW5lIFRleHRE
aXJlY3Rpb24gQ2FudmFzUmVuZGVyaW5nQ29udAogICAgICAgICAqY29tcHV0ZWRTdHlsZSA9IHN0
eWxlOwogICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7CiAgICAgY2FzZSBEaXJlY3Rpb246OkluaGVy
aXQ6Ci0gICAgICAgIHJldHVybiBzdHlsZSA/IHN0eWxlLT5kaXJlY3Rpb24oKSA6IExUUjsKKyAg
ICAgICAgcmV0dXJuIHN0eWxlID8gc3R5bGUtPmRpcmVjdGlvbigpIDogVGV4dERpcmVjdGlvbjo6
TFRSOwogICAgIGNhc2UgRGlyZWN0aW9uOjpSdGw6Ci0gICAgICAgIHJldHVybiBSVEw7CisgICAg
ICAgIHJldHVybiBUZXh0RGlyZWN0aW9uOjpSVEw7CiAgICAgY2FzZSBEaXJlY3Rpb246Okx0cjoK
LSAgICAgICAgcmV0dXJuIExUUjsKKyAgICAgICAgcmV0dXJuIFRleHREaXJlY3Rpb246OkxUUjsK
ICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIExUUjsKKyAgICBy
ZXR1cm4gVGV4dERpcmVjdGlvbjo6TFRSOwogfQogCiBDYW52YXNEaXJlY3Rpb24gQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpkaXJlY3Rpb24oKSBjb25zdAogewogICAgIGlmIChzdGF0ZSgpLmRp
cmVjdGlvbiA9PSBEaXJlY3Rpb246OkluaGVyaXQpCiAgICAgICAgIGNhbnZhcygpLmRvY3VtZW50
KCkudXBkYXRlU3R5bGVJZk5lZWRlZCgpOwotICAgIHJldHVybiB0b1RleHREaXJlY3Rpb24oc3Rh
dGUoKS5kaXJlY3Rpb24pID09IFJUTCA/IENhbnZhc0RpcmVjdGlvbjo6UnRsIDogQ2FudmFzRGly
ZWN0aW9uOjpMdHI7CisgICAgcmV0dXJuIHRvVGV4dERpcmVjdGlvbihzdGF0ZSgpLmRpcmVjdGlv
bikgPT0gVGV4dERpcmVjdGlvbjo6UlRMID8gQ2FudmFzRGlyZWN0aW9uOjpSdGwgOiBDYW52YXNE
aXJlY3Rpb246Okx0cjsKIH0KIAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldERp
cmVjdGlvbihDYW52YXNEaXJlY3Rpb24gZGlyZWN0aW9uKQpAQCAtNDI5LDcgKzQyOSw3IEBAIEZs
b2F0UG9pbnQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjp0ZXgKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogCi0gICAgYm9vbCBpc1JUTCA9IGRpcmVjdGlvbiA9PSBSVEw7CisgICAgYm9vbCBpc1JU
TCA9IGRpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpSVEw7CiAgICAgYXV0byBhbGlnbiA9IHN0
YXRlKCkudGV4dEFsaWduOwogICAgIGlmIChhbGlnbiA9PSBTdGFydFRleHRBbGlnbikKICAgICAg
ICAgYWxpZ24gPSBpc1JUTCA/IFJpZ2h0VGV4dEFsaWduIDogTGVmdFRleHRBbGlnbjsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNw
cAkocmV2aXNpb24gMjM0NTE0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVy
VGh1bWJFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcxLDcgKzE3MSw3IEBAIHZvaWQg
UmVuZGVyU2xpZGVyQ29udGFpbmVyOjpsYXlvdXQoKQogICAgICAgICAvLyBGSVhNRTogV29yayBh
cm91bmQgcm91bmRpbmcgaXNzdWVzIGluIFJUTCB2ZXJ0aWNhbCBzbGlkZXJzLiBXZSB3YW50IHRo
ZW0gdG8KICAgICAgICAgLy8gcmVuZGVyIGlkZW50aWNhbGx5IHRvIExUUiB2ZXJ0aWNhbCBzbGlk
ZXJzLiBXZSBjYW4gcmVtb3ZlIHRoaXMgd29yayBhcm91bmQgd2hlbgogICAgICAgICAvLyBzdWJw
aXhlbCByZW5kZXJpbmcgaXMgZW5hYmxlZCBvbiBhbGwgcG9ydHMuCi0gICAgICAgIG11dGFibGVT
dHlsZSgpLnNldERpcmVjdGlvbihMVFIpOworICAgICAgICBtdXRhYmxlU3R5bGUoKS5zZXREaXJl
Y3Rpb24oVGV4dERpcmVjdGlvbjo6TFRSKTsKICAgICB9CiAKICAgICBSZW5kZXJCb3gqIHRodW1i
ID0gaW5wdXQuc2xpZGVyVGh1bWJFbGVtZW50KCkgPyBpbnB1dC5zbGlkZXJUaHVtYkVsZW1lbnQo
KS0+cmVuZGVyQm94KCkgOiBudWxscHRyOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCShyZXZpc2lvbiAy
MzQ1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxl
bWVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksNyArMTA5LDcgQEAgc3RkOjpvcHRpb25h
bDxFbGVtZW50U3R5bGU+IFRleHRDb250cm9sSQogICAgIG5ld1N0eWxlLT5zZXRGbGV4R3Jvdygx
KTsKICAgICBuZXdTdHlsZS0+c2V0TWluV2lkdGgoTGVuZ3RoIHsgMCwgRml4ZWQgfSk7IC8vIE5l
ZWRlZCBmb3IgY29ycmVjdCBzaHJpbmtpbmcuCiAgICAgbmV3U3R5bGUtPnNldERpc3BsYXkoRGlz
cGxheVR5cGU6OkJsb2NrKTsKLSAgICBuZXdTdHlsZS0+c2V0RGlyZWN0aW9uKExUUik7CisgICAg
bmV3U3R5bGUtPnNldERpcmVjdGlvbihUZXh0RGlyZWN0aW9uOjpMVFIpOwogICAgIC8vIFdlIGRv
bid0IHdhbnQgdGhlIHNoYWRvdyBET00gdG8gYmUgZWRpdGFibGUsIHNvIHdlIHNldCB0aGlzIGJs
b2NrIHRvIHJlYWQtb25seSBpbiBjYXNlIHRoZSBpbnB1dCBpdHNlbGYgaXMgZWRpdGFibGUuCiAg
ICAgbmV3U3R5bGUtPnNldFVzZXJNb2RpZnkoVXNlck1vZGlmeTo6UmVhZE9ubHkpOwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGFnZS9DaHJvbWUuY3BwCShyZXZpc2lvbiAyMzQ1MTQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0Nocm9tZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1Niw3ICszNTYsNyBAQCB2b2lk
IENocm9tZTo6c2V0VG9vbFRpcChjb25zdCBIaXRUZXN0UmVzCiAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoZm9ybS0+cmVuZGVyZXIoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
b29sVGlwRGlyZWN0aW9uID0gZm9ybS0+cmVuZGVyZXIoKS0+c3R5bGUoKS5kaXJlY3Rpb24oKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0b29sVGlwRGlyZWN0aW9uID0gTFRSOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRv
b2xUaXBEaXJlY3Rpb24gPSBUZXh0RGlyZWN0aW9uOjpMVFI7CiAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0zNjcsNyArMzY3LDcgQEAg
dm9pZCBDaHJvbWU6OnNldFRvb2xUaXAoY29uc3QgSGl0VGVzdFJlcwogICAgICAgICAgICAgLy8g
RklYTUU6IE5lZWQgdG8gcGFzcyB0aGlzIFVSTCB0aHJvdWdoIHVzZXJWaXNpYmxlU3RyaW5nIG9u
Y2UgdGhhdCdzIGluIFdlYkNvcmUKICAgICAgICAgICAgIHRvb2xUaXAgPSByZXN1bHQuYWJzb2x1
dGVMaW5rVVJMKCkuc3RyaW5nKCk7CiAgICAgICAgICAgICAvLyBVUkwgYWx3YXlzIGRpc3BsYXkg
YXMgTFRSLgotICAgICAgICAgICAgdG9vbFRpcERpcmVjdGlvbiA9IExUUjsKKyAgICAgICAgICAg
IHRvb2xUaXBEaXJlY3Rpb24gPSBUZXh0RGlyZWN0aW9uOjpMVFI7CiAgICAgICAgIH0KICAgICB9
CiAKQEAgLTM4OSw3ICszODksNyBAQCB2b2lkIENocm9tZTo6c2V0VG9vbFRpcChjb25zdCBIaXRU
ZXN0UmVzCiAgICAgICAgICAgICAgICAgLy8gaW1wbGVtZW50YXRpb25zIGRvbid0IHVzZSB0ZXh0
IGRpcmVjdGlvbiBpbmZvcm1hdGlvbiBmb3IKICAgICAgICAgICAgICAgICAvLyBDaHJvbWVDbGll
bnQ6OnNldFRvb2xUaXAuIFdlJ2xsIHdvcmsgb24gdG9vbHRpcCB0ZXh0CiAgICAgICAgICAgICAg
ICAgLy8gZGlyZWN0aW9uIGR1cmluZyBiaWRpIGNsZWFudXAgaW4gZm9ybSBpbnB1dHMuCi0gICAg
ICAgICAgICAgICAgdG9vbFRpcERpcmVjdGlvbiA9IExUUjsKKyAgICAgICAgICAgICAgICB0b29s
VGlwRGlyZWN0aW9uID0gVGV4dERpcmVjdGlvbjo6TFRSOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkocmV2aXNpb24gMjM0
NTE0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNjIsNyArMTYyLDcgQEAgUGFnaW5hdGlvbjo6TW9kZSBwYWdpbmF0aW9uTW9kZUZvclJl
bmRlcgogICAgIC8vIGlzIGhvcml6b250YWwsIHRoZW4gd2UgdXNlIFRleHREaXJlY3Rpb24gdG8g
Y2hvb3NlIGJldHdlZW4gdGhvc2Ugb3B0aW9ucy4gSWYgdGhlIFdyaXRpbmdNb2RlCiAgICAgLy8g
aXMgdmVydGljYWwsIHRoZW4gdGhlIGRpcmVjdGlvbiBvZiB0aGUgdmVydGljYWxpdHkgZGljdGF0
ZXMgdGhlIGNob2ljZS4KICAgICBpZiAob3ZlcmZsb3cgPT0gT3ZlcmZsb3c6OlBhZ2VkWCkgewot
ICAgICAgICBpZiAoKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlICYmIHRleHREaXJlY3Rpb24gPT0g
TFRSKSB8fCB3cml0aW5nTW9kZSA9PSBMZWZ0VG9SaWdodFdyaXRpbmdNb2RlKQorICAgICAgICBp
ZiAoKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlICYmIHRleHREaXJlY3Rpb24gPT0gVGV4dERpcmVj
dGlvbjo6TFRSKSB8fCB3cml0aW5nTW9kZSA9PSBMZWZ0VG9SaWdodFdyaXRpbmdNb2RlKQogICAg
ICAgICAgICAgcmV0dXJuIFBhZ2luYXRpb246OkxlZnRUb1JpZ2h0UGFnaW5hdGVkOwogICAgICAg
ICByZXR1cm4gUGFnaW5hdGlvbjo6UmlnaHRUb0xlZnRQYWdpbmF0ZWQ7CiAgICAgfQpAQCAtMTcw
LDcgKzE3MCw3IEBAIFBhZ2luYXRpb246Ok1vZGUgcGFnaW5hdGlvbk1vZGVGb3JSZW5kZXIKICAg
ICAvLyBwYWdlZC15IGFsd2F5cyBjb3JyZXNwb25kcyB0byBUb3BUb0JvdHRvbVBhZ2luYXRlZCBv
ciBCb3R0b21Ub1RvcFBhZ2luYXRlZC4gSWYgdGhlIFdyaXRpbmdNb2RlCiAgICAgLy8gaXMgaG9y
aXpvbnRhbCwgdGhlbiB0aGUgZGlyZWN0aW9uIG9mIHRoZSBob3Jpem9udGFsaXR5IGRpY3RhdGVz
IHRoZSBjaG9pY2UuIElmIHRoZSBXcml0aW5nTW9kZQogICAgIC8vIGlzIHZlcnRpY2FsLCB0aGVu
IHdlIHVzZSBUZXh0RGlyZWN0aW9uIHRvIGNob29zZSBiZXR3ZWVuIHRob3NlIG9wdGlvbnMuIAot
ICAgIGlmICh3cml0aW5nTW9kZSA9PSBUb3BUb0JvdHRvbVdyaXRpbmdNb2RlIHx8ICghaXNIb3Jp
em9udGFsV3JpdGluZ01vZGUgJiYgdGV4dERpcmVjdGlvbiA9PSBSVEwpKQorICAgIGlmICh3cml0
aW5nTW9kZSA9PSBUb3BUb0JvdHRvbVdyaXRpbmdNb2RlIHx8ICghaXNIb3Jpem9udGFsV3JpdGlu
Z01vZGUgJiYgdGV4dERpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpSVEwpKQogICAgICAgICBy
ZXR1cm4gUGFnaW5hdGlvbjo6VG9wVG9Cb3R0b21QYWdpbmF0ZWQ7CiAgICAgcmV0dXJuIFBhZ2lu
YXRpb246OkJvdHRvbVRvVG9wUGFnaW5hdGVkOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9TZXR0aW5ncy55YW1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGlu
Z3MueWFtbAkocmV2aXNpb24gMjM0NTE0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5n
cy55YW1sCSh3b3JraW5nIGNvcHkpCkBAIC01MDgsNyArNTA4LDcgQEAgdXNlckludGVyZmFjZURp
cmVjdGlvblBvbGljeToKICAgaW5pdGlhbDogVXNlckludGVyZmFjZURpcmVjdGlvblBvbGljeTo6
Q29udGVudAogc3lzdGVtTGF5b3V0RGlyZWN0aW9uOgogICB0eXBlOiBUZXh0RGlyZWN0aW9uCi0g
IGluaXRpYWw6IExUUgorICBpbml0aWFsOiBUZXh0RGlyZWN0aW9uOjpMVFIKIAogYWxsb3dDb250
ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2VTdGFyVG9NYXRjaEFueVByb3RvY29sOgogICBpbml0aWFs
OiBmYWxzZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVjdEVkZ2VzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVjdEVkZ2VzLmgJKHJldmlzaW9uIDIz
NDUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlY3RFZGdlcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC01OSwxOCArNTksMTggQEAgcHVibGljOgogICAgIAogICAgIFQmIGJlZm9yZShXcml0
aW5nTW9kZSB3cml0aW5nTW9kZSkgeyByZXR1cm4gYXQobWFwTG9naWNhbFNpZGVUb1BoeXNpY2Fs
U2lkZSh3cml0aW5nTW9kZSwgTG9naWNhbEJveFNpZGU6OkJlZm9yZSkpOyB9CiAgICAgVCYgYWZ0
ZXIoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUpIHsgcmV0dXJuIGF0KG1hcExvZ2ljYWxTaWRlVG9Q
aHlzaWNhbFNpZGUod3JpdGluZ01vZGUsIExvZ2ljYWxCb3hTaWRlOjpBZnRlcikpOyB9Ci0gICAg
VCYgc3RhcnQoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9u
ID0gTFRSKSB7IHJldHVybiBhdChtYXBMb2dpY2FsU2lkZVRvUGh5c2ljYWxTaWRlKG1ha2VUZXh0
Rmxvdyh3cml0aW5nTW9kZSwgZGlyZWN0aW9uKSwgTG9naWNhbEJveFNpZGU6OlN0YXJ0KSk7IH0K
LSAgICBUJiBlbmQoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb24gZGlyZWN0
aW9uID0gTFRSKSB7IHJldHVybiBhdChtYXBMb2dpY2FsU2lkZVRvUGh5c2ljYWxTaWRlKG1ha2VU
ZXh0Rmxvdyh3cml0aW5nTW9kZSwgZGlyZWN0aW9uKSwgTG9naWNhbEJveFNpZGU6OkVuZCkpOyB9
CisgICAgVCYgc3RhcnQoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb24gZGly
ZWN0aW9uID0gVGV4dERpcmVjdGlvbjo6TFRSKSB7IHJldHVybiBhdChtYXBMb2dpY2FsU2lkZVRv
UGh5c2ljYWxTaWRlKG1ha2VUZXh0Rmxvdyh3cml0aW5nTW9kZSwgZGlyZWN0aW9uKSwgTG9naWNh
bEJveFNpZGU6OlN0YXJ0KSk7IH0KKyAgICBUJiBlbmQoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUs
IFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gVGV4dERpcmVjdGlvbjo6TFRSKSB7IHJldHVybiBh
dChtYXBMb2dpY2FsU2lkZVRvUGh5c2ljYWxTaWRlKG1ha2VUZXh0Rmxvdyh3cml0aW5nTW9kZSwg
ZGlyZWN0aW9uKSwgTG9naWNhbEJveFNpZGU6OkVuZCkpOyB9CiAgICAgCiAgICAgY29uc3QgVCYg
YmVmb3JlKFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKSBjb25zdCB7IHJldHVybiBhdChtYXBMb2dp
Y2FsU2lkZVRvUGh5c2ljYWxTaWRlKHdyaXRpbmdNb2RlLCBMb2dpY2FsQm94U2lkZTo6QmVmb3Jl
KSk7IH0KICAgICBjb25zdCBUJiBhZnRlcihXcml0aW5nTW9kZSB3cml0aW5nTW9kZSkgY29uc3Qg
eyByZXR1cm4gYXQobWFwTG9naWNhbFNpZGVUb1BoeXNpY2FsU2lkZSh3cml0aW5nTW9kZSwgTG9n
aWNhbEJveFNpZGU6OkFmdGVyKSk7IH0KLSAgICBjb25zdCBUJiBzdGFydChXcml0aW5nTW9kZSB3
cml0aW5nTW9kZSwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBMVFIpIGNvbnN0IHsgcmV0dXJu
IGF0KG1hcExvZ2ljYWxTaWRlVG9QaHlzaWNhbFNpZGUobWFrZVRleHRGbG93KHdyaXRpbmdNb2Rl
LCBkaXJlY3Rpb24pLCBMb2dpY2FsQm94U2lkZTo6U3RhcnQpKTsgfQotICAgIGNvbnN0IFQmIGVu
ZChXcml0aW5nTW9kZSB3cml0aW5nTW9kZSwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBMVFIp
IGNvbnN0IHsgcmV0dXJuIGF0KG1hcExvZ2ljYWxTaWRlVG9QaHlzaWNhbFNpZGUobWFrZVRleHRG
bG93KHdyaXRpbmdNb2RlLCBkaXJlY3Rpb24pLCBMb2dpY2FsQm94U2lkZTo6RW5kKSk7IH0KKyAg
ICBjb25zdCBUJiBzdGFydChXcml0aW5nTW9kZSB3cml0aW5nTW9kZSwgVGV4dERpcmVjdGlvbiBk
aXJlY3Rpb24gPSBUZXh0RGlyZWN0aW9uOjpMVFIpIGNvbnN0IHsgcmV0dXJuIGF0KG1hcExvZ2lj
YWxTaWRlVG9QaHlzaWNhbFNpZGUobWFrZVRleHRGbG93KHdyaXRpbmdNb2RlLCBkaXJlY3Rpb24p
LCBMb2dpY2FsQm94U2lkZTo6U3RhcnQpKTsgfQorICAgIGNvbnN0IFQmIGVuZChXcml0aW5nTW9k
ZSB3cml0aW5nTW9kZSwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBUZXh0RGlyZWN0aW9uOjpM
VFIpIGNvbnN0IHsgcmV0dXJuIGF0KG1hcExvZ2ljYWxTaWRlVG9QaHlzaWNhbFNpZGUobWFrZVRl
eHRGbG93KHdyaXRpbmdNb2RlLCBkaXJlY3Rpb24pLCBMb2dpY2FsQm94U2lkZTo6RW5kKSk7IH0K
ICAgICAKICAgICB2b2lkIHNldEJlZm9yZShjb25zdCBUJiBiZWZvcmUsIFdyaXRpbmdNb2RlIHdy
aXRpbmdNb2RlKSB7IHRoaXMtPmJlZm9yZSh3cml0aW5nTW9kZSkgPSBiZWZvcmU7IH0KICAgICB2
b2lkIHNldEFmdGVyKGNvbnN0IFQmIGFmdGVyLCBXcml0aW5nTW9kZSB3cml0aW5nTW9kZSkgeyB0
aGlzLT5hZnRlcih3cml0aW5nTW9kZSkgPSBhZnRlcjsgfQotICAgIHZvaWQgc2V0U3RhcnQoY29u
c3QgVCYgc3RhcnQsIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBUZXh0RGlyZWN0aW9uIGRpcmVj
dGlvbiA9IExUUikgeyB0aGlzLT5zdGFydCh3cml0aW5nTW9kZSwgZGlyZWN0aW9uKSA9IHN0YXJ0
OyB9Ci0gICAgdm9pZCBzZXRFbmQoY29uc3QgVCYgZW5kLCBXcml0aW5nTW9kZSB3cml0aW5nTW9k
ZSwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBMVFIpIHsgdGhpcy0+ZW5kKHdyaXRpbmdNb2Rl
LCBkaXJlY3Rpb24pID0gZW5kOyB9CisgICAgdm9pZCBzZXRTdGFydChjb25zdCBUJiBzdGFydCwg
V3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gVGV4dERp
cmVjdGlvbjo6TFRSKSB7IHRoaXMtPnN0YXJ0KHdyaXRpbmdNb2RlLCBkaXJlY3Rpb24pID0gc3Rh
cnQ7IH0KKyAgICB2b2lkIHNldEVuZChjb25zdCBUJiBlbmQsIFdyaXRpbmdNb2RlIHdyaXRpbmdN
b2RlLCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IFRleHREaXJlY3Rpb246OkxUUikgeyB0aGlz
LT5lbmQod3JpdGluZ01vZGUsIGRpcmVjdGlvbikgPSBlbmQ7IH0KICAgICAKICAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgUmVjdEVkZ2VzJiBvdGhlcikgY29uc3QgeyByZXR1cm4gbV9zaWRlcyA9
PSBvdGhlci5tX3NpZGVzOyB9CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFJlY3RFZGdlcyYg
b3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fc2lkZXMgIT0gb3RoZXIubV9zaWRlczsgfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJJbnRlcmZhY2VMYXlvdXRE
aXJlY3Rpb24uaAkocmV2aXNpb24gMjM0NTE0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxMyAr
MjMsMTAgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZu
ZGVmIFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25faAotI2RlZmluZSBVc2VySW50ZXJmYWNl
TGF5b3V0RGlyZWN0aW9uX2gKKyNwcmFnbWEgb25jZQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWVudW0gY2xhc3MgVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiB7IExUUiwgUlRMIH07Citl
bnVtIGNsYXNzIFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24gOiB1aW50OF90IHsgTFRSLCBS
VEwgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gVXNlckludGVyZmFj
ZUxheW91dERpcmVjdGlvbl9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDIz
NDUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbXBsZXhUZXh0Q29u
dHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIENvbXBs
ZXhUZXh0Q29udHJvbGxlcjo6Y29tcHV0ZUV4cGFuCiAgICAgaWYgKCFtX2V4cGFuc2lvbikKICAg
ICAgICAgbV9leHBhbnNpb25QZXJPcHBvcnR1bml0eSA9IDA7CiAgICAgZWxzZSB7Ci0gICAgICAg
IHVuc2lnbmVkIGV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQgPSBGb250Q2FzY2FkZTo6ZXhwYW5z
aW9uT3Bwb3J0dW5pdHlDb3VudChtX3J1bi50ZXh0KCksIG1fcnVuLmx0cigpID8gTFRSIDogUlRM
LCBtX3J1bi5leHBhbnNpb25CZWhhdmlvcigpKS5maXJzdDsKKyAgICAgICAgdW5zaWduZWQgZXhw
YW5zaW9uT3Bwb3J0dW5pdHlDb3VudCA9IEZvbnRDYXNjYWRlOjpleHBhbnNpb25PcHBvcnR1bml0
eUNvdW50KG1fcnVuLnRleHQoKSwgbV9ydW4ubHRyKCkgPyBUZXh0RGlyZWN0aW9uOjpMVFIgOiBU
ZXh0RGlyZWN0aW9uOjpSVEwsIG1fcnVuLmV4cGFuc2lvbkJlaGF2aW9yKCkpLmZpcnN0OwogCiAg
ICAgICAgIGlmICghZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudCkKICAgICAgICAgICAgIG1fZXhw
YW5zaW9uUGVyT3Bwb3J0dW5pdHkgPSAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAkocmV2aXNpb24gMjM0NTE0KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDc0LDcgKzEwNzQsNyBAQCBzdGQ6OnBhaXI8dW5zaWduZWQsIGJvb2w+IEZvbnRD
YXNjYWRlOjplCiAgICAgICAgICsrY291bnQ7CiAgICAgICAgIGlzQWZ0ZXJFeHBhbnNpb24gPSB0
cnVlOwogICAgIH0KLSAgICBpZiAoZGlyZWN0aW9uID09IExUUikgeworICAgIGlmIChkaXJlY3Rp
b24gPT0gVGV4dERpcmVjdGlvbjo6TFRSKSB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBsZW5ndGg7ICsraSkgewogICAgICAgICAgICAgaWYgKHRyZWF0QXNTcGFjZShjaGFyYWN0
ZXJzW2ldKSkgewogICAgICAgICAgICAgICAgIGNvdW50Kys7CkBAIC0xMTExLDcgKzExMTEsNyBA
QCBzdGQ6OnBhaXI8dW5zaWduZWQsIGJvb2w+IEZvbnRDYXNjYWRlOjplCiAgICAgICAgICsrY291
bnQ7CiAgICAgICAgIGlzQWZ0ZXJFeHBhbnNpb24gPSB0cnVlOwogICAgIH0KLSAgICBpZiAoZGly
ZWN0aW9uID09IExUUikgeworICAgIGlmIChkaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRS
KSB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewogICAg
ICAgICAgICAgVUNoYXIzMiBjaGFyYWN0ZXIgPSBjaGFyYWN0ZXJzW2ldOwogICAgICAgICAgICAg
aWYgKHRyZWF0QXNTcGFjZShjaGFyYWN0ZXIpKSB7CkBAIC0xMTgyLDcgKzExODIsNyBAQCBib29s
IEZvbnRDYXNjYWRlOjpsZWFkaW5nRXhwYW5zaW9uT3Bwb3J0CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIFVDaGFyMzIgaW5pdGlhbENoYXJhY3RlcjsKLSAgICBpZiAoZGlyZWN0aW9uID09
IExUUikgeworICAgIGlmIChkaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSKSB7CiAgICAg
ICAgIGluaXRpYWxDaGFyYWN0ZXIgPSBzdHJpbmdWaWV3WzBdOwogICAgICAgICBpZiAoVTE2X0lT
X0xFQUQoaW5pdGlhbENoYXJhY3RlcikgJiYgc3RyaW5nVmlldy5sZW5ndGgoKSA+IDEgJiYgVTE2
X0lTX1RSQUlMKHN0cmluZ1ZpZXdbMV0pKQogICAgICAgICAgICAgaW5pdGlhbENoYXJhY3RlciA9
IFUxNl9HRVRfU1VQUExFTUVOVEFSWShpbml0aWFsQ2hhcmFjdGVyLCBzdHJpbmdWaWV3WzFdKTsK
QEAgLTEyMDEsNyArMTIwMSw3IEBAIGJvb2wgRm9udENhc2NhZGU6OnRyYWlsaW5nRXhwYW5zaW9u
T3Bwb3IKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgVUNoYXIzMiBmaW5hbENoYXJhY3Rl
cjsKLSAgICBpZiAoZGlyZWN0aW9uID09IExUUikgeworICAgIGlmIChkaXJlY3Rpb24gPT0gVGV4
dERpcmVjdGlvbjo6TFRSKSB7CiAgICAgICAgIGZpbmFsQ2hhcmFjdGVyID0gc3RyaW5nVmlld1tz
dHJpbmdWaWV3Lmxlbmd0aCgpIC0gMV07CiAgICAgICAgIGlmIChVMTZfSVNfVFJBSUwoZmluYWxD
aGFyYWN0ZXIpICYmIHN0cmluZ1ZpZXcubGVuZ3RoKCkgPiAxICYmIFUxNl9JU19MRUFEKHN0cmlu
Z1ZpZXdbc3RyaW5nVmlldy5sZW5ndGgoKSAtIDJdKSkKICAgICAgICAgICAgIGZpbmFsQ2hhcmFj
dGVyID0gVTE2X0dFVF9TVVBQTEVNRU5UQVJZKHN0cmluZ1ZpZXdbc3RyaW5nVmlldy5sZW5ndGgo
KSAtIDJdLCBmaW5hbENoYXJhY3Rlcik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAJKHJldmlzaW9uIDIzNDUxNCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTY4Myw3ICs2ODMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZHJhd0JpZGlUZXh0KGNvbnN0CiAgICAgd2hpbGUgKGJpZGlSdW4pIHsKICAgICAgICAgVGV4dFJ1
biBzdWJydW4gPSBydW4uc3ViUnVuKGJpZGlSdW4tPnN0YXJ0KCksIGJpZGlSdW4tPnN0b3AoKSAt
IGJpZGlSdW4tPnN0YXJ0KCkpOwogICAgICAgICBib29sIGlzUlRMID0gYmlkaVJ1bi0+bGV2ZWwo
KSAlIDI7Ci0gICAgICAgIHN1YnJ1bi5zZXREaXJlY3Rpb24oaXNSVEwgPyBSVEwgOiBMVFIpOwor
ICAgICAgICBzdWJydW4uc2V0RGlyZWN0aW9uKGlzUlRMID8gVGV4dERpcmVjdGlvbjo6UlRMIDog
VGV4dERpcmVjdGlvbjo6TFRSKTsKICAgICAgICAgc3VicnVuLnNldERpcmVjdGlvbmFsT3ZlcnJp
ZGUoYmlkaVJ1bi0+ZGlyT3ZlcnJpZGUoZmFsc2UpKTsKIAogICAgICAgICBmbG9hdCB3aWR0aCA9
IGZvbnQuZHJhd1RleHQoKnRoaXMsIHN1YnJ1biwgY3VyclBvaW50LCAwLCBzdGQ6Om51bGxvcHQs
IGN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9UZXh0UnVuLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvVGV4dFJ1bi5oCShyZXZpc2lvbiAyMzQ1MTQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0
LDcgQEAgc3RydWN0IFdpZHRoSXRlcmF0b3I7CiBjbGFzcyBUZXh0UnVuIHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBUZXh0UnVuKGNvbnN0IFN0
cmluZyYgdGV4dCwgZmxvYXQgeHBvcyA9IDAsIGZsb2F0IGV4cGFuc2lvbiA9IDAsIEV4cGFuc2lv
bkJlaGF2aW9yIGV4cGFuc2lvbkJlaGF2aW9yID0gRGVmYXVsdEV4cGFuc2lvbiwgVGV4dERpcmVj
dGlvbiBkaXJlY3Rpb24gPSBMVFIsIGJvb2wgZGlyZWN0aW9uYWxPdmVycmlkZSA9IGZhbHNlLCBi
b29sIGNoYXJhY3RlclNjYW5Gb3JDb2RlUGF0aCA9IHRydWUpCisgICAgZXhwbGljaXQgVGV4dFJ1
bihjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0IHhwb3MgPSAwLCBmbG9hdCBleHBhbnNpb24gPSAw
LCBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpb25CZWhhdmlvciA9IERlZmF1bHRFeHBhbnNpb24s
IFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gVGV4dERpcmVjdGlvbjo6TFRSLCBib29sIGRpcmVj
dGlvbmFsT3ZlcnJpZGUgPSBmYWxzZSwgYm9vbCBjaGFyYWN0ZXJTY2FuRm9yQ29kZVBhdGggPSB0
cnVlKQogICAgICAgICA6IG1fdGV4dCh0ZXh0KQogICAgICAgICAsIG1fdGFiU2l6ZSgwKQogICAg
ICAgICAsIG1feHBvcyh4cG9zKQpAQCAtNTIsMTQgKzUyLDE0IEBAIHB1YmxpYzoKICAgICAgICAg
LCBtX2V4cGFuc2lvbihleHBhbnNpb24pCiAgICAgICAgICwgbV9leHBhbnNpb25CZWhhdmlvcihl
eHBhbnNpb25CZWhhdmlvcikKICAgICAgICAgLCBtX2FsbG93VGFicyhmYWxzZSkKLSAgICAgICAg
LCBtX2RpcmVjdGlvbihkaXJlY3Rpb24pCisgICAgICAgICwgbV9kaXJlY3Rpb24oc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGRpcmVjdGlvbikpCiAgICAgICAgICwgbV9kaXJlY3Rpb25hbE92ZXJyaWRl
KGRpcmVjdGlvbmFsT3ZlcnJpZGUpCiAgICAgICAgICwgbV9jaGFyYWN0ZXJTY2FuRm9yQ29kZVBh
dGgoY2hhcmFjdGVyU2NhbkZvckNvZGVQYXRoKQogICAgICAgICAsIG1fZGlzYWJsZVNwYWNpbmco
ZmFsc2UpCiAgICAgewogICAgIH0KIAotICAgIGV4cGxpY2l0IFRleHRSdW4oU3RyaW5nVmlldyBz
dHJpbmdWaWV3LCBmbG9hdCB4cG9zID0gMCwgZmxvYXQgZXhwYW5zaW9uID0gMCwgRXhwYW5zaW9u
QmVoYXZpb3IgZXhwYW5zaW9uQmVoYXZpb3IgPSBEZWZhdWx0RXhwYW5zaW9uLCBUZXh0RGlyZWN0
aW9uIGRpcmVjdGlvbiA9IExUUiwgYm9vbCBkaXJlY3Rpb25hbE92ZXJyaWRlID0gZmFsc2UsIGJv
b2wgY2hhcmFjdGVyU2NhbkZvckNvZGVQYXRoID0gdHJ1ZSkKKyAgICBleHBsaWNpdCBUZXh0UnVu
KFN0cmluZ1ZpZXcgc3RyaW5nVmlldywgZmxvYXQgeHBvcyA9IDAsIGZsb2F0IGV4cGFuc2lvbiA9
IDAsIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbkJlaGF2aW9yID0gRGVmYXVsdEV4cGFuc2lv
biwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBUZXh0RGlyZWN0aW9uOjpMVFIsIGJvb2wgZGly
ZWN0aW9uYWxPdmVycmlkZSA9IGZhbHNlLCBib29sIGNoYXJhY3RlclNjYW5Gb3JDb2RlUGF0aCA9
IHRydWUpCiAgICAgICAgIDogVGV4dFJ1bihzdHJpbmdWaWV3LnRvU3RyaW5nV2l0aG91dENvcHlp
bmcoKSwgeHBvcywgZXhwYW5zaW9uLCBleHBhbnNpb25CZWhhdmlvciwgZGlyZWN0aW9uLCBkaXJl
Y3Rpb25hbE92ZXJyaWRlLCBjaGFyYWN0ZXJTY2FuRm9yQ29kZVBhdGgpCiAgICAgewogICAgIH0K
QEAgLTEwMywxNCArMTAzLDE0IEBAIHB1YmxpYzoKICAgICBmbG9hdCBleHBhbnNpb24oKSBjb25z
dCB7IHJldHVybiBtX2V4cGFuc2lvbjsgfQogICAgIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lv
bkJlaGF2aW9yKCkgY29uc3QgeyByZXR1cm4gbV9leHBhbnNpb25CZWhhdmlvcjsgfQogICAgIFRl
eHREaXJlY3Rpb24gZGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dERp
cmVjdGlvbj4obV9kaXJlY3Rpb24pOyB9Ci0gICAgYm9vbCBydGwoKSBjb25zdCB7IHJldHVybiBt
X2RpcmVjdGlvbiA9PSBSVEw7IH0KLSAgICBib29sIGx0cigpIGNvbnN0IHsgcmV0dXJuIG1fZGly
ZWN0aW9uID09IExUUjsgfQorICAgIGJvb2wgcnRsKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8VGV4dERpcmVjdGlvbj4obV9kaXJlY3Rpb24pID09IFRleHREaXJlY3Rpb246OlJUTDsgfQor
ICAgIGJvb2wgbHRyKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dERpcmVjdGlvbj4o
bV9kaXJlY3Rpb24pID09IFRleHREaXJlY3Rpb246OkxUUjsgfQogICAgIGJvb2wgZGlyZWN0aW9u
YWxPdmVycmlkZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlyZWN0aW9uYWxPdmVycmlkZTsgfQogICAg
IGJvb2wgY2hhcmFjdGVyU2NhbkZvckNvZGVQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9jaGFyYWN0
ZXJTY2FuRm9yQ29kZVBhdGg7IH0KICAgICBib29sIHNwYWNpbmdEaXNhYmxlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fZGlzYWJsZVNwYWNpbmc7IH0KIAogICAgIHZvaWQgZGlzYWJsZVNwYWNpbmcoKSB7
IG1fZGlzYWJsZVNwYWNpbmcgPSB0cnVlOyB9Ci0gICAgdm9pZCBzZXREaXJlY3Rpb24oVGV4dERp
cmVjdGlvbiBkaXJlY3Rpb24pIHsgbV9kaXJlY3Rpb24gPSBkaXJlY3Rpb247IH0KKyAgICB2b2lk
IHNldERpcmVjdGlvbihUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbikgeyBtX2RpcmVjdGlvbiA9IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihkaXJlY3Rpb24pOyB9CiAgICAgdm9pZCBzZXREaXJlY3Rpb25h
bE92ZXJyaWRlKGJvb2wgb3ZlcnJpZGUpIHsgbV9kaXJlY3Rpb25hbE92ZXJyaWRlID0gb3ZlcnJp
ZGU7IH0KICAgICB2b2lkIHNldENoYXJhY3RlclNjYW5Gb3JDb2RlUGF0aChib29sIHNjYW4pIHsg
bV9jaGFyYWN0ZXJTY2FuRm9yQ29kZVBhdGggPSBzY2FuOyB9CiAgICAgU3RyaW5nVmlldyB0ZXh0
KCkgY29uc3QgeyByZXR1cm4gbV90ZXh0OyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9yLmNwcAkocmV2aXNpb24gMjM0NTE0KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJdGVyYXRvci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgV2lkdGhJdGVyYXRvcjo6V2lkdGhJdGVyYXRv
cihjb25zdCBGb250QwogICAgIGlmICghbV9leHBhbnNpb24pCiAgICAgICAgIG1fZXhwYW5zaW9u
UGVyT3Bwb3J0dW5pdHkgPSAwOwogICAgIGVsc2UgewotICAgICAgICB1bnNpZ25lZCBleHBhbnNp
b25PcHBvcnR1bml0eUNvdW50ID0gRm9udENhc2NhZGU6OmV4cGFuc2lvbk9wcG9ydHVuaXR5Q291
bnQobV9ydW4udGV4dCgpLCBtX3J1bi5sdHIoKSA/IExUUiA6IFJUTCwgcnVuLmV4cGFuc2lvbkJl
aGF2aW9yKCkpLmZpcnN0OworICAgICAgICB1bnNpZ25lZCBleHBhbnNpb25PcHBvcnR1bml0eUNv
dW50ID0gRm9udENhc2NhZGU6OmV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQobV9ydW4udGV4dCgp
LCBtX3J1bi5sdHIoKSA/IFRleHREaXJlY3Rpb246OkxUUiA6IFRleHREaXJlY3Rpb246OlJUTCwg
cnVuLmV4cGFuc2lvbkJlaGF2aW9yKCkpLmZpcnN0OwogCiAgICAgICAgIGlmICghZXhwYW5zaW9u
T3Bwb3J0dW5pdHlDb3VudCkKICAgICAgICAgICAgIG1fZXhwYW5zaW9uUGVyT3Bwb3J0dW5pdHkg
PSAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1NlbGVjdGlvblJlY3QuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TZWxlY3Rpb25SZWN0
LmNwcAkocmV2aXNpb24gMjM0NTE0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Nl
bGVjdGlvblJlY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogU2VsZWN0aW9uUmVjdDo6U2VsZWN0aW9uUmVjdChjb25zdCBJbnRSZWN0
JiByZWN0LCBib29sIGlzSG9yaXpvbnRhbCwgaW50IHBhZ2VOdW1iZXIpCiAgICAgOiBtX3JlY3Qo
cmVjdCkKLSAgICAsIG1fZGlyZWN0aW9uKExUUikKKyAgICAsIG1fZGlyZWN0aW9uKFRleHREaXJl
Y3Rpb246OkxUUikKICAgICAsIG1fbWluWCgwKQogICAgICwgbV9tYXhYKDApCiAgICAgLCBtX21h
eFkoMCkKQEAgLTcyLDcgKzcyLDcgQEAgU2VsZWN0aW9uUmVjdDo6U2VsZWN0aW9uUmVjdChjb25z
dCBJbnRSZQogfQogCiBTZWxlY3Rpb25SZWN0OjpTZWxlY3Rpb25SZWN0KCkKLSAgICA6IG1fZGly
ZWN0aW9uKExUUikKKyAgICA6IG1fZGlyZWN0aW9uKFRleHREaXJlY3Rpb246OkxUUikKICAgICAs
IG1fbWluWCgwKQogICAgICwgbV9tYXhYKDApCiAgICAgLCBtX21heFkoMCkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaVJlc29sdmVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpUmVzb2x2ZXIuaAkocmV2aXNpb24gMjM0NTE0
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpUmVzb2x2ZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtODYsMTAgKzg2LDEwIEBAIHN0cnVjdCBCaWRpU3RhdHVzIHsKICAgICAvLyBD
cmVhdGVzIGEgQmlkaVN0YXR1cyByZXByZXNlbnRpbmcgYSBuZXcgcGFyYWdyYXBoIHJvb3Qgd2l0
aCBhIGRlZmF1bHQgZGlyZWN0aW9uLgogICAgIC8vIFVzZXMgVGV4dERpcmVjdGlvbiBhcyBpdCBv
bmx5IGhhcyB0d28gcG9zc2liaWxpdGllcyBpbnN0ZWFkIG9mIFVDaGFyRGlyZWN0aW9uIHdoaWNo
IGhhcyBhdCBsZWFzdCAxOS4KICAgICBCaWRpU3RhdHVzKFRleHREaXJlY3Rpb24gZGlyZWN0aW9u
LCBib29sIGlzT3ZlcnJpZGUpCi0gICAgICAgIDogZW9yKGRpcmVjdGlvbiA9PSBMVFIgPyBVX0xF
RlRfVE9fUklHSFQgOiBVX1JJR0hUX1RPX0xFRlQpCisgICAgICAgIDogZW9yKGRpcmVjdGlvbiA9
PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBVX0xFRlRfVE9fUklHSFQgOiBVX1JJR0hUX1RPX0xFRlQp
CiAgICAgICAgICwgbGFzdFN0cm9uZyhlb3IpCiAgICAgICAgICwgbGFzdChlb3IpCi0gICAgICAg
ICwgY29udGV4dChCaWRpQ29udGV4dDo6Y3JlYXRlKGRpcmVjdGlvbiA9PSBMVFIgPyAwIDogMSwg
ZW9yLCBpc092ZXJyaWRlKSkKKyAgICAgICAgLCBjb250ZXh0KEJpZGlDb250ZXh0OjpjcmVhdGUo
ZGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUiA/IDAgOiAxLCBlb3IsIGlzT3ZlcnJpZGUp
KQogICAgIHsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvU3Ry
aW5nV2l0aERpcmVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvU3RyaW5nV2l0aERpcmVjdGlvbi5oCShyZXZpc2lvbiAyMzQ1MTQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N0cmluZ1dpdGhEaXJlY3Rpb24uaAkod29ya2luZyBjb3B5
KQpAQCAtNDcsNyArNDcsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBTdHJpbmdX
aXRoRGlyZWN0aW9uIHsKICAgICBTdHJpbmcgc3RyaW5nOwotICAgIFRleHREaXJlY3Rpb24gZGly
ZWN0aW9uIHsgTFRSIH07CisgICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24geyBUZXh0RGlyZWN0
aW9uOjpMVFIgfTsKIH07CiAKIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgU3RyaW5nV2l0
aERpcmVjdGlvbiYgYSwgY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgYikKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvV3JpdGluZ01vZGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1dyaXRpbmdNb2RlLmgJKHJldmlzaW9uIDIzNDUxNCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvV3JpdGluZ01vZGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMzMsMTEgKzMzLDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotZW51bSBU
ZXh0RGlyZWN0aW9uIHsgTFRSLCBSVEwgfTsKK2VudW0gY2xhc3MgVGV4dERpcmVjdGlvbiA6IHVp
bnQ4X3QgeyBMVFIsIFJUTCB9OwogCiBpbmxpbmUgYm9vbCBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9u
KFRleHREaXJlY3Rpb24gZGlyZWN0aW9uKQogewotICAgIHJldHVybiBkaXJlY3Rpb24gPT0gTFRS
OworICAgIHJldHVybiBkaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSOwogfQogCiBlbnVt
IFdyaXRpbmdNb2RlIHsKQEAgLTQ3LDE5ICs0NywxOSBAQCBlbnVtIFdyaXRpbmdNb2RlIHsKICAg
ICBSaWdodFRvTGVmdFdyaXRpbmdNb2RlID0gMywgLy8gdmVydGljYWwtcmwKIH07CiAKLSNkZWZp
bmUgTUFLRV9URVhUX0ZMT1cod3JpdGluZ01vZGUsIGRpcmVjdGlvbikgICgod3JpdGluZ01vZGUp
IDw8IDEgfCAoZGlyZWN0aW9uKSkKKyNkZWZpbmUgTUFLRV9URVhUX0ZMT1cod3JpdGluZ01vZGUs
IGRpcmVjdGlvbikgICgod3JpdGluZ01vZGUpIDw8IDEgfCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
ZGlyZWN0aW9uKSkKIAogLy8gRGVmaW5lIHRoZSB0ZXh0IGZsb3cgaW4gdGVybXMgb2YgdGhlIHdy
aXRpbmcgbW9kZSBhbmQgdGhlIHRleHQgZGlyZWN0aW9uLiBUaGUgZmlyc3QKIC8vIHBhcnQgaXMg
dGhlIGxpbmUgZ3Jvd2luZyBkaXJlY3Rpb24gYW5kIHRoZSBzZWNvbmQgcGFydCBpcyB0aGUgYmxv
Y2sgZ3Jvd2luZyBkaXJlY3Rpb24uCiBlbnVtIFRleHRGbG93IHsKLSAgICBJbmxpbmVFYXN0Qmxv
Y2tTb3V0aCA9IE1BS0VfVEVYVF9GTE9XKFRvcFRvQm90dG9tV3JpdGluZ01vZGUsIExUUiksCi0g
ICAgSW5saW5lV2VzdEJsb2NrU291dGggPSBNQUtFX1RFWFRfRkxPVyhUb3BUb0JvdHRvbVdyaXRp
bmdNb2RlLCBSVEwpLAotICAgIElubGluZUVhc3RCbG9ja05vcnRoID0gTUFLRV9URVhUX0ZMT1co
Qm90dG9tVG9Ub3BXcml0aW5nTW9kZSwgTFRSKSwKLSAgICBJbmxpbmVXZXN0QmxvY2tOb3J0aCA9
IE1BS0VfVEVYVF9GTE9XKEJvdHRvbVRvVG9wV3JpdGluZ01vZGUsIFJUTCksCi0gICAgSW5saW5l
U291dGhCbG9ja0Vhc3QgPSBNQUtFX1RFWFRfRkxPVyhMZWZ0VG9SaWdodFdyaXRpbmdNb2RlLCBM
VFIpLAotICAgIElubGluZVNvdXRoQmxvY2tXZXN0ID0gTUFLRV9URVhUX0ZMT1coTGVmdFRvUmln
aHRXcml0aW5nTW9kZSwgUlRMKSwKLSAgICBJbmxpbmVOb3J0aEJsb2NrRWFzdCA9IE1BS0VfVEVY
VF9GTE9XKFJpZ2h0VG9MZWZ0V3JpdGluZ01vZGUsIExUUiksCi0gICAgSW5saW5lTm9ydGhCbG9j
a1dlc3QgPSBNQUtFX1RFWFRfRkxPVyhSaWdodFRvTGVmdFdyaXRpbmdNb2RlLCBSVEwpCisgICAg
SW5saW5lRWFzdEJsb2NrU291dGggPSBNQUtFX1RFWFRfRkxPVyhUb3BUb0JvdHRvbVdyaXRpbmdN
b2RlLCBUZXh0RGlyZWN0aW9uOjpMVFIpLAorICAgIElubGluZVdlc3RCbG9ja1NvdXRoID0gTUFL
RV9URVhUX0ZMT1coVG9wVG9Cb3R0b21Xcml0aW5nTW9kZSwgVGV4dERpcmVjdGlvbjo6UlRMKSwK
KyAgICBJbmxpbmVFYXN0QmxvY2tOb3J0aCA9IE1BS0VfVEVYVF9GTE9XKEJvdHRvbVRvVG9wV3Jp
dGluZ01vZGUsIFRleHREaXJlY3Rpb246OkxUUiksCisgICAgSW5saW5lV2VzdEJsb2NrTm9ydGgg
PSBNQUtFX1RFWFRfRkxPVyhCb3R0b21Ub1RvcFdyaXRpbmdNb2RlLCBUZXh0RGlyZWN0aW9uOjpS
VEwpLAorICAgIElubGluZVNvdXRoQmxvY2tFYXN0ID0gTUFLRV9URVhUX0ZMT1coTGVmdFRvUmln
aHRXcml0aW5nTW9kZSwgVGV4dERpcmVjdGlvbjo6TFRSKSwKKyAgICBJbmxpbmVTb3V0aEJsb2Nr
V2VzdCA9IE1BS0VfVEVYVF9GTE9XKExlZnRUb1JpZ2h0V3JpdGluZ01vZGUsIFRleHREaXJlY3Rp
b246OlJUTCksCisgICAgSW5saW5lTm9ydGhCbG9ja0Vhc3QgPSBNQUtFX1RFWFRfRkxPVyhSaWdo
dFRvTGVmdFdyaXRpbmdNb2RlLCBUZXh0RGlyZWN0aW9uOjpMVFIpLAorICAgIElubGluZU5vcnRo
QmxvY2tXZXN0ID0gTUFLRV9URVhUX0ZMT1coUmlnaHRUb0xlZnRXcml0aW5nTW9kZSwgVGV4dERp
cmVjdGlvbjo6UlRMKQogfTsKIAogaW5saW5lIFRleHRGbG93IG1ha2VUZXh0RmxvdyhXcml0aW5n
TW9kZSB3cml0aW5nTW9kZSwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pCkBAIC05MSwxMyArOTEs
MTMgQEAgaW5saW5lIGJvb2wgaXNWZXJ0aWNhbFRleHRGbG93KFRleHRGbG93IAogLy8gTGluZXMg
aGF2ZSB2ZXJ0aWNhbCBvcmllbnRhdGlvbjsgbW9kZXMgdmVydGljYWwtbHIgb3IgdmVydGljYWwt
cmwuCiBpbmxpbmUgYm9vbCBpc1ZlcnRpY2FsV3JpdGluZ01vZGUoV3JpdGluZ01vZGUgd3JpdGlu
Z01vZGUpCiB7Ci0gICAgcmV0dXJuIGlzVmVydGljYWxUZXh0RmxvdyhtYWtlVGV4dEZsb3cod3Jp
dGluZ01vZGUsIExUUikpOworICAgIHJldHVybiBpc1ZlcnRpY2FsVGV4dEZsb3cobWFrZVRleHRG
bG93KHdyaXRpbmdNb2RlLCBUZXh0RGlyZWN0aW9uOjpMVFIpKTsKIH0KIAogLy8gQmxvY2sgcHJv
Z3Jlc3Npb24gaW5jcmVhc2VzIGluIHRoZSBvcHBvc2l0ZSBkaXJlY3Rpb24gdG8gbm9ybWFsOyBt
b2RlcyB2ZXJ0aWNhbC1ybCBvciBob3Jpem9udGFsLWJ0LgogaW5saW5lIGJvb2wgaXNGbGlwcGVk
V3JpdGluZ01vZGUoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUpCiB7Ci0gICAgcmV0dXJuIGlzRmxp
cHBlZFRleHRGbG93KG1ha2VUZXh0Rmxvdyh3cml0aW5nTW9kZSwgTFRSKSk7CisgICAgcmV0dXJu
IGlzRmxpcHBlZFRleHRGbG93KG1ha2VUZXh0Rmxvdyh3cml0aW5nTW9kZSwgVGV4dERpcmVjdGlv
bjo6TFRSKSk7CiB9CiAKIC8vIExpbmVzIGhhdmUgaG9yaXpvbnRhbCBvcmllbnRhdGlvbjsgbW9k
ZXMgaG9yaXpvbnRhbC10YiBvciBob3Jpem9udGFsLWJ0LgpAQCAtMTYxLDcgKzE2MSw3IEBAIGlu
bGluZSBQaHlzaWNhbEJveFNpZGUgbWFwTG9naWNhbFNpZGVUb1AKIGlubGluZSBQaHlzaWNhbEJv
eFNpZGUgbWFwTG9naWNhbFNpZGVUb1BoeXNpY2FsU2lkZShXcml0aW5nTW9kZSB3cml0aW5nTW9k
ZSwgTG9naWNhbEJveFNpZGUgbG9naWNhbFNpZGUpCiB7CiAgICAgLy8gU2V0IHRoZSBkaXJlY3Rp
b24gc3VjaCB0aGF0IHNpZGUgaXMgbWlycm9yZWQgaWYgaXNGbGlwcGVkV3JpdGluZ01vZGUoKSBp
cyB0cnVlCi0gICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBpc0ZsaXBwZWRXcml0aW5nTW9k
ZSh3cml0aW5nTW9kZSkgPyBSVEwgOiBMVFI7CisgICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24g
PSBpc0ZsaXBwZWRXcml0aW5nTW9kZSh3cml0aW5nTW9kZSkgPyBUZXh0RGlyZWN0aW9uOjpSVEwg
OiBUZXh0RGlyZWN0aW9uOjpMVFI7CiAgICAgcmV0dXJuIG1hcExvZ2ljYWxTaWRlVG9QaHlzaWNh
bFNpZGUobWFrZVRleHRGbG93KHdyaXRpbmdNb2RlLCBkaXJlY3Rpb24pLCBsb2dpY2FsU2lkZSk7
CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAJ
KHJldmlzaW9uIDIzNDUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVz
dWx0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIwLDcgKzIyMCw3IEBAIFN0cmluZyBIaXRUZXN0
UmVzdWx0OjpzZWxlY3RlZFRleHQoKSBjb24KIAogU3RyaW5nIEhpdFRlc3RSZXN1bHQ6OnNwZWxs
aW5nVG9vbFRpcChUZXh0RGlyZWN0aW9uJiBkaXIpIGNvbnN0CiB7Ci0gICAgZGlyID0gTFRSOwor
ICAgIGRpciA9IFRleHREaXJlY3Rpb246OkxUUjsKICAgICAvLyBSZXR1cm4gdGhlIHRvb2wgdGlw
IHN0cmluZyBhc3NvY2lhdGVkIHdpdGggdGhpcyBwb2ludCwgaWYgYW55LiBPbmx5IG1hcmtlcnMg
YXNzb2NpYXRlZCB3aXRoIGJhZCBncmFtbWFyCiAgICAgLy8gY3VycmVudGx5IHN1cHBseSBzdHJp
bmdzLCBidXQgbWF5YmUgc29tZWRheSBtYXJrZXJzIGFzc29jaWF0ZWQgd2l0aCBtaXNzcGVsbGVk
IHdvcmRzIHdpbGwgYWxzby4KICAgICBpZiAoIW1faW5uZXJOb25TaGFyZWROb2RlKQpAQCAtMjUx
LDcgKzI1MSw3IEBAIFN0cmluZyBIaXRUZXN0UmVzdWx0OjpyZXBsYWNlZFN0cmluZygpIGMKICAg
ICAKIFN0cmluZyBIaXRUZXN0UmVzdWx0Ojp0aXRsZShUZXh0RGlyZWN0aW9uJiBkaXIpIGNvbnN0
CiB7Ci0gICAgZGlyID0gTFRSOworICAgIGRpciA9IFRleHREaXJlY3Rpb246OkxUUjsKICAgICAv
LyBGaW5kIHRoZSB0aXRsZSBpbiB0aGUgbmVhcmVzdCBlbmNsb3NpbmcgRE9NIG5vZGUuCiAgICAg
Ly8gRm9yIDxhcmVhPiB0YWdzIGluIGltYWdlIG1hcHMsIHdhbGsgdGhlIHRyZWUgZm9yIHRoZSA8
YXJlYT4sIG5vdCB0aGUgPGltZz4gdXNpbmcgaXQuCiAgICAgZm9yIChOb2RlKiB0aXRsZU5vZGUg
PSBtX2lubmVyTm9kZS5nZXQoKTsgdGl0bGVOb2RlOyB0aXRsZU5vZGUgPSB0aXRsZU5vZGUtPnBh
cmVudEluQ29tcG9zZWRUcmVlKCkpIHsKQEAgLTI5MCw3ICsyOTAsNyBAQCBTdHJpbmcgSGl0VGVz
dFJlc3VsdDo6aW5uZXJUZXh0SWZUcnVuY2F0CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBkaXIg
PSBMVFI7CisgICAgZGlyID0gVGV4dERpcmVjdGlvbjo6TFRSOwogICAgIHJldHVybiBTdHJpbmco
KTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVCb3guaAkocmV2aXNpb24g
MjM0NTE0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMTgsOCArMjE4LDggQEAgcHVibGljOgogCiAgICAgdW5zaWduZWQgY2hhciBi
aWRpTGV2ZWwoKSBjb25zdCB7IHJldHVybiBtX2JpdGZpZWxkcy5iaWRpRW1iZWRkaW5nTGV2ZWwo
KTsgfQogICAgIHZvaWQgc2V0QmlkaUxldmVsKHVuc2lnbmVkIGNoYXIgbGV2ZWwpIHsgbV9iaXRm
aWVsZHMuc2V0QmlkaUVtYmVkZGluZ0xldmVsKGxldmVsKTsgfQotICAgIFRleHREaXJlY3Rpb24g
ZGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gYmlkaUxldmVsKCkgJSAyID8gUlRMIDogTFRSOyB9
Ci0gICAgYm9vbCBpc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gZGlyZWN0
aW9uKCkgPT0gTFRSOyB9CisgICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24oKSBjb25zdCB7IHJl
dHVybiBiaWRpTGV2ZWwoKSAlIDIgPyBUZXh0RGlyZWN0aW9uOjpSVEwgOiBUZXh0RGlyZWN0aW9u
OjpMVFI7IH0KKyAgICBib29sIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSBjb25zdCB7IHJldHVy
biBkaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFI7IH0KICAgICBpbnQgY2FyZXRMZWZ0
bW9zdE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IGNh
cmV0TWluT2Zmc2V0KCkgOiBjYXJldE1heE9mZnNldCgpOyB9CiAgICAgaW50IGNhcmV0UmlnaHRt
b3N0T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpID8gY2Fy
ZXRNYXhPZmZzZXQoKSA6IGNhcmV0TWluT2Zmc2V0KCk7IH0KIApJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcAkocmV2aXNpb24gMjM0NTE0KQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjUxLDcgKzEyNTEsNyBAQCB2b2lkIElubGluZUZsb3dCb3g6OnBhaW50RmlsbExheWVyKGNv
bnN0CiAgICAgICAgIC8vIHRoZSBwcmV2aW91cyBsaW5lIGxlZnQgb2ZmLgogICAgICAgICBMYXlv
dXRVbml0IGxvZ2ljYWxPZmZzZXRPbkxpbmUgPSAwOwogICAgICAgICBMYXlvdXRVbml0IHRvdGFs
TG9naWNhbFdpZHRoOwotICAgICAgICBpZiAocmVuZGVyZXIoKS5zdHlsZSgpLmRpcmVjdGlvbigp
ID09IExUUikgeworICAgICAgICBpZiAocmVuZGVyZXIoKS5zdHlsZSgpLmRpcmVjdGlvbigpID09
IFRleHREaXJlY3Rpb246OkxUUikgewogICAgICAgICAgICAgZm9yIChJbmxpbmVGbG93Qm94KiBj
dXJyID0gcHJldkxpbmVCb3goKTsgY3VycjsgY3VyciA9IGN1cnItPnByZXZMaW5lQm94KCkpCiAg
ICAgICAgICAgICAgICAgbG9naWNhbE9mZnNldE9uTGluZSArPSBjdXJyLT5sb2dpY2FsV2lkdGgo
KTsKICAgICAgICAgICAgIHRvdGFsTG9naWNhbFdpZHRoID0gbG9naWNhbE9mZnNldE9uTGluZTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5oCShyZXZpc2lv
biAyMzQ1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaAko
d29ya2luZyBjb3B5KQpAQCAtMTQyLDggKzE0Miw4IEBAIGlubGluZSBib29sIG9wZXJhdG9yIT0o
Y29uc3QgSW5saW5lSXRlcmEKIHN0YXRpYyBpbmxpbmUgVUNoYXJEaXJlY3Rpb24gZW1iZWRDaGFy
RnJvbURpcmVjdGlvbihUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiwgRVVuaWNvZGVCaWRpIHVuaWNv
ZGVCaWRpKQogewogICAgIGlmICh1bmljb2RlQmlkaSA9PSBFbWJlZCkKLSAgICAgICAgcmV0dXJu
IGRpcmVjdGlvbiA9PSBSVEwgPyBVX1JJR0hUX1RPX0xFRlRfRU1CRURESU5HIDogVV9MRUZUX1RP
X1JJR0hUX0VNQkVERElORzsKLSAgICByZXR1cm4gZGlyZWN0aW9uID09IFJUTCA/IFVfUklHSFRf
VE9fTEVGVF9PVkVSUklERSA6IFVfTEVGVF9UT19SSUdIVF9PVkVSUklERTsKKyAgICAgICAgcmV0
dXJuIGRpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpSVEwgPyBVX1JJR0hUX1RPX0xFRlRfRU1C
RURESU5HIDogVV9MRUZUX1RPX1JJR0hUX0VNQkVERElORzsKKyAgICByZXR1cm4gZGlyZWN0aW9u
ID09IFRleHREaXJlY3Rpb246OlJUTCA/IFVfUklHSFRfVE9fTEVGVF9PVkVSUklERSA6IFVfTEVG
VF9UT19SSUdIVF9PVkVSUklERTsKIH0KIAogdGVtcGxhdGUgPGNsYXNzIE9ic2VydmVyPgpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAkocmV2aXNpb24g
MjM0NTE0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01OTIsNyArNTkyLDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWlu
dChQYWludEluZm8mIHBhaQogICAgICAgICAgICAgaWYgKCFpc0hvcml6b250YWwoKSkgewogICAg
ICAgICAgICAgICAgIHRleHREZWNvcmF0aW9uU2VsZWN0aW9uQ2xpcE91dFJlY3QubW92ZSgwLCBs
b2dpY2FsV2lkdGhCZWZvcmVSYW5nZSk7CiAgICAgICAgICAgICAgICAgdGV4dERlY29yYXRpb25T
ZWxlY3Rpb25DbGlwT3V0UmVjdC5zZXRIZWlnaHQobG9naWNhbFNlbGVjdGlvbldpZHRoKTsKLSAg
ICAgICAgICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uKCkgPT0gUlRMKSB7CisgICAgICAgICAgICB9
IGVsc2UgaWYgKGRpcmVjdGlvbigpID09IFRleHREaXJlY3Rpb246OlJUTCkgewogICAgICAgICAg
ICAgICAgIHRleHREZWNvcmF0aW9uU2VsZWN0aW9uQ2xpcE91dFJlY3QubW92ZShsb2dpY2FsV2lk
dGhBZnRlclJhbmdlLCAwKTsKICAgICAgICAgICAgICAgICB0ZXh0RGVjb3JhdGlvblNlbGVjdGlv
bkNsaXBPdXRSZWN0LnNldFdpZHRoKGxvZ2ljYWxTZWxlY3Rpb25XaWR0aCk7CiAgICAgICAgICAg
ICB9IGVsc2UgewpAQCAtMTEzOCw3ICsxMTM4LDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWlu
dENvbXBvc2l0aW9uVW5kZQogCiBzdGF0aWMgaW5saW5lIHZvaWQgbWlycm9yUlRMU2VnbWVudChm
bG9hdCBsb2dpY2FsV2lkdGgsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uLCBmbG9hdCYgc3RhcnQs
IGZsb2F0IHdpZHRoKQogewotICAgIGlmIChkaXJlY3Rpb24gPT0gTFRSKQorICAgIGlmIChkaXJl
Y3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSKQogICAgICAgICByZXR1cm47CiAgICAgc3RhcnQg
PSBsb2dpY2FsV2lkdGggLSB3aWR0aCAtIHN0YXJ0OwogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCShyZXZpc2lvbiAyMzQ1MTQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDk1LDcg
KzMwOTUsNyBAQCBjb25zdCBjaGFyKiBSZW5kZXJCbG9jazo6cmVuZGVyTmFtZSgpIGNvCiAKIFRl
eHRSdW4gUmVuZGVyQmxvY2s6OmNvbnN0cnVjdFRleHRSdW4oU3RyaW5nVmlldyBzdHJpbmdWaWV3
LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lvbiwg
VGV4dFJ1bkZsYWdzIGZsYWdzKQogewotICAgIFRleHREaXJlY3Rpb24gdGV4dERpcmVjdGlvbiA9
IExUUjsKKyAgICBhdXRvIHRleHREaXJlY3Rpb24gPSBUZXh0RGlyZWN0aW9uOjpMVFI7CiAgICAg
Ym9vbCBkaXJlY3Rpb25hbE92ZXJyaWRlID0gc3R5bGUucnRsT3JkZXJpbmcoKSA9PSBPcmRlcjo6
VmlzdWFsOwogICAgIGlmIChmbGFncyAhPSBEZWZhdWx0VGV4dFJ1bkZsYWdzKSB7CiAgICAgICAg
IGlmIChmbGFncyAmIFJlc3BlY3REaXJlY3Rpb24pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAkocmV2aXNpb24gMjM0NTE0
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTYwLDExICs2MCwxMSBAQCBzdGF0aWMgdm9pZCBkZXRlcm1pbmVE
aXJlY3Rpb25hbGl0eShUZXh0CiAgICAgICAgIGlmIChVQ2hhciBjdXJyZW50ID0gaXRlci5jdXJy
ZW50KCkpIHsKICAgICAgICAgICAgIFVDaGFyRGlyZWN0aW9uIGNoYXJEaXJlY3Rpb24gPSB1X2No
YXJEaXJlY3Rpb24oY3VycmVudCk7CiAgICAgICAgICAgICBpZiAoY2hhckRpcmVjdGlvbiA9PSBV
X0xFRlRfVE9fUklHSFQpIHsKLSAgICAgICAgICAgICAgICBkaXIgPSBMVFI7CisgICAgICAgICAg
ICAgICAgZGlyID0gVGV4dERpcmVjdGlvbjo6TFRSOwogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChjaGFyRGlyZWN0aW9uID09IFVfUklHSFRf
VE9fTEVGVCB8fCBjaGFyRGlyZWN0aW9uID09IFVfUklHSFRfVE9fTEVGVF9BUkFCSUMpIHsKLSAg
ICAgICAgICAgICAgICBkaXIgPSBSVEw7CisgICAgICAgICAgICAgICAgZGlyID0gVGV4dERpcmVj
dGlvbjo6UlRMOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQpAQCAtMzQ4LDcgKzM0OCw3IEBAIFRleHRBbGlnbk1vZGUgUmVuZGVyQmxvY2tGbG93Ojp0
ZXh0QWxpZ24KICNpZiBFTkFCTEUoQ1NTM19URVhUKQogICAgIFRleHRKdXN0aWZ5IHRleHRKdXN0
aWZ5ID0gc3R5bGUoKS50ZXh0SnVzdGlmeSgpOwogICAgIGlmIChhbGlnbm1lbnQgPT0gVGV4dEFs
aWduTW9kZTo6SnVzdGlmeSAmJiB0ZXh0SnVzdGlmeSA9PSBUZXh0SnVzdGlmeTo6Tm9uZSkKLSAg
ICAgICAgcmV0dXJuIHN0eWxlKCkuZGlyZWN0aW9uKCkgPT0gTFRSID8gVGV4dEFsaWduTW9kZTo6
TGVmdCA6IFRleHRBbGlnbk1vZGU6OlJpZ2h0OworICAgICAgICByZXR1cm4gc3R5bGUoKS5kaXJl
Y3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBUZXh0QWxpZ25Nb2RlOjpMZWZ0IDogVGV4
dEFsaWduTW9kZTo6UmlnaHQ7CiAjZW5kaWYKIAogICAgIGlmIChlbmRzV2l0aFNvZnRCcmVhaykK
QEAgLTY1MCwxMyArNjUwLDEzIEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93Ojp1cGRhdGVMb2dpY2Fs
V2lkdGgKICAgICAgICAgfQogICAgICAgICBGQUxMVEhST1VHSDsKICAgICBjYXNlIFRleHRBbGln
bk1vZGU6OlN0YXJ0OgotICAgICAgICBpZiAoZGlyZWN0aW9uID09IExUUikKKyAgICAgICAgaWYg
KGRpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpCiAgICAgICAgICAgICB1cGRhdGVMb2dp
Y2FsV2lkdGhGb3JMZWZ0QWxpZ25lZEJsb2NrKHN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVjdGlv
bigpLCB0cmFpbGluZ1NwYWNlUnVuLCBsb2dpY2FsTGVmdCwgdG90YWxMb2dpY2FsV2lkdGgsIGF2
YWlsYWJsZUxvZ2ljYWxXaWR0aCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHVwZGF0ZUxv
Z2ljYWxXaWR0aEZvclJpZ2h0QWxpZ25lZEJsb2NrKHN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVj
dGlvbigpLCB0cmFpbGluZ1NwYWNlUnVuLCBsb2dpY2FsTGVmdCwgdG90YWxMb2dpY2FsV2lkdGgs
IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVGV4dEFs
aWduTW9kZTo6RW5kOgotICAgICAgICBpZiAoZGlyZWN0aW9uID09IExUUikKKyAgICAgICAgaWYg
KGRpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpCiAgICAgICAgICAgICB1cGRhdGVMb2dp
Y2FsV2lkdGhGb3JSaWdodEFsaWduZWRCbG9jayhzdHlsZSgpLmlzTGVmdFRvUmlnaHREaXJlY3Rp
b24oKSwgdHJhaWxpbmdTcGFjZVJ1biwgbG9naWNhbExlZnQsIHRvdGFsTG9naWNhbFdpZHRoLCBh
dmFpbGFibGVMb2dpY2FsV2lkdGgpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB1cGRhdGVM
b2dpY2FsV2lkdGhGb3JMZWZ0QWxpZ25lZEJsb2NrKHN0eWxlKCkuaXNMZWZ0VG9SaWdodERpcmVj
dGlvbigpLCB0cmFpbGluZ1NwYWNlUnVuLCBsb2dpY2FsTGVmdCwgdG90YWxMb2dpY2FsV2lkdGgs
IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7CkBAIC0xMDYxLDcgKzEwNjEsNyBAQCBpbmxpbmUgQmlk
aVJ1biogUmVuZGVyQmxvY2tGbG93OjpoYW5kbGVUCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBzdHlsZSgpLmRpcmVjdGlvbigpOwotICAg
IGJvb2wgc2hvdWxkUmVvcmRlciA9IHRyYWlsaW5nU3BhY2VSdW4gIT0gKGRpcmVjdGlvbiA9PSBM
VFIgPyBiaWRpUnVucy5sYXN0UnVuKCkgOiBiaWRpUnVucy5maXJzdFJ1bigpKTsKKyAgICBib29s
IHNob3VsZFJlb3JkZXIgPSB0cmFpbGluZ1NwYWNlUnVuICE9IChkaXJlY3Rpb24gPT0gVGV4dERp
cmVjdGlvbjo6TFRSID8gYmlkaVJ1bnMubGFzdFJ1bigpIDogYmlkaVJ1bnMuZmlyc3RSdW4oKSk7
CiAgICAgaWYgKGZpcnN0U3BhY2UgIT0gdHJhaWxpbmdTcGFjZVJ1bi0+c3RhcnQoKSkgewogICAg
ICAgICBCaWRpQ29udGV4dCogYmFzZUNvbnRleHQgPSBjdXJyZW50Q29udGV4dDsKICAgICAgICAg
d2hpbGUgKEJpZGlDb250ZXh0KiBwYXJlbnQgPSBiYXNlQ29udGV4dC0+cGFyZW50KCkpCkBAIC0x
MDcwLDcgKzEwNzAsNyBAQCBpbmxpbmUgQmlkaVJ1biogUmVuZGVyQmxvY2tGbG93OjpoYW5kbGVU
CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxCaWRpUnVuPiBuZXdUcmFpbGluZ1J1biA9IHN0ZDo6
bWFrZV91bmlxdWU8QmlkaVJ1bj4oZmlyc3RTcGFjZSwgdHJhaWxpbmdTcGFjZVJ1bi0+bV9zdG9w
LCB0cmFpbGluZ1NwYWNlUnVuLT5yZW5kZXJlcigpLCBiYXNlQ29udGV4dCwgVV9PVEhFUl9ORVVU
UkFMKTsKICAgICAgICAgdHJhaWxpbmdTcGFjZVJ1bi0+bV9zdG9wID0gZmlyc3RTcGFjZTsKICAg
ICAgICAgdHJhaWxpbmdTcGFjZVJ1biA9IG5ld1RyYWlsaW5nUnVuLmdldCgpOwotICAgICAgICBp
ZiAoZGlyZWN0aW9uID09IExUUikKKyAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBUZXh0RGlyZWN0
aW9uOjpMVFIpCiAgICAgICAgICAgICBiaWRpUnVucy5hcHBlbmRSdW4oV1RGTW92ZShuZXdUcmFp
bGluZ1J1bikpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBiaWRpUnVucy5wcmVwZW5kUnVu
KFdURk1vdmUobmV3VHJhaWxpbmdSdW4pKTsKQEAgLTEwNzksNyArMTA3OSw3IEBAIGlubGluZSBC
aWRpUnVuKiBSZW5kZXJCbG9ja0Zsb3c6OmhhbmRsZVQKICAgICBpZiAoIXNob3VsZFJlb3JkZXIp
CiAgICAgICAgIHJldHVybiB0cmFpbGluZ1NwYWNlUnVuOwogCi0gICAgaWYgKGRpcmVjdGlvbiA9
PSBMVFIpIHsKKyAgICBpZiAoZGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUikgewogICAg
ICAgICBiaWRpUnVucy5tb3ZlUnVuVG9FbmQodHJhaWxpbmdTcGFjZVJ1bik7CiAgICAgICAgIHRy
YWlsaW5nU3BhY2VSdW4tPm1fbGV2ZWwgPSAwOwogICAgIH0gZWxzZSB7CkBAIC0xMzc4LDcgKzEz
NzgsNyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6bGF5b3V0UnVuc0FuZEZsb2F0CiAgICAgICAg
ICAgICBpZiAobGFzdFJvb3RCb3goKSkKICAgICAgICAgICAgICAgICBsYXN0Um9vdEJveCgpLT5z
ZXRMaW5lQnJlYWtJbmZvKGVuZC5yZW5kZXJlcigpLCBlbmQub2Zmc2V0KCksIHJlc29sdmVyLnN0
YXR1cygpKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFZpc3VhbERpcmVjdGlvbk92
ZXJyaWRlIG92ZXJyaWRlID0gKHN0eWxlVG9Vc2UucnRsT3JkZXJpbmcoKSA9PSBPcmRlcjo6Vmlz
dWFsID8gKHN0eWxlVG9Vc2UuZGlyZWN0aW9uKCkgPT0gTFRSID8gVmlzdWFsTGVmdFRvUmlnaHRP
dmVycmlkZSA6IFZpc3VhbFJpZ2h0VG9MZWZ0T3ZlcnJpZGUpIDogTm9WaXN1YWxPdmVycmlkZSk7
CisgICAgICAgICAgICBWaXN1YWxEaXJlY3Rpb25PdmVycmlkZSBvdmVycmlkZSA9IChzdHlsZVRv
VXNlLnJ0bE9yZGVyaW5nKCkgPT0gT3JkZXI6OlZpc3VhbCA/IChzdHlsZVRvVXNlLmRpcmVjdGlv
bigpID09IFRleHREaXJlY3Rpb246OkxUUiA/IFZpc3VhbExlZnRUb1JpZ2h0T3ZlcnJpZGUgOiBW
aXN1YWxSaWdodFRvTGVmdE92ZXJyaWRlKSA6IE5vVmlzdWFsT3ZlcnJpZGUpOwogCiAgICAgICAg
ICAgICBpZiAoaXNOZXdVQkFQYXJhZ3JhcGggJiYgc3R5bGVUb1VzZS51bmljb2RlQmlkaSgpID09
IFBsYWludGV4dCAmJiAhcmVzb2x2ZXIuY29udGV4dCgpLT5wYXJlbnQoKSkgewogICAgICAgICAg
ICAgICAgIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gc3R5bGVUb1VzZS5kaXJlY3Rpb24oKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCShyZXZpc2lvbiAyMzQ1
MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzMzMCw3ICszMzMwLDcgQEAgc3RhdGljIHZvaWQgY29tcHV0ZUlubGluZVN0YXRp
Y0Rpc3RhbmNlKAogICAgIC8vIGJvdGggImxlZnQiIGFuZCAicmlnaHQiIHByb3BlcnRpZXMgYXJl
ICJhdXRvIiwgd2UgY2FuIGNvbnNpZGVyIHRoYXQgb25lIG9mCiAgICAgLy8gdGhlbSAoZGVwZW5k
aW5nIG9uIHRoZSBkaXJlY3Rpb24pIGlzIHNpbXBseSAiMCIuCiAgICAgaWYgKHBhcmVudC0+aXNS
ZW5kZXJHcmlkKCkgJiYgcGFyZW50ID09IGNoaWxkLT5jb250YWluaW5nQmxvY2soKSkgewotICAg
ICAgICBpZiAocGFyZW50RGlyZWN0aW9uID09IExUUikKKyAgICAgICAgaWYgKHBhcmVudERpcmVj
dGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpCiAgICAgICAgICAgICBsb2dpY2FsTGVmdC5zZXRW
YWx1ZShGaXhlZCwgMCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGxvZ2ljYWxSaWdodC5z
ZXRWYWx1ZShGaXhlZCwgMCk7CkBAIC0zMzM4LDcgKzMzMzgsNyBAQCBzdGF0aWMgdm9pZCBjb21w
dXRlSW5saW5lU3RhdGljRGlzdGFuY2UoCiAgICAgfQogCiAgICAgLy8gRklYTUU6IFRoZSBzdGF0
aWMgZGlzdGFuY2UgY29tcHV0YXRpb24gaGFzIG5vdCBiZWVuIHBhdGNoZWQgZm9yIG1peGVkIHdy
aXRpbmcgbW9kZXMgeWV0LgotICAgIGlmIChwYXJlbnREaXJlY3Rpb24gPT0gTFRSKSB7CisgICAg
aWYgKHBhcmVudERpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpIHsKICAgICAgICAgTGF5
b3V0VW5pdCBzdGF0aWNQb3NpdGlvbiA9IGNoaWxkLT5sYXllcigpLT5zdGF0aWNJbmxpbmVQb3Np
dGlvbigpIC0gY29udGFpbmVyQmxvY2suYm9yZGVyTG9naWNhbExlZnQoKTsKICAgICAgICAgZm9y
IChhdXRvKiBjdXJyZW50ID0gcGFyZW50OyBjdXJyZW50ICYmIGN1cnJlbnQgIT0gJmNvbnRhaW5l
ckJsb2NrOyBjdXJyZW50ID0gY3VycmVudC0+Y29udGFpbmVyKCkpIHsKICAgICAgICAgICAgIGlm
ICghaXM8UmVuZGVyQm94PigqY3VycmVudCkpCkBAIC0zNTk3LDcgKzM1OTcsNyBAQCB2b2lkIFJl
bmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsCiAgICAgICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgICAgIC8vIFVzZSB0aGUgY29udGFpbmluZyBibG9jaydzIGRpcmVjdGlvbiBy
YXRoZXIgdGhhbiB0aGUgcGFyZW50IGJsb2NrJ3MKICAgICAgICAgICAgICAgICAvLyBwZXIgQ1NT
IDIuMSByZWZlcmVuY2UgdGVzdCBhYnNwb3Mtbm9uLXJlcGxhY2VkLXdpZHRoLW1hcmdpbi0wMDAu
Ci0gICAgICAgICAgICAgICAgaWYgKGNvbnRhaW5lckRpcmVjdGlvbiA9PSBMVFIpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoY29udGFpbmVyRGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUikg
ewogICAgICAgICAgICAgICAgICAgICBtYXJnaW5Mb2dpY2FsTGVmdFZhbHVlID0gMDsKICAgICAg
ICAgICAgICAgICAgICAgbWFyZ2luTG9naWNhbFJpZ2h0VmFsdWUgPSBhdmFpbGFibGVTcGFjZTsg
Ly8gd2lsbCBiZSBuZWdhdGl2ZQogICAgICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC0zNjIwLDcg
KzM2MjAsNyBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0ZVBvc2l0aW9uZWRMb2dpY2FsCiAKICAg
ICAgICAgICAgIC8vIFVzZSB0aGUgY29udGFpbmluZyBibG9jaydzIGRpcmVjdGlvbiByYXRoZXIg
dGhhbiB0aGUgcGFyZW50IGJsb2NrJ3MKICAgICAgICAgICAgIC8vIHBlciBDU1MgMi4xIHJlZmVy
ZW5jZSB0ZXN0IGFic3Bvcy1ub24tcmVwbGFjZWQtd2lkdGgtbWFyZ2luLTAwMC4KLSAgICAgICAg
ICAgIGlmIChjb250YWluZXJEaXJlY3Rpb24gPT0gUlRMKQorICAgICAgICAgICAgaWYgKGNvbnRh
aW5lckRpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpSVEwpCiAgICAgICAgICAgICAgICAgbG9n
aWNhbExlZnRWYWx1ZSA9IChhdmFpbGFibGVTcGFjZSArIGxvZ2ljYWxMZWZ0VmFsdWUpIC0gbWFy
Z2luTG9naWNhbExlZnRWYWx1ZSAtIG1hcmdpbkxvZ2ljYWxSaWdodFZhbHVlOwogICAgICAgICB9
CiAgICAgfSBlbHNlIHsKQEAgLTQwOTUsNyArNDA5NSw3IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21w
dXRlUG9zaXRpb25lZExvZ2ljYWwKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIFVz
ZSB0aGUgY29udGFpbmluZyBibG9jaydzIGRpcmVjdGlvbiByYXRoZXIgdGhhbiB0aGUgcGFyZW50
IGJsb2NrJ3MKICAgICAgICAgICAgIC8vIHBlciBDU1MgMi4xIHJlZmVyZW5jZSB0ZXN0IGFic3Bv
cy1yZXBsYWNlZC13aWR0aC1tYXJnaW4tMDAwLgotICAgICAgICAgICAgaWYgKGNvbnRhaW5lckRp
cmVjdGlvbiA9PSBMVFIpIHsKKyAgICAgICAgICAgIGlmIChjb250YWluZXJEaXJlY3Rpb24gPT0g
VGV4dERpcmVjdGlvbjo6TFRSKSB7CiAgICAgICAgICAgICAgICAgbWFyZ2luTG9naWNhbExlZnRB
bGlhcyA9IDA7CiAgICAgICAgICAgICAgICAgbWFyZ2luTG9naWNhbFJpZ2h0QWxpYXMgPSBkaWZm
ZXJlbmNlOyAvLyB3aWxsIGJlIG5lZ2F0aXZlCiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtNDE0
Myw3ICs0MTQzLDcgQEAgdm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbAog
ICAgICAgICBsb2dpY2FsUmlnaHRWYWx1ZSA9IHZhbHVlRm9yTGVuZ3RoKGxvZ2ljYWxSaWdodCwg
Y29udGFpbmVyTG9naWNhbFdpZHRoKTsKICAgICAgICAgbG9naWNhbExlZnRWYWx1ZSA9IHZhbHVl
Rm9yTGVuZ3RoKGxvZ2ljYWxMZWZ0LCBjb250YWluZXJMb2dpY2FsV2lkdGgpOwogICAgICAgICAv
LyBJZiB0aGUgY29udGFpbmluZyBibG9jayBpcyByaWdodC10by1sZWZ0LCB0aGVuIHB1c2ggdGhl
IGxlZnQgcG9zaXRpb24gYXMgZmFyIHRvIHRoZSByaWdodCBhcyBwb3NzaWJsZQotICAgICAgICBp
ZiAoY29udGFpbmVyRGlyZWN0aW9uID09IFJUTCkgeworICAgICAgICBpZiAoY29udGFpbmVyRGly
ZWN0aW9uID09IFRleHREaXJlY3Rpb246OlJUTCkgewogICAgICAgICAgICAgaW50IHRvdGFsTG9n
aWNhbFdpZHRoID0gY29tcHV0ZWRWYWx1ZXMubV9leHRlbnQgKyBsb2dpY2FsTGVmdFZhbHVlICsg
bG9naWNhbFJpZ2h0VmFsdWUgKyAgbWFyZ2luTG9naWNhbExlZnRBbGlhcyArIG1hcmdpbkxvZ2lj
YWxSaWdodEFsaWFzOwogICAgICAgICAgICAgbG9naWNhbExlZnRWYWx1ZSA9IGNvbnRhaW5lckxv
Z2ljYWxXaWR0aCAtICh0b3RhbExvZ2ljYWxXaWR0aCAtIGxvZ2ljYWxMZWZ0VmFsdWUpOwogICAg
ICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZs
ZXhpYmxlQm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcAkocmV2aXNpb24gMjM0NTE0KQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTk3Niw3ICs5NzYsNyBAQCB2b2lkIFJlbmRlckRlcHJlY2F0ZWRGbGV4aWJs
ZUJveDo6YXBwbHlMCiAgICAgICAgIGNoaWxkLT5sYXlvdXRJZk5lZWRlZCgpOwogCiAgICAgICAg
IC8vIEZJWE1FOiBGb3Igbm93IGRvbid0IHN1cHBvcnQgUlRMLgotICAgICAgICBpZiAoc3R5bGUo
KS5kaXJlY3Rpb24oKSAhPSBMVFIpCisgICAgICAgIGlmIChzdHlsZSgpLmRpcmVjdGlvbigpICE9
IFRleHREaXJlY3Rpb246OkxUUikKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIC8v
IEdldCB0aGUgbGFzdCBsaW5lCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RnJhZ21lbnRlZEZsb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJGcmFnbWVudGVkRmxvdy5jcHAJKHJldmlzaW9uIDIzNDUxNCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFnbWVudGVkRmxvdy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE2OCw3ICsxNjgsNyBAQCB2b2lkIFJlbmRlckZyYWdtZW50ZWRGbG93Ojp1cGRhdGVMb2dp
Y2FsCiAgICAgLy8gSWYgdGhlIGZyYWdtZW50cyBoYXZlIG5vbi11bmlmb3JtIGxvZ2ljYWwgd2lk
dGhzLCB0aGVuIGluc2VydCBpbnNldCBpbmZvcm1hdGlvbiBmb3IgdGhlIFJlbmRlckZyYWdtZW50
ZWRGbG93LgogICAgIGZvciAoYXV0byYgZnJhZ21lbnQgOiBtX2ZyYWdtZW50TGlzdCkgewogICAg
ICAgICBMYXlvdXRVbml0IGZyYWdtZW50TG9naWNhbFdpZHRoID0gZnJhZ21lbnQtPnBhZ2VMb2dp
Y2FsV2lkdGgoKTsKLSAgICAgICAgTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCA9IHN0eWxlKCkuZGly
ZWN0aW9uKCkgPT0gTFRSID8gTGF5b3V0VW5pdCgpIDogbG9naWNhbFdpZHRoIC0gZnJhZ21lbnRM
b2dpY2FsV2lkdGg7CisgICAgICAgIExheW91dFVuaXQgbG9naWNhbExlZnQgPSBzdHlsZSgpLmRp
cmVjdGlvbigpID09IFRleHREaXJlY3Rpb246OkxUUiA/IExheW91dFVuaXQoKSA6IGxvZ2ljYWxX
aWR0aCAtIGZyYWdtZW50TG9naWNhbFdpZHRoOwogICAgICAgICBmcmFnbWVudC0+c2V0UmVuZGVy
Qm94RnJhZ21lbnRJbmZvKHRoaXMsIGxvZ2ljYWxMZWZ0LCBmcmFnbWVudExvZ2ljYWxXaWR0aCwg
ZmFsc2UpOwogICAgIH0KIH0KQEAgLTc4Nyw3ICs3ODcsNyBAQCB2b2lkIFJlbmRlckZyYWdtZW50
ZWRGbG93Ojp1cGRhdGVGcmFnbWVuCiAgICAgICAgIExheW91dFVuaXQgZnJhZ21lbnRMb2dpY2Fs
V2lkdGggPSBmcmFnbWVudC0+cGFnZUxvZ2ljYWxXaWR0aCgpOwogICAgICAgICBMYXlvdXRVbml0
IGZyYWdtZW50TG9naWNhbEhlaWdodCA9IHN0ZDo6bWluPExheW91dFVuaXQ+KFJlbmRlckZyYWdt
ZW50ZWRGbG93OjptYXhMb2dpY2FsSGVpZ2h0KCkgLSBsb2dpY2FsSGVpZ2h0LCBmcmFnbWVudC0+
bG9naWNhbEhlaWdodE9mQWxsRnJhZ21lbnRlZEZsb3dDb250ZW50KCkpOwogCi0gICAgICAgIExh
eW91dFJlY3QgZnJhZ21lbnRSZWN0KHN0eWxlKCkuZGlyZWN0aW9uKCkgPT0gTFRSID8gTGF5b3V0
VW5pdCgpIDogbG9naWNhbFdpZHRoKCkgLSBmcmFnbWVudExvZ2ljYWxXaWR0aCwgbG9naWNhbEhl
aWdodCwgZnJhZ21lbnRMb2dpY2FsV2lkdGgsIGZyYWdtZW50TG9naWNhbEhlaWdodCk7CisgICAg
ICAgIExheW91dFJlY3QgZnJhZ21lbnRSZWN0KHN0eWxlKCkuZGlyZWN0aW9uKCkgPT0gVGV4dERp
cmVjdGlvbjo6TFRSID8gTGF5b3V0VW5pdCgpIDogbG9naWNhbFdpZHRoKCkgLSBmcmFnbWVudExv
Z2ljYWxXaWR0aCwgbG9naWNhbEhlaWdodCwgZnJhZ21lbnRMb2dpY2FsV2lkdGgsIGZyYWdtZW50
TG9naWNhbEhlaWdodCk7CiAKICAgICAgICAgZnJhZ21lbnQtPnNldEZyYWdtZW50ZWRGbG93UG9y
dGlvblJlY3QoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGZyYWdtZW50UmVjdCA6IGZyYWdt
ZW50UmVjdC50cmFuc3Bvc2VkUmVjdCgpKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcAkocmV2aXNpb24gMjM0NTE0
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNDUsNyArMjQ1LDcgQEAgYm9vbCBSZW5kZXJMYXllck1vZGVs
T2JqZWN0OjpzaG91bGRQbGFjZQogICAgIGNhc2UgVXNlckludGVyZmFjZURpcmVjdGlvblBvbGlj
eTo6Q29udGVudDoKICAgICAgICAgcmV0dXJuIHN0eWxlKCkuc2hvdWxkUGxhY2VCbG9ja0RpcmVj
dGlvblNjcm9sbGJhck9uTGVmdCgpOwogICAgIGNhc2UgVXNlckludGVyZmFjZURpcmVjdGlvblBv
bGljeTo6U3lzdGVtOgotICAgICAgICByZXR1cm4gc2V0dGluZ3MoKS5zeXN0ZW1MYXlvdXREaXJl
Y3Rpb24oKSA9PSBSVEw7CisgICAgICAgIHJldHVybiBzZXR0aW5ncygpLnN5c3RlbUxheW91dERp
cmVjdGlvbigpID09IFRleHREaXJlY3Rpb246OlJUTDsKICAgICB9CiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgcmV0dXJuIHN0eWxlKCkuc2hvdWxkUGxhY2VCbG9ja0RpcmVjdGlvblNj
cm9sbGJhck9uTGVmdCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1h
cnF1ZWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJN
YXJxdWVlLmNwcAkocmV2aXNpb24gMjM0NTE0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck1hcnF1ZWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQsOSArMTA0LDkgQEAgTWFy
cXVlZURpcmVjdGlvbiBSZW5kZXJNYXJxdWVlOjpkaXJlY3RpbwogICAgIGlmIChyZXN1bHQgPT0g
TWFycXVlZURpcmVjdGlvbjo6QXV0bykKICAgICAgICAgcmVzdWx0ID0gTWFycXVlZURpcmVjdGlv
bjo6QmFja3dhcmQ7CiAgICAgaWYgKHJlc3VsdCA9PSBNYXJxdWVlRGlyZWN0aW9uOjpGb3J3YXJk
KQotICAgICAgICByZXN1bHQgPSAoZGlyID09IExUUikgPyBNYXJxdWVlRGlyZWN0aW9uOjpSaWdo
dCA6IE1hcnF1ZWVEaXJlY3Rpb246OkxlZnQ7CisgICAgICAgIHJlc3VsdCA9IChkaXIgPT0gVGV4
dERpcmVjdGlvbjo6TFRSKSA/IE1hcnF1ZWVEaXJlY3Rpb246OlJpZ2h0IDogTWFycXVlZURpcmVj
dGlvbjo6TGVmdDsKICAgICBpZiAocmVzdWx0ID09IE1hcnF1ZWVEaXJlY3Rpb246OkJhY2t3YXJk
KQotICAgICAgICByZXN1bHQgPSAoZGlyID09IExUUikgPyBNYXJxdWVlRGlyZWN0aW9uOjpMZWZ0
IDogTWFycXVlZURpcmVjdGlvbjo6UmlnaHQ7CisgICAgICAgIHJlc3VsdCA9IChkaXIgPT0gVGV4
dERpcmVjdGlvbjo6TFRSKSA/IE1hcnF1ZWVEaXJlY3Rpb246OkxlZnQgOiBNYXJxdWVlRGlyZWN0
aW9uOjpSaWdodDsKICAgICAKICAgICAvLyBOb3cgd2UgaGF2ZSB0aGUgcmVhbCBkaXJlY3Rpb24u
ICBOZXh0IHdlIGNoZWNrIHRvIHNlZSBpZiB0aGUgaW5jcmVtZW50IGlzIG5lZ2F0aXZlLgogICAg
IC8vIElmIHNvLCB0aGVuIHdlIHJldmVyc2UgdGhlIGRpcmVjdGlvbi4KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcAkocmV2aXNpb24gMjM0NTE0KQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTI4LDE1ICsxMjgsMTUgQEAgdm9pZCBSZW5kZXJNZW51TGlzdDo6YWRqdXN0SW5u
ZXJTdHlsZSgpCiAgICAgICAgIC8vIEl0ZW1zIGluIHRoZSBwb3B1cCB3aWxsIG5vdCByZXNwZWN0
IHRoZSBDU1MgdGV4dC1hbGlnbiBhbmQgZGlyZWN0aW9uIHByb3BlcnRpZXMsCiAgICAgICAgIC8v
IHNvIHdlIG11c3QgYWRqdXN0IG91ciBvd24gc3R5bGUgdG8gbWF0Y2guCiAgICAgICAgIGlubmVy
U3R5bGUuc2V0VGV4dEFsaWduKFRleHRBbGlnbk1vZGU6OkxlZnQpOwotICAgICAgICBUZXh0RGly
ZWN0aW9uIGRpcmVjdGlvbiA9IChtX2J1dHRvblRleHQgJiYgbV9idXR0b25UZXh0LT50ZXh0KCku
ZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oKSA9PSBVX1JJR0hUX1RPX0xFRlQpID8gUlRMIDogTFRS
OworICAgICAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IChtX2J1dHRvblRleHQgJiYgbV9i
dXR0b25UZXh0LT50ZXh0KCkuZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oKSA9PSBVX1JJR0hUX1RP
X0xFRlQpID8gVGV4dERpcmVjdGlvbjo6UlRMIDogVGV4dERpcmVjdGlvbjo6TFRSOwogICAgICAg
ICBpbm5lclN0eWxlLnNldERpcmVjdGlvbihkaXJlY3Rpb24pOwogI2lmIFBMQVRGT1JNKElPUykK
ICAgICB9IGVsc2UgaWYgKGRvY3VtZW50KCkucGFnZSgpLT5jaHJvbWUoKS5zZWxlY3RJdGVtQWxp
Z25tZW50Rm9sbG93c01lbnVXcml0aW5nRGlyZWN0aW9uKCkpIHsKLSAgICAgICAgaW5uZXJTdHls
ZS5zZXRUZXh0QWxpZ24oc3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBMVFIgPyBUZXh0QWxpZ25Nb2Rl
OjpMZWZ0IDogVGV4dEFsaWduTW9kZTo6UmlnaHQpOworICAgICAgICBpbm5lclN0eWxlLnNldFRl
eHRBbGlnbihzdHlsZSgpLmRpcmVjdGlvbigpID09IFRleHREaXJlY3Rpb246OkxUUiA/IFRleHRB
bGlnbk1vZGU6OkxlZnQgOiBUZXh0QWxpZ25Nb2RlOjpSaWdodCk7CiAgICAgICAgIFRleHREaXJl
Y3Rpb24gZGlyZWN0aW9uOwogICAgICAgICBFVW5pY29kZUJpZGkgdW5pY29kZUJpZGk7CiAgICAg
ICAgIGlmIChtdWx0aXBsZSgpICYmIHNlbGVjdGVkT3B0aW9uQ291bnQoKnRoaXMpICE9IDEpIHsK
LSAgICAgICAgICAgIGRpcmVjdGlvbiA9IChtX2J1dHRvblRleHQgJiYgbV9idXR0b25UZXh0LT50
ZXh0KCkuZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oKSA9PSBVX1JJR0hUX1RPX0xFRlQpID8gUlRM
IDogTFRSOworICAgICAgICAgICAgZGlyZWN0aW9uID0gKG1fYnV0dG9uVGV4dCAmJiBtX2J1dHRv
blRleHQtPnRleHQoKS5kZWZhdWx0V3JpdGluZ0RpcmVjdGlvbigpID09IFVfUklHSFRfVE9fTEVG
VCkgPyBUZXh0RGlyZWN0aW9uOjpSVEwgOiBUZXh0RGlyZWN0aW9uOjpMVFI7CiAgICAgICAgICAg
ICB1bmljb2RlQmlkaSA9IFVCTm9ybWFsOwogICAgICAgICB9IGVsc2UgaWYgKG1fb3B0aW9uU3R5
bGUpIHsKICAgICAgICAgICAgIGRpcmVjdGlvbiA9IG1fb3B0aW9uU3R5bGUtPmRpcmVjdGlvbigp
OwpAQCAtNTc5LDcgKzU3OSw3IEBAIGNvbnN0IGludCBlbmRPZkxpbmVQYWRkaW5nID0gMjsKIAog
TGF5b3V0VW5pdCBSZW5kZXJNZW51TGlzdDo6Y2xpZW50UGFkZGluZ0xlZnQoKSBjb25zdAogewot
ICAgIGlmICgoc3R5bGUoKS5hcHBlYXJhbmNlKCkgPT0gTWVudWxpc3RQYXJ0IHx8IHN0eWxlKCku
YXBwZWFyYW5jZSgpID09IE1lbnVsaXN0QnV0dG9uUGFydCkgJiYgc3R5bGUoKS5kaXJlY3Rpb24o
KSA9PSBSVEwpIHsKKyAgICBpZiAoKHN0eWxlKCkuYXBwZWFyYW5jZSgpID09IE1lbnVsaXN0UGFy
dCB8fCBzdHlsZSgpLmFwcGVhcmFuY2UoKSA9PSBNZW51bGlzdEJ1dHRvblBhcnQpICYmIHN0eWxl
KCkuZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6UlRMKSB7CiAgICAgICAgIC8vIEZvciB0
aGVzZSBhcHBlYXJhbmNlIHZhbHVlcywgdGhlIHRoZW1lIGFwcGxpZXMgcGFkZGluZyB0byBsZWF2
ZSByb29tIGZvciB0aGUKICAgICAgICAgLy8gZHJvcC1kb3duIGJ1dHRvbi4gQnV0IGxlYXZpbmcg
cm9vbSBmb3IgdGhlIGJ1dHRvbiBpbnNpZGUgdGhlIHBvcHVwIG1lbnUgaXRzZWxmCiAgICAgICAg
IC8vIGxvb2tzIHN0cmFuZ2UsIHNvIHdlIHJldHVybiBhIHNtYWxsIGRlZmF1bHQgcGFkZGluZyB0
byBhdm9pZCBoYXZpbmcgYSBsYXJnZSBlbXB0eQpAQCAtNTkzLDcgKzU5Myw3IEBAIExheW91dFVu
aXQgUmVuZGVyTWVudUxpc3Q6OmNsaWVudFBhZGRpbmcKIAogTGF5b3V0VW5pdCBSZW5kZXJNZW51
TGlzdDo6Y2xpZW50UGFkZGluZ1JpZ2h0KCkgY29uc3QKIHsKLSAgICBpZiAoKHN0eWxlKCkuYXBw
ZWFyYW5jZSgpID09IE1lbnVsaXN0UGFydCB8fCBzdHlsZSgpLmFwcGVhcmFuY2UoKSA9PSBNZW51
bGlzdEJ1dHRvblBhcnQpICYmIHN0eWxlKCkuZGlyZWN0aW9uKCkgPT0gTFRSKQorICAgIGlmICgo
c3R5bGUoKS5hcHBlYXJhbmNlKCkgPT0gTWVudWxpc3RQYXJ0IHx8IHN0eWxlKCkuYXBwZWFyYW5j
ZSgpID09IE1lbnVsaXN0QnV0dG9uUGFydCkgJiYgc3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBUZXh0
RGlyZWN0aW9uOjpMVFIpCiAgICAgICAgIHJldHVybiBlbmRPZkxpbmVQYWRkaW5nOwogCiAgICAg
cmV0dXJuIHBhZGRpbmdSaWdodCgpICsgbV9pbm5lckJsb2NrLT5wYWRkaW5nUmlnaHQoKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0JKHJldmlzaW9u
IDIzNDUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQko
d29ya2luZyBjb3B5KQpAQCAtNTI5LDcgKzUyOSw3IEBAIGNvbnN0IGZsb2F0IE1lbnVMaXN0QnV0
dG9uUGFkZGluZ0FmdGVyID0KIExlbmd0aEJveCBSZW5kZXJUaGVtZUlPUzo6cG9wdXBJbnRlcm5h
bFBhZGRpbmdCb3goY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKSBjb25zdAogewogICAgIGlmIChz
dHlsZS5hcHBlYXJhbmNlKCkgPT0gTWVudWxpc3RCdXR0b25QYXJ0KSB7Ci0gICAgICAgIGlmIChz
dHlsZS5kaXJlY3Rpb24oKSA9PSBSVEwpCisgICAgICAgIGlmIChzdHlsZS5kaXJlY3Rpb24oKSA9
PSBUZXh0RGlyZWN0aW9uOjpSVEwpCiAgICAgICAgICAgICByZXR1cm4geyAwLCAwLCAwLCBzdGF0
aWNfY2FzdDxpbnQ+KE1lbnVMaXN0QnV0dG9uUGFkZGluZ0FmdGVyICsgc3R5bGUuYm9yZGVyVG9w
V2lkdGgoKSkgfTsKICAgICAgICAgcmV0dXJuIHsgMCwgc3RhdGljX2Nhc3Q8aW50PihNZW51TGlz
dEJ1dHRvblBhZGRpbmdBZnRlciArIHN0eWxlLmJvcmRlclRvcFdpZHRoKCkpLCAwLCAwIH07CiAg
ICAgfQpAQCAtNjMwLDcgKzYzMCw3IEBAIHZvaWQgUmVuZGVyVGhlbWVJT1M6OmFkanVzdE1lbnVM
aXN0QnV0dG8KIGJvb2wgUmVuZGVyVGhlbWVJT1M6OnBhaW50TWVudUxpc3RCdXR0b25EZWNvcmF0
aW9ucyhjb25zdCBSZW5kZXJCb3gmIGJveCwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKICAgICBhdXRvJiBzdHlsZSA9IGJveC5zdHlsZSgpOwot
ICAgIGJvb2wgaXNSVEwgPSBzdHlsZS5kaXJlY3Rpb24oKSA9PSBSVEw7CisgICAgYm9vbCBpc1JU
TCA9IHN0eWxlLmRpcmVjdGlvbigpID09IFRleHREaXJlY3Rpb246OlJUTDsKICAgICBmbG9hdCBi
b3JkZXJUb3BXaWR0aCA9IHN0eWxlLmJvcmRlclRvcFdpZHRoKCk7CiAgICAgRmxvYXRSZWN0IGNs
aXAocmVjdC54KCkgKyBzdHlsZS5ib3JkZXJMZWZ0V2lkdGgoKSwgcmVjdC55KCkgKyBzdHlsZS5i
b3JkZXJUb3BXaWR0aCgpLCByZWN0LndpZHRoKCkgLSBzdHlsZS5ib3JkZXJMZWZ0V2lkdGgoKSAt
IHN0eWxlLmJvcmRlclJpZ2h0V2lkdGgoKSwgcmVjdC5oZWlnaHQoKSAtIHN0eWxlLmJvcmRlclRv
cFdpZHRoKCkgLSBzdHlsZS5ib3JkZXJCb3R0b21XaWR0aCgpKTsKICAgICBDR0NvbnRleHRSZWYg
Y2dDb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0JKHJldmlzaW9uIDIz
NDUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQkod29y
a2luZyBjb3B5KQpAQCAtMTQ4NCw3ICsxNDg0LDcgQEAgdm9pZCBSZW5kZXJUaGVtZU1hYzo6cGFp
bnRNZW51TGlzdEJ1dHRvbgogCiBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludE1lbnVMaXN0QnV0
dG9uRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyQm94JiByZW5kZXJlciwgY29uc3QgUGFpbnRJbmZv
JiBwYWludEluZm8sIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKLSAgICBib29sIGlzUlRMID0g
cmVuZGVyZXIuc3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBSVEw7CisgICAgYm9vbCBpc1JUTCA9IHJl
bmRlcmVyLnN0eWxlKCkuZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6UlRMOwogICAgIElu
dFJlY3QgYm91bmRzID0gSW50UmVjdChyZWN0LngoKSArIHJlbmRlcmVyLnN0eWxlKCkuYm9yZGVy
TGVmdFdpZHRoKCksCiAgICAgICAgIHJlY3QueSgpICsgcmVuZGVyZXIuc3R5bGUoKS5ib3JkZXJU
b3BXaWR0aCgpLAogICAgICAgICByZWN0LndpZHRoKCkgLSByZW5kZXJlci5zdHlsZSgpLmJvcmRl
ckxlZnRXaWR0aCgpIC0gcmVuZGVyZXIuc3R5bGUoKS5ib3JkZXJSaWdodFdpZHRoKCksCkBAIC0x
NTkzLDcgKzE1OTMsNyBAQCB2b2lkIFJlbmRlclRoZW1lTWFjOjphZGp1c3RNZW51TGlzdFN0eWxl
CiBMZW5ndGhCb3ggUmVuZGVyVGhlbWVNYWM6OnBvcHVwSW50ZXJuYWxQYWRkaW5nQm94KGNvbnN0
IFJlbmRlclN0eWxlJiBzdHlsZSkgY29uc3QKIHsKICAgICBpZiAoc3R5bGUuYXBwZWFyYW5jZSgp
ID09IE1lbnVsaXN0UGFydCkgewotICAgICAgICBjb25zdCBpbnQqIHBhZGRpbmcgPSBwb3B1cEJ1
dHRvblBhZGRpbmcoY29udHJvbFNpemVGb3JGb250KHN0eWxlKSwgc3R5bGUuZGlyZWN0aW9uKCkg
PT0gUlRMKTsKKyAgICAgICAgY29uc3QgaW50KiBwYWRkaW5nID0gcG9wdXBCdXR0b25QYWRkaW5n
KGNvbnRyb2xTaXplRm9yRm9udChzdHlsZSksIHN0eWxlLmRpcmVjdGlvbigpID09IFRleHREaXJl
Y3Rpb246OlJUTCk7CiAgICAgICAgIHJldHVybiB7IHN0YXRpY19jYXN0PGludD4ocGFkZGluZ1t0
b3BQYWRkaW5nXSAqIHN0eWxlLmVmZmVjdGl2ZVpvb20oKSksCiAgICAgICAgICAgICBzdGF0aWNf
Y2FzdDxpbnQ+KHBhZGRpbmdbcmlnaHRQYWRkaW5nXSAqIHN0eWxlLmVmZmVjdGl2ZVpvb20oKSks
CiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KHBhZGRpbmdbYm90dG9tUGFkZGluZ10gKiBz
dHlsZS5lZmZlY3RpdmVab29tKCkpLApAQCAtMTYwNCw3ICsxNjA0LDcgQEAgTGVuZ3RoQm94IFJl
bmRlclRoZW1lTWFjOjpwb3B1cEludGVybmFsUAogICAgICAgICBmbG9hdCBhcnJvd1dpZHRoID0g
YmFzZUFycm93V2lkdGggKiAoc3R5bGUuY29tcHV0ZWRGb250UGl4ZWxTaXplKCkgLyBiYXNlRm9u
dFNpemUpOwogICAgICAgICBmbG9hdCByaWdodFBhZGRpbmcgPSBjZWlsZihhcnJvd1dpZHRoICsg
KGFycm93UGFkZGluZ0JlZm9yZSArIGFycm93UGFkZGluZ0FmdGVyICsgcGFkZGluZ0JlZm9yZVNl
cGFyYXRvcikgKiBzdHlsZS5lZmZlY3RpdmVab29tKCkpOwogICAgICAgICBmbG9hdCBsZWZ0UGFk
ZGluZyA9IHN0eWxlZFBvcHVwUGFkZGluZ0xlZnQgKiBzdHlsZS5lZmZlY3RpdmVab29tKCk7Ci0g
ICAgICAgIGlmIChzdHlsZS5kaXJlY3Rpb24oKSA9PSBSVEwpCisgICAgICAgIGlmIChzdHlsZS5k
aXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpSVEwpCiAgICAgICAgICAgICBzdGQ6OnN3YXAo
cmlnaHRQYWRkaW5nLCBsZWZ0UGFkZGluZyk7CiAgICAgICAgIHJldHVybiB7IHN0YXRpY19jYXN0
PGludD4oc3R5bGVkUG9wdXBQYWRkaW5nVG9wICogc3R5bGUuZWZmZWN0aXZlWm9vbSgpKSwKICAg
ICAgICAgICAgIHN0YXRpY19jYXN0PGludD4ocmlnaHRQYWRkaW5nKSwKQEAgLTE2NTEsNyArMTY1
MSw3IEBAIHZvaWQgUmVuZGVyVGhlbWVNYWM6OnNldFBvcHVwQnV0dG9uQ2VsbFMKICAgICAvLyBT
ZXQgdGhlIGNvbnRyb2wgc2l6ZSBiYXNlZCBvZmYgdGhlIHJlY3RhbmdsZSB3ZSdyZSBwYWludGlu
ZyBpbnRvLgogICAgIHNldENvbnRyb2xTaXplKHBvcHVwQnV0dG9uLCBwb3B1cEJ1dHRvblNpemVz
KCksIGJ1dHRvblNpemUsIG8uc3R5bGUoKS5lZmZlY3RpdmVab29tKCkpOwogCi0gICAgcG9wdXBC
dXR0b24udXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiA9IG8uc3R5bGUoKS5kaXJlY3Rpb24o
KSA9PSBMVFIgPyBOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25MZWZ0VG9SaWdodCA6IE5T
VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvblJpZ2h0VG9MZWZ0OworICAgIHBvcHVwQnV0dG9u
LnVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24gPSBvLnN0eWxlKCkuZGlyZWN0aW9uKCkgPT0g
VGV4dERpcmVjdGlvbjo6TFRSID8gTlNVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uTGVmdFRv
UmlnaHQgOiBOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25SaWdodFRvTGVmdDsKIAogICAg
IC8vIFVwZGF0ZSB0aGUgdmFyaW91cyBzdGF0ZXMgd2UgcmVzcG9uZCB0by4KICAgICB1cGRhdGVD
aGVja2VkU3RhdGUocG9wdXBCdXR0b24sIG8pOwpAQCAtMTkzMiw3ICsxOTMyLDcgQEAgYm9vbCBS
ZW5kZXJUaGVtZU1hYzo6cGFpbnRTZWFyY2hGaWVsZENhbgogICAgIEZsb2F0UmVjdCBsb2NhbEJv
dW5kcyA9IGFkanVzdGVkQ2FuY2VsQnV0dG9uUmVjdChbc2VhcmNoIGNhbmNlbEJ1dHRvblJlY3RG
b3JCb3VuZHM6TlNSZWN0KHNuYXBwZWRJbnRSZWN0KGlucHV0Qm94LmNvbnRlbnRCb3hSZWN0KCkp
KV0pOwogICAgIC8vIEFkanVzdCBwb3NpdGlvbiBiYXNlZCBvbiB0aGUgY29udGVudCBkaXJlY3Rp
b24uCiAgICAgZmxvYXQgYWRqdXN0ZWRYUG9zaXRpb247Ci0gICAgaWYgKGJveC5zdHlsZSgpLmRp
cmVjdGlvbigpID09IFJUTCkKKyAgICBpZiAoYm94LnN0eWxlKCkuZGlyZWN0aW9uKCkgPT0gVGV4
dERpcmVjdGlvbjo6UlRMKQogICAgICAgICBhZGp1c3RlZFhQb3NpdGlvbiA9IGlucHV0Qm94LmNv
bnRlbnRCb3hSZWN0KCkueCgpOwogICAgIGVsc2UKICAgICAgICAgYWRqdXN0ZWRYUG9zaXRpb24g
PSBpbnB1dEJveC5jb250ZW50Qm94UmVjdCgpLm1heFgoKSAtIGxvY2FsQm91bmRzLnNpemUoKS53
aWR0aCgpOwpAQCAtMjA2OCw3ICsyMDY4LDcgQEAgYm9vbCBSZW5kZXJUaGVtZU1hYzo6cGFpbnRT
ZWFyY2hGaWVsZFJlcwogICAgIEZsb2F0UmVjdCBsb2NhbEJvdW5kcyA9IGFkanVzdGVkUmVzdWx0
QnV0dG9uUmVjdChbc2VhcmNoIHNlYXJjaEJ1dHRvblJlY3RGb3JCb3VuZHM6TlNSZWN0KHNuYXBw
ZWRJbnRSZWN0KGlucHV0Qm94LmNvbnRlbnRCb3hSZWN0KCkpKV0pOwogICAgIC8vIEFkanVzdCBw
b3NpdGlvbiBiYXNlZCBvbiB0aGUgY29udGVudCBkaXJlY3Rpb24uCiAgICAgZmxvYXQgYWRqdXN0
ZWRYUG9zaXRpb247Ci0gICAgaWYgKGJveC5zdHlsZSgpLmRpcmVjdGlvbigpID09IFJUTCkKKyAg
ICBpZiAoYm94LnN0eWxlKCkuZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6UlRMKQogICAg
ICAgICBhZGp1c3RlZFhQb3NpdGlvbiA9IGlucHV0Qm94LmNvbnRlbnRCb3hSZWN0KCkubWF4WCgp
IC0gbG9jYWxCb3VuZHMuc2l6ZSgpLndpZHRoKCk7CiAgICAgZWxzZQogICAgICAgICBhZGp1c3Rl
ZFhQb3NpdGlvbiA9IGlucHV0Qm94LmNvbnRlbnRCb3hSZWN0KCkueCgpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5j
cHAJKHJldmlzaW9uIDIzNDUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSw3ICs4OSw3IEBAIExh
eW91dFVuaXQgUmVuZGVyTWF0aE1MQmxvY2s6Om1hdGhBeGlzSGUKIAogTGF5b3V0VW5pdCBSZW5k
ZXJNYXRoTUxCbG9jazo6bWlycm9ySWZOZWVkZWQoTGF5b3V0VW5pdCBob3Jpem9udGFsT2Zmc2V0
LCBMYXlvdXRVbml0IGJveFdpZHRoKSBjb25zdAogewotICAgIGlmIChzdHlsZSgpLmRpcmVjdGlv
bigpID09IFJUTCkKKyAgICBpZiAoc3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9u
OjpSVEwpCiAgICAgICAgIHJldHVybiBsb2dpY2FsV2lkdGgoKSAtIGJveFdpZHRoIC0gaG9yaXpv
bnRhbE9mZnNldDsKIAogICAgIHJldHVybiBob3Jpem9udGFsT2Zmc2V0OwpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVy
YXRvci5jcHAJKHJldmlzaW9uIDIzNDUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MT3BlcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzgsNyAr
MjM4LDcgQEAgdm9pZCBSZW5kZXJNYXRoTUxPcGVyYXRvcjo6bGF5b3V0QmxvY2soYgogICAgICAg
ICBzZXRMb2dpY2FsV2lkdGgod2lkdGgpOwogCiAgICAgICAgIC8vIFdlIHRoZW4gbW92ZSB0aGUg
Y2hpbGRyZW4gdG8gdGFrZSBzcGFjaW5nIGludG8gYWNjb3VudC4KLSAgICAgICAgTGF5b3V0UG9p
bnQgaG9yaXpvbnRhbFNoaWZ0KHN0eWxlKCkuZGlyZWN0aW9uKCkgPT0gTFRSID8gbGVhZGluZ1Nw
YWNlVmFsdWUgOiAtbGVhZGluZ1NwYWNlVmFsdWUsIDApOworICAgICAgICBMYXlvdXRQb2ludCBo
b3Jpem9udGFsU2hpZnQoc3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIg
PyBsZWFkaW5nU3BhY2VWYWx1ZSA6IC1sZWFkaW5nU3BhY2VWYWx1ZSwgMCk7CiAgICAgICAgIGZv
ciAoYXV0byogY2hpbGQgPSBmaXJzdENoaWxkQm94KCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5u
ZXh0U2libGluZ0JveCgpKQogICAgICAgICAgICAgY2hpbGQtPnNldExvY2F0aW9uKGNoaWxkLT5s
b2NhdGlvbigpICsgaG9yaXpvbnRhbFNoaWZ0KTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAJKHJldmlzaW9uIDIzNDUxNCkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE1Miw3ICsxNTIsNyBAQCBSZW5kZXJTdHlsZTo6UmVuZGVyU3R5bGUoQ3Jl
YXRlRGVmYXVsdFN0CiAjaWYgRU5BQkxFKENVUlNPUl9WSVNJQklMSVRZKQogICAgIG1faW5oZXJp
dGVkRmxhZ3MuY3Vyc29yVmlzaWJpbGl0eSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbml0aWFs
Q3Vyc29yVmlzaWJpbGl0eSgpKTsKICNlbmRpZgotICAgIG1faW5oZXJpdGVkRmxhZ3MuZGlyZWN0
aW9uID0gaW5pdGlhbERpcmVjdGlvbigpOworICAgIG1faW5oZXJpdGVkRmxhZ3MuZGlyZWN0aW9u
ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluaXRpYWxEaXJlY3Rpb24oKSk7CiAgICAgbV9pbmhl
cml0ZWRGbGFncy53aGl0ZVNwYWNlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluaXRpYWxXaGl0
ZVNwYWNlKCkpOwogICAgIG1faW5oZXJpdGVkRmxhZ3MuYm9yZGVyQ29sbGFwc2UgPSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oaW5pdGlhbEJvcmRlckNvbGxhcHNlKCkpOwogICAgIG1faW5oZXJpdGVk
RmxhZ3MucnRsT3JkZXJpbmcgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlhbFJUTE9yZGVy
aW5nKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmgJKHJldmlzaW9uIDIzNDUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zODgsNyArMzg4LDcgQEAgcHVibGlj
OgogICAgIFRleHRab29tIHRleHRab29tKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4
dFpvb20+KG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRab29tKTsgfQogCiAgICAgVGV4dERpcmVj
dGlvbiBkaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0RGlyZWN0aW9u
PihtX2luaGVyaXRlZEZsYWdzLmRpcmVjdGlvbik7IH0KLSAgICBib29sIGlzTGVmdFRvUmlnaHRE
aXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBkaXJlY3Rpb24oKSA9PSBMVFI7IH0KKyAgICBib29s
IGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBkaXJlY3Rpb24oKSA9PSBU
ZXh0RGlyZWN0aW9uOjpMVFI7IH0KICAgICBib29sIGhhc0V4cGxpY2l0bHlTZXREaXJlY3Rpb24o
KSBjb25zdCB7IHJldHVybiBtX25vbkluaGVyaXRlZEZsYWdzLmhhc0V4cGxpY2l0bHlTZXREaXJl
Y3Rpb247IH0KIAogICAgIGNvbnN0IExlbmd0aCYgc3BlY2lmaWVkTGluZUhlaWdodCgpIGNvbnN0
OwpAQCAtMTQ0Miw3ICsxNDQyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBDYXB0aW9uU2lkZSBp
bml0aWFsQ2FwdGlvblNpZGUoKSB7IHJldHVybiBDYXB0aW9uU2lkZTo6VG9wOyB9CiAgICAgc3Rh
dGljIENvbHVtbkF4aXMgaW5pdGlhbENvbHVtbkF4aXMoKSB7IHJldHVybiBDb2x1bW5BeGlzOjpB
dXRvOyB9CiAgICAgc3RhdGljIENvbHVtblByb2dyZXNzaW9uIGluaXRpYWxDb2x1bW5Qcm9ncmVz
c2lvbigpIHsgcmV0dXJuIENvbHVtblByb2dyZXNzaW9uOjpOb3JtYWw7IH0KLSAgICBzdGF0aWMg
VGV4dERpcmVjdGlvbiBpbml0aWFsRGlyZWN0aW9uKCkgeyByZXR1cm4gTFRSOyB9CisgICAgc3Rh
dGljIFRleHREaXJlY3Rpb24gaW5pdGlhbERpcmVjdGlvbigpIHsgcmV0dXJuIFRleHREaXJlY3Rp
b246OkxUUjsgfQogICAgIHN0YXRpYyBXcml0aW5nTW9kZSBpbml0aWFsV3JpdGluZ01vZGUoKSB7
IHJldHVybiBUb3BUb0JvdHRvbVdyaXRpbmdNb2RlOyB9CiAgICAgc3RhdGljIFRleHRDb21iaW5l
IGluaXRpYWxUZXh0Q29tYmluZSgpIHsgcmV0dXJuIFRleHRDb21iaW5lOjpOb25lOyB9CiAgICAg
c3RhdGljIFRleHRPcmllbnRhdGlvbiBpbml0aWFsVGV4dE9yaWVudGF0aW9uKCkgeyByZXR1cm4g
VGV4dE9yaWVudGF0aW9uOjpNaXhlZDsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbFNldHRpbmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFsU2V0dGluZ3MuY3BwCShyZXZpc2lvbiAyMzQ1MTQpCisrKyBTb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MjAsOSAr
ODIwLDkgQEAgRXhjZXB0aW9uT3I8U3RyaW5nPiBJbnRlcm5hbFNldHRpbmdzOjpzeQogICAgIGlm
ICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9y
IH07CiAgICAgc3dpdGNoIChzZXR0aW5ncygpLnN5c3RlbUxheW91dERpcmVjdGlvbigpKSB7Ci0g
ICAgY2FzZSBMVFI6CisgICAgY2FzZSBUZXh0RGlyZWN0aW9uOjpMVFI6CiAgICAgICAgIHJldHVy
biBTdHJpbmcgeyAiTFRSIl9zIH07Ci0gICAgY2FzZSBSVEw6CisgICAgY2FzZSBUZXh0RGlyZWN0
aW9uOjpSVEw6CiAgICAgICAgIHJldHVybiBTdHJpbmcgeyAiUlRMIl9zIH07CiAgICAgfQogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtODM0LDExICs4MzQsMTEgQEAgRXhjZXB0aW9uT3I8
dm9pZD4gSW50ZXJuYWxTZXR0aW5nczo6c2V0UwogICAgIGlmICghbV9wYWdlKQogICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yIH07CiAgICAgaWYgKGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGRpcmVjdGlvbiwgImx0ciIpKSB7Ci0gICAgICAgIHNldHRp
bmdzKCkuc2V0U3lzdGVtTGF5b3V0RGlyZWN0aW9uKExUUik7CisgICAgICAgIHNldHRpbmdzKCku
c2V0U3lzdGVtTGF5b3V0RGlyZWN0aW9uKFRleHREaXJlY3Rpb246OkxUUik7CiAgICAgICAgIHJl
dHVybiB7IH07CiAgICAgfQogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShk
aXJlY3Rpb24sICJydGwiKSkgewotICAgICAgICBzZXR0aW5ncygpLnNldFN5c3RlbUxheW91dERp
cmVjdGlvbihSVEwpOworICAgICAgICBzZXR0aW5ncygpLnNldFN5c3RlbUxheW91dERpcmVjdGlv
bihUZXh0RGlyZWN0aW9uOjpSVEwpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yIH07CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmgJKHJldmlzaW9uIDIzNDUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxMiw3ICs2MTIsNyBAQCBwdWJs
aWM6CiAKICAgICBSZWZQdHI8R0NPYnNlcnZhdGlvbj4gb2JzZXJ2ZUdDKEpTQzo6SlNWYWx1ZSk7
CiAKLSAgICBlbnVtIGNsYXNzIFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24geyBMVFIsIFJU
TCB9OworICAgIGVudW0gY2xhc3MgVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiA6IHVpbnQ4
X3QgeyBMVFIsIFJUTCB9OwogICAgIHZvaWQgc2V0VXNlckludGVyZmFjZUxheW91dERpcmVjdGlv
bihVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKTsKIAogICAgIGJvb2wgdXNlclByZWZlcnNS
ZWR1Y2VkTW90aW9uKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjM0NTY4KQorKysg
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMiBAQAor
MjAxOC0wOC0wNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgor
CisgICAgICAgIFVzZSBhIDEtYnl0ZSBlbnVtIGNsYXNzIGZvciBUZXh0RGlyZWN0aW9uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODgzNTAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9XZWJQ
b3B1cEl0ZW0uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cEl0ZW06OldlYlBvcHVwSXRl
bSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06
CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgd2ViU2VsZWN0aW9uUmVjdHNGb3JTZWxlY3Rpb25S
ZWN0czpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBvcHVwTWVudVByb3h5TWFjLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eU1hYzo6cG9wdWxhdGUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eU1hYzo6c2hvd1BvcHVwTWVudSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQb3B1cE1lbnU6OnNob3cpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0QXNz
aXN0ZWROb2RlSW5mb3JtYXRpb24pOgorCiAyMDE4LTA4LTAzICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRml4IHNwZWxsaW5nIG9mICJvdmVy
cmlkZGVuIgpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUG9wdXBJdGVtLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQb3B1cEl0ZW0uY3BwCShyZXZpc2lv
biAyMzQ1MTQpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQb3B1cEl0ZW0uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBXZWJQb3B1
cEl0ZW06OldlYlBvcHVwSXRlbSgpCiAgICAgOiBtX3R5cGUoSXRlbSkKLSAgICAsIG1fdGV4dERp
cmVjdGlvbihMVFIpCisgICAgLCBtX3RleHREaXJlY3Rpb24oVGV4dERpcmVjdGlvbjo6TFRSKQog
ICAgICwgbV9oYXNUZXh0RGlyZWN0aW9uT3ZlcnJpZGUoZmFsc2UpCiAgICAgLCBtX2lzRW5hYmxl
ZCh0cnVlKQogICAgICwgbV9pc1NlbGVjdGVkKGZhbHNlKQpAQCAtNDQsNyArNDQsNyBAQCBXZWJQ
b3B1cEl0ZW06OldlYlBvcHVwSXRlbSgpCiAKIFdlYlBvcHVwSXRlbTo6V2ViUG9wdXBJdGVtKFR5
cGUgdHlwZSkKICAgICA6IG1fdHlwZSh0eXBlKQotICAgICwgbV90ZXh0RGlyZWN0aW9uKExUUikK
KyAgICAsIG1fdGV4dERpcmVjdGlvbihUZXh0RGlyZWN0aW9uOjpMVFIpCiAgICAgLCBtX2hhc1Rl
eHREaXJlY3Rpb25PdmVycmlkZShmYWxzZSkKICAgICAsIG1faXNFbmFibGVkKHRydWUpCiAgICAg
LCBtX2lzTGFiZWwoZmFsc2UpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0JKHJldmlzaW9uIDIzNDUxNCkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW0JKHdvcmtpbmcgY29weSkKQEAgLTE3NTQsNyArMTc1NCw3IEBAIC0gKE5TQXJyYXkgKil3ZWJT
ZWxlY3Rpb25SZWN0c0ZvclNlbGVjdGkKICAgICAgICAgY29uc3QgV2ViQ29yZTo6U2VsZWN0aW9u
UmVjdCYgY29yZVJlY3QgPSBzZWxlY3Rpb25SZWN0c1tpXTsKICAgICAgICAgV2ViU2VsZWN0aW9u
UmVjdCAqd2ViUmVjdCA9IFtXZWJTZWxlY3Rpb25SZWN0IHNlbGVjdGlvblJlY3RdOwogICAgICAg
ICB3ZWJSZWN0LnJlY3QgPSBjb3JlUmVjdC5yZWN0KCk7Ci0gICAgICAgIHdlYlJlY3Qud3JpdGlu
Z0RpcmVjdGlvbiA9IGNvcmVSZWN0LmRpcmVjdGlvbigpID09IExUUiA/IFdLV3JpdGluZ0RpcmVj
dGlvbkxlZnRUb1JpZ2h0IDogV0tXcml0aW5nRGlyZWN0aW9uUmlnaHRUb0xlZnQ7CisgICAgICAg
IHdlYlJlY3Qud3JpdGluZ0RpcmVjdGlvbiA9IGNvcmVSZWN0LmRpcmVjdGlvbigpID09IFRleHRE
aXJlY3Rpb246OkxUUiA/IFdLV3JpdGluZ0RpcmVjdGlvbkxlZnRUb1JpZ2h0IDogV0tXcml0aW5n
RGlyZWN0aW9uUmlnaHRUb0xlZnQ7CiAgICAgICAgIHdlYlJlY3QuaXNMaW5lQnJlYWsgPSBjb3Jl
UmVjdC5pc0xpbmVCcmVhaygpOwogICAgICAgICB3ZWJSZWN0LmlzRmlyc3RPbkxpbmUgPSBjb3Jl
UmVjdC5pc0ZpcnN0T25MaW5lKCk7CiAgICAgICAgIHdlYlJlY3QuaXNMYXN0T25MaW5lID0gY29y
ZVJlY3QuaXNMYXN0T25MaW5lKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
V2ViUG9wdXBNZW51UHJveHlNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1dlYlBvcHVwTWVudVByb3h5TWFjLm1tCShyZXZpc2lvbiAyMzQ1MTQpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUG9wdXBNZW51UHJveHlNYWMubW0JKHdvcmtp
bmcgY29weSkKQEAgLTczLDkgKzczLDkgQEAgdm9pZCBXZWJQb3B1cE1lbnVQcm94eU1hYzo6cG9w
dWxhdGUoY29ucwogICAgICAgICAgICAgTlNNZW51SXRlbSAqbWVudUl0ZW0gPSBbbV9wb3B1cCBs
YXN0SXRlbV07CiAKICAgICAgICAgICAgIFJldGFpblB0cjxOU011dGFibGVQYXJhZ3JhcGhTdHls
ZT4gcGFyYWdyYXBoU3R5bGUgPSBhZG9wdE5TKFtbTlNQYXJhZ3JhcGhTdHlsZSBkZWZhdWx0UGFy
YWdyYXBoU3R5bGVdIG11dGFibGVDb3B5XSk7Ci0gICAgICAgICAgICBOU1dyaXRpbmdEaXJlY3Rp
b24gd3JpdGluZ0RpcmVjdGlvbiA9IGl0ZW1zW2ldLm1fdGV4dERpcmVjdGlvbiA9PSBMVFIgPyBO
U1dyaXRpbmdEaXJlY3Rpb25MZWZ0VG9SaWdodCA6IE5TV3JpdGluZ0RpcmVjdGlvblJpZ2h0VG9M
ZWZ0OworICAgICAgICAgICAgTlNXcml0aW5nRGlyZWN0aW9uIHdyaXRpbmdEaXJlY3Rpb24gPSBp
dGVtc1tpXS5tX3RleHREaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gTlNXcml0aW5n
RGlyZWN0aW9uTGVmdFRvUmlnaHQgOiBOU1dyaXRpbmdEaXJlY3Rpb25SaWdodFRvTGVmdDsKICAg
ICAgICAgICAgIFtwYXJhZ3JhcGhTdHlsZSBzZXRCYXNlV3JpdGluZ0RpcmVjdGlvbjp3cml0aW5n
RGlyZWN0aW9uXTsKLSAgICAgICAgICAgIFtwYXJhZ3JhcGhTdHlsZSBzZXRBbGlnbm1lbnQ6bWVu
dVRleHREaXJlY3Rpb24gPT0gTFRSID8gTlNUZXh0QWxpZ25tZW50TGVmdCA6IE5TVGV4dEFsaWdu
bWVudFJpZ2h0XTsKKyAgICAgICAgICAgIFtwYXJhZ3JhcGhTdHlsZSBzZXRBbGlnbm1lbnQ6bWVu
dVRleHREaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gTlNUZXh0QWxpZ25tZW50TGVm
dCA6IE5TVGV4dEFsaWdubWVudFJpZ2h0XTsKICAgICAgICAgICAgIFJldGFpblB0cjxOU011dGFi
bGVEaWN0aW9uYXJ5PiBhdHRyaWJ1dGVzID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkg
YWxsb2NdIGluaXRXaXRoT2JqZWN0c0FuZEtleXM6CiAgICAgICAgICAgICAgICAgcGFyYWdyYXBo
U3R5bGUuZ2V0KCksIE5TUGFyYWdyYXBoU3R5bGVBdHRyaWJ1dGVOYW1lLAogICAgICAgICAgICAg
ICAgIGZvbnQsIE5TRm9udEF0dHJpYnV0ZU5hbWUsCkBAIC0xMTEsMTAgKzExMSwxMCBAQCB2b2lk
IFdlYlBvcHVwTWVudVByb3h5TWFjOjpzaG93UG9wdXBNZW51CiAKICAgICBbbV9wb3B1cCBhdHRh
Y2hQb3BVcFdpdGhGcmFtZTpyZWN0IGluVmlldzptX3dlYlZpZXddOwogICAgIFttX3BvcHVwIHNl
bGVjdEl0ZW1BdEluZGV4OnNlbGVjdGVkSW5kZXhdOwotICAgIFttX3BvcHVwIHNldFVzZXJJbnRl
cmZhY2VMYXlvdXREaXJlY3Rpb246dGV4dERpcmVjdGlvbiA9PSBMVFIgPyBOU1VzZXJJbnRlcmZh
Y2VMYXlvdXREaXJlY3Rpb25MZWZ0VG9SaWdodCA6IE5TVXNlckludGVyZmFjZUxheW91dERpcmVj
dGlvblJpZ2h0VG9MZWZ0XTsKKyAgICBbbV9wb3B1cCBzZXRVc2VySW50ZXJmYWNlTGF5b3V0RGly
ZWN0aW9uOnRleHREaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gTlNVc2VySW50ZXJm
YWNlTGF5b3V0RGlyZWN0aW9uTGVmdFRvUmlnaHQgOiBOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJl
Y3Rpb25SaWdodFRvTGVmdF07CiAKICAgICBOU01lbnUgKm1lbnUgPSBbbV9wb3B1cCBtZW51XTsK
LSAgICBbbWVudSBzZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uOnRleHREaXJlY3Rpb24g
PT0gTFRSID8gTlNVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uTGVmdFRvUmlnaHQgOiBOU1Vz
ZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25SaWdodFRvTGVmdF07CisgICAgW21lbnUgc2V0VXNl
ckludGVyZmFjZUxheW91dERpcmVjdGlvbjp0ZXh0RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246
OkxUUiA/IE5TVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbkxlZnRUb1JpZ2h0IDogTlNVc2Vy
SW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uUmlnaHRUb0xlZnRdOwogCiAgICAgLy8gVGhlc2UgdmFs
dWVzIHdlcmUgYm9ycm93ZWQgZnJvbSBBcHBLaXQgdG8gbWF0Y2ggdGhlaXIgcGxhY2VtZW50IG9m
IHRoZSBtZW51LgogICAgIGNvbnN0IGludCBwb3BPdmVySG9yaXpvbnRhbEFkanVzdCA9IC0xMzsK
QEAgLTEyOSwxOCArMTI5LDE4IEBAIHZvaWQgV2ViUG9wdXBNZW51UHJveHlNYWM6OnNob3dQb3B1
cE1lbnUKICAgICAgICAgaWYgKHRpdGxlRnJhbWUuc2l6ZS53aWR0aCA8PSAwIHx8IHRpdGxlRnJh
bWUuc2l6ZS5oZWlnaHQgPD0gMCkKICAgICAgICAgICAgIHRpdGxlRnJhbWUgPSByZWN0OwogICAg
ICAgICBmbG9hdCB2ZXJ0aWNhbE9mZnNldCA9IHJvdW5kZigoTlNNYXhZKHJlY3QpIC0gTlNNYXhZ
KHRpdGxlRnJhbWUpKSArIE5TSGVpZ2h0KHRpdGxlRnJhbWUpKSArIDE7Ci0gICAgICAgIGlmICh0
ZXh0RGlyZWN0aW9uID09IExUUikKKyAgICAgICAgaWYgKHRleHREaXJlY3Rpb24gPT0gVGV4dERp
cmVjdGlvbjo6TFRSKQogICAgICAgICAgICAgbG9jYXRpb24gPSBOU01ha2VQb2ludChOU01pblgo
cmVjdCkgKyBwb3BPdmVySG9yaXpvbnRhbEFkanVzdCwgTlNNYXhZKHJlY3QpIC0gdmVydGljYWxP
ZmZzZXQpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBsb2NhdGlvbiA9IE5TTWFrZVBvaW50
KE5TTWF4WChyZWN0KSAtIHBvcE92ZXJIb3Jpem9udGFsQWRqdXN0LCBOU01heFkocmVjdCkgLSB2
ZXJ0aWNhbE9mZnNldCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKHRleHREaXJlY3Rpb24g
PT0gTFRSKQorICAgICAgICBpZiAodGV4dERpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIp
CiAgICAgICAgICAgICBsb2NhdGlvbiA9IE5TTWFrZVBvaW50KE5TTWluWChyZWN0KSArIHBvcFVu
ZGVySG9yaXpvbnRhbEFkanVzdCwgTlNNYXhZKHJlY3QpICsgcG9wVW5kZXJWZXJ0aWNhbEFkanVz
dCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGxvY2F0aW9uID0gTlNNYWtlUG9pbnQoTlNN
YXhYKHJlY3QpIC0gcG9wVW5kZXJIb3Jpem9udGFsQWRqdXN0LCBOU01heFkocmVjdCkgKyBwb3BV
bmRlclZlcnRpY2FsQWRqdXN0KTsKICAgICB9CiAgICAgUmV0YWluUHRyPE5TVmlldz4gZHVtbXlW
aWV3ID0gYWRvcHROUyhbW05TVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpyZWN0XSk7Ci0gICAg
W2R1bW15Vmlldy5nZXQoKSBzZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uOnRleHREaXJl
Y3Rpb24gPT0gTFRSID8gTlNVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uTGVmdFRvUmlnaHQg
OiBOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25SaWdodFRvTGVmdF07CisgICAgW2R1bW15
Vmlldy5nZXQoKSBzZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uOnRleHREaXJlY3Rpb24g
PT0gVGV4dERpcmVjdGlvbjo6TFRSID8gTlNVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uTGVm
dFRvUmlnaHQgOiBOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25SaWdodFRvTGVmdF07CiAg
ICAgW21fd2ViVmlldyBhZGRTdWJ2aWV3OmR1bW15Vmlldy5nZXQoKV07CiAgICAgbG9jYXRpb24g
PSBbZHVtbXlWaWV3IGNvbnZlcnRQb2ludDpsb2NhdGlvbiBmcm9tVmlldzptX3dlYlZpZXddOwog
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBN
ZW51LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUG9wdXBNZW51LmNwcAkocmV2aXNpb24gMjM0NTE0KQorKysgU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwTWVudS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTExMiw3ICsxMTIsNyBAQCB2b2lkIFdlYlBvcHVwTWVudTo6c2hvdyhjb25zdCBJbnRS
ZWN0JiByCiAgICAgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhIHBsYXRmb3JtRGF0YTsKICAgICBzZXRV
cFBsYXRmb3JtRGF0YShwYWdlQ29vcmRpbmF0ZXMsIHBsYXRmb3JtRGF0YSk7CiAKLSAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OlNob3dQb3B1cE1lbnUocGFnZUNvb3JkaW5hdGVzLCBtX3BvcHVw
Q2xpZW50LT5tZW51U3R5bGUoKS50ZXh0RGlyZWN0aW9uKCksIGl0ZW1zLCBpbmRleCwgcGxhdGZv
cm1EYXRhKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpT
aG93UG9wdXBNZW51KHBhZ2VDb29yZGluYXRlcywgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG1fcG9w
dXBDbGllbnQtPm1lbnVTdHlsZSgpLnRleHREaXJlY3Rpb24oKSksIGl0ZW1zLCBpbmRleCwgcGxh
dGZvcm1EYXRhKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKIHZvaWQgV2ViUG9wdXBNZW51Ojpo
aWRlKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lv
cy9XZWJQYWdlSU9TLm1tCShyZXZpc2lvbiAyMzQ1MTQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjMxMSw3
ICsyMzExLDcgQEAgdm9pZCBXZWJQYWdlOjpnZXRBc3Npc3RlZE5vZGVJbmZvcm1hdGlvbgogICAg
ICAgICBib29sIGluRml4ZWQgPSBmYWxzZTsKICAgICAgICAgcmVuZGVyZXItPmxvY2FsVG9Db250
YWluZXJQb2ludChGbG9hdFBvaW50KCksIG51bGxwdHIsIFVzZVRyYW5zZm9ybXMsICZpbkZpeGVk
KTsKICAgICAgICAgaW5mb3JtYXRpb24uaW5zaWRlRml4ZWRQb3NpdGlvbiA9IGluRml4ZWQ7Ci0g
ICAgICAgIGluZm9ybWF0aW9uLmlzUlRMID0gcmVuZGVyZXItPnN0eWxlKCkuZGlyZWN0aW9uKCkg
PT0gUlRMOworICAgICAgICBpbmZvcm1hdGlvbi5pc1JUTCA9IHJlbmRlcmVyLT5zdHlsZSgpLmRp
cmVjdGlvbigpID09IFRleHREaXJlY3Rpb246OlJUTDsKIAogICAgICAgICBGcmFtZVZpZXcqIGZy
YW1lVmlldyA9IGVsZW1lbnRGcmFtZS52aWV3KCk7CiAgICAgICAgIGlmIChpbkZpeGVkICYmIGVs
ZW1lbnRGcmFtZS5pc01haW5GcmFtZSgpICYmICFmcmFtZVZpZXctPmZyYW1lKCkuc2V0dGluZ3Mo
KS52aXN1YWxWaWV3cG9ydEVuYWJsZWQoKSkgewpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9p
b3MvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjM0NTE0KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTgtMDgtMDYgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBVc2UgYSAxLWJ5
dGUgZW51bSBjbGFzcyBmb3IgVGV4dERpcmVjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4MzUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUlPUy5tbToK
KyAgICAgICAgKC1bV2ViRnJhbWUgc2VsZWN0aW9uUmVjdHNGb3JDb3JlUmFuZ2U6XSk6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViVmlzaWJsZVBvc2l0aW9uLm1tOgorICAgICAgICAoLVtX
ZWJWaXNpYmxlUG9zaXRpb24gdGV4dERpcmVjdGlvbl0pOgorICAgICAgICAoLVtXZWJWaXNpYmxl
UG9zaXRpb24gZGlyZWN0aW9uSXNEb3duc3RyZWFtOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2Vi
UERGVmlld0lPUy5tbToKKyAgICAgICAgKC1bV2ViUERGVmlldyBfY2hlY2tQREZUaXRsZV0pOgor
CiAyMDE4LTA3LTA0ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAg
ICAgICAgIEludHJvZHVjZSBQTEFURk9STShJT1NNQUMpCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVn
YWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUlPUy5tbQkocmV2aXNp
b24gMjM0NTE0KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTIyMCw3ICsyMjAsNyBAQCAtIChOU0FycmF5
ICopc2VsZWN0aW9uUmVjdHNGb3JDb3JlUmFuZ2U6CiAgICAgICAgIFNlbGVjdGlvblJlY3QgJmNv
cmVSZWN0ID0gcmVjdHNbaV07CiAgICAgICAgIFdlYlNlbGVjdGlvblJlY3QgKndlYlJlY3QgPSBb
V2ViU2VsZWN0aW9uUmVjdCBzZWxlY3Rpb25SZWN0XTsKICAgICAgICAgd2ViUmVjdC5yZWN0ID0g
c3RhdGljX2Nhc3Q8Q0dSZWN0Pihjb3JlUmVjdC5yZWN0KCkpOwotICAgICAgICB3ZWJSZWN0Lndy
aXRpbmdEaXJlY3Rpb24gPSBjb3JlUmVjdC5kaXJlY3Rpb24oKSA9PSBMVFIgPyBXS1dyaXRpbmdE
aXJlY3Rpb25MZWZ0VG9SaWdodCA6IFdLV3JpdGluZ0RpcmVjdGlvblJpZ2h0VG9MZWZ0OworICAg
ICAgICB3ZWJSZWN0LndyaXRpbmdEaXJlY3Rpb24gPSBjb3JlUmVjdC5kaXJlY3Rpb24oKSA9PSBU
ZXh0RGlyZWN0aW9uOjpMVFIgPyBXS1dyaXRpbmdEaXJlY3Rpb25MZWZ0VG9SaWdodCA6IFdLV3Jp
dGluZ0RpcmVjdGlvblJpZ2h0VG9MZWZ0OwogICAgICAgICB3ZWJSZWN0LmlzTGluZUJyZWFrID0g
Y29yZVJlY3QuaXNMaW5lQnJlYWsoKTsKICAgICAgICAgd2ViUmVjdC5pc0ZpcnN0T25MaW5lID0g
Y29yZVJlY3QuaXNGaXJzdE9uTGluZSgpOwogICAgICAgICB3ZWJSZWN0LmlzTGFzdE9uTGluZSA9
IGNvcmVSZWN0LmlzTGFzdE9uTGluZSgpOwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9pb3Mv
V2ViQ29yZVN1cHBvcnQvV2ViVmlzaWJsZVBvc2l0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2libGVQb3NpdGlvbi5tbQko
cmV2aXNpb24gMjM0NTE0KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBv
cnQvV2ViVmlzaWJsZVBvc2l0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMzIsNyArMTMyLDcg
QEAgLSAoTlNTdHJpbmcgKilkZXNjcmlwdGlvbgogLSAoVGV4dERpcmVjdGlvbil0ZXh0RGlyZWN0
aW9uCiB7CiAgICAgLy8gVE9ETzogaW1wbGVtZW50Ci0gICAgcmV0dXJuIExUUjsKKyAgICByZXR1
cm4gVGV4dERpcmVjdGlvbjo6TFRSOwogfQogCiAtIChCT09MKWRpcmVjdGlvbklzRG93bnN0cmVh
bTooV2ViVGV4dEFkanVzdG1lbnREaXJlY3Rpb24pZGlyZWN0aW9uCkBAIC0xNDQsMTEgKzE0NCw5
IEBAIC0gKEJPT0wpZGlyZWN0aW9uSXNEb3duc3RyZWFtOihXZWJUZXh0QWQKICAgICAgICAgcmV0
dXJuIFlFUzsKICAgICAKICAgICAKLSAgICBpZiAoW3NlbGYgdGV4dERpcmVjdGlvbl0gPT0gTFRS
KSB7CisgICAgaWYgKFtzZWxmIHRleHREaXJlY3Rpb25dID09IFRleHREaXJlY3Rpb246OkxUUikK
ICAgICAgICAgcmV0dXJuIChkaXJlY3Rpb24gPT0gV2ViVGV4dEFkanVzdG1lbnRSaWdodCk7Ci0g
ICAgfSBlbHNlIHsKLSAgICAgICAgcmV0dXJuIChkaXJlY3Rpb24gPT0gV2ViVGV4dEFkanVzdG1l
bnRMZWZ0KTsKLSAgICB9CisgICAgcmV0dXJuIChkaXJlY3Rpb24gPT0gV2ViVGV4dEFkanVzdG1l
bnRMZWZ0KTsKIH0KIAogLSAoV2ViVmlzaWJsZVBvc2l0aW9uICopcG9zaXRpb25CeU1vdmluZ0lu
RGlyZWN0aW9uOihXZWJUZXh0QWRqdXN0bWVudERpcmVjdGlvbilkaXJlY3Rpb24gYW1vdW50OihV
SW50MzIpYW1vdW50IHdpdGhBZmZpbml0eURvd25zdHJlYW06KEJPT0wpYWZmaW5pdHlEb3duc3Ry
ZWFtCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdJT1Mu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZW
aWV3SU9TLm1tCShyZXZpc2lvbiAyMzQ1MTQpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9X
ZWJWaWV3L1dlYlBERlZpZXdJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5OSw3ICsyOTksNyBA
QCAtICh2b2lkKV9jaGVja1BERlRpdGxlCiAgICAgaWYgKFt0aXRsZSBsZW5ndGhdKSB7CiAgICAg
ICAgIFtfdGl0bGUgcmVsZWFzZV07CiAgICAgICAgIF90aXRsZSA9IFt0aXRsZSBjb3B5XTsKLSAg
ICAgICAgY29yZShbc2VsZiBfZnJhbWVdKS0+bG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hEaWRS
ZWNlaXZlVGl0bGUoeyB0aXRsZSwgTFRSIH0pOworICAgICAgICBjb3JlKFtzZWxmIF9mcmFtZV0p
LT5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERpZFJlY2VpdmVUaXRsZSh7IHRpdGxlLCBUZXh0
RGlyZWN0aW9uOjpMVFIgfSk7CiAgICAgfQogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMzQ1MTQpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxOC0wOC0wNiAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFVzZSBhIDEt
Ynl0ZSBlbnVtIGNsYXNzIGZvciBUZXh0RGlyZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODgzNTAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1BvcHVwTWVudU1hYy5t
bToKKyAgICAgICAgKFBvcHVwTWVudU1hYzo6cG9wdWxhdGUpOgorICAgICAgICAoUG9wdXBNZW51
TWFjOjpzaG93KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5tbToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp0cmFuc2l0aW9uVG9Db21taXR0
ZWRGb3JOZXdQYWdlKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAo
LVtXZWJGcmFtZSBfZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGU6XSk6CisKIDIwMTgtMDgtMDEgIE5h
biBXYW5nICA8bl93YW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBBWDogQU9NOiBBZGQgQVJJQSBJ
REwgQXR0cmlidXRlIFJlZmxlY3Rpb24KSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1BvcHVwTWVudU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9Qb3B1cE1lbnVNYWMubW0JKHJldmlzaW9uIDIzNDUx
NCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1BvcHVwTWVudU1h
Yy5tbQkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcsNyBAQCB2b2lkIFBvcHVwTWVudU1hYzo6
cG9wdWxhdGUoKQogICAgICAgICBbbV9wb3B1cCBhZGRJdGVtV2l0aFRpdGxlOkAiIl07CiAKICAg
ICBUZXh0RGlyZWN0aW9uIG1lbnVUZXh0RGlyZWN0aW9uID0gbV9jbGllbnQtPm1lbnVTdHlsZSgp
LnRleHREaXJlY3Rpb24oKTsKLSAgICBbbV9wb3B1cCBzZXRVc2VySW50ZXJmYWNlTGF5b3V0RGly
ZWN0aW9uOm1lbnVUZXh0RGlyZWN0aW9uID09IExUUiA/IE5TVXNlckludGVyZmFjZUxheW91dERp
cmVjdGlvbkxlZnRUb1JpZ2h0IDogTlNVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uUmlnaHRU
b0xlZnRdOworICAgIFttX3BvcHVwIHNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246bWVu
dVRleHREaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gTlNVc2VySW50ZXJmYWNlTGF5
b3V0RGlyZWN0aW9uTGVmdFRvUmlnaHQgOiBOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25S
aWdodFRvTGVmdF07CiAKICAgICBBU1NFUlQobV9jbGllbnQpOwogICAgIGludCBzaXplID0gbV9j
bGllbnQtPmxpc3RTaXplKCk7CkBAIC05MCw4ICs5MCw4IEBAIHZvaWQgUG9wdXBNZW51TWFjOjpw
b3B1bGF0ZSgpCiAgICAgICAgIH0KIAogICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlUGFyYWdy
YXBoU3R5bGU+IHBhcmFncmFwaFN0eWxlID0gYWRvcHROUyhbW05TUGFyYWdyYXBoU3R5bGUgZGVm
YXVsdFBhcmFncmFwaFN0eWxlXSBtdXRhYmxlQ29weV0pOwotICAgICAgICBbcGFyYWdyYXBoU3R5
bGUgc2V0QWxpZ25tZW50Om1lbnVUZXh0RGlyZWN0aW9uID09IExUUiA/IE5TVGV4dEFsaWdubWVu
dExlZnQgOiBOU1RleHRBbGlnbm1lbnRSaWdodF07Ci0gICAgICAgIE5TV3JpdGluZ0RpcmVjdGlv
biB3cml0aW5nRGlyZWN0aW9uID0gc3R5bGUudGV4dERpcmVjdGlvbigpID09IExUUiA/IE5TV3Jp
dGluZ0RpcmVjdGlvbkxlZnRUb1JpZ2h0IDogTlNXcml0aW5nRGlyZWN0aW9uUmlnaHRUb0xlZnQ7
CisgICAgICAgIFtwYXJhZ3JhcGhTdHlsZSBzZXRBbGlnbm1lbnQ6bWVudVRleHREaXJlY3Rpb24g
PT0gVGV4dERpcmVjdGlvbjo6TFRSID8gTlNUZXh0QWxpZ25tZW50TGVmdCA6IE5TVGV4dEFsaWdu
bWVudFJpZ2h0XTsKKyAgICAgICAgTlNXcml0aW5nRGlyZWN0aW9uIHdyaXRpbmdEaXJlY3Rpb24g
PSBzdHlsZS50ZXh0RGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gTlNXcml0aW5n
RGlyZWN0aW9uTGVmdFRvUmlnaHQgOiBOU1dyaXRpbmdEaXJlY3Rpb25SaWdodFRvTGVmdDsKICAg
ICAgICAgW3BhcmFncmFwaFN0eWxlIHNldEJhc2VXcml0aW5nRGlyZWN0aW9uOndyaXRpbmdEaXJl
Y3Rpb25dOwogICAgICAgICBpZiAoc3R5bGUuaGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlKCkpIHsK
ICAgICAgICAgICAgIFJldGFpblB0cjxOU051bWJlcj4gd3JpdGluZ0RpcmVjdGlvblZhbHVlID0g
YWRvcHROUyhbW05TTnVtYmVyIGFsbG9jXSBpbml0V2l0aEludGVnZXI6d3JpdGluZ0RpcmVjdGlv
biArIE5TV3JpdGluZ0RpcmVjdGlvbk92ZXJyaWRlXSk7CkBAIC0xNDYsMTAgKzE0NiwxMCBAQCB2
b2lkIFBvcHVwTWVudU1hYzo6c2hvdyhjb25zdCBJbnRSZWN0JiByCiAKICAgICBbbV9wb3B1cCBh
dHRhY2hQb3BVcFdpdGhGcmFtZTpyIGluVmlldzp2aWV3XTsKICAgICBbbV9wb3B1cCBzZWxlY3RJ
dGVtQXRJbmRleDppbmRleF07Ci0gICAgW21fcG9wdXAgc2V0VXNlckludGVyZmFjZUxheW91dERp
cmVjdGlvbjp0ZXh0RGlyZWN0aW9uID09IExUUiA/IE5TVXNlckludGVyZmFjZUxheW91dERpcmVj
dGlvbkxlZnRUb1JpZ2h0IDogTlNVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uUmlnaHRUb0xl
ZnRdOworICAgIFttX3BvcHVwIHNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246dGV4dERp
cmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJl
Y3Rpb25MZWZ0VG9SaWdodCA6IE5TVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvblJpZ2h0VG9M
ZWZ0XTsKIAogICAgIE5TTWVudSAqbWVudSA9IFttX3BvcHVwIG1lbnVdOwotICAgIFttZW51IHNl
dFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246dGV4dERpcmVjdGlvbiA9PSBMVFIgPyBOU1Vz
ZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25MZWZ0VG9SaWdodCA6IE5TVXNlckludGVyZmFjZUxh
eW91dERpcmVjdGlvblJpZ2h0VG9MZWZ0XTsKKyAgICBbbWVudSBzZXRVc2VySW50ZXJmYWNlTGF5
b3V0RGlyZWN0aW9uOnRleHREaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gTlNVc2Vy
SW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uTGVmdFRvUmlnaHQgOiBOU1VzZXJJbnRlcmZhY2VMYXlv
dXREaXJlY3Rpb25SaWdodFRvTGVmdF07CiAKICAgICBOU1BvaW50IGxvY2F0aW9uOwogICAgIENU
Rm9udFJlZiBmb250ID0gbV9jbGllbnQtPm1lbnVTdHlsZSgpLmZvbnQoKS5wcmltYXJ5Rm9udCgp
LmdldENURm9udCgpOwpAQCAtMTY4LDcgKzE2OCw3IEBAIHZvaWQgUG9wdXBNZW51TWFjOjpzaG93
KGNvbnN0IEludFJlY3QmIHIKICAgICAgICAgdmVydE9mZnNldCArPSBDVEZvbnRHZXREZXNjZW50
KGZvbnQpIC0gQ1RGb250R2V0RGVzY2VudChkZWZhdWx0Rm9udC5nZXQoKSk7CiAgICAgICAgIHZl
cnRPZmZzZXQgPSBmbWluZihOU0hlaWdodChyKSwgdmVydE9mZnNldCk7CiAjaWYgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEyMDAKLSAgICAgICAgaWYgKHRleHREaXJlY3Rp
b24gPT0gTFRSKQorICAgICAgICBpZiAodGV4dERpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpM
VFIpCiAgICAgICAgICAgICBsb2NhdGlvbiA9IE5TTWFrZVBvaW50KE5TTWluWChyKSArIHBvcE92
ZXJIb3Jpem9udGFsQWRqdXN0LCBOU01heFkocikgLSB2ZXJ0T2Zmc2V0KTsKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgbG9jYXRpb24gPSBOU01ha2VQb2ludChOU01heFgocikgLSBwb3BPdmVy
SG9yaXpvbnRhbEFkanVzdCwgTlNNYXhZKHIpIC0gdmVydE9mZnNldCk7CkBAIC0xNzcsNyArMTc3
LDcgQEAgdm9pZCBQb3B1cE1lbnVNYWM6OnNob3coY29uc3QgSW50UmVjdCYgcgogI2VuZGlmCiAg
ICAgfSBlbHNlIHsKICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIw
MAotICAgICAgICBpZiAodGV4dERpcmVjdGlvbiA9PSBMVFIpCisgICAgICAgIGlmICh0ZXh0RGly
ZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUikKICAgICAgICAgICAgIGxvY2F0aW9uID0gTlNN
YWtlUG9pbnQoTlNNaW5YKHIpICsgcG9wVW5kZXJIb3Jpem9udGFsQWRqdXN0LCBOU01heFkocikg
KyBwb3BVbmRlclZlcnRpY2FsQWRqdXN0KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbG9j
YXRpb24gPSBOU01ha2VQb2ludChOU01heFgocikgLSBwb3BVbmRlckhvcml6b250YWxBZGp1c3Qs
IE5TTWF4WShyKSArIHBvcFVuZGVyVmVydGljYWxBZGp1c3QpOwpAQCAtMTkzLDcgKzE5Myw3IEBA
IHZvaWQgUG9wdXBNZW51TWFjOjpzaG93KGNvbnN0IEludFJlY3QmIHIKICAgICBSZWY8UG9wdXBN
ZW51TWFjPiBwcm90ZWN0b3IoKnRoaXMpOwogCiAgICAgUmV0YWluUHRyPE5TVmlldz4gZHVtbXlW
aWV3ID0gYWRvcHROUyhbW05TVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpyXSk7Ci0gICAgW2R1
bW15Vmlldy5nZXQoKSBzZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uOnRleHREaXJlY3Rp
b24gPT0gTFRSID8gTlNVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uTGVmdFRvUmlnaHQgOiBO
U1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25SaWdodFRvTGVmdF07CisgICAgW2R1bW15Vmll
dy5nZXQoKSBzZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uOnRleHREaXJlY3Rpb24gPT0g
VGV4dERpcmVjdGlvbjo6TFRSID8gTlNVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uTGVmdFRv
UmlnaHQgOiBOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25SaWdodFRvTGVmdF07CiAgICAg
W3ZpZXcgYWRkU3VidmlldzpkdW1teVZpZXcuZ2V0KCldOwogICAgIGxvY2F0aW9uID0gW2R1bW15
VmlldyBjb252ZXJ0UG9pbnQ6bG9jYXRpb24gZnJvbVZpZXc6dmlld107CiAgICAgCkluZGV4OiBT
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQkocmV2aXNpb24gMjM0NTE0KQorKysgU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHdv
cmtpbmcgY29weSkKQEAgLTE0OTQsNyArMTQ5NCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OnRyYW5zaXRpb25Ub0MKICAgICAvLyBsaWtlIHRoZSBvbmVzIHRoYXQgU2FmYXJpIHVzZXMg
Zm9yIGJvb2ttYXJrcyBpdCBpcyB0aGUgb25seSB3YXkgdGhlIERvY3VtZW50TG9hZGVyCiAgICAg
Ly8gd2lsbCBnZXQgdGhlIHByb3BlciB0aXRsZS4KICAgICBpZiAoYXV0byogZG9jdW1lbnRMb2Fk
ZXIgPSBbZGF0YVNvdXJjZSBfZG9jdW1lbnRMb2FkZXJdKQotICAgICAgICBkb2N1bWVudExvYWRl
ci0+c2V0VGl0bGUoeyBbZGF0YVNvdXJjZSBwYWdlVGl0bGVdLCBMVFIgfSk7CisgICAgICAgIGRv
Y3VtZW50TG9hZGVyLT5zZXRUaXRsZSh7IFtkYXRhU291cmNlIHBhZ2VUaXRsZV0sIFRleHREaXJl
Y3Rpb246OkxUUiB9KTsKIAogICAgIGlmIChhdXRvKiBvd25lckVsZW1lbnQgPSBjb3JlRnJhbWUt
Pm93bmVyRWxlbWVudCgpKQogICAgICAgICBjb3JlRnJhbWUtPnZpZXcoKS0+c2V0Q2FuSGF2ZVNj
cm9sbGJhcnMob3duZXJFbGVtZW50LT5zY3JvbGxpbmdNb2RlKCkgIT0gU2Nyb2xsYmFyQWx3YXlz
T2ZmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5t
bQkocmV2aXNpb24gMjM0NTE0KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9X
ZWJGcmFtZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjMzNyw3ICsyMzM3LDcgQEAgLSAodm9pZClf
ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGU6KE5TU3RyaQogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBf
cHJpdmF0ZS0+Y29yZUZyYW1lOwogICAgIGlmICghY29yZUZyYW1lKQogICAgICAgICByZXR1cm47
Ci0gICAgY29yZUZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERpZFJlY2VpdmVUaXRs
ZSh7IHRpdGxlLCBMVFIgfSk7CisgICAgY29yZUZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5kaXNw
YXRjaERpZFJlY2VpdmVUaXRsZSh7IHRpdGxlLCBUZXh0RGlyZWN0aW9uOjpMVFIgfSk7CiB9CiAK
ICNlbmRpZiAvLyBQTEFURk9STShJT1MpCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzQ2MTQpCisrKyBUb29scy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxOC0wOC0wNiAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFVzZSBhIDEtYnl0
ZSBlbnVtIGNsYXNzIGZvciBUZXh0RGlyZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODgzNTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db21w
bGV4VGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU3RyaW5nV2l0aERpcmVjdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
Q29tbWFuZEJhY2tGb3J3YXJkLm1tOgorICAgICAgICAoVEVTVF9GKToKKwogMjAxOC0wOC0wNiAg
V2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBD
YXJldCBkaXNhcHBlYXJzIGFmdGVyIHJlc2lnbmluZyBhbmQgYmVjb21pbmcgZmlyc3QgcmVzcG9u
ZGVyIGlmIGFjdGl2ZSBmb2N1cyBzdGF0ZSBpcyByZXRhaW5lZApJbmRleDogVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbXBsZXhUZXh0Q29udHJv
bGxlci5jcHAJKHJldmlzaW9uIDIzNDUxNCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTIs
NyArMzUyLDcgQEAgVEVTVF9GKENvbXBsZXhUZXh0Q29udHJvbGxlclRlc3QsIFRvdGFsVwogCiAg
ICAgVUNoYXIgY2hhcmFjdGVyc1tdID0geyAweDY0NCwgJyAnLCAweDY0NCwgJyAnLCAweDY0NCB9
OwogICAgIHNpemVfdCBjaGFyYWN0ZXJzTGVuZ3RoID0gV1RGX0FSUkFZX0xFTkdUSChjaGFyYWN0
ZXJzKTsKLSAgICBUZXh0UnVuIHRleHRSdW4oU3RyaW5nVmlldyhjaGFyYWN0ZXJzLCBjaGFyYWN0
ZXJzTGVuZ3RoKSwgMCwgMTQsIERlZmF1bHRFeHBhbnNpb24sIFJUTCk7CisgICAgVGV4dFJ1biB0
ZXh0UnVuKFN0cmluZ1ZpZXcoY2hhcmFjdGVycywgY2hhcmFjdGVyc0xlbmd0aCksIDAsIDE0LCBE
ZWZhdWx0RXhwYW5zaW9uLCBUZXh0RGlyZWN0aW9uOjpSVEwpOwogICAgIGF1dG8gcnVuID0gQ29t
cGxleFRleHRDb250cm9sbGVyOjpDb21wbGV4VGV4dFJ1bjo6Y3JlYXRlKGFkdmFuY2VzLCBvcmln
aW5zLCB7IDUsIDYsIDcsIDgsIDkgfSwgeyA0LCAzLCAyLCAxLCAwIH0sIGluaXRpYWxBZHZhbmNl
LCBmb250LnByaW1hcnlGb250KCksIGNoYXJhY3RlcnMsIDAsIGNoYXJhY3RlcnNMZW5ndGgsIDAs
IDUsIGZhbHNlKTsKICAgICBWZWN0b3I8UmVmPENvbXBsZXhUZXh0Q29udHJvbGxlcjo6Q29tcGxl
eFRleHRSdW4+PiBydW5zOwogICAgIHJ1bnMuYXBwZW5kKFdURk1vdmUocnVuKSk7CkluZGV4OiBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU3RyaW5nV2l0aERpcmVjdGlvbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1N0cmluZ1dp
dGhEaXJlY3Rpb24uY3BwCShyZXZpc2lvbiAyMzQ1MTQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvU3RyaW5nV2l0aERpcmVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMxLDQ5ICszMSw2NiBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAorbmFtZXNwYWNl
IFdlYkNvcmUgeworCitzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBvcywg
Y29uc3QgVGV4dERpcmVjdGlvbiYgZGlyZWN0aW9uKQoreworICAgIHN3aXRjaCAoZGlyZWN0aW9u
KSB7CisgICAgY2FzZSBUZXh0RGlyZWN0aW9uOjpMVFI6CisgICAgICAgIG9zIDw8ICJUZXh0RGly
ZWN0aW9uOjpMVFIiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFRleHREaXJlY3Rpb246OlJU
TDoKKyAgICAgICAgb3MgPDwgIlRleHREaXJlY3Rpb246OlJUTCI7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KKyAgICByZXR1cm4gb3M7Cit9CisKK30KKwogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkg
ewogCiBURVNUKFN0cmluZ1dpdGhEaXJlY3Rpb24sIFRydW5jYXRlQXRFbmRXaXRoTGVmdFRvUmln
aHRTdHJpbmcpCiB7Ci0gICAgU3RyaW5nV2l0aERpcmVjdGlvbiBzdHJpbmcgeyAiQ2FwcHVjY2lu
byIsIExUUiB9OworICAgIFN0cmluZ1dpdGhEaXJlY3Rpb24gc3RyaW5nIHsgIkNhcHB1Y2Npbm8i
LCBUZXh0RGlyZWN0aW9uOjpMVFIgfTsKICAgICBTdHJpbmdXaXRoRGlyZWN0aW9uIHJlc3VsdDsK
IAogICAgIHJlc3VsdCA9IHRydW5jYXRlRnJvbUVuZChzdHJpbmcsIDApOwotICAgIEVYUEVDVF9F
UShMVFIsIHJlc3VsdC5kaXJlY3Rpb24pOworICAgIEVYUEVDVF9FUShUZXh0RGlyZWN0aW9uOjpM
VFIsIHJlc3VsdC5kaXJlY3Rpb24pOwogICAgIEVYUEVDVF9FUSgiIiwgcmVzdWx0LnN0cmluZyk7
CiAKICAgICByZXN1bHQgPSB0cnVuY2F0ZUZyb21FbmQoc3RyaW5nLCAxKTsKLSAgICBFWFBFQ1Rf
RVEoTFRSLCByZXN1bHQuZGlyZWN0aW9uKTsKKyAgICBFWFBFQ1RfRVEoVGV4dERpcmVjdGlvbjo6
TFRSLCByZXN1bHQuZGlyZWN0aW9uKTsKICAgICBFWFBFQ1RfRVEoIkMiLCByZXN1bHQuc3RyaW5n
KTsKIAogICAgIHJlc3VsdCA9IHRydW5jYXRlRnJvbUVuZChzdHJpbmcsIDIpOwotICAgIEVYUEVD
VF9FUShMVFIsIHJlc3VsdC5kaXJlY3Rpb24pOworICAgIEVYUEVDVF9FUShUZXh0RGlyZWN0aW9u
OjpMVFIsIHJlc3VsdC5kaXJlY3Rpb24pOwogICAgIEVYUEVDVF9FUSgiQ2EiLCByZXN1bHQuc3Ry
aW5nKTsKIAogICAgIHJlc3VsdCA9IHRydW5jYXRlRnJvbUVuZChzdHJpbmcsIDEwMDApOwotICAg
IEVYUEVDVF9FUShMVFIsIHJlc3VsdC5kaXJlY3Rpb24pOworICAgIEVYUEVDVF9FUShUZXh0RGly
ZWN0aW9uOjpMVFIsIHJlc3VsdC5kaXJlY3Rpb24pOwogICAgIEVYUEVDVF9FUSgiQ2FwcHVjY2lu
byIsIHJlc3VsdC5zdHJpbmcpOwogfQogCiBURVNUKFN0cmluZ1dpdGhEaXJlY3Rpb24sIFRydW5j
YXRlQXRFbmRXaXRoUmlnaHRUb0xlZnRTdHJpbmcpCiB7Ci0gICAgU3RyaW5nV2l0aERpcmVjdGlv
biBzdHJpbmcgeyBTdHJpbmc6OmZyb21VVEY4KCLXp9a416TWvNeV1rzXpta0J9eZ16DXlda5Iiks
IFJUTCB9OworICAgIFN0cmluZ1dpdGhEaXJlY3Rpb24gc3RyaW5nIHsgU3RyaW5nOjpmcm9tVVRG
OCgi16fWuNek1rzXlda816bWtCfXmdeg15XWuSIpLCBUZXh0RGlyZWN0aW9uOjpSVEwgfTsKICAg
ICBTdHJpbmdXaXRoRGlyZWN0aW9uIHJlc3VsdDsKIAogICAgIHJlc3VsdCA9IHRydW5jYXRlRnJv
bUVuZChzdHJpbmcsIDApOwotICAgIEVYUEVDVF9FUShSVEwsIHJlc3VsdC5kaXJlY3Rpb24pOwor
ICAgIEVYUEVDVF9FUShUZXh0RGlyZWN0aW9uOjpSVEwsIHJlc3VsdC5kaXJlY3Rpb24pOwogICAg
IEVYUEVDVF9FUSgiIiwgcmVzdWx0LnN0cmluZyk7CiAKICAgICByZXN1bHQgPSB0cnVuY2F0ZUZy
b21FbmQoc3RyaW5nLCAxKTsKLSAgICBFWFBFQ1RfRVEoUlRMLCByZXN1bHQuZGlyZWN0aW9uKTsK
KyAgICBFWFBFQ1RfRVEoVGV4dERpcmVjdGlvbjo6UlRMLCByZXN1bHQuZGlyZWN0aW9uKTsKICAg
ICBFWFBFQ1RfRVEoU3RyaW5nOjpmcm9tVVRGOCgi16ciKSwgcmVzdWx0LnN0cmluZyk7CiAKICAg
ICByZXN1bHQgPSB0cnVuY2F0ZUZyb21FbmQoc3RyaW5nLCAyKTsKLSAgICBFWFBFQ1RfRVEoUlRM
LCByZXN1bHQuZGlyZWN0aW9uKTsKKyAgICBFWFBFQ1RfRVEoVGV4dERpcmVjdGlvbjo6UlRMLCBy
ZXN1bHQuZGlyZWN0aW9uKTsKICAgICBFWFBFQ1RfRVEoU3RyaW5nOjpmcm9tVVRGOCgi16fWuCIp
LCByZXN1bHQuc3RyaW5nKTsKIAogICAgIHJlc3VsdCA9IHRydW5jYXRlRnJvbUVuZChzdHJpbmcs
IDEwMDApOwotICAgIEVYUEVDVF9FUShSVEwsIHJlc3VsdC5kaXJlY3Rpb24pOworICAgIEVYUEVD
VF9FUShUZXh0RGlyZWN0aW9uOjpSVEwsIHJlc3VsdC5kaXJlY3Rpb24pOwogICAgIEVYUEVDVF9F
UShTdHJpbmc6OmZyb21VVEY4KCLXp9a416TWvNeV1rzXpta0J9eZ16DXlda5IiksIHJlc3VsdC5z
dHJpbmcpOwogfQogCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0NvbW1hbmRCYWNrRm9yd2FyZC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0NvbW1hbmRCYWNrRm9yd2FyZC5tbQkocmV2aXNpb24gMjM0NTE0
KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Db21tYW5kQmFja0Zv
cndhcmQubW0JKHdvcmtpbmcgY29weSkKQEAgLTE3OCw3ICsxNzgsNyBAQCBwdWJsaWM6CiAgICAg
fQogfTsKIAotVEVTVF9GKFdlYktpdDJfQ29tbWFuZEJhY2tGb3J3YXJkVGVzdFdLV2ViVmlldywg
TFRSKQorVEVTVF9GKFdlYktpdDJfQ29tbWFuZEJhY2tGb3J3YXJkVGVzdFdLV2ViVmlldywgVGV4
dERpcmVjdGlvbjo6TFRSKQogewogICAgIEVYUEVDVF9FUShOU1VzZXJJbnRlcmZhY2VMYXlvdXRE
aXJlY3Rpb25MZWZ0VG9SaWdodCwgW3dlYlZpZXcgdXNlckludGVyZmFjZUxheW91dERpcmVjdGlv
bl0pOwogICAgIApAQCAtMjIzLDcgKzIyMyw3IEBAIFRFU1RfRihXZWJLaXQyX0NvbW1hbmRCYWNr
Rm9yd2FyZFRlc3RXS1cKIAogI2VuZGlmCiAKLVRFU1RfRihXZWJLaXQyX0NvbW1hbmRCYWNrRm9y
d2FyZFRlc3RXS1ZpZXcsIExUUikKK1RFU1RfRihXZWJLaXQyX0NvbW1hbmRCYWNrRm9yd2FyZFRl
c3RXS1ZpZXcsIFRleHREaXJlY3Rpb246OkxUUikKIHsKICAgICBFWFBFQ1RfRVEoTlNVc2VySW50
ZXJmYWNlTGF5b3V0RGlyZWN0aW9uTGVmdFRvUmlnaHQsIFt3ZWJWaWV3IHVzZXJJbnRlcmZhY2VM
YXlvdXREaXJlY3Rpb25dKTsKICAgICAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>346670</attachid>
            <date>2018-08-06 17:58:08 -0700</date>
            <delta_ts>2018-08-06 18:37:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188350-20180806175807.patch</filename>
            <type>text/plain</type>
            <size>127399</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNDYxOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2NCBAQAorMjAxOC0wOC0wNiAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFVzZSBhIDEt
Ynl0ZSBlbnVtIGNsYXNzIGZvciBUZXh0RGlyZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODgzNTAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb24uaDoKKyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBUZXh0RGlyZWN0aW9u
IGNvbnN0KToKKyAgICAgICAgKiBjc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6Om1hdGNoQWxsUnVsZXMpOgorICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dXBkYXRl
VGl0bGVGcm9tVGl0bGVFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRU
aXRsZSk6CisgICAgICAgICogZG9tL1Bvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBv
c2l0aW9uOjpwcmltYXJ5RGlyZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBkb20vUmFuZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2U6OmNvbGxlY3RTZWxlY3Rpb25SZWN0c1dpdGhvdXRV
bmlvbkludGVyaW9yTGluZXMgY29uc3QpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKToKKyAgICAgICAg
KiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmJhc2VXcml0
aW5nRGlyZWN0aW9uRm9yU2VsZWN0aW9uU3RhcnQgY29uc3QpOgorICAgICAgICAqIGVkaXRpbmcv
RnJhbWVTZWxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246Ondp
bGxCZU1vZGlmaWVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjptb2RpZnlF
eHRlbmRpbmdSaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5
RXh0ZW5kaW5nRm9yd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6bW9k
aWZ5TW92aW5nUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246Om1vZGlm
eUV4dGVuZGluZ0xlZnQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246Om1vZGlm
eUV4dGVuZGluZ0JhY2t3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpt
b2RpZnlNb3ZpbmdMZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjp0ZXh0
U2VsZWN0aW9uSW50ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjptb2Rp
ZnkpOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlZpc2libGVQb3NpdGlvbjo6bGVmdFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uOjpyaWdodFZpc3VhbGx5RGlz
dGluY3RDYW5kaWRhdGUgY29uc3QpOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVVuaXRzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnZpc3VhbFdvcmRQb3NpdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpsZWZ0V29yZFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnJpZ2h0V29yZFBvc2l0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmxlZnRCb3VuZGFyeU9mTGluZSk6CisgICAgICAgIChX
ZWJDb3JlOjpyaWdodEJvdW5kYXJ5T2ZMaW5lKToKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpkaXJlY3Rpb25hbGl0eUlmaGFz
RGlyQXV0b0F0dHJpYnV0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6
ZGlyZWN0aW9uYWxpdHkgY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpzZXR1cERhdGVUaW1lQ2hv
b3NlclBhcmFtZXRlcnMpOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmRp
cmVjdGlvbkZvckZvcm1EYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9y
bUNvbnRyb2xFbGVtZW50OjphZGp1c3RJbm5lclRleHRTdHlsZSBjb25zdCk6CisgICAgICAgICog
aHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUaXRsZUVs
ZW1lbnQ6OmNvbXB1dGVkVGV4dFdpdGhEaXJlY3Rpb24pOgorICAgICAgICAqIGh0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OnRvVGV4dERpcmVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRpcmVjdGlvbiBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnRleHRPZmZzZXQpOgorICAgICAg
ICAqIGh0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTbGlkZXJDb250YWluZXI6OmxheW91dCk6CisgICAgICAgICogaHRtbC9zaGFkb3cv
VGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb250
cm9sSW5uZXJFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUpOgorICAgICAgICAqIHBhZ2UvQ2hy
b21lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6c2V0VG9vbFRpcCk6CisgICAgICAg
ICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFnaW5hdGlvbk1vZGVG
b3JSZW5kZXJTdHlsZSk6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy55YW1sOgorICAgICAgICAq
IHBsYXRmb3JtL1JlY3RFZGdlcy5oOgorICAgICAgICAoV2ViQ29yZTo6UmVjdEVkZ2VzOjpzdGFy
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZWN0RWRnZXM6OmVuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZWN0RWRnZXM6OnN0YXJ0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlY3RFZGdlczo6
ZW5kIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlY3RFZGdlczo6c2V0U3RhcnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVjdEVkZ2VzOjpzZXRFbmQpOgorICAgICAgICAqIHBsYXRmb3JtL1Vz
ZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGxleFRl
eHRDb250cm9sbGVyOjpjb21wdXRlRXhwYW5zaW9uT3Bwb3J0dW5pdHkpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRD
YXNjYWRlOjpleHBhbnNpb25PcHBvcnR1bml0eUNvdW50SW50ZXJuYWwpOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udENhc2NhZGU6OmxlYWRpbmdFeHBhbnNpb25PcHBvcnR1bml0eSk6CisgICAgICAg
IChXZWJDb3JlOjpGb250Q2FzY2FkZTo6dHJhaWxpbmdFeHBhbnNpb25PcHBvcnR1bml0eSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0JpZGlUZXh0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmg6CisgICAgICAgIChXZWJDb3JlOjpUZXh0UnVuOjpUZXh0
UnVuKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRSdW46OnJ0bCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0UnVuOjpsdHIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFJ1bjo6
c2V0RGlyZWN0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9y
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldpZHRoSXRlcmF0b3I6OldpZHRoSXRlcmF0b3IpOgor
ICAgICAgICAqIHBsYXRmb3JtL2lvcy9TZWxlY3Rpb25SZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNlbGVjdGlvblJlY3Q6OlNlbGVjdGlvblJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL3Rl
eHQvQmlkaVJlc29sdmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpCaWRpU3RhdHVzOjpCaWRpU3Rh
dHVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1N0cmluZ1dpdGhEaXJlY3Rpb24uaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS90ZXh0L1dyaXRpbmdNb2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpp
c0xlZnRUb1JpZ2h0RGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmlzVmVydGljYWxXcml0
aW5nTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjppc0ZsaXBwZWRXcml0aW5nTW9kZSk6CisgICAg
ICAgIChXZWJDb3JlOjptYXBMb2dpY2FsU2lkZVRvUGh5c2ljYWxTaWRlKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVz
dWx0OjpzcGVsbGluZ1Rvb2xUaXAgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJl
c3VsdDo6dGl0bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6aW5u
ZXJUZXh0SWZUcnVuY2F0ZWQgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVCb3gu
aDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUJveDo6ZGlyZWN0aW9uIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OklubGluZUJveDo6aXNMZWZ0VG9SaWdodERpcmVjdGlvbiBjb25zdCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5saW5lRmxvd0JveDo6cGFpbnRGaWxsTGF5ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9Jbmxp
bmVJdGVyYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6ZW1iZWRDaGFyRnJvbURpcmVjdGlvbik6
CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5saW5lVGV4dEJveDo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6bWlycm9yUlRMU2Vn
bWVudCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRldGVybWlu
ZURpcmVjdGlvbmFsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6dGV4
dEFsaWdubWVudEZvckxpbmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tG
bG93Ojp1cGRhdGVMb2dpY2FsV2lkdGhGb3JBbGlnbm1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQmxvY2tGbG93OjpoYW5kbGVUcmFpbGluZ1NwYWNlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCbG9ja0Zsb3c6OmxheW91dFJ1bnNBbmRGbG9hdHNJblJhbmdlKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVJbmxp
bmVTdGF0aWNEaXN0YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVQ
b3NpdGlvbmVkTG9naWNhbFdpZHRoVXNpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aFJlcGxhY2VkIGNvbnN0KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6YXBwbHlMaW5lQ2xhbXAp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGcmFnbWVudGVkRmxvdy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJGcmFnbWVudGVkRmxvdzo6dXBkYXRlTG9naWNhbFdpZHRoKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckZyYWdtZW50ZWRGbG93Ojp1cGRhdGVGcmFnbWVudHNGcmFn
bWVudGVkRmxvd1BvcnRpb25SZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllck1vZGVsT2JqZWN0
OjpzaG91bGRQbGFjZUJsb2NrRGlyZWN0aW9uU2Nyb2xsYmFyT25MZWZ0IGNvbnN0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTWFycXVlZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJNYXJxdWVlOjpkaXJlY3Rpb24gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJN
ZW51TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZW51TGlzdDo6YWRqdXN0SW5u
ZXJTdHlsZSk6CisgICAgICAgIChSZW5kZXJNZW51TGlzdDo6Y2xpZW50UGFkZGluZ0xlZnQgY29u
c3QpOgorICAgICAgICAoUmVuZGVyTWVudUxpc3Q6OmNsaWVudFBhZGRpbmdSaWdodCBjb25zdCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWVJT1M6OnBvcHVwSW50ZXJuYWxQYWRkaW5nQm94IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludE1lbnVMaXN0QnV0dG9uRGVjb3JhdGlv
bnMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludE1lbnVMaXN0QnV0dG9uRGVjb3JhdGlvbnMpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBvcHVwSW50ZXJuYWxQYWRkaW5nQm94
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpzZXRQb3B1cEJ1dHRv
bkNlbGxTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRTZWFy
Y2hGaWVsZENhbmNlbEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6
cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24pOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1M
QmxvY2s6Om1pcnJvcklmTmVlZGVkIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhN
TE9wZXJhdG9yOjpsYXlvdXRCbG9jayk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpSZW5kZXJTdHlsZSk6
CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTdHlsZTo6aXNMZWZ0VG9SaWdodERpcmVjdGlvbiBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbERpcmVjdGlvbik6CisgICAgICAgICogdGVz
dGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsU2V0
dGluZ3M6OnN5c3RlbUxheW91dERpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5h
bFNldHRpbmdzOjpzZXRTeXN0ZW1MYXlvdXREaXJlY3Rpb24pOgorICAgICAgICAqIHRlc3Rpbmcv
SW50ZXJuYWxzLmg6CisKIDIwMTgtMDgtMDYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5z
ZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVc2UgZW51bSBjbGFzc2VzIGFuZCBPcHRpb25TZXRz
IGZvciBQYWludFBoYXNlIGFuZCBQYWludEJlaGF2aW9yCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCShyZXZpc2lvbiAy
MzQ2MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogICAgIGNvbnN0
IFN0cmluZyYgdGFnKCkgY29uc3QgeyByZXR1cm4gbV90YWc7IH0KICAgICBjb25zdCBVUkwmIGlj
b24oKSBjb25zdCB7IHJldHVybiBtX2ljb247IH0KIAotICAgIFRleHREaXJlY3Rpb24gZGlyZWN0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kaXJlY3Rpb24gPT0gRGlyZWN0aW9uOjpSdGwgPyBSVEwg
OiBMVFI7IH0KKyAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
ZGlyZWN0aW9uID09IERpcmVjdGlvbjo6UnRsID8gVGV4dERpcmVjdGlvbjo6UlRMIDogVGV4dERp
cmVjdGlvbjo6TFRSOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpc3BhdGNoQ2xpY2tF
dmVudCgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlzcGF0Y2hDbG9zZUV2ZW50KCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50
ZXJmYWNlVGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCShyZXZpc2lvbiAyMzQ2MTgp
CisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50
ZXJmYWNlVGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzNSw3ICszMzUsNyBAQCBzdGF0aWMg
aW50IG9mZnNldEFkanVzdG1lbnRGb3JMaXN0SXRlbShjCiAgICAgLy8gV2UgbmVlZCB0byBhZGp1
c3QgdGhlIG9mZnNldHMgZm9yIHRoZSBsaXN0IGl0ZW0gbWFya2VyIGluCiAgICAgLy8gTGVmdC1U
by1SaWdodCB0ZXh0LCBzaW5jZSB3ZSBleHBvc2UgaXQgdG9nZXRoZXIgd2l0aCB0aGUgdGV4dC4K
ICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gb2JqZWN0LT5yZW5kZXJlcigpOwotICAgIGlm
IChpczxSZW5kZXJMaXN0SXRlbT4ocmVuZGVyZXIpICYmIHJlbmRlcmVyLT5zdHlsZSgpLmRpcmVj
dGlvbigpID09IExUUikKKyAgICBpZiAoaXM8UmVuZGVyTGlzdEl0ZW0+KHJlbmRlcmVyKSAmJiBy
ZW5kZXJlci0+c3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpCiAgICAg
ICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJMaXN0SXRlbT4oKnJlbmRlcmVyKS5tYXJrZXJUZXh0
V2l0aFN1ZmZpeCgpLmxlbmd0aCgpOwogCiAgICAgcmV0dXJuIDA7CkBAIC00NjIsNyArNDYyLDcg
QEAgc3RhdGljIGdjaGFyKiB3ZWJraXRBY2Nlc3NpYmxlVGV4dEdldFRleAogICAgICAgICBSZW5k
ZXJPYmplY3QqIG9ialJlbmRlcmVyID0gY29yZU9iamVjdC0+cmVuZGVyZXIoKTsKICAgICAgICAg
aWYgKGlzPFJlbmRlckxpc3RJdGVtPihvYmpSZW5kZXJlcikpIHsKICAgICAgICAgICAgIFN0cmlu
ZyBtYXJrZXJUZXh0ID0gZG93bmNhc3Q8UmVuZGVyTGlzdEl0ZW0+KCpvYmpSZW5kZXJlcikubWFy
a2VyVGV4dFdpdGhTdWZmaXgoKTsKLSAgICAgICAgICAgIHJldCA9IG9ialJlbmRlcmVyLT5zdHls
ZSgpLmRpcmVjdGlvbigpID09IExUUiA/IG1hcmtlclRleHQgKyByZXQgOiByZXQgKyBtYXJrZXJU
ZXh0OworICAgICAgICAgICAgcmV0ID0gb2JqUmVuZGVyZXItPnN0eWxlKCkuZGlyZWN0aW9uKCkg
PT0gVGV4dERpcmVjdGlvbjo6TFRSID8gbWFya2VyVGV4dCArIHJldCA6IHJldCArIG1hcmtlclRl
eHQ7CiAgICAgICAgICAgICBpZiAoZW5kT2Zmc2V0ID09IC0xKQogICAgICAgICAgICAgICAgIGFj
dHVhbEVuZE9mZnNldCA9IHJldC5sZW5ndGgoKSArIG1hcmtlclRleHQubGVuZ3RoKCk7CiAgICAg
ICAgIH0KQEAgLTkwNSwxMSArOTA1LDExIEBAIHN0YXRpYyBjaGFyKiB3ZWJraXRBY2Nlc3NpYmxl
VGV4dExpbmVGb3IKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gY29yZU9iamVjdC0+cmVu
ZGVyZXIoKTsKICAgICBpZiAocmVuZGVyZXItPmlzTGlzdEl0ZW0oKSkgewogICAgICAgICAvLyBG
b3IgTGVmdC10by1SaWdodCwgdGhlIGxpc3QgaXRlbSBtYXJrZXIgaXMgYXQgdGhlIGJlZ2lubmlu
ZyBvZiB0aGUgZXhwb3NlZCB0ZXh0LgotICAgICAgICBpZiAocmVuZGVyZXItPnN0eWxlKCkuZGly
ZWN0aW9uKCkgPT0gTFRSICYmIGlzRmlyc3RWaXNpYmxlUG9zaXRpb25Jbk5vZGUoc2VsZWN0ZWRM
aW5lLnZpc2libGVTdGFydCgpLCBub2RlKSkKKyAgICAgICAgaWYgKHJlbmRlcmVyLT5zdHlsZSgp
LmRpcmVjdGlvbigpID09IFRleHREaXJlY3Rpb246OkxUUiAmJiBpc0ZpcnN0VmlzaWJsZVBvc2l0
aW9uSW5Ob2RlKHNlbGVjdGVkTGluZS52aXNpYmxlU3RhcnQoKSwgbm9kZSkpCiAgICAgICAgICAg
ICAqc3RhcnRPZmZzZXQgPSAwOwogCiAgICAgICAgIC8vIEZvciBSaWdodC10by1MZWZ0LCB0aGUg
bGlzdCBpdGVtIG1hcmtlciBpcyBhdCB0aGUgZW5kIG9mIHRoZSBleHBvc2VkIHRleHQuCi0gICAg
ICAgIGlmIChyZW5kZXJlci0+c3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBSVEwgJiYgaXNMYXN0Vmlz
aWJsZVBvc2l0aW9uSW5Ob2RlKHNlbGVjdGVkTGluZS52aXNpYmxlRW5kKCksIG5vZGUpKQorICAg
ICAgICBpZiAocmVuZGVyZXItPnN0eWxlKCkuZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6
UlRMICYmIGlzTGFzdFZpc2libGVQb3NpdGlvbkluTm9kZShzZWxlY3RlZExpbmUudmlzaWJsZUVu
ZCgpLCBub2RlKSkKICAgICAgICAgICAgICplbmRPZmZzZXQgPSBhY2Nlc3NpYmlsaXR5T2JqZWN0
TGVuZ3RoKGNvcmVPYmplY3QpOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NT
U1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCShyZXZpc2lvbiAyMzQ2MTgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMTUwLDEwICszMTUwLDEwIEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1MKIHsKICAgICBtX3ByaW1pdGl2ZVVuaXRUeXBlID0gQ1NTX1ZBTFVFX0lEOwogICAg
IHN3aXRjaCAoZSkgewotICAgIGNhc2UgTFRSOgorICAgIGNhc2UgVGV4dERpcmVjdGlvbjo6TFRS
OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUx0cjsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBSVEw6CisgICAgY2FzZSBUZXh0RGlyZWN0aW9uOjpSVEw6CiAgICAgICAgIG1f
dmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlUnRsOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0z
MTY1LDE1ICszMTY1LDE1IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpv
cGUKIAogICAgIHN3aXRjaCAobV92YWx1ZS52YWx1ZUlEKSB7CiAgICAgY2FzZSBDU1NWYWx1ZUx0
cjoKLSAgICAgICAgcmV0dXJuIExUUjsKKyAgICAgICAgcmV0dXJuIFRleHREaXJlY3Rpb246OkxU
UjsKICAgICBjYXNlIENTU1ZhbHVlUnRsOgotICAgICAgICByZXR1cm4gUlRMOworICAgICAgICBy
ZXR1cm4gVGV4dERpcmVjdGlvbjo6UlRMOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBMVFI7CisgICAg
cmV0dXJuIFRleHREaXJlY3Rpb246OkxUUjsKIH0KIAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFdyaXRpbmdNb2RlIGUpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAJKHJldmlzaW9uIDIzNDYx
OCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTUxOCw3ICs1MTgsNyBAQCB2b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjpt
YXRjaEFsbFJ1bGVzCiAgICAgICAgICAgICBib29sIGlzQXV0bzsKICAgICAgICAgICAgIFRleHRE
aXJlY3Rpb24gdGV4dERpcmVjdGlvbiA9IGRvd25jYXN0PEhUTUxFbGVtZW50PihzdHlsZWRFbGVt
ZW50KS5kaXJlY3Rpb25hbGl0eUlmaGFzRGlyQXV0b0F0dHJpYnV0ZShpc0F1dG8pOwogICAgICAg
ICAgICAgaWYgKGlzQXV0bykKLSAgICAgICAgICAgICAgICBtX3Jlc3VsdC5hZGRNYXRjaGVkUHJv
cGVydGllcyh0ZXh0RGlyZWN0aW9uID09IExUUiA/IGxlZnRUb1JpZ2h0RGVjbGFyYXRpb24oKSA6
IHJpZ2h0VG9MZWZ0RGVjbGFyYXRpb24oKSk7CisgICAgICAgICAgICAgICAgbV9yZXN1bHQuYWRk
TWF0Y2hlZFByb3BlcnRpZXModGV4dERpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBs
ZWZ0VG9SaWdodERlY2xhcmF0aW9uKCkgOiByaWdodFRvTGVmdERlY2xhcmF0aW9uKCkpOwogICAg
ICAgICB9CiAgICAgfQogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lv
biAyMzQ2MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTE0LDcgKzE1MTQsNyBAQCB2b2lkIERvY3VtZW50Ojp1cGRhdGVUaXRsZUZyb21U
aXRsZUVsZW1lCiAgICAgICAgIHVwZGF0ZVRpdGxlKGRvd25jYXN0PEhUTUxUaXRsZUVsZW1lbnQ+
KCptX3RpdGxlRWxlbWVudCkudGV4dFdpdGhEaXJlY3Rpb24oKSk7CiAgICAgZWxzZSBpZiAoaXM8
U1ZHVGl0bGVFbGVtZW50PigqbV90aXRsZUVsZW1lbnQpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBE
b2VzIHRoZSBTVkcgdGl0bGUgZWxlbWVudCBoYXZlIGEgdGV4dCBkaXJlY3Rpb24/Ci0gICAgICAg
IHVwZGF0ZVRpdGxlKHsgZG93bmNhc3Q8U1ZHVGl0bGVFbGVtZW50PigqbV90aXRsZUVsZW1lbnQp
LnRleHRDb250ZW50KCksIExUUiB9KTsKKyAgICAgICAgdXBkYXRlVGl0bGUoeyBkb3duY2FzdDxT
VkdUaXRsZUVsZW1lbnQ+KCptX3RpdGxlRWxlbWVudCkudGV4dENvbnRlbnQoKSwgVGV4dERpcmVj
dGlvbjo6TFRSIH0pOwogICAgIH0KIH0KIApAQCAtMTU0Niw3ICsxNTQ2LDcgQEAgdm9pZCBEb2N1
bWVudDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nJiB0aQogICAgIGVsc2UgaWYgKGlzPFNWR1RpdGxl
RWxlbWVudD4obV90aXRsZUVsZW1lbnQuZ2V0KCkpKQogICAgICAgICBkb3duY2FzdDxTVkdUaXRs
ZUVsZW1lbnQ+KCptX3RpdGxlRWxlbWVudCkuc2V0VGV4dENvbnRlbnQodGl0bGUpOwogICAgIGVs
c2UKLSAgICAgICAgdXBkYXRlVGl0bGUoeyB0aXRsZSwgTFRSIH0pOworICAgICAgICB1cGRhdGVU
aXRsZSh7IHRpdGxlLCBUZXh0RGlyZWN0aW9uOjpMVFIgfSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lPiBzdHJ1Y3QgVGl0bGVUcmFpdHM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRp
b24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAJKHJl
dmlzaW9uIDIzNDYxOCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEzODgsMTAgKzEzODgsMTAgQEAgdm9pZCBQb3NpdGlvbjo6Z2V0SW5saW5l
Qm94QW5kT2Zmc2V0KEVBZgogVGV4dERpcmVjdGlvbiBQb3NpdGlvbjo6cHJpbWFyeURpcmVjdGlv
bigpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2FuY2hvck5vZGUtPnJlbmRlcmVyKCkpCi0gICAgICAg
IHJldHVybiBMVFI7CisgICAgICAgIHJldHVybiBUZXh0RGlyZWN0aW9uOjpMVFI7CiAgICAgaWYg
KGF1dG8qIGJsb2NrRmxvdyA9IGxpbmVhZ2VPZlR5cGU8UmVuZGVyQmxvY2tGbG93PigqbV9hbmNo
b3JOb2RlLT5yZW5kZXJlcigpKS5maXJzdCgpKQogICAgICAgICByZXR1cm4gYmxvY2tGbG93LT5z
dHlsZSgpLmRpcmVjdGlvbigpOwotICAgIHJldHVybiBMVFI7CisgICAgcmV0dXJuIFRleHREaXJl
Y3Rpb246OkxUUjsKIH0KIAogI2lmIEVOQUJMRShUUkVFX0RFQlVHR0lORykKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9t
L1JhbmdlLmNwcAkocmV2aXNpb24gMjM0NjE4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1Jhbmdl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQzMSw3ICsxNDMxLDcgQEAgaW50IFJhbmdlOjpjb2xs
ZWN0U2VsZWN0aW9uUmVjdHNXaXRob3V0VQogICAgICAgICBpZiAocmVjdHNbal0ubGluZU51bWJl
cigpICE9IHJlY3RzW2ogLSAxXS5saW5lTnVtYmVyKCkpCiAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgU2VsZWN0aW9uUmVjdCYgcHJldmlvdXNSZWN0ID0gcmVjdHNbaiAtIDFdOwotICAg
ICAgICBib29sIHByZXZpb3VzUmVjdE1heU5vdFJlYWNoUmlnaHRFZGdlID0gKHByZXZpb3VzUmVj
dC5kaXJlY3Rpb24oKSA9PSBMVFIgJiYgcHJldmlvdXNSZWN0LmNvbnRhaW5zRW5kKCkpIHx8IChw
cmV2aW91c1JlY3QuZGlyZWN0aW9uKCkgPT0gUlRMICYmIHByZXZpb3VzUmVjdC5jb250YWluc1N0
YXJ0KCkpOworICAgICAgICBib29sIHByZXZpb3VzUmVjdE1heU5vdFJlYWNoUmlnaHRFZGdlID0g
KHByZXZpb3VzUmVjdC5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgJiYgcHJldmlv
dXNSZWN0LmNvbnRhaW5zRW5kKCkpIHx8IChwcmV2aW91c1JlY3QuZGlyZWN0aW9uKCkgPT0gVGV4
dERpcmVjdGlvbjo6UlRMICYmIHByZXZpb3VzUmVjdC5jb250YWluc1N0YXJ0KCkpOwogICAgICAg
ICBpZiAocHJldmlvdXNSZWN0TWF5Tm90UmVhY2hSaWdodEVkZ2UpCiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgaW50IGFkanVzdGVkV2lkdGggPSByZWN0c1tqXS5sb2dpY2FsTGVmdCgp
IC0gcHJldmlvdXNSZWN0LmxvZ2ljYWxMZWZ0KCk7CkBAIC0xNDQ2LDEwICsxNDQ2LDEwIEBAIGlu
dCBSYW5nZTo6Y29sbGVjdFNlbGVjdGlvblJlY3RzV2l0aG91dFUKICAgICAgICAgU2VsZWN0aW9u
UmVjdCYgc2VsZWN0aW9uUmVjdCA9IHJlY3RzW2ldOwogICAgICAgICBpZiAoIXNlbGVjdGlvblJl
Y3QuaXNMaW5lQnJlYWsoKSAmJiBzZWxlY3Rpb25SZWN0LmxpbmVOdW1iZXIoKSA+PSBtYXhMaW5l
TnVtYmVyKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmIChzZWxlY3Rpb25SZWN0
LmRpcmVjdGlvbigpID09IFJUTCAmJiBzZWxlY3Rpb25SZWN0LmlzRmlyc3RPbkxpbmUoKSkgewor
ICAgICAgICBpZiAoc2VsZWN0aW9uUmVjdC5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpS
VEwgJiYgc2VsZWN0aW9uUmVjdC5pc0ZpcnN0T25MaW5lKCkpIHsKICAgICAgICAgICAgIHNlbGVj
dGlvblJlY3Quc2V0TG9naWNhbFdpZHRoKHNlbGVjdGlvblJlY3QubG9naWNhbFdpZHRoKCkgKyBz
ZWxlY3Rpb25SZWN0LmxvZ2ljYWxMZWZ0KCkgLSBzZWxlY3Rpb25SZWN0Lm1pblgoKSk7CiAgICAg
ICAgICAgICBzZWxlY3Rpb25SZWN0LnNldExvZ2ljYWxMZWZ0KHNlbGVjdGlvblJlY3QubWluWCgp
KTsKLSAgICAgICAgfSBlbHNlIGlmIChzZWxlY3Rpb25SZWN0LmRpcmVjdGlvbigpID09IExUUiAm
JiBzZWxlY3Rpb25SZWN0LmlzTGFzdE9uTGluZSgpKQorICAgICAgICB9IGVsc2UgaWYgKHNlbGVj
dGlvblJlY3QuZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSICYmIHNlbGVjdGlvblJl
Y3QuaXNMYXN0T25MaW5lKCkpCiAgICAgICAgICAgICBzZWxlY3Rpb25SZWN0LnNldExvZ2ljYWxX
aWR0aChzZWxlY3Rpb25SZWN0Lm1heFgoKSAtIHNlbGVjdGlvblJlY3QubG9naWNhbExlZnQoKSk7
CiAgICAgfQogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwCShyZXZpc2lv
biAyMzQ2MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNjIsMTAgKzM2MiwxMCBAQCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbk9mRW5j
bG9zaW5nQmxvY2soCiB7CiAgICAgYXV0byBibG9jayA9IGVuY2xvc2luZ0Jsb2NrKHBvc2l0aW9u
LmNvbnRhaW5lck5vZGUoKSk7CiAgICAgaWYgKCFibG9jaykKLSAgICAgICAgcmV0dXJuIExUUjsK
KyAgICAgICAgcmV0dXJuIFRleHREaXJlY3Rpb246OkxUUjsKICAgICBhdXRvIHJlbmRlcmVyID0g
YmxvY2stPnJlbmRlcmVyKCk7CiAgICAgaWYgKCFyZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIExU
UjsKKyAgICAgICAgcmV0dXJuIFRleHREaXJlY3Rpb246OkxUUjsKICAgICByZXR1cm4gcmVuZGVy
ZXItPnN0eWxlKCkuZGlyZWN0aW9uKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5jcHAJKHJldmlzaW9uIDIzNDYxOCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc2Miw5ICsxNzYyLDkgQEAgV3JpdGluZ0RpcmVjdGlv
biBFZGl0b3I6OmJhc2VXcml0aW5nRGlyZQogICAgIH0KIAogICAgIHN3aXRjaCAocmVuZGVyZXIt
PnN0eWxlKCkuZGlyZWN0aW9uKCkpIHsKLSAgICBjYXNlIExUUjoKKyAgICBjYXNlIFRleHREaXJl
Y3Rpb246OkxUUjoKICAgICAgICAgcmV0dXJuIExlZnRUb1JpZ2h0V3JpdGluZ0RpcmVjdGlvbjsK
LSAgICBjYXNlIFJUTDoKKyAgICBjYXNlIFRleHREaXJlY3Rpb246OlJUTDoKICAgICAgICAgcmV0
dXJuIFJpZ2h0VG9MZWZ0V3JpdGluZ0RpcmVjdGlvbjsKICAgICB9CiAgICAgCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAkocmV2aXNpb24gMjM0NjE4KQor
KysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTYzMyw3ICs2MzMsNyBAQCB2b2lkIEZyYW1lU2VsZWN0aW9uOjp3aWxsQmVNb2RpZmll
ZChFQWx0CiAgICAgfSBlbHNlIHsKICAgICAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKICAgICAg
ICAgY2FzZSBEaXJlY3Rpb25SaWdodDoKLSAgICAgICAgICAgIGlmIChkaXJlY3Rpb25PZlNlbGVj
dGlvbigpID09IExUUikKKyAgICAgICAgICAgIGlmIChkaXJlY3Rpb25PZlNlbGVjdGlvbigpID09
IFRleHREaXJlY3Rpb246OkxUUikKICAgICAgICAgICAgICAgICBiYXNlSXNTdGFydCA9IHRydWU7
CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgYmFzZUlzU3RhcnQgPSBmYWxzZTsK
QEAgLTY0Miw3ICs2NDIsNyBAQCB2b2lkIEZyYW1lU2VsZWN0aW9uOjp3aWxsQmVNb2RpZmllZChF
QWx0CiAgICAgICAgICAgICBiYXNlSXNTdGFydCA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBEaXJlY3Rpb25MZWZ0OgotICAgICAgICAgICAgaWYgKGRpcmVjdGlvbk9m
U2VsZWN0aW9uKCkgPT0gTFRSKQorICAgICAgICAgICAgaWYgKGRpcmVjdGlvbk9mU2VsZWN0aW9u
KCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSKQogICAgICAgICAgICAgICAgIGJhc2VJc1N0YXJ0ID0g
ZmFsc2U7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgYmFzZUlzU3RhcnQgPSB0
cnVlOwpAQCAtNzE4LDIzICs3MTgsMjMgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9u
Ojptb2RpZnlFeAogICAgIC8vIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gbW9kaWZ5RXh0ZW5kaW5n
UmlnaHQgYW5kIG1vZGlmeUV4dGVuZGluZ0ZvcndhcmQgaXM6CiAgICAgLy8gbW9kaWZ5RXh0ZW5k
aW5nRm9yd2FyZCBhbHdheXMgZXh0ZW5kcyBmb3J3YXJkIGxvZ2ljYWxseS4KICAgICAvLyBtb2Rp
ZnlFeHRlbmRpbmdSaWdodCBiZWhhdmVzIHRoZSBzYW1lIGFzIG1vZGlmeUV4dGVuZGluZ0Zvcndh
cmQgZXhjZXB0IGZvciBleHRlbmRpbmcgY2hhcmFjdGVyIG9yIHdvcmQsCi0gICAgLy8gaXQgZXh0
ZW5kcyBmb3J3YXJkIGxvZ2ljYWxseSBpZiB0aGUgZW5jbG9zaW5nIGJsb2NrIGlzIExUUiBkaXJl
Y3Rpb24sCi0gICAgLy8gYnV0IGl0IGV4dGVuZHMgYmFja3dhcmQgbG9naWNhbGx5IGlmIHRoZSBl
bmNsb3NpbmcgYmxvY2sgaXMgUlRMIGRpcmVjdGlvbi4KKyAgICAvLyBpdCBleHRlbmRzIGZvcndh
cmQgbG9naWNhbGx5IGlmIHRoZSBlbmNsb3NpbmcgYmxvY2sgaXMgVGV4dERpcmVjdGlvbjo6TFRS
LAorICAgIC8vIGJ1dCBpdCBleHRlbmRzIGJhY2t3YXJkIGxvZ2ljYWxseSBpZiB0aGUgZW5jbG9z
aW5nIGJsb2NrIGlzIFRleHREaXJlY3Rpb246OlJUTC4KICAgICBzd2l0Y2ggKGdyYW51bGFyaXR5
KSB7CiAgICAgY2FzZSBDaGFyYWN0ZXJHcmFudWxhcml0eToKLSAgICAgICAgaWYgKGRpcmVjdGlv
bk9mRW5jbG9zaW5nQmxvY2soKSA9PSBMVFIpCisgICAgICAgIGlmIChkaXJlY3Rpb25PZkVuY2xv
c2luZ0Jsb2NrKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSKQogICAgICAgICAgICAgcG9zID0gcG9z
Lm5leHQoQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkpOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBwb3MgPSBwb3MucHJldmlvdXMoQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIFdvcmRHcmFudWxhcml0eToKLSAgICAgICAgaWYgKGRpcmVj
dGlvbk9mRW5jbG9zaW5nQmxvY2soKSA9PSBMVFIpCisgICAgICAgIGlmIChkaXJlY3Rpb25PZkVu
Y2xvc2luZ0Jsb2NrKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSKQogICAgICAgICAgICAgcG9zID0g
bmV4dFdvcmRQb3NpdGlvbkZvclBsYXRmb3JtKHBvcyk7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIHBvcyA9IHByZXZpb3VzV29yZFBvc2l0aW9uKHBvcyk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgTGluZUJvdW5kYXJ5OgotICAgICAgICBpZiAoZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9j
aygpID09IExUUikKKyAgICAgICAgaWYgKGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2soKSA9PSBU
ZXh0RGlyZWN0aW9uOjpMVFIpCiAgICAgICAgICAgICBwb3MgPSBtb2RpZnlFeHRlbmRpbmdGb3J3
YXJkKGdyYW51bGFyaXR5KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcG9zID0gbW9kaWZ5
RXh0ZW5kaW5nQmFja3dhcmQoZ3JhbnVsYXJpdHkpOwpAQCAtNzUzLDcgKzc1Myw3IEBAIFZpc2li
bGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5RXgKICAgICAgICAgYnJlYWs7CiAgICAg
fQogI2lmIEVOQUJMRShVU0VSU0VMRUNUX0FMTCkKLSAgICBhZGp1c3RQb3NpdGlvbkZvclVzZXJT
ZWxlY3RBbGwocG9zLCBkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCkgPT0gTFRSKTsKKyAgICBh
ZGp1c3RQb3NpdGlvbkZvclVzZXJTZWxlY3RBbGwocG9zLCBkaXJlY3Rpb25PZkVuY2xvc2luZ0Js
b2NrKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSKTsKICNlbmRpZgogICAgIHJldHVybiBwb3M7CiB9
CkBAIC03OTgsNyArNzk4LDcgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2Rp
ZnlFeAogICAgICAgICBicmVhazsKICAgICB9CiAjaWYgRU5BQkxFKFVTRVJTRUxFQ1RfQUxMKQot
ICAgICBhZGp1c3RQb3NpdGlvbkZvclVzZXJTZWxlY3RBbGwocG9zLCBkaXJlY3Rpb25PZkVuY2xv
c2luZ0Jsb2NrKCkgPT0gTFRSKTsKKyAgICBhZGp1c3RQb3NpdGlvbkZvclVzZXJTZWxlY3RBbGwo
cG9zLCBkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSKTsK
ICNlbmRpZgogICAgIHJldHVybiBwb3M7CiB9CkBAIC04MTEsNyArODExLDcgQEAgVmlzaWJsZVBv
c2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlNbwogICAgIHN3aXRjaCAoZ3JhbnVsYXJpdHkp
IHsKICAgICBjYXNlIENoYXJhY3RlckdyYW51bGFyaXR5OgogICAgICAgICBpZiAoaXNSYW5nZSgp
KSB7Ci0gICAgICAgICAgICBpZiAoZGlyZWN0aW9uT2ZTZWxlY3Rpb24oKSA9PSBMVFIpCisgICAg
ICAgICAgICBpZiAoZGlyZWN0aW9uT2ZTZWxlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIp
CiAgICAgICAgICAgICAgICAgcG9zID0gVmlzaWJsZVBvc2l0aW9uKG1fc2VsZWN0aW9uLmVuZCgp
LCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
ICAgICBwb3MgPSBWaXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24uc3RhcnQoKSwgbV9zZWxlY3Rp
b24uYWZmaW5pdHkoKSk7CkBAIC05MzUsMjMgKzkzNSwyMyBAQCBWaXNpYmxlUG9zaXRpb24gRnJh
bWVTZWxlY3Rpb246Om1vZGlmeUV4CiAgICAgLy8gVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBtb2Rp
ZnlFeHRlbmRpbmdMZWZ0IGFuZCBtb2RpZnlFeHRlbmRpbmdCYWNrd2FyZCBpczoKICAgICAvLyBt
b2RpZnlFeHRlbmRpbmdCYWNrd2FyZCBhbHdheXMgZXh0ZW5kcyBiYWNrd2FyZCBsb2dpY2FsbHku
CiAgICAgLy8gbW9kaWZ5RXh0ZW5kaW5nTGVmdCBiZWhhdmVzIHRoZSBzYW1lIGFzIG1vZGlmeUV4
dGVuZGluZ0JhY2t3YXJkIGV4Y2VwdCBmb3IgZXh0ZW5kaW5nIGNoYXJhY3RlciBvciB3b3JkLAot
ICAgIC8vIGl0IGV4dGVuZHMgYmFja3dhcmQgbG9naWNhbGx5IGlmIHRoZSBlbmNsb3NpbmcgYmxv
Y2sgaXMgTFRSIGRpcmVjdGlvbiwKLSAgICAvLyBidXQgaXQgZXh0ZW5kcyBmb3J3YXJkIGxvZ2lj
YWxseSBpZiB0aGUgZW5jbG9zaW5nIGJsb2NrIGlzIFJUTCBkaXJlY3Rpb24uCisgICAgLy8gaXQg
ZXh0ZW5kcyBiYWNrd2FyZCBsb2dpY2FsbHkgaWYgdGhlIGVuY2xvc2luZyBibG9jayBpcyBUZXh0
RGlyZWN0aW9uOjpMVFIsCisgICAgLy8gYnV0IGl0IGV4dGVuZHMgZm9yd2FyZCBsb2dpY2FsbHkg
aWYgdGhlIGVuY2xvc2luZyBibG9jayBpcyBUZXh0RGlyZWN0aW9uOjpSVEwuCiAgICAgc3dpdGNo
IChncmFudWxhcml0eSkgewogICAgIGNhc2UgQ2hhcmFjdGVyR3JhbnVsYXJpdHk6Ci0gICAgICAg
IGlmIChkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCkgPT0gTFRSKQorICAgICAgICBpZiAoZGly
ZWN0aW9uT2ZFbmNsb3NpbmdCbG9jaygpID09IFRleHREaXJlY3Rpb246OkxUUikKICAgICAgICAg
ICAgIHBvcyA9IHBvcy5wcmV2aW91cyhDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSk7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIHBvcyA9IHBvcy5uZXh0KENhbm5vdENyb3NzRWRpdGluZ0Jv
dW5kYXJ5KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6Ci0gICAg
ICAgIGlmIChkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCkgPT0gTFRSKQorICAgICAgICBpZiAo
ZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9jaygpID09IFRleHREaXJlY3Rpb246OkxUUikKICAgICAg
ICAgICAgIHBvcyA9IHByZXZpb3VzV29yZFBvc2l0aW9uKHBvcyk7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIHBvcyA9IG5leHRXb3JkUG9zaXRpb25Gb3JQbGF0Zm9ybShwb3MpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIExpbmVCb3VuZGFyeToKLSAgICAgICAgaWYgKGRpcmVjdGlvbk9m
RW5jbG9zaW5nQmxvY2soKSA9PSBMVFIpCisgICAgICAgIGlmIChkaXJlY3Rpb25PZkVuY2xvc2lu
Z0Jsb2NrKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSKQogICAgICAgICAgICAgcG9zID0gbW9kaWZ5
RXh0ZW5kaW5nQmFja3dhcmQoZ3JhbnVsYXJpdHkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBwb3MgPSBtb2RpZnlFeHRlbmRpbmdGb3J3YXJkKGdyYW51bGFyaXR5KTsKQEAgLTk2OSw3ICs5
NjksNyBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeUV4CiAgICAgICAg
IGJyZWFrOwogICAgIH0KICNpZiBFTkFCTEUoVVNFUlNFTEVDVF9BTEwpCi0gICAgYWRqdXN0UG9z
aXRpb25Gb3JVc2VyU2VsZWN0QWxsKHBvcywgIShkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCkg
PT0gTFRSKSk7CisgICAgYWRqdXN0UG9zaXRpb25Gb3JVc2VyU2VsZWN0QWxsKHBvcywgIShkaXJl
Y3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSKSk7CiAjZW5kaWYK
ICAgICByZXR1cm4gcG9zOwogfQpAQCAtMTAxOSw3ICsxMDE5LDcgQEAgVmlzaWJsZVBvc2l0aW9u
IEZyYW1lU2VsZWN0aW9uOjptb2RpZnlFeAogICAgICAgICBicmVhazsKICAgICB9CiAjaWYgRU5B
QkxFKFVTRVJTRUxFQ1RfQUxMKQotICAgIGFkanVzdFBvc2l0aW9uRm9yVXNlclNlbGVjdEFsbChw
b3MsICEoZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9jaygpID09IExUUikpOworICAgIGFkanVzdFBv
c2l0aW9uRm9yVXNlclNlbGVjdEFsbChwb3MsICEoZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9jaygp
ID09IFRleHREaXJlY3Rpb246OkxUUikpOwogI2VuZGlmCiAgICAgcmV0dXJuIHBvczsKIH0KQEAg
LTEwMzIsNyArMTAzMiw3IEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5
TW8KICAgICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7CiAgICAgY2FzZSBDaGFyYWN0ZXJHcmFudWxh
cml0eToKICAgICAgICAgaWYgKGlzUmFuZ2UoKSkKLSAgICAgICAgICAgIGlmIChkaXJlY3Rpb25P
ZlNlbGVjdGlvbigpID09IExUUikKKyAgICAgICAgICAgIGlmIChkaXJlY3Rpb25PZlNlbGVjdGlv
bigpID09IFRleHREaXJlY3Rpb246OkxUUikKICAgICAgICAgICAgICAgICBwb3MgPSBWaXNpYmxl
UG9zaXRpb24obV9zZWxlY3Rpb24uc3RhcnQoKSwgbV9zZWxlY3Rpb24uYWZmaW5pdHkoKSk7CiAg
ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgcG9zID0gVmlzaWJsZVBvc2l0aW9uKG1f
c2VsZWN0aW9uLmVuZCgpLCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKTsKQEAgLTExNTQsNyArMTE1
NCw3IEBAIEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50IEZyYW1lU2VsZWN0aW9uOjoKICAgICBib29s
IGZsaXAgPSBmYWxzZTsKICAgICBpZiAoYWx0ZXIgPT0gRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRp
b25Nb3ZlKSB7CiAgICAgICAgIGludGVudC50eXBlID0gQVhUZXh0U3RhdGVDaGFuZ2VUeXBlU2Vs
ZWN0aW9uTW92ZTsKLSAgICAgICAgZmxpcCA9IGlzUmFuZ2UoKSAmJiBkaXJlY3Rpb25PZlNlbGVj
dGlvbigpID09IFJUTDsKKyAgICAgICAgZmxpcCA9IGlzUmFuZ2UoKSAmJiBkaXJlY3Rpb25PZlNl
bGVjdGlvbigpID09IFRleHREaXJlY3Rpb246OlJUTDsKICAgICB9IGVsc2UKICAgICAgICAgaW50
ZW50LnR5cGUgPSBBWFRleHRTdGF0ZUNoYW5nZVR5cGVTZWxlY3Rpb25FeHRlbmQ7CiAgICAgc3dp
dGNoIChncmFudWxhcml0eSkgewpAQCAtMTM3NSw3ICsxMzc1LDcgQEAgYm9vbCBGcmFtZVNlbGVj
dGlvbjo6bW9kaWZ5KEVBbHRlcmF0aW9uIAogICAgICAgICAgICAgc2V0RXh0ZW50KHBvc2l0aW9u
LCB1c2VyVHJpZ2dlcmVkKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBUZXh0RGlyZWN0
aW9uIHRleHREaXJlY3Rpb24gPSBkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCk7Ci0gICAgICAg
ICAgICBpZiAoZGlyZWN0aW9uID09IERpcmVjdGlvbkZvcndhcmQgfHwgKHRleHREaXJlY3Rpb24g
PT0gTFRSICYmIGRpcmVjdGlvbiA9PSBEaXJlY3Rpb25SaWdodCkgfHwgKHRleHREaXJlY3Rpb24g
PT0gUlRMICYmIGRpcmVjdGlvbiA9PSBEaXJlY3Rpb25MZWZ0KSkKKyAgICAgICAgICAgIGlmIChk
aXJlY3Rpb24gPT0gRGlyZWN0aW9uRm9yd2FyZCB8fCAodGV4dERpcmVjdGlvbiA9PSBUZXh0RGly
ZWN0aW9uOjpMVFIgJiYgZGlyZWN0aW9uID09IERpcmVjdGlvblJpZ2h0KSB8fCAodGV4dERpcmVj
dGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpSVEwgJiYgZGlyZWN0aW9uID09IERpcmVjdGlvbkxlZnQp
KQogICAgICAgICAgICAgICAgIHNldEVuZChwb3NpdGlvbiwgdXNlclRyaWdnZXJlZCk7CiAgICAg
ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgc2V0U3RhcnQocG9zaXRpb24sIHVzZXJUcmln
Z2VyZWQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNw
cAkocmV2aXNpb24gMjM0NjE4KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9z
aXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsNyArMTI3LDcgQEAgUG9zaXRpb24gVmlz
aWJsZVBvc2l0aW9uOjpsZWZ0VmlzdWFsbHlEaQogICAgICAgICBpbnQgb2Zmc2V0OwogICAgICAg
ICBwLmdldElubGluZUJveEFuZE9mZnNldChtX2FmZmluaXR5LCBwcmltYXJ5RGlyZWN0aW9uLCBi
b3gsIG9mZnNldCk7CiAgICAgICAgIGlmICghYm94KQotICAgICAgICAgICAgcmV0dXJuIHByaW1h
cnlEaXJlY3Rpb24gPT0gTFRSID8gcHJldmlvdXNWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1f
ZGVlcFBvc2l0aW9uKSA6IG5leHRWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0
aW9uKTsKKyAgICAgICAgICAgIHJldHVybiBwcmltYXJ5RGlyZWN0aW9uID09IFRleHREaXJlY3Rp
b246OkxUUiA/IHByZXZpb3VzVmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZShtX2RlZXBQb3NpdGlv
bikgOiBuZXh0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZShtX2RlZXBQb3NpdGlvbik7CiAKICAg
ICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9ICZib3gtPnJlbmRlcmVyKCk7CiAKQEAgLTEz
OCw3ICsxMzgsNyBAQCBQb3NpdGlvbiBWaXNpYmxlUG9zaXRpb246OmxlZnRWaXN1YWxseURpCiAg
ICAgICAgICAgICBpZiAoIXJlbmRlcmVyLT5ub2RlKCkpIHsKICAgICAgICAgICAgICAgICBib3gg
PSBib3gtPnByZXZMZWFmQ2hpbGQoKTsKICAgICAgICAgICAgICAgICBpZiAoIWJveCkKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHByaW1hcnlEaXJlY3Rpb24gPT0gTFRSID8gcHJldmlvdXNW
aXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9uKSA6IG5leHRWaXN1YWxseURp
c3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHByaW1hcnlEaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gcHJldmlvdXNWaXN1
YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9uKSA6IG5leHRWaXN1YWxseURpc3Rp
bmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9uKTsKICAgICAgICAgICAgICAgICByZW5kZXJlciA9
ICZib3gtPnJlbmRlcmVyKCk7CiAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gYm94LT5jYXJldFJp
Z2h0bW9zdE9mZnNldCgpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTU2LDcgKzE1
Niw3IEBAIFBvc2l0aW9uIFZpc2libGVQb3NpdGlvbjo6bGVmdFZpc3VhbGx5RGkKICAgICAgICAg
ICAgICAgICAvLyBPdmVyc2hvdCB0byB0aGUgbGVmdC4KICAgICAgICAgICAgICAgICBJbmxpbmVC
b3gqIHByZXZCb3ggPSBib3gtPnByZXZMZWFmQ2hpbGRJZ25vcmluZ0xpbmVCcmVhaygpOwogICAg
ICAgICAgICAgICAgIGlmICghcHJldkJveCkgewotICAgICAgICAgICAgICAgICAgICBQb3NpdGlv
biBwb3NpdGlvbk9uTGVmdCA9IHByaW1hcnlEaXJlY3Rpb24gPT0gTFRSID8gcHJldmlvdXNWaXN1
YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9uKSA6IG5leHRWaXN1YWxseURpc3Rp
bmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgUG9zaXRp
b24gcG9zaXRpb25PbkxlZnQgPSBwcmltYXJ5RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxU
UiA/IHByZXZpb3VzVmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZShtX2RlZXBQb3NpdGlvbikgOiBu
ZXh0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZShtX2RlZXBQb3NpdGlvbik7CiAgICAgICAgICAg
ICAgICAgICAgIGlmIChwb3NpdGlvbk9uTGVmdC5pc051bGwoKSkKICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBQb3NpdGlvbigpOwogCkBAIC0xODMsMTAgKzE4MywxMCBAQCBQb3NpdGlv
biBWaXNpYmxlUG9zaXRpb246OmxlZnRWaXN1YWxseURpCiAgICAgICAgICAgICBpZiAoYm94LT5k
aXJlY3Rpb24oKSA9PSBwcmltYXJ5RGlyZWN0aW9uKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFw
cmV2Qm94KSB7CiAgICAgICAgICAgICAgICAgICAgIElubGluZUJveCogbG9naWNhbFN0YXJ0ID0g
bnVsbHB0cjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHByaW1hcnlEaXJlY3Rpb24gPT0gTFRS
ID8gYm94LT5yb290KCkuZ2V0TG9naWNhbFN0YXJ0Qm94V2l0aE5vZGUobG9naWNhbFN0YXJ0KSA6
IGJveC0+cm9vdCgpLmdldExvZ2ljYWxFbmRCb3hXaXRoTm9kZShsb2dpY2FsU3RhcnQpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChwcmltYXJ5RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246
OkxUUiA/IGJveC0+cm9vdCgpLmdldExvZ2ljYWxTdGFydEJveFdpdGhOb2RlKGxvZ2ljYWxTdGFy
dCkgOiBib3gtPnJvb3QoKS5nZXRMb2dpY2FsRW5kQm94V2l0aE5vZGUobG9naWNhbFN0YXJ0KSkg
ewogICAgICAgICAgICAgICAgICAgICAgICAgYm94ID0gbG9naWNhbFN0YXJ0OwogICAgICAgICAg
ICAgICAgICAgICAgICAgcmVuZGVyZXIgPSAmYm94LT5yZW5kZXJlcigpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgb2Zmc2V0ID0gcHJpbWFyeURpcmVjdGlvbiA9PSBMVFIgPyBib3gtPmNhcmV0
TWluT2Zmc2V0KCkgOiBib3gtPmNhcmV0TWF4T2Zmc2V0KCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBvZmZzZXQgPSBwcmltYXJ5RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUiA/IGJv
eC0+Y2FyZXRNaW5PZmZzZXQoKSA6IGJveC0+Y2FyZXRNYXhPZmZzZXQoKTsKICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9
CkBAIC0yNDcsNyArMjQ3LDcgQEAgUG9zaXRpb24gVmlzaWJsZVBvc2l0aW9uOjpsZWZ0VmlzdWFs
bHlEaQogICAgICAgICAgICAgICAgICAgICBsZXZlbCA9IGJveC0+YmlkaUxldmVsKCk7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHJlbmRlcmVyID0gJmJveC0+cmVuZGVyZXIo
KTsKLSAgICAgICAgICAgICAgICBvZmZzZXQgPSBwcmltYXJ5RGlyZWN0aW9uID09IExUUiA/IGJv
eC0+Y2FyZXRNaW5PZmZzZXQoKSA6IGJveC0+Y2FyZXRNYXhPZmZzZXQoKTsKKyAgICAgICAgICAg
ICAgICBvZmZzZXQgPSBwcmltYXJ5RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUiA/IGJv
eC0+Y2FyZXRNaW5PZmZzZXQoKSA6IGJveC0+Y2FyZXRNYXhPZmZzZXQoKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0yOTcsNyArMjk3LDcgQEAgUG9z
aXRpb24gVmlzaWJsZVBvc2l0aW9uOjpyaWdodFZpc3VhbGx5RAogICAgICAgICBpbnQgb2Zmc2V0
OwogICAgICAgICBwLmdldElubGluZUJveEFuZE9mZnNldChtX2FmZmluaXR5LCBwcmltYXJ5RGly
ZWN0aW9uLCBib3gsIG9mZnNldCk7CiAgICAgICAgIGlmICghYm94KQotICAgICAgICAgICAgcmV0
dXJuIHByaW1hcnlEaXJlY3Rpb24gPT0gTFRSID8gbmV4dFZpc3VhbGx5RGlzdGluY3RDYW5kaWRh
dGUobV9kZWVwUG9zaXRpb24pIDogcHJldmlvdXNWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1f
ZGVlcFBvc2l0aW9uKTsKKyAgICAgICAgICAgIHJldHVybiBwcmltYXJ5RGlyZWN0aW9uID09IFRl
eHREaXJlY3Rpb246OkxUUiA/IG5leHRWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBv
c2l0aW9uKSA6IHByZXZpb3VzVmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZShtX2RlZXBQb3NpdGlv
bik7CiAKICAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9ICZib3gtPnJlbmRlcmVyKCk7
CiAKQEAgLTMwOCw3ICszMDgsNyBAQCBQb3NpdGlvbiBWaXNpYmxlUG9zaXRpb246OnJpZ2h0Vmlz
dWFsbHlECiAgICAgICAgICAgICBpZiAoIXJlbmRlcmVyLT5ub2RlKCkpIHsKICAgICAgICAgICAg
ICAgICBib3ggPSBib3gtPm5leHRMZWFmQ2hpbGQoKTsKICAgICAgICAgICAgICAgICBpZiAoIWJv
eCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByaW1hcnlEaXJlY3Rpb24gPT0gTFRSID8g
bmV4dFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUobV9kZWVwUG9zaXRpb24pIDogcHJldmlvdXNW
aXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9uKTsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHByaW1hcnlEaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gbmV4
dFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUobV9kZWVwUG9zaXRpb24pIDogcHJldmlvdXNWaXN1
YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9uKTsKICAgICAgICAgICAgICAgICBy
ZW5kZXJlciA9ICZib3gtPnJlbmRlcmVyKCk7CiAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gYm94
LT5jYXJldExlZnRtb3N0T2Zmc2V0KCk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0z
MjYsNyArMzI2LDcgQEAgUG9zaXRpb24gVmlzaWJsZVBvc2l0aW9uOjpyaWdodFZpc3VhbGx5RAog
ICAgICAgICAgICAgICAgIC8vIE92ZXJzaG90IHRvIHRoZSByaWdodC4KICAgICAgICAgICAgICAg
ICBJbmxpbmVCb3gqIG5leHRCb3ggPSBib3gtPm5leHRMZWFmQ2hpbGRJZ25vcmluZ0xpbmVCcmVh
aygpOwogICAgICAgICAgICAgICAgIGlmICghbmV4dEJveCkgewotICAgICAgICAgICAgICAgICAg
ICBQb3NpdGlvbiBwb3NpdGlvbk9uUmlnaHQgPSBwcmltYXJ5RGlyZWN0aW9uID09IExUUiA/IG5l
eHRWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9uKSA6IHByZXZpb3VzVmlz
dWFsbHlEaXN0aW5jdENhbmRpZGF0ZShtX2RlZXBQb3NpdGlvbik7CisgICAgICAgICAgICAgICAg
ICAgIFBvc2l0aW9uIHBvc2l0aW9uT25SaWdodCA9IHByaW1hcnlEaXJlY3Rpb24gPT0gVGV4dERp
cmVjdGlvbjo6TFRSID8gbmV4dFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUobV9kZWVwUG9zaXRp
b24pIDogcHJldmlvdXNWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9uKTsK
ICAgICAgICAgICAgICAgICAgICAgaWYgKHBvc2l0aW9uT25SaWdodC5pc051bGwoKSkKICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBQb3NpdGlvbigpOwogCkBAIC0zNTMsMTAgKzM1Mywx
MCBAQCBQb3NpdGlvbiBWaXNpYmxlUG9zaXRpb246OnJpZ2h0VmlzdWFsbHlECiAgICAgICAgICAg
ICBpZiAoYm94LT5kaXJlY3Rpb24oKSA9PSBwcmltYXJ5RGlyZWN0aW9uKSB7CiAgICAgICAgICAg
ICAgICAgaWYgKCFuZXh0Qm94KSB7CiAgICAgICAgICAgICAgICAgICAgIElubGluZUJveCogbG9n
aWNhbEVuZCA9IG51bGxwdHI7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwcmltYXJ5RGlyZWN0
aW9uID09IExUUiA/IGJveC0+cm9vdCgpLmdldExvZ2ljYWxFbmRCb3hXaXRoTm9kZShsb2dpY2Fs
RW5kKSA6IGJveC0+cm9vdCgpLmdldExvZ2ljYWxTdGFydEJveFdpdGhOb2RlKGxvZ2ljYWxFbmQp
KSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChwcmltYXJ5RGlyZWN0aW9uID09IFRleHREaXJl
Y3Rpb246OkxUUiA/IGJveC0+cm9vdCgpLmdldExvZ2ljYWxFbmRCb3hXaXRoTm9kZShsb2dpY2Fs
RW5kKSA6IGJveC0+cm9vdCgpLmdldExvZ2ljYWxTdGFydEJveFdpdGhOb2RlKGxvZ2ljYWxFbmQp
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBib3ggPSBsb2dpY2FsRW5kOwogICAgICAgICAg
ICAgICAgICAgICAgICAgcmVuZGVyZXIgPSAmYm94LT5yZW5kZXJlcigpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgb2Zmc2V0ID0gcHJpbWFyeURpcmVjdGlvbiA9PSBMVFIgPyBib3gtPmNhcmV0
TWF4T2Zmc2V0KCkgOiBib3gtPmNhcmV0TWluT2Zmc2V0KCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBvZmZzZXQgPSBwcmltYXJ5RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUiA/IGJv
eC0+Y2FyZXRNYXhPZmZzZXQoKSA6IGJveC0+Y2FyZXRNaW5PZmZzZXQoKTsKICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9
CkBAIC00MjAsNyArNDIwLDcgQEAgUG9zaXRpb24gVmlzaWJsZVBvc2l0aW9uOjpyaWdodFZpc3Vh
bGx5RAogICAgICAgICAgICAgICAgICAgICBsZXZlbCA9IGJveC0+YmlkaUxldmVsKCk7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHJlbmRlcmVyID0gJmJveC0+cmVuZGVyZXIo
KTsKLSAgICAgICAgICAgICAgICBvZmZzZXQgPSBwcmltYXJ5RGlyZWN0aW9uID09IExUUiA/IGJv
eC0+Y2FyZXRNYXhPZmZzZXQoKSA6IGJveC0+Y2FyZXRNaW5PZmZzZXQoKTsKKyAgICAgICAgICAg
ICAgICBvZmZzZXQgPSBwcmltYXJ5RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUiA/IGJv
eC0+Y2FyZXRNYXhPZmZzZXQoKSA6IGJveC0+Y2FyZXRNaW5PZmZzZXQoKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1Zpc2libGVVbml0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRp
dGluZy9WaXNpYmxlVW5pdHMuY3BwCShyZXZpc2lvbiAyMzQ2MTgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwOCw3ICs0MDgs
NyBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIHZpc3VhbFdvcmRQb3NpdGlvCiAKICAgICAgICAg
Ym9vbCBpc1dvcmRCcmVhazsKICAgICAgICAgYm9vbCBib3hIYXNTYW1lRGlyZWN0aW9uYWxpdHlB
c0Jsb2NrID0gYm94LT5kaXJlY3Rpb24oKSA9PSBibG9ja0RpcmVjdGlvbjsKLSAgICAgICAgYm9v
bCBtb3ZpbmdCYWNrd2FyZCA9IChkaXJlY3Rpb24gPT0gTW92ZUxlZnQgJiYgYm94LT5kaXJlY3Rp
b24oKSA9PSBMVFIpIHx8IChkaXJlY3Rpb24gPT0gTW92ZVJpZ2h0ICYmIGJveC0+ZGlyZWN0aW9u
KCkgPT0gUlRMKTsKKyAgICAgICAgYm9vbCBtb3ZpbmdCYWNrd2FyZCA9IChkaXJlY3Rpb24gPT0g
TW92ZUxlZnQgJiYgYm94LT5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpIHx8IChk
aXJlY3Rpb24gPT0gTW92ZVJpZ2h0ICYmIGJveC0+ZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlv
bjo6UlRMKTsKICAgICAgICAgaWYgKChza2lwc1NwYWNlV2hlbk1vdmluZ1JpZ2h0ICYmIGJveEhh
c1NhbWVEaXJlY3Rpb25hbGl0eUFzQmxvY2spCiAgICAgICAgICAgICB8fCAoIXNraXBzU3BhY2VX
aGVuTW92aW5nUmlnaHQgJiYgbW92aW5nQmFja3dhcmQpKSB7CiAgICAgICAgICAgICBib29sIGxv
Z2ljYWxTdGFydEluUmVuZGVyZXIgPSBvZmZzZXRJbkJveCA9PSBzdGF0aWNfY2FzdDxpbnQ+KHRl
eHRCb3guc3RhcnQoKSkgJiYgcHJldmlvdXNCb3hJbkRpZmZlcmVudExpbmU7CkBAIC00MzksNyAr
NDM5LDcgQEAgVmlzaWJsZVBvc2l0aW9uIGxlZnRXb3JkUG9zaXRpb24oY29uc3QgVgogICAgIC8v
IEZJWE1FOiBIb3cgc2hvdWxkIHdlIGhhbmRsZSBhIG5vbi1lZGl0YWJsZSBwb3NpdGlvbj8KICAg
ICBpZiAobGVmdFdvcmRCcmVhay5pc051bGwoKSAmJiBpc0VkaXRhYmxlUG9zaXRpb24odmlzaWJs
ZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCkpKSB7CiAgICAgICAgIFRleHREaXJlY3Rpb24gYmxv
Y2tEaXJlY3Rpb24gPSBkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKHZpc2libGVQb3NpdGlvbi5k
ZWVwRXF1aXZhbGVudCgpKTsKLSAgICAgICAgbGVmdFdvcmRCcmVhayA9IGJsb2NrRGlyZWN0aW9u
ID09IExUUiA/IHN0YXJ0T2ZFZGl0YWJsZUNvbnRlbnQodmlzaWJsZVBvc2l0aW9uKSA6IGVuZE9m
RWRpdGFibGVDb250ZW50KHZpc2libGVQb3NpdGlvbik7CisgICAgICAgIGxlZnRXb3JkQnJlYWsg
PSBibG9ja0RpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBzdGFydE9mRWRpdGFibGVD
b250ZW50KHZpc2libGVQb3NpdGlvbikgOiBlbmRPZkVkaXRhYmxlQ29udGVudCh2aXNpYmxlUG9z
aXRpb24pOwogICAgIH0KICAgICByZXR1cm4gbGVmdFdvcmRCcmVhazsKIH0KQEAgLTQ1Miw3ICs0
NTIsNyBAQCBWaXNpYmxlUG9zaXRpb24gcmlnaHRXb3JkUG9zaXRpb24oY29uc3QgCiAgICAgLy8g
RklYTUU6IEhvdyBzaG91bGQgd2UgaGFuZGxlIGEgbm9uLWVkaXRhYmxlIHBvc2l0aW9uPwogICAg
IGlmIChyaWdodFdvcmRCcmVhay5pc051bGwoKSAmJiBpc0VkaXRhYmxlUG9zaXRpb24odmlzaWJs
ZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCkpKSB7CiAgICAgICAgIFRleHREaXJlY3Rpb24gYmxv
Y2tEaXJlY3Rpb24gPSBkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKHZpc2libGVQb3NpdGlvbi5k
ZWVwRXF1aXZhbGVudCgpKTsKLSAgICAgICAgcmlnaHRXb3JkQnJlYWsgPSBibG9ja0RpcmVjdGlv
biA9PSBMVFIgPyBlbmRPZkVkaXRhYmxlQ29udGVudCh2aXNpYmxlUG9zaXRpb24pIDogc3RhcnRP
ZkVkaXRhYmxlQ29udGVudCh2aXNpYmxlUG9zaXRpb24pOworICAgICAgICByaWdodFdvcmRCcmVh
ayA9IGJsb2NrRGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUiA/IGVuZE9mRWRpdGFibGVD
b250ZW50KHZpc2libGVQb3NpdGlvbikgOiBzdGFydE9mRWRpdGFibGVDb250ZW50KHZpc2libGVQ
b3NpdGlvbik7CiAgICAgfQogICAgIHJldHVybiByaWdodFdvcmRCcmVhazsKIH0KQEAgLTE1Mjks
MTIgKzE1MjksMTIgQEAgYm9vbCBpc0VuZE9mRWRpdGFibGVPck5vbkVkaXRhYmxlQ29udGVudAog
CiBWaXNpYmxlUG9zaXRpb24gbGVmdEJvdW5kYXJ5T2ZMaW5lKGNvbnN0IFZpc2libGVQb3NpdGlv
biYgYywgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24sIGJvb2wqIHJlYWNoZWRCb3VuZGFyeSkKIHsK
LSAgICByZXR1cm4gZGlyZWN0aW9uID09IExUUiA/IGxvZ2ljYWxTdGFydE9mTGluZShjLCByZWFj
aGVkQm91bmRhcnkpIDogbG9naWNhbEVuZE9mTGluZShjLCByZWFjaGVkQm91bmRhcnkpOworICAg
IHJldHVybiBkaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gbG9naWNhbFN0YXJ0T2ZM
aW5lKGMsIHJlYWNoZWRCb3VuZGFyeSkgOiBsb2dpY2FsRW5kT2ZMaW5lKGMsIHJlYWNoZWRCb3Vu
ZGFyeSk7CiB9CiAKIFZpc2libGVQb3NpdGlvbiByaWdodEJvdW5kYXJ5T2ZMaW5lKGNvbnN0IFZp
c2libGVQb3NpdGlvbiYgYywgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24sIGJvb2wqIHJlYWNoZWRC
b3VuZGFyeSkKIHsKLSAgICByZXR1cm4gZGlyZWN0aW9uID09IExUUiA/IGxvZ2ljYWxFbmRPZkxp
bmUoYywgcmVhY2hlZEJvdW5kYXJ5KSA6IGxvZ2ljYWxTdGFydE9mTGluZShjLCByZWFjaGVkQm91
bmRhcnkpOworICAgIHJldHVybiBkaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gbG9n
aWNhbEVuZE9mTGluZShjLCByZWFjaGVkQm91bmRhcnkpIDogbG9naWNhbFN0YXJ0T2ZMaW5lKGMs
IHJlYWNoZWRCb3VuZGFyeSk7CiB9CiAKIHN0YXRpYyBib29sIGRpcmVjdGlvbklzRG93bnN0cmVh
bShTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uKQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRp
dGluZy9hdGsvRnJhbWVTZWxlY3Rpb25BdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvYXRrL0ZyYW1lU2VsZWN0aW9uQXRrLmNwcAkocmV2aXNpb24gMjM0NjE4KQor
KysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9hdGsvRnJhbWVTZWxlY3Rpb25BdGsuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIHN0YXRpYyB2b2lkIGVtaXRUZXh0U2VsZWN0aW9u
Q2hhbmdlKEFjY2UKICAgICAvLyB0aGUgbGlzdCBpdGVtIG1hcmtlciBpcyBleHBvc2VkIHRocm91
Z2ggdGhlIHRleHQgb2YgdGhlIGFjY2Vzc2libGUgbGlzdCBpdGVtIHJhdGhlcgogICAgIC8vIHRo
YW4gdGhyb3VnaCBhIHNlcGFyYXRlIGFjY2Vzc2libGUgb2JqZWN0LgogICAgIFJlbmRlck9iamVj
dCogcmVuZGVyZXIgPSBvYmplY3QtPnJlbmRlcmVyKCk7Ci0gICAgaWYgKGlzPFJlbmRlckxpc3RJ
dGVtPihyZW5kZXJlcikgJiYgcmVuZGVyZXItPnN0eWxlKCkuZGlyZWN0aW9uKCkgPT0gTFRSKQor
ICAgIGlmIChpczxSZW5kZXJMaXN0SXRlbT4ocmVuZGVyZXIpICYmIHJlbmRlcmVyLT5zdHlsZSgp
LmRpcmVjdGlvbigpID09IFRleHREaXJlY3Rpb246OkxUUikKICAgICAgICAgb2Zmc2V0ICs9IGRv
d25jYXN0PFJlbmRlckxpc3RJdGVtPigqcmVuZGVyZXIpLm1hcmtlclRleHRXaXRoU3VmZml4KCku
bGVuZ3RoKCk7CiAKICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUoYXhPYmplY3QsICJ0ZXh0LWNh
cmV0LW1vdmVkIiwgb2Zmc2V0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3Bw
CShyZXZpc2lvbiAyMzQ2MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODAwLDcgKzgwMCw3IEBAIFRleHREaXJlY3Rpb24gSFRNTEVs
ZW1lbnQ6OmRpcmVjdGlvbmFsaXQKIHsKICAgICBpZiAoIShzZWxmT3JBbmNlc3Rvckhhc0RpckF1
dG9BdHRyaWJ1dGUoKSAmJiBoYXNEaXJlY3Rpb25BdXRvKCkpKSB7CiAgICAgICAgIGlzQXV0byA9
IGZhbHNlOwotICAgICAgICByZXR1cm4gTFRSOworICAgICAgICByZXR1cm4gVGV4dERpcmVjdGlv
bjo6TFRSOwogICAgIH0KIAogICAgIGlzQXV0byA9IHRydWU7CkBAIC04MTUsNyArODE1LDcgQEAg
VGV4dERpcmVjdGlvbiBIVE1MRWxlbWVudDo6ZGlyZWN0aW9uYWxpdAogICAgICAgICBVQ2hhckRp
cmVjdGlvbiB0ZXh0RGlyZWN0aW9uID0gdGV4dEVsZW1lbnQudmFsdWUoKS5kZWZhdWx0V3JpdGlu
Z0RpcmVjdGlvbigmaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkpOwogICAgICAgICBpZiAoc3Ryb25n
RGlyZWN0aW9uYWxpdHlUZXh0Tm9kZSkKICAgICAgICAgICAgICpzdHJvbmdEaXJlY3Rpb25hbGl0
eVRleHROb2RlID0gaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkgPyAmdGV4dEVsZW1lbnQgOiBudWxs
cHRyOwotICAgICAgICByZXR1cm4gKHRleHREaXJlY3Rpb24gPT0gVV9MRUZUX1RPX1JJR0hUKSA/
IExUUiA6IFJUTDsKKyAgICAgICAgcmV0dXJuICh0ZXh0RGlyZWN0aW9uID09IFVfTEVGVF9UT19S
SUdIVCkgPyBUZXh0RGlyZWN0aW9uOjpMVFIgOiBUZXh0RGlyZWN0aW9uOjpSVEw7CiAgICAgfQog
CiAgICAgUmVmUHRyPE5vZGU+IG5vZGUgPSBmaXJzdENoaWxkKCk7CkBAIC04NDIsMTQgKzg0Miwx
NCBAQCBUZXh0RGlyZWN0aW9uIEhUTUxFbGVtZW50OjpkaXJlY3Rpb25hbGl0CiAgICAgICAgICAg
ICBpZiAoaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkpIHsKICAgICAgICAgICAgICAgICBpZiAoc3Ry
b25nRGlyZWN0aW9uYWxpdHlUZXh0Tm9kZSkKICAgICAgICAgICAgICAgICAgICAgKnN0cm9uZ0Rp
cmVjdGlvbmFsaXR5VGV4dE5vZGUgPSBub2RlLmdldCgpOwotICAgICAgICAgICAgICAgIHJldHVy
biAodGV4dERpcmVjdGlvbiA9PSBVX0xFRlRfVE9fUklHSFQpID8gTFRSIDogUlRMOworICAgICAg
ICAgICAgICAgIHJldHVybiAodGV4dERpcmVjdGlvbiA9PSBVX0xFRlRfVE9fUklHSFQpID8gVGV4
dERpcmVjdGlvbjo6TFRSIDogVGV4dERpcmVjdGlvbjo6UlRMOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgICAgIG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0KCpub2RlLCB0aGlzKTsK
ICAgICB9CiAgICAgaWYgKHN0cm9uZ0RpcmVjdGlvbmFsaXR5VGV4dE5vZGUpCiAgICAgICAgICpz
dHJvbmdEaXJlY3Rpb25hbGl0eVRleHROb2RlID0gbnVsbHB0cjsKLSAgICByZXR1cm4gTFRSOwor
ICAgIHJldHVybiBUZXh0RGlyZWN0aW9uOjpMVFI7CiB9CiAKIHZvaWQgSFRNTEVsZW1lbnQ6OmRp
ckF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAkocmV2aXNpb24gMjM0NjE4KQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjA5OCw3ICsyMDk4LDcgQEAgYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpzZXR1cERhdGVUaW1l
Q2hvbwogICAgIGVsc2UKICAgICAgICAgcGFyYW1ldGVycy5hbmNob3JSZWN0SW5Sb290VmlldyA9
IEludFJlY3QoKTsKICAgICBwYXJhbWV0ZXJzLmN1cnJlbnRWYWx1ZSA9IHZhbHVlKCk7Ci0gICAg
cGFyYW1ldGVycy5pc0FuY2hvckVsZW1lbnRSVEwgPSBjb21wdXRlZFN0eWxlKCktPmRpcmVjdGlv
bigpID09IFJUTDsKKyAgICBwYXJhbWV0ZXJzLmlzQW5jaG9yRWxlbWVudFJUTCA9IGNvbXB1dGVk
U3R5bGUoKS0+ZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6UlRMOwogI2lmIEVOQUJMRShE
QVRBTElTVF9FTEVNRU5UKQogICAgIGlmIChhdXRvIGRhdGFMaXN0ID0gdGhpcy0+ZGF0YUxpc3Qo
KSkgewogICAgICAgICBSZWY8SFRNTENvbGxlY3Rpb24+IG9wdGlvbnMgPSBkYXRhTGlzdC0+b3B0
aW9ucygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudC5jcHAJKHJldmlzaW9uIDIzNDYxOCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NzUs
NyArNzc1LDcgQEAgU3RyaW5nIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpkaXJlYwogICAg
ICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZGlyQXR0cmlidXRlVmFsdWUs
ICJhdXRvIikpIHsKICAgICAgICAgICAgIGJvb2wgaXNBdXRvOwogICAgICAgICAgICAgVGV4dERp
cmVjdGlvbiB0ZXh0RGlyZWN0aW9uID0gc3RhdGljX2Nhc3Q8Y29uc3QgSFRNTEVsZW1lbnQqPihl
bGVtZW50KS0+ZGlyZWN0aW9uYWxpdHlJZmhhc0RpckF1dG9BdHRyaWJ1dGUoaXNBdXRvKTsKLSAg
ICAgICAgICAgIHJldHVybiB0ZXh0RGlyZWN0aW9uID09IFJUTCA/ICJydGwiIDogImx0ciI7Cisg
ICAgICAgICAgICByZXR1cm4gdGV4dERpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpSVEwgPyAi
cnRsIiA6ICJsdHIiOwogICAgICAgICB9CiAgICAgfQogCkBAIC04MzcsNyArODM3LDcgQEAgdm9p
ZCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6YWRqdXN0SQogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KIAotICAgICAgICB0ZXh0QmxvY2tTdHlsZS5zZXREaXJlY3Rpb24oTFRSKTsK
KyAgICAgICAgdGV4dEJsb2NrU3R5bGUuc2V0RGlyZWN0aW9uKFRleHREaXJlY3Rpb246OkxUUik7
CiAgICAgfQogI2VuZGlmCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUaXRsZUVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxl
bWVudC5jcHAJKHJldmlzaW9uIDIzNDYxOCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRp
dGxlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDcgQEAgU3RyaW5nIEhU
TUxUaXRsZUVsZW1lbnQ6OnRleHQoKSBjb25zdAogCiBTdHJpbmdXaXRoRGlyZWN0aW9uIEhUTUxU
aXRsZUVsZW1lbnQ6OmNvbXB1dGVkVGV4dFdpdGhEaXJlY3Rpb24oKQogewotICAgIFRleHREaXJl
Y3Rpb24gZGlyZWN0aW9uID0gTFRSOworICAgIGF1dG8gZGlyZWN0aW9uID0gVGV4dERpcmVjdGlv
bjo6TFRSOwogICAgIGlmIChhdXRvKiBjb21wdXRlZFN0eWxlID0gdGhpcy0+Y29tcHV0ZWRTdHls
ZSgpKQogICAgICAgICBkaXJlY3Rpb24gPSBjb21wdXRlZFN0eWxlLT5kaXJlY3Rpb24oKTsKICAg
ICBlbHNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAJKHJldmlzaW9uIDIzNDYxOCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI5NSwyMSArMjk1LDIxIEBAIGlubGluZSBUZXh0RGlyZWN0aW9uIENhbnZhc1Jl
bmRlcmluZ0NvbnQKICAgICAgICAgKmNvbXB1dGVkU3R5bGUgPSBzdHlsZTsKICAgICBzd2l0Y2gg
KGRpcmVjdGlvbikgewogICAgIGNhc2UgRGlyZWN0aW9uOjpJbmhlcml0OgotICAgICAgICByZXR1
cm4gc3R5bGUgPyBzdHlsZS0+ZGlyZWN0aW9uKCkgOiBMVFI7CisgICAgICAgIHJldHVybiBzdHls
ZSA/IHN0eWxlLT5kaXJlY3Rpb24oKSA6IFRleHREaXJlY3Rpb246OkxUUjsKICAgICBjYXNlIERp
cmVjdGlvbjo6UnRsOgotICAgICAgICByZXR1cm4gUlRMOworICAgICAgICByZXR1cm4gVGV4dERp
cmVjdGlvbjo6UlRMOwogICAgIGNhc2UgRGlyZWN0aW9uOjpMdHI6Ci0gICAgICAgIHJldHVybiBM
VFI7CisgICAgICAgIHJldHVybiBUZXh0RGlyZWN0aW9uOjpMVFI7CiAgICAgfQogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBMVFI7CisgICAgcmV0dXJuIFRleHREaXJlY3Rp
b246OkxUUjsKIH0KIAogQ2FudmFzRGlyZWN0aW9uIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6
ZGlyZWN0aW9uKCkgY29uc3QKIHsKICAgICBpZiAoc3RhdGUoKS5kaXJlY3Rpb24gPT0gRGlyZWN0
aW9uOjpJbmhlcml0KQogICAgICAgICBjYW52YXMoKS5kb2N1bWVudCgpLnVwZGF0ZVN0eWxlSWZO
ZWVkZWQoKTsKLSAgICByZXR1cm4gdG9UZXh0RGlyZWN0aW9uKHN0YXRlKCkuZGlyZWN0aW9uKSA9
PSBSVEwgPyBDYW52YXNEaXJlY3Rpb246OlJ0bCA6IENhbnZhc0RpcmVjdGlvbjo6THRyOworICAg
IHJldHVybiB0b1RleHREaXJlY3Rpb24oc3RhdGUoKS5kaXJlY3Rpb24pID09IFRleHREaXJlY3Rp
b246OlJUTCA/IENhbnZhc0RpcmVjdGlvbjo6UnRsIDogQ2FudmFzRGlyZWN0aW9uOjpMdHI7CiB9
CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXREaXJlY3Rpb24oQ2FudmFzRGly
ZWN0aW9uIGRpcmVjdGlvbikKQEAgLTQyOSw3ICs0MjksNyBAQCBGbG9hdFBvaW50IENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6dGV4CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGJvb2wg
aXNSVEwgPSBkaXJlY3Rpb24gPT0gUlRMOworICAgIGJvb2wgaXNSVEwgPSBkaXJlY3Rpb24gPT0g
VGV4dERpcmVjdGlvbjo6UlRMOwogICAgIGF1dG8gYWxpZ24gPSBzdGF0ZSgpLnRleHRBbGlnbjsK
ICAgICBpZiAoYWxpZ24gPT0gU3RhcnRUZXh0QWxpZ24pCiAgICAgICAgIGFsaWduID0gaXNSVEwg
PyBSaWdodFRleHRBbGlnbiA6IExlZnRUZXh0QWxpZ247CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAJKHJldmlzaW9uIDIzNDYx
OCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE3MSw3ICsxNzEsNyBAQCB2b2lkIFJlbmRlclNsaWRlckNvbnRh
aW5lcjo6bGF5b3V0KCkKICAgICAgICAgLy8gRklYTUU6IFdvcmsgYXJvdW5kIHJvdW5kaW5nIGlz
c3VlcyBpbiBSVEwgdmVydGljYWwgc2xpZGVycy4gV2Ugd2FudCB0aGVtIHRvCiAgICAgICAgIC8v
IHJlbmRlciBpZGVudGljYWxseSB0byBMVFIgdmVydGljYWwgc2xpZGVycy4gV2UgY2FuIHJlbW92
ZSB0aGlzIHdvcmsgYXJvdW5kIHdoZW4KICAgICAgICAgLy8gc3VicGl4ZWwgcmVuZGVyaW5nIGlz
IGVuYWJsZWQgb24gYWxsIHBvcnRzLgotICAgICAgICBtdXRhYmxlU3R5bGUoKS5zZXREaXJlY3Rp
b24oTFRSKTsKKyAgICAgICAgbXV0YWJsZVN0eWxlKCkuc2V0RGlyZWN0aW9uKFRleHREaXJlY3Rp
b246OkxUUik7CiAgICAgfQogCiAgICAgUmVuZGVyQm94KiB0aHVtYiA9IGlucHV0LnNsaWRlclRo
dW1iRWxlbWVudCgpID8gaW5wdXQuc2xpZGVyVGh1bWJFbGVtZW50KCktPnJlbmRlckJveCgpIDog
bnVsbHB0cjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5u
ZXJFbGVtZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
VGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAkocmV2aXNpb24gMjM0NjE4KQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTA5LDcgKzEwOSw3IEBAIHN0ZDo6b3B0aW9uYWw8RWxlbWVudFN0eWxlPiBU
ZXh0Q29udHJvbEkKICAgICBuZXdTdHlsZS0+c2V0RmxleEdyb3coMSk7CiAgICAgbmV3U3R5bGUt
PnNldE1pbldpZHRoKExlbmd0aCB7IDAsIEZpeGVkIH0pOyAvLyBOZWVkZWQgZm9yIGNvcnJlY3Qg
c2hyaW5raW5nLgogICAgIG5ld1N0eWxlLT5zZXREaXNwbGF5KERpc3BsYXlUeXBlOjpCbG9jayk7
Ci0gICAgbmV3U3R5bGUtPnNldERpcmVjdGlvbihMVFIpOworICAgIG5ld1N0eWxlLT5zZXREaXJl
Y3Rpb24oVGV4dERpcmVjdGlvbjo6TFRSKTsKICAgICAvLyBXZSBkb24ndCB3YW50IHRoZSBzaGFk
b3cgRE9NIHRvIGJlIGVkaXRhYmxlLCBzbyB3ZSBzZXQgdGhpcyBibG9jayB0byByZWFkLW9ubHkg
aW4gY2FzZSB0aGUgaW5wdXQgaXRzZWxmIGlzIGVkaXRhYmxlLgogICAgIG5ld1N0eWxlLT5zZXRV
c2VyTW9kaWZ5KFVzZXJNb2RpZnk6OlJlYWRPbmx5KTsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
cGFnZS9DaHJvbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21l
LmNwcAkocmV2aXNpb24gMjM0NjE4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNTYsNyArMzU2LDcgQEAgdm9pZCBDaHJvbWU6OnNldFRvb2xU
aXAoY29uc3QgSGl0VGVzdFJlcwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvcm0tPnJl
bmRlcmVyKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbFRpcERpcmVjdGlvbiA9
IGZvcm0tPnJlbmRlcmVyKCktPnN0eWxlKCkuZGlyZWN0aW9uKCk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbFRpcERpcmVjdGlv
biA9IExUUjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sVGlwRGlyZWN0aW9uID0g
VGV4dERpcmVjdGlvbjo6TFRSOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQpAQCAtMzY3LDcgKzM2Nyw3IEBAIHZvaWQgQ2hyb21lOjpzZXRU
b29sVGlwKGNvbnN0IEhpdFRlc3RSZXMKICAgICAgICAgICAgIC8vIEZJWE1FOiBOZWVkIHRvIHBh
c3MgdGhpcyBVUkwgdGhyb3VnaCB1c2VyVmlzaWJsZVN0cmluZyBvbmNlIHRoYXQncyBpbiBXZWJD
b3JlCiAgICAgICAgICAgICB0b29sVGlwID0gcmVzdWx0LmFic29sdXRlTGlua1VSTCgpLnN0cmlu
ZygpOwogICAgICAgICAgICAgLy8gVVJMIGFsd2F5cyBkaXNwbGF5IGFzIExUUi4KLSAgICAgICAg
ICAgIHRvb2xUaXBEaXJlY3Rpb24gPSBMVFI7CisgICAgICAgICAgICB0b29sVGlwRGlyZWN0aW9u
ID0gVGV4dERpcmVjdGlvbjo6TFRSOwogICAgICAgICB9CiAgICAgfQogCkBAIC0zODksNyArMzg5
LDcgQEAgdm9pZCBDaHJvbWU6OnNldFRvb2xUaXAoY29uc3QgSGl0VGVzdFJlcwogICAgICAgICAg
ICAgICAgIC8vIGltcGxlbWVudGF0aW9ucyBkb24ndCB1c2UgdGV4dCBkaXJlY3Rpb24gaW5mb3Jt
YXRpb24gZm9yCiAgICAgICAgICAgICAgICAgLy8gQ2hyb21lQ2xpZW50OjpzZXRUb29sVGlwLiBX
ZSdsbCB3b3JrIG9uIHRvb2x0aXAgdGV4dAogICAgICAgICAgICAgICAgIC8vIGRpcmVjdGlvbiBk
dXJpbmcgYmlkaSBjbGVhbnVwIGluIGZvcm0gaW5wdXRzLgotICAgICAgICAgICAgICAgIHRvb2xU
aXBEaXJlY3Rpb24gPSBMVFI7CisgICAgICAgICAgICAgICAgdG9vbFRpcERpcmVjdGlvbiA9IFRl
eHREaXJlY3Rpb246OkxUUjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHJldmlzaW9uIDIzNDYxOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYyLDcgKzE2Miw3
IEBAIFBhZ2luYXRpb246Ok1vZGUgcGFnaW5hdGlvbk1vZGVGb3JSZW5kZXIKICAgICAvLyBpcyBo
b3Jpem9udGFsLCB0aGVuIHdlIHVzZSBUZXh0RGlyZWN0aW9uIHRvIGNob29zZSBiZXR3ZWVuIHRo
b3NlIG9wdGlvbnMuIElmIHRoZSBXcml0aW5nTW9kZQogICAgIC8vIGlzIHZlcnRpY2FsLCB0aGVu
IHRoZSBkaXJlY3Rpb24gb2YgdGhlIHZlcnRpY2FsaXR5IGRpY3RhdGVzIHRoZSBjaG9pY2UuCiAg
ICAgaWYgKG92ZXJmbG93ID09IE92ZXJmbG93OjpQYWdlZFgpIHsKLSAgICAgICAgaWYgKChpc0hv
cml6b250YWxXcml0aW5nTW9kZSAmJiB0ZXh0RGlyZWN0aW9uID09IExUUikgfHwgd3JpdGluZ01v
ZGUgPT0gTGVmdFRvUmlnaHRXcml0aW5nTW9kZSkKKyAgICAgICAgaWYgKChpc0hvcml6b250YWxX
cml0aW5nTW9kZSAmJiB0ZXh0RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUikgfHwgd3Jp
dGluZ01vZGUgPT0gTGVmdFRvUmlnaHRXcml0aW5nTW9kZSkKICAgICAgICAgICAgIHJldHVybiBQ
YWdpbmF0aW9uOjpMZWZ0VG9SaWdodFBhZ2luYXRlZDsKICAgICAgICAgcmV0dXJuIFBhZ2luYXRp
b246OlJpZ2h0VG9MZWZ0UGFnaW5hdGVkOwogICAgIH0KQEAgLTE3MCw3ICsxNzAsNyBAQCBQYWdp
bmF0aW9uOjpNb2RlIHBhZ2luYXRpb25Nb2RlRm9yUmVuZGVyCiAgICAgLy8gcGFnZWQteSBhbHdh
eXMgY29ycmVzcG9uZHMgdG8gVG9wVG9Cb3R0b21QYWdpbmF0ZWQgb3IgQm90dG9tVG9Ub3BQYWdp
bmF0ZWQuIElmIHRoZSBXcml0aW5nTW9kZQogICAgIC8vIGlzIGhvcml6b250YWwsIHRoZW4gdGhl
IGRpcmVjdGlvbiBvZiB0aGUgaG9yaXpvbnRhbGl0eSBkaWN0YXRlcyB0aGUgY2hvaWNlLiBJZiB0
aGUgV3JpdGluZ01vZGUKICAgICAvLyBpcyB2ZXJ0aWNhbCwgdGhlbiB3ZSB1c2UgVGV4dERpcmVj
dGlvbiB0byBjaG9vc2UgYmV0d2VlbiB0aG9zZSBvcHRpb25zLiAKLSAgICBpZiAod3JpdGluZ01v
ZGUgPT0gVG9wVG9Cb3R0b21Xcml0aW5nTW9kZSB8fCAoIWlzSG9yaXpvbnRhbFdyaXRpbmdNb2Rl
ICYmIHRleHREaXJlY3Rpb24gPT0gUlRMKSkKKyAgICBpZiAod3JpdGluZ01vZGUgPT0gVG9wVG9C
b3R0b21Xcml0aW5nTW9kZSB8fCAoIWlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlICYmIHRleHREaXJl
Y3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6UlRMKSkKICAgICAgICAgcmV0dXJuIFBhZ2luYXRpb246
OlRvcFRvQm90dG9tUGFnaW5hdGVkOwogICAgIHJldHVybiBQYWdpbmF0aW9uOjpCb3R0b21Ub1Rv
cFBhZ2luYXRlZDsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwJKHJldmlzaW9u
IDIzNDYxOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbAkod29ya2luZyBj
b3B5KQpAQCAtNTA4LDcgKzUwOCw3IEBAIHVzZXJJbnRlcmZhY2VEaXJlY3Rpb25Qb2xpY3k6CiAg
IGluaXRpYWw6IFVzZXJJbnRlcmZhY2VEaXJlY3Rpb25Qb2xpY3k6OkNvbnRlbnQKIHN5c3RlbUxh
eW91dERpcmVjdGlvbjoKICAgdHlwZTogVGV4dERpcmVjdGlvbgotICBpbml0aWFsOiBMVFIKKyAg
aW5pdGlhbDogVGV4dERpcmVjdGlvbjo6TFRSCiAKIGFsbG93Q29udGVudFNlY3VyaXR5UG9saWN5
U291cmNlU3RhclRvTWF0Y2hBbnlQcm90b2NvbDoKICAgaW5pdGlhbDogZmFsc2UKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlY3RFZGdlcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1JlY3RFZGdlcy5oCShyZXZpc2lvbiAyMzQ2MTgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9SZWN0RWRnZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTksMTggKzU5
LDE4IEBAIHB1YmxpYzoKICAgICAKICAgICBUJiBiZWZvcmUoV3JpdGluZ01vZGUgd3JpdGluZ01v
ZGUpIHsgcmV0dXJuIGF0KG1hcExvZ2ljYWxTaWRlVG9QaHlzaWNhbFNpZGUod3JpdGluZ01vZGUs
IExvZ2ljYWxCb3hTaWRlOjpCZWZvcmUpKTsgfQogICAgIFQmIGFmdGVyKFdyaXRpbmdNb2RlIHdy
aXRpbmdNb2RlKSB7IHJldHVybiBhdChtYXBMb2dpY2FsU2lkZVRvUGh5c2ljYWxTaWRlKHdyaXRp
bmdNb2RlLCBMb2dpY2FsQm94U2lkZTo6QWZ0ZXIpKTsgfQotICAgIFQmIHN0YXJ0KFdyaXRpbmdN
b2RlIHdyaXRpbmdNb2RlLCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IExUUikgeyByZXR1cm4g
YXQobWFwTG9naWNhbFNpZGVUb1BoeXNpY2FsU2lkZShtYWtlVGV4dEZsb3cod3JpdGluZ01vZGUs
IGRpcmVjdGlvbiksIExvZ2ljYWxCb3hTaWRlOjpTdGFydCkpOyB9Ci0gICAgVCYgZW5kKFdyaXRp
bmdNb2RlIHdyaXRpbmdNb2RlLCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IExUUikgeyByZXR1
cm4gYXQobWFwTG9naWNhbFNpZGVUb1BoeXNpY2FsU2lkZShtYWtlVGV4dEZsb3cod3JpdGluZ01v
ZGUsIGRpcmVjdGlvbiksIExvZ2ljYWxCb3hTaWRlOjpFbmQpKTsgfQorICAgIFQmIHN0YXJ0KFdy
aXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IFRleHREaXJl
Y3Rpb246OkxUUikgeyByZXR1cm4gYXQobWFwTG9naWNhbFNpZGVUb1BoeXNpY2FsU2lkZShtYWtl
VGV4dEZsb3cod3JpdGluZ01vZGUsIGRpcmVjdGlvbiksIExvZ2ljYWxCb3hTaWRlOjpTdGFydCkp
OyB9CisgICAgVCYgZW5kKFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBUZXh0RGlyZWN0aW9uIGRp
cmVjdGlvbiA9IFRleHREaXJlY3Rpb246OkxUUikgeyByZXR1cm4gYXQobWFwTG9naWNhbFNpZGVU
b1BoeXNpY2FsU2lkZShtYWtlVGV4dEZsb3cod3JpdGluZ01vZGUsIGRpcmVjdGlvbiksIExvZ2lj
YWxCb3hTaWRlOjpFbmQpKTsgfQogICAgIAogICAgIGNvbnN0IFQmIGJlZm9yZShXcml0aW5nTW9k
ZSB3cml0aW5nTW9kZSkgY29uc3QgeyByZXR1cm4gYXQobWFwTG9naWNhbFNpZGVUb1BoeXNpY2Fs
U2lkZSh3cml0aW5nTW9kZSwgTG9naWNhbEJveFNpZGU6OkJlZm9yZSkpOyB9CiAgICAgY29uc3Qg
VCYgYWZ0ZXIoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUpIGNvbnN0IHsgcmV0dXJuIGF0KG1hcExv
Z2ljYWxTaWRlVG9QaHlzaWNhbFNpZGUod3JpdGluZ01vZGUsIExvZ2ljYWxCb3hTaWRlOjpBZnRl
cikpOyB9Ci0gICAgY29uc3QgVCYgc3RhcnQoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIFRleHRE
aXJlY3Rpb24gZGlyZWN0aW9uID0gTFRSKSBjb25zdCB7IHJldHVybiBhdChtYXBMb2dpY2FsU2lk
ZVRvUGh5c2ljYWxTaWRlKG1ha2VUZXh0Rmxvdyh3cml0aW5nTW9kZSwgZGlyZWN0aW9uKSwgTG9n
aWNhbEJveFNpZGU6OlN0YXJ0KSk7IH0KLSAgICBjb25zdCBUJiBlbmQoV3JpdGluZ01vZGUgd3Jp
dGluZ01vZGUsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gTFRSKSBjb25zdCB7IHJldHVybiBh
dChtYXBMb2dpY2FsU2lkZVRvUGh5c2ljYWxTaWRlKG1ha2VUZXh0Rmxvdyh3cml0aW5nTW9kZSwg
ZGlyZWN0aW9uKSwgTG9naWNhbEJveFNpZGU6OkVuZCkpOyB9CisgICAgY29uc3QgVCYgc3RhcnQo
V3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gVGV4dERp
cmVjdGlvbjo6TFRSKSBjb25zdCB7IHJldHVybiBhdChtYXBMb2dpY2FsU2lkZVRvUGh5c2ljYWxT
aWRlKG1ha2VUZXh0Rmxvdyh3cml0aW5nTW9kZSwgZGlyZWN0aW9uKSwgTG9naWNhbEJveFNpZGU6
OlN0YXJ0KSk7IH0KKyAgICBjb25zdCBUJiBlbmQoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIFRl
eHREaXJlY3Rpb24gZGlyZWN0aW9uID0gVGV4dERpcmVjdGlvbjo6TFRSKSBjb25zdCB7IHJldHVy
biBhdChtYXBMb2dpY2FsU2lkZVRvUGh5c2ljYWxTaWRlKG1ha2VUZXh0Rmxvdyh3cml0aW5nTW9k
ZSwgZGlyZWN0aW9uKSwgTG9naWNhbEJveFNpZGU6OkVuZCkpOyB9CiAgICAgCiAgICAgdm9pZCBz
ZXRCZWZvcmUoY29uc3QgVCYgYmVmb3JlLCBXcml0aW5nTW9kZSB3cml0aW5nTW9kZSkgeyB0aGlz
LT5iZWZvcmUod3JpdGluZ01vZGUpID0gYmVmb3JlOyB9CiAgICAgdm9pZCBzZXRBZnRlcihjb25z
dCBUJiBhZnRlciwgV3JpdGluZ01vZGUgd3JpdGluZ01vZGUpIHsgdGhpcy0+YWZ0ZXIod3JpdGlu
Z01vZGUpID0gYWZ0ZXI7IH0KLSAgICB2b2lkIHNldFN0YXJ0KGNvbnN0IFQmIHN0YXJ0LCBXcml0
aW5nTW9kZSB3cml0aW5nTW9kZSwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBMVFIpIHsgdGhp
cy0+c3RhcnQod3JpdGluZ01vZGUsIGRpcmVjdGlvbikgPSBzdGFydDsgfQotICAgIHZvaWQgc2V0
RW5kKGNvbnN0IFQmIGVuZCwgV3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb24g
ZGlyZWN0aW9uID0gTFRSKSB7IHRoaXMtPmVuZCh3cml0aW5nTW9kZSwgZGlyZWN0aW9uKSA9IGVu
ZDsgfQorICAgIHZvaWQgc2V0U3RhcnQoY29uc3QgVCYgc3RhcnQsIFdyaXRpbmdNb2RlIHdyaXRp
bmdNb2RlLCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IFRleHREaXJlY3Rpb246OkxUUikgeyB0
aGlzLT5zdGFydCh3cml0aW5nTW9kZSwgZGlyZWN0aW9uKSA9IHN0YXJ0OyB9CisgICAgdm9pZCBz
ZXRFbmQoY29uc3QgVCYgZW5kLCBXcml0aW5nTW9kZSB3cml0aW5nTW9kZSwgVGV4dERpcmVjdGlv
biBkaXJlY3Rpb24gPSBUZXh0RGlyZWN0aW9uOjpMVFIpIHsgdGhpcy0+ZW5kKHdyaXRpbmdNb2Rl
LCBkaXJlY3Rpb24pID0gZW5kOyB9CiAgICAgCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJl
Y3RFZGdlcyYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fc2lkZXMgPT0gb3RoZXIubV9zaWRlczsg
fQogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBSZWN0RWRnZXMmIG90aGVyKSBjb25zdCB7IHJl
dHVybiBtX3NpZGVzICE9IG90aGVyLm1fc2lkZXM7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uLmgJKHJldmlz
aW9uIDIzNDYxOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJJbnRlcmZhY2VMYXlv
dXREaXJlY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTMgKzIzLDEwIEBACiAgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBVc2VySW50ZXJmYWNl
TGF5b3V0RGlyZWN0aW9uX2gKLSNkZWZpbmUgVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbl9o
CisjcHJhZ21hIG9uY2UKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1lbnVtIGNsYXNzIFVzZXJJ
bnRlcmZhY2VMYXlvdXREaXJlY3Rpb24geyBMVFIsIFJUTCB9OworZW51bSBjbGFzcyBVc2VySW50
ZXJmYWNlTGF5b3V0RGlyZWN0aW9uIDogdWludDhfdCB7IExUUiwgUlRMIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25f
aApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250
cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyMzQ2MTgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBDb21wbGV4VGV4dENvbnRyb2xsZXI6
OmNvbXB1dGVFeHBhbgogICAgIGlmICghbV9leHBhbnNpb24pCiAgICAgICAgIG1fZXhwYW5zaW9u
UGVyT3Bwb3J0dW5pdHkgPSAwOwogICAgIGVsc2UgewotICAgICAgICB1bnNpZ25lZCBleHBhbnNp
b25PcHBvcnR1bml0eUNvdW50ID0gRm9udENhc2NhZGU6OmV4cGFuc2lvbk9wcG9ydHVuaXR5Q291
bnQobV9ydW4udGV4dCgpLCBtX3J1bi5sdHIoKSA/IExUUiA6IFJUTCwgbV9ydW4uZXhwYW5zaW9u
QmVoYXZpb3IoKSkuZmlyc3Q7CisgICAgICAgIHVuc2lnbmVkIGV4cGFuc2lvbk9wcG9ydHVuaXR5
Q291bnQgPSBGb250Q2FzY2FkZTo6ZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudChtX3J1bi50ZXh0
KCksIG1fcnVuLmx0cigpID8gVGV4dERpcmVjdGlvbjo6TFRSIDogVGV4dERpcmVjdGlvbjo6UlRM
LCBtX3J1bi5leHBhbnNpb25CZWhhdmlvcigpKS5maXJzdDsKIAogICAgICAgICBpZiAoIWV4cGFu
c2lvbk9wcG9ydHVuaXR5Q291bnQpCiAgICAgICAgICAgICBtX2V4cGFuc2lvblBlck9wcG9ydHVu
aXR5ID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNj
YWRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FzY2FkZS5jcHAJKHJldmlzaW9uIDIzNDYxOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA3NCw3ICsx
MDc0LDcgQEAgc3RkOjpwYWlyPHVuc2lnbmVkLCBib29sPiBGb250Q2FzY2FkZTo6ZQogICAgICAg
ICArK2NvdW50OwogICAgICAgICBpc0FmdGVyRXhwYW5zaW9uID0gdHJ1ZTsKICAgICB9Ci0gICAg
aWYgKGRpcmVjdGlvbiA9PSBMVFIpIHsKKyAgICBpZiAoZGlyZWN0aW9uID09IFRleHREaXJlY3Rp
b246OkxUUikgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kp
IHsKICAgICAgICAgICAgIGlmICh0cmVhdEFzU3BhY2UoY2hhcmFjdGVyc1tpXSkpIHsKICAgICAg
ICAgICAgICAgICBjb3VudCsrOwpAQCAtMTExMSw3ICsxMTExLDcgQEAgc3RkOjpwYWlyPHVuc2ln
bmVkLCBib29sPiBGb250Q2FzY2FkZTo6ZQogICAgICAgICArK2NvdW50OwogICAgICAgICBpc0Fm
dGVyRXhwYW5zaW9uID0gdHJ1ZTsKICAgICB9Ci0gICAgaWYgKGRpcmVjdGlvbiA9PSBMVFIpIHsK
KyAgICBpZiAoZGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUikgewogICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIFVDaGFyMzIg
Y2hhcmFjdGVyID0gY2hhcmFjdGVyc1tpXTsKICAgICAgICAgICAgIGlmICh0cmVhdEFzU3BhY2Uo
Y2hhcmFjdGVyKSkgewpAQCAtMTE4Miw3ICsxMTgyLDcgQEAgYm9vbCBGb250Q2FzY2FkZTo6bGVh
ZGluZ0V4cGFuc2lvbk9wcG9ydAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBVQ2hhcjMy
IGluaXRpYWxDaGFyYWN0ZXI7Ci0gICAgaWYgKGRpcmVjdGlvbiA9PSBMVFIpIHsKKyAgICBpZiAo
ZGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUikgewogICAgICAgICBpbml0aWFsQ2hhcmFj
dGVyID0gc3RyaW5nVmlld1swXTsKICAgICAgICAgaWYgKFUxNl9JU19MRUFEKGluaXRpYWxDaGFy
YWN0ZXIpICYmIHN0cmluZ1ZpZXcubGVuZ3RoKCkgPiAxICYmIFUxNl9JU19UUkFJTChzdHJpbmdW
aWV3WzFdKSkKICAgICAgICAgICAgIGluaXRpYWxDaGFyYWN0ZXIgPSBVMTZfR0VUX1NVUFBMRU1F
TlRBUlkoaW5pdGlhbENoYXJhY3Rlciwgc3RyaW5nVmlld1sxXSk7CkBAIC0xMjAxLDcgKzEyMDEs
NyBAQCBib29sIEZvbnRDYXNjYWRlOjp0cmFpbGluZ0V4cGFuc2lvbk9wcG9yCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIFVDaGFyMzIgZmluYWxDaGFyYWN0ZXI7Ci0gICAgaWYgKGRpcmVj
dGlvbiA9PSBMVFIpIHsKKyAgICBpZiAoZGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUikg
ewogICAgICAgICBmaW5hbENoYXJhY3RlciA9IHN0cmluZ1ZpZXdbc3RyaW5nVmlldy5sZW5ndGgo
KSAtIDFdOwogICAgICAgICBpZiAoVTE2X0lTX1RSQUlMKGZpbmFsQ2hhcmFjdGVyKSAmJiBzdHJp
bmdWaWV3Lmxlbmd0aCgpID4gMSAmJiBVMTZfSVNfTEVBRChzdHJpbmdWaWV3W3N0cmluZ1ZpZXcu
bGVuZ3RoKCkgLSAyXSkpCiAgICAgICAgICAgICBmaW5hbENoYXJhY3RlciA9IFUxNl9HRVRfU1VQ
UExFTUVOVEFSWShzdHJpbmdWaWV3W3N0cmluZ1ZpZXcubGVuZ3RoKCkgLSAyXSwgZmluYWxDaGFy
YWN0ZXIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuY3BwCShyZXZpc2lvbiAyMzQ2MTgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02ODMsNyArNjgzLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdCaWRpVGV4dChjb25z
dAogICAgIHdoaWxlIChiaWRpUnVuKSB7CiAgICAgICAgIFRleHRSdW4gc3VicnVuID0gcnVuLnN1
YlJ1bihiaWRpUnVuLT5zdGFydCgpLCBiaWRpUnVuLT5zdG9wKCkgLSBiaWRpUnVuLT5zdGFydCgp
KTsKICAgICAgICAgYm9vbCBpc1JUTCA9IGJpZGlSdW4tPmxldmVsKCkgJSAyOwotICAgICAgICBz
dWJydW4uc2V0RGlyZWN0aW9uKGlzUlRMID8gUlRMIDogTFRSKTsKKyAgICAgICAgc3VicnVuLnNl
dERpcmVjdGlvbihpc1JUTCA/IFRleHREaXJlY3Rpb246OlJUTCA6IFRleHREaXJlY3Rpb246OkxU
Uik7CiAgICAgICAgIHN1YnJ1bi5zZXREaXJlY3Rpb25hbE92ZXJyaWRlKGJpZGlSdW4tPmRpck92
ZXJyaWRlKGZhbHNlKSk7CiAKICAgICAgICAgZmxvYXQgd2lkdGggPSBmb250LmRyYXdUZXh0KCp0
aGlzLCBzdWJydW4sIGN1cnJQb2ludCwgMCwgc3RkOjpudWxsb3B0LCBjdXN0b21Gb250Tm90UmVh
ZHlBY3Rpb24pOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRS
dW4uaAkocmV2aXNpb24gMjM0NjE4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvVGV4dFJ1bi5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIHN0cnVjdCBXaWR0
aEl0ZXJhdG9yOwogY2xhc3MgVGV4dFJ1biB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgVGV4dFJ1bihjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0
IHhwb3MgPSAwLCBmbG9hdCBleHBhbnNpb24gPSAwLCBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNp
b25CZWhhdmlvciA9IERlZmF1bHRFeHBhbnNpb24sIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0g
TFRSLCBib29sIGRpcmVjdGlvbmFsT3ZlcnJpZGUgPSBmYWxzZSwgYm9vbCBjaGFyYWN0ZXJTY2Fu
Rm9yQ29kZVBhdGggPSB0cnVlKQorICAgIGV4cGxpY2l0IFRleHRSdW4oY29uc3QgU3RyaW5nJiB0
ZXh0LCBmbG9hdCB4cG9zID0gMCwgZmxvYXQgZXhwYW5zaW9uID0gMCwgRXhwYW5zaW9uQmVoYXZp
b3IgZXhwYW5zaW9uQmVoYXZpb3IgPSBEZWZhdWx0RXhwYW5zaW9uLCBUZXh0RGlyZWN0aW9uIGRp
cmVjdGlvbiA9IFRleHREaXJlY3Rpb246OkxUUiwgYm9vbCBkaXJlY3Rpb25hbE92ZXJyaWRlID0g
ZmFsc2UsIGJvb2wgY2hhcmFjdGVyU2NhbkZvckNvZGVQYXRoID0gdHJ1ZSkKICAgICAgICAgOiBt
X3RleHQodGV4dCkKICAgICAgICAgLCBtX3RhYlNpemUoMCkKICAgICAgICAgLCBtX3hwb3MoeHBv
cykKQEAgLTUyLDE0ICs1MiwxNCBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9leHBhbnNpb24oZXhw
YW5zaW9uKQogICAgICAgICAsIG1fZXhwYW5zaW9uQmVoYXZpb3IoZXhwYW5zaW9uQmVoYXZpb3Ip
CiAgICAgICAgICwgbV9hbGxvd1RhYnMoZmFsc2UpCi0gICAgICAgICwgbV9kaXJlY3Rpb24oZGly
ZWN0aW9uKQorICAgICAgICAsIG1fZGlyZWN0aW9uKHN0YXRpY19jYXN0PHVuc2lnbmVkPihkaXJl
Y3Rpb24pKQogICAgICAgICAsIG1fZGlyZWN0aW9uYWxPdmVycmlkZShkaXJlY3Rpb25hbE92ZXJy
aWRlKQogICAgICAgICAsIG1fY2hhcmFjdGVyU2NhbkZvckNvZGVQYXRoKGNoYXJhY3RlclNjYW5G
b3JDb2RlUGF0aCkKICAgICAgICAgLCBtX2Rpc2FibGVTcGFjaW5nKGZhbHNlKQogICAgIHsKICAg
ICB9CiAKLSAgICBleHBsaWNpdCBUZXh0UnVuKFN0cmluZ1ZpZXcgc3RyaW5nVmlldywgZmxvYXQg
eHBvcyA9IDAsIGZsb2F0IGV4cGFuc2lvbiA9IDAsIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lv
bkJlaGF2aW9yID0gRGVmYXVsdEV4cGFuc2lvbiwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBM
VFIsIGJvb2wgZGlyZWN0aW9uYWxPdmVycmlkZSA9IGZhbHNlLCBib29sIGNoYXJhY3RlclNjYW5G
b3JDb2RlUGF0aCA9IHRydWUpCisgICAgZXhwbGljaXQgVGV4dFJ1bihTdHJpbmdWaWV3IHN0cmlu
Z1ZpZXcsIGZsb2F0IHhwb3MgPSAwLCBmbG9hdCBleHBhbnNpb24gPSAwLCBFeHBhbnNpb25CZWhh
dmlvciBleHBhbnNpb25CZWhhdmlvciA9IERlZmF1bHRFeHBhbnNpb24sIFRleHREaXJlY3Rpb24g
ZGlyZWN0aW9uID0gVGV4dERpcmVjdGlvbjo6TFRSLCBib29sIGRpcmVjdGlvbmFsT3ZlcnJpZGUg
PSBmYWxzZSwgYm9vbCBjaGFyYWN0ZXJTY2FuRm9yQ29kZVBhdGggPSB0cnVlKQogICAgICAgICA6
IFRleHRSdW4oc3RyaW5nVmlldy50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCksIHhwb3MsIGV4cGFu
c2lvbiwgZXhwYW5zaW9uQmVoYXZpb3IsIGRpcmVjdGlvbiwgZGlyZWN0aW9uYWxPdmVycmlkZSwg
Y2hhcmFjdGVyU2NhbkZvckNvZGVQYXRoKQogICAgIHsKICAgICB9CkBAIC0xMDMsMTQgKzEwMywx
NCBAQCBwdWJsaWM6CiAgICAgZmxvYXQgZXhwYW5zaW9uKCkgY29uc3QgeyByZXR1cm4gbV9leHBh
bnNpb247IH0KICAgICBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpb25CZWhhdmlvcigpIGNvbnN0
IHsgcmV0dXJuIG1fZXhwYW5zaW9uQmVoYXZpb3I7IH0KICAgICBUZXh0RGlyZWN0aW9uIGRpcmVj
dGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHREaXJlY3Rpb24+KG1fZGlyZWN0
aW9uKTsgfQotICAgIGJvb2wgcnRsKCkgY29uc3QgeyByZXR1cm4gbV9kaXJlY3Rpb24gPT0gUlRM
OyB9Ci0gICAgYm9vbCBsdHIoKSBjb25zdCB7IHJldHVybiBtX2RpcmVjdGlvbiA9PSBMVFI7IH0K
KyAgICBib29sIHJ0bCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHREaXJlY3Rpb24+
KG1fZGlyZWN0aW9uKSA9PSBUZXh0RGlyZWN0aW9uOjpSVEw7IH0KKyAgICBib29sIGx0cigpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHREaXJlY3Rpb24+KG1fZGlyZWN0aW9uKSA9PSBU
ZXh0RGlyZWN0aW9uOjpMVFI7IH0KICAgICBib29sIGRpcmVjdGlvbmFsT3ZlcnJpZGUoKSBjb25z
dCB7IHJldHVybiBtX2RpcmVjdGlvbmFsT3ZlcnJpZGU7IH0KICAgICBib29sIGNoYXJhY3RlclNj
YW5Gb3JDb2RlUGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fY2hhcmFjdGVyU2NhbkZvckNvZGVQYXRo
OyB9CiAgICAgYm9vbCBzcGFjaW5nRGlzYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2Rpc2FibGVT
cGFjaW5nOyB9CiAKICAgICB2b2lkIGRpc2FibGVTcGFjaW5nKCkgeyBtX2Rpc2FibGVTcGFjaW5n
ID0gdHJ1ZTsgfQotICAgIHZvaWQgc2V0RGlyZWN0aW9uKFRleHREaXJlY3Rpb24gZGlyZWN0aW9u
KSB7IG1fZGlyZWN0aW9uID0gZGlyZWN0aW9uOyB9CisgICAgdm9pZCBzZXREaXJlY3Rpb24oVGV4
dERpcmVjdGlvbiBkaXJlY3Rpb24pIHsgbV9kaXJlY3Rpb24gPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oZGlyZWN0aW9uKTsgfQogICAgIHZvaWQgc2V0RGlyZWN0aW9uYWxPdmVycmlkZShib29sIG92
ZXJyaWRlKSB7IG1fZGlyZWN0aW9uYWxPdmVycmlkZSA9IG92ZXJyaWRlOyB9CiAgICAgdm9pZCBz
ZXRDaGFyYWN0ZXJTY2FuRm9yQ29kZVBhdGgoYm9vbCBzY2FuKSB7IG1fY2hhcmFjdGVyU2NhbkZv
ckNvZGVQYXRoID0gc2NhbjsgfQogICAgIFN0cmluZ1ZpZXcgdGV4dCgpIGNvbnN0IHsgcmV0dXJu
IG1fdGV4dDsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJ
dGVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvV2lkdGhJdGVyYXRvci5jcHAJKHJldmlzaW9uIDIzNDYxOCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
Myw3ICs1Myw3IEBAIFdpZHRoSXRlcmF0b3I6OldpZHRoSXRlcmF0b3IoY29uc3QgRm9udEMKICAg
ICBpZiAoIW1fZXhwYW5zaW9uKQogICAgICAgICBtX2V4cGFuc2lvblBlck9wcG9ydHVuaXR5ID0g
MDsKICAgICBlbHNlIHsKLSAgICAgICAgdW5zaWduZWQgZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3Vu
dCA9IEZvbnRDYXNjYWRlOjpleHBhbnNpb25PcHBvcnR1bml0eUNvdW50KG1fcnVuLnRleHQoKSwg
bV9ydW4ubHRyKCkgPyBMVFIgOiBSVEwsIHJ1bi5leHBhbnNpb25CZWhhdmlvcigpKS5maXJzdDsK
KyAgICAgICAgdW5zaWduZWQgZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudCA9IEZvbnRDYXNjYWRl
OjpleHBhbnNpb25PcHBvcnR1bml0eUNvdW50KG1fcnVuLnRleHQoKSwgbV9ydW4ubHRyKCkgPyBU
ZXh0RGlyZWN0aW9uOjpMVFIgOiBUZXh0RGlyZWN0aW9uOjpSVEwsIHJ1bi5leHBhbnNpb25CZWhh
dmlvcigpKS5maXJzdDsKIAogICAgICAgICBpZiAoIWV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQp
CiAgICAgICAgICAgICBtX2V4cGFuc2lvblBlck9wcG9ydHVuaXR5ID0gMDsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TZWxlY3Rpb25SZWN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2VsZWN0aW9uUmVjdC5jcHAJKHJldmlzaW9uIDIz
NDYxOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TZWxlY3Rpb25SZWN0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNl
bGVjdGlvblJlY3Q6OlNlbGVjdGlvblJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCwgYm9vbCBpc0hv
cml6b250YWwsIGludCBwYWdlTnVtYmVyKQogICAgIDogbV9yZWN0KHJlY3QpCi0gICAgLCBtX2Rp
cmVjdGlvbihMVFIpCisgICAgLCBtX2RpcmVjdGlvbihUZXh0RGlyZWN0aW9uOjpMVFIpCiAgICAg
LCBtX21pblgoMCkKICAgICAsIG1fbWF4WCgwKQogICAgICwgbV9tYXhZKDApCkBAIC03Miw3ICs3
Miw3IEBAIFNlbGVjdGlvblJlY3Q6OlNlbGVjdGlvblJlY3QoY29uc3QgSW50UmUKIH0KIAogU2Vs
ZWN0aW9uUmVjdDo6U2VsZWN0aW9uUmVjdCgpCi0gICAgOiBtX2RpcmVjdGlvbihMVFIpCisgICAg
OiBtX2RpcmVjdGlvbihUZXh0RGlyZWN0aW9uOjpMVFIpCiAgICAgLCBtX21pblgoMCkKICAgICAs
IG1fbWF4WCgwKQogICAgICwgbV9tYXhZKDApCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L0JpZGlSZXNvbHZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvQmlkaVJlc29sdmVyLmgJKHJldmlzaW9uIDIzNDYxOCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvQmlkaVJlc29sdmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTg2LDEw
ICs4NiwxMCBAQCBzdHJ1Y3QgQmlkaVN0YXR1cyB7CiAgICAgLy8gQ3JlYXRlcyBhIEJpZGlTdGF0
dXMgcmVwcmVzZW50aW5nIGEgbmV3IHBhcmFncmFwaCByb290IHdpdGggYSBkZWZhdWx0IGRpcmVj
dGlvbi4KICAgICAvLyBVc2VzIFRleHREaXJlY3Rpb24gYXMgaXQgb25seSBoYXMgdHdvIHBvc3Np
YmlsaXRpZXMgaW5zdGVhZCBvZiBVQ2hhckRpcmVjdGlvbiB3aGljaCBoYXMgYXQgbGVhc3QgMTku
CiAgICAgQmlkaVN0YXR1cyhUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiwgYm9vbCBpc092ZXJyaWRl
KQotICAgICAgICA6IGVvcihkaXJlY3Rpb24gPT0gTFRSID8gVV9MRUZUX1RPX1JJR0hUIDogVV9S
SUdIVF9UT19MRUZUKQorICAgICAgICA6IGVvcihkaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6
TFRSID8gVV9MRUZUX1RPX1JJR0hUIDogVV9SSUdIVF9UT19MRUZUKQogICAgICAgICAsIGxhc3RT
dHJvbmcoZW9yKQogICAgICAgICAsIGxhc3QoZW9yKQotICAgICAgICAsIGNvbnRleHQoQmlkaUNv
bnRleHQ6OmNyZWF0ZShkaXJlY3Rpb24gPT0gTFRSID8gMCA6IDEsIGVvciwgaXNPdmVycmlkZSkp
CisgICAgICAgICwgY29udGV4dChCaWRpQ29udGV4dDo6Y3JlYXRlKGRpcmVjdGlvbiA9PSBUZXh0
RGlyZWN0aW9uOjpMVFIgPyAwIDogMSwgZW9yLCBpc092ZXJyaWRlKSkKICAgICB7CiAgICAgfQog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N0cmluZ1dpdGhEaXJlY3Rpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N0cmluZ1dpdGhE
aXJlY3Rpb24uaAkocmV2aXNpb24gMjM0NjE4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9TdHJpbmdXaXRoRGlyZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgU3RyaW5nV2l0aERpcmVjdGlvbiB7CiAg
ICAgU3RyaW5nIHN0cmluZzsKLSAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiB7IExUUiB9Owor
ICAgIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uIHsgVGV4dERpcmVjdGlvbjo6TFRSIH07CiB9Owog
CiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIGEsIGNv
bnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIGIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L1dyaXRpbmdNb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9Xcml0aW5nTW9kZS5oCShyZXZpc2lvbiAyMzQ2MTgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L1dyaXRpbmdNb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDExICsz
MywxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVudW0gVGV4dERpcmVjdGlvbiB7IExU
UiwgUlRMIH07CitlbnVtIGNsYXNzIFRleHREaXJlY3Rpb24gOiB1aW50OF90IHsgTFRSLCBSVEwg
fTsKIAogaW5saW5lIGJvb2wgaXNMZWZ0VG9SaWdodERpcmVjdGlvbihUZXh0RGlyZWN0aW9uIGRp
cmVjdGlvbikKIHsKLSAgICByZXR1cm4gZGlyZWN0aW9uID09IExUUjsKKyAgICByZXR1cm4gZGly
ZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUjsKIH0KIAogZW51bSBXcml0aW5nTW9kZSB7CkBA
IC00NywxOSArNDcsMTkgQEAgZW51bSBXcml0aW5nTW9kZSB7CiAgICAgUmlnaHRUb0xlZnRXcml0
aW5nTW9kZSA9IDMsIC8vIHZlcnRpY2FsLXJsCiB9OwogCi0jZGVmaW5lIE1BS0VfVEVYVF9GTE9X
KHdyaXRpbmdNb2RlLCBkaXJlY3Rpb24pICAoKHdyaXRpbmdNb2RlKSA8PCAxIHwgKGRpcmVjdGlv
bikpCisjZGVmaW5lIE1BS0VfVEVYVF9GTE9XKHdyaXRpbmdNb2RlLCBkaXJlY3Rpb24pICAoKHdy
aXRpbmdNb2RlKSA8PCAxIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRpcmVjdGlvbikpCiAKIC8v
IERlZmluZSB0aGUgdGV4dCBmbG93IGluIHRlcm1zIG9mIHRoZSB3cml0aW5nIG1vZGUgYW5kIHRo
ZSB0ZXh0IGRpcmVjdGlvbi4gVGhlIGZpcnN0CiAvLyBwYXJ0IGlzIHRoZSBsaW5lIGdyb3dpbmcg
ZGlyZWN0aW9uIGFuZCB0aGUgc2Vjb25kIHBhcnQgaXMgdGhlIGJsb2NrIGdyb3dpbmcgZGlyZWN0
aW9uLgogZW51bSBUZXh0RmxvdyB7Ci0gICAgSW5saW5lRWFzdEJsb2NrU291dGggPSBNQUtFX1RF
WFRfRkxPVyhUb3BUb0JvdHRvbVdyaXRpbmdNb2RlLCBMVFIpLAotICAgIElubGluZVdlc3RCbG9j
a1NvdXRoID0gTUFLRV9URVhUX0ZMT1coVG9wVG9Cb3R0b21Xcml0aW5nTW9kZSwgUlRMKSwKLSAg
ICBJbmxpbmVFYXN0QmxvY2tOb3J0aCA9IE1BS0VfVEVYVF9GTE9XKEJvdHRvbVRvVG9wV3JpdGlu
Z01vZGUsIExUUiksCi0gICAgSW5saW5lV2VzdEJsb2NrTm9ydGggPSBNQUtFX1RFWFRfRkxPVyhC
b3R0b21Ub1RvcFdyaXRpbmdNb2RlLCBSVEwpLAotICAgIElubGluZVNvdXRoQmxvY2tFYXN0ID0g
TUFLRV9URVhUX0ZMT1coTGVmdFRvUmlnaHRXcml0aW5nTW9kZSwgTFRSKSwKLSAgICBJbmxpbmVT
b3V0aEJsb2NrV2VzdCA9IE1BS0VfVEVYVF9GTE9XKExlZnRUb1JpZ2h0V3JpdGluZ01vZGUsIFJU
TCksCi0gICAgSW5saW5lTm9ydGhCbG9ja0Vhc3QgPSBNQUtFX1RFWFRfRkxPVyhSaWdodFRvTGVm
dFdyaXRpbmdNb2RlLCBMVFIpLAotICAgIElubGluZU5vcnRoQmxvY2tXZXN0ID0gTUFLRV9URVhU
X0ZMT1coUmlnaHRUb0xlZnRXcml0aW5nTW9kZSwgUlRMKQorICAgIElubGluZUVhc3RCbG9ja1Nv
dXRoID0gTUFLRV9URVhUX0ZMT1coVG9wVG9Cb3R0b21Xcml0aW5nTW9kZSwgVGV4dERpcmVjdGlv
bjo6TFRSKSwKKyAgICBJbmxpbmVXZXN0QmxvY2tTb3V0aCA9IE1BS0VfVEVYVF9GTE9XKFRvcFRv
Qm90dG9tV3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb246OlJUTCksCisgICAgSW5saW5lRWFzdEJs
b2NrTm9ydGggPSBNQUtFX1RFWFRfRkxPVyhCb3R0b21Ub1RvcFdyaXRpbmdNb2RlLCBUZXh0RGly
ZWN0aW9uOjpMVFIpLAorICAgIElubGluZVdlc3RCbG9ja05vcnRoID0gTUFLRV9URVhUX0ZMT1co
Qm90dG9tVG9Ub3BXcml0aW5nTW9kZSwgVGV4dERpcmVjdGlvbjo6UlRMKSwKKyAgICBJbmxpbmVT
b3V0aEJsb2NrRWFzdCA9IE1BS0VfVEVYVF9GTE9XKExlZnRUb1JpZ2h0V3JpdGluZ01vZGUsIFRl
eHREaXJlY3Rpb246OkxUUiksCisgICAgSW5saW5lU291dGhCbG9ja1dlc3QgPSBNQUtFX1RFWFRf
RkxPVyhMZWZ0VG9SaWdodFdyaXRpbmdNb2RlLCBUZXh0RGlyZWN0aW9uOjpSVEwpLAorICAgIElu
bGluZU5vcnRoQmxvY2tFYXN0ID0gTUFLRV9URVhUX0ZMT1coUmlnaHRUb0xlZnRXcml0aW5nTW9k
ZSwgVGV4dERpcmVjdGlvbjo6TFRSKSwKKyAgICBJbmxpbmVOb3J0aEJsb2NrV2VzdCA9IE1BS0Vf
VEVYVF9GTE9XKFJpZ2h0VG9MZWZ0V3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb246OlJUTCkKIH07
CiAKIGlubGluZSBUZXh0RmxvdyBtYWtlVGV4dEZsb3coV3JpdGluZ01vZGUgd3JpdGluZ01vZGUs
IFRleHREaXJlY3Rpb24gZGlyZWN0aW9uKQpAQCAtOTEsMTMgKzkxLDEzIEBAIGlubGluZSBib29s
IGlzVmVydGljYWxUZXh0RmxvdyhUZXh0RmxvdyAKIC8vIExpbmVzIGhhdmUgdmVydGljYWwgb3Jp
ZW50YXRpb247IG1vZGVzIHZlcnRpY2FsLWxyIG9yIHZlcnRpY2FsLXJsLgogaW5saW5lIGJvb2wg
aXNWZXJ0aWNhbFdyaXRpbmdNb2RlKFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKQogewotICAgIHJl
dHVybiBpc1ZlcnRpY2FsVGV4dEZsb3cobWFrZVRleHRGbG93KHdyaXRpbmdNb2RlLCBMVFIpKTsK
KyAgICByZXR1cm4gaXNWZXJ0aWNhbFRleHRGbG93KG1ha2VUZXh0Rmxvdyh3cml0aW5nTW9kZSwg
VGV4dERpcmVjdGlvbjo6TFRSKSk7CiB9CiAKIC8vIEJsb2NrIHByb2dyZXNzaW9uIGluY3JlYXNl
cyBpbiB0aGUgb3Bwb3NpdGUgZGlyZWN0aW9uIHRvIG5vcm1hbDsgbW9kZXMgdmVydGljYWwtcmwg
b3IgaG9yaXpvbnRhbC1idC4KIGlubGluZSBib29sIGlzRmxpcHBlZFdyaXRpbmdNb2RlKFdyaXRp
bmdNb2RlIHdyaXRpbmdNb2RlKQogewotICAgIHJldHVybiBpc0ZsaXBwZWRUZXh0RmxvdyhtYWtl
VGV4dEZsb3cod3JpdGluZ01vZGUsIExUUikpOworICAgIHJldHVybiBpc0ZsaXBwZWRUZXh0Rmxv
dyhtYWtlVGV4dEZsb3cod3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb246OkxUUikpOwogfQogCiAv
LyBMaW5lcyBoYXZlIGhvcml6b250YWwgb3JpZW50YXRpb247IG1vZGVzIGhvcml6b250YWwtdGIg
b3IgaG9yaXpvbnRhbC1idC4KQEAgLTE2MSw3ICsxNjEsNyBAQCBpbmxpbmUgUGh5c2ljYWxCb3hT
aWRlIG1hcExvZ2ljYWxTaWRlVG9QCiBpbmxpbmUgUGh5c2ljYWxCb3hTaWRlIG1hcExvZ2ljYWxT
aWRlVG9QaHlzaWNhbFNpZGUoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIExvZ2ljYWxCb3hTaWRl
IGxvZ2ljYWxTaWRlKQogewogICAgIC8vIFNldCB0aGUgZGlyZWN0aW9uIHN1Y2ggdGhhdCBzaWRl
IGlzIG1pcnJvcmVkIGlmIGlzRmxpcHBlZFdyaXRpbmdNb2RlKCkgaXMgdHJ1ZQotICAgIFRleHRE
aXJlY3Rpb24gZGlyZWN0aW9uID0gaXNGbGlwcGVkV3JpdGluZ01vZGUod3JpdGluZ01vZGUpID8g
UlRMIDogTFRSOworICAgIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gaXNGbGlwcGVkV3JpdGlu
Z01vZGUod3JpdGluZ01vZGUpID8gVGV4dERpcmVjdGlvbjo6UlRMIDogVGV4dERpcmVjdGlvbjo6
TFRSOwogICAgIHJldHVybiBtYXBMb2dpY2FsU2lkZVRvUGh5c2ljYWxTaWRlKG1ha2VUZXh0Rmxv
dyh3cml0aW5nTW9kZSwgZGlyZWN0aW9uKSwgbG9naWNhbFNpZGUpOwogfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcAkocmV2aXNpb24gMjM0
NjE4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BvcHVwTWVudVdpbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTY1Nyw3ICs2NTcsNyBAQCB2b2lkIFBvcHVwTWVudVdpbjo6cGFpbnQo
Y29uc3QgSW50UmVjdCYgCiAgICAgICAgIC8vIERyYXcgdGhlIGl0ZW0gdGV4dAogICAgICAgICBp
ZiAoaXRlbVN0eWxlLmlzVmlzaWJsZSgpKSB7CiAgICAgICAgICAgICBpbnQgdGV4dFggPSAwOwot
ICAgICAgICAgICAgaWYgKGNsaWVudCgpLT5tZW51U3R5bGUoKS50ZXh0RGlyZWN0aW9uKCkgPT0g
TFRSKSB7CisgICAgICAgICAgICBpZiAoY2xpZW50KCktPm1lbnVTdHlsZSgpLnRleHREaXJlY3Rp
b24oKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpIHsKICAgICAgICAgICAgICAgICB0ZXh0WCA9IHN0
ZDo6bWF4PGludD4oMCwgY2xpZW50KCktPmNsaWVudFBhZGRpbmdMZWZ0KCkgLSBjbGllbnQoKS0+
Y2xpZW50SW5zZXRMZWZ0KCkpOwogICAgICAgICAgICAgICAgIGlmIChSZW5kZXJUaGVtZTo6c2lu
Z2xldG9uKCkucG9wdXBPcHRpb25TdXBwb3J0c1RleHRJbmRlbnQoKSkKICAgICAgICAgICAgICAg
ICAgICAgdGV4dFggKz0gbWluaW11bUludFZhbHVlRm9yTGVuZ3RoKGl0ZW1TdHlsZS50ZXh0SW5k
ZW50KCksIGl0ZW1SZWN0LndpZHRoKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0hpdFRlc3RSZXN1bHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9IaXRUZXN0UmVzdWx0LmNwcAkocmV2aXNpb24gMjM0NjE4KQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjAsNyArMjIw
LDcgQEAgU3RyaW5nIEhpdFRlc3RSZXN1bHQ6OnNlbGVjdGVkVGV4dCgpIGNvbgogCiBTdHJpbmcg
SGl0VGVzdFJlc3VsdDo6c3BlbGxpbmdUb29sVGlwKFRleHREaXJlY3Rpb24mIGRpcikgY29uc3QK
IHsKLSAgICBkaXIgPSBMVFI7CisgICAgZGlyID0gVGV4dERpcmVjdGlvbjo6TFRSOwogICAgIC8v
IFJldHVybiB0aGUgdG9vbCB0aXAgc3RyaW5nIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHBvaW50LCBp
ZiBhbnkuIE9ubHkgbWFya2VycyBhc3NvY2lhdGVkIHdpdGggYmFkIGdyYW1tYXIKICAgICAvLyBj
dXJyZW50bHkgc3VwcGx5IHN0cmluZ3MsIGJ1dCBtYXliZSBzb21lZGF5IG1hcmtlcnMgYXNzb2Np
YXRlZCB3aXRoIG1pc3NwZWxsZWQgd29yZHMgd2lsbCBhbHNvLgogICAgIGlmICghbV9pbm5lck5v
blNoYXJlZE5vZGUpCkBAIC0yNTEsNyArMjUxLDcgQEAgU3RyaW5nIEhpdFRlc3RSZXN1bHQ6OnJl
cGxhY2VkU3RyaW5nKCkgYwogICAgIAogU3RyaW5nIEhpdFRlc3RSZXN1bHQ6OnRpdGxlKFRleHRE
aXJlY3Rpb24mIGRpcikgY29uc3QKIHsKLSAgICBkaXIgPSBMVFI7CisgICAgZGlyID0gVGV4dERp
cmVjdGlvbjo6TFRSOwogICAgIC8vIEZpbmQgdGhlIHRpdGxlIGluIHRoZSBuZWFyZXN0IGVuY2xv
c2luZyBET00gbm9kZS4KICAgICAvLyBGb3IgPGFyZWE+IHRhZ3MgaW4gaW1hZ2UgbWFwcywgd2Fs
ayB0aGUgdHJlZSBmb3IgdGhlIDxhcmVhPiwgbm90IHRoZSA8aW1nPiB1c2luZyBpdC4KICAgICBm
b3IgKE5vZGUqIHRpdGxlTm9kZSA9IG1faW5uZXJOb2RlLmdldCgpOyB0aXRsZU5vZGU7IHRpdGxl
Tm9kZSA9IHRpdGxlTm9kZS0+cGFyZW50SW5Db21wb3NlZFRyZWUoKSkgewpAQCAtMjkwLDcgKzI5
MCw3IEBAIFN0cmluZyBIaXRUZXN0UmVzdWx0Ojppbm5lclRleHRJZlRydW5jYXQKICAgICAgICAg
fQogICAgIH0KIAotICAgIGRpciA9IExUUjsKKyAgICBkaXIgPSBUZXh0RGlyZWN0aW9uOjpMVFI7
CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSW5saW5lQm94LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lu
bGluZUJveC5oCShyZXZpc2lvbiAyMzQ2MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SW5saW5lQm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTIxOCw4ICsyMTgsOCBAQCBwdWJsaWM6CiAK
ICAgICB1bnNpZ25lZCBjaGFyIGJpZGlMZXZlbCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0ZmllbGRz
LmJpZGlFbWJlZGRpbmdMZXZlbCgpOyB9CiAgICAgdm9pZCBzZXRCaWRpTGV2ZWwodW5zaWduZWQg
Y2hhciBsZXZlbCkgeyBtX2JpdGZpZWxkcy5zZXRCaWRpRW1iZWRkaW5nTGV2ZWwobGV2ZWwpOyB9
Ci0gICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBiaWRpTGV2ZWwo
KSAlIDIgPyBSVEwgOiBMVFI7IH0KLSAgICBib29sIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSBj
b25zdCB7IHJldHVybiBkaXJlY3Rpb24oKSA9PSBMVFI7IH0KKyAgICBUZXh0RGlyZWN0aW9uIGRp
cmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIGJpZGlMZXZlbCgpICUgMiA/IFRleHREaXJlY3Rpb246
OlJUTCA6IFRleHREaXJlY3Rpb246OkxUUjsgfQorICAgIGJvb2wgaXNMZWZ0VG9SaWdodERpcmVj
dGlvbigpIGNvbnN0IHsgcmV0dXJuIGRpcmVjdGlvbigpID09IFRleHREaXJlY3Rpb246OkxUUjsg
fQogICAgIGludCBjYXJldExlZnRtb3N0T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gaXNMZWZ0VG9S
aWdodERpcmVjdGlvbigpID8gY2FyZXRNaW5PZmZzZXQoKSA6IGNhcmV0TWF4T2Zmc2V0KCk7IH0K
ICAgICBpbnQgY2FyZXRSaWdodG1vc3RPZmZzZXQoKSBjb25zdCB7IHJldHVybiBpc0xlZnRUb1Jp
Z2h0RGlyZWN0aW9uKCkgPyBjYXJldE1heE9mZnNldCgpIDogY2FyZXRNaW5PZmZzZXQoKTsgfQog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCShyZXZp
c2lvbiAyMzQ2MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNTEsNyArMTI1MSw3IEBAIHZvaWQgSW5saW5lRmxvd0Jv
eDo6cGFpbnRGaWxsTGF5ZXIoY29uc3QKICAgICAgICAgLy8gdGhlIHByZXZpb3VzIGxpbmUgbGVm
dCBvZmYuCiAgICAgICAgIExheW91dFVuaXQgbG9naWNhbE9mZnNldE9uTGluZSA9IDA7CiAgICAg
ICAgIExheW91dFVuaXQgdG90YWxMb2dpY2FsV2lkdGg7Ci0gICAgICAgIGlmIChyZW5kZXJlcigp
LnN0eWxlKCkuZGlyZWN0aW9uKCkgPT0gTFRSKSB7CisgICAgICAgIGlmIChyZW5kZXJlcigpLnN0
eWxlKCkuZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSKSB7CiAgICAgICAgICAgICBm
b3IgKElubGluZUZsb3dCb3gqIGN1cnIgPSBwcmV2TGluZUJveCgpOyBjdXJyOyBjdXJyID0gY3Vy
ci0+cHJldkxpbmVCb3goKSkKICAgICAgICAgICAgICAgICBsb2dpY2FsT2Zmc2V0T25MaW5lICs9
IGN1cnItPmxvZ2ljYWxXaWR0aCgpOwogICAgICAgICAgICAgdG90YWxMb2dpY2FsV2lkdGggPSBs
b2dpY2FsT2Zmc2V0T25MaW5lOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGlu
ZUl0ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGlu
ZUl0ZXJhdG9yLmgJKHJldmlzaW9uIDIzNDYxOCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9JbmxpbmVJdGVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDIsOCArMTQyLDggQEAgaW5s
aW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJbmxpbmVJdGVyYQogc3RhdGljIGlubGluZSBVQ2hh
ckRpcmVjdGlvbiBlbWJlZENoYXJGcm9tRGlyZWN0aW9uKFRleHREaXJlY3Rpb24gZGlyZWN0aW9u
LCBFVW5pY29kZUJpZGkgdW5pY29kZUJpZGkpCiB7CiAgICAgaWYgKHVuaWNvZGVCaWRpID09IEVt
YmVkKQotICAgICAgICByZXR1cm4gZGlyZWN0aW9uID09IFJUTCA/IFVfUklHSFRfVE9fTEVGVF9F
TUJFRERJTkcgOiBVX0xFRlRfVE9fUklHSFRfRU1CRURESU5HOwotICAgIHJldHVybiBkaXJlY3Rp
b24gPT0gUlRMID8gVV9SSUdIVF9UT19MRUZUX09WRVJSSURFIDogVV9MRUZUX1RPX1JJR0hUX09W
RVJSSURFOworICAgICAgICByZXR1cm4gZGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OlJUTCA/
IFVfUklHSFRfVE9fTEVGVF9FTUJFRERJTkcgOiBVX0xFRlRfVE9fUklHSFRfRU1CRURESU5HOwor
ICAgIHJldHVybiBkaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6UlRMID8gVV9SSUdIVF9UT19M
RUZUX09WRVJSSURFIDogVV9MRUZUX1RPX1JJR0hUX09WRVJSSURFOwogfQogCiB0ZW1wbGF0ZSA8
Y2xhc3MgT2JzZXJ2ZXI+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4
dEJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRl
eHRCb3guY3BwCShyZXZpc2lvbiAyMzQ2MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SW5saW5lVGV4dEJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5Myw3ICs1OTMsNyBAQCB2b2lk
IElubGluZVRleHRCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpCiAgICAgICAgICAgICBpZiAoIWlz
SG9yaXpvbnRhbCgpKSB7CiAgICAgICAgICAgICAgICAgdGV4dERlY29yYXRpb25TZWxlY3Rpb25D
bGlwT3V0UmVjdC5tb3ZlKDAsIGxvZ2ljYWxXaWR0aEJlZm9yZVJhbmdlKTsKICAgICAgICAgICAg
ICAgICB0ZXh0RGVjb3JhdGlvblNlbGVjdGlvbkNsaXBPdXRSZWN0LnNldEhlaWdodChsb2dpY2Fs
U2VsZWN0aW9uV2lkdGgpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChkaXJlY3Rpb24oKSA9PSBS
VEwpIHsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlv
bjo6UlRMKSB7CiAgICAgICAgICAgICAgICAgdGV4dERlY29yYXRpb25TZWxlY3Rpb25DbGlwT3V0
UmVjdC5tb3ZlKGxvZ2ljYWxXaWR0aEFmdGVyUmFuZ2UsIDApOwogICAgICAgICAgICAgICAgIHRl
eHREZWNvcmF0aW9uU2VsZWN0aW9uQ2xpcE91dFJlY3Quc2V0V2lkdGgobG9naWNhbFNlbGVjdGlv
bldpZHRoKTsKICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC0xMTM5LDcgKzExMzksNyBAQCB2b2lk
IElubGluZVRleHRCb3g6OnBhaW50Q29tcG9zaXRpb25VbmRlCiAKIHN0YXRpYyBpbmxpbmUgdm9p
ZCBtaXJyb3JSVExTZWdtZW50KGZsb2F0IGxvZ2ljYWxXaWR0aCwgVGV4dERpcmVjdGlvbiBkaXJl
Y3Rpb24sIGZsb2F0JiBzdGFydCwgZmxvYXQgd2lkdGgpCiB7Ci0gICAgaWYgKGRpcmVjdGlvbiA9
PSBMVFIpCisgICAgaWYgKGRpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpCiAgICAgICAg
IHJldHVybjsKICAgICBzdGFydCA9IGxvZ2ljYWxXaWR0aCAtIHdpZHRoIC0gc3RhcnQ7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHJldmlzaW9uIDIz
NDYxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMwOTUsNyArMzA5NSw3IEBAIGNvbnN0IGNoYXIqIFJlbmRlckJsb2NrOjpy
ZW5kZXJOYW1lKCkgY28KIAogVGV4dFJ1biBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihT
dHJpbmdWaWV3IHN0cmluZ1ZpZXcsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgRXhwYW5zaW9u
QmVoYXZpb3IgZXhwYW5zaW9uLCBUZXh0UnVuRmxhZ3MgZmxhZ3MpCiB7Ci0gICAgVGV4dERpcmVj
dGlvbiB0ZXh0RGlyZWN0aW9uID0gTFRSOworICAgIGF1dG8gdGV4dERpcmVjdGlvbiA9IFRleHRE
aXJlY3Rpb246OkxUUjsKICAgICBib29sIGRpcmVjdGlvbmFsT3ZlcnJpZGUgPSBzdHlsZS5ydGxP
cmRlcmluZygpID09IE9yZGVyOjpWaXN1YWw7CiAgICAgaWYgKGZsYWdzICE9IERlZmF1bHRUZXh0
UnVuRmxhZ3MpIHsKICAgICAgICAgaWYgKGZsYWdzICYgUmVzcGVjdERpcmVjdGlvbikKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQu
Y3BwCShyZXZpc2lvbiAyMzQ2MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2tMaW5lTGF5b3V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAsMTEgKzYwLDExIEBAIHN0
YXRpYyB2b2lkIGRldGVybWluZURpcmVjdGlvbmFsaXR5KFRleHQKICAgICAgICAgaWYgKFVDaGFy
IGN1cnJlbnQgPSBpdGVyLmN1cnJlbnQoKSkgewogICAgICAgICAgICAgVUNoYXJEaXJlY3Rpb24g
Y2hhckRpcmVjdGlvbiA9IHVfY2hhckRpcmVjdGlvbihjdXJyZW50KTsKICAgICAgICAgICAgIGlm
IChjaGFyRGlyZWN0aW9uID09IFVfTEVGVF9UT19SSUdIVCkgewotICAgICAgICAgICAgICAgIGRp
ciA9IExUUjsKKyAgICAgICAgICAgICAgICBkaXIgPSBUZXh0RGlyZWN0aW9uOjpMVFI7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGNoYXJE
aXJlY3Rpb24gPT0gVV9SSUdIVF9UT19MRUZUIHx8IGNoYXJEaXJlY3Rpb24gPT0gVV9SSUdIVF9U
T19MRUZUX0FSQUJJQykgewotICAgICAgICAgICAgICAgIGRpciA9IFJUTDsKKyAgICAgICAgICAg
ICAgICBkaXIgPSBUZXh0RGlyZWN0aW9uOjpSVEw7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0zNDgsNyArMzQ4LDcgQEAgVGV4dEFsaWduTW9k
ZSBSZW5kZXJCbG9ja0Zsb3c6OnRleHRBbGlnbgogI2lmIEVOQUJMRShDU1MzX1RFWFQpCiAgICAg
VGV4dEp1c3RpZnkgdGV4dEp1c3RpZnkgPSBzdHlsZSgpLnRleHRKdXN0aWZ5KCk7CiAgICAgaWYg
KGFsaWdubWVudCA9PSBUZXh0QWxpZ25Nb2RlOjpKdXN0aWZ5ICYmIHRleHRKdXN0aWZ5ID09IFRl
eHRKdXN0aWZ5OjpOb25lKQotICAgICAgICByZXR1cm4gc3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBM
VFIgPyBUZXh0QWxpZ25Nb2RlOjpMZWZ0IDogVGV4dEFsaWduTW9kZTo6UmlnaHQ7CisgICAgICAg
IHJldHVybiBzdHlsZSgpLmRpcmVjdGlvbigpID09IFRleHREaXJlY3Rpb246OkxUUiA/IFRleHRB
bGlnbk1vZGU6OkxlZnQgOiBUZXh0QWxpZ25Nb2RlOjpSaWdodDsKICNlbmRpZgogCiAgICAgaWYg
KGVuZHNXaXRoU29mdEJyZWFrKQpAQCAtNjUwLDEzICs2NTAsMTMgQEAgdm9pZCBSZW5kZXJCbG9j
a0Zsb3c6OnVwZGF0ZUxvZ2ljYWxXaWR0aAogICAgICAgICB9CiAgICAgICAgIEZBTExUSFJPVUdI
OwogICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6U3RhcnQ6Ci0gICAgICAgIGlmIChkaXJlY3Rpb24g
PT0gTFRSKQorICAgICAgICBpZiAoZGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUikKICAg
ICAgICAgICAgIHVwZGF0ZUxvZ2ljYWxXaWR0aEZvckxlZnRBbGlnbmVkQmxvY2soc3R5bGUoKS5p
c0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCksIHRyYWlsaW5nU3BhY2VSdW4sIGxvZ2ljYWxMZWZ0LCB0
b3RhbExvZ2ljYWxXaWR0aCwgYXZhaWxhYmxlTG9naWNhbFdpZHRoKTsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgdXBkYXRlTG9naWNhbFdpZHRoRm9yUmlnaHRBbGlnbmVkQmxvY2soc3R5bGUo
KS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCksIHRyYWlsaW5nU3BhY2VSdW4sIGxvZ2ljYWxMZWZ0
LCB0b3RhbExvZ2ljYWxXaWR0aCwgYXZhaWxhYmxlTG9naWNhbFdpZHRoKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpFbmQ6Ci0gICAgICAgIGlmIChkaXJlY3Rpb24g
PT0gTFRSKQorICAgICAgICBpZiAoZGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUikKICAg
ICAgICAgICAgIHVwZGF0ZUxvZ2ljYWxXaWR0aEZvclJpZ2h0QWxpZ25lZEJsb2NrKHN0eWxlKCku
aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpLCB0cmFpbGluZ1NwYWNlUnVuLCBsb2dpY2FsTGVmdCwg
dG90YWxMb2dpY2FsV2lkdGgsIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIHVwZGF0ZUxvZ2ljYWxXaWR0aEZvckxlZnRBbGlnbmVkQmxvY2soc3R5bGUo
KS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCksIHRyYWlsaW5nU3BhY2VSdW4sIGxvZ2ljYWxMZWZ0
LCB0b3RhbExvZ2ljYWxXaWR0aCwgYXZhaWxhYmxlTG9naWNhbFdpZHRoKTsKQEAgLTEwNjEsNyAr
MTA2MSw3IEBAIGlubGluZSBCaWRpUnVuKiBSZW5kZXJCbG9ja0Zsb3c6OmhhbmRsZVQKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IHN0eWxl
KCkuZGlyZWN0aW9uKCk7Ci0gICAgYm9vbCBzaG91bGRSZW9yZGVyID0gdHJhaWxpbmdTcGFjZVJ1
biAhPSAoZGlyZWN0aW9uID09IExUUiA/IGJpZGlSdW5zLmxhc3RSdW4oKSA6IGJpZGlSdW5zLmZp
cnN0UnVuKCkpOworICAgIGJvb2wgc2hvdWxkUmVvcmRlciA9IHRyYWlsaW5nU3BhY2VSdW4gIT0g
KGRpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBiaWRpUnVucy5sYXN0UnVuKCkgOiBi
aWRpUnVucy5maXJzdFJ1bigpKTsKICAgICBpZiAoZmlyc3RTcGFjZSAhPSB0cmFpbGluZ1NwYWNl
UnVuLT5zdGFydCgpKSB7CiAgICAgICAgIEJpZGlDb250ZXh0KiBiYXNlQ29udGV4dCA9IGN1cnJl
bnRDb250ZXh0OwogICAgICAgICB3aGlsZSAoQmlkaUNvbnRleHQqIHBhcmVudCA9IGJhc2VDb250
ZXh0LT5wYXJlbnQoKSkKQEAgLTEwNzAsNyArMTA3MCw3IEBAIGlubGluZSBCaWRpUnVuKiBSZW5k
ZXJCbG9ja0Zsb3c6OmhhbmRsZVQKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEJpZGlSdW4+IG5l
d1RyYWlsaW5nUnVuID0gc3RkOjptYWtlX3VuaXF1ZTxCaWRpUnVuPihmaXJzdFNwYWNlLCB0cmFp
bGluZ1NwYWNlUnVuLT5tX3N0b3AsIHRyYWlsaW5nU3BhY2VSdW4tPnJlbmRlcmVyKCksIGJhc2VD
b250ZXh0LCBVX09USEVSX05FVVRSQUwpOwogICAgICAgICB0cmFpbGluZ1NwYWNlUnVuLT5tX3N0
b3AgPSBmaXJzdFNwYWNlOwogICAgICAgICB0cmFpbGluZ1NwYWNlUnVuID0gbmV3VHJhaWxpbmdS
dW4uZ2V0KCk7Ci0gICAgICAgIGlmIChkaXJlY3Rpb24gPT0gTFRSKQorICAgICAgICBpZiAoZGly
ZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUikKICAgICAgICAgICAgIGJpZGlSdW5zLmFwcGVu
ZFJ1bihXVEZNb3ZlKG5ld1RyYWlsaW5nUnVuKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IGJpZGlSdW5zLnByZXBlbmRSdW4oV1RGTW92ZShuZXdUcmFpbGluZ1J1bikpOwpAQCAtMTA3OSw3
ICsxMDc5LDcgQEAgaW5saW5lIEJpZGlSdW4qIFJlbmRlckJsb2NrRmxvdzo6aGFuZGxlVAogICAg
IGlmICghc2hvdWxkUmVvcmRlcikKICAgICAgICAgcmV0dXJuIHRyYWlsaW5nU3BhY2VSdW47CiAK
LSAgICBpZiAoZGlyZWN0aW9uID09IExUUikgeworICAgIGlmIChkaXJlY3Rpb24gPT0gVGV4dERp
cmVjdGlvbjo6TFRSKSB7CiAgICAgICAgIGJpZGlSdW5zLm1vdmVSdW5Ub0VuZCh0cmFpbGluZ1Nw
YWNlUnVuKTsKICAgICAgICAgdHJhaWxpbmdTcGFjZVJ1bi0+bV9sZXZlbCA9IDA7CiAgICAgfSBl
bHNlIHsKQEAgLTEzNzgsNyArMTM3OCw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpsYXlvdXRS
dW5zQW5kRmxvYXQKICAgICAgICAgICAgIGlmIChsYXN0Um9vdEJveCgpKQogICAgICAgICAgICAg
ICAgIGxhc3RSb290Qm94KCktPnNldExpbmVCcmVha0luZm8oZW5kLnJlbmRlcmVyKCksIGVuZC5v
ZmZzZXQoKSwgcmVzb2x2ZXIuc3RhdHVzKCkpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgVmlzdWFsRGlyZWN0aW9uT3ZlcnJpZGUgb3ZlcnJpZGUgPSAoc3R5bGVUb1VzZS5ydGxPcmRl
cmluZygpID09IE9yZGVyOjpWaXN1YWwgPyAoc3R5bGVUb1VzZS5kaXJlY3Rpb24oKSA9PSBMVFIg
PyBWaXN1YWxMZWZ0VG9SaWdodE92ZXJyaWRlIDogVmlzdWFsUmlnaHRUb0xlZnRPdmVycmlkZSkg
OiBOb1Zpc3VhbE92ZXJyaWRlKTsKKyAgICAgICAgICAgIFZpc3VhbERpcmVjdGlvbk92ZXJyaWRl
IG92ZXJyaWRlID0gKHN0eWxlVG9Vc2UucnRsT3JkZXJpbmcoKSA9PSBPcmRlcjo6VmlzdWFsID8g
KHN0eWxlVG9Vc2UuZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gVmlzdWFsTGVm
dFRvUmlnaHRPdmVycmlkZSA6IFZpc3VhbFJpZ2h0VG9MZWZ0T3ZlcnJpZGUpIDogTm9WaXN1YWxP
dmVycmlkZSk7CiAKICAgICAgICAgICAgIGlmIChpc05ld1VCQVBhcmFncmFwaCAmJiBzdHlsZVRv
VXNlLnVuaWNvZGVCaWRpKCkgPT0gUGxhaW50ZXh0ICYmICFyZXNvbHZlci5jb250ZXh0KCktPnBh
cmVudCgpKSB7CiAgICAgICAgICAgICAgICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBzdHls
ZVRvVXNlLmRpcmVjdGlvbigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eC5jcHAJKHJldmlzaW9uIDIzNDYxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzMwLDcgKzMzMzAsNyBAQCBzdGF0aWMgdm9p
ZCBjb21wdXRlSW5saW5lU3RhdGljRGlzdGFuY2UoCiAgICAgLy8gYm90aCAibGVmdCIgYW5kICJy
aWdodCIgcHJvcGVydGllcyBhcmUgImF1dG8iLCB3ZSBjYW4gY29uc2lkZXIgdGhhdCBvbmUgb2YK
ICAgICAvLyB0aGVtIChkZXBlbmRpbmcgb24gdGhlIGRpcmVjdGlvbikgaXMgc2ltcGx5ICIwIi4K
ICAgICBpZiAocGFyZW50LT5pc1JlbmRlckdyaWQoKSAmJiBwYXJlbnQgPT0gY2hpbGQtPmNvbnRh
aW5pbmdCbG9jaygpKSB7Ci0gICAgICAgIGlmIChwYXJlbnREaXJlY3Rpb24gPT0gTFRSKQorICAg
ICAgICBpZiAocGFyZW50RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUikKICAgICAgICAg
ICAgIGxvZ2ljYWxMZWZ0LnNldFZhbHVlKEZpeGVkLCAwKTsKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgbG9naWNhbFJpZ2h0LnNldFZhbHVlKEZpeGVkLCAwKTsKQEAgLTMzMzgsNyArMzMzOCw3
IEBAIHN0YXRpYyB2b2lkIGNvbXB1dGVJbmxpbmVTdGF0aWNEaXN0YW5jZSgKICAgICB9CiAKICAg
ICAvLyBGSVhNRTogVGhlIHN0YXRpYyBkaXN0YW5jZSBjb21wdXRhdGlvbiBoYXMgbm90IGJlZW4g
cGF0Y2hlZCBmb3IgbWl4ZWQgd3JpdGluZyBtb2RlcyB5ZXQuCi0gICAgaWYgKHBhcmVudERpcmVj
dGlvbiA9PSBMVFIpIHsKKyAgICBpZiAocGFyZW50RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246
OkxUUikgewogICAgICAgICBMYXlvdXRVbml0IHN0YXRpY1Bvc2l0aW9uID0gY2hpbGQtPmxheWVy
KCktPnN0YXRpY0lubGluZVBvc2l0aW9uKCkgLSBjb250YWluZXJCbG9jay5ib3JkZXJMb2dpY2Fs
TGVmdCgpOwogICAgICAgICBmb3IgKGF1dG8qIGN1cnJlbnQgPSBwYXJlbnQ7IGN1cnJlbnQgJiYg
Y3VycmVudCAhPSAmY29udGFpbmVyQmxvY2s7IGN1cnJlbnQgPSBjdXJyZW50LT5jb250YWluZXIo
KSkgewogICAgICAgICAgICAgaWYgKCFpczxSZW5kZXJCb3g+KCpjdXJyZW50KSkKQEAgLTM1OTcs
NyArMzU5Nyw3IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWwKICAg
ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8gVXNlIHRoZSBjb250YWluaW5n
IGJsb2NrJ3MgZGlyZWN0aW9uIHJhdGhlciB0aGFuIHRoZSBwYXJlbnQgYmxvY2sncwogICAgICAg
ICAgICAgICAgIC8vIHBlciBDU1MgMi4xIHJlZmVyZW5jZSB0ZXN0IGFic3Bvcy1ub24tcmVwbGFj
ZWQtd2lkdGgtbWFyZ2luLTAwMC4KLSAgICAgICAgICAgICAgICBpZiAoY29udGFpbmVyRGlyZWN0
aW9uID09IExUUikgeworICAgICAgICAgICAgICAgIGlmIChjb250YWluZXJEaXJlY3Rpb24gPT0g
VGV4dERpcmVjdGlvbjo6TFRSKSB7CiAgICAgICAgICAgICAgICAgICAgIG1hcmdpbkxvZ2ljYWxM
ZWZ0VmFsdWUgPSAwOwogICAgICAgICAgICAgICAgICAgICBtYXJnaW5Mb2dpY2FsUmlnaHRWYWx1
ZSA9IGF2YWlsYWJsZVNwYWNlOyAvLyB3aWxsIGJlIG5lZ2F0aXZlCiAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKQEAgLTM2MjAsNyArMzYyMCw3IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9z
aXRpb25lZExvZ2ljYWwKIAogICAgICAgICAgICAgLy8gVXNlIHRoZSBjb250YWluaW5nIGJsb2Nr
J3MgZGlyZWN0aW9uIHJhdGhlciB0aGFuIHRoZSBwYXJlbnQgYmxvY2sncwogICAgICAgICAgICAg
Ly8gcGVyIENTUyAyLjEgcmVmZXJlbmNlIHRlc3QgYWJzcG9zLW5vbi1yZXBsYWNlZC13aWR0aC1t
YXJnaW4tMDAwLgotICAgICAgICAgICAgaWYgKGNvbnRhaW5lckRpcmVjdGlvbiA9PSBSVEwpCisg
ICAgICAgICAgICBpZiAoY29udGFpbmVyRGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OlJUTCkK
ICAgICAgICAgICAgICAgICBsb2dpY2FsTGVmdFZhbHVlID0gKGF2YWlsYWJsZVNwYWNlICsgbG9n
aWNhbExlZnRWYWx1ZSkgLSBtYXJnaW5Mb2dpY2FsTGVmdFZhbHVlIC0gbWFyZ2luTG9naWNhbFJp
Z2h0VmFsdWU7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewpAQCAtNDA5NSw3ICs0MDk1LDcgQEAg
dm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbAogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgLy8gVXNlIHRoZSBjb250YWluaW5nIGJsb2NrJ3MgZGlyZWN0aW9uIHJh
dGhlciB0aGFuIHRoZSBwYXJlbnQgYmxvY2sncwogICAgICAgICAgICAgLy8gcGVyIENTUyAyLjEg
cmVmZXJlbmNlIHRlc3QgYWJzcG9zLXJlcGxhY2VkLXdpZHRoLW1hcmdpbi0wMDAuCi0gICAgICAg
ICAgICBpZiAoY29udGFpbmVyRGlyZWN0aW9uID09IExUUikgeworICAgICAgICAgICAgaWYgKGNv
bnRhaW5lckRpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpIHsKICAgICAgICAgICAgICAg
ICBtYXJnaW5Mb2dpY2FsTGVmdEFsaWFzID0gMDsKICAgICAgICAgICAgICAgICBtYXJnaW5Mb2dp
Y2FsUmlnaHRBbGlhcyA9IGRpZmZlcmVuY2U7IC8vIHdpbGwgYmUgbmVnYXRpdmUKICAgICAgICAg
ICAgIH0gZWxzZSB7CkBAIC00MTQzLDcgKzQxNDMsNyBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0
ZVBvc2l0aW9uZWRMb2dpY2FsCiAgICAgICAgIGxvZ2ljYWxSaWdodFZhbHVlID0gdmFsdWVGb3JM
ZW5ndGgobG9naWNhbFJpZ2h0LCBjb250YWluZXJMb2dpY2FsV2lkdGgpOwogICAgICAgICBsb2dp
Y2FsTGVmdFZhbHVlID0gdmFsdWVGb3JMZW5ndGgobG9naWNhbExlZnQsIGNvbnRhaW5lckxvZ2lj
YWxXaWR0aCk7CiAgICAgICAgIC8vIElmIHRoZSBjb250YWluaW5nIGJsb2NrIGlzIHJpZ2h0LXRv
LWxlZnQsIHRoZW4gcHVzaCB0aGUgbGVmdCBwb3NpdGlvbiBhcyBmYXIgdG8gdGhlIHJpZ2h0IGFz
IHBvc3NpYmxlCi0gICAgICAgIGlmIChjb250YWluZXJEaXJlY3Rpb24gPT0gUlRMKSB7CisgICAg
ICAgIGlmIChjb250YWluZXJEaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6UlRMKSB7CiAgICAg
ICAgICAgICBpbnQgdG90YWxMb2dpY2FsV2lkdGggPSBjb21wdXRlZFZhbHVlcy5tX2V4dGVudCAr
IGxvZ2ljYWxMZWZ0VmFsdWUgKyBsb2dpY2FsUmlnaHRWYWx1ZSArICBtYXJnaW5Mb2dpY2FsTGVm
dEFsaWFzICsgbWFyZ2luTG9naWNhbFJpZ2h0QWxpYXM7CiAgICAgICAgICAgICBsb2dpY2FsTGVm
dFZhbHVlID0gY29udGFpbmVyTG9naWNhbFdpZHRoIC0gKHRvdGFsTG9naWNhbFdpZHRoIC0gbG9n
aWNhbExlZnRWYWx1ZSk7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCShyZXZpc2lv
biAyMzQ2MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZs
ZXhpYmxlQm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTc2LDcgKzk3Niw3IEBAIHZvaWQgUmVu
ZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjphcHBseUwKICAgICAgICAgY2hpbGQtPmxheW91dElm
TmVlZGVkKCk7CiAKICAgICAgICAgLy8gRklYTUU6IEZvciBub3cgZG9uJ3Qgc3VwcG9ydCBSVEwu
Ci0gICAgICAgIGlmIChzdHlsZSgpLmRpcmVjdGlvbigpICE9IExUUikKKyAgICAgICAgaWYgKHN0
eWxlKCkuZGlyZWN0aW9uKCkgIT0gVGV4dERpcmVjdGlvbjo6TFRSKQogICAgICAgICAgICAgY29u
dGludWU7CiAKICAgICAgICAgLy8gR2V0IHRoZSBsYXN0IGxpbmUKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGcmFnbWVudGVkRmxvdy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50ZWRGbG93LmNwcAkocmV2aXNpb24g
MjM0NjE4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50ZWRGbG93
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY4LDcgKzE2OCw3IEBAIHZvaWQgUmVuZGVyRnJhZ21l
bnRlZEZsb3c6OnVwZGF0ZUxvZ2ljYWwKICAgICAvLyBJZiB0aGUgZnJhZ21lbnRzIGhhdmUgbm9u
LXVuaWZvcm0gbG9naWNhbCB3aWR0aHMsIHRoZW4gaW5zZXJ0IGluc2V0IGluZm9ybWF0aW9uIGZv
ciB0aGUgUmVuZGVyRnJhZ21lbnRlZEZsb3cuCiAgICAgZm9yIChhdXRvJiBmcmFnbWVudCA6IG1f
ZnJhZ21lbnRMaXN0KSB7CiAgICAgICAgIExheW91dFVuaXQgZnJhZ21lbnRMb2dpY2FsV2lkdGgg
PSBmcmFnbWVudC0+cGFnZUxvZ2ljYWxXaWR0aCgpOwotICAgICAgICBMYXlvdXRVbml0IGxvZ2lj
YWxMZWZ0ID0gc3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBMVFIgPyBMYXlvdXRVbml0KCkgOiBsb2dp
Y2FsV2lkdGggLSBmcmFnbWVudExvZ2ljYWxXaWR0aDsKKyAgICAgICAgTGF5b3V0VW5pdCBsb2dp
Y2FsTGVmdCA9IHN0eWxlKCkuZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gTGF5
b3V0VW5pdCgpIDogbG9naWNhbFdpZHRoIC0gZnJhZ21lbnRMb2dpY2FsV2lkdGg7CiAgICAgICAg
IGZyYWdtZW50LT5zZXRSZW5kZXJCb3hGcmFnbWVudEluZm8odGhpcywgbG9naWNhbExlZnQsIGZy
YWdtZW50TG9naWNhbFdpZHRoLCBmYWxzZSk7CiAgICAgfQogfQpAQCAtNzg3LDcgKzc4Nyw3IEBA
IHZvaWQgUmVuZGVyRnJhZ21lbnRlZEZsb3c6OnVwZGF0ZUZyYWdtZW4KICAgICAgICAgTGF5b3V0
VW5pdCBmcmFnbWVudExvZ2ljYWxXaWR0aCA9IGZyYWdtZW50LT5wYWdlTG9naWNhbFdpZHRoKCk7
CiAgICAgICAgIExheW91dFVuaXQgZnJhZ21lbnRMb2dpY2FsSGVpZ2h0ID0gc3RkOjptaW48TGF5
b3V0VW5pdD4oUmVuZGVyRnJhZ21lbnRlZEZsb3c6Om1heExvZ2ljYWxIZWlnaHQoKSAtIGxvZ2lj
YWxIZWlnaHQsIGZyYWdtZW50LT5sb2dpY2FsSGVpZ2h0T2ZBbGxGcmFnbWVudGVkRmxvd0NvbnRl
bnQoKSk7CiAKLSAgICAgICAgTGF5b3V0UmVjdCBmcmFnbWVudFJlY3Qoc3R5bGUoKS5kaXJlY3Rp
b24oKSA9PSBMVFIgPyBMYXlvdXRVbml0KCkgOiBsb2dpY2FsV2lkdGgoKSAtIGZyYWdtZW50TG9n
aWNhbFdpZHRoLCBsb2dpY2FsSGVpZ2h0LCBmcmFnbWVudExvZ2ljYWxXaWR0aCwgZnJhZ21lbnRM
b2dpY2FsSGVpZ2h0KTsKKyAgICAgICAgTGF5b3V0UmVjdCBmcmFnbWVudFJlY3Qoc3R5bGUoKS5k
aXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBMYXlvdXRVbml0KCkgOiBsb2dpY2Fs
V2lkdGgoKSAtIGZyYWdtZW50TG9naWNhbFdpZHRoLCBsb2dpY2FsSGVpZ2h0LCBmcmFnbWVudExv
Z2ljYWxXaWR0aCwgZnJhZ21lbnRMb2dpY2FsSGVpZ2h0KTsKIAogICAgICAgICBmcmFnbWVudC0+
c2V0RnJhZ21lbnRlZEZsb3dQb3J0aW9uUmVjdChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8g
ZnJhZ21lbnRSZWN0IDogZnJhZ21lbnRSZWN0LnRyYW5zcG9zZWRSZWN0KCkpOwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3Qu
Y3BwCShyZXZpc2lvbiAyMzQ2MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NSw3ICsyNDUsNyBAQCBi
b29sIFJlbmRlckxheWVyTW9kZWxPYmplY3Q6OnNob3VsZFBsYWNlCiAgICAgY2FzZSBVc2VySW50
ZXJmYWNlRGlyZWN0aW9uUG9saWN5OjpDb250ZW50OgogICAgICAgICByZXR1cm4gc3R5bGUoKS5z
aG91bGRQbGFjZUJsb2NrRGlyZWN0aW9uU2Nyb2xsYmFyT25MZWZ0KCk7CiAgICAgY2FzZSBVc2Vy
SW50ZXJmYWNlRGlyZWN0aW9uUG9saWN5OjpTeXN0ZW06Ci0gICAgICAgIHJldHVybiBzZXR0aW5n
cygpLnN5c3RlbUxheW91dERpcmVjdGlvbigpID09IFJUTDsKKyAgICAgICAgcmV0dXJuIHNldHRp
bmdzKCkuc3lzdGVtTGF5b3V0RGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6UlRMOwogICAg
IH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gc3R5bGUoKS5zaG91bGRQ
bGFjZUJsb2NrRGlyZWN0aW9uU2Nyb2xsYmFyT25MZWZ0KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTWFycXVlZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck1hcnF1ZWUuY3BwCShyZXZpc2lvbiAyMzQ2MTgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWFycXVlZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEwNCw5ICsxMDQsOSBAQCBNYXJxdWVlRGlyZWN0aW9uIFJlbmRlck1hcnF1ZWU6OmRpcmVjdGlv
CiAgICAgaWYgKHJlc3VsdCA9PSBNYXJxdWVlRGlyZWN0aW9uOjpBdXRvKQogICAgICAgICByZXN1
bHQgPSBNYXJxdWVlRGlyZWN0aW9uOjpCYWNrd2FyZDsKICAgICBpZiAocmVzdWx0ID09IE1hcnF1
ZWVEaXJlY3Rpb246OkZvcndhcmQpCi0gICAgICAgIHJlc3VsdCA9IChkaXIgPT0gTFRSKSA/IE1h
cnF1ZWVEaXJlY3Rpb246OlJpZ2h0IDogTWFycXVlZURpcmVjdGlvbjo6TGVmdDsKKyAgICAgICAg
cmVzdWx0ID0gKGRpciA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpID8gTWFycXVlZURpcmVjdGlvbjo6
UmlnaHQgOiBNYXJxdWVlRGlyZWN0aW9uOjpMZWZ0OwogICAgIGlmIChyZXN1bHQgPT0gTWFycXVl
ZURpcmVjdGlvbjo6QmFja3dhcmQpCi0gICAgICAgIHJlc3VsdCA9IChkaXIgPT0gTFRSKSA/IE1h
cnF1ZWVEaXJlY3Rpb246OkxlZnQgOiBNYXJxdWVlRGlyZWN0aW9uOjpSaWdodDsKKyAgICAgICAg
cmVzdWx0ID0gKGRpciA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpID8gTWFycXVlZURpcmVjdGlvbjo6
TGVmdCA6IE1hcnF1ZWVEaXJlY3Rpb246OlJpZ2h0OwogICAgIAogICAgIC8vIE5vdyB3ZSBoYXZl
IHRoZSByZWFsIGRpcmVjdGlvbi4gIE5leHQgd2UgY2hlY2sgdG8gc2VlIGlmIHRoZSBpbmNyZW1l
bnQgaXMgbmVnYXRpdmUuCiAgICAgLy8gSWYgc28sIHRoZW4gd2UgcmV2ZXJzZSB0aGUgZGlyZWN0
aW9uLgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3Bw
CShyZXZpc2lvbiAyMzQ2MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVu
dUxpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsMTUgKzEyOCwxNSBAQCB2b2lkIFJlbmRl
ck1lbnVMaXN0OjphZGp1c3RJbm5lclN0eWxlKCkKICAgICAgICAgLy8gSXRlbXMgaW4gdGhlIHBv
cHVwIHdpbGwgbm90IHJlc3BlY3QgdGhlIENTUyB0ZXh0LWFsaWduIGFuZCBkaXJlY3Rpb24gcHJv
cGVydGllcywKICAgICAgICAgLy8gc28gd2UgbXVzdCBhZGp1c3Qgb3VyIG93biBzdHlsZSB0byBt
YXRjaC4KICAgICAgICAgaW5uZXJTdHlsZS5zZXRUZXh0QWxpZ24oVGV4dEFsaWduTW9kZTo6TGVm
dCk7Ci0gICAgICAgIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gKG1fYnV0dG9uVGV4dCAmJiBt
X2J1dHRvblRleHQtPnRleHQoKS5kZWZhdWx0V3JpdGluZ0RpcmVjdGlvbigpID09IFVfUklHSFRf
VE9fTEVGVCkgPyBSVEwgOiBMVFI7CisgICAgICAgIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0g
KG1fYnV0dG9uVGV4dCAmJiBtX2J1dHRvblRleHQtPnRleHQoKS5kZWZhdWx0V3JpdGluZ0RpcmVj
dGlvbigpID09IFVfUklHSFRfVE9fTEVGVCkgPyBUZXh0RGlyZWN0aW9uOjpSVEwgOiBUZXh0RGly
ZWN0aW9uOjpMVFI7CiAgICAgICAgIGlubmVyU3R5bGUuc2V0RGlyZWN0aW9uKGRpcmVjdGlvbik7
CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIH0gZWxzZSBpZiAoZG9jdW1lbnQoKS5wYWdlKCktPmNo
cm9tZSgpLnNlbGVjdEl0ZW1BbGlnbm1lbnRGb2xsb3dzTWVudVdyaXRpbmdEaXJlY3Rpb24oKSkg
ewotICAgICAgICBpbm5lclN0eWxlLnNldFRleHRBbGlnbihzdHlsZSgpLmRpcmVjdGlvbigpID09
IExUUiA/IFRleHRBbGlnbk1vZGU6OkxlZnQgOiBUZXh0QWxpZ25Nb2RlOjpSaWdodCk7CisgICAg
ICAgIGlubmVyU3R5bGUuc2V0VGV4dEFsaWduKHN0eWxlKCkuZGlyZWN0aW9uKCkgPT0gVGV4dERp
cmVjdGlvbjo6TFRSID8gVGV4dEFsaWduTW9kZTo6TGVmdCA6IFRleHRBbGlnbk1vZGU6OlJpZ2h0
KTsKICAgICAgICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb247CiAgICAgICAgIEVVbmljb2RlQmlk
aSB1bmljb2RlQmlkaTsKICAgICAgICAgaWYgKG11bHRpcGxlKCkgJiYgc2VsZWN0ZWRPcHRpb25D
b3VudCgqdGhpcykgIT0gMSkgewotICAgICAgICAgICAgZGlyZWN0aW9uID0gKG1fYnV0dG9uVGV4
dCAmJiBtX2J1dHRvblRleHQtPnRleHQoKS5kZWZhdWx0V3JpdGluZ0RpcmVjdGlvbigpID09IFVf
UklHSFRfVE9fTEVGVCkgPyBSVEwgOiBMVFI7CisgICAgICAgICAgICBkaXJlY3Rpb24gPSAobV9i
dXR0b25UZXh0ICYmIG1fYnV0dG9uVGV4dC0+dGV4dCgpLmRlZmF1bHRXcml0aW5nRGlyZWN0aW9u
KCkgPT0gVV9SSUdIVF9UT19MRUZUKSA/IFRleHREaXJlY3Rpb246OlJUTCA6IFRleHREaXJlY3Rp
b246OkxUUjsKICAgICAgICAgICAgIHVuaWNvZGVCaWRpID0gVUJOb3JtYWw7CiAgICAgICAgIH0g
ZWxzZSBpZiAobV9vcHRpb25TdHlsZSkgewogICAgICAgICAgICAgZGlyZWN0aW9uID0gbV9vcHRp
b25TdHlsZS0+ZGlyZWN0aW9uKCk7CkBAIC01NzksNyArNTc5LDcgQEAgY29uc3QgaW50IGVuZE9m
TGluZVBhZGRpbmcgPSAyOwogCiBMYXlvdXRVbml0IFJlbmRlck1lbnVMaXN0OjpjbGllbnRQYWRk
aW5nTGVmdCgpIGNvbnN0CiB7Ci0gICAgaWYgKChzdHlsZSgpLmFwcGVhcmFuY2UoKSA9PSBNZW51
bGlzdFBhcnQgfHwgc3R5bGUoKS5hcHBlYXJhbmNlKCkgPT0gTWVudWxpc3RCdXR0b25QYXJ0KSAm
JiBzdHlsZSgpLmRpcmVjdGlvbigpID09IFJUTCkgeworICAgIGlmICgoc3R5bGUoKS5hcHBlYXJh
bmNlKCkgPT0gTWVudWxpc3RQYXJ0IHx8IHN0eWxlKCkuYXBwZWFyYW5jZSgpID09IE1lbnVsaXN0
QnV0dG9uUGFydCkgJiYgc3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpSVEwp
IHsKICAgICAgICAgLy8gRm9yIHRoZXNlIGFwcGVhcmFuY2UgdmFsdWVzLCB0aGUgdGhlbWUgYXBw
bGllcyBwYWRkaW5nIHRvIGxlYXZlIHJvb20gZm9yIHRoZQogICAgICAgICAvLyBkcm9wLWRvd24g
YnV0dG9uLiBCdXQgbGVhdmluZyByb29tIGZvciB0aGUgYnV0dG9uIGluc2lkZSB0aGUgcG9wdXAg
bWVudSBpdHNlbGYKICAgICAgICAgLy8gbG9va3Mgc3RyYW5nZSwgc28gd2UgcmV0dXJuIGEgc21h
bGwgZGVmYXVsdCBwYWRkaW5nIHRvIGF2b2lkIGhhdmluZyBhIGxhcmdlIGVtcHR5CkBAIC01OTMs
NyArNTkzLDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJNZW51TGlzdDo6Y2xpZW50UGFkZGluZwogCiBM
YXlvdXRVbml0IFJlbmRlck1lbnVMaXN0OjpjbGllbnRQYWRkaW5nUmlnaHQoKSBjb25zdAogewot
ICAgIGlmICgoc3R5bGUoKS5hcHBlYXJhbmNlKCkgPT0gTWVudWxpc3RQYXJ0IHx8IHN0eWxlKCku
YXBwZWFyYW5jZSgpID09IE1lbnVsaXN0QnV0dG9uUGFydCkgJiYgc3R5bGUoKS5kaXJlY3Rpb24o
KSA9PSBMVFIpCisgICAgaWYgKChzdHlsZSgpLmFwcGVhcmFuY2UoKSA9PSBNZW51bGlzdFBhcnQg
fHwgc3R5bGUoKS5hcHBlYXJhbmNlKCkgPT0gTWVudWxpc3RCdXR0b25QYXJ0KSAmJiBzdHlsZSgp
LmRpcmVjdGlvbigpID09IFRleHREaXJlY3Rpb246OkxUUikKICAgICAgICAgcmV0dXJuIGVuZE9m
TGluZVBhZGRpbmc7CiAKICAgICByZXR1cm4gcGFkZGluZ1JpZ2h0KCkgKyBtX2lubmVyQmxvY2st
PnBhZGRpbmdSaWdodCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVHdGsuY3BwCShyZXZpc2lvbiAyMzQ2MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjAsMTAgKzM2MCwxMCBA
QCBzdGF0aWMgR3RrU3RhdGVGbGFncyB0aGVtZVBhcnRTdGF0ZUZsYWdzCiB7CiAgICAgdW5zaWdu
ZWQgc3RhdGVGbGFncyA9IDA7CiAgICAgc3dpdGNoIChyZW5kZXJPYmplY3Quc3R5bGUoKS5kaXJl
Y3Rpb24oKSkgewotICAgIGNhc2UgUlRMOgorICAgIGNhc2UgVGV4dERpcmVjdGlvbjo6UlRMOgog
ICAgICAgICBzdGF0ZUZsYWdzIHw9IEdUS19TVEFURV9GTEFHX0RJUl9SVEw7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgTFRSOgorICAgIGNhc2UgVGV4dERpcmVjdGlvbjo6TFRSOgogICAgICAg
ICBzdGF0ZUZsYWdzIHw9IEdUS19TVEFURV9GTEFHX0RJUl9MVFI7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KQEAgLTQyMCw5ICs0MjAsOSBAQCBzdGF0aWMgR3RrU3RhdGVGbGFncyB0aGVtZVBhcnRT
dGF0ZUZsYWdzCiBzdGF0aWMgR3RrVGV4dERpcmVjdGlvbiBndGtUZXh0RGlyZWN0aW9uKFRleHRE
aXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7Ci0gICAgY2Fz
ZSBSVEw6CisgICAgY2FzZSBUZXh0RGlyZWN0aW9uOjpSVEw6CiAgICAgICAgIHJldHVybiBHVEtf
VEVYVF9ESVJfUlRMOwotICAgIGNhc2UgTFRSOgorICAgIGNhc2UgVGV4dERpcmVjdGlvbjo6TFRS
OgogICAgICAgICByZXR1cm4gR1RLX1RFWFRfRElSX0xUUjsKICAgICBkZWZhdWx0OgogICAgICAg
ICByZXR1cm4gR1RLX1RFWFRfRElSX05PTkU7CkBAIC04MDQsOCArODA0LDggQEAgTGVuZ3RoQm94
IFJlbmRlclRoZW1lR3RrOjpwb3B1cEludGVybmFsUAogICAgIHBhZGRpbmcuYm90dG9tID0gY29t
Ym9Db250ZW50c0JveC5ib3R0b20gKyBib3hDb250ZW50c0JveC5ib3R0b20gKyBidXR0b25Db250
ZW50c0JveC5ib3R0b20gKyBidXR0b25Cb3hDb250ZW50c0JveC5ib3R0b207CiAKICAgICBhdXRv
IGFycm93U2l6ZSA9IGNvbWJvV2lkZ2V0LmFycm93KCkucHJlZmVycmVkU2l6ZSgpOwotICAgIHJl
dHVybiBMZW5ndGhCb3gocGFkZGluZy50b3AsIHBhZGRpbmcucmlnaHQgKyAoc3R5bGUuZGlyZWN0
aW9uKCkgPT0gTFRSID8gYXJyb3dTaXplLndpZHRoKCkgOiAwKSwKLSAgICAgICAgcGFkZGluZy5i
b3R0b20sIHBhZGRpbmcubGVmdCArIChzdHlsZS5kaXJlY3Rpb24oKSA9PSBSVEwgPyBhcnJvd1Np
emUud2lkdGgoKSA6IDApKTsKKyAgICByZXR1cm4gTGVuZ3RoQm94KHBhZGRpbmcudG9wLCBwYWRk
aW5nLnJpZ2h0ICsgKHN0eWxlLmRpcmVjdGlvbigpID09IFRleHREaXJlY3Rpb246OkxUUiA/IGFy
cm93U2l6ZS53aWR0aCgpIDogMCksCisgICAgICAgIHBhZGRpbmcuYm90dG9tLCBwYWRkaW5nLmxl
ZnQgKyAoc3R5bGUuZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6UlRMID8gYXJyb3dTaXpl
LndpZHRoKCkgOiAwKSk7CiB9CiAKIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50TWVudUxpc3Qo
Y29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJPYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCkBAIC04NDYsOCArODQ2LDggQEAgTGVuZ3RoQm94
IFJlbmRlclRoZW1lR3RrOjpwb3B1cEludGVybmFsUAogICAgIGd0a19zdHlsZV9jb250ZXh0X2dl
dF9zdHlsZShjb250ZXh0LmdldCgpLCAiaW50ZXJpb3ItZm9jdXMiLCAmaW50ZXJpb3JGb2N1cywg
ImZvY3VzLWxpbmUtd2lkdGgiLCAmZm9jdXNXaWR0aCwgImZvY3VzLXBhZGRpbmciLCAmZm9jdXNQ
YWQsIG51bGxwdHIpOwogICAgIGZvY3VzV2lkdGggPSBpbnRlcmlvckZvY3VzID8gZm9jdXNXaWR0
aCArIGZvY3VzUGFkIDogMDsKIAotICAgIHJldHVybiB7IGJvcmRlcldpZHRoLnRvcCArIGZvY3Vz
V2lkdGgsIGJvcmRlcldpZHRoLnJpZ2h0ICsgZm9jdXNXaWR0aCArIChzdHlsZS5kaXJlY3Rpb24o
KSA9PSBMVFIgPyBtaW5BcnJvd1NpemUgOiAwKSwKLSAgICAgICAgYm9yZGVyV2lkdGguYm90dG9t
ICsgZm9jdXNXaWR0aCwgYm9yZGVyV2lkdGgubGVmdCArIGZvY3VzV2lkdGggKyAoc3R5bGUuZGly
ZWN0aW9uKCkgPT0gUlRMID8gbWluQXJyb3dTaXplIDogMCkgfTsKKyAgICByZXR1cm4geyBib3Jk
ZXJXaWR0aC50b3AgKyBmb2N1c1dpZHRoLCBib3JkZXJXaWR0aC5yaWdodCArIGZvY3VzV2lkdGgg
KyAoc3R5bGUuZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gbWluQXJyb3dTaXpl
IDogMCksCisgICAgICAgIGJvcmRlcldpZHRoLmJvdHRvbSArIGZvY3VzV2lkdGgsIGJvcmRlcldp
ZHRoLmxlZnQgKyBmb2N1c1dpZHRoICsgKHN0eWxlLmRpcmVjdGlvbigpID09IFRleHREaXJlY3Rp
b246OlJUTCA/IG1pbkFycm93U2l6ZSA6IDApIH07CiB9CiAKIGJvb2wgUmVuZGVyVGhlbWVHdGs6
OnBhaW50TWVudUxpc3QoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJPYmplY3QsIGNvbnN0IFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBGbG9hdFJlY3QmIHIpCkBAIC0xMjk2LDcgKzEyOTYs
NyBAQCBib29sIFJlbmRlclRoZW1lR3RrOjpwYWludFNsaWRlclRyYWNrKGNvCiAgICAgfQogCiAg
ICAgaWYgKHBhcnQgPT0gU2xpZGVySG9yaXpvbnRhbFBhcnQpIHsKLSAgICAgICAgaWYgKHJlbmRl
ck9iamVjdC5zdHlsZSgpLmRpcmVjdGlvbigpID09IFJUTCkgeworICAgICAgICBpZiAocmVuZGVy
T2JqZWN0LnN0eWxlKCkuZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6UlRMKSB7CiAgICAg
ICAgICAgICBjb250ZW50c1JlY3QubW92ZSh0aHVtYkxvY2F0aW9uLngoKSwgMCk7CiAgICAgICAg
ICAgICBjb250ZW50c1JlY3Quc2V0V2lkdGgoY29udGVudHNSZWN0LndpZHRoKCkgLSB0aHVtYkxv
Y2F0aW9uLngoKSk7CiAgICAgICAgIH0gZWxzZQpAQCAtMTUyNCw3ICsxNTI0LDcgQEAgYm9vbCBS
ZW5kZXJUaGVtZUd0azo6cGFpbnRQcm9ncmVzc0JhcihjbwogI2lmIEdUS19DSEVDS19WRVJTSU9O
KDMsIDIwLCAwKQogUmVuZGVyVGhlbWU6OklubmVyU3BpbkJ1dHRvbkxheW91dCBSZW5kZXJUaGVt
ZUd0azo6aW5uZXJTcGluQnV0dG9uTGF5b3V0KGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyT2Jq
ZWN0KSBjb25zdAogewotICAgIHJldHVybiByZW5kZXJPYmplY3Quc3R5bGUoKS5kaXJlY3Rpb24o
KSA9PSBSVEwgPyBJbm5lclNwaW5CdXR0b25MYXlvdXQ6Okhvcml6b250YWxVcExlZnQgOiBJbm5l
clNwaW5CdXR0b25MYXlvdXQ6Okhvcml6b250YWxVcFJpZ2h0OworICAgIHJldHVybiByZW5kZXJP
YmplY3Quc3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpSVEwgPyBJbm5lclNw
aW5CdXR0b25MYXlvdXQ6Okhvcml6b250YWxVcExlZnQgOiBJbm5lclNwaW5CdXR0b25MYXlvdXQ6
Okhvcml6b250YWxVcFJpZ2h0OwogfQogCiB2b2lkIFJlbmRlclRoZW1lR3RrOjphZGp1c3RJbm5l
clNwaW5CdXR0b25TdHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25z
dCBFbGVtZW50KikgY29uc3QKQEAgLTE1NDYsMTIgKzE1NDYsMTIgQEAgYm9vbCBSZW5kZXJUaGVt
ZUd0azo6cGFpbnRJbm5lclNwaW5CdXR0bwogCiAgICAgSW50UmVjdCBpY29uUmVjdCA9IHJlY3Q7
CiAgICAgaWNvblJlY3Quc2V0V2lkdGgoaWNvblJlY3Qud2lkdGgoKSAvIDIpOwotICAgIGlmIChy
ZW5kZXJPYmplY3Quc3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBSVEwpCisgICAgaWYgKHJlbmRlck9i
amVjdC5zdHlsZSgpLmRpcmVjdGlvbigpID09IFRleHREaXJlY3Rpb246OlJUTCkKICAgICAgICAg
dXAucmVuZGVyKHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCktPmNyKCksIGlj
b25SZWN0KTsKICAgICBlbHNlCiAgICAgICAgIGRvd24ucmVuZGVyKHBhaW50SW5mby5jb250ZXh0
KCkucGxhdGZvcm1Db250ZXh0KCktPmNyKCksIGljb25SZWN0KTsKICAgICBpY29uUmVjdC5tb3Zl
KGljb25SZWN0LndpZHRoKCksIDApOwotICAgIGlmIChyZW5kZXJPYmplY3Quc3R5bGUoKS5kaXJl
Y3Rpb24oKSA9PSBSVEwpCisgICAgaWYgKHJlbmRlck9iamVjdC5zdHlsZSgpLmRpcmVjdGlvbigp
ID09IFRleHREaXJlY3Rpb246OlJUTCkKICAgICAgICAgZG93bi5yZW5kZXIocGFpbnRJbmZvLmNv
bnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgaWNvblJlY3QpOwogICAgIGVsc2UKICAg
ICAgICAgdXAucmVuZGVyKHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCktPmNy
KCksIGljb25SZWN0KTsKQEAgLTE5ODUsNyArMTk4NSw3IEBAIEludFJlY3QgUmVuZGVyVGhlbWVH
dGs6OmNhbGN1bGF0ZVByb2dyZXMKICAgICBjb25zdCBhdXRvJiByZW5kZXJQcm9ncmVzcyA9IGRv
d25jYXN0PFJlbmRlclByb2dyZXNzPihyZW5kZXJPYmplY3QpOwogICAgIGlmIChyZW5kZXJQcm9n
cmVzcy5pc0RldGVybWluYXRlKCkpIHsKICAgICAgICAgaW50IHByb2dyZXNzV2lkdGggPSBwcm9n
cmVzc1JlY3Qud2lkdGgoKSAqIHJlbmRlclByb2dyZXNzLnBvc2l0aW9uKCk7Ci0gICAgICAgIGlm
IChyZW5kZXJPYmplY3Quc3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBSVEwpCisgICAgICAgIGlmIChy
ZW5kZXJPYmplY3Quc3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpSVEwpCiAg
ICAgICAgICAgICBwcm9ncmVzc1JlY3Quc2V0WChwcm9ncmVzc1JlY3QueCgpICsgcHJvZ3Jlc3NS
ZWN0LndpZHRoKCkgLSBwcm9ncmVzc1dpZHRoKTsKICAgICAgICAgcHJvZ3Jlc3NSZWN0LnNldFdp
ZHRoKHByb2dyZXNzV2lkdGgpOwogICAgICAgICByZXR1cm4gcHJvZ3Jlc3NSZWN0OwpJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQkocmV2aXNpb24gMjM0
NjE4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NDcsNyArNTQ3LDcgQEAgY29uc3QgZmxvYXQgTWVudUxpc3RCdXR0b25Q
YWRkaW5nQWZ0ZXIgPQogTGVuZ3RoQm94IFJlbmRlclRoZW1lSU9TOjpwb3B1cEludGVybmFsUGFk
ZGluZ0JveChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpIGNvbnN0CiB7CiAgICAgaWYgKHN0eWxl
LmFwcGVhcmFuY2UoKSA9PSBNZW51bGlzdEJ1dHRvblBhcnQpIHsKLSAgICAgICAgaWYgKHN0eWxl
LmRpcmVjdGlvbigpID09IFJUTCkKKyAgICAgICAgaWYgKHN0eWxlLmRpcmVjdGlvbigpID09IFRl
eHREaXJlY3Rpb246OlJUTCkKICAgICAgICAgICAgIHJldHVybiB7IDAsIDAsIDAsIHN0YXRpY19j
YXN0PGludD4oTWVudUxpc3RCdXR0b25QYWRkaW5nQWZ0ZXIgKyBzdHlsZS5ib3JkZXJUb3BXaWR0
aCgpKSB9OwogICAgICAgICByZXR1cm4geyAwLCBzdGF0aWNfY2FzdDxpbnQ+KE1lbnVMaXN0QnV0
dG9uUGFkZGluZ0FmdGVyICsgc3R5bGUuYm9yZGVyVG9wV2lkdGgoKSksIDAsIDAgfTsKICAgICB9
CkBAIC02NDgsNyArNjQ4LDcgQEAgdm9pZCBSZW5kZXJUaGVtZUlPUzo6YWRqdXN0TWVudUxpc3RC
dXR0bwogYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRNZW51TGlzdEJ1dHRvbkRlY29yYXRpb25z
KGNvbnN0IFJlbmRlckJveCYgYm94LCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
RmxvYXRSZWN0JiByZWN0KQogewogICAgIGF1dG8mIHN0eWxlID0gYm94LnN0eWxlKCk7Ci0gICAg
Ym9vbCBpc1JUTCA9IHN0eWxlLmRpcmVjdGlvbigpID09IFJUTDsKKyAgICBib29sIGlzUlRMID0g
c3R5bGUuZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6UlRMOwogICAgIGZsb2F0IGJvcmRl
clRvcFdpZHRoID0gc3R5bGUuYm9yZGVyVG9wV2lkdGgoKTsKICAgICBGbG9hdFJlY3QgY2xpcChy
ZWN0LngoKSArIHN0eWxlLmJvcmRlckxlZnRXaWR0aCgpLCByZWN0LnkoKSArIHN0eWxlLmJvcmRl
clRvcFdpZHRoKCksIHJlY3Qud2lkdGgoKSAtIHN0eWxlLmJvcmRlckxlZnRXaWR0aCgpIC0gc3R5
bGUuYm9yZGVyUmlnaHRXaWR0aCgpLCByZWN0LmhlaWdodCgpIC0gc3R5bGUuYm9yZGVyVG9wV2lk
dGgoKSAtIHN0eWxlLmJvcmRlckJvdHRvbVdpZHRoKCkpOwogICAgIENHQ29udGV4dFJlZiBjZ0Nv
bnRleHQgPSBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQkocmV2aXNpb24gMjM0NjE5
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDg0LDcgKzE0ODQsNyBAQCB2b2lkIFJlbmRlclRoZW1lTWFjOjpwYWludE1l
bnVMaXN0QnV0dG9uCiAKIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50TWVudUxpc3RCdXR0b25E
ZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJCb3gmIHJlbmRlcmVyLCBjb25zdCBQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIGJvb2wgaXNSVEwgPSByZW5k
ZXJlci5zdHlsZSgpLmRpcmVjdGlvbigpID09IFJUTDsKKyAgICBib29sIGlzUlRMID0gcmVuZGVy
ZXIuc3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpSVEw7CiAgICAgSW50UmVj
dCBib3VuZHMgPSBJbnRSZWN0KHJlY3QueCgpICsgcmVuZGVyZXIuc3R5bGUoKS5ib3JkZXJMZWZ0
V2lkdGgoKSwKICAgICAgICAgcmVjdC55KCkgKyByZW5kZXJlci5zdHlsZSgpLmJvcmRlclRvcFdp
ZHRoKCksCiAgICAgICAgIHJlY3Qud2lkdGgoKSAtIHJlbmRlcmVyLnN0eWxlKCkuYm9yZGVyTGVm
dFdpZHRoKCkgLSByZW5kZXJlci5zdHlsZSgpLmJvcmRlclJpZ2h0V2lkdGgoKSwKQEAgLTE1OTMs
NyArMTU5Myw3IEBAIHZvaWQgUmVuZGVyVGhlbWVNYWM6OmFkanVzdE1lbnVMaXN0U3R5bGUKIExl
bmd0aEJveCBSZW5kZXJUaGVtZU1hYzo6cG9wdXBJbnRlcm5hbFBhZGRpbmdCb3goY29uc3QgUmVu
ZGVyU3R5bGUmIHN0eWxlKSBjb25zdAogewogICAgIGlmIChzdHlsZS5hcHBlYXJhbmNlKCkgPT0g
TWVudWxpc3RQYXJ0KSB7Ci0gICAgICAgIGNvbnN0IGludCogcGFkZGluZyA9IHBvcHVwQnV0dG9u
UGFkZGluZyhjb250cm9sU2l6ZUZvckZvbnQoc3R5bGUpLCBzdHlsZS5kaXJlY3Rpb24oKSA9PSBS
VEwpOworICAgICAgICBjb25zdCBpbnQqIHBhZGRpbmcgPSBwb3B1cEJ1dHRvblBhZGRpbmcoY29u
dHJvbFNpemVGb3JGb250KHN0eWxlKSwgc3R5bGUuZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlv
bjo6UlRMKTsKICAgICAgICAgcmV0dXJuIHsgc3RhdGljX2Nhc3Q8aW50PihwYWRkaW5nW3RvcFBh
ZGRpbmddICogc3R5bGUuZWZmZWN0aXZlWm9vbSgpKSwKICAgICAgICAgICAgIHN0YXRpY19jYXN0
PGludD4ocGFkZGluZ1tyaWdodFBhZGRpbmddICogc3R5bGUuZWZmZWN0aXZlWm9vbSgpKSwKICAg
ICAgICAgICAgIHN0YXRpY19jYXN0PGludD4ocGFkZGluZ1tib3R0b21QYWRkaW5nXSAqIHN0eWxl
LmVmZmVjdGl2ZVpvb20oKSksCkBAIC0xNjA0LDcgKzE2MDQsNyBAQCBMZW5ndGhCb3ggUmVuZGVy
VGhlbWVNYWM6OnBvcHVwSW50ZXJuYWxQCiAgICAgICAgIGZsb2F0IGFycm93V2lkdGggPSBiYXNl
QXJyb3dXaWR0aCAqIChzdHlsZS5jb21wdXRlZEZvbnRQaXhlbFNpemUoKSAvIGJhc2VGb250U2l6
ZSk7CiAgICAgICAgIGZsb2F0IHJpZ2h0UGFkZGluZyA9IGNlaWxmKGFycm93V2lkdGggKyAoYXJy
b3dQYWRkaW5nQmVmb3JlICsgYXJyb3dQYWRkaW5nQWZ0ZXIgKyBwYWRkaW5nQmVmb3JlU2VwYXJh
dG9yKSAqIHN0eWxlLmVmZmVjdGl2ZVpvb20oKSk7CiAgICAgICAgIGZsb2F0IGxlZnRQYWRkaW5n
ID0gc3R5bGVkUG9wdXBQYWRkaW5nTGVmdCAqIHN0eWxlLmVmZmVjdGl2ZVpvb20oKTsKLSAgICAg
ICAgaWYgKHN0eWxlLmRpcmVjdGlvbigpID09IFJUTCkKKyAgICAgICAgaWYgKHN0eWxlLmRpcmVj
dGlvbigpID09IFRleHREaXJlY3Rpb246OlJUTCkKICAgICAgICAgICAgIHN0ZDo6c3dhcChyaWdo
dFBhZGRpbmcsIGxlZnRQYWRkaW5nKTsKICAgICAgICAgcmV0dXJuIHsgc3RhdGljX2Nhc3Q8aW50
PihzdHlsZWRQb3B1cFBhZGRpbmdUb3AgKiBzdHlsZS5lZmZlY3RpdmVab29tKCkpLAogICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8aW50PihyaWdodFBhZGRpbmcpLApAQCAtMTY1MSw3ICsxNjUxLDcg
QEAgdm9pZCBSZW5kZXJUaGVtZU1hYzo6c2V0UG9wdXBCdXR0b25DZWxsUwogICAgIC8vIFNldCB0
aGUgY29udHJvbCBzaXplIGJhc2VkIG9mZiB0aGUgcmVjdGFuZ2xlIHdlJ3JlIHBhaW50aW5nIGlu
dG8uCiAgICAgc2V0Q29udHJvbFNpemUocG9wdXBCdXR0b24sIHBvcHVwQnV0dG9uU2l6ZXMoKSwg
YnV0dG9uU2l6ZSwgby5zdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSk7CiAKLSAgICBwb3B1cEJ1dHRv
bi51c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uID0gby5zdHlsZSgpLmRpcmVjdGlvbigpID09
IExUUiA/IE5TVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbkxlZnRUb1JpZ2h0IDogTlNVc2Vy
SW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uUmlnaHRUb0xlZnQ7CisgICAgcG9wdXBCdXR0b24udXNl
ckludGVyZmFjZUxheW91dERpcmVjdGlvbiA9IG8uc3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBUZXh0
RGlyZWN0aW9uOjpMVFIgPyBOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25MZWZ0VG9SaWdo
dCA6IE5TVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvblJpZ2h0VG9MZWZ0OwogCiAgICAgLy8g
VXBkYXRlIHRoZSB2YXJpb3VzIHN0YXRlcyB3ZSByZXNwb25kIHRvLgogICAgIHVwZGF0ZUNoZWNr
ZWRTdGF0ZShwb3B1cEJ1dHRvbiwgbyk7CkBAIC0xOTMyLDcgKzE5MzIsNyBAQCBib29sIFJlbmRl
clRoZW1lTWFjOjpwYWludFNlYXJjaEZpZWxkQ2FuCiAgICAgRmxvYXRSZWN0IGxvY2FsQm91bmRz
ID0gYWRqdXN0ZWRDYW5jZWxCdXR0b25SZWN0KFtzZWFyY2ggY2FuY2VsQnV0dG9uUmVjdEZvckJv
dW5kczpOU1JlY3Qoc25hcHBlZEludFJlY3QoaW5wdXRCb3guY29udGVudEJveFJlY3QoKSkpXSk7
CiAgICAgLy8gQWRqdXN0IHBvc2l0aW9uIGJhc2VkIG9uIHRoZSBjb250ZW50IGRpcmVjdGlvbi4K
ICAgICBmbG9hdCBhZGp1c3RlZFhQb3NpdGlvbjsKLSAgICBpZiAoYm94LnN0eWxlKCkuZGlyZWN0
aW9uKCkgPT0gUlRMKQorICAgIGlmIChib3guc3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBUZXh0RGly
ZWN0aW9uOjpSVEwpCiAgICAgICAgIGFkanVzdGVkWFBvc2l0aW9uID0gaW5wdXRCb3guY29udGVu
dEJveFJlY3QoKS54KCk7CiAgICAgZWxzZQogICAgICAgICBhZGp1c3RlZFhQb3NpdGlvbiA9IGlu
cHV0Qm94LmNvbnRlbnRCb3hSZWN0KCkubWF4WCgpIC0gbG9jYWxCb3VuZHMuc2l6ZSgpLndpZHRo
KCk7CkBAIC0yMDY4LDcgKzIwNjgsNyBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNlYXJj
aEZpZWxkUmVzCiAgICAgRmxvYXRSZWN0IGxvY2FsQm91bmRzID0gYWRqdXN0ZWRSZXN1bHRCdXR0
b25SZWN0KFtzZWFyY2ggc2VhcmNoQnV0dG9uUmVjdEZvckJvdW5kczpOU1JlY3Qoc25hcHBlZElu
dFJlY3QoaW5wdXRCb3guY29udGVudEJveFJlY3QoKSkpXSk7CiAgICAgLy8gQWRqdXN0IHBvc2l0
aW9uIGJhc2VkIG9uIHRoZSBjb250ZW50IGRpcmVjdGlvbi4KICAgICBmbG9hdCBhZGp1c3RlZFhQ
b3NpdGlvbjsKLSAgICBpZiAoYm94LnN0eWxlKCkuZGlyZWN0aW9uKCkgPT0gUlRMKQorICAgIGlm
IChib3guc3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpSVEwpCiAgICAgICAg
IGFkanVzdGVkWFBvc2l0aW9uID0gaW5wdXRCb3guY29udGVudEJveFJlY3QoKS5tYXhYKCkgLSBs
b2NhbEJvdW5kcy5zaXplKCkud2lkdGgoKTsKICAgICBlbHNlCiAgICAgICAgIGFkanVzdGVkWFBv
c2l0aW9uID0gaW5wdXRCb3guY29udGVudEJveFJlY3QoKS54KCk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAJKHJldmlzaW9uIDIzNDYxOCkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTc1OCw5ICs3NTgsOSBAQCB2b2lkIFJlbmRlclRoZW1lV2luOjphZGp1c3RNZW51TGlz
dEJ1dHRvCiB7CiAgICAgLy8gVGhlc2UgYXJlIHRoZSBwYWRkaW5ncyBuZWVkZWQgdG8gcGxhY2Ug
dGhlIHRleHQgY29ycmVjdGx5IGluIHRoZSA8c2VsZWN0PiBib3gKICAgICBjb25zdCBpbnQgZHJv
cERvd25Cb3hQYWRkaW5nVG9wICAgID0gMjsKLSAgICBjb25zdCBpbnQgZHJvcERvd25Cb3hQYWRk
aW5nUmlnaHQgID0gc3R5bGUuZGlyZWN0aW9uKCkgPT0gTFRSID8gNCArIGRyb3BEb3duQnV0dG9u
V2lkdGggOiA0OworICAgIGNvbnN0IGludCBkcm9wRG93bkJveFBhZGRpbmdSaWdodCAgPSBzdHls
ZS5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyA0ICsgZHJvcERvd25CdXR0b25X
aWR0aCA6IDQ7CiAgICAgY29uc3QgaW50IGRyb3BEb3duQm94UGFkZGluZ0JvdHRvbSA9IDI7Ci0g
ICAgY29uc3QgaW50IGRyb3BEb3duQm94UGFkZGluZ0xlZnQgICA9IHN0eWxlLmRpcmVjdGlvbigp
ID09IExUUiA/IDQgOiA0ICsgZHJvcERvd25CdXR0b25XaWR0aDsKKyAgICBjb25zdCBpbnQgZHJv
cERvd25Cb3hQYWRkaW5nTGVmdCAgID0gc3R5bGUuZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlv
bjo6TFRSID8gNCA6IDQgKyBkcm9wRG93bkJ1dHRvbldpZHRoOwogICAgIC8vIFRoZSA8c2VsZWN0
PiBib3ggbXVzdCBiZSBhdCBsZWFzdCAxMnB4IGhpZ2ggZm9yIHRoZSBidXR0b24gdG8gcmVuZGVy
IG5pY2VseSBvbiBXaW5kb3dzCiAgICAgY29uc3QgaW50IGRyb3BEb3duQm94TWluSGVpZ2h0ID0g
MTI7CiAgICAgCkBAIC03OTQsNyArNzk0LDcgQEAgYm9vbCBSZW5kZXJUaGVtZVdpbjo6cGFpbnRN
ZW51TGlzdEJ1dHRvbgogICAgIC8vIGxlYXZpbmcgc3BhY2UgZm9yIHRoZSB0ZXh0IGZpZWxkJ3Mg
MXB4IGJvcmRlcgogICAgIEludFJlY3QgYnV0dG9uUmVjdChyZWN0KTsKICAgICBidXR0b25SZWN0
LmluZmxhdGUoLWJvcmRlclRoaWNrbmVzcyk7Ci0gICAgaWYgKHJlbmRlcmVyLnN0eWxlKCkuZGly
ZWN0aW9uKCkgPT0gTFRSKQorICAgIGlmIChyZW5kZXJlci5zdHlsZSgpLmRpcmVjdGlvbigpID09
IFRleHREaXJlY3Rpb246OkxUUikKICAgICAgICAgYnV0dG9uUmVjdC5zZXRYKGJ1dHRvblJlY3Qu
bWF4WCgpIC0gZHJvcERvd25CdXR0b25XaWR0aCk7CiAgICAgYnV0dG9uUmVjdC5zZXRXaWR0aChk
cm9wRG93bkJ1dHRvbldpZHRoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAJKHJldmlzaW9uIDIzNDYxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04OSw3ICs4OSw3IEBAIExheW91dFVuaXQgUmVuZGVyTWF0aE1M
QmxvY2s6Om1hdGhBeGlzSGUKIAogTGF5b3V0VW5pdCBSZW5kZXJNYXRoTUxCbG9jazo6bWlycm9y
SWZOZWVkZWQoTGF5b3V0VW5pdCBob3Jpem9udGFsT2Zmc2V0LCBMYXlvdXRVbml0IGJveFdpZHRo
KSBjb25zdAogewotICAgIGlmIChzdHlsZSgpLmRpcmVjdGlvbigpID09IFJUTCkKKyAgICBpZiAo
c3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpSVEwpCiAgICAgICAgIHJldHVy
biBsb2dpY2FsV2lkdGgoKSAtIGJveFdpZHRoIC0gaG9yaXpvbnRhbE9mZnNldDsKIAogICAgIHJl
dHVybiBob3Jpem9udGFsT2Zmc2V0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAJKHJldmlzaW9uIDIz
NDYxOCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3Bl
cmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzgsNyArMjM4LDcgQEAgdm9pZCBSZW5kZXJN
YXRoTUxPcGVyYXRvcjo6bGF5b3V0QmxvY2soYgogICAgICAgICBzZXRMb2dpY2FsV2lkdGgod2lk
dGgpOwogCiAgICAgICAgIC8vIFdlIHRoZW4gbW92ZSB0aGUgY2hpbGRyZW4gdG8gdGFrZSBzcGFj
aW5nIGludG8gYWNjb3VudC4KLSAgICAgICAgTGF5b3V0UG9pbnQgaG9yaXpvbnRhbFNoaWZ0KHN0
eWxlKCkuZGlyZWN0aW9uKCkgPT0gTFRSID8gbGVhZGluZ1NwYWNlVmFsdWUgOiAtbGVhZGluZ1Nw
YWNlVmFsdWUsIDApOworICAgICAgICBMYXlvdXRQb2ludCBob3Jpem9udGFsU2hpZnQoc3R5bGUo
KS5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBsZWFkaW5nU3BhY2VWYWx1ZSA6
IC1sZWFkaW5nU3BhY2VWYWx1ZSwgMCk7CiAgICAgICAgIGZvciAoYXV0byogY2hpbGQgPSBmaXJz
dENoaWxkQm94KCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZ0JveCgpKQogICAg
ICAgICAgICAgY2hpbGQtPnNldExvY2F0aW9uKGNoaWxkLT5sb2NhdGlvbigpICsgaG9yaXpvbnRh
bFNoaWZ0KTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5jcHAJKHJldmlzaW9uIDIzNDYxOCkKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Miw3ICsx
NTIsNyBAQCBSZW5kZXJTdHlsZTo6UmVuZGVyU3R5bGUoQ3JlYXRlRGVmYXVsdFN0CiAjaWYgRU5B
QkxFKENVUlNPUl9WSVNJQklMSVRZKQogICAgIG1faW5oZXJpdGVkRmxhZ3MuY3Vyc29yVmlzaWJp
bGl0eSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbml0aWFsQ3Vyc29yVmlzaWJpbGl0eSgpKTsK
ICNlbmRpZgotICAgIG1faW5oZXJpdGVkRmxhZ3MuZGlyZWN0aW9uID0gaW5pdGlhbERpcmVjdGlv
bigpOworICAgIG1faW5oZXJpdGVkRmxhZ3MuZGlyZWN0aW9uID0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGluaXRpYWxEaXJlY3Rpb24oKSk7CiAgICAgbV9pbmhlcml0ZWRGbGFncy53aGl0ZVNwYWNl
ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluaXRpYWxXaGl0ZVNwYWNlKCkpOwogICAgIG1faW5o
ZXJpdGVkRmxhZ3MuYm9yZGVyQ29sbGFwc2UgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlh
bEJvcmRlckNvbGxhcHNlKCkpOwogICAgIG1faW5oZXJpdGVkRmxhZ3MucnRsT3JkZXJpbmcgPSBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlhbFJUTE9yZGVyaW5nKCkpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgJKHJldmlzaW9uIDIzNDYx
OCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zODgsNyArMzg4LDcgQEAgcHVibGljOgogICAgIFRleHRab29tIHRleHRa
b29tKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dFpvb20+KG1fcmFyZUluaGVyaXRl
ZERhdGEtPnRleHRab29tKTsgfQogCiAgICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24oKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0RGlyZWN0aW9uPihtX2luaGVyaXRlZEZsYWdzLmRp
cmVjdGlvbik7IH0KLSAgICBib29sIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSBjb25zdCB7IHJl
dHVybiBkaXJlY3Rpb24oKSA9PSBMVFI7IH0KKyAgICBib29sIGlzTGVmdFRvUmlnaHREaXJlY3Rp
b24oKSBjb25zdCB7IHJldHVybiBkaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFI7IH0K
ICAgICBib29sIGhhc0V4cGxpY2l0bHlTZXREaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX25v
bkluaGVyaXRlZEZsYWdzLmhhc0V4cGxpY2l0bHlTZXREaXJlY3Rpb247IH0KIAogICAgIGNvbnN0
IExlbmd0aCYgc3BlY2lmaWVkTGluZUhlaWdodCgpIGNvbnN0OwpAQCAtMTQ0Miw3ICsxNDQyLDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBDYXB0aW9uU2lkZSBpbml0aWFsQ2FwdGlvblNpZGUoKSB7
IHJldHVybiBDYXB0aW9uU2lkZTo6VG9wOyB9CiAgICAgc3RhdGljIENvbHVtbkF4aXMgaW5pdGlh
bENvbHVtbkF4aXMoKSB7IHJldHVybiBDb2x1bW5BeGlzOjpBdXRvOyB9CiAgICAgc3RhdGljIENv
bHVtblByb2dyZXNzaW9uIGluaXRpYWxDb2x1bW5Qcm9ncmVzc2lvbigpIHsgcmV0dXJuIENvbHVt
blByb2dyZXNzaW9uOjpOb3JtYWw7IH0KLSAgICBzdGF0aWMgVGV4dERpcmVjdGlvbiBpbml0aWFs
RGlyZWN0aW9uKCkgeyByZXR1cm4gTFRSOyB9CisgICAgc3RhdGljIFRleHREaXJlY3Rpb24gaW5p
dGlhbERpcmVjdGlvbigpIHsgcmV0dXJuIFRleHREaXJlY3Rpb246OkxUUjsgfQogICAgIHN0YXRp
YyBXcml0aW5nTW9kZSBpbml0aWFsV3JpdGluZ01vZGUoKSB7IHJldHVybiBUb3BUb0JvdHRvbVdy
aXRpbmdNb2RlOyB9CiAgICAgc3RhdGljIFRleHRDb21iaW5lIGluaXRpYWxUZXh0Q29tYmluZSgp
IHsgcmV0dXJuIFRleHRDb21iaW5lOjpOb25lOyB9CiAgICAgc3RhdGljIFRleHRPcmllbnRhdGlv
biBpbml0aWFsVGV4dE9yaWVudGF0aW9uKCkgeyByZXR1cm4gVGV4dE9yaWVudGF0aW9uOjpNaXhl
ZDsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3Bw
CShyZXZpc2lvbiAyMzQ2MTgpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0
dGluZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MjAsOSArODIwLDkgQEAgRXhjZXB0aW9uT3I8
U3RyaW5nPiBJbnRlcm5hbFNldHRpbmdzOjpzeQogICAgIGlmICghbV9wYWdlKQogICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yIH07CiAgICAgc3dpdGNoIChzZXR0
aW5ncygpLnN5c3RlbUxheW91dERpcmVjdGlvbigpKSB7Ci0gICAgY2FzZSBMVFI6CisgICAgY2Fz
ZSBUZXh0RGlyZWN0aW9uOjpMVFI6CiAgICAgICAgIHJldHVybiBTdHJpbmcgeyAiTFRSIl9zIH07
Ci0gICAgY2FzZSBSVEw6CisgICAgY2FzZSBUZXh0RGlyZWN0aW9uOjpSVEw6CiAgICAgICAgIHJl
dHVybiBTdHJpbmcgeyAiUlRMIl9zIH07CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpAQCAtODM0LDExICs4MzQsMTEgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSW50ZXJuYWxTZXR0aW5n
czo6c2V0UwogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52
YWxpZEFjY2Vzc0Vycm9yIH07CiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KGRpcmVjdGlvbiwgImx0ciIpKSB7Ci0gICAgICAgIHNldHRpbmdzKCkuc2V0U3lzdGVtTGF5b3V0
RGlyZWN0aW9uKExUUik7CisgICAgICAgIHNldHRpbmdzKCkuc2V0U3lzdGVtTGF5b3V0RGlyZWN0
aW9uKFRleHREaXJlY3Rpb246OkxUUik7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogICAg
IGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShkaXJlY3Rpb24sICJydGwiKSkgewot
ICAgICAgICBzZXR0aW5ncygpLnNldFN5c3RlbUxheW91dERpcmVjdGlvbihSVEwpOworICAgICAg
ICBzZXR0aW5ncygpLnNldFN5c3RlbUxheW91dERpcmVjdGlvbihUZXh0RGlyZWN0aW9uOjpSVEwp
OwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52
YWxpZEFjY2Vzc0Vycm9yIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgJKHJl
dmlzaW9uIDIzNDYxOCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTYxNCw3ICs2MTQsNyBAQCBwdWJsaWM6CiAKICAgICBSZWZQdHI8R0NP
YnNlcnZhdGlvbj4gb2JzZXJ2ZUdDKEpTQzo6SlNWYWx1ZSk7CiAKLSAgICBlbnVtIGNsYXNzIFVz
ZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24geyBMVFIsIFJUTCB9OworICAgIGVudW0gY2xhc3Mg
VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiA6IHVpbnQ4X3QgeyBMVFIsIFJUTCB9OwogICAg
IHZvaWQgc2V0VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbihVc2VySW50ZXJmYWNlTGF5b3V0
RGlyZWN0aW9uKTsKIAogICAgIGJvb2wgdXNlclByZWZlcnNSZWR1Y2VkTW90aW9uKCkgY29uc3Q7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjM0NjE5KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMiBAQAorMjAxOC0wOC0wNiAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFVzZSBhIDEtYnl0
ZSBlbnVtIGNsYXNzIGZvciBUZXh0RGlyZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODgzNTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9XZWJQb3B1cEl0ZW0uY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQb3B1cEl0ZW06OldlYlBvcHVwSXRlbSk6CisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgd2ViU2VsZWN0aW9uUmVjdHNGb3JTZWxlY3Rpb25SZWN0czpdKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvbWFjL1dlYlBvcHVwTWVudVByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQb3B1cE1lbnVQcm94eU1hYzo6cG9wdWxhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1
cE1lbnVQcm94eU1hYzo6c2hvd1BvcHVwTWVudSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1l
bnU6OnNob3cpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0QXNzaXN0ZWROb2RlSW5mb3JtYXRpb24p
OgorCiAyMDE4LTA4LTA2ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgVXNlIGVudW0gY2xhc3NlcyBhbmQgT3B0aW9uU2V0cyBmb3IgUGFpbnRQ
aGFzZSBhbmQgUGFpbnRCZWhhdmlvcgpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUG9w
dXBJdGVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQb3B1cEl0
ZW0uY3BwCShyZXZpc2lvbiAyMzQ2MTgpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQb3B1
cEl0ZW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBXZWJQb3B1cEl0ZW06OldlYlBvcHVwSXRlbSgpCiAgICAgOiBtX3R5cGUoSXRlbSkK
LSAgICAsIG1fdGV4dERpcmVjdGlvbihMVFIpCisgICAgLCBtX3RleHREaXJlY3Rpb24oVGV4dERp
cmVjdGlvbjo6TFRSKQogICAgICwgbV9oYXNUZXh0RGlyZWN0aW9uT3ZlcnJpZGUoZmFsc2UpCiAg
ICAgLCBtX2lzRW5hYmxlZCh0cnVlKQogICAgICwgbV9pc1NlbGVjdGVkKGZhbHNlKQpAQCAtNDQs
NyArNDQsNyBAQCBXZWJQb3B1cEl0ZW06OldlYlBvcHVwSXRlbSgpCiAKIFdlYlBvcHVwSXRlbTo6
V2ViUG9wdXBJdGVtKFR5cGUgdHlwZSkKICAgICA6IG1fdHlwZSh0eXBlKQotICAgICwgbV90ZXh0
RGlyZWN0aW9uKExUUikKKyAgICAsIG1fdGV4dERpcmVjdGlvbihUZXh0RGlyZWN0aW9uOjpMVFIp
CiAgICAgLCBtX2hhc1RleHREaXJlY3Rpb25PdmVycmlkZShmYWxzZSkKICAgICAsIG1faXNFbmFi
bGVkKHRydWUpCiAgICAgLCBtX2lzTGFiZWwoZmFsc2UpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHJldmlzaW9uIDIzNDYxOCkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTU3NCw3ICs1NzQsNyBAQCAgICAgLy8gV2UgYXJlIGluIHRoZSBWaWV3J3MgaW5p
dGlhbGl6YXRpCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQo
V2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6aW5saW5lTWVkaWFQbGF5YmFja1JlcXVpcmVzUGxh
eXNJbmxpbmVBdHRyaWJ1dGVLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1
ZSghIVtfY29uZmlndXJhdGlvbiBfaW5saW5lTWVkaWFQbGF5YmFja1JlcXVpcmVzUGxheXNJbmxp
bmVBdHRyaWJ1dGVdKSk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMo
KS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6YWxsb3dzUGljdHVyZUluUGljdHVyZU1l
ZGlhUGxheWJhY2tLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZSghIVtf
Y29uZmlndXJhdGlvbiBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlTWVkaWFQbGF5YmFja10gJiYgc2hv
dWxkQWxsb3dQaWN0dXJlSW5QaWN0dXJlTWVkaWFQbGF5YmFjaygpKSk7CiAgICAgcGFnZUNvbmZp
Z3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tl
eTo6dXNlckludGVyZmFjZURpcmVjdGlvblBvbGljeUtleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVu
Y2VzU3RvcmU6OlZhbHVlKHN0YXRpY19jYXN0PHVpbnQzMl90PihXZWJDb3JlOjpVc2VySW50ZXJm
YWNlRGlyZWN0aW9uUG9saWN5OjpDb250ZW50KSkpOwotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5w
cmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OnN5c3RlbUxh
eW91dERpcmVjdGlvbktleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKHN0
YXRpY19jYXN0PHVpbnQzMl90PihXZWJDb3JlOjpMVFIpKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRp
b24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6c3lz
dGVtTGF5b3V0RGlyZWN0aW9uS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFs
dWUoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KFdlYkNvcmU6OlRleHREaXJlY3Rpb246OkxUUikpKTsK
ICAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6Oldl
YlByZWZlcmVuY2VzS2V5OjphbGxvd1NldHRpbmdBbnlYSFJIZWFkZXJGcm9tRmlsZVVSTHNLZXko
KSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZShzaG91bGRBbGxvd1NldHRpbmdB
bnlYSFJIZWFkZXJGcm9tRmlsZVVSTHMoKSkpOwogI2lmIFVTRShTWVNURU1fUFJFVklFVykKICAg
ICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlBy
ZWZlcmVuY2VzS2V5OjpzeXN0ZW1QcmV2aWV3RW5hYmxlZEtleSgpLCBXZWJLaXQ6OldlYlByZWZl
cmVuY2VzU3RvcmU6OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIF9zeXN0ZW1QcmV2aWV3RW5hYmxl
ZF0pKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQkocmV2aXNpb24gMjM0NjE4KQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQkod29ya2luZyBj
b3B5KQpAQCAtMTc2Niw3ICsxNzY2LDcgQEAgLSAoTlNBcnJheSAqKXdlYlNlbGVjdGlvblJlY3Rz
Rm9yU2VsZWN0aQogICAgICAgICBjb25zdCBXZWJDb3JlOjpTZWxlY3Rpb25SZWN0JiBjb3JlUmVj
dCA9IHNlbGVjdGlvblJlY3RzW2ldOwogICAgICAgICBXZWJTZWxlY3Rpb25SZWN0ICp3ZWJSZWN0
ID0gW1dlYlNlbGVjdGlvblJlY3Qgc2VsZWN0aW9uUmVjdF07CiAgICAgICAgIHdlYlJlY3QucmVj
dCA9IGNvcmVSZWN0LnJlY3QoKTsKLSAgICAgICAgd2ViUmVjdC53cml0aW5nRGlyZWN0aW9uID0g
Y29yZVJlY3QuZGlyZWN0aW9uKCkgPT0gTFRSID8gV0tXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmln
aHQgOiBXS1dyaXRpbmdEaXJlY3Rpb25SaWdodFRvTGVmdDsKKyAgICAgICAgd2ViUmVjdC53cml0
aW5nRGlyZWN0aW9uID0gY29yZVJlY3QuZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRS
ID8gV0tXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQgOiBXS1dyaXRpbmdEaXJlY3Rpb25SaWdo
dFRvTGVmdDsKICAgICAgICAgd2ViUmVjdC5pc0xpbmVCcmVhayA9IGNvcmVSZWN0LmlzTGluZUJy
ZWFrKCk7CiAgICAgICAgIHdlYlJlY3QuaXNGaXJzdE9uTGluZSA9IGNvcmVSZWN0LmlzRmlyc3RP
bkxpbmUoKTsKICAgICAgICAgd2ViUmVjdC5pc0xhc3RPbkxpbmUgPSBjb3JlUmVjdC5pc0xhc3RP
bkxpbmUoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQb3B1cE1lbnVQ
cm94eU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2Vi
UG9wdXBNZW51UHJveHlNYWMubW0JKHJldmlzaW9uIDIzNDYxOCkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9XZWJQb3B1cE1lbnVQcm94eU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAt
NzMsOSArNzMsOSBAQCB2b2lkIFdlYlBvcHVwTWVudVByb3h5TWFjOjpwb3B1bGF0ZShjb25zCiAg
ICAgICAgICAgICBOU01lbnVJdGVtICptZW51SXRlbSA9IFttX3BvcHVwIGxhc3RJdGVtXTsKIAog
ICAgICAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJsZVBhcmFncmFwaFN0eWxlPiBwYXJhZ3JhcGhT
dHlsZSA9IGFkb3B0TlMoW1tOU1BhcmFncmFwaFN0eWxlIGRlZmF1bHRQYXJhZ3JhcGhTdHlsZV0g
bXV0YWJsZUNvcHldKTsKLSAgICAgICAgICAgIE5TV3JpdGluZ0RpcmVjdGlvbiB3cml0aW5nRGly
ZWN0aW9uID0gaXRlbXNbaV0ubV90ZXh0RGlyZWN0aW9uID09IExUUiA/IE5TV3JpdGluZ0RpcmVj
dGlvbkxlZnRUb1JpZ2h0IDogTlNXcml0aW5nRGlyZWN0aW9uUmlnaHRUb0xlZnQ7CisgICAgICAg
ICAgICBOU1dyaXRpbmdEaXJlY3Rpb24gd3JpdGluZ0RpcmVjdGlvbiA9IGl0ZW1zW2ldLm1fdGV4
dERpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBOU1dyaXRpbmdEaXJlY3Rpb25MZWZ0
VG9SaWdodCA6IE5TV3JpdGluZ0RpcmVjdGlvblJpZ2h0VG9MZWZ0OwogICAgICAgICAgICAgW3Bh
cmFncmFwaFN0eWxlIHNldEJhc2VXcml0aW5nRGlyZWN0aW9uOndyaXRpbmdEaXJlY3Rpb25dOwot
ICAgICAgICAgICAgW3BhcmFncmFwaFN0eWxlIHNldEFsaWdubWVudDptZW51VGV4dERpcmVjdGlv
biA9PSBMVFIgPyBOU1RleHRBbGlnbm1lbnRMZWZ0IDogTlNUZXh0QWxpZ25tZW50UmlnaHRdOwor
ICAgICAgICAgICAgW3BhcmFncmFwaFN0eWxlIHNldEFsaWdubWVudDptZW51VGV4dERpcmVjdGlv
biA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBOU1RleHRBbGlnbm1lbnRMZWZ0IDogTlNUZXh0QWxp
Z25tZW50UmlnaHRdOwogICAgICAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+
IGF0dHJpYnV0ZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdFdp
dGhPYmplY3RzQW5kS2V5czoKICAgICAgICAgICAgICAgICBwYXJhZ3JhcGhTdHlsZS5nZXQoKSwg
TlNQYXJhZ3JhcGhTdHlsZUF0dHJpYnV0ZU5hbWUsCiAgICAgICAgICAgICAgICAgZm9udCwgTlNG
b250QXR0cmlidXRlTmFtZSwKQEAgLTExMSwxMCArMTExLDEwIEBAIHZvaWQgV2ViUG9wdXBNZW51
UHJveHlNYWM6OnNob3dQb3B1cE1lbnUKIAogICAgIFttX3BvcHVwIGF0dGFjaFBvcFVwV2l0aEZy
YW1lOnJlY3QgaW5WaWV3Om1fd2ViVmlld107CiAgICAgW21fcG9wdXAgc2VsZWN0SXRlbUF0SW5k
ZXg6c2VsZWN0ZWRJbmRleF07Ci0gICAgW21fcG9wdXAgc2V0VXNlckludGVyZmFjZUxheW91dERp
cmVjdGlvbjp0ZXh0RGlyZWN0aW9uID09IExUUiA/IE5TVXNlckludGVyZmFjZUxheW91dERpcmVj
dGlvbkxlZnRUb1JpZ2h0IDogTlNVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uUmlnaHRUb0xl
ZnRdOworICAgIFttX3BvcHVwIHNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246dGV4dERp
cmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJl
Y3Rpb25MZWZ0VG9SaWdodCA6IE5TVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvblJpZ2h0VG9M
ZWZ0XTsKIAogICAgIE5TTWVudSAqbWVudSA9IFttX3BvcHVwIG1lbnVdOwotICAgIFttZW51IHNl
dFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246dGV4dERpcmVjdGlvbiA9PSBMVFIgPyBOU1Vz
ZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25MZWZ0VG9SaWdodCA6IE5TVXNlckludGVyZmFjZUxh
eW91dERpcmVjdGlvblJpZ2h0VG9MZWZ0XTsKKyAgICBbbWVudSBzZXRVc2VySW50ZXJmYWNlTGF5
b3V0RGlyZWN0aW9uOnRleHREaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gTlNVc2Vy
SW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uTGVmdFRvUmlnaHQgOiBOU1VzZXJJbnRlcmZhY2VMYXlv
dXREaXJlY3Rpb25SaWdodFRvTGVmdF07CiAKICAgICAvLyBUaGVzZSB2YWx1ZXMgd2VyZSBib3Jy
b3dlZCBmcm9tIEFwcEtpdCB0byBtYXRjaCB0aGVpciBwbGFjZW1lbnQgb2YgdGhlIG1lbnUuCiAg
ICAgY29uc3QgaW50IHBvcE92ZXJIb3Jpem9udGFsQWRqdXN0ID0gLTEzOwpAQCAtMTI5LDE4ICsx
MjksMTggQEAgdm9pZCBXZWJQb3B1cE1lbnVQcm94eU1hYzo6c2hvd1BvcHVwTWVudQogICAgICAg
ICBpZiAodGl0bGVGcmFtZS5zaXplLndpZHRoIDw9IDAgfHwgdGl0bGVGcmFtZS5zaXplLmhlaWdo
dCA8PSAwKQogICAgICAgICAgICAgdGl0bGVGcmFtZSA9IHJlY3Q7CiAgICAgICAgIGZsb2F0IHZl
cnRpY2FsT2Zmc2V0ID0gcm91bmRmKChOU01heFkocmVjdCkgLSBOU01heFkodGl0bGVGcmFtZSkp
ICsgTlNIZWlnaHQodGl0bGVGcmFtZSkpICsgMTsKLSAgICAgICAgaWYgKHRleHREaXJlY3Rpb24g
PT0gTFRSKQorICAgICAgICBpZiAodGV4dERpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIp
CiAgICAgICAgICAgICBsb2NhdGlvbiA9IE5TTWFrZVBvaW50KE5TTWluWChyZWN0KSArIHBvcE92
ZXJIb3Jpem9udGFsQWRqdXN0LCBOU01heFkocmVjdCkgLSB2ZXJ0aWNhbE9mZnNldCk7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIGxvY2F0aW9uID0gTlNNYWtlUG9pbnQoTlNNYXhYKHJlY3Qp
IC0gcG9wT3Zlckhvcml6b250YWxBZGp1c3QsIE5TTWF4WShyZWN0KSAtIHZlcnRpY2FsT2Zmc2V0
KTsKICAgICB9IGVsc2UgewotICAgICAgICBpZiAodGV4dERpcmVjdGlvbiA9PSBMVFIpCisgICAg
ICAgIGlmICh0ZXh0RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUikKICAgICAgICAgICAg
IGxvY2F0aW9uID0gTlNNYWtlUG9pbnQoTlNNaW5YKHJlY3QpICsgcG9wVW5kZXJIb3Jpem9udGFs
QWRqdXN0LCBOU01heFkocmVjdCkgKyBwb3BVbmRlclZlcnRpY2FsQWRqdXN0KTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgbG9jYXRpb24gPSBOU01ha2VQb2ludChOU01heFgocmVjdCkgLSBw
b3BVbmRlckhvcml6b250YWxBZGp1c3QsIE5TTWF4WShyZWN0KSArIHBvcFVuZGVyVmVydGljYWxB
ZGp1c3QpOwogICAgIH0KICAgICBSZXRhaW5QdHI8TlNWaWV3PiBkdW1teVZpZXcgPSBhZG9wdE5T
KFtbTlNWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOnJlY3RdKTsKLSAgICBbZHVtbXlWaWV3Lmdl
dCgpIHNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246dGV4dERpcmVjdGlvbiA9PSBMVFIg
PyBOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25MZWZ0VG9SaWdodCA6IE5TVXNlckludGVy
ZmFjZUxheW91dERpcmVjdGlvblJpZ2h0VG9MZWZ0XTsKKyAgICBbZHVtbXlWaWV3LmdldCgpIHNl
dFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246dGV4dERpcmVjdGlvbiA9PSBUZXh0RGlyZWN0
aW9uOjpMVFIgPyBOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25MZWZ0VG9SaWdodCA6IE5T
VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvblJpZ2h0VG9MZWZ0XTsKICAgICBbbV93ZWJWaWV3
IGFkZFN1YnZpZXc6ZHVtbXlWaWV3LmdldCgpXTsKICAgICBsb2NhdGlvbiA9IFtkdW1teVZpZXcg
Y29udmVydFBvaW50OmxvY2F0aW9uIGZyb21WaWV3Om1fd2ViVmlld107CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1
cE1lbnUuY3BwCShyZXZpc2lvbiAyMzQ2MTgpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBNZW51LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEyLDcg
KzExMiw3IEBAIHZvaWQgV2ViUG9wdXBNZW51OjpzaG93KGNvbnN0IEludFJlY3QmIHIKICAgICBQ
bGF0Zm9ybVBvcHVwTWVudURhdGEgcGxhdGZvcm1EYXRhOwogICAgIHNldFVwUGxhdGZvcm1EYXRh
KHBhZ2VDb29yZGluYXRlcywgcGxhdGZvcm1EYXRhKTsKIAotICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6U2hvd1BvcHVwTWVudShwYWdlQ29vcmRpbmF0ZXMsIG1fcG9wdXBDbGllbnQtPm1lbnVT
dHlsZSgpLnRleHREaXJlY3Rpb24oKSwgaXRlbXMsIGluZGV4LCBwbGF0Zm9ybURhdGEpLCBtX3Bh
Z2UtPnBhZ2VJRCgpKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dQb3B1cE1lbnUo
cGFnZUNvb3JkaW5hdGVzLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4obV9wb3B1cENsaWVudC0+bWVu
dVN0eWxlKCkudGV4dERpcmVjdGlvbigpKSwgaXRlbXMsIGluZGV4LCBwbGF0Zm9ybURhdGEpLCBt
X3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIAogdm9pZCBXZWJQb3B1cE1lbnU6OmhpZGUoKQpJbmRleDog
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW0JKHJldmlzaW9uIDIzNDYxOCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9XZWJQYWdlSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMzExLDcgKzIzMTEsNyBAQCB2
b2lkIFdlYlBhZ2U6OmdldEFzc2lzdGVkTm9kZUluZm9ybWF0aW9uCiAgICAgICAgIGJvb2wgaW5G
aXhlZCA9IGZhbHNlOwogICAgICAgICByZW5kZXJlci0+bG9jYWxUb0NvbnRhaW5lclBvaW50KEZs
b2F0UG9pbnQoKSwgbnVsbHB0ciwgVXNlVHJhbnNmb3JtcywgJmluRml4ZWQpOwogICAgICAgICBp
bmZvcm1hdGlvbi5pbnNpZGVGaXhlZFBvc2l0aW9uID0gaW5GaXhlZDsKLSAgICAgICAgaW5mb3Jt
YXRpb24uaXNSVEwgPSByZW5kZXJlci0+c3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBSVEw7CisgICAg
ICAgIGluZm9ybWF0aW9uLmlzUlRMID0gcmVuZGVyZXItPnN0eWxlKCkuZGlyZWN0aW9uKCkgPT0g
VGV4dERpcmVjdGlvbjo6UlRMOwogCiAgICAgICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gZWxl
bWVudEZyYW1lLnZpZXcoKTsKICAgICAgICAgaWYgKGluRml4ZWQgJiYgZWxlbWVudEZyYW1lLmlz
TWFpbkZyYW1lKCkgJiYgIWZyYW1lVmlldy0+ZnJhbWUoKS5zZXR0aW5ncygpLnZpc3VhbFZpZXdw
b3J0RW5hYmxlZCgpKSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCShyZXZpc2lv
biAyMzQ2MTgpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxOC0wOC0wNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFj
aHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFVzZSBhIDEtYnl0ZSBlbnVtIGNsYXNz
IGZvciBUZXh0RGlyZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xODgzNTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lSU9TLm1tOgorICAgICAgICAoLVtX
ZWJGcmFtZSBzZWxlY3Rpb25SZWN0c0ZvckNvcmVSYW5nZTpdKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRpb24ubW06CisgICAgICAgICgtW1dlYlZpc2libGVQb3Np
dGlvbiB0ZXh0RGlyZWN0aW9uXSk6CisgICAgICAgICgtW1dlYlZpc2libGVQb3NpdGlvbiBkaXJl
Y3Rpb25Jc0Rvd25zdHJlYW06XSk6CisgICAgICAgICogV2ViVmlldy9XZWJQREZWaWV3SU9TLm1t
OgorICAgICAgICAoLVtXZWJQREZWaWV3IF9jaGVja1BERlRpdGxlXSk6CisKIDIwMTgtMDctMDQg
IFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgSW50cm9k
dWNlIFBMQVRGT1JNKElPU01BQykKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lSU9TLm1tCShyZXZpc2lvbiAyMzQ2MTgpCisr
KyBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUlPUy5tbQko
d29ya2luZyBjb3B5KQpAQCAtMjIwLDcgKzIyMCw3IEBAIC0gKE5TQXJyYXkgKilzZWxlY3Rpb25S
ZWN0c0ZvckNvcmVSYW5nZToKICAgICAgICAgU2VsZWN0aW9uUmVjdCAmY29yZVJlY3QgPSByZWN0
c1tpXTsKICAgICAgICAgV2ViU2VsZWN0aW9uUmVjdCAqd2ViUmVjdCA9IFtXZWJTZWxlY3Rpb25S
ZWN0IHNlbGVjdGlvblJlY3RdOwogICAgICAgICB3ZWJSZWN0LnJlY3QgPSBzdGF0aWNfY2FzdDxD
R1JlY3Q+KGNvcmVSZWN0LnJlY3QoKSk7Ci0gICAgICAgIHdlYlJlY3Qud3JpdGluZ0RpcmVjdGlv
biA9IGNvcmVSZWN0LmRpcmVjdGlvbigpID09IExUUiA/IFdLV3JpdGluZ0RpcmVjdGlvbkxlZnRU
b1JpZ2h0IDogV0tXcml0aW5nRGlyZWN0aW9uUmlnaHRUb0xlZnQ7CisgICAgICAgIHdlYlJlY3Qu
d3JpdGluZ0RpcmVjdGlvbiA9IGNvcmVSZWN0LmRpcmVjdGlvbigpID09IFRleHREaXJlY3Rpb246
OkxUUiA/IFdLV3JpdGluZ0RpcmVjdGlvbkxlZnRUb1JpZ2h0IDogV0tXcml0aW5nRGlyZWN0aW9u
UmlnaHRUb0xlZnQ7CiAgICAgICAgIHdlYlJlY3QuaXNMaW5lQnJlYWsgPSBjb3JlUmVjdC5pc0xp
bmVCcmVhaygpOwogICAgICAgICB3ZWJSZWN0LmlzRmlyc3RPbkxpbmUgPSBjb3JlUmVjdC5pc0Zp
cnN0T25MaW5lKCk7CiAgICAgICAgIHdlYlJlY3QuaXNMYXN0T25MaW5lID0gY29yZVJlY3QuaXNM
YXN0T25MaW5lKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9y
dC9XZWJWaXNpYmxlUG9zaXRpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2Fj
eS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViVmlzaWJsZVBvc2l0aW9uLm1tCShyZXZpc2lvbiAyMzQ2
MTgpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpYmxl
UG9zaXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTEzMiw3ICsxMzIsNyBAQCAtIChOU1N0cmlu
ZyAqKWRlc2NyaXB0aW9uCiAtIChUZXh0RGlyZWN0aW9uKXRleHREaXJlY3Rpb24KIHsKICAgICAv
LyBUT0RPOiBpbXBsZW1lbnQKLSAgICByZXR1cm4gTFRSOworICAgIHJldHVybiBUZXh0RGlyZWN0
aW9uOjpMVFI7CiB9CiAKIC0gKEJPT0wpZGlyZWN0aW9uSXNEb3duc3RyZWFtOihXZWJUZXh0QWRq
dXN0bWVudERpcmVjdGlvbilkaXJlY3Rpb24KQEAgLTE0NCwxMSArMTQ0LDkgQEAgLSAoQk9PTClk
aXJlY3Rpb25Jc0Rvd25zdHJlYW06KFdlYlRleHRBZAogICAgICAgICByZXR1cm4gWUVTOwogICAg
IAogICAgIAotICAgIGlmIChbc2VsZiB0ZXh0RGlyZWN0aW9uXSA9PSBMVFIpIHsKKyAgICBpZiAo
W3NlbGYgdGV4dERpcmVjdGlvbl0gPT0gVGV4dERpcmVjdGlvbjo6TFRSKQogICAgICAgICByZXR1
cm4gKGRpcmVjdGlvbiA9PSBXZWJUZXh0QWRqdXN0bWVudFJpZ2h0KTsKLSAgICB9IGVsc2Ugewot
ICAgICAgICByZXR1cm4gKGRpcmVjdGlvbiA9PSBXZWJUZXh0QWRqdXN0bWVudExlZnQpOwotICAg
IH0KKyAgICByZXR1cm4gKGRpcmVjdGlvbiA9PSBXZWJUZXh0QWRqdXN0bWVudExlZnQpOwogfQog
CiAtIChXZWJWaXNpYmxlUG9zaXRpb24gKilwb3NpdGlvbkJ5TW92aW5nSW5EaXJlY3Rpb246KFdl
YlRleHRBZGp1c3RtZW50RGlyZWN0aW9uKWRpcmVjdGlvbiBhbW91bnQ6KFVJbnQzMilhbW91bnQg
d2l0aEFmZmluaXR5RG93bnN0cmVhbTooQk9PTClhZmZpbml0eURvd25zdHJlYW0KSW5kZXg6IFNv
dXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld0lPUy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdJT1MubW0JKHJl
dmlzaW9uIDIzNDYxOCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERG
Vmlld0lPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjk5LDcgKzI5OSw3IEBAIC0gKHZvaWQpX2No
ZWNrUERGVGl0bGUKICAgICBpZiAoW3RpdGxlIGxlbmd0aF0pIHsKICAgICAgICAgW190aXRsZSBy
ZWxlYXNlXTsKICAgICAgICAgX3RpdGxlID0gW3RpdGxlIGNvcHldOwotICAgICAgICBjb3JlKFtz
ZWxmIF9mcmFtZV0pLT5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERpZFJlY2VpdmVUaXRsZSh7
IHRpdGxlLCBMVFIgfSk7CisgICAgICAgIGNvcmUoW3NlbGYgX2ZyYW1lXSktPmxvYWRlcigpLmNs
aWVudCgpLmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKHsgdGl0bGUsIFRleHREaXJlY3Rpb246OkxU
UiB9KTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDIzNDYxOSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE4LTA4LTA2ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIGEgMS1ieXRlIGVudW0gY2xh
c3MgZm9yIFRleHREaXJlY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE4ODM1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUG9wdXBNZW51TWFjLm1tOgorICAgICAgICAo
UG9wdXBNZW51TWFjOjpwb3B1bGF0ZSk6CisgICAgICAgIChQb3B1cE1lbnVNYWM6OnNob3cpOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAg
ICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2Up
OgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9k
aXNwYXRjaERpZFJlY2VpdmVUaXRsZTpdKToKKwogMjAxOC0wOC0wNiAgQWxleCBDaHJpc3RlbnNl
biAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFVzZSBlbnVtIGNsYXNzZXMg
YW5kIE9wdGlvblNldHMgZm9yIFBhaW50UGhhc2UgYW5kIFBhaW50QmVoYXZpb3IKSW5kZXg6IFNv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1BvcHVwTWVudU1hYy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9Qb3B1cE1l
bnVNYWMubW0JKHJldmlzaW9uIDIzNDYxOCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1BvcHVwTWVudU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcs
NyBAQCB2b2lkIFBvcHVwTWVudU1hYzo6cG9wdWxhdGUoKQogICAgICAgICBbbV9wb3B1cCBhZGRJ
dGVtV2l0aFRpdGxlOkAiIl07CiAKICAgICBUZXh0RGlyZWN0aW9uIG1lbnVUZXh0RGlyZWN0aW9u
ID0gbV9jbGllbnQtPm1lbnVTdHlsZSgpLnRleHREaXJlY3Rpb24oKTsKLSAgICBbbV9wb3B1cCBz
ZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uOm1lbnVUZXh0RGlyZWN0aW9uID09IExUUiA/
IE5TVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbkxlZnRUb1JpZ2h0IDogTlNVc2VySW50ZXJm
YWNlTGF5b3V0RGlyZWN0aW9uUmlnaHRUb0xlZnRdOworICAgIFttX3BvcHVwIHNldFVzZXJJbnRl
cmZhY2VMYXlvdXREaXJlY3Rpb246bWVudVRleHREaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6
TFRSID8gTlNVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uTGVmdFRvUmlnaHQgOiBOU1VzZXJJ
bnRlcmZhY2VMYXlvdXREaXJlY3Rpb25SaWdodFRvTGVmdF07CiAKICAgICBBU1NFUlQobV9jbGll
bnQpOwogICAgIGludCBzaXplID0gbV9jbGllbnQtPmxpc3RTaXplKCk7CkBAIC05MCw4ICs5MCw4
IEBAIHZvaWQgUG9wdXBNZW51TWFjOjpwb3B1bGF0ZSgpCiAgICAgICAgIH0KIAogICAgICAgICBS
ZXRhaW5QdHI8TlNNdXRhYmxlUGFyYWdyYXBoU3R5bGU+IHBhcmFncmFwaFN0eWxlID0gYWRvcHRO
UyhbW05TUGFyYWdyYXBoU3R5bGUgZGVmYXVsdFBhcmFncmFwaFN0eWxlXSBtdXRhYmxlQ29weV0p
OwotICAgICAgICBbcGFyYWdyYXBoU3R5bGUgc2V0QWxpZ25tZW50Om1lbnVUZXh0RGlyZWN0aW9u
ID09IExUUiA/IE5TVGV4dEFsaWdubWVudExlZnQgOiBOU1RleHRBbGlnbm1lbnRSaWdodF07Ci0g
ICAgICAgIE5TV3JpdGluZ0RpcmVjdGlvbiB3cml0aW5nRGlyZWN0aW9uID0gc3R5bGUudGV4dERp
cmVjdGlvbigpID09IExUUiA/IE5TV3JpdGluZ0RpcmVjdGlvbkxlZnRUb1JpZ2h0IDogTlNXcml0
aW5nRGlyZWN0aW9uUmlnaHRUb0xlZnQ7CisgICAgICAgIFtwYXJhZ3JhcGhTdHlsZSBzZXRBbGln
bm1lbnQ6bWVudVRleHREaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gTlNUZXh0QWxp
Z25tZW50TGVmdCA6IE5TVGV4dEFsaWdubWVudFJpZ2h0XTsKKyAgICAgICAgTlNXcml0aW5nRGly
ZWN0aW9uIHdyaXRpbmdEaXJlY3Rpb24gPSBzdHlsZS50ZXh0RGlyZWN0aW9uKCkgPT0gVGV4dERp
cmVjdGlvbjo6TFRSID8gTlNXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQgOiBOU1dyaXRpbmdE
aXJlY3Rpb25SaWdodFRvTGVmdDsKICAgICAgICAgW3BhcmFncmFwaFN0eWxlIHNldEJhc2VXcml0
aW5nRGlyZWN0aW9uOndyaXRpbmdEaXJlY3Rpb25dOwogICAgICAgICBpZiAoc3R5bGUuaGFzVGV4
dERpcmVjdGlvbk92ZXJyaWRlKCkpIHsKICAgICAgICAgICAgIFJldGFpblB0cjxOU051bWJlcj4g
d3JpdGluZ0RpcmVjdGlvblZhbHVlID0gYWRvcHROUyhbW05TTnVtYmVyIGFsbG9jXSBpbml0V2l0
aEludGVnZXI6d3JpdGluZ0RpcmVjdGlvbiArIE5TV3JpdGluZ0RpcmVjdGlvbk92ZXJyaWRlXSk7
CkBAIC0xNDYsMTAgKzE0NiwxMCBAQCB2b2lkIFBvcHVwTWVudU1hYzo6c2hvdyhjb25zdCBJbnRS
ZWN0JiByCiAKICAgICBbbV9wb3B1cCBhdHRhY2hQb3BVcFdpdGhGcmFtZTpyIGluVmlldzp2aWV3
XTsKICAgICBbbV9wb3B1cCBzZWxlY3RJdGVtQXRJbmRleDppbmRleF07Ci0gICAgW21fcG9wdXAg
c2V0VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbjp0ZXh0RGlyZWN0aW9uID09IExUUiA/IE5T
VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbkxlZnRUb1JpZ2h0IDogTlNVc2VySW50ZXJmYWNl
TGF5b3V0RGlyZWN0aW9uUmlnaHRUb0xlZnRdOworICAgIFttX3BvcHVwIHNldFVzZXJJbnRlcmZh
Y2VMYXlvdXREaXJlY3Rpb246dGV4dERpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBO
U1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25MZWZ0VG9SaWdodCA6IE5TVXNlckludGVyZmFj
ZUxheW91dERpcmVjdGlvblJpZ2h0VG9MZWZ0XTsKIAogICAgIE5TTWVudSAqbWVudSA9IFttX3Bv
cHVwIG1lbnVdOwotICAgIFttZW51IHNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246dGV4
dERpcmVjdGlvbiA9PSBMVFIgPyBOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25MZWZ0VG9S
aWdodCA6IE5TVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvblJpZ2h0VG9MZWZ0XTsKKyAgICBb
bWVudSBzZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uOnRleHREaXJlY3Rpb24gPT0gVGV4
dERpcmVjdGlvbjo6TFRSID8gTlNVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uTGVmdFRvUmln
aHQgOiBOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25SaWdodFRvTGVmdF07CiAKICAgICBO
U1BvaW50IGxvY2F0aW9uOwogICAgIENURm9udFJlZiBmb250ID0gbV9jbGllbnQtPm1lbnVTdHls
ZSgpLmZvbnQoKS5wcmltYXJ5Rm9udCgpLmdldENURm9udCgpOwpAQCAtMTY4LDcgKzE2OCw3IEBA
IHZvaWQgUG9wdXBNZW51TWFjOjpzaG93KGNvbnN0IEludFJlY3QmIHIKICAgICAgICAgdmVydE9m
ZnNldCArPSBDVEZvbnRHZXREZXNjZW50KGZvbnQpIC0gQ1RGb250R2V0RGVzY2VudChkZWZhdWx0
Rm9udC5nZXQoKSk7CiAgICAgICAgIHZlcnRPZmZzZXQgPSBmbWluZihOU0hlaWdodChyKSwgdmVy
dE9mZnNldCk7CiAjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEyMDAK
LSAgICAgICAgaWYgKHRleHREaXJlY3Rpb24gPT0gTFRSKQorICAgICAgICBpZiAodGV4dERpcmVj
dGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpCiAgICAgICAgICAgICBsb2NhdGlvbiA9IE5TTWFr
ZVBvaW50KE5TTWluWChyKSArIHBvcE92ZXJIb3Jpem9udGFsQWRqdXN0LCBOU01heFkocikgLSB2
ZXJ0T2Zmc2V0KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbG9jYXRpb24gPSBOU01ha2VQ
b2ludChOU01heFgocikgLSBwb3BPdmVySG9yaXpvbnRhbEFkanVzdCwgTlNNYXhZKHIpIC0gdmVy
dE9mZnNldCk7CkBAIC0xNzcsNyArMTc3LDcgQEAgdm9pZCBQb3B1cE1lbnVNYWM6OnNob3coY29u
c3QgSW50UmVjdCYgcgogI2VuZGlmCiAgICAgfSBlbHNlIHsKICNpZiBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEwMTIwMAotICAgICAgICBpZiAodGV4dERpcmVjdGlvbiA9PSBM
VFIpCisgICAgICAgIGlmICh0ZXh0RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUikKICAg
ICAgICAgICAgIGxvY2F0aW9uID0gTlNNYWtlUG9pbnQoTlNNaW5YKHIpICsgcG9wVW5kZXJIb3Jp
em9udGFsQWRqdXN0LCBOU01heFkocikgKyBwb3BVbmRlclZlcnRpY2FsQWRqdXN0KTsKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgbG9jYXRpb24gPSBOU01ha2VQb2ludChOU01heFgocikgLSBw
b3BVbmRlckhvcml6b250YWxBZGp1c3QsIE5TTWF4WShyKSArIHBvcFVuZGVyVmVydGljYWxBZGp1
c3QpOwpAQCAtMTkzLDcgKzE5Myw3IEBAIHZvaWQgUG9wdXBNZW51TWFjOjpzaG93KGNvbnN0IElu
dFJlY3QmIHIKICAgICBSZWY8UG9wdXBNZW51TWFjPiBwcm90ZWN0b3IoKnRoaXMpOwogCiAgICAg
UmV0YWluUHRyPE5TVmlldz4gZHVtbXlWaWV3ID0gYWRvcHROUyhbW05TVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpyXSk7Ci0gICAgW2R1bW15Vmlldy5nZXQoKSBzZXRVc2VySW50ZXJmYWNlTGF5
b3V0RGlyZWN0aW9uOnRleHREaXJlY3Rpb24gPT0gTFRSID8gTlNVc2VySW50ZXJmYWNlTGF5b3V0
RGlyZWN0aW9uTGVmdFRvUmlnaHQgOiBOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25SaWdo
dFRvTGVmdF07CisgICAgW2R1bW15Vmlldy5nZXQoKSBzZXRVc2VySW50ZXJmYWNlTGF5b3V0RGly
ZWN0aW9uOnRleHREaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gTlNVc2VySW50ZXJm
YWNlTGF5b3V0RGlyZWN0aW9uTGVmdFRvUmlnaHQgOiBOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJl
Y3Rpb25SaWdodFRvTGVmdF07CiAgICAgW3ZpZXcgYWRkU3VidmlldzpkdW1teVZpZXcuZ2V0KCld
OwogICAgIGxvY2F0aW9uID0gW2R1bW15VmlldyBjb252ZXJ0UG9pbnQ6bG9jYXRpb24gZnJvbVZp
ZXc6dmlld107CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQkocmV2aXNp
b24gMjM0NjE4KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTE0OTQsNyArMTQ5NCw3IEBA
IHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5zaXRpb25Ub0MKICAgICAvLyBsaWtlIHRo
ZSBvbmVzIHRoYXQgU2FmYXJpIHVzZXMgZm9yIGJvb2ttYXJrcyBpdCBpcyB0aGUgb25seSB3YXkg
dGhlIERvY3VtZW50TG9hZGVyCiAgICAgLy8gd2lsbCBnZXQgdGhlIHByb3BlciB0aXRsZS4KICAg
ICBpZiAoYXV0byogZG9jdW1lbnRMb2FkZXIgPSBbZGF0YVNvdXJjZSBfZG9jdW1lbnRMb2FkZXJd
KQotICAgICAgICBkb2N1bWVudExvYWRlci0+c2V0VGl0bGUoeyBbZGF0YVNvdXJjZSBwYWdlVGl0
bGVdLCBMVFIgfSk7CisgICAgICAgIGRvY3VtZW50TG9hZGVyLT5zZXRUaXRsZSh7IFtkYXRhU291
cmNlIHBhZ2VUaXRsZV0sIFRleHREaXJlY3Rpb246OkxUUiB9KTsKIAogICAgIGlmIChhdXRvKiBv
d25lckVsZW1lbnQgPSBjb3JlRnJhbWUtPm93bmVyRWxlbWVudCgpKQogICAgICAgICBjb3JlRnJh
bWUtPnZpZXcoKS0+c2V0Q2FuSGF2ZVNjcm9sbGJhcnMob3duZXJFbGVtZW50LT5zY3JvbGxpbmdN
b2RlKCkgIT0gU2Nyb2xsYmFyQWx3YXlzT2ZmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQkocmV2aXNpb24gMjM0NjE5KQorKysgU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjMz
Nyw3ICsyMzM3LDcgQEAgLSAodm9pZClfZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGU6KE5TU3RyaQog
ICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBfcHJpdmF0ZS0+Y29yZUZyYW1lOwogICAgIGlmICghY29y
ZUZyYW1lKQogICAgICAgICByZXR1cm47Ci0gICAgY29yZUZyYW1lLT5sb2FkZXIoKS5jbGllbnQo
KS5kaXNwYXRjaERpZFJlY2VpdmVUaXRsZSh7IHRpdGxlLCBMVFIgfSk7CisgICAgY29yZUZyYW1l
LT5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERpZFJlY2VpdmVUaXRsZSh7IHRpdGxlLCBUZXh0
RGlyZWN0aW9uOjpMVFIgfSk7CiB9CiAKICNlbmRpZiAvLyBQTEFURk9STShJT1MpCkluZGV4OiBU
b29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAy
MzQ2MTgpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBA
QAorMjAxOC0wOC0wNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgorCisgICAgICAgIFVzZSBhIDEtYnl0ZSBlbnVtIGNsYXNzIGZvciBUZXh0RGlyZWN0aW9uCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODgzNTAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvU3RyaW5nV2l0aERpcmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRv
cjw8KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29tbWFuZEJhY2tGb3J3YXJkLm1tOgorICAgICAgICAo
VEVTVF9GKToKKwogMjAxOC0wOC0wNiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxl
LmNvbT4KIAogICAgICAgICBbaU9TXSBDYXJldCBkaXNhcHBlYXJzIGFmdGVyIHJlc2lnbmluZyBh
bmQgYmVjb21pbmcgZmlyc3QgcmVzcG9uZGVyIGlmIGFjdGl2ZSBmb2N1cyBzdGF0ZSBpcyByZXRh
aW5lZApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbXBsZXhUZXh0
Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDIzNDYxOCkKKysrIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNTIsNyArMzUyLDcgQEAgVEVTVF9GKENvbXBsZXhUZXh0Q29u
dHJvbGxlclRlc3QsIFRvdGFsVwogCiAgICAgVUNoYXIgY2hhcmFjdGVyc1tdID0geyAweDY0NCwg
JyAnLCAweDY0NCwgJyAnLCAweDY0NCB9OwogICAgIHNpemVfdCBjaGFyYWN0ZXJzTGVuZ3RoID0g
V1RGX0FSUkFZX0xFTkdUSChjaGFyYWN0ZXJzKTsKLSAgICBUZXh0UnVuIHRleHRSdW4oU3RyaW5n
VmlldyhjaGFyYWN0ZXJzLCBjaGFyYWN0ZXJzTGVuZ3RoKSwgMCwgMTQsIERlZmF1bHRFeHBhbnNp
b24sIFJUTCk7CisgICAgVGV4dFJ1biB0ZXh0UnVuKFN0cmluZ1ZpZXcoY2hhcmFjdGVycywgY2hh
cmFjdGVyc0xlbmd0aCksIDAsIDE0LCBEZWZhdWx0RXhwYW5zaW9uLCBUZXh0RGlyZWN0aW9uOjpS
VEwpOwogICAgIGF1dG8gcnVuID0gQ29tcGxleFRleHRDb250cm9sbGVyOjpDb21wbGV4VGV4dFJ1
bjo6Y3JlYXRlKGFkdmFuY2VzLCBvcmlnaW5zLCB7IDUsIDYsIDcsIDgsIDkgfSwgeyA0LCAzLCAy
LCAxLCAwIH0sIGluaXRpYWxBZHZhbmNlLCBmb250LnByaW1hcnlGb250KCksIGNoYXJhY3RlcnMs
IDAsIGNoYXJhY3RlcnNMZW5ndGgsIDAsIDUsIGZhbHNlKTsKICAgICBWZWN0b3I8UmVmPENvbXBs
ZXhUZXh0Q29udHJvbGxlcjo6Q29tcGxleFRleHRSdW4+PiBydW5zOwogICAgIHJ1bnMuYXBwZW5k
KFdURk1vdmUocnVuKSk7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
U3RyaW5nV2l0aERpcmVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL1N0cmluZ1dpdGhEaXJlY3Rpb24uY3BwCShyZXZpc2lvbiAyMzQ2MTgp
CisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU3RyaW5nV2l0aERpcmVjdGlv
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDQ5ICszMSw2NiBAQAogCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAorbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGQ6Om9zdHJlYW0mIG9wZXJh
dG9yPDwoc3RkOjpvc3RyZWFtJiBvcywgY29uc3QgVGV4dERpcmVjdGlvbiYgZGlyZWN0aW9uKQor
eworICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7CisgICAgY2FzZSBUZXh0RGlyZWN0aW9uOjpMVFI6
CisgICAgICAgIG9zIDw8ICJUZXh0RGlyZWN0aW9uOjpMVFIiOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFRleHREaXJlY3Rpb246OlJUTDoKKyAgICAgICAgb3MgPDwgIlRleHREaXJlY3Rpb246
OlJUTCI7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gb3M7Cit9CisKK30KKwog
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBURVNUKFN0cmluZ1dpdGhEaXJlY3Rpb24sIFRy
dW5jYXRlQXRFbmRXaXRoTGVmdFRvUmlnaHRTdHJpbmcpCiB7Ci0gICAgU3RyaW5nV2l0aERpcmVj
dGlvbiBzdHJpbmcgeyAiQ2FwcHVjY2lubyIsIExUUiB9OworICAgIFN0cmluZ1dpdGhEaXJlY3Rp
b24gc3RyaW5nIHsgIkNhcHB1Y2Npbm8iLCBUZXh0RGlyZWN0aW9uOjpMVFIgfTsKICAgICBTdHJp
bmdXaXRoRGlyZWN0aW9uIHJlc3VsdDsKIAogICAgIHJlc3VsdCA9IHRydW5jYXRlRnJvbUVuZChz
dHJpbmcsIDApOwotICAgIEVYUEVDVF9FUShMVFIsIHJlc3VsdC5kaXJlY3Rpb24pOworICAgIEVY
UEVDVF9FUShUZXh0RGlyZWN0aW9uOjpMVFIsIHJlc3VsdC5kaXJlY3Rpb24pOwogICAgIEVYUEVD
VF9FUSgiIiwgcmVzdWx0LnN0cmluZyk7CiAKICAgICByZXN1bHQgPSB0cnVuY2F0ZUZyb21FbmQo
c3RyaW5nLCAxKTsKLSAgICBFWFBFQ1RfRVEoTFRSLCByZXN1bHQuZGlyZWN0aW9uKTsKKyAgICBF
WFBFQ1RfRVEoVGV4dERpcmVjdGlvbjo6TFRSLCByZXN1bHQuZGlyZWN0aW9uKTsKICAgICBFWFBF
Q1RfRVEoIkMiLCByZXN1bHQuc3RyaW5nKTsKIAogICAgIHJlc3VsdCA9IHRydW5jYXRlRnJvbUVu
ZChzdHJpbmcsIDIpOwotICAgIEVYUEVDVF9FUShMVFIsIHJlc3VsdC5kaXJlY3Rpb24pOworICAg
IEVYUEVDVF9FUShUZXh0RGlyZWN0aW9uOjpMVFIsIHJlc3VsdC5kaXJlY3Rpb24pOwogICAgIEVY
UEVDVF9FUSgiQ2EiLCByZXN1bHQuc3RyaW5nKTsKIAogICAgIHJlc3VsdCA9IHRydW5jYXRlRnJv
bUVuZChzdHJpbmcsIDEwMDApOwotICAgIEVYUEVDVF9FUShMVFIsIHJlc3VsdC5kaXJlY3Rpb24p
OworICAgIEVYUEVDVF9FUShUZXh0RGlyZWN0aW9uOjpMVFIsIHJlc3VsdC5kaXJlY3Rpb24pOwog
ICAgIEVYUEVDVF9FUSgiQ2FwcHVjY2lubyIsIHJlc3VsdC5zdHJpbmcpOwogfQogCiBURVNUKFN0
cmluZ1dpdGhEaXJlY3Rpb24sIFRydW5jYXRlQXRFbmRXaXRoUmlnaHRUb0xlZnRTdHJpbmcpCiB7
Ci0gICAgU3RyaW5nV2l0aERpcmVjdGlvbiBzdHJpbmcgeyBTdHJpbmc6OmZyb21VVEY4KCLXp9a4
16TWvNeV1rzXpta0J9eZ16DXlda5IiksIFJUTCB9OworICAgIFN0cmluZ1dpdGhEaXJlY3Rpb24g
c3RyaW5nIHsgU3RyaW5nOjpmcm9tVVRGOCgi16fWuNek1rzXlda816bWtCfXmdeg15XWuSIpLCBU
ZXh0RGlyZWN0aW9uOjpSVEwgfTsKICAgICBTdHJpbmdXaXRoRGlyZWN0aW9uIHJlc3VsdDsKIAog
ICAgIHJlc3VsdCA9IHRydW5jYXRlRnJvbUVuZChzdHJpbmcsIDApOwotICAgIEVYUEVDVF9FUShS
VEwsIHJlc3VsdC5kaXJlY3Rpb24pOworICAgIEVYUEVDVF9FUShUZXh0RGlyZWN0aW9uOjpSVEws
IHJlc3VsdC5kaXJlY3Rpb24pOwogICAgIEVYUEVDVF9FUSgiIiwgcmVzdWx0LnN0cmluZyk7CiAK
ICAgICByZXN1bHQgPSB0cnVuY2F0ZUZyb21FbmQoc3RyaW5nLCAxKTsKLSAgICBFWFBFQ1RfRVEo
UlRMLCByZXN1bHQuZGlyZWN0aW9uKTsKKyAgICBFWFBFQ1RfRVEoVGV4dERpcmVjdGlvbjo6UlRM
LCByZXN1bHQuZGlyZWN0aW9uKTsKICAgICBFWFBFQ1RfRVEoU3RyaW5nOjpmcm9tVVRGOCgi16ci
KSwgcmVzdWx0LnN0cmluZyk7CiAKICAgICByZXN1bHQgPSB0cnVuY2F0ZUZyb21FbmQoc3RyaW5n
LCAyKTsKLSAgICBFWFBFQ1RfRVEoUlRMLCByZXN1bHQuZGlyZWN0aW9uKTsKKyAgICBFWFBFQ1Rf
RVEoVGV4dERpcmVjdGlvbjo6UlRMLCByZXN1bHQuZGlyZWN0aW9uKTsKICAgICBFWFBFQ1RfRVEo
U3RyaW5nOjpmcm9tVVRGOCgi16fWuCIpLCByZXN1bHQuc3RyaW5nKTsKIAogICAgIHJlc3VsdCA9
IHRydW5jYXRlRnJvbUVuZChzdHJpbmcsIDEwMDApOwotICAgIEVYUEVDVF9FUShSVEwsIHJlc3Vs
dC5kaXJlY3Rpb24pOworICAgIEVYUEVDVF9FUShUZXh0RGlyZWN0aW9uOjpSVEwsIHJlc3VsdC5k
aXJlY3Rpb24pOwogICAgIEVYUEVDVF9FUShTdHJpbmc6OmZyb21VVEY4KCLXp9a416TWvNeV1rzX
pta0J9eZ16DXlda5IiksIHJlc3VsdC5zdHJpbmcpOwogfQogCkluZGV4OiBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbW1hbmRCYWNrRm9yd2FyZC5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NvbW1hbmRCYWNrRm9y
d2FyZC5tbQkocmV2aXNpb24gMjM0NjE4KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9Db21tYW5kQmFja0ZvcndhcmQubW0JKHdvcmtpbmcgY29weSkKQEAgLTIyMyw3
ICsyMjMsNyBAQCBURVNUX0YoV2ViS2l0Ml9Db21tYW5kQmFja0ZvcndhcmRUZXN0V0tXCiAKICNl
bmRpZgogCi1URVNUX0YoV2ViS2l0Ml9Db21tYW5kQmFja0ZvcndhcmRUZXN0V0tWaWV3LCBMVFIp
CitURVNUX0YoV2ViS2l0Ml9Db21tYW5kQmFja0ZvcndhcmRUZXN0V0tWaWV3LCBUZXh0RGlyZWN0
aW9uOjpMVFIpCiB7CiAgICAgRVhQRUNUX0VRKE5TVXNlckludGVyZmFjZUxheW91dERpcmVjdGlv
bkxlZnRUb1JpZ2h0LCBbd2ViVmlldyB1c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uXSk7CiAg
ICAgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>346675</attachid>
            <date>2018-08-06 18:37:50 -0700</date>
            <delta_ts>2018-08-07 10:01:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188350-20180806183749.patch</filename>
            <type>text/plain</type>
            <size>126805</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNDYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2NCBAQAorMjAxOC0wOC0wNiAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFVzZSBhIDEt
Ynl0ZSBlbnVtIGNsYXNzIGZvciBUZXh0RGlyZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODgzNTAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb24uaDoKKyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBUZXh0RGlyZWN0aW9u
IGNvbnN0KToKKyAgICAgICAgKiBjc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6Om1hdGNoQWxsUnVsZXMpOgorICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dXBkYXRl
VGl0bGVGcm9tVGl0bGVFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRU
aXRsZSk6CisgICAgICAgICogZG9tL1Bvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBv
c2l0aW9uOjpwcmltYXJ5RGlyZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBkb20vUmFuZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2U6OmNvbGxlY3RTZWxlY3Rpb25SZWN0c1dpdGhvdXRV
bmlvbkludGVyaW9yTGluZXMgY29uc3QpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKToKKyAgICAgICAg
KiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmJhc2VXcml0
aW5nRGlyZWN0aW9uRm9yU2VsZWN0aW9uU3RhcnQgY29uc3QpOgorICAgICAgICAqIGVkaXRpbmcv
RnJhbWVTZWxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246Ondp
bGxCZU1vZGlmaWVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjptb2RpZnlF
eHRlbmRpbmdSaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5
RXh0ZW5kaW5nRm9yd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6bW9k
aWZ5TW92aW5nUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246Om1vZGlm
eUV4dGVuZGluZ0xlZnQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246Om1vZGlm
eUV4dGVuZGluZ0JhY2t3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpt
b2RpZnlNb3ZpbmdMZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjp0ZXh0
U2VsZWN0aW9uSW50ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjptb2Rp
ZnkpOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlZpc2libGVQb3NpdGlvbjo6bGVmdFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uOjpyaWdodFZpc3VhbGx5RGlz
dGluY3RDYW5kaWRhdGUgY29uc3QpOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVVuaXRzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnZpc3VhbFdvcmRQb3NpdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpsZWZ0V29yZFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnJpZ2h0V29yZFBvc2l0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmxlZnRCb3VuZGFyeU9mTGluZSk6CisgICAgICAgIChX
ZWJDb3JlOjpyaWdodEJvdW5kYXJ5T2ZMaW5lKToKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpkaXJlY3Rpb25hbGl0eUlmaGFz
RGlyQXV0b0F0dHJpYnV0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6
ZGlyZWN0aW9uYWxpdHkgY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpzZXR1cERhdGVUaW1lQ2hv
b3NlclBhcmFtZXRlcnMpOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmRp
cmVjdGlvbkZvckZvcm1EYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9y
bUNvbnRyb2xFbGVtZW50OjphZGp1c3RJbm5lclRleHRTdHlsZSBjb25zdCk6CisgICAgICAgICog
aHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUaXRsZUVs
ZW1lbnQ6OmNvbXB1dGVkVGV4dFdpdGhEaXJlY3Rpb24pOgorICAgICAgICAqIGh0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OnRvVGV4dERpcmVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRpcmVjdGlvbiBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnRleHRPZmZzZXQpOgorICAgICAg
ICAqIGh0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTbGlkZXJDb250YWluZXI6OmxheW91dCk6CisgICAgICAgICogaHRtbC9zaGFkb3cv
VGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb250
cm9sSW5uZXJFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUpOgorICAgICAgICAqIHBhZ2UvQ2hy
b21lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6c2V0VG9vbFRpcCk6CisgICAgICAg
ICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFnaW5hdGlvbk1vZGVG
b3JSZW5kZXJTdHlsZSk6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy55YW1sOgorICAgICAgICAq
IHBsYXRmb3JtL1JlY3RFZGdlcy5oOgorICAgICAgICAoV2ViQ29yZTo6UmVjdEVkZ2VzOjpzdGFy
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZWN0RWRnZXM6OmVuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZWN0RWRnZXM6OnN0YXJ0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlY3RFZGdlczo6
ZW5kIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlY3RFZGdlczo6c2V0U3RhcnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVjdEVkZ2VzOjpzZXRFbmQpOgorICAgICAgICAqIHBsYXRmb3JtL1Vz
ZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGxleFRl
eHRDb250cm9sbGVyOjpjb21wdXRlRXhwYW5zaW9uT3Bwb3J0dW5pdHkpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRD
YXNjYWRlOjpleHBhbnNpb25PcHBvcnR1bml0eUNvdW50SW50ZXJuYWwpOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udENhc2NhZGU6OmxlYWRpbmdFeHBhbnNpb25PcHBvcnR1bml0eSk6CisgICAgICAg
IChXZWJDb3JlOjpGb250Q2FzY2FkZTo6dHJhaWxpbmdFeHBhbnNpb25PcHBvcnR1bml0eSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0JpZGlUZXh0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmg6CisgICAgICAgIChXZWJDb3JlOjpUZXh0UnVuOjpUZXh0
UnVuKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRSdW46OnJ0bCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0UnVuOjpsdHIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFJ1bjo6
c2V0RGlyZWN0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9y
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldpZHRoSXRlcmF0b3I6OldpZHRoSXRlcmF0b3IpOgor
ICAgICAgICAqIHBsYXRmb3JtL2lvcy9TZWxlY3Rpb25SZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNlbGVjdGlvblJlY3Q6OlNlbGVjdGlvblJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL3Rl
eHQvQmlkaVJlc29sdmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpCaWRpU3RhdHVzOjpCaWRpU3Rh
dHVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1N0cmluZ1dpdGhEaXJlY3Rpb24uaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS90ZXh0L1dyaXRpbmdNb2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpp
c0xlZnRUb1JpZ2h0RGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmlzVmVydGljYWxXcml0
aW5nTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjppc0ZsaXBwZWRXcml0aW5nTW9kZSk6CisgICAg
ICAgIChXZWJDb3JlOjptYXBMb2dpY2FsU2lkZVRvUGh5c2ljYWxTaWRlKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVz
dWx0OjpzcGVsbGluZ1Rvb2xUaXAgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJl
c3VsdDo6dGl0bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6aW5u
ZXJUZXh0SWZUcnVuY2F0ZWQgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVCb3gu
aDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUJveDo6ZGlyZWN0aW9uIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OklubGluZUJveDo6aXNMZWZ0VG9SaWdodERpcmVjdGlvbiBjb25zdCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5saW5lRmxvd0JveDo6cGFpbnRGaWxsTGF5ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9Jbmxp
bmVJdGVyYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6ZW1iZWRDaGFyRnJvbURpcmVjdGlvbik6
CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5saW5lVGV4dEJveDo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6bWlycm9yUlRMU2Vn
bWVudCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRldGVybWlu
ZURpcmVjdGlvbmFsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6dGV4
dEFsaWdubWVudEZvckxpbmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tG
bG93Ojp1cGRhdGVMb2dpY2FsV2lkdGhGb3JBbGlnbm1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQmxvY2tGbG93OjpoYW5kbGVUcmFpbGluZ1NwYWNlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCbG9ja0Zsb3c6OmxheW91dFJ1bnNBbmRGbG9hdHNJblJhbmdlKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVJbmxp
bmVTdGF0aWNEaXN0YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVQ
b3NpdGlvbmVkTG9naWNhbFdpZHRoVXNpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aFJlcGxhY2VkIGNvbnN0KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6YXBwbHlMaW5lQ2xhbXAp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGcmFnbWVudGVkRmxvdy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJGcmFnbWVudGVkRmxvdzo6dXBkYXRlTG9naWNhbFdpZHRoKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckZyYWdtZW50ZWRGbG93Ojp1cGRhdGVGcmFnbWVudHNGcmFn
bWVudGVkRmxvd1BvcnRpb25SZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllck1vZGVsT2JqZWN0
OjpzaG91bGRQbGFjZUJsb2NrRGlyZWN0aW9uU2Nyb2xsYmFyT25MZWZ0IGNvbnN0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTWFycXVlZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJNYXJxdWVlOjpkaXJlY3Rpb24gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJN
ZW51TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZW51TGlzdDo6YWRqdXN0SW5u
ZXJTdHlsZSk6CisgICAgICAgIChSZW5kZXJNZW51TGlzdDo6Y2xpZW50UGFkZGluZ0xlZnQgY29u
c3QpOgorICAgICAgICAoUmVuZGVyTWVudUxpc3Q6OmNsaWVudFBhZGRpbmdSaWdodCBjb25zdCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWVJT1M6OnBvcHVwSW50ZXJuYWxQYWRkaW5nQm94IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludE1lbnVMaXN0QnV0dG9uRGVjb3JhdGlv
bnMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludE1lbnVMaXN0QnV0dG9uRGVjb3JhdGlvbnMpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBvcHVwSW50ZXJuYWxQYWRkaW5nQm94
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpzZXRQb3B1cEJ1dHRv
bkNlbGxTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRTZWFy
Y2hGaWVsZENhbmNlbEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6
cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24pOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1M
QmxvY2s6Om1pcnJvcklmTmVlZGVkIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhN
TE9wZXJhdG9yOjpsYXlvdXRCbG9jayk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpSZW5kZXJTdHlsZSk6
CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTdHlsZTo6aXNMZWZ0VG9SaWdodERpcmVjdGlvbiBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbERpcmVjdGlvbik6CisgICAgICAgICogdGVz
dGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsU2V0
dGluZ3M6OnN5c3RlbUxheW91dERpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5h
bFNldHRpbmdzOjpzZXRTeXN0ZW1MYXlvdXREaXJlY3Rpb24pOgorICAgICAgICAqIHRlc3Rpbmcv
SW50ZXJuYWxzLmg6CisKIDIwMTgtMDgtMDQgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgQWRkIENFUmVhY3Rpb25zPU5vdE5lZWRlZCBmb3IgcmVhY3Rpb25zIG9u
bHkgbmVlZGVkIGZvciBjdXN0b21pemVkIGJ1aWx0aW5zCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCShyZXZpc2lvbiAy
MzQ2MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogICAgIGNvbnN0
IFN0cmluZyYgdGFnKCkgY29uc3QgeyByZXR1cm4gbV90YWc7IH0KICAgICBjb25zdCBVUkwmIGlj
b24oKSBjb25zdCB7IHJldHVybiBtX2ljb247IH0KIAotICAgIFRleHREaXJlY3Rpb24gZGlyZWN0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kaXJlY3Rpb24gPT0gRGlyZWN0aW9uOjpSdGwgPyBSVEwg
OiBMVFI7IH0KKyAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
ZGlyZWN0aW9uID09IERpcmVjdGlvbjo6UnRsID8gVGV4dERpcmVjdGlvbjo6UlRMIDogVGV4dERp
cmVjdGlvbjo6TFRSOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpc3BhdGNoQ2xpY2tF
dmVudCgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlzcGF0Y2hDbG9zZUV2ZW50KCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50
ZXJmYWNlVGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCShyZXZpc2lvbiAyMzQ2MTgp
CisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50
ZXJmYWNlVGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzNSw3ICszMzUsNyBAQCBzdGF0aWMg
aW50IG9mZnNldEFkanVzdG1lbnRGb3JMaXN0SXRlbShjCiAgICAgLy8gV2UgbmVlZCB0byBhZGp1
c3QgdGhlIG9mZnNldHMgZm9yIHRoZSBsaXN0IGl0ZW0gbWFya2VyIGluCiAgICAgLy8gTGVmdC1U
by1SaWdodCB0ZXh0LCBzaW5jZSB3ZSBleHBvc2UgaXQgdG9nZXRoZXIgd2l0aCB0aGUgdGV4dC4K
ICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gb2JqZWN0LT5yZW5kZXJlcigpOwotICAgIGlm
IChpczxSZW5kZXJMaXN0SXRlbT4ocmVuZGVyZXIpICYmIHJlbmRlcmVyLT5zdHlsZSgpLmRpcmVj
dGlvbigpID09IExUUikKKyAgICBpZiAoaXM8UmVuZGVyTGlzdEl0ZW0+KHJlbmRlcmVyKSAmJiBy
ZW5kZXJlci0+c3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpCiAgICAg
ICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJMaXN0SXRlbT4oKnJlbmRlcmVyKS5tYXJrZXJUZXh0
V2l0aFN1ZmZpeCgpLmxlbmd0aCgpOwogCiAgICAgcmV0dXJuIDA7CkBAIC00NjIsNyArNDYyLDcg
QEAgc3RhdGljIGdjaGFyKiB3ZWJraXRBY2Nlc3NpYmxlVGV4dEdldFRleAogICAgICAgICBSZW5k
ZXJPYmplY3QqIG9ialJlbmRlcmVyID0gY29yZU9iamVjdC0+cmVuZGVyZXIoKTsKICAgICAgICAg
aWYgKGlzPFJlbmRlckxpc3RJdGVtPihvYmpSZW5kZXJlcikpIHsKICAgICAgICAgICAgIFN0cmlu
ZyBtYXJrZXJUZXh0ID0gZG93bmNhc3Q8UmVuZGVyTGlzdEl0ZW0+KCpvYmpSZW5kZXJlcikubWFy
a2VyVGV4dFdpdGhTdWZmaXgoKTsKLSAgICAgICAgICAgIHJldCA9IG9ialJlbmRlcmVyLT5zdHls
ZSgpLmRpcmVjdGlvbigpID09IExUUiA/IG1hcmtlclRleHQgKyByZXQgOiByZXQgKyBtYXJrZXJU
ZXh0OworICAgICAgICAgICAgcmV0ID0gb2JqUmVuZGVyZXItPnN0eWxlKCkuZGlyZWN0aW9uKCkg
PT0gVGV4dERpcmVjdGlvbjo6TFRSID8gbWFya2VyVGV4dCArIHJldCA6IHJldCArIG1hcmtlclRl
eHQ7CiAgICAgICAgICAgICBpZiAoZW5kT2Zmc2V0ID09IC0xKQogICAgICAgICAgICAgICAgIGFj
dHVhbEVuZE9mZnNldCA9IHJldC5sZW5ndGgoKSArIG1hcmtlclRleHQubGVuZ3RoKCk7CiAgICAg
ICAgIH0KQEAgLTkwNSwxMSArOTA1LDExIEBAIHN0YXRpYyBjaGFyKiB3ZWJraXRBY2Nlc3NpYmxl
VGV4dExpbmVGb3IKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gY29yZU9iamVjdC0+cmVu
ZGVyZXIoKTsKICAgICBpZiAocmVuZGVyZXItPmlzTGlzdEl0ZW0oKSkgewogICAgICAgICAvLyBG
b3IgTGVmdC10by1SaWdodCwgdGhlIGxpc3QgaXRlbSBtYXJrZXIgaXMgYXQgdGhlIGJlZ2lubmlu
ZyBvZiB0aGUgZXhwb3NlZCB0ZXh0LgotICAgICAgICBpZiAocmVuZGVyZXItPnN0eWxlKCkuZGly
ZWN0aW9uKCkgPT0gTFRSICYmIGlzRmlyc3RWaXNpYmxlUG9zaXRpb25Jbk5vZGUoc2VsZWN0ZWRM
aW5lLnZpc2libGVTdGFydCgpLCBub2RlKSkKKyAgICAgICAgaWYgKHJlbmRlcmVyLT5zdHlsZSgp
LmRpcmVjdGlvbigpID09IFRleHREaXJlY3Rpb246OkxUUiAmJiBpc0ZpcnN0VmlzaWJsZVBvc2l0
aW9uSW5Ob2RlKHNlbGVjdGVkTGluZS52aXNpYmxlU3RhcnQoKSwgbm9kZSkpCiAgICAgICAgICAg
ICAqc3RhcnRPZmZzZXQgPSAwOwogCiAgICAgICAgIC8vIEZvciBSaWdodC10by1MZWZ0LCB0aGUg
bGlzdCBpdGVtIG1hcmtlciBpcyBhdCB0aGUgZW5kIG9mIHRoZSBleHBvc2VkIHRleHQuCi0gICAg
ICAgIGlmIChyZW5kZXJlci0+c3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBSVEwgJiYgaXNMYXN0Vmlz
aWJsZVBvc2l0aW9uSW5Ob2RlKHNlbGVjdGVkTGluZS52aXNpYmxlRW5kKCksIG5vZGUpKQorICAg
ICAgICBpZiAocmVuZGVyZXItPnN0eWxlKCkuZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6
UlRMICYmIGlzTGFzdFZpc2libGVQb3NpdGlvbkluTm9kZShzZWxlY3RlZExpbmUudmlzaWJsZUVu
ZCgpLCBub2RlKSkKICAgICAgICAgICAgICplbmRPZmZzZXQgPSBhY2Nlc3NpYmlsaXR5T2JqZWN0
TGVuZ3RoKGNvcmVPYmplY3QpOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NT
U1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCShyZXZpc2lvbiAyMzQ2MTgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMTUwLDEwICszMTUwLDEwIEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1MKIHsKICAgICBtX3ByaW1pdGl2ZVVuaXRUeXBlID0gQ1NTX1ZBTFVFX0lEOwogICAg
IHN3aXRjaCAoZSkgewotICAgIGNhc2UgTFRSOgorICAgIGNhc2UgVGV4dERpcmVjdGlvbjo6TFRS
OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUx0cjsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBSVEw6CisgICAgY2FzZSBUZXh0RGlyZWN0aW9uOjpSVEw6CiAgICAgICAgIG1f
dmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlUnRsOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0z
MTY1LDE1ICszMTY1LDE1IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpv
cGUKIAogICAgIHN3aXRjaCAobV92YWx1ZS52YWx1ZUlEKSB7CiAgICAgY2FzZSBDU1NWYWx1ZUx0
cjoKLSAgICAgICAgcmV0dXJuIExUUjsKKyAgICAgICAgcmV0dXJuIFRleHREaXJlY3Rpb246OkxU
UjsKICAgICBjYXNlIENTU1ZhbHVlUnRsOgotICAgICAgICByZXR1cm4gUlRMOworICAgICAgICBy
ZXR1cm4gVGV4dERpcmVjdGlvbjo6UlRMOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBMVFI7CisgICAg
cmV0dXJuIFRleHREaXJlY3Rpb246OkxUUjsKIH0KIAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFdyaXRpbmdNb2RlIGUpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAJKHJldmlzaW9uIDIzNDYx
OCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTUxOCw3ICs1MTgsNyBAQCB2b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjpt
YXRjaEFsbFJ1bGVzCiAgICAgICAgICAgICBib29sIGlzQXV0bzsKICAgICAgICAgICAgIFRleHRE
aXJlY3Rpb24gdGV4dERpcmVjdGlvbiA9IGRvd25jYXN0PEhUTUxFbGVtZW50PihzdHlsZWRFbGVt
ZW50KS5kaXJlY3Rpb25hbGl0eUlmaGFzRGlyQXV0b0F0dHJpYnV0ZShpc0F1dG8pOwogICAgICAg
ICAgICAgaWYgKGlzQXV0bykKLSAgICAgICAgICAgICAgICBtX3Jlc3VsdC5hZGRNYXRjaGVkUHJv
cGVydGllcyh0ZXh0RGlyZWN0aW9uID09IExUUiA/IGxlZnRUb1JpZ2h0RGVjbGFyYXRpb24oKSA6
IHJpZ2h0VG9MZWZ0RGVjbGFyYXRpb24oKSk7CisgICAgICAgICAgICAgICAgbV9yZXN1bHQuYWRk
TWF0Y2hlZFByb3BlcnRpZXModGV4dERpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBs
ZWZ0VG9SaWdodERlY2xhcmF0aW9uKCkgOiByaWdodFRvTGVmdERlY2xhcmF0aW9uKCkpOwogICAg
ICAgICB9CiAgICAgfQogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lv
biAyMzQ2MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTE0LDcgKzE1MTQsNyBAQCB2b2lkIERvY3VtZW50Ojp1cGRhdGVUaXRsZUZyb21U
aXRsZUVsZW1lCiAgICAgICAgIHVwZGF0ZVRpdGxlKGRvd25jYXN0PEhUTUxUaXRsZUVsZW1lbnQ+
KCptX3RpdGxlRWxlbWVudCkudGV4dFdpdGhEaXJlY3Rpb24oKSk7CiAgICAgZWxzZSBpZiAoaXM8
U1ZHVGl0bGVFbGVtZW50PigqbV90aXRsZUVsZW1lbnQpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBE
b2VzIHRoZSBTVkcgdGl0bGUgZWxlbWVudCBoYXZlIGEgdGV4dCBkaXJlY3Rpb24/Ci0gICAgICAg
IHVwZGF0ZVRpdGxlKHsgZG93bmNhc3Q8U1ZHVGl0bGVFbGVtZW50PigqbV90aXRsZUVsZW1lbnQp
LnRleHRDb250ZW50KCksIExUUiB9KTsKKyAgICAgICAgdXBkYXRlVGl0bGUoeyBkb3duY2FzdDxT
VkdUaXRsZUVsZW1lbnQ+KCptX3RpdGxlRWxlbWVudCkudGV4dENvbnRlbnQoKSwgVGV4dERpcmVj
dGlvbjo6TFRSIH0pOwogICAgIH0KIH0KIApAQCAtMTU0Niw3ICsxNTQ2LDcgQEAgdm9pZCBEb2N1
bWVudDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nJiB0aQogICAgIGVsc2UgaWYgKGlzPFNWR1RpdGxl
RWxlbWVudD4obV90aXRsZUVsZW1lbnQuZ2V0KCkpKQogICAgICAgICBkb3duY2FzdDxTVkdUaXRs
ZUVsZW1lbnQ+KCptX3RpdGxlRWxlbWVudCkuc2V0VGV4dENvbnRlbnQodGl0bGUpOwogICAgIGVs
c2UKLSAgICAgICAgdXBkYXRlVGl0bGUoeyB0aXRsZSwgTFRSIH0pOworICAgICAgICB1cGRhdGVU
aXRsZSh7IHRpdGxlLCBUZXh0RGlyZWN0aW9uOjpMVFIgfSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lPiBzdHJ1Y3QgVGl0bGVUcmFpdHM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRp
b24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAJKHJl
dmlzaW9uIDIzNDYxOCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEzODgsMTAgKzEzODgsMTAgQEAgdm9pZCBQb3NpdGlvbjo6Z2V0SW5saW5l
Qm94QW5kT2Zmc2V0KEVBZgogVGV4dERpcmVjdGlvbiBQb3NpdGlvbjo6cHJpbWFyeURpcmVjdGlv
bigpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2FuY2hvck5vZGUtPnJlbmRlcmVyKCkpCi0gICAgICAg
IHJldHVybiBMVFI7CisgICAgICAgIHJldHVybiBUZXh0RGlyZWN0aW9uOjpMVFI7CiAgICAgaWYg
KGF1dG8qIGJsb2NrRmxvdyA9IGxpbmVhZ2VPZlR5cGU8UmVuZGVyQmxvY2tGbG93PigqbV9hbmNo
b3JOb2RlLT5yZW5kZXJlcigpKS5maXJzdCgpKQogICAgICAgICByZXR1cm4gYmxvY2tGbG93LT5z
dHlsZSgpLmRpcmVjdGlvbigpOwotICAgIHJldHVybiBMVFI7CisgICAgcmV0dXJuIFRleHREaXJl
Y3Rpb246OkxUUjsKIH0KIAogI2lmIEVOQUJMRShUUkVFX0RFQlVHR0lORykKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9t
L1JhbmdlLmNwcAkocmV2aXNpb24gMjM0NjE4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1Jhbmdl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQzMSw3ICsxNDMxLDcgQEAgaW50IFJhbmdlOjpjb2xs
ZWN0U2VsZWN0aW9uUmVjdHNXaXRob3V0VQogICAgICAgICBpZiAocmVjdHNbal0ubGluZU51bWJl
cigpICE9IHJlY3RzW2ogLSAxXS5saW5lTnVtYmVyKCkpCiAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgU2VsZWN0aW9uUmVjdCYgcHJldmlvdXNSZWN0ID0gcmVjdHNbaiAtIDFdOwotICAg
ICAgICBib29sIHByZXZpb3VzUmVjdE1heU5vdFJlYWNoUmlnaHRFZGdlID0gKHByZXZpb3VzUmVj
dC5kaXJlY3Rpb24oKSA9PSBMVFIgJiYgcHJldmlvdXNSZWN0LmNvbnRhaW5zRW5kKCkpIHx8IChw
cmV2aW91c1JlY3QuZGlyZWN0aW9uKCkgPT0gUlRMICYmIHByZXZpb3VzUmVjdC5jb250YWluc1N0
YXJ0KCkpOworICAgICAgICBib29sIHByZXZpb3VzUmVjdE1heU5vdFJlYWNoUmlnaHRFZGdlID0g
KHByZXZpb3VzUmVjdC5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgJiYgcHJldmlv
dXNSZWN0LmNvbnRhaW5zRW5kKCkpIHx8IChwcmV2aW91c1JlY3QuZGlyZWN0aW9uKCkgPT0gVGV4
dERpcmVjdGlvbjo6UlRMICYmIHByZXZpb3VzUmVjdC5jb250YWluc1N0YXJ0KCkpOwogICAgICAg
ICBpZiAocHJldmlvdXNSZWN0TWF5Tm90UmVhY2hSaWdodEVkZ2UpCiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgaW50IGFkanVzdGVkV2lkdGggPSByZWN0c1tqXS5sb2dpY2FsTGVmdCgp
IC0gcHJldmlvdXNSZWN0LmxvZ2ljYWxMZWZ0KCk7CkBAIC0xNDQ2LDEwICsxNDQ2LDEwIEBAIGlu
dCBSYW5nZTo6Y29sbGVjdFNlbGVjdGlvblJlY3RzV2l0aG91dFUKICAgICAgICAgU2VsZWN0aW9u
UmVjdCYgc2VsZWN0aW9uUmVjdCA9IHJlY3RzW2ldOwogICAgICAgICBpZiAoIXNlbGVjdGlvblJl
Y3QuaXNMaW5lQnJlYWsoKSAmJiBzZWxlY3Rpb25SZWN0LmxpbmVOdW1iZXIoKSA+PSBtYXhMaW5l
TnVtYmVyKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmIChzZWxlY3Rpb25SZWN0
LmRpcmVjdGlvbigpID09IFJUTCAmJiBzZWxlY3Rpb25SZWN0LmlzRmlyc3RPbkxpbmUoKSkgewor
ICAgICAgICBpZiAoc2VsZWN0aW9uUmVjdC5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpS
VEwgJiYgc2VsZWN0aW9uUmVjdC5pc0ZpcnN0T25MaW5lKCkpIHsKICAgICAgICAgICAgIHNlbGVj
dGlvblJlY3Quc2V0TG9naWNhbFdpZHRoKHNlbGVjdGlvblJlY3QubG9naWNhbFdpZHRoKCkgKyBz
ZWxlY3Rpb25SZWN0LmxvZ2ljYWxMZWZ0KCkgLSBzZWxlY3Rpb25SZWN0Lm1pblgoKSk7CiAgICAg
ICAgICAgICBzZWxlY3Rpb25SZWN0LnNldExvZ2ljYWxMZWZ0KHNlbGVjdGlvblJlY3QubWluWCgp
KTsKLSAgICAgICAgfSBlbHNlIGlmIChzZWxlY3Rpb25SZWN0LmRpcmVjdGlvbigpID09IExUUiAm
JiBzZWxlY3Rpb25SZWN0LmlzTGFzdE9uTGluZSgpKQorICAgICAgICB9IGVsc2UgaWYgKHNlbGVj
dGlvblJlY3QuZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSICYmIHNlbGVjdGlvblJl
Y3QuaXNMYXN0T25MaW5lKCkpCiAgICAgICAgICAgICBzZWxlY3Rpb25SZWN0LnNldExvZ2ljYWxX
aWR0aChzZWxlY3Rpb25SZWN0Lm1heFgoKSAtIHNlbGVjdGlvblJlY3QubG9naWNhbExlZnQoKSk7
CiAgICAgfQogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwCShyZXZpc2lv
biAyMzQ2MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNjIsMTAgKzM2MiwxMCBAQCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbk9mRW5j
bG9zaW5nQmxvY2soCiB7CiAgICAgYXV0byBibG9jayA9IGVuY2xvc2luZ0Jsb2NrKHBvc2l0aW9u
LmNvbnRhaW5lck5vZGUoKSk7CiAgICAgaWYgKCFibG9jaykKLSAgICAgICAgcmV0dXJuIExUUjsK
KyAgICAgICAgcmV0dXJuIFRleHREaXJlY3Rpb246OkxUUjsKICAgICBhdXRvIHJlbmRlcmVyID0g
YmxvY2stPnJlbmRlcmVyKCk7CiAgICAgaWYgKCFyZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIExU
UjsKKyAgICAgICAgcmV0dXJuIFRleHREaXJlY3Rpb246OkxUUjsKICAgICByZXR1cm4gcmVuZGVy
ZXItPnN0eWxlKCkuZGlyZWN0aW9uKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5jcHAJKHJldmlzaW9uIDIzNDYxOCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc2Miw5ICsxNzYyLDkgQEAgV3JpdGluZ0RpcmVjdGlv
biBFZGl0b3I6OmJhc2VXcml0aW5nRGlyZQogICAgIH0KIAogICAgIHN3aXRjaCAocmVuZGVyZXIt
PnN0eWxlKCkuZGlyZWN0aW9uKCkpIHsKLSAgICBjYXNlIExUUjoKKyAgICBjYXNlIFRleHREaXJl
Y3Rpb246OkxUUjoKICAgICAgICAgcmV0dXJuIExlZnRUb1JpZ2h0V3JpdGluZ0RpcmVjdGlvbjsK
LSAgICBjYXNlIFJUTDoKKyAgICBjYXNlIFRleHREaXJlY3Rpb246OlJUTDoKICAgICAgICAgcmV0
dXJuIFJpZ2h0VG9MZWZ0V3JpdGluZ0RpcmVjdGlvbjsKICAgICB9CiAgICAgCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAkocmV2aXNpb24gMjM0NjE4KQor
KysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTYzMyw3ICs2MzMsNyBAQCB2b2lkIEZyYW1lU2VsZWN0aW9uOjp3aWxsQmVNb2RpZmll
ZChFQWx0CiAgICAgfSBlbHNlIHsKICAgICAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKICAgICAg
ICAgY2FzZSBEaXJlY3Rpb25SaWdodDoKLSAgICAgICAgICAgIGlmIChkaXJlY3Rpb25PZlNlbGVj
dGlvbigpID09IExUUikKKyAgICAgICAgICAgIGlmIChkaXJlY3Rpb25PZlNlbGVjdGlvbigpID09
IFRleHREaXJlY3Rpb246OkxUUikKICAgICAgICAgICAgICAgICBiYXNlSXNTdGFydCA9IHRydWU7
CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgYmFzZUlzU3RhcnQgPSBmYWxzZTsK
QEAgLTY0Miw3ICs2NDIsNyBAQCB2b2lkIEZyYW1lU2VsZWN0aW9uOjp3aWxsQmVNb2RpZmllZChF
QWx0CiAgICAgICAgICAgICBiYXNlSXNTdGFydCA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBEaXJlY3Rpb25MZWZ0OgotICAgICAgICAgICAgaWYgKGRpcmVjdGlvbk9m
U2VsZWN0aW9uKCkgPT0gTFRSKQorICAgICAgICAgICAgaWYgKGRpcmVjdGlvbk9mU2VsZWN0aW9u
KCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSKQogICAgICAgICAgICAgICAgIGJhc2VJc1N0YXJ0ID0g
ZmFsc2U7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgYmFzZUlzU3RhcnQgPSB0
cnVlOwpAQCAtNzE4LDIzICs3MTgsMjMgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9u
Ojptb2RpZnlFeAogICAgIC8vIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gbW9kaWZ5RXh0ZW5kaW5n
UmlnaHQgYW5kIG1vZGlmeUV4dGVuZGluZ0ZvcndhcmQgaXM6CiAgICAgLy8gbW9kaWZ5RXh0ZW5k
aW5nRm9yd2FyZCBhbHdheXMgZXh0ZW5kcyBmb3J3YXJkIGxvZ2ljYWxseS4KICAgICAvLyBtb2Rp
ZnlFeHRlbmRpbmdSaWdodCBiZWhhdmVzIHRoZSBzYW1lIGFzIG1vZGlmeUV4dGVuZGluZ0Zvcndh
cmQgZXhjZXB0IGZvciBleHRlbmRpbmcgY2hhcmFjdGVyIG9yIHdvcmQsCi0gICAgLy8gaXQgZXh0
ZW5kcyBmb3J3YXJkIGxvZ2ljYWxseSBpZiB0aGUgZW5jbG9zaW5nIGJsb2NrIGlzIExUUiBkaXJl
Y3Rpb24sCi0gICAgLy8gYnV0IGl0IGV4dGVuZHMgYmFja3dhcmQgbG9naWNhbGx5IGlmIHRoZSBl
bmNsb3NpbmcgYmxvY2sgaXMgUlRMIGRpcmVjdGlvbi4KKyAgICAvLyBpdCBleHRlbmRzIGZvcndh
cmQgbG9naWNhbGx5IGlmIHRoZSBlbmNsb3NpbmcgYmxvY2sgaXMgVGV4dERpcmVjdGlvbjo6TFRS
LAorICAgIC8vIGJ1dCBpdCBleHRlbmRzIGJhY2t3YXJkIGxvZ2ljYWxseSBpZiB0aGUgZW5jbG9z
aW5nIGJsb2NrIGlzIFRleHREaXJlY3Rpb246OlJUTC4KICAgICBzd2l0Y2ggKGdyYW51bGFyaXR5
KSB7CiAgICAgY2FzZSBDaGFyYWN0ZXJHcmFudWxhcml0eToKLSAgICAgICAgaWYgKGRpcmVjdGlv
bk9mRW5jbG9zaW5nQmxvY2soKSA9PSBMVFIpCisgICAgICAgIGlmIChkaXJlY3Rpb25PZkVuY2xv
c2luZ0Jsb2NrKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSKQogICAgICAgICAgICAgcG9zID0gcG9z
Lm5leHQoQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkpOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBwb3MgPSBwb3MucHJldmlvdXMoQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIFdvcmRHcmFudWxhcml0eToKLSAgICAgICAgaWYgKGRpcmVj
dGlvbk9mRW5jbG9zaW5nQmxvY2soKSA9PSBMVFIpCisgICAgICAgIGlmIChkaXJlY3Rpb25PZkVu
Y2xvc2luZ0Jsb2NrKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSKQogICAgICAgICAgICAgcG9zID0g
bmV4dFdvcmRQb3NpdGlvbkZvclBsYXRmb3JtKHBvcyk7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIHBvcyA9IHByZXZpb3VzV29yZFBvc2l0aW9uKHBvcyk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgTGluZUJvdW5kYXJ5OgotICAgICAgICBpZiAoZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9j
aygpID09IExUUikKKyAgICAgICAgaWYgKGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2soKSA9PSBU
ZXh0RGlyZWN0aW9uOjpMVFIpCiAgICAgICAgICAgICBwb3MgPSBtb2RpZnlFeHRlbmRpbmdGb3J3
YXJkKGdyYW51bGFyaXR5KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcG9zID0gbW9kaWZ5
RXh0ZW5kaW5nQmFja3dhcmQoZ3JhbnVsYXJpdHkpOwpAQCAtNzUzLDcgKzc1Myw3IEBAIFZpc2li
bGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5RXgKICAgICAgICAgYnJlYWs7CiAgICAg
fQogI2lmIEVOQUJMRShVU0VSU0VMRUNUX0FMTCkKLSAgICBhZGp1c3RQb3NpdGlvbkZvclVzZXJT
ZWxlY3RBbGwocG9zLCBkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCkgPT0gTFRSKTsKKyAgICBh
ZGp1c3RQb3NpdGlvbkZvclVzZXJTZWxlY3RBbGwocG9zLCBkaXJlY3Rpb25PZkVuY2xvc2luZ0Js
b2NrKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSKTsKICNlbmRpZgogICAgIHJldHVybiBwb3M7CiB9
CkBAIC03OTgsNyArNzk4LDcgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2Rp
ZnlFeAogICAgICAgICBicmVhazsKICAgICB9CiAjaWYgRU5BQkxFKFVTRVJTRUxFQ1RfQUxMKQot
ICAgICBhZGp1c3RQb3NpdGlvbkZvclVzZXJTZWxlY3RBbGwocG9zLCBkaXJlY3Rpb25PZkVuY2xv
c2luZ0Jsb2NrKCkgPT0gTFRSKTsKKyAgICBhZGp1c3RQb3NpdGlvbkZvclVzZXJTZWxlY3RBbGwo
cG9zLCBkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSKTsK
ICNlbmRpZgogICAgIHJldHVybiBwb3M7CiB9CkBAIC04MTEsNyArODExLDcgQEAgVmlzaWJsZVBv
c2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlNbwogICAgIHN3aXRjaCAoZ3JhbnVsYXJpdHkp
IHsKICAgICBjYXNlIENoYXJhY3RlckdyYW51bGFyaXR5OgogICAgICAgICBpZiAoaXNSYW5nZSgp
KSB7Ci0gICAgICAgICAgICBpZiAoZGlyZWN0aW9uT2ZTZWxlY3Rpb24oKSA9PSBMVFIpCisgICAg
ICAgICAgICBpZiAoZGlyZWN0aW9uT2ZTZWxlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIp
CiAgICAgICAgICAgICAgICAgcG9zID0gVmlzaWJsZVBvc2l0aW9uKG1fc2VsZWN0aW9uLmVuZCgp
LCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
ICAgICBwb3MgPSBWaXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24uc3RhcnQoKSwgbV9zZWxlY3Rp
b24uYWZmaW5pdHkoKSk7CkBAIC05MzUsMjMgKzkzNSwyMyBAQCBWaXNpYmxlUG9zaXRpb24gRnJh
bWVTZWxlY3Rpb246Om1vZGlmeUV4CiAgICAgLy8gVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBtb2Rp
ZnlFeHRlbmRpbmdMZWZ0IGFuZCBtb2RpZnlFeHRlbmRpbmdCYWNrd2FyZCBpczoKICAgICAvLyBt
b2RpZnlFeHRlbmRpbmdCYWNrd2FyZCBhbHdheXMgZXh0ZW5kcyBiYWNrd2FyZCBsb2dpY2FsbHku
CiAgICAgLy8gbW9kaWZ5RXh0ZW5kaW5nTGVmdCBiZWhhdmVzIHRoZSBzYW1lIGFzIG1vZGlmeUV4
dGVuZGluZ0JhY2t3YXJkIGV4Y2VwdCBmb3IgZXh0ZW5kaW5nIGNoYXJhY3RlciBvciB3b3JkLAot
ICAgIC8vIGl0IGV4dGVuZHMgYmFja3dhcmQgbG9naWNhbGx5IGlmIHRoZSBlbmNsb3NpbmcgYmxv
Y2sgaXMgTFRSIGRpcmVjdGlvbiwKLSAgICAvLyBidXQgaXQgZXh0ZW5kcyBmb3J3YXJkIGxvZ2lj
YWxseSBpZiB0aGUgZW5jbG9zaW5nIGJsb2NrIGlzIFJUTCBkaXJlY3Rpb24uCisgICAgLy8gaXQg
ZXh0ZW5kcyBiYWNrd2FyZCBsb2dpY2FsbHkgaWYgdGhlIGVuY2xvc2luZyBibG9jayBpcyBUZXh0
RGlyZWN0aW9uOjpMVFIsCisgICAgLy8gYnV0IGl0IGV4dGVuZHMgZm9yd2FyZCBsb2dpY2FsbHkg
aWYgdGhlIGVuY2xvc2luZyBibG9jayBpcyBUZXh0RGlyZWN0aW9uOjpSVEwuCiAgICAgc3dpdGNo
IChncmFudWxhcml0eSkgewogICAgIGNhc2UgQ2hhcmFjdGVyR3JhbnVsYXJpdHk6Ci0gICAgICAg
IGlmIChkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCkgPT0gTFRSKQorICAgICAgICBpZiAoZGly
ZWN0aW9uT2ZFbmNsb3NpbmdCbG9jaygpID09IFRleHREaXJlY3Rpb246OkxUUikKICAgICAgICAg
ICAgIHBvcyA9IHBvcy5wcmV2aW91cyhDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSk7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIHBvcyA9IHBvcy5uZXh0KENhbm5vdENyb3NzRWRpdGluZ0Jv
dW5kYXJ5KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6Ci0gICAg
ICAgIGlmIChkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCkgPT0gTFRSKQorICAgICAgICBpZiAo
ZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9jaygpID09IFRleHREaXJlY3Rpb246OkxUUikKICAgICAg
ICAgICAgIHBvcyA9IHByZXZpb3VzV29yZFBvc2l0aW9uKHBvcyk7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIHBvcyA9IG5leHRXb3JkUG9zaXRpb25Gb3JQbGF0Zm9ybShwb3MpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIExpbmVCb3VuZGFyeToKLSAgICAgICAgaWYgKGRpcmVjdGlvbk9m
RW5jbG9zaW5nQmxvY2soKSA9PSBMVFIpCisgICAgICAgIGlmIChkaXJlY3Rpb25PZkVuY2xvc2lu
Z0Jsb2NrKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSKQogICAgICAgICAgICAgcG9zID0gbW9kaWZ5
RXh0ZW5kaW5nQmFja3dhcmQoZ3JhbnVsYXJpdHkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBwb3MgPSBtb2RpZnlFeHRlbmRpbmdGb3J3YXJkKGdyYW51bGFyaXR5KTsKQEAgLTk2OSw3ICs5
NjksNyBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeUV4CiAgICAgICAg
IGJyZWFrOwogICAgIH0KICNpZiBFTkFCTEUoVVNFUlNFTEVDVF9BTEwpCi0gICAgYWRqdXN0UG9z
aXRpb25Gb3JVc2VyU2VsZWN0QWxsKHBvcywgIShkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCkg
PT0gTFRSKSk7CisgICAgYWRqdXN0UG9zaXRpb25Gb3JVc2VyU2VsZWN0QWxsKHBvcywgIShkaXJl
Y3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSKSk7CiAjZW5kaWYK
ICAgICByZXR1cm4gcG9zOwogfQpAQCAtMTAxOSw3ICsxMDE5LDcgQEAgVmlzaWJsZVBvc2l0aW9u
IEZyYW1lU2VsZWN0aW9uOjptb2RpZnlFeAogICAgICAgICBicmVhazsKICAgICB9CiAjaWYgRU5B
QkxFKFVTRVJTRUxFQ1RfQUxMKQotICAgIGFkanVzdFBvc2l0aW9uRm9yVXNlclNlbGVjdEFsbChw
b3MsICEoZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9jaygpID09IExUUikpOworICAgIGFkanVzdFBv
c2l0aW9uRm9yVXNlclNlbGVjdEFsbChwb3MsICEoZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9jaygp
ID09IFRleHREaXJlY3Rpb246OkxUUikpOwogI2VuZGlmCiAgICAgcmV0dXJuIHBvczsKIH0KQEAg
LTEwMzIsNyArMTAzMiw3IEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5
TW8KICAgICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7CiAgICAgY2FzZSBDaGFyYWN0ZXJHcmFudWxh
cml0eToKICAgICAgICAgaWYgKGlzUmFuZ2UoKSkKLSAgICAgICAgICAgIGlmIChkaXJlY3Rpb25P
ZlNlbGVjdGlvbigpID09IExUUikKKyAgICAgICAgICAgIGlmIChkaXJlY3Rpb25PZlNlbGVjdGlv
bigpID09IFRleHREaXJlY3Rpb246OkxUUikKICAgICAgICAgICAgICAgICBwb3MgPSBWaXNpYmxl
UG9zaXRpb24obV9zZWxlY3Rpb24uc3RhcnQoKSwgbV9zZWxlY3Rpb24uYWZmaW5pdHkoKSk7CiAg
ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgcG9zID0gVmlzaWJsZVBvc2l0aW9uKG1f
c2VsZWN0aW9uLmVuZCgpLCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKTsKQEAgLTExNTQsNyArMTE1
NCw3IEBAIEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50IEZyYW1lU2VsZWN0aW9uOjoKICAgICBib29s
IGZsaXAgPSBmYWxzZTsKICAgICBpZiAoYWx0ZXIgPT0gRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRp
b25Nb3ZlKSB7CiAgICAgICAgIGludGVudC50eXBlID0gQVhUZXh0U3RhdGVDaGFuZ2VUeXBlU2Vs
ZWN0aW9uTW92ZTsKLSAgICAgICAgZmxpcCA9IGlzUmFuZ2UoKSAmJiBkaXJlY3Rpb25PZlNlbGVj
dGlvbigpID09IFJUTDsKKyAgICAgICAgZmxpcCA9IGlzUmFuZ2UoKSAmJiBkaXJlY3Rpb25PZlNl
bGVjdGlvbigpID09IFRleHREaXJlY3Rpb246OlJUTDsKICAgICB9IGVsc2UKICAgICAgICAgaW50
ZW50LnR5cGUgPSBBWFRleHRTdGF0ZUNoYW5nZVR5cGVTZWxlY3Rpb25FeHRlbmQ7CiAgICAgc3dp
dGNoIChncmFudWxhcml0eSkgewpAQCAtMTM3NSw3ICsxMzc1LDcgQEAgYm9vbCBGcmFtZVNlbGVj
dGlvbjo6bW9kaWZ5KEVBbHRlcmF0aW9uIAogICAgICAgICAgICAgc2V0RXh0ZW50KHBvc2l0aW9u
LCB1c2VyVHJpZ2dlcmVkKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBUZXh0RGlyZWN0
aW9uIHRleHREaXJlY3Rpb24gPSBkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCk7Ci0gICAgICAg
ICAgICBpZiAoZGlyZWN0aW9uID09IERpcmVjdGlvbkZvcndhcmQgfHwgKHRleHREaXJlY3Rpb24g
PT0gTFRSICYmIGRpcmVjdGlvbiA9PSBEaXJlY3Rpb25SaWdodCkgfHwgKHRleHREaXJlY3Rpb24g
PT0gUlRMICYmIGRpcmVjdGlvbiA9PSBEaXJlY3Rpb25MZWZ0KSkKKyAgICAgICAgICAgIGlmIChk
aXJlY3Rpb24gPT0gRGlyZWN0aW9uRm9yd2FyZCB8fCAodGV4dERpcmVjdGlvbiA9PSBUZXh0RGly
ZWN0aW9uOjpMVFIgJiYgZGlyZWN0aW9uID09IERpcmVjdGlvblJpZ2h0KSB8fCAodGV4dERpcmVj
dGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpSVEwgJiYgZGlyZWN0aW9uID09IERpcmVjdGlvbkxlZnQp
KQogICAgICAgICAgICAgICAgIHNldEVuZChwb3NpdGlvbiwgdXNlclRyaWdnZXJlZCk7CiAgICAg
ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgc2V0U3RhcnQocG9zaXRpb24sIHVzZXJUcmln
Z2VyZWQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNw
cAkocmV2aXNpb24gMjM0NjE4KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9z
aXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsNyArMTI3LDcgQEAgUG9zaXRpb24gVmlz
aWJsZVBvc2l0aW9uOjpsZWZ0VmlzdWFsbHlEaQogICAgICAgICBpbnQgb2Zmc2V0OwogICAgICAg
ICBwLmdldElubGluZUJveEFuZE9mZnNldChtX2FmZmluaXR5LCBwcmltYXJ5RGlyZWN0aW9uLCBi
b3gsIG9mZnNldCk7CiAgICAgICAgIGlmICghYm94KQotICAgICAgICAgICAgcmV0dXJuIHByaW1h
cnlEaXJlY3Rpb24gPT0gTFRSID8gcHJldmlvdXNWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1f
ZGVlcFBvc2l0aW9uKSA6IG5leHRWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0
aW9uKTsKKyAgICAgICAgICAgIHJldHVybiBwcmltYXJ5RGlyZWN0aW9uID09IFRleHREaXJlY3Rp
b246OkxUUiA/IHByZXZpb3VzVmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZShtX2RlZXBQb3NpdGlv
bikgOiBuZXh0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZShtX2RlZXBQb3NpdGlvbik7CiAKICAg
ICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9ICZib3gtPnJlbmRlcmVyKCk7CiAKQEAgLTEz
OCw3ICsxMzgsNyBAQCBQb3NpdGlvbiBWaXNpYmxlUG9zaXRpb246OmxlZnRWaXN1YWxseURpCiAg
ICAgICAgICAgICBpZiAoIXJlbmRlcmVyLT5ub2RlKCkpIHsKICAgICAgICAgICAgICAgICBib3gg
PSBib3gtPnByZXZMZWFmQ2hpbGQoKTsKICAgICAgICAgICAgICAgICBpZiAoIWJveCkKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHByaW1hcnlEaXJlY3Rpb24gPT0gTFRSID8gcHJldmlvdXNW
aXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9uKSA6IG5leHRWaXN1YWxseURp
c3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHByaW1hcnlEaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gcHJldmlvdXNWaXN1
YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9uKSA6IG5leHRWaXN1YWxseURpc3Rp
bmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9uKTsKICAgICAgICAgICAgICAgICByZW5kZXJlciA9
ICZib3gtPnJlbmRlcmVyKCk7CiAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gYm94LT5jYXJldFJp
Z2h0bW9zdE9mZnNldCgpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTU2LDcgKzE1
Niw3IEBAIFBvc2l0aW9uIFZpc2libGVQb3NpdGlvbjo6bGVmdFZpc3VhbGx5RGkKICAgICAgICAg
ICAgICAgICAvLyBPdmVyc2hvdCB0byB0aGUgbGVmdC4KICAgICAgICAgICAgICAgICBJbmxpbmVC
b3gqIHByZXZCb3ggPSBib3gtPnByZXZMZWFmQ2hpbGRJZ25vcmluZ0xpbmVCcmVhaygpOwogICAg
ICAgICAgICAgICAgIGlmICghcHJldkJveCkgewotICAgICAgICAgICAgICAgICAgICBQb3NpdGlv
biBwb3NpdGlvbk9uTGVmdCA9IHByaW1hcnlEaXJlY3Rpb24gPT0gTFRSID8gcHJldmlvdXNWaXN1
YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9uKSA6IG5leHRWaXN1YWxseURpc3Rp
bmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgUG9zaXRp
b24gcG9zaXRpb25PbkxlZnQgPSBwcmltYXJ5RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxU
UiA/IHByZXZpb3VzVmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZShtX2RlZXBQb3NpdGlvbikgOiBu
ZXh0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZShtX2RlZXBQb3NpdGlvbik7CiAgICAgICAgICAg
ICAgICAgICAgIGlmIChwb3NpdGlvbk9uTGVmdC5pc051bGwoKSkKICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBQb3NpdGlvbigpOwogCkBAIC0xODMsMTAgKzE4MywxMCBAQCBQb3NpdGlv
biBWaXNpYmxlUG9zaXRpb246OmxlZnRWaXN1YWxseURpCiAgICAgICAgICAgICBpZiAoYm94LT5k
aXJlY3Rpb24oKSA9PSBwcmltYXJ5RGlyZWN0aW9uKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFw
cmV2Qm94KSB7CiAgICAgICAgICAgICAgICAgICAgIElubGluZUJveCogbG9naWNhbFN0YXJ0ID0g
bnVsbHB0cjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHByaW1hcnlEaXJlY3Rpb24gPT0gTFRS
ID8gYm94LT5yb290KCkuZ2V0TG9naWNhbFN0YXJ0Qm94V2l0aE5vZGUobG9naWNhbFN0YXJ0KSA6
IGJveC0+cm9vdCgpLmdldExvZ2ljYWxFbmRCb3hXaXRoTm9kZShsb2dpY2FsU3RhcnQpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChwcmltYXJ5RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246
OkxUUiA/IGJveC0+cm9vdCgpLmdldExvZ2ljYWxTdGFydEJveFdpdGhOb2RlKGxvZ2ljYWxTdGFy
dCkgOiBib3gtPnJvb3QoKS5nZXRMb2dpY2FsRW5kQm94V2l0aE5vZGUobG9naWNhbFN0YXJ0KSkg
ewogICAgICAgICAgICAgICAgICAgICAgICAgYm94ID0gbG9naWNhbFN0YXJ0OwogICAgICAgICAg
ICAgICAgICAgICAgICAgcmVuZGVyZXIgPSAmYm94LT5yZW5kZXJlcigpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgb2Zmc2V0ID0gcHJpbWFyeURpcmVjdGlvbiA9PSBMVFIgPyBib3gtPmNhcmV0
TWluT2Zmc2V0KCkgOiBib3gtPmNhcmV0TWF4T2Zmc2V0KCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBvZmZzZXQgPSBwcmltYXJ5RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUiA/IGJv
eC0+Y2FyZXRNaW5PZmZzZXQoKSA6IGJveC0+Y2FyZXRNYXhPZmZzZXQoKTsKICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9
CkBAIC0yNDcsNyArMjQ3LDcgQEAgUG9zaXRpb24gVmlzaWJsZVBvc2l0aW9uOjpsZWZ0VmlzdWFs
bHlEaQogICAgICAgICAgICAgICAgICAgICBsZXZlbCA9IGJveC0+YmlkaUxldmVsKCk7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHJlbmRlcmVyID0gJmJveC0+cmVuZGVyZXIo
KTsKLSAgICAgICAgICAgICAgICBvZmZzZXQgPSBwcmltYXJ5RGlyZWN0aW9uID09IExUUiA/IGJv
eC0+Y2FyZXRNaW5PZmZzZXQoKSA6IGJveC0+Y2FyZXRNYXhPZmZzZXQoKTsKKyAgICAgICAgICAg
ICAgICBvZmZzZXQgPSBwcmltYXJ5RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUiA/IGJv
eC0+Y2FyZXRNaW5PZmZzZXQoKSA6IGJveC0+Y2FyZXRNYXhPZmZzZXQoKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0yOTcsNyArMjk3LDcgQEAgUG9z
aXRpb24gVmlzaWJsZVBvc2l0aW9uOjpyaWdodFZpc3VhbGx5RAogICAgICAgICBpbnQgb2Zmc2V0
OwogICAgICAgICBwLmdldElubGluZUJveEFuZE9mZnNldChtX2FmZmluaXR5LCBwcmltYXJ5RGly
ZWN0aW9uLCBib3gsIG9mZnNldCk7CiAgICAgICAgIGlmICghYm94KQotICAgICAgICAgICAgcmV0
dXJuIHByaW1hcnlEaXJlY3Rpb24gPT0gTFRSID8gbmV4dFZpc3VhbGx5RGlzdGluY3RDYW5kaWRh
dGUobV9kZWVwUG9zaXRpb24pIDogcHJldmlvdXNWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1f
ZGVlcFBvc2l0aW9uKTsKKyAgICAgICAgICAgIHJldHVybiBwcmltYXJ5RGlyZWN0aW9uID09IFRl
eHREaXJlY3Rpb246OkxUUiA/IG5leHRWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBv
c2l0aW9uKSA6IHByZXZpb3VzVmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZShtX2RlZXBQb3NpdGlv
bik7CiAKICAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9ICZib3gtPnJlbmRlcmVyKCk7
CiAKQEAgLTMwOCw3ICszMDgsNyBAQCBQb3NpdGlvbiBWaXNpYmxlUG9zaXRpb246OnJpZ2h0Vmlz
dWFsbHlECiAgICAgICAgICAgICBpZiAoIXJlbmRlcmVyLT5ub2RlKCkpIHsKICAgICAgICAgICAg
ICAgICBib3ggPSBib3gtPm5leHRMZWFmQ2hpbGQoKTsKICAgICAgICAgICAgICAgICBpZiAoIWJv
eCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByaW1hcnlEaXJlY3Rpb24gPT0gTFRSID8g
bmV4dFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUobV9kZWVwUG9zaXRpb24pIDogcHJldmlvdXNW
aXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9uKTsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHByaW1hcnlEaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gbmV4
dFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUobV9kZWVwUG9zaXRpb24pIDogcHJldmlvdXNWaXN1
YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9uKTsKICAgICAgICAgICAgICAgICBy
ZW5kZXJlciA9ICZib3gtPnJlbmRlcmVyKCk7CiAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gYm94
LT5jYXJldExlZnRtb3N0T2Zmc2V0KCk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0z
MjYsNyArMzI2LDcgQEAgUG9zaXRpb24gVmlzaWJsZVBvc2l0aW9uOjpyaWdodFZpc3VhbGx5RAog
ICAgICAgICAgICAgICAgIC8vIE92ZXJzaG90IHRvIHRoZSByaWdodC4KICAgICAgICAgICAgICAg
ICBJbmxpbmVCb3gqIG5leHRCb3ggPSBib3gtPm5leHRMZWFmQ2hpbGRJZ25vcmluZ0xpbmVCcmVh
aygpOwogICAgICAgICAgICAgICAgIGlmICghbmV4dEJveCkgewotICAgICAgICAgICAgICAgICAg
ICBQb3NpdGlvbiBwb3NpdGlvbk9uUmlnaHQgPSBwcmltYXJ5RGlyZWN0aW9uID09IExUUiA/IG5l
eHRWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9uKSA6IHByZXZpb3VzVmlz
dWFsbHlEaXN0aW5jdENhbmRpZGF0ZShtX2RlZXBQb3NpdGlvbik7CisgICAgICAgICAgICAgICAg
ICAgIFBvc2l0aW9uIHBvc2l0aW9uT25SaWdodCA9IHByaW1hcnlEaXJlY3Rpb24gPT0gVGV4dERp
cmVjdGlvbjo6TFRSID8gbmV4dFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUobV9kZWVwUG9zaXRp
b24pIDogcHJldmlvdXNWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9uKTsK
ICAgICAgICAgICAgICAgICAgICAgaWYgKHBvc2l0aW9uT25SaWdodC5pc051bGwoKSkKICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBQb3NpdGlvbigpOwogCkBAIC0zNTMsMTAgKzM1Mywx
MCBAQCBQb3NpdGlvbiBWaXNpYmxlUG9zaXRpb246OnJpZ2h0VmlzdWFsbHlECiAgICAgICAgICAg
ICBpZiAoYm94LT5kaXJlY3Rpb24oKSA9PSBwcmltYXJ5RGlyZWN0aW9uKSB7CiAgICAgICAgICAg
ICAgICAgaWYgKCFuZXh0Qm94KSB7CiAgICAgICAgICAgICAgICAgICAgIElubGluZUJveCogbG9n
aWNhbEVuZCA9IG51bGxwdHI7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwcmltYXJ5RGlyZWN0
aW9uID09IExUUiA/IGJveC0+cm9vdCgpLmdldExvZ2ljYWxFbmRCb3hXaXRoTm9kZShsb2dpY2Fs
RW5kKSA6IGJveC0+cm9vdCgpLmdldExvZ2ljYWxTdGFydEJveFdpdGhOb2RlKGxvZ2ljYWxFbmQp
KSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChwcmltYXJ5RGlyZWN0aW9uID09IFRleHREaXJl
Y3Rpb246OkxUUiA/IGJveC0+cm9vdCgpLmdldExvZ2ljYWxFbmRCb3hXaXRoTm9kZShsb2dpY2Fs
RW5kKSA6IGJveC0+cm9vdCgpLmdldExvZ2ljYWxTdGFydEJveFdpdGhOb2RlKGxvZ2ljYWxFbmQp
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBib3ggPSBsb2dpY2FsRW5kOwogICAgICAgICAg
ICAgICAgICAgICAgICAgcmVuZGVyZXIgPSAmYm94LT5yZW5kZXJlcigpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgb2Zmc2V0ID0gcHJpbWFyeURpcmVjdGlvbiA9PSBMVFIgPyBib3gtPmNhcmV0
TWF4T2Zmc2V0KCkgOiBib3gtPmNhcmV0TWluT2Zmc2V0KCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBvZmZzZXQgPSBwcmltYXJ5RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUiA/IGJv
eC0+Y2FyZXRNYXhPZmZzZXQoKSA6IGJveC0+Y2FyZXRNaW5PZmZzZXQoKTsKICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9
CkBAIC00MjAsNyArNDIwLDcgQEAgUG9zaXRpb24gVmlzaWJsZVBvc2l0aW9uOjpyaWdodFZpc3Vh
bGx5RAogICAgICAgICAgICAgICAgICAgICBsZXZlbCA9IGJveC0+YmlkaUxldmVsKCk7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHJlbmRlcmVyID0gJmJveC0+cmVuZGVyZXIo
KTsKLSAgICAgICAgICAgICAgICBvZmZzZXQgPSBwcmltYXJ5RGlyZWN0aW9uID09IExUUiA/IGJv
eC0+Y2FyZXRNYXhPZmZzZXQoKSA6IGJveC0+Y2FyZXRNaW5PZmZzZXQoKTsKKyAgICAgICAgICAg
ICAgICBvZmZzZXQgPSBwcmltYXJ5RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUiA/IGJv
eC0+Y2FyZXRNYXhPZmZzZXQoKSA6IGJveC0+Y2FyZXRNaW5PZmZzZXQoKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1Zpc2libGVVbml0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRp
dGluZy9WaXNpYmxlVW5pdHMuY3BwCShyZXZpc2lvbiAyMzQ2MTgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwOCw3ICs0MDgs
NyBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIHZpc3VhbFdvcmRQb3NpdGlvCiAKICAgICAgICAg
Ym9vbCBpc1dvcmRCcmVhazsKICAgICAgICAgYm9vbCBib3hIYXNTYW1lRGlyZWN0aW9uYWxpdHlB
c0Jsb2NrID0gYm94LT5kaXJlY3Rpb24oKSA9PSBibG9ja0RpcmVjdGlvbjsKLSAgICAgICAgYm9v
bCBtb3ZpbmdCYWNrd2FyZCA9IChkaXJlY3Rpb24gPT0gTW92ZUxlZnQgJiYgYm94LT5kaXJlY3Rp
b24oKSA9PSBMVFIpIHx8IChkaXJlY3Rpb24gPT0gTW92ZVJpZ2h0ICYmIGJveC0+ZGlyZWN0aW9u
KCkgPT0gUlRMKTsKKyAgICAgICAgYm9vbCBtb3ZpbmdCYWNrd2FyZCA9IChkaXJlY3Rpb24gPT0g
TW92ZUxlZnQgJiYgYm94LT5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpIHx8IChk
aXJlY3Rpb24gPT0gTW92ZVJpZ2h0ICYmIGJveC0+ZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlv
bjo6UlRMKTsKICAgICAgICAgaWYgKChza2lwc1NwYWNlV2hlbk1vdmluZ1JpZ2h0ICYmIGJveEhh
c1NhbWVEaXJlY3Rpb25hbGl0eUFzQmxvY2spCiAgICAgICAgICAgICB8fCAoIXNraXBzU3BhY2VX
aGVuTW92aW5nUmlnaHQgJiYgbW92aW5nQmFja3dhcmQpKSB7CiAgICAgICAgICAgICBib29sIGxv
Z2ljYWxTdGFydEluUmVuZGVyZXIgPSBvZmZzZXRJbkJveCA9PSBzdGF0aWNfY2FzdDxpbnQ+KHRl
eHRCb3guc3RhcnQoKSkgJiYgcHJldmlvdXNCb3hJbkRpZmZlcmVudExpbmU7CkBAIC00MzksNyAr
NDM5LDcgQEAgVmlzaWJsZVBvc2l0aW9uIGxlZnRXb3JkUG9zaXRpb24oY29uc3QgVgogICAgIC8v
IEZJWE1FOiBIb3cgc2hvdWxkIHdlIGhhbmRsZSBhIG5vbi1lZGl0YWJsZSBwb3NpdGlvbj8KICAg
ICBpZiAobGVmdFdvcmRCcmVhay5pc051bGwoKSAmJiBpc0VkaXRhYmxlUG9zaXRpb24odmlzaWJs
ZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCkpKSB7CiAgICAgICAgIFRleHREaXJlY3Rpb24gYmxv
Y2tEaXJlY3Rpb24gPSBkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKHZpc2libGVQb3NpdGlvbi5k
ZWVwRXF1aXZhbGVudCgpKTsKLSAgICAgICAgbGVmdFdvcmRCcmVhayA9IGJsb2NrRGlyZWN0aW9u
ID09IExUUiA/IHN0YXJ0T2ZFZGl0YWJsZUNvbnRlbnQodmlzaWJsZVBvc2l0aW9uKSA6IGVuZE9m
RWRpdGFibGVDb250ZW50KHZpc2libGVQb3NpdGlvbik7CisgICAgICAgIGxlZnRXb3JkQnJlYWsg
PSBibG9ja0RpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBzdGFydE9mRWRpdGFibGVD
b250ZW50KHZpc2libGVQb3NpdGlvbikgOiBlbmRPZkVkaXRhYmxlQ29udGVudCh2aXNpYmxlUG9z
aXRpb24pOwogICAgIH0KICAgICByZXR1cm4gbGVmdFdvcmRCcmVhazsKIH0KQEAgLTQ1Miw3ICs0
NTIsNyBAQCBWaXNpYmxlUG9zaXRpb24gcmlnaHRXb3JkUG9zaXRpb24oY29uc3QgCiAgICAgLy8g
RklYTUU6IEhvdyBzaG91bGQgd2UgaGFuZGxlIGEgbm9uLWVkaXRhYmxlIHBvc2l0aW9uPwogICAg
IGlmIChyaWdodFdvcmRCcmVhay5pc051bGwoKSAmJiBpc0VkaXRhYmxlUG9zaXRpb24odmlzaWJs
ZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCkpKSB7CiAgICAgICAgIFRleHREaXJlY3Rpb24gYmxv
Y2tEaXJlY3Rpb24gPSBkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKHZpc2libGVQb3NpdGlvbi5k
ZWVwRXF1aXZhbGVudCgpKTsKLSAgICAgICAgcmlnaHRXb3JkQnJlYWsgPSBibG9ja0RpcmVjdGlv
biA9PSBMVFIgPyBlbmRPZkVkaXRhYmxlQ29udGVudCh2aXNpYmxlUG9zaXRpb24pIDogc3RhcnRP
ZkVkaXRhYmxlQ29udGVudCh2aXNpYmxlUG9zaXRpb24pOworICAgICAgICByaWdodFdvcmRCcmVh
ayA9IGJsb2NrRGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUiA/IGVuZE9mRWRpdGFibGVD
b250ZW50KHZpc2libGVQb3NpdGlvbikgOiBzdGFydE9mRWRpdGFibGVDb250ZW50KHZpc2libGVQ
b3NpdGlvbik7CiAgICAgfQogICAgIHJldHVybiByaWdodFdvcmRCcmVhazsKIH0KQEAgLTE1Mjks
MTIgKzE1MjksMTIgQEAgYm9vbCBpc0VuZE9mRWRpdGFibGVPck5vbkVkaXRhYmxlQ29udGVudAog
CiBWaXNpYmxlUG9zaXRpb24gbGVmdEJvdW5kYXJ5T2ZMaW5lKGNvbnN0IFZpc2libGVQb3NpdGlv
biYgYywgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24sIGJvb2wqIHJlYWNoZWRCb3VuZGFyeSkKIHsK
LSAgICByZXR1cm4gZGlyZWN0aW9uID09IExUUiA/IGxvZ2ljYWxTdGFydE9mTGluZShjLCByZWFj
aGVkQm91bmRhcnkpIDogbG9naWNhbEVuZE9mTGluZShjLCByZWFjaGVkQm91bmRhcnkpOworICAg
IHJldHVybiBkaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gbG9naWNhbFN0YXJ0T2ZM
aW5lKGMsIHJlYWNoZWRCb3VuZGFyeSkgOiBsb2dpY2FsRW5kT2ZMaW5lKGMsIHJlYWNoZWRCb3Vu
ZGFyeSk7CiB9CiAKIFZpc2libGVQb3NpdGlvbiByaWdodEJvdW5kYXJ5T2ZMaW5lKGNvbnN0IFZp
c2libGVQb3NpdGlvbiYgYywgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24sIGJvb2wqIHJlYWNoZWRC
b3VuZGFyeSkKIHsKLSAgICByZXR1cm4gZGlyZWN0aW9uID09IExUUiA/IGxvZ2ljYWxFbmRPZkxp
bmUoYywgcmVhY2hlZEJvdW5kYXJ5KSA6IGxvZ2ljYWxTdGFydE9mTGluZShjLCByZWFjaGVkQm91
bmRhcnkpOworICAgIHJldHVybiBkaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gbG9n
aWNhbEVuZE9mTGluZShjLCByZWFjaGVkQm91bmRhcnkpIDogbG9naWNhbFN0YXJ0T2ZMaW5lKGMs
IHJlYWNoZWRCb3VuZGFyeSk7CiB9CiAKIHN0YXRpYyBib29sIGRpcmVjdGlvbklzRG93bnN0cmVh
bShTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uKQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRp
dGluZy9hdGsvRnJhbWVTZWxlY3Rpb25BdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvYXRrL0ZyYW1lU2VsZWN0aW9uQXRrLmNwcAkocmV2aXNpb24gMjM0NjE4KQor
KysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9hdGsvRnJhbWVTZWxlY3Rpb25BdGsuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIHN0YXRpYyB2b2lkIGVtaXRUZXh0U2VsZWN0aW9u
Q2hhbmdlKEFjY2UKICAgICAvLyB0aGUgbGlzdCBpdGVtIG1hcmtlciBpcyBleHBvc2VkIHRocm91
Z2ggdGhlIHRleHQgb2YgdGhlIGFjY2Vzc2libGUgbGlzdCBpdGVtIHJhdGhlcgogICAgIC8vIHRo
YW4gdGhyb3VnaCBhIHNlcGFyYXRlIGFjY2Vzc2libGUgb2JqZWN0LgogICAgIFJlbmRlck9iamVj
dCogcmVuZGVyZXIgPSBvYmplY3QtPnJlbmRlcmVyKCk7Ci0gICAgaWYgKGlzPFJlbmRlckxpc3RJ
dGVtPihyZW5kZXJlcikgJiYgcmVuZGVyZXItPnN0eWxlKCkuZGlyZWN0aW9uKCkgPT0gTFRSKQor
ICAgIGlmIChpczxSZW5kZXJMaXN0SXRlbT4ocmVuZGVyZXIpICYmIHJlbmRlcmVyLT5zdHlsZSgp
LmRpcmVjdGlvbigpID09IFRleHREaXJlY3Rpb246OkxUUikKICAgICAgICAgb2Zmc2V0ICs9IGRv
d25jYXN0PFJlbmRlckxpc3RJdGVtPigqcmVuZGVyZXIpLm1hcmtlclRleHRXaXRoU3VmZml4KCku
bGVuZ3RoKCk7CiAKICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUoYXhPYmplY3QsICJ0ZXh0LWNh
cmV0LW1vdmVkIiwgb2Zmc2V0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3Bw
CShyZXZpc2lvbiAyMzQ2MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODAwLDcgKzgwMCw3IEBAIFRleHREaXJlY3Rpb24gSFRNTEVs
ZW1lbnQ6OmRpcmVjdGlvbmFsaXQKIHsKICAgICBpZiAoIShzZWxmT3JBbmNlc3Rvckhhc0RpckF1
dG9BdHRyaWJ1dGUoKSAmJiBoYXNEaXJlY3Rpb25BdXRvKCkpKSB7CiAgICAgICAgIGlzQXV0byA9
IGZhbHNlOwotICAgICAgICByZXR1cm4gTFRSOworICAgICAgICByZXR1cm4gVGV4dERpcmVjdGlv
bjo6TFRSOwogICAgIH0KIAogICAgIGlzQXV0byA9IHRydWU7CkBAIC04MTUsNyArODE1LDcgQEAg
VGV4dERpcmVjdGlvbiBIVE1MRWxlbWVudDo6ZGlyZWN0aW9uYWxpdAogICAgICAgICBVQ2hhckRp
cmVjdGlvbiB0ZXh0RGlyZWN0aW9uID0gdGV4dEVsZW1lbnQudmFsdWUoKS5kZWZhdWx0V3JpdGlu
Z0RpcmVjdGlvbigmaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkpOwogICAgICAgICBpZiAoc3Ryb25n
RGlyZWN0aW9uYWxpdHlUZXh0Tm9kZSkKICAgICAgICAgICAgICpzdHJvbmdEaXJlY3Rpb25hbGl0
eVRleHROb2RlID0gaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkgPyAmdGV4dEVsZW1lbnQgOiBudWxs
cHRyOwotICAgICAgICByZXR1cm4gKHRleHREaXJlY3Rpb24gPT0gVV9MRUZUX1RPX1JJR0hUKSA/
IExUUiA6IFJUTDsKKyAgICAgICAgcmV0dXJuICh0ZXh0RGlyZWN0aW9uID09IFVfTEVGVF9UT19S
SUdIVCkgPyBUZXh0RGlyZWN0aW9uOjpMVFIgOiBUZXh0RGlyZWN0aW9uOjpSVEw7CiAgICAgfQog
CiAgICAgUmVmUHRyPE5vZGU+IG5vZGUgPSBmaXJzdENoaWxkKCk7CkBAIC04NDIsMTQgKzg0Miwx
NCBAQCBUZXh0RGlyZWN0aW9uIEhUTUxFbGVtZW50OjpkaXJlY3Rpb25hbGl0CiAgICAgICAgICAg
ICBpZiAoaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkpIHsKICAgICAgICAgICAgICAgICBpZiAoc3Ry
b25nRGlyZWN0aW9uYWxpdHlUZXh0Tm9kZSkKICAgICAgICAgICAgICAgICAgICAgKnN0cm9uZ0Rp
cmVjdGlvbmFsaXR5VGV4dE5vZGUgPSBub2RlLmdldCgpOwotICAgICAgICAgICAgICAgIHJldHVy
biAodGV4dERpcmVjdGlvbiA9PSBVX0xFRlRfVE9fUklHSFQpID8gTFRSIDogUlRMOworICAgICAg
ICAgICAgICAgIHJldHVybiAodGV4dERpcmVjdGlvbiA9PSBVX0xFRlRfVE9fUklHSFQpID8gVGV4
dERpcmVjdGlvbjo6TFRSIDogVGV4dERpcmVjdGlvbjo6UlRMOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgICAgIG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0KCpub2RlLCB0aGlzKTsK
ICAgICB9CiAgICAgaWYgKHN0cm9uZ0RpcmVjdGlvbmFsaXR5VGV4dE5vZGUpCiAgICAgICAgICpz
dHJvbmdEaXJlY3Rpb25hbGl0eVRleHROb2RlID0gbnVsbHB0cjsKLSAgICByZXR1cm4gTFRSOwor
ICAgIHJldHVybiBUZXh0RGlyZWN0aW9uOjpMVFI7CiB9CiAKIHZvaWQgSFRNTEVsZW1lbnQ6OmRp
ckF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAkocmV2aXNpb24gMjM0NjE4KQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjA5OCw3ICsyMDk4LDcgQEAgYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpzZXR1cERhdGVUaW1l
Q2hvbwogICAgIGVsc2UKICAgICAgICAgcGFyYW1ldGVycy5hbmNob3JSZWN0SW5Sb290VmlldyA9
IEludFJlY3QoKTsKICAgICBwYXJhbWV0ZXJzLmN1cnJlbnRWYWx1ZSA9IHZhbHVlKCk7Ci0gICAg
cGFyYW1ldGVycy5pc0FuY2hvckVsZW1lbnRSVEwgPSBjb21wdXRlZFN0eWxlKCktPmRpcmVjdGlv
bigpID09IFJUTDsKKyAgICBwYXJhbWV0ZXJzLmlzQW5jaG9yRWxlbWVudFJUTCA9IGNvbXB1dGVk
U3R5bGUoKS0+ZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6UlRMOwogI2lmIEVOQUJMRShE
QVRBTElTVF9FTEVNRU5UKQogICAgIGlmIChhdXRvIGRhdGFMaXN0ID0gdGhpcy0+ZGF0YUxpc3Qo
KSkgewogICAgICAgICBSZWY8SFRNTENvbGxlY3Rpb24+IG9wdGlvbnMgPSBkYXRhTGlzdC0+b3B0
aW9ucygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudC5jcHAJKHJldmlzaW9uIDIzNDYxOCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NzUs
NyArNzc1LDcgQEAgU3RyaW5nIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpkaXJlYwogICAg
ICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZGlyQXR0cmlidXRlVmFsdWUs
ICJhdXRvIikpIHsKICAgICAgICAgICAgIGJvb2wgaXNBdXRvOwogICAgICAgICAgICAgVGV4dERp
cmVjdGlvbiB0ZXh0RGlyZWN0aW9uID0gc3RhdGljX2Nhc3Q8Y29uc3QgSFRNTEVsZW1lbnQqPihl
bGVtZW50KS0+ZGlyZWN0aW9uYWxpdHlJZmhhc0RpckF1dG9BdHRyaWJ1dGUoaXNBdXRvKTsKLSAg
ICAgICAgICAgIHJldHVybiB0ZXh0RGlyZWN0aW9uID09IFJUTCA/ICJydGwiIDogImx0ciI7Cisg
ICAgICAgICAgICByZXR1cm4gdGV4dERpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpSVEwgPyAi
cnRsIiA6ICJsdHIiOwogICAgICAgICB9CiAgICAgfQogCkBAIC04MzcsNyArODM3LDcgQEAgdm9p
ZCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6YWRqdXN0SQogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KIAotICAgICAgICB0ZXh0QmxvY2tTdHlsZS5zZXREaXJlY3Rpb24oTFRSKTsK
KyAgICAgICAgdGV4dEJsb2NrU3R5bGUuc2V0RGlyZWN0aW9uKFRleHREaXJlY3Rpb246OkxUUik7
CiAgICAgfQogI2VuZGlmCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUaXRsZUVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxl
bWVudC5jcHAJKHJldmlzaW9uIDIzNDYxOCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRp
dGxlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDcgQEAgU3RyaW5nIEhU
TUxUaXRsZUVsZW1lbnQ6OnRleHQoKSBjb25zdAogCiBTdHJpbmdXaXRoRGlyZWN0aW9uIEhUTUxU
aXRsZUVsZW1lbnQ6OmNvbXB1dGVkVGV4dFdpdGhEaXJlY3Rpb24oKQogewotICAgIFRleHREaXJl
Y3Rpb24gZGlyZWN0aW9uID0gTFRSOworICAgIGF1dG8gZGlyZWN0aW9uID0gVGV4dERpcmVjdGlv
bjo6TFRSOwogICAgIGlmIChhdXRvKiBjb21wdXRlZFN0eWxlID0gdGhpcy0+Y29tcHV0ZWRTdHls
ZSgpKQogICAgICAgICBkaXJlY3Rpb24gPSBjb21wdXRlZFN0eWxlLT5kaXJlY3Rpb24oKTsKICAg
ICBlbHNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAJKHJldmlzaW9uIDIzNDYxOCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI5NSwyMSArMjk1LDIxIEBAIGlubGluZSBUZXh0RGlyZWN0aW9uIENhbnZhc1Jl
bmRlcmluZ0NvbnQKICAgICAgICAgKmNvbXB1dGVkU3R5bGUgPSBzdHlsZTsKICAgICBzd2l0Y2gg
KGRpcmVjdGlvbikgewogICAgIGNhc2UgRGlyZWN0aW9uOjpJbmhlcml0OgotICAgICAgICByZXR1
cm4gc3R5bGUgPyBzdHlsZS0+ZGlyZWN0aW9uKCkgOiBMVFI7CisgICAgICAgIHJldHVybiBzdHls
ZSA/IHN0eWxlLT5kaXJlY3Rpb24oKSA6IFRleHREaXJlY3Rpb246OkxUUjsKICAgICBjYXNlIERp
cmVjdGlvbjo6UnRsOgotICAgICAgICByZXR1cm4gUlRMOworICAgICAgICByZXR1cm4gVGV4dERp
cmVjdGlvbjo6UlRMOwogICAgIGNhc2UgRGlyZWN0aW9uOjpMdHI6Ci0gICAgICAgIHJldHVybiBM
VFI7CisgICAgICAgIHJldHVybiBUZXh0RGlyZWN0aW9uOjpMVFI7CiAgICAgfQogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBMVFI7CisgICAgcmV0dXJuIFRleHREaXJlY3Rp
b246OkxUUjsKIH0KIAogQ2FudmFzRGlyZWN0aW9uIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6
ZGlyZWN0aW9uKCkgY29uc3QKIHsKICAgICBpZiAoc3RhdGUoKS5kaXJlY3Rpb24gPT0gRGlyZWN0
aW9uOjpJbmhlcml0KQogICAgICAgICBjYW52YXMoKS5kb2N1bWVudCgpLnVwZGF0ZVN0eWxlSWZO
ZWVkZWQoKTsKLSAgICByZXR1cm4gdG9UZXh0RGlyZWN0aW9uKHN0YXRlKCkuZGlyZWN0aW9uKSA9
PSBSVEwgPyBDYW52YXNEaXJlY3Rpb246OlJ0bCA6IENhbnZhc0RpcmVjdGlvbjo6THRyOworICAg
IHJldHVybiB0b1RleHREaXJlY3Rpb24oc3RhdGUoKS5kaXJlY3Rpb24pID09IFRleHREaXJlY3Rp
b246OlJUTCA/IENhbnZhc0RpcmVjdGlvbjo6UnRsIDogQ2FudmFzRGlyZWN0aW9uOjpMdHI7CiB9
CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXREaXJlY3Rpb24oQ2FudmFzRGly
ZWN0aW9uIGRpcmVjdGlvbikKQEAgLTQyOSw3ICs0MjksNyBAQCBGbG9hdFBvaW50IENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6dGV4CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGJvb2wg
aXNSVEwgPSBkaXJlY3Rpb24gPT0gUlRMOworICAgIGJvb2wgaXNSVEwgPSBkaXJlY3Rpb24gPT0g
VGV4dERpcmVjdGlvbjo6UlRMOwogICAgIGF1dG8gYWxpZ24gPSBzdGF0ZSgpLnRleHRBbGlnbjsK
ICAgICBpZiAoYWxpZ24gPT0gU3RhcnRUZXh0QWxpZ24pCiAgICAgICAgIGFsaWduID0gaXNSVEwg
PyBSaWdodFRleHRBbGlnbiA6IExlZnRUZXh0QWxpZ247CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAJKHJldmlzaW9uIDIzNDYx
OCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE3MSw3ICsxNzEsNyBAQCB2b2lkIFJlbmRlclNsaWRlckNvbnRh
aW5lcjo6bGF5b3V0KCkKICAgICAgICAgLy8gRklYTUU6IFdvcmsgYXJvdW5kIHJvdW5kaW5nIGlz
c3VlcyBpbiBSVEwgdmVydGljYWwgc2xpZGVycy4gV2Ugd2FudCB0aGVtIHRvCiAgICAgICAgIC8v
IHJlbmRlciBpZGVudGljYWxseSB0byBMVFIgdmVydGljYWwgc2xpZGVycy4gV2UgY2FuIHJlbW92
ZSB0aGlzIHdvcmsgYXJvdW5kIHdoZW4KICAgICAgICAgLy8gc3VicGl4ZWwgcmVuZGVyaW5nIGlz
IGVuYWJsZWQgb24gYWxsIHBvcnRzLgotICAgICAgICBtdXRhYmxlU3R5bGUoKS5zZXREaXJlY3Rp
b24oTFRSKTsKKyAgICAgICAgbXV0YWJsZVN0eWxlKCkuc2V0RGlyZWN0aW9uKFRleHREaXJlY3Rp
b246OkxUUik7CiAgICAgfQogCiAgICAgUmVuZGVyQm94KiB0aHVtYiA9IGlucHV0LnNsaWRlclRo
dW1iRWxlbWVudCgpID8gaW5wdXQuc2xpZGVyVGh1bWJFbGVtZW50KCktPnJlbmRlckJveCgpIDog
bnVsbHB0cjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5u
ZXJFbGVtZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
VGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAkocmV2aXNpb24gMjM0NjE4KQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTA5LDcgKzEwOSw3IEBAIHN0ZDo6b3B0aW9uYWw8RWxlbWVudFN0eWxlPiBU
ZXh0Q29udHJvbEkKICAgICBuZXdTdHlsZS0+c2V0RmxleEdyb3coMSk7CiAgICAgbmV3U3R5bGUt
PnNldE1pbldpZHRoKExlbmd0aCB7IDAsIEZpeGVkIH0pOyAvLyBOZWVkZWQgZm9yIGNvcnJlY3Qg
c2hyaW5raW5nLgogICAgIG5ld1N0eWxlLT5zZXREaXNwbGF5KERpc3BsYXlUeXBlOjpCbG9jayk7
Ci0gICAgbmV3U3R5bGUtPnNldERpcmVjdGlvbihMVFIpOworICAgIG5ld1N0eWxlLT5zZXREaXJl
Y3Rpb24oVGV4dERpcmVjdGlvbjo6TFRSKTsKICAgICAvLyBXZSBkb24ndCB3YW50IHRoZSBzaGFk
b3cgRE9NIHRvIGJlIGVkaXRhYmxlLCBzbyB3ZSBzZXQgdGhpcyBibG9jayB0byByZWFkLW9ubHkg
aW4gY2FzZSB0aGUgaW5wdXQgaXRzZWxmIGlzIGVkaXRhYmxlLgogICAgIG5ld1N0eWxlLT5zZXRV
c2VyTW9kaWZ5KFVzZXJNb2RpZnk6OlJlYWRPbmx5KTsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
cGFnZS9DaHJvbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21l
LmNwcAkocmV2aXNpb24gMjM0NjE4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNTYsNyArMzU2LDcgQEAgdm9pZCBDaHJvbWU6OnNldFRvb2xU
aXAoY29uc3QgSGl0VGVzdFJlcwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvcm0tPnJl
bmRlcmVyKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbFRpcERpcmVjdGlvbiA9
IGZvcm0tPnJlbmRlcmVyKCktPnN0eWxlKCkuZGlyZWN0aW9uKCk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbFRpcERpcmVjdGlv
biA9IExUUjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sVGlwRGlyZWN0aW9uID0g
VGV4dERpcmVjdGlvbjo6TFRSOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQpAQCAtMzY3LDcgKzM2Nyw3IEBAIHZvaWQgQ2hyb21lOjpzZXRU
b29sVGlwKGNvbnN0IEhpdFRlc3RSZXMKICAgICAgICAgICAgIC8vIEZJWE1FOiBOZWVkIHRvIHBh
c3MgdGhpcyBVUkwgdGhyb3VnaCB1c2VyVmlzaWJsZVN0cmluZyBvbmNlIHRoYXQncyBpbiBXZWJD
b3JlCiAgICAgICAgICAgICB0b29sVGlwID0gcmVzdWx0LmFic29sdXRlTGlua1VSTCgpLnN0cmlu
ZygpOwogICAgICAgICAgICAgLy8gVVJMIGFsd2F5cyBkaXNwbGF5IGFzIExUUi4KLSAgICAgICAg
ICAgIHRvb2xUaXBEaXJlY3Rpb24gPSBMVFI7CisgICAgICAgICAgICB0b29sVGlwRGlyZWN0aW9u
ID0gVGV4dERpcmVjdGlvbjo6TFRSOwogICAgICAgICB9CiAgICAgfQogCkBAIC0zODksNyArMzg5
LDcgQEAgdm9pZCBDaHJvbWU6OnNldFRvb2xUaXAoY29uc3QgSGl0VGVzdFJlcwogICAgICAgICAg
ICAgICAgIC8vIGltcGxlbWVudGF0aW9ucyBkb24ndCB1c2UgdGV4dCBkaXJlY3Rpb24gaW5mb3Jt
YXRpb24gZm9yCiAgICAgICAgICAgICAgICAgLy8gQ2hyb21lQ2xpZW50OjpzZXRUb29sVGlwLiBX
ZSdsbCB3b3JrIG9uIHRvb2x0aXAgdGV4dAogICAgICAgICAgICAgICAgIC8vIGRpcmVjdGlvbiBk
dXJpbmcgYmlkaSBjbGVhbnVwIGluIGZvcm0gaW5wdXRzLgotICAgICAgICAgICAgICAgIHRvb2xU
aXBEaXJlY3Rpb24gPSBMVFI7CisgICAgICAgICAgICAgICAgdG9vbFRpcERpcmVjdGlvbiA9IFRl
eHREaXJlY3Rpb246OkxUUjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHJldmlzaW9uIDIzNDYxOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYyLDcgKzE2Miw3
IEBAIFBhZ2luYXRpb246Ok1vZGUgcGFnaW5hdGlvbk1vZGVGb3JSZW5kZXIKICAgICAvLyBpcyBo
b3Jpem9udGFsLCB0aGVuIHdlIHVzZSBUZXh0RGlyZWN0aW9uIHRvIGNob29zZSBiZXR3ZWVuIHRo
b3NlIG9wdGlvbnMuIElmIHRoZSBXcml0aW5nTW9kZQogICAgIC8vIGlzIHZlcnRpY2FsLCB0aGVu
IHRoZSBkaXJlY3Rpb24gb2YgdGhlIHZlcnRpY2FsaXR5IGRpY3RhdGVzIHRoZSBjaG9pY2UuCiAg
ICAgaWYgKG92ZXJmbG93ID09IE92ZXJmbG93OjpQYWdlZFgpIHsKLSAgICAgICAgaWYgKChpc0hv
cml6b250YWxXcml0aW5nTW9kZSAmJiB0ZXh0RGlyZWN0aW9uID09IExUUikgfHwgd3JpdGluZ01v
ZGUgPT0gTGVmdFRvUmlnaHRXcml0aW5nTW9kZSkKKyAgICAgICAgaWYgKChpc0hvcml6b250YWxX
cml0aW5nTW9kZSAmJiB0ZXh0RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUikgfHwgd3Jp
dGluZ01vZGUgPT0gTGVmdFRvUmlnaHRXcml0aW5nTW9kZSkKICAgICAgICAgICAgIHJldHVybiBQ
YWdpbmF0aW9uOjpMZWZ0VG9SaWdodFBhZ2luYXRlZDsKICAgICAgICAgcmV0dXJuIFBhZ2luYXRp
b246OlJpZ2h0VG9MZWZ0UGFnaW5hdGVkOwogICAgIH0KQEAgLTE3MCw3ICsxNzAsNyBAQCBQYWdp
bmF0aW9uOjpNb2RlIHBhZ2luYXRpb25Nb2RlRm9yUmVuZGVyCiAgICAgLy8gcGFnZWQteSBhbHdh
eXMgY29ycmVzcG9uZHMgdG8gVG9wVG9Cb3R0b21QYWdpbmF0ZWQgb3IgQm90dG9tVG9Ub3BQYWdp
bmF0ZWQuIElmIHRoZSBXcml0aW5nTW9kZQogICAgIC8vIGlzIGhvcml6b250YWwsIHRoZW4gdGhl
IGRpcmVjdGlvbiBvZiB0aGUgaG9yaXpvbnRhbGl0eSBkaWN0YXRlcyB0aGUgY2hvaWNlLiBJZiB0
aGUgV3JpdGluZ01vZGUKICAgICAvLyBpcyB2ZXJ0aWNhbCwgdGhlbiB3ZSB1c2UgVGV4dERpcmVj
dGlvbiB0byBjaG9vc2UgYmV0d2VlbiB0aG9zZSBvcHRpb25zLiAKLSAgICBpZiAod3JpdGluZ01v
ZGUgPT0gVG9wVG9Cb3R0b21Xcml0aW5nTW9kZSB8fCAoIWlzSG9yaXpvbnRhbFdyaXRpbmdNb2Rl
ICYmIHRleHREaXJlY3Rpb24gPT0gUlRMKSkKKyAgICBpZiAod3JpdGluZ01vZGUgPT0gVG9wVG9C
b3R0b21Xcml0aW5nTW9kZSB8fCAoIWlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlICYmIHRleHREaXJl
Y3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6UlRMKSkKICAgICAgICAgcmV0dXJuIFBhZ2luYXRpb246
OlRvcFRvQm90dG9tUGFnaW5hdGVkOwogICAgIHJldHVybiBQYWdpbmF0aW9uOjpCb3R0b21Ub1Rv
cFBhZ2luYXRlZDsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwJKHJldmlzaW9u
IDIzNDYxOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbAkod29ya2luZyBj
b3B5KQpAQCAtNTA4LDcgKzUwOCw3IEBAIHVzZXJJbnRlcmZhY2VEaXJlY3Rpb25Qb2xpY3k6CiAg
IGluaXRpYWw6IFVzZXJJbnRlcmZhY2VEaXJlY3Rpb25Qb2xpY3k6OkNvbnRlbnQKIHN5c3RlbUxh
eW91dERpcmVjdGlvbjoKICAgdHlwZTogVGV4dERpcmVjdGlvbgotICBpbml0aWFsOiBMVFIKKyAg
aW5pdGlhbDogVGV4dERpcmVjdGlvbjo6TFRSCiAKIGFsbG93Q29udGVudFNlY3VyaXR5UG9saWN5
U291cmNlU3RhclRvTWF0Y2hBbnlQcm90b2NvbDoKICAgaW5pdGlhbDogZmFsc2UKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlY3RFZGdlcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1JlY3RFZGdlcy5oCShyZXZpc2lvbiAyMzQ2MTgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9SZWN0RWRnZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTksMTggKzU5
LDE4IEBAIHB1YmxpYzoKICAgICAKICAgICBUJiBiZWZvcmUoV3JpdGluZ01vZGUgd3JpdGluZ01v
ZGUpIHsgcmV0dXJuIGF0KG1hcExvZ2ljYWxTaWRlVG9QaHlzaWNhbFNpZGUod3JpdGluZ01vZGUs
IExvZ2ljYWxCb3hTaWRlOjpCZWZvcmUpKTsgfQogICAgIFQmIGFmdGVyKFdyaXRpbmdNb2RlIHdy
aXRpbmdNb2RlKSB7IHJldHVybiBhdChtYXBMb2dpY2FsU2lkZVRvUGh5c2ljYWxTaWRlKHdyaXRp
bmdNb2RlLCBMb2dpY2FsQm94U2lkZTo6QWZ0ZXIpKTsgfQotICAgIFQmIHN0YXJ0KFdyaXRpbmdN
b2RlIHdyaXRpbmdNb2RlLCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IExUUikgeyByZXR1cm4g
YXQobWFwTG9naWNhbFNpZGVUb1BoeXNpY2FsU2lkZShtYWtlVGV4dEZsb3cod3JpdGluZ01vZGUs
IGRpcmVjdGlvbiksIExvZ2ljYWxCb3hTaWRlOjpTdGFydCkpOyB9Ci0gICAgVCYgZW5kKFdyaXRp
bmdNb2RlIHdyaXRpbmdNb2RlLCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IExUUikgeyByZXR1
cm4gYXQobWFwTG9naWNhbFNpZGVUb1BoeXNpY2FsU2lkZShtYWtlVGV4dEZsb3cod3JpdGluZ01v
ZGUsIGRpcmVjdGlvbiksIExvZ2ljYWxCb3hTaWRlOjpFbmQpKTsgfQorICAgIFQmIHN0YXJ0KFdy
aXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IFRleHREaXJl
Y3Rpb246OkxUUikgeyByZXR1cm4gYXQobWFwTG9naWNhbFNpZGVUb1BoeXNpY2FsU2lkZShtYWtl
VGV4dEZsb3cod3JpdGluZ01vZGUsIGRpcmVjdGlvbiksIExvZ2ljYWxCb3hTaWRlOjpTdGFydCkp
OyB9CisgICAgVCYgZW5kKFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBUZXh0RGlyZWN0aW9uIGRp
cmVjdGlvbiA9IFRleHREaXJlY3Rpb246OkxUUikgeyByZXR1cm4gYXQobWFwTG9naWNhbFNpZGVU
b1BoeXNpY2FsU2lkZShtYWtlVGV4dEZsb3cod3JpdGluZ01vZGUsIGRpcmVjdGlvbiksIExvZ2lj
YWxCb3hTaWRlOjpFbmQpKTsgfQogICAgIAogICAgIGNvbnN0IFQmIGJlZm9yZShXcml0aW5nTW9k
ZSB3cml0aW5nTW9kZSkgY29uc3QgeyByZXR1cm4gYXQobWFwTG9naWNhbFNpZGVUb1BoeXNpY2Fs
U2lkZSh3cml0aW5nTW9kZSwgTG9naWNhbEJveFNpZGU6OkJlZm9yZSkpOyB9CiAgICAgY29uc3Qg
VCYgYWZ0ZXIoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUpIGNvbnN0IHsgcmV0dXJuIGF0KG1hcExv
Z2ljYWxTaWRlVG9QaHlzaWNhbFNpZGUod3JpdGluZ01vZGUsIExvZ2ljYWxCb3hTaWRlOjpBZnRl
cikpOyB9Ci0gICAgY29uc3QgVCYgc3RhcnQoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIFRleHRE
aXJlY3Rpb24gZGlyZWN0aW9uID0gTFRSKSBjb25zdCB7IHJldHVybiBhdChtYXBMb2dpY2FsU2lk
ZVRvUGh5c2ljYWxTaWRlKG1ha2VUZXh0Rmxvdyh3cml0aW5nTW9kZSwgZGlyZWN0aW9uKSwgTG9n
aWNhbEJveFNpZGU6OlN0YXJ0KSk7IH0KLSAgICBjb25zdCBUJiBlbmQoV3JpdGluZ01vZGUgd3Jp
dGluZ01vZGUsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gTFRSKSBjb25zdCB7IHJldHVybiBh
dChtYXBMb2dpY2FsU2lkZVRvUGh5c2ljYWxTaWRlKG1ha2VUZXh0Rmxvdyh3cml0aW5nTW9kZSwg
ZGlyZWN0aW9uKSwgTG9naWNhbEJveFNpZGU6OkVuZCkpOyB9CisgICAgY29uc3QgVCYgc3RhcnQo
V3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gVGV4dERp
cmVjdGlvbjo6TFRSKSBjb25zdCB7IHJldHVybiBhdChtYXBMb2dpY2FsU2lkZVRvUGh5c2ljYWxT
aWRlKG1ha2VUZXh0Rmxvdyh3cml0aW5nTW9kZSwgZGlyZWN0aW9uKSwgTG9naWNhbEJveFNpZGU6
OlN0YXJ0KSk7IH0KKyAgICBjb25zdCBUJiBlbmQoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIFRl
eHREaXJlY3Rpb24gZGlyZWN0aW9uID0gVGV4dERpcmVjdGlvbjo6TFRSKSBjb25zdCB7IHJldHVy
biBhdChtYXBMb2dpY2FsU2lkZVRvUGh5c2ljYWxTaWRlKG1ha2VUZXh0Rmxvdyh3cml0aW5nTW9k
ZSwgZGlyZWN0aW9uKSwgTG9naWNhbEJveFNpZGU6OkVuZCkpOyB9CiAgICAgCiAgICAgdm9pZCBz
ZXRCZWZvcmUoY29uc3QgVCYgYmVmb3JlLCBXcml0aW5nTW9kZSB3cml0aW5nTW9kZSkgeyB0aGlz
LT5iZWZvcmUod3JpdGluZ01vZGUpID0gYmVmb3JlOyB9CiAgICAgdm9pZCBzZXRBZnRlcihjb25z
dCBUJiBhZnRlciwgV3JpdGluZ01vZGUgd3JpdGluZ01vZGUpIHsgdGhpcy0+YWZ0ZXIod3JpdGlu
Z01vZGUpID0gYWZ0ZXI7IH0KLSAgICB2b2lkIHNldFN0YXJ0KGNvbnN0IFQmIHN0YXJ0LCBXcml0
aW5nTW9kZSB3cml0aW5nTW9kZSwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBMVFIpIHsgdGhp
cy0+c3RhcnQod3JpdGluZ01vZGUsIGRpcmVjdGlvbikgPSBzdGFydDsgfQotICAgIHZvaWQgc2V0
RW5kKGNvbnN0IFQmIGVuZCwgV3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb24g
ZGlyZWN0aW9uID0gTFRSKSB7IHRoaXMtPmVuZCh3cml0aW5nTW9kZSwgZGlyZWN0aW9uKSA9IGVu
ZDsgfQorICAgIHZvaWQgc2V0U3RhcnQoY29uc3QgVCYgc3RhcnQsIFdyaXRpbmdNb2RlIHdyaXRp
bmdNb2RlLCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IFRleHREaXJlY3Rpb246OkxUUikgeyB0
aGlzLT5zdGFydCh3cml0aW5nTW9kZSwgZGlyZWN0aW9uKSA9IHN0YXJ0OyB9CisgICAgdm9pZCBz
ZXRFbmQoY29uc3QgVCYgZW5kLCBXcml0aW5nTW9kZSB3cml0aW5nTW9kZSwgVGV4dERpcmVjdGlv
biBkaXJlY3Rpb24gPSBUZXh0RGlyZWN0aW9uOjpMVFIpIHsgdGhpcy0+ZW5kKHdyaXRpbmdNb2Rl
LCBkaXJlY3Rpb24pID0gZW5kOyB9CiAgICAgCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJl
Y3RFZGdlcyYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fc2lkZXMgPT0gb3RoZXIubV9zaWRlczsg
fQogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBSZWN0RWRnZXMmIG90aGVyKSBjb25zdCB7IHJl
dHVybiBtX3NpZGVzICE9IG90aGVyLm1fc2lkZXM7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uLmgJKHJldmlz
aW9uIDIzNDYxOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJJbnRlcmZhY2VMYXlv
dXREaXJlY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTMgKzIzLDEwIEBACiAgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBVc2VySW50ZXJmYWNl
TGF5b3V0RGlyZWN0aW9uX2gKLSNkZWZpbmUgVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbl9o
CisjcHJhZ21hIG9uY2UKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1lbnVtIGNsYXNzIFVzZXJJ
bnRlcmZhY2VMYXlvdXREaXJlY3Rpb24geyBMVFIsIFJUTCB9OworZW51bSBjbGFzcyBVc2VySW50
ZXJmYWNlTGF5b3V0RGlyZWN0aW9uIDogdWludDhfdCB7IExUUiwgUlRMIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25f
aApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250
cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyMzQ2MTgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBDb21wbGV4VGV4dENvbnRyb2xsZXI6
OmNvbXB1dGVFeHBhbgogICAgIGlmICghbV9leHBhbnNpb24pCiAgICAgICAgIG1fZXhwYW5zaW9u
UGVyT3Bwb3J0dW5pdHkgPSAwOwogICAgIGVsc2UgewotICAgICAgICB1bnNpZ25lZCBleHBhbnNp
b25PcHBvcnR1bml0eUNvdW50ID0gRm9udENhc2NhZGU6OmV4cGFuc2lvbk9wcG9ydHVuaXR5Q291
bnQobV9ydW4udGV4dCgpLCBtX3J1bi5sdHIoKSA/IExUUiA6IFJUTCwgbV9ydW4uZXhwYW5zaW9u
QmVoYXZpb3IoKSkuZmlyc3Q7CisgICAgICAgIHVuc2lnbmVkIGV4cGFuc2lvbk9wcG9ydHVuaXR5
Q291bnQgPSBGb250Q2FzY2FkZTo6ZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudChtX3J1bi50ZXh0
KCksIG1fcnVuLmx0cigpID8gVGV4dERpcmVjdGlvbjo6TFRSIDogVGV4dERpcmVjdGlvbjo6UlRM
LCBtX3J1bi5leHBhbnNpb25CZWhhdmlvcigpKS5maXJzdDsKIAogICAgICAgICBpZiAoIWV4cGFu
c2lvbk9wcG9ydHVuaXR5Q291bnQpCiAgICAgICAgICAgICBtX2V4cGFuc2lvblBlck9wcG9ydHVu
aXR5ID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNj
YWRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FzY2FkZS5jcHAJKHJldmlzaW9uIDIzNDYxOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA3NCw3ICsx
MDc0LDcgQEAgc3RkOjpwYWlyPHVuc2lnbmVkLCBib29sPiBGb250Q2FzY2FkZTo6ZQogICAgICAg
ICArK2NvdW50OwogICAgICAgICBpc0FmdGVyRXhwYW5zaW9uID0gdHJ1ZTsKICAgICB9Ci0gICAg
aWYgKGRpcmVjdGlvbiA9PSBMVFIpIHsKKyAgICBpZiAoZGlyZWN0aW9uID09IFRleHREaXJlY3Rp
b246OkxUUikgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kp
IHsKICAgICAgICAgICAgIGlmICh0cmVhdEFzU3BhY2UoY2hhcmFjdGVyc1tpXSkpIHsKICAgICAg
ICAgICAgICAgICBjb3VudCsrOwpAQCAtMTExMSw3ICsxMTExLDcgQEAgc3RkOjpwYWlyPHVuc2ln
bmVkLCBib29sPiBGb250Q2FzY2FkZTo6ZQogICAgICAgICArK2NvdW50OwogICAgICAgICBpc0Fm
dGVyRXhwYW5zaW9uID0gdHJ1ZTsKICAgICB9Ci0gICAgaWYgKGRpcmVjdGlvbiA9PSBMVFIpIHsK
KyAgICBpZiAoZGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUikgewogICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIFVDaGFyMzIg
Y2hhcmFjdGVyID0gY2hhcmFjdGVyc1tpXTsKICAgICAgICAgICAgIGlmICh0cmVhdEFzU3BhY2Uo
Y2hhcmFjdGVyKSkgewpAQCAtMTE4Miw3ICsxMTgyLDcgQEAgYm9vbCBGb250Q2FzY2FkZTo6bGVh
ZGluZ0V4cGFuc2lvbk9wcG9ydAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBVQ2hhcjMy
IGluaXRpYWxDaGFyYWN0ZXI7Ci0gICAgaWYgKGRpcmVjdGlvbiA9PSBMVFIpIHsKKyAgICBpZiAo
ZGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUikgewogICAgICAgICBpbml0aWFsQ2hhcmFj
dGVyID0gc3RyaW5nVmlld1swXTsKICAgICAgICAgaWYgKFUxNl9JU19MRUFEKGluaXRpYWxDaGFy
YWN0ZXIpICYmIHN0cmluZ1ZpZXcubGVuZ3RoKCkgPiAxICYmIFUxNl9JU19UUkFJTChzdHJpbmdW
aWV3WzFdKSkKICAgICAgICAgICAgIGluaXRpYWxDaGFyYWN0ZXIgPSBVMTZfR0VUX1NVUFBMRU1F
TlRBUlkoaW5pdGlhbENoYXJhY3Rlciwgc3RyaW5nVmlld1sxXSk7CkBAIC0xMjAxLDcgKzEyMDEs
NyBAQCBib29sIEZvbnRDYXNjYWRlOjp0cmFpbGluZ0V4cGFuc2lvbk9wcG9yCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIFVDaGFyMzIgZmluYWxDaGFyYWN0ZXI7Ci0gICAgaWYgKGRpcmVj
dGlvbiA9PSBMVFIpIHsKKyAgICBpZiAoZGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUikg
ewogICAgICAgICBmaW5hbENoYXJhY3RlciA9IHN0cmluZ1ZpZXdbc3RyaW5nVmlldy5sZW5ndGgo
KSAtIDFdOwogICAgICAgICBpZiAoVTE2X0lTX1RSQUlMKGZpbmFsQ2hhcmFjdGVyKSAmJiBzdHJp
bmdWaWV3Lmxlbmd0aCgpID4gMSAmJiBVMTZfSVNfTEVBRChzdHJpbmdWaWV3W3N0cmluZ1ZpZXcu
bGVuZ3RoKCkgLSAyXSkpCiAgICAgICAgICAgICBmaW5hbENoYXJhY3RlciA9IFUxNl9HRVRfU1VQ
UExFTUVOVEFSWShzdHJpbmdWaWV3W3N0cmluZ1ZpZXcubGVuZ3RoKCkgLSAyXSwgZmluYWxDaGFy
YWN0ZXIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuY3BwCShyZXZpc2lvbiAyMzQ2MTgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02ODMsNyArNjgzLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdCaWRpVGV4dChjb25z
dAogICAgIHdoaWxlIChiaWRpUnVuKSB7CiAgICAgICAgIFRleHRSdW4gc3VicnVuID0gcnVuLnN1
YlJ1bihiaWRpUnVuLT5zdGFydCgpLCBiaWRpUnVuLT5zdG9wKCkgLSBiaWRpUnVuLT5zdGFydCgp
KTsKICAgICAgICAgYm9vbCBpc1JUTCA9IGJpZGlSdW4tPmxldmVsKCkgJSAyOwotICAgICAgICBz
dWJydW4uc2V0RGlyZWN0aW9uKGlzUlRMID8gUlRMIDogTFRSKTsKKyAgICAgICAgc3VicnVuLnNl
dERpcmVjdGlvbihpc1JUTCA/IFRleHREaXJlY3Rpb246OlJUTCA6IFRleHREaXJlY3Rpb246OkxU
Uik7CiAgICAgICAgIHN1YnJ1bi5zZXREaXJlY3Rpb25hbE92ZXJyaWRlKGJpZGlSdW4tPmRpck92
ZXJyaWRlKGZhbHNlKSk7CiAKICAgICAgICAgZmxvYXQgd2lkdGggPSBmb250LmRyYXdUZXh0KCp0
aGlzLCBzdWJydW4sIGN1cnJQb2ludCwgMCwgc3RkOjpudWxsb3B0LCBjdXN0b21Gb250Tm90UmVh
ZHlBY3Rpb24pOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRS
dW4uaAkocmV2aXNpb24gMjM0NjE4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvVGV4dFJ1bi5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIHN0cnVjdCBXaWR0
aEl0ZXJhdG9yOwogY2xhc3MgVGV4dFJ1biB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgVGV4dFJ1bihjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0
IHhwb3MgPSAwLCBmbG9hdCBleHBhbnNpb24gPSAwLCBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNp
b25CZWhhdmlvciA9IERlZmF1bHRFeHBhbnNpb24sIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0g
TFRSLCBib29sIGRpcmVjdGlvbmFsT3ZlcnJpZGUgPSBmYWxzZSwgYm9vbCBjaGFyYWN0ZXJTY2Fu
Rm9yQ29kZVBhdGggPSB0cnVlKQorICAgIGV4cGxpY2l0IFRleHRSdW4oY29uc3QgU3RyaW5nJiB0
ZXh0LCBmbG9hdCB4cG9zID0gMCwgZmxvYXQgZXhwYW5zaW9uID0gMCwgRXhwYW5zaW9uQmVoYXZp
b3IgZXhwYW5zaW9uQmVoYXZpb3IgPSBEZWZhdWx0RXhwYW5zaW9uLCBUZXh0RGlyZWN0aW9uIGRp
cmVjdGlvbiA9IFRleHREaXJlY3Rpb246OkxUUiwgYm9vbCBkaXJlY3Rpb25hbE92ZXJyaWRlID0g
ZmFsc2UsIGJvb2wgY2hhcmFjdGVyU2NhbkZvckNvZGVQYXRoID0gdHJ1ZSkKICAgICAgICAgOiBt
X3RleHQodGV4dCkKICAgICAgICAgLCBtX3RhYlNpemUoMCkKICAgICAgICAgLCBtX3hwb3MoeHBv
cykKQEAgLTUyLDE0ICs1MiwxNCBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9leHBhbnNpb24oZXhw
YW5zaW9uKQogICAgICAgICAsIG1fZXhwYW5zaW9uQmVoYXZpb3IoZXhwYW5zaW9uQmVoYXZpb3Ip
CiAgICAgICAgICwgbV9hbGxvd1RhYnMoZmFsc2UpCi0gICAgICAgICwgbV9kaXJlY3Rpb24oZGly
ZWN0aW9uKQorICAgICAgICAsIG1fZGlyZWN0aW9uKHN0YXRpY19jYXN0PHVuc2lnbmVkPihkaXJl
Y3Rpb24pKQogICAgICAgICAsIG1fZGlyZWN0aW9uYWxPdmVycmlkZShkaXJlY3Rpb25hbE92ZXJy
aWRlKQogICAgICAgICAsIG1fY2hhcmFjdGVyU2NhbkZvckNvZGVQYXRoKGNoYXJhY3RlclNjYW5G
b3JDb2RlUGF0aCkKICAgICAgICAgLCBtX2Rpc2FibGVTcGFjaW5nKGZhbHNlKQogICAgIHsKICAg
ICB9CiAKLSAgICBleHBsaWNpdCBUZXh0UnVuKFN0cmluZ1ZpZXcgc3RyaW5nVmlldywgZmxvYXQg
eHBvcyA9IDAsIGZsb2F0IGV4cGFuc2lvbiA9IDAsIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lv
bkJlaGF2aW9yID0gRGVmYXVsdEV4cGFuc2lvbiwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBM
VFIsIGJvb2wgZGlyZWN0aW9uYWxPdmVycmlkZSA9IGZhbHNlLCBib29sIGNoYXJhY3RlclNjYW5G
b3JDb2RlUGF0aCA9IHRydWUpCisgICAgZXhwbGljaXQgVGV4dFJ1bihTdHJpbmdWaWV3IHN0cmlu
Z1ZpZXcsIGZsb2F0IHhwb3MgPSAwLCBmbG9hdCBleHBhbnNpb24gPSAwLCBFeHBhbnNpb25CZWhh
dmlvciBleHBhbnNpb25CZWhhdmlvciA9IERlZmF1bHRFeHBhbnNpb24sIFRleHREaXJlY3Rpb24g
ZGlyZWN0aW9uID0gVGV4dERpcmVjdGlvbjo6TFRSLCBib29sIGRpcmVjdGlvbmFsT3ZlcnJpZGUg
PSBmYWxzZSwgYm9vbCBjaGFyYWN0ZXJTY2FuRm9yQ29kZVBhdGggPSB0cnVlKQogICAgICAgICA6
IFRleHRSdW4oc3RyaW5nVmlldy50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCksIHhwb3MsIGV4cGFu
c2lvbiwgZXhwYW5zaW9uQmVoYXZpb3IsIGRpcmVjdGlvbiwgZGlyZWN0aW9uYWxPdmVycmlkZSwg
Y2hhcmFjdGVyU2NhbkZvckNvZGVQYXRoKQogICAgIHsKICAgICB9CkBAIC0xMDMsMTQgKzEwMywx
NCBAQCBwdWJsaWM6CiAgICAgZmxvYXQgZXhwYW5zaW9uKCkgY29uc3QgeyByZXR1cm4gbV9leHBh
bnNpb247IH0KICAgICBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpb25CZWhhdmlvcigpIGNvbnN0
IHsgcmV0dXJuIG1fZXhwYW5zaW9uQmVoYXZpb3I7IH0KICAgICBUZXh0RGlyZWN0aW9uIGRpcmVj
dGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHREaXJlY3Rpb24+KG1fZGlyZWN0
aW9uKTsgfQotICAgIGJvb2wgcnRsKCkgY29uc3QgeyByZXR1cm4gbV9kaXJlY3Rpb24gPT0gUlRM
OyB9Ci0gICAgYm9vbCBsdHIoKSBjb25zdCB7IHJldHVybiBtX2RpcmVjdGlvbiA9PSBMVFI7IH0K
KyAgICBib29sIHJ0bCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHREaXJlY3Rpb24+
KG1fZGlyZWN0aW9uKSA9PSBUZXh0RGlyZWN0aW9uOjpSVEw7IH0KKyAgICBib29sIGx0cigpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHREaXJlY3Rpb24+KG1fZGlyZWN0aW9uKSA9PSBU
ZXh0RGlyZWN0aW9uOjpMVFI7IH0KICAgICBib29sIGRpcmVjdGlvbmFsT3ZlcnJpZGUoKSBjb25z
dCB7IHJldHVybiBtX2RpcmVjdGlvbmFsT3ZlcnJpZGU7IH0KICAgICBib29sIGNoYXJhY3RlclNj
YW5Gb3JDb2RlUGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fY2hhcmFjdGVyU2NhbkZvckNvZGVQYXRo
OyB9CiAgICAgYm9vbCBzcGFjaW5nRGlzYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2Rpc2FibGVT
cGFjaW5nOyB9CiAKICAgICB2b2lkIGRpc2FibGVTcGFjaW5nKCkgeyBtX2Rpc2FibGVTcGFjaW5n
ID0gdHJ1ZTsgfQotICAgIHZvaWQgc2V0RGlyZWN0aW9uKFRleHREaXJlY3Rpb24gZGlyZWN0aW9u
KSB7IG1fZGlyZWN0aW9uID0gZGlyZWN0aW9uOyB9CisgICAgdm9pZCBzZXREaXJlY3Rpb24oVGV4
dERpcmVjdGlvbiBkaXJlY3Rpb24pIHsgbV9kaXJlY3Rpb24gPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oZGlyZWN0aW9uKTsgfQogICAgIHZvaWQgc2V0RGlyZWN0aW9uYWxPdmVycmlkZShib29sIG92
ZXJyaWRlKSB7IG1fZGlyZWN0aW9uYWxPdmVycmlkZSA9IG92ZXJyaWRlOyB9CiAgICAgdm9pZCBz
ZXRDaGFyYWN0ZXJTY2FuRm9yQ29kZVBhdGgoYm9vbCBzY2FuKSB7IG1fY2hhcmFjdGVyU2NhbkZv
ckNvZGVQYXRoID0gc2NhbjsgfQogICAgIFN0cmluZ1ZpZXcgdGV4dCgpIGNvbnN0IHsgcmV0dXJu
IG1fdGV4dDsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJ
dGVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvV2lkdGhJdGVyYXRvci5jcHAJKHJldmlzaW9uIDIzNDYxOCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
Myw3ICs1Myw3IEBAIFdpZHRoSXRlcmF0b3I6OldpZHRoSXRlcmF0b3IoY29uc3QgRm9udEMKICAg
ICBpZiAoIW1fZXhwYW5zaW9uKQogICAgICAgICBtX2V4cGFuc2lvblBlck9wcG9ydHVuaXR5ID0g
MDsKICAgICBlbHNlIHsKLSAgICAgICAgdW5zaWduZWQgZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3Vu
dCA9IEZvbnRDYXNjYWRlOjpleHBhbnNpb25PcHBvcnR1bml0eUNvdW50KG1fcnVuLnRleHQoKSwg
bV9ydW4ubHRyKCkgPyBMVFIgOiBSVEwsIHJ1bi5leHBhbnNpb25CZWhhdmlvcigpKS5maXJzdDsK
KyAgICAgICAgdW5zaWduZWQgZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudCA9IEZvbnRDYXNjYWRl
OjpleHBhbnNpb25PcHBvcnR1bml0eUNvdW50KG1fcnVuLnRleHQoKSwgbV9ydW4ubHRyKCkgPyBU
ZXh0RGlyZWN0aW9uOjpMVFIgOiBUZXh0RGlyZWN0aW9uOjpSVEwsIHJ1bi5leHBhbnNpb25CZWhh
dmlvcigpKS5maXJzdDsKIAogICAgICAgICBpZiAoIWV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQp
CiAgICAgICAgICAgICBtX2V4cGFuc2lvblBlck9wcG9ydHVuaXR5ID0gMDsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TZWxlY3Rpb25SZWN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2VsZWN0aW9uUmVjdC5jcHAJKHJldmlzaW9uIDIz
NDYxOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TZWxlY3Rpb25SZWN0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNl
bGVjdGlvblJlY3Q6OlNlbGVjdGlvblJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCwgYm9vbCBpc0hv
cml6b250YWwsIGludCBwYWdlTnVtYmVyKQogICAgIDogbV9yZWN0KHJlY3QpCi0gICAgLCBtX2Rp
cmVjdGlvbihMVFIpCisgICAgLCBtX2RpcmVjdGlvbihUZXh0RGlyZWN0aW9uOjpMVFIpCiAgICAg
LCBtX21pblgoMCkKICAgICAsIG1fbWF4WCgwKQogICAgICwgbV9tYXhZKDApCkBAIC03Miw3ICs3
Miw3IEBAIFNlbGVjdGlvblJlY3Q6OlNlbGVjdGlvblJlY3QoY29uc3QgSW50UmUKIH0KIAogU2Vs
ZWN0aW9uUmVjdDo6U2VsZWN0aW9uUmVjdCgpCi0gICAgOiBtX2RpcmVjdGlvbihMVFIpCisgICAg
OiBtX2RpcmVjdGlvbihUZXh0RGlyZWN0aW9uOjpMVFIpCiAgICAgLCBtX21pblgoMCkKICAgICAs
IG1fbWF4WCgwKQogICAgICwgbV9tYXhZKDApCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L0JpZGlSZXNvbHZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvQmlkaVJlc29sdmVyLmgJKHJldmlzaW9uIDIzNDYxOCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvQmlkaVJlc29sdmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTg2LDEw
ICs4NiwxMCBAQCBzdHJ1Y3QgQmlkaVN0YXR1cyB7CiAgICAgLy8gQ3JlYXRlcyBhIEJpZGlTdGF0
dXMgcmVwcmVzZW50aW5nIGEgbmV3IHBhcmFncmFwaCByb290IHdpdGggYSBkZWZhdWx0IGRpcmVj
dGlvbi4KICAgICAvLyBVc2VzIFRleHREaXJlY3Rpb24gYXMgaXQgb25seSBoYXMgdHdvIHBvc3Np
YmlsaXRpZXMgaW5zdGVhZCBvZiBVQ2hhckRpcmVjdGlvbiB3aGljaCBoYXMgYXQgbGVhc3QgMTku
CiAgICAgQmlkaVN0YXR1cyhUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiwgYm9vbCBpc092ZXJyaWRl
KQotICAgICAgICA6IGVvcihkaXJlY3Rpb24gPT0gTFRSID8gVV9MRUZUX1RPX1JJR0hUIDogVV9S
SUdIVF9UT19MRUZUKQorICAgICAgICA6IGVvcihkaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6
TFRSID8gVV9MRUZUX1RPX1JJR0hUIDogVV9SSUdIVF9UT19MRUZUKQogICAgICAgICAsIGxhc3RT
dHJvbmcoZW9yKQogICAgICAgICAsIGxhc3QoZW9yKQotICAgICAgICAsIGNvbnRleHQoQmlkaUNv
bnRleHQ6OmNyZWF0ZShkaXJlY3Rpb24gPT0gTFRSID8gMCA6IDEsIGVvciwgaXNPdmVycmlkZSkp
CisgICAgICAgICwgY29udGV4dChCaWRpQ29udGV4dDo6Y3JlYXRlKGRpcmVjdGlvbiA9PSBUZXh0
RGlyZWN0aW9uOjpMVFIgPyAwIDogMSwgZW9yLCBpc092ZXJyaWRlKSkKICAgICB7CiAgICAgfQog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N0cmluZ1dpdGhEaXJlY3Rpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N0cmluZ1dpdGhE
aXJlY3Rpb24uaAkocmV2aXNpb24gMjM0NjE4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9TdHJpbmdXaXRoRGlyZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgU3RyaW5nV2l0aERpcmVjdGlvbiB7CiAg
ICAgU3RyaW5nIHN0cmluZzsKLSAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiB7IExUUiB9Owor
ICAgIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uIHsgVGV4dERpcmVjdGlvbjo6TFRSIH07CiB9Owog
CiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIGEsIGNv
bnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIGIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L1dyaXRpbmdNb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9Xcml0aW5nTW9kZS5oCShyZXZpc2lvbiAyMzQ2MTgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L1dyaXRpbmdNb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDExICsz
MywxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVudW0gVGV4dERpcmVjdGlvbiB7IExU
UiwgUlRMIH07CitlbnVtIGNsYXNzIFRleHREaXJlY3Rpb24gOiB1aW50OF90IHsgTFRSLCBSVEwg
fTsKIAogaW5saW5lIGJvb2wgaXNMZWZ0VG9SaWdodERpcmVjdGlvbihUZXh0RGlyZWN0aW9uIGRp
cmVjdGlvbikKIHsKLSAgICByZXR1cm4gZGlyZWN0aW9uID09IExUUjsKKyAgICByZXR1cm4gZGly
ZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUjsKIH0KIAogZW51bSBXcml0aW5nTW9kZSB7CkBA
IC00NywxOSArNDcsMTkgQEAgZW51bSBXcml0aW5nTW9kZSB7CiAgICAgUmlnaHRUb0xlZnRXcml0
aW5nTW9kZSA9IDMsIC8vIHZlcnRpY2FsLXJsCiB9OwogCi0jZGVmaW5lIE1BS0VfVEVYVF9GTE9X
KHdyaXRpbmdNb2RlLCBkaXJlY3Rpb24pICAoKHdyaXRpbmdNb2RlKSA8PCAxIHwgKGRpcmVjdGlv
bikpCisjZGVmaW5lIE1BS0VfVEVYVF9GTE9XKHdyaXRpbmdNb2RlLCBkaXJlY3Rpb24pICAoKHdy
aXRpbmdNb2RlKSA8PCAxIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRpcmVjdGlvbikpCiAKIC8v
IERlZmluZSB0aGUgdGV4dCBmbG93IGluIHRlcm1zIG9mIHRoZSB3cml0aW5nIG1vZGUgYW5kIHRo
ZSB0ZXh0IGRpcmVjdGlvbi4gVGhlIGZpcnN0CiAvLyBwYXJ0IGlzIHRoZSBsaW5lIGdyb3dpbmcg
ZGlyZWN0aW9uIGFuZCB0aGUgc2Vjb25kIHBhcnQgaXMgdGhlIGJsb2NrIGdyb3dpbmcgZGlyZWN0
aW9uLgogZW51bSBUZXh0RmxvdyB7Ci0gICAgSW5saW5lRWFzdEJsb2NrU291dGggPSBNQUtFX1RF
WFRfRkxPVyhUb3BUb0JvdHRvbVdyaXRpbmdNb2RlLCBMVFIpLAotICAgIElubGluZVdlc3RCbG9j
a1NvdXRoID0gTUFLRV9URVhUX0ZMT1coVG9wVG9Cb3R0b21Xcml0aW5nTW9kZSwgUlRMKSwKLSAg
ICBJbmxpbmVFYXN0QmxvY2tOb3J0aCA9IE1BS0VfVEVYVF9GTE9XKEJvdHRvbVRvVG9wV3JpdGlu
Z01vZGUsIExUUiksCi0gICAgSW5saW5lV2VzdEJsb2NrTm9ydGggPSBNQUtFX1RFWFRfRkxPVyhC
b3R0b21Ub1RvcFdyaXRpbmdNb2RlLCBSVEwpLAotICAgIElubGluZVNvdXRoQmxvY2tFYXN0ID0g
TUFLRV9URVhUX0ZMT1coTGVmdFRvUmlnaHRXcml0aW5nTW9kZSwgTFRSKSwKLSAgICBJbmxpbmVT
b3V0aEJsb2NrV2VzdCA9IE1BS0VfVEVYVF9GTE9XKExlZnRUb1JpZ2h0V3JpdGluZ01vZGUsIFJU
TCksCi0gICAgSW5saW5lTm9ydGhCbG9ja0Vhc3QgPSBNQUtFX1RFWFRfRkxPVyhSaWdodFRvTGVm
dFdyaXRpbmdNb2RlLCBMVFIpLAotICAgIElubGluZU5vcnRoQmxvY2tXZXN0ID0gTUFLRV9URVhU
X0ZMT1coUmlnaHRUb0xlZnRXcml0aW5nTW9kZSwgUlRMKQorICAgIElubGluZUVhc3RCbG9ja1Nv
dXRoID0gTUFLRV9URVhUX0ZMT1coVG9wVG9Cb3R0b21Xcml0aW5nTW9kZSwgVGV4dERpcmVjdGlv
bjo6TFRSKSwKKyAgICBJbmxpbmVXZXN0QmxvY2tTb3V0aCA9IE1BS0VfVEVYVF9GTE9XKFRvcFRv
Qm90dG9tV3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb246OlJUTCksCisgICAgSW5saW5lRWFzdEJs
b2NrTm9ydGggPSBNQUtFX1RFWFRfRkxPVyhCb3R0b21Ub1RvcFdyaXRpbmdNb2RlLCBUZXh0RGly
ZWN0aW9uOjpMVFIpLAorICAgIElubGluZVdlc3RCbG9ja05vcnRoID0gTUFLRV9URVhUX0ZMT1co
Qm90dG9tVG9Ub3BXcml0aW5nTW9kZSwgVGV4dERpcmVjdGlvbjo6UlRMKSwKKyAgICBJbmxpbmVT
b3V0aEJsb2NrRWFzdCA9IE1BS0VfVEVYVF9GTE9XKExlZnRUb1JpZ2h0V3JpdGluZ01vZGUsIFRl
eHREaXJlY3Rpb246OkxUUiksCisgICAgSW5saW5lU291dGhCbG9ja1dlc3QgPSBNQUtFX1RFWFRf
RkxPVyhMZWZ0VG9SaWdodFdyaXRpbmdNb2RlLCBUZXh0RGlyZWN0aW9uOjpSVEwpLAorICAgIElu
bGluZU5vcnRoQmxvY2tFYXN0ID0gTUFLRV9URVhUX0ZMT1coUmlnaHRUb0xlZnRXcml0aW5nTW9k
ZSwgVGV4dERpcmVjdGlvbjo6TFRSKSwKKyAgICBJbmxpbmVOb3J0aEJsb2NrV2VzdCA9IE1BS0Vf
VEVYVF9GTE9XKFJpZ2h0VG9MZWZ0V3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb246OlJUTCkKIH07
CiAKIGlubGluZSBUZXh0RmxvdyBtYWtlVGV4dEZsb3coV3JpdGluZ01vZGUgd3JpdGluZ01vZGUs
IFRleHREaXJlY3Rpb24gZGlyZWN0aW9uKQpAQCAtOTEsMTMgKzkxLDEzIEBAIGlubGluZSBib29s
IGlzVmVydGljYWxUZXh0RmxvdyhUZXh0RmxvdyAKIC8vIExpbmVzIGhhdmUgdmVydGljYWwgb3Jp
ZW50YXRpb247IG1vZGVzIHZlcnRpY2FsLWxyIG9yIHZlcnRpY2FsLXJsLgogaW5saW5lIGJvb2wg
aXNWZXJ0aWNhbFdyaXRpbmdNb2RlKFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKQogewotICAgIHJl
dHVybiBpc1ZlcnRpY2FsVGV4dEZsb3cobWFrZVRleHRGbG93KHdyaXRpbmdNb2RlLCBMVFIpKTsK
KyAgICByZXR1cm4gaXNWZXJ0aWNhbFRleHRGbG93KG1ha2VUZXh0Rmxvdyh3cml0aW5nTW9kZSwg
VGV4dERpcmVjdGlvbjo6TFRSKSk7CiB9CiAKIC8vIEJsb2NrIHByb2dyZXNzaW9uIGluY3JlYXNl
cyBpbiB0aGUgb3Bwb3NpdGUgZGlyZWN0aW9uIHRvIG5vcm1hbDsgbW9kZXMgdmVydGljYWwtcmwg
b3IgaG9yaXpvbnRhbC1idC4KIGlubGluZSBib29sIGlzRmxpcHBlZFdyaXRpbmdNb2RlKFdyaXRp
bmdNb2RlIHdyaXRpbmdNb2RlKQogewotICAgIHJldHVybiBpc0ZsaXBwZWRUZXh0RmxvdyhtYWtl
VGV4dEZsb3cod3JpdGluZ01vZGUsIExUUikpOworICAgIHJldHVybiBpc0ZsaXBwZWRUZXh0Rmxv
dyhtYWtlVGV4dEZsb3cod3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb246OkxUUikpOwogfQogCiAv
LyBMaW5lcyBoYXZlIGhvcml6b250YWwgb3JpZW50YXRpb247IG1vZGVzIGhvcml6b250YWwtdGIg
b3IgaG9yaXpvbnRhbC1idC4KQEAgLTE2MSw3ICsxNjEsNyBAQCBpbmxpbmUgUGh5c2ljYWxCb3hT
aWRlIG1hcExvZ2ljYWxTaWRlVG9QCiBpbmxpbmUgUGh5c2ljYWxCb3hTaWRlIG1hcExvZ2ljYWxT
aWRlVG9QaHlzaWNhbFNpZGUoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIExvZ2ljYWxCb3hTaWRl
IGxvZ2ljYWxTaWRlKQogewogICAgIC8vIFNldCB0aGUgZGlyZWN0aW9uIHN1Y2ggdGhhdCBzaWRl
IGlzIG1pcnJvcmVkIGlmIGlzRmxpcHBlZFdyaXRpbmdNb2RlKCkgaXMgdHJ1ZQotICAgIFRleHRE
aXJlY3Rpb24gZGlyZWN0aW9uID0gaXNGbGlwcGVkV3JpdGluZ01vZGUod3JpdGluZ01vZGUpID8g
UlRMIDogTFRSOworICAgIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gaXNGbGlwcGVkV3JpdGlu
Z01vZGUod3JpdGluZ01vZGUpID8gVGV4dERpcmVjdGlvbjo6UlRMIDogVGV4dERpcmVjdGlvbjo6
TFRSOwogICAgIHJldHVybiBtYXBMb2dpY2FsU2lkZVRvUGh5c2ljYWxTaWRlKG1ha2VUZXh0Rmxv
dyh3cml0aW5nTW9kZSwgZGlyZWN0aW9uKSwgbG9naWNhbFNpZGUpOwogfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcAkocmV2aXNpb24gMjM0
NjE4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BvcHVwTWVudVdpbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTY1Nyw3ICs2NTcsNyBAQCB2b2lkIFBvcHVwTWVudVdpbjo6cGFpbnQo
Y29uc3QgSW50UmVjdCYgCiAgICAgICAgIC8vIERyYXcgdGhlIGl0ZW0gdGV4dAogICAgICAgICBp
ZiAoaXRlbVN0eWxlLmlzVmlzaWJsZSgpKSB7CiAgICAgICAgICAgICBpbnQgdGV4dFggPSAwOwot
ICAgICAgICAgICAgaWYgKGNsaWVudCgpLT5tZW51U3R5bGUoKS50ZXh0RGlyZWN0aW9uKCkgPT0g
TFRSKSB7CisgICAgICAgICAgICBpZiAoY2xpZW50KCktPm1lbnVTdHlsZSgpLnRleHREaXJlY3Rp
b24oKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpIHsKICAgICAgICAgICAgICAgICB0ZXh0WCA9IHN0
ZDo6bWF4PGludD4oMCwgY2xpZW50KCktPmNsaWVudFBhZGRpbmdMZWZ0KCkgLSBjbGllbnQoKS0+
Y2xpZW50SW5zZXRMZWZ0KCkpOwogICAgICAgICAgICAgICAgIGlmIChSZW5kZXJUaGVtZTo6c2lu
Z2xldG9uKCkucG9wdXBPcHRpb25TdXBwb3J0c1RleHRJbmRlbnQoKSkKICAgICAgICAgICAgICAg
ICAgICAgdGV4dFggKz0gbWluaW11bUludFZhbHVlRm9yTGVuZ3RoKGl0ZW1TdHlsZS50ZXh0SW5k
ZW50KCksIGl0ZW1SZWN0LndpZHRoKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0hpdFRlc3RSZXN1bHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9IaXRUZXN0UmVzdWx0LmNwcAkocmV2aXNpb24gMjM0NjE4KQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjAsNyArMjIw
LDcgQEAgU3RyaW5nIEhpdFRlc3RSZXN1bHQ6OnNlbGVjdGVkVGV4dCgpIGNvbgogCiBTdHJpbmcg
SGl0VGVzdFJlc3VsdDo6c3BlbGxpbmdUb29sVGlwKFRleHREaXJlY3Rpb24mIGRpcikgY29uc3QK
IHsKLSAgICBkaXIgPSBMVFI7CisgICAgZGlyID0gVGV4dERpcmVjdGlvbjo6TFRSOwogICAgIC8v
IFJldHVybiB0aGUgdG9vbCB0aXAgc3RyaW5nIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHBvaW50LCBp
ZiBhbnkuIE9ubHkgbWFya2VycyBhc3NvY2lhdGVkIHdpdGggYmFkIGdyYW1tYXIKICAgICAvLyBj
dXJyZW50bHkgc3VwcGx5IHN0cmluZ3MsIGJ1dCBtYXliZSBzb21lZGF5IG1hcmtlcnMgYXNzb2Np
YXRlZCB3aXRoIG1pc3NwZWxsZWQgd29yZHMgd2lsbCBhbHNvLgogICAgIGlmICghbV9pbm5lck5v
blNoYXJlZE5vZGUpCkBAIC0yNTEsNyArMjUxLDcgQEAgU3RyaW5nIEhpdFRlc3RSZXN1bHQ6OnJl
cGxhY2VkU3RyaW5nKCkgYwogICAgIAogU3RyaW5nIEhpdFRlc3RSZXN1bHQ6OnRpdGxlKFRleHRE
aXJlY3Rpb24mIGRpcikgY29uc3QKIHsKLSAgICBkaXIgPSBMVFI7CisgICAgZGlyID0gVGV4dERp
cmVjdGlvbjo6TFRSOwogICAgIC8vIEZpbmQgdGhlIHRpdGxlIGluIHRoZSBuZWFyZXN0IGVuY2xv
c2luZyBET00gbm9kZS4KICAgICAvLyBGb3IgPGFyZWE+IHRhZ3MgaW4gaW1hZ2UgbWFwcywgd2Fs
ayB0aGUgdHJlZSBmb3IgdGhlIDxhcmVhPiwgbm90IHRoZSA8aW1nPiB1c2luZyBpdC4KICAgICBm
b3IgKE5vZGUqIHRpdGxlTm9kZSA9IG1faW5uZXJOb2RlLmdldCgpOyB0aXRsZU5vZGU7IHRpdGxl
Tm9kZSA9IHRpdGxlTm9kZS0+cGFyZW50SW5Db21wb3NlZFRyZWUoKSkgewpAQCAtMjkwLDcgKzI5
MCw3IEBAIFN0cmluZyBIaXRUZXN0UmVzdWx0Ojppbm5lclRleHRJZlRydW5jYXQKICAgICAgICAg
fQogICAgIH0KIAotICAgIGRpciA9IExUUjsKKyAgICBkaXIgPSBUZXh0RGlyZWN0aW9uOjpMVFI7
CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSW5saW5lQm94LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lu
bGluZUJveC5oCShyZXZpc2lvbiAyMzQ2MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SW5saW5lQm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTIxOCw4ICsyMTgsOCBAQCBwdWJsaWM6CiAK
ICAgICB1bnNpZ25lZCBjaGFyIGJpZGlMZXZlbCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0ZmllbGRz
LmJpZGlFbWJlZGRpbmdMZXZlbCgpOyB9CiAgICAgdm9pZCBzZXRCaWRpTGV2ZWwodW5zaWduZWQg
Y2hhciBsZXZlbCkgeyBtX2JpdGZpZWxkcy5zZXRCaWRpRW1iZWRkaW5nTGV2ZWwobGV2ZWwpOyB9
Ci0gICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBiaWRpTGV2ZWwo
KSAlIDIgPyBSVEwgOiBMVFI7IH0KLSAgICBib29sIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSBj
b25zdCB7IHJldHVybiBkaXJlY3Rpb24oKSA9PSBMVFI7IH0KKyAgICBUZXh0RGlyZWN0aW9uIGRp
cmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIGJpZGlMZXZlbCgpICUgMiA/IFRleHREaXJlY3Rpb246
OlJUTCA6IFRleHREaXJlY3Rpb246OkxUUjsgfQorICAgIGJvb2wgaXNMZWZ0VG9SaWdodERpcmVj
dGlvbigpIGNvbnN0IHsgcmV0dXJuIGRpcmVjdGlvbigpID09IFRleHREaXJlY3Rpb246OkxUUjsg
fQogICAgIGludCBjYXJldExlZnRtb3N0T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gaXNMZWZ0VG9S
aWdodERpcmVjdGlvbigpID8gY2FyZXRNaW5PZmZzZXQoKSA6IGNhcmV0TWF4T2Zmc2V0KCk7IH0K
ICAgICBpbnQgY2FyZXRSaWdodG1vc3RPZmZzZXQoKSBjb25zdCB7IHJldHVybiBpc0xlZnRUb1Jp
Z2h0RGlyZWN0aW9uKCkgPyBjYXJldE1heE9mZnNldCgpIDogY2FyZXRNaW5PZmZzZXQoKTsgfQog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCShyZXZp
c2lvbiAyMzQ2MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNTEsNyArMTI1MSw3IEBAIHZvaWQgSW5saW5lRmxvd0Jv
eDo6cGFpbnRGaWxsTGF5ZXIoY29uc3QKICAgICAgICAgLy8gdGhlIHByZXZpb3VzIGxpbmUgbGVm
dCBvZmYuCiAgICAgICAgIExheW91dFVuaXQgbG9naWNhbE9mZnNldE9uTGluZSA9IDA7CiAgICAg
ICAgIExheW91dFVuaXQgdG90YWxMb2dpY2FsV2lkdGg7Ci0gICAgICAgIGlmIChyZW5kZXJlcigp
LnN0eWxlKCkuZGlyZWN0aW9uKCkgPT0gTFRSKSB7CisgICAgICAgIGlmIChyZW5kZXJlcigpLnN0
eWxlKCkuZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSKSB7CiAgICAgICAgICAgICBm
b3IgKElubGluZUZsb3dCb3gqIGN1cnIgPSBwcmV2TGluZUJveCgpOyBjdXJyOyBjdXJyID0gY3Vy
ci0+cHJldkxpbmVCb3goKSkKICAgICAgICAgICAgICAgICBsb2dpY2FsT2Zmc2V0T25MaW5lICs9
IGN1cnItPmxvZ2ljYWxXaWR0aCgpOwogICAgICAgICAgICAgdG90YWxMb2dpY2FsV2lkdGggPSBs
b2dpY2FsT2Zmc2V0T25MaW5lOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGlu
ZUl0ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGlu
ZUl0ZXJhdG9yLmgJKHJldmlzaW9uIDIzNDYxOCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9JbmxpbmVJdGVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDIsOCArMTQyLDggQEAgaW5s
aW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJbmxpbmVJdGVyYQogc3RhdGljIGlubGluZSBVQ2hh
ckRpcmVjdGlvbiBlbWJlZENoYXJGcm9tRGlyZWN0aW9uKFRleHREaXJlY3Rpb24gZGlyZWN0aW9u
LCBFVW5pY29kZUJpZGkgdW5pY29kZUJpZGkpCiB7CiAgICAgaWYgKHVuaWNvZGVCaWRpID09IEVt
YmVkKQotICAgICAgICByZXR1cm4gZGlyZWN0aW9uID09IFJUTCA/IFVfUklHSFRfVE9fTEVGVF9F
TUJFRERJTkcgOiBVX0xFRlRfVE9fUklHSFRfRU1CRURESU5HOwotICAgIHJldHVybiBkaXJlY3Rp
b24gPT0gUlRMID8gVV9SSUdIVF9UT19MRUZUX09WRVJSSURFIDogVV9MRUZUX1RPX1JJR0hUX09W
RVJSSURFOworICAgICAgICByZXR1cm4gZGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OlJUTCA/
IFVfUklHSFRfVE9fTEVGVF9FTUJFRERJTkcgOiBVX0xFRlRfVE9fUklHSFRfRU1CRURESU5HOwor
ICAgIHJldHVybiBkaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6UlRMID8gVV9SSUdIVF9UT19M
RUZUX09WRVJSSURFIDogVV9MRUZUX1RPX1JJR0hUX09WRVJSSURFOwogfQogCiB0ZW1wbGF0ZSA8
Y2xhc3MgT2JzZXJ2ZXI+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4
dEJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRl
eHRCb3guY3BwCShyZXZpc2lvbiAyMzQ2MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SW5saW5lVGV4dEJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5Myw3ICs1OTMsNyBAQCB2b2lk
IElubGluZVRleHRCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpCiAgICAgICAgICAgICBpZiAoIWlz
SG9yaXpvbnRhbCgpKSB7CiAgICAgICAgICAgICAgICAgdGV4dERlY29yYXRpb25TZWxlY3Rpb25D
bGlwT3V0UmVjdC5tb3ZlKDAsIGxvZ2ljYWxXaWR0aEJlZm9yZVJhbmdlKTsKICAgICAgICAgICAg
ICAgICB0ZXh0RGVjb3JhdGlvblNlbGVjdGlvbkNsaXBPdXRSZWN0LnNldEhlaWdodChsb2dpY2Fs
U2VsZWN0aW9uV2lkdGgpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChkaXJlY3Rpb24oKSA9PSBS
VEwpIHsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlv
bjo6UlRMKSB7CiAgICAgICAgICAgICAgICAgdGV4dERlY29yYXRpb25TZWxlY3Rpb25DbGlwT3V0
UmVjdC5tb3ZlKGxvZ2ljYWxXaWR0aEFmdGVyUmFuZ2UsIDApOwogICAgICAgICAgICAgICAgIHRl
eHREZWNvcmF0aW9uU2VsZWN0aW9uQ2xpcE91dFJlY3Quc2V0V2lkdGgobG9naWNhbFNlbGVjdGlv
bldpZHRoKTsKICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC0xMTM5LDcgKzExMzksNyBAQCB2b2lk
IElubGluZVRleHRCb3g6OnBhaW50Q29tcG9zaXRpb25VbmRlCiAKIHN0YXRpYyBpbmxpbmUgdm9p
ZCBtaXJyb3JSVExTZWdtZW50KGZsb2F0IGxvZ2ljYWxXaWR0aCwgVGV4dERpcmVjdGlvbiBkaXJl
Y3Rpb24sIGZsb2F0JiBzdGFydCwgZmxvYXQgd2lkdGgpCiB7Ci0gICAgaWYgKGRpcmVjdGlvbiA9
PSBMVFIpCisgICAgaWYgKGRpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpCiAgICAgICAg
IHJldHVybjsKICAgICBzdGFydCA9IGxvZ2ljYWxXaWR0aCAtIHdpZHRoIC0gc3RhcnQ7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHJldmlzaW9uIDIz
NDYxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMwOTUsNyArMzA5NSw3IEBAIGNvbnN0IGNoYXIqIFJlbmRlckJsb2NrOjpy
ZW5kZXJOYW1lKCkgY28KIAogVGV4dFJ1biBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihT
dHJpbmdWaWV3IHN0cmluZ1ZpZXcsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgRXhwYW5zaW9u
QmVoYXZpb3IgZXhwYW5zaW9uLCBUZXh0UnVuRmxhZ3MgZmxhZ3MpCiB7Ci0gICAgVGV4dERpcmVj
dGlvbiB0ZXh0RGlyZWN0aW9uID0gTFRSOworICAgIGF1dG8gdGV4dERpcmVjdGlvbiA9IFRleHRE
aXJlY3Rpb246OkxUUjsKICAgICBib29sIGRpcmVjdGlvbmFsT3ZlcnJpZGUgPSBzdHlsZS5ydGxP
cmRlcmluZygpID09IE9yZGVyOjpWaXN1YWw7CiAgICAgaWYgKGZsYWdzICE9IERlZmF1bHRUZXh0
UnVuRmxhZ3MpIHsKICAgICAgICAgaWYgKGZsYWdzICYgUmVzcGVjdERpcmVjdGlvbikKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQu
Y3BwCShyZXZpc2lvbiAyMzQ2MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2tMaW5lTGF5b3V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAsMTEgKzYwLDExIEBAIHN0
YXRpYyB2b2lkIGRldGVybWluZURpcmVjdGlvbmFsaXR5KFRleHQKICAgICAgICAgaWYgKFVDaGFy
IGN1cnJlbnQgPSBpdGVyLmN1cnJlbnQoKSkgewogICAgICAgICAgICAgVUNoYXJEaXJlY3Rpb24g
Y2hhckRpcmVjdGlvbiA9IHVfY2hhckRpcmVjdGlvbihjdXJyZW50KTsKICAgICAgICAgICAgIGlm
IChjaGFyRGlyZWN0aW9uID09IFVfTEVGVF9UT19SSUdIVCkgewotICAgICAgICAgICAgICAgIGRp
ciA9IExUUjsKKyAgICAgICAgICAgICAgICBkaXIgPSBUZXh0RGlyZWN0aW9uOjpMVFI7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGNoYXJE
aXJlY3Rpb24gPT0gVV9SSUdIVF9UT19MRUZUIHx8IGNoYXJEaXJlY3Rpb24gPT0gVV9SSUdIVF9U
T19MRUZUX0FSQUJJQykgewotICAgICAgICAgICAgICAgIGRpciA9IFJUTDsKKyAgICAgICAgICAg
ICAgICBkaXIgPSBUZXh0RGlyZWN0aW9uOjpSVEw7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0zNDgsNyArMzQ4LDcgQEAgVGV4dEFsaWduTW9k
ZSBSZW5kZXJCbG9ja0Zsb3c6OnRleHRBbGlnbgogI2lmIEVOQUJMRShDU1MzX1RFWFQpCiAgICAg
VGV4dEp1c3RpZnkgdGV4dEp1c3RpZnkgPSBzdHlsZSgpLnRleHRKdXN0aWZ5KCk7CiAgICAgaWYg
KGFsaWdubWVudCA9PSBUZXh0QWxpZ25Nb2RlOjpKdXN0aWZ5ICYmIHRleHRKdXN0aWZ5ID09IFRl
eHRKdXN0aWZ5OjpOb25lKQotICAgICAgICByZXR1cm4gc3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBM
VFIgPyBUZXh0QWxpZ25Nb2RlOjpMZWZ0IDogVGV4dEFsaWduTW9kZTo6UmlnaHQ7CisgICAgICAg
IHJldHVybiBzdHlsZSgpLmRpcmVjdGlvbigpID09IFRleHREaXJlY3Rpb246OkxUUiA/IFRleHRB
bGlnbk1vZGU6OkxlZnQgOiBUZXh0QWxpZ25Nb2RlOjpSaWdodDsKICNlbmRpZgogCiAgICAgaWYg
KGVuZHNXaXRoU29mdEJyZWFrKQpAQCAtNjUwLDEzICs2NTAsMTMgQEAgdm9pZCBSZW5kZXJCbG9j
a0Zsb3c6OnVwZGF0ZUxvZ2ljYWxXaWR0aAogICAgICAgICB9CiAgICAgICAgIEZBTExUSFJPVUdI
OwogICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6U3RhcnQ6Ci0gICAgICAgIGlmIChkaXJlY3Rpb24g
PT0gTFRSKQorICAgICAgICBpZiAoZGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUikKICAg
ICAgICAgICAgIHVwZGF0ZUxvZ2ljYWxXaWR0aEZvckxlZnRBbGlnbmVkQmxvY2soc3R5bGUoKS5p
c0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCksIHRyYWlsaW5nU3BhY2VSdW4sIGxvZ2ljYWxMZWZ0LCB0
b3RhbExvZ2ljYWxXaWR0aCwgYXZhaWxhYmxlTG9naWNhbFdpZHRoKTsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgdXBkYXRlTG9naWNhbFdpZHRoRm9yUmlnaHRBbGlnbmVkQmxvY2soc3R5bGUo
KS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCksIHRyYWlsaW5nU3BhY2VSdW4sIGxvZ2ljYWxMZWZ0
LCB0b3RhbExvZ2ljYWxXaWR0aCwgYXZhaWxhYmxlTG9naWNhbFdpZHRoKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpFbmQ6Ci0gICAgICAgIGlmIChkaXJlY3Rpb24g
PT0gTFRSKQorICAgICAgICBpZiAoZGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUikKICAg
ICAgICAgICAgIHVwZGF0ZUxvZ2ljYWxXaWR0aEZvclJpZ2h0QWxpZ25lZEJsb2NrKHN0eWxlKCku
aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpLCB0cmFpbGluZ1NwYWNlUnVuLCBsb2dpY2FsTGVmdCwg
dG90YWxMb2dpY2FsV2lkdGgsIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIHVwZGF0ZUxvZ2ljYWxXaWR0aEZvckxlZnRBbGlnbmVkQmxvY2soc3R5bGUo
KS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCksIHRyYWlsaW5nU3BhY2VSdW4sIGxvZ2ljYWxMZWZ0
LCB0b3RhbExvZ2ljYWxXaWR0aCwgYXZhaWxhYmxlTG9naWNhbFdpZHRoKTsKQEAgLTEwNjEsNyAr
MTA2MSw3IEBAIGlubGluZSBCaWRpUnVuKiBSZW5kZXJCbG9ja0Zsb3c6OmhhbmRsZVQKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IHN0eWxl
KCkuZGlyZWN0aW9uKCk7Ci0gICAgYm9vbCBzaG91bGRSZW9yZGVyID0gdHJhaWxpbmdTcGFjZVJ1
biAhPSAoZGlyZWN0aW9uID09IExUUiA/IGJpZGlSdW5zLmxhc3RSdW4oKSA6IGJpZGlSdW5zLmZp
cnN0UnVuKCkpOworICAgIGJvb2wgc2hvdWxkUmVvcmRlciA9IHRyYWlsaW5nU3BhY2VSdW4gIT0g
KGRpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBiaWRpUnVucy5sYXN0UnVuKCkgOiBi
aWRpUnVucy5maXJzdFJ1bigpKTsKICAgICBpZiAoZmlyc3RTcGFjZSAhPSB0cmFpbGluZ1NwYWNl
UnVuLT5zdGFydCgpKSB7CiAgICAgICAgIEJpZGlDb250ZXh0KiBiYXNlQ29udGV4dCA9IGN1cnJl
bnRDb250ZXh0OwogICAgICAgICB3aGlsZSAoQmlkaUNvbnRleHQqIHBhcmVudCA9IGJhc2VDb250
ZXh0LT5wYXJlbnQoKSkKQEAgLTEwNzAsNyArMTA3MCw3IEBAIGlubGluZSBCaWRpUnVuKiBSZW5k
ZXJCbG9ja0Zsb3c6OmhhbmRsZVQKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEJpZGlSdW4+IG5l
d1RyYWlsaW5nUnVuID0gc3RkOjptYWtlX3VuaXF1ZTxCaWRpUnVuPihmaXJzdFNwYWNlLCB0cmFp
bGluZ1NwYWNlUnVuLT5tX3N0b3AsIHRyYWlsaW5nU3BhY2VSdW4tPnJlbmRlcmVyKCksIGJhc2VD
b250ZXh0LCBVX09USEVSX05FVVRSQUwpOwogICAgICAgICB0cmFpbGluZ1NwYWNlUnVuLT5tX3N0
b3AgPSBmaXJzdFNwYWNlOwogICAgICAgICB0cmFpbGluZ1NwYWNlUnVuID0gbmV3VHJhaWxpbmdS
dW4uZ2V0KCk7Ci0gICAgICAgIGlmIChkaXJlY3Rpb24gPT0gTFRSKQorICAgICAgICBpZiAoZGly
ZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUikKICAgICAgICAgICAgIGJpZGlSdW5zLmFwcGVu
ZFJ1bihXVEZNb3ZlKG5ld1RyYWlsaW5nUnVuKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IGJpZGlSdW5zLnByZXBlbmRSdW4oV1RGTW92ZShuZXdUcmFpbGluZ1J1bikpOwpAQCAtMTA3OSw3
ICsxMDc5LDcgQEAgaW5saW5lIEJpZGlSdW4qIFJlbmRlckJsb2NrRmxvdzo6aGFuZGxlVAogICAg
IGlmICghc2hvdWxkUmVvcmRlcikKICAgICAgICAgcmV0dXJuIHRyYWlsaW5nU3BhY2VSdW47CiAK
LSAgICBpZiAoZGlyZWN0aW9uID09IExUUikgeworICAgIGlmIChkaXJlY3Rpb24gPT0gVGV4dERp
cmVjdGlvbjo6TFRSKSB7CiAgICAgICAgIGJpZGlSdW5zLm1vdmVSdW5Ub0VuZCh0cmFpbGluZ1Nw
YWNlUnVuKTsKICAgICAgICAgdHJhaWxpbmdTcGFjZVJ1bi0+bV9sZXZlbCA9IDA7CiAgICAgfSBl
bHNlIHsKQEAgLTEzNzgsNyArMTM3OCw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpsYXlvdXRS
dW5zQW5kRmxvYXQKICAgICAgICAgICAgIGlmIChsYXN0Um9vdEJveCgpKQogICAgICAgICAgICAg
ICAgIGxhc3RSb290Qm94KCktPnNldExpbmVCcmVha0luZm8oZW5kLnJlbmRlcmVyKCksIGVuZC5v
ZmZzZXQoKSwgcmVzb2x2ZXIuc3RhdHVzKCkpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgVmlzdWFsRGlyZWN0aW9uT3ZlcnJpZGUgb3ZlcnJpZGUgPSAoc3R5bGVUb1VzZS5ydGxPcmRl
cmluZygpID09IE9yZGVyOjpWaXN1YWwgPyAoc3R5bGVUb1VzZS5kaXJlY3Rpb24oKSA9PSBMVFIg
PyBWaXN1YWxMZWZ0VG9SaWdodE92ZXJyaWRlIDogVmlzdWFsUmlnaHRUb0xlZnRPdmVycmlkZSkg
OiBOb1Zpc3VhbE92ZXJyaWRlKTsKKyAgICAgICAgICAgIFZpc3VhbERpcmVjdGlvbk92ZXJyaWRl
IG92ZXJyaWRlID0gKHN0eWxlVG9Vc2UucnRsT3JkZXJpbmcoKSA9PSBPcmRlcjo6VmlzdWFsID8g
KHN0eWxlVG9Vc2UuZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gVmlzdWFsTGVm
dFRvUmlnaHRPdmVycmlkZSA6IFZpc3VhbFJpZ2h0VG9MZWZ0T3ZlcnJpZGUpIDogTm9WaXN1YWxP
dmVycmlkZSk7CiAKICAgICAgICAgICAgIGlmIChpc05ld1VCQVBhcmFncmFwaCAmJiBzdHlsZVRv
VXNlLnVuaWNvZGVCaWRpKCkgPT0gUGxhaW50ZXh0ICYmICFyZXNvbHZlci5jb250ZXh0KCktPnBh
cmVudCgpKSB7CiAgICAgICAgICAgICAgICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBzdHls
ZVRvVXNlLmRpcmVjdGlvbigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eC5jcHAJKHJldmlzaW9uIDIzNDYxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzMwLDcgKzMzMzAsNyBAQCBzdGF0aWMgdm9p
ZCBjb21wdXRlSW5saW5lU3RhdGljRGlzdGFuY2UoCiAgICAgLy8gYm90aCAibGVmdCIgYW5kICJy
aWdodCIgcHJvcGVydGllcyBhcmUgImF1dG8iLCB3ZSBjYW4gY29uc2lkZXIgdGhhdCBvbmUgb2YK
ICAgICAvLyB0aGVtIChkZXBlbmRpbmcgb24gdGhlIGRpcmVjdGlvbikgaXMgc2ltcGx5ICIwIi4K
ICAgICBpZiAocGFyZW50LT5pc1JlbmRlckdyaWQoKSAmJiBwYXJlbnQgPT0gY2hpbGQtPmNvbnRh
aW5pbmdCbG9jaygpKSB7Ci0gICAgICAgIGlmIChwYXJlbnREaXJlY3Rpb24gPT0gTFRSKQorICAg
ICAgICBpZiAocGFyZW50RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUikKICAgICAgICAg
ICAgIGxvZ2ljYWxMZWZ0LnNldFZhbHVlKEZpeGVkLCAwKTsKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgbG9naWNhbFJpZ2h0LnNldFZhbHVlKEZpeGVkLCAwKTsKQEAgLTMzMzgsNyArMzMzOCw3
IEBAIHN0YXRpYyB2b2lkIGNvbXB1dGVJbmxpbmVTdGF0aWNEaXN0YW5jZSgKICAgICB9CiAKICAg
ICAvLyBGSVhNRTogVGhlIHN0YXRpYyBkaXN0YW5jZSBjb21wdXRhdGlvbiBoYXMgbm90IGJlZW4g
cGF0Y2hlZCBmb3IgbWl4ZWQgd3JpdGluZyBtb2RlcyB5ZXQuCi0gICAgaWYgKHBhcmVudERpcmVj
dGlvbiA9PSBMVFIpIHsKKyAgICBpZiAocGFyZW50RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246
OkxUUikgewogICAgICAgICBMYXlvdXRVbml0IHN0YXRpY1Bvc2l0aW9uID0gY2hpbGQtPmxheWVy
KCktPnN0YXRpY0lubGluZVBvc2l0aW9uKCkgLSBjb250YWluZXJCbG9jay5ib3JkZXJMb2dpY2Fs
TGVmdCgpOwogICAgICAgICBmb3IgKGF1dG8qIGN1cnJlbnQgPSBwYXJlbnQ7IGN1cnJlbnQgJiYg
Y3VycmVudCAhPSAmY29udGFpbmVyQmxvY2s7IGN1cnJlbnQgPSBjdXJyZW50LT5jb250YWluZXIo
KSkgewogICAgICAgICAgICAgaWYgKCFpczxSZW5kZXJCb3g+KCpjdXJyZW50KSkKQEAgLTM1OTcs
NyArMzU5Nyw3IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWwKICAg
ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8gVXNlIHRoZSBjb250YWluaW5n
IGJsb2NrJ3MgZGlyZWN0aW9uIHJhdGhlciB0aGFuIHRoZSBwYXJlbnQgYmxvY2sncwogICAgICAg
ICAgICAgICAgIC8vIHBlciBDU1MgMi4xIHJlZmVyZW5jZSB0ZXN0IGFic3Bvcy1ub24tcmVwbGFj
ZWQtd2lkdGgtbWFyZ2luLTAwMC4KLSAgICAgICAgICAgICAgICBpZiAoY29udGFpbmVyRGlyZWN0
aW9uID09IExUUikgeworICAgICAgICAgICAgICAgIGlmIChjb250YWluZXJEaXJlY3Rpb24gPT0g
VGV4dERpcmVjdGlvbjo6TFRSKSB7CiAgICAgICAgICAgICAgICAgICAgIG1hcmdpbkxvZ2ljYWxM
ZWZ0VmFsdWUgPSAwOwogICAgICAgICAgICAgICAgICAgICBtYXJnaW5Mb2dpY2FsUmlnaHRWYWx1
ZSA9IGF2YWlsYWJsZVNwYWNlOyAvLyB3aWxsIGJlIG5lZ2F0aXZlCiAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKQEAgLTM2MjAsNyArMzYyMCw3IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9z
aXRpb25lZExvZ2ljYWwKIAogICAgICAgICAgICAgLy8gVXNlIHRoZSBjb250YWluaW5nIGJsb2Nr
J3MgZGlyZWN0aW9uIHJhdGhlciB0aGFuIHRoZSBwYXJlbnQgYmxvY2sncwogICAgICAgICAgICAg
Ly8gcGVyIENTUyAyLjEgcmVmZXJlbmNlIHRlc3QgYWJzcG9zLW5vbi1yZXBsYWNlZC13aWR0aC1t
YXJnaW4tMDAwLgotICAgICAgICAgICAgaWYgKGNvbnRhaW5lckRpcmVjdGlvbiA9PSBSVEwpCisg
ICAgICAgICAgICBpZiAoY29udGFpbmVyRGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OlJUTCkK
ICAgICAgICAgICAgICAgICBsb2dpY2FsTGVmdFZhbHVlID0gKGF2YWlsYWJsZVNwYWNlICsgbG9n
aWNhbExlZnRWYWx1ZSkgLSBtYXJnaW5Mb2dpY2FsTGVmdFZhbHVlIC0gbWFyZ2luTG9naWNhbFJp
Z2h0VmFsdWU7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewpAQCAtNDA5NSw3ICs0MDk1LDcgQEAg
dm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbAogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgLy8gVXNlIHRoZSBjb250YWluaW5nIGJsb2NrJ3MgZGlyZWN0aW9uIHJh
dGhlciB0aGFuIHRoZSBwYXJlbnQgYmxvY2sncwogICAgICAgICAgICAgLy8gcGVyIENTUyAyLjEg
cmVmZXJlbmNlIHRlc3QgYWJzcG9zLXJlcGxhY2VkLXdpZHRoLW1hcmdpbi0wMDAuCi0gICAgICAg
ICAgICBpZiAoY29udGFpbmVyRGlyZWN0aW9uID09IExUUikgeworICAgICAgICAgICAgaWYgKGNv
bnRhaW5lckRpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpIHsKICAgICAgICAgICAgICAg
ICBtYXJnaW5Mb2dpY2FsTGVmdEFsaWFzID0gMDsKICAgICAgICAgICAgICAgICBtYXJnaW5Mb2dp
Y2FsUmlnaHRBbGlhcyA9IGRpZmZlcmVuY2U7IC8vIHdpbGwgYmUgbmVnYXRpdmUKICAgICAgICAg
ICAgIH0gZWxzZSB7CkBAIC00MTQzLDcgKzQxNDMsNyBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0
ZVBvc2l0aW9uZWRMb2dpY2FsCiAgICAgICAgIGxvZ2ljYWxSaWdodFZhbHVlID0gdmFsdWVGb3JM
ZW5ndGgobG9naWNhbFJpZ2h0LCBjb250YWluZXJMb2dpY2FsV2lkdGgpOwogICAgICAgICBsb2dp
Y2FsTGVmdFZhbHVlID0gdmFsdWVGb3JMZW5ndGgobG9naWNhbExlZnQsIGNvbnRhaW5lckxvZ2lj
YWxXaWR0aCk7CiAgICAgICAgIC8vIElmIHRoZSBjb250YWluaW5nIGJsb2NrIGlzIHJpZ2h0LXRv
LWxlZnQsIHRoZW4gcHVzaCB0aGUgbGVmdCBwb3NpdGlvbiBhcyBmYXIgdG8gdGhlIHJpZ2h0IGFz
IHBvc3NpYmxlCi0gICAgICAgIGlmIChjb250YWluZXJEaXJlY3Rpb24gPT0gUlRMKSB7CisgICAg
ICAgIGlmIChjb250YWluZXJEaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6UlRMKSB7CiAgICAg
ICAgICAgICBpbnQgdG90YWxMb2dpY2FsV2lkdGggPSBjb21wdXRlZFZhbHVlcy5tX2V4dGVudCAr
IGxvZ2ljYWxMZWZ0VmFsdWUgKyBsb2dpY2FsUmlnaHRWYWx1ZSArICBtYXJnaW5Mb2dpY2FsTGVm
dEFsaWFzICsgbWFyZ2luTG9naWNhbFJpZ2h0QWxpYXM7CiAgICAgICAgICAgICBsb2dpY2FsTGVm
dFZhbHVlID0gY29udGFpbmVyTG9naWNhbFdpZHRoIC0gKHRvdGFsTG9naWNhbFdpZHRoIC0gbG9n
aWNhbExlZnRWYWx1ZSk7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCShyZXZpc2lv
biAyMzQ2MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZs
ZXhpYmxlQm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTc2LDcgKzk3Niw3IEBAIHZvaWQgUmVu
ZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjphcHBseUwKICAgICAgICAgY2hpbGQtPmxheW91dElm
TmVlZGVkKCk7CiAKICAgICAgICAgLy8gRklYTUU6IEZvciBub3cgZG9uJ3Qgc3VwcG9ydCBSVEwu
Ci0gICAgICAgIGlmIChzdHlsZSgpLmRpcmVjdGlvbigpICE9IExUUikKKyAgICAgICAgaWYgKHN0
eWxlKCkuZGlyZWN0aW9uKCkgIT0gVGV4dERpcmVjdGlvbjo6TFRSKQogICAgICAgICAgICAgY29u
dGludWU7CiAKICAgICAgICAgLy8gR2V0IHRoZSBsYXN0IGxpbmUKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGcmFnbWVudGVkRmxvdy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50ZWRGbG93LmNwcAkocmV2aXNpb24g
MjM0NjE4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50ZWRGbG93
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY4LDcgKzE2OCw3IEBAIHZvaWQgUmVuZGVyRnJhZ21l
bnRlZEZsb3c6OnVwZGF0ZUxvZ2ljYWwKICAgICAvLyBJZiB0aGUgZnJhZ21lbnRzIGhhdmUgbm9u
LXVuaWZvcm0gbG9naWNhbCB3aWR0aHMsIHRoZW4gaW5zZXJ0IGluc2V0IGluZm9ybWF0aW9uIGZv
ciB0aGUgUmVuZGVyRnJhZ21lbnRlZEZsb3cuCiAgICAgZm9yIChhdXRvJiBmcmFnbWVudCA6IG1f
ZnJhZ21lbnRMaXN0KSB7CiAgICAgICAgIExheW91dFVuaXQgZnJhZ21lbnRMb2dpY2FsV2lkdGgg
PSBmcmFnbWVudC0+cGFnZUxvZ2ljYWxXaWR0aCgpOwotICAgICAgICBMYXlvdXRVbml0IGxvZ2lj
YWxMZWZ0ID0gc3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBMVFIgPyBMYXlvdXRVbml0KCkgOiBsb2dp
Y2FsV2lkdGggLSBmcmFnbWVudExvZ2ljYWxXaWR0aDsKKyAgICAgICAgTGF5b3V0VW5pdCBsb2dp
Y2FsTGVmdCA9IHN0eWxlKCkuZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gTGF5
b3V0VW5pdCgpIDogbG9naWNhbFdpZHRoIC0gZnJhZ21lbnRMb2dpY2FsV2lkdGg7CiAgICAgICAg
IGZyYWdtZW50LT5zZXRSZW5kZXJCb3hGcmFnbWVudEluZm8odGhpcywgbG9naWNhbExlZnQsIGZy
YWdtZW50TG9naWNhbFdpZHRoLCBmYWxzZSk7CiAgICAgfQogfQpAQCAtNzg3LDcgKzc4Nyw3IEBA
IHZvaWQgUmVuZGVyRnJhZ21lbnRlZEZsb3c6OnVwZGF0ZUZyYWdtZW4KICAgICAgICAgTGF5b3V0
VW5pdCBmcmFnbWVudExvZ2ljYWxXaWR0aCA9IGZyYWdtZW50LT5wYWdlTG9naWNhbFdpZHRoKCk7
CiAgICAgICAgIExheW91dFVuaXQgZnJhZ21lbnRMb2dpY2FsSGVpZ2h0ID0gc3RkOjptaW48TGF5
b3V0VW5pdD4oUmVuZGVyRnJhZ21lbnRlZEZsb3c6Om1heExvZ2ljYWxIZWlnaHQoKSAtIGxvZ2lj
YWxIZWlnaHQsIGZyYWdtZW50LT5sb2dpY2FsSGVpZ2h0T2ZBbGxGcmFnbWVudGVkRmxvd0NvbnRl
bnQoKSk7CiAKLSAgICAgICAgTGF5b3V0UmVjdCBmcmFnbWVudFJlY3Qoc3R5bGUoKS5kaXJlY3Rp
b24oKSA9PSBMVFIgPyBMYXlvdXRVbml0KCkgOiBsb2dpY2FsV2lkdGgoKSAtIGZyYWdtZW50TG9n
aWNhbFdpZHRoLCBsb2dpY2FsSGVpZ2h0LCBmcmFnbWVudExvZ2ljYWxXaWR0aCwgZnJhZ21lbnRM
b2dpY2FsSGVpZ2h0KTsKKyAgICAgICAgTGF5b3V0UmVjdCBmcmFnbWVudFJlY3Qoc3R5bGUoKS5k
aXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBMYXlvdXRVbml0KCkgOiBsb2dpY2Fs
V2lkdGgoKSAtIGZyYWdtZW50TG9naWNhbFdpZHRoLCBsb2dpY2FsSGVpZ2h0LCBmcmFnbWVudExv
Z2ljYWxXaWR0aCwgZnJhZ21lbnRMb2dpY2FsSGVpZ2h0KTsKIAogICAgICAgICBmcmFnbWVudC0+
c2V0RnJhZ21lbnRlZEZsb3dQb3J0aW9uUmVjdChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8g
ZnJhZ21lbnRSZWN0IDogZnJhZ21lbnRSZWN0LnRyYW5zcG9zZWRSZWN0KCkpOwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3Qu
Y3BwCShyZXZpc2lvbiAyMzQ2MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NSw3ICsyNDUsNyBAQCBi
b29sIFJlbmRlckxheWVyTW9kZWxPYmplY3Q6OnNob3VsZFBsYWNlCiAgICAgY2FzZSBVc2VySW50
ZXJmYWNlRGlyZWN0aW9uUG9saWN5OjpDb250ZW50OgogICAgICAgICByZXR1cm4gc3R5bGUoKS5z
aG91bGRQbGFjZUJsb2NrRGlyZWN0aW9uU2Nyb2xsYmFyT25MZWZ0KCk7CiAgICAgY2FzZSBVc2Vy
SW50ZXJmYWNlRGlyZWN0aW9uUG9saWN5OjpTeXN0ZW06Ci0gICAgICAgIHJldHVybiBzZXR0aW5n
cygpLnN5c3RlbUxheW91dERpcmVjdGlvbigpID09IFJUTDsKKyAgICAgICAgcmV0dXJuIHNldHRp
bmdzKCkuc3lzdGVtTGF5b3V0RGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6UlRMOwogICAg
IH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gc3R5bGUoKS5zaG91bGRQ
bGFjZUJsb2NrRGlyZWN0aW9uU2Nyb2xsYmFyT25MZWZ0KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTWFycXVlZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck1hcnF1ZWUuY3BwCShyZXZpc2lvbiAyMzQ2MTgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWFycXVlZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEwNCw5ICsxMDQsOSBAQCBNYXJxdWVlRGlyZWN0aW9uIFJlbmRlck1hcnF1ZWU6OmRpcmVjdGlv
CiAgICAgaWYgKHJlc3VsdCA9PSBNYXJxdWVlRGlyZWN0aW9uOjpBdXRvKQogICAgICAgICByZXN1
bHQgPSBNYXJxdWVlRGlyZWN0aW9uOjpCYWNrd2FyZDsKICAgICBpZiAocmVzdWx0ID09IE1hcnF1
ZWVEaXJlY3Rpb246OkZvcndhcmQpCi0gICAgICAgIHJlc3VsdCA9IChkaXIgPT0gTFRSKSA/IE1h
cnF1ZWVEaXJlY3Rpb246OlJpZ2h0IDogTWFycXVlZURpcmVjdGlvbjo6TGVmdDsKKyAgICAgICAg
cmVzdWx0ID0gKGRpciA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpID8gTWFycXVlZURpcmVjdGlvbjo6
UmlnaHQgOiBNYXJxdWVlRGlyZWN0aW9uOjpMZWZ0OwogICAgIGlmIChyZXN1bHQgPT0gTWFycXVl
ZURpcmVjdGlvbjo6QmFja3dhcmQpCi0gICAgICAgIHJlc3VsdCA9IChkaXIgPT0gTFRSKSA/IE1h
cnF1ZWVEaXJlY3Rpb246OkxlZnQgOiBNYXJxdWVlRGlyZWN0aW9uOjpSaWdodDsKKyAgICAgICAg
cmVzdWx0ID0gKGRpciA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpID8gTWFycXVlZURpcmVjdGlvbjo6
TGVmdCA6IE1hcnF1ZWVEaXJlY3Rpb246OlJpZ2h0OwogICAgIAogICAgIC8vIE5vdyB3ZSBoYXZl
IHRoZSByZWFsIGRpcmVjdGlvbi4gIE5leHQgd2UgY2hlY2sgdG8gc2VlIGlmIHRoZSBpbmNyZW1l
bnQgaXMgbmVnYXRpdmUuCiAgICAgLy8gSWYgc28sIHRoZW4gd2UgcmV2ZXJzZSB0aGUgZGlyZWN0
aW9uLgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3Bw
CShyZXZpc2lvbiAyMzQ2MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVu
dUxpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsMTUgKzEyOCwxNSBAQCB2b2lkIFJlbmRl
ck1lbnVMaXN0OjphZGp1c3RJbm5lclN0eWxlKCkKICAgICAgICAgLy8gSXRlbXMgaW4gdGhlIHBv
cHVwIHdpbGwgbm90IHJlc3BlY3QgdGhlIENTUyB0ZXh0LWFsaWduIGFuZCBkaXJlY3Rpb24gcHJv
cGVydGllcywKICAgICAgICAgLy8gc28gd2UgbXVzdCBhZGp1c3Qgb3VyIG93biBzdHlsZSB0byBt
YXRjaC4KICAgICAgICAgaW5uZXJTdHlsZS5zZXRUZXh0QWxpZ24oVGV4dEFsaWduTW9kZTo6TGVm
dCk7Ci0gICAgICAgIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gKG1fYnV0dG9uVGV4dCAmJiBt
X2J1dHRvblRleHQtPnRleHQoKS5kZWZhdWx0V3JpdGluZ0RpcmVjdGlvbigpID09IFVfUklHSFRf
VE9fTEVGVCkgPyBSVEwgOiBMVFI7CisgICAgICAgIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0g
KG1fYnV0dG9uVGV4dCAmJiBtX2J1dHRvblRleHQtPnRleHQoKS5kZWZhdWx0V3JpdGluZ0RpcmVj
dGlvbigpID09IFVfUklHSFRfVE9fTEVGVCkgPyBUZXh0RGlyZWN0aW9uOjpSVEwgOiBUZXh0RGly
ZWN0aW9uOjpMVFI7CiAgICAgICAgIGlubmVyU3R5bGUuc2V0RGlyZWN0aW9uKGRpcmVjdGlvbik7
CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIH0gZWxzZSBpZiAoZG9jdW1lbnQoKS5wYWdlKCktPmNo
cm9tZSgpLnNlbGVjdEl0ZW1BbGlnbm1lbnRGb2xsb3dzTWVudVdyaXRpbmdEaXJlY3Rpb24oKSkg
ewotICAgICAgICBpbm5lclN0eWxlLnNldFRleHRBbGlnbihzdHlsZSgpLmRpcmVjdGlvbigpID09
IExUUiA/IFRleHRBbGlnbk1vZGU6OkxlZnQgOiBUZXh0QWxpZ25Nb2RlOjpSaWdodCk7CisgICAg
ICAgIGlubmVyU3R5bGUuc2V0VGV4dEFsaWduKHN0eWxlKCkuZGlyZWN0aW9uKCkgPT0gVGV4dERp
cmVjdGlvbjo6TFRSID8gVGV4dEFsaWduTW9kZTo6TGVmdCA6IFRleHRBbGlnbk1vZGU6OlJpZ2h0
KTsKICAgICAgICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb247CiAgICAgICAgIEVVbmljb2RlQmlk
aSB1bmljb2RlQmlkaTsKICAgICAgICAgaWYgKG11bHRpcGxlKCkgJiYgc2VsZWN0ZWRPcHRpb25D
b3VudCgqdGhpcykgIT0gMSkgewotICAgICAgICAgICAgZGlyZWN0aW9uID0gKG1fYnV0dG9uVGV4
dCAmJiBtX2J1dHRvblRleHQtPnRleHQoKS5kZWZhdWx0V3JpdGluZ0RpcmVjdGlvbigpID09IFVf
UklHSFRfVE9fTEVGVCkgPyBSVEwgOiBMVFI7CisgICAgICAgICAgICBkaXJlY3Rpb24gPSAobV9i
dXR0b25UZXh0ICYmIG1fYnV0dG9uVGV4dC0+dGV4dCgpLmRlZmF1bHRXcml0aW5nRGlyZWN0aW9u
KCkgPT0gVV9SSUdIVF9UT19MRUZUKSA/IFRleHREaXJlY3Rpb246OlJUTCA6IFRleHREaXJlY3Rp
b246OkxUUjsKICAgICAgICAgICAgIHVuaWNvZGVCaWRpID0gVUJOb3JtYWw7CiAgICAgICAgIH0g
ZWxzZSBpZiAobV9vcHRpb25TdHlsZSkgewogICAgICAgICAgICAgZGlyZWN0aW9uID0gbV9vcHRp
b25TdHlsZS0+ZGlyZWN0aW9uKCk7CkBAIC01NzksNyArNTc5LDcgQEAgY29uc3QgaW50IGVuZE9m
TGluZVBhZGRpbmcgPSAyOwogCiBMYXlvdXRVbml0IFJlbmRlck1lbnVMaXN0OjpjbGllbnRQYWRk
aW5nTGVmdCgpIGNvbnN0CiB7Ci0gICAgaWYgKChzdHlsZSgpLmFwcGVhcmFuY2UoKSA9PSBNZW51
bGlzdFBhcnQgfHwgc3R5bGUoKS5hcHBlYXJhbmNlKCkgPT0gTWVudWxpc3RCdXR0b25QYXJ0KSAm
JiBzdHlsZSgpLmRpcmVjdGlvbigpID09IFJUTCkgeworICAgIGlmICgoc3R5bGUoKS5hcHBlYXJh
bmNlKCkgPT0gTWVudWxpc3RQYXJ0IHx8IHN0eWxlKCkuYXBwZWFyYW5jZSgpID09IE1lbnVsaXN0
QnV0dG9uUGFydCkgJiYgc3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpSVEwp
IHsKICAgICAgICAgLy8gRm9yIHRoZXNlIGFwcGVhcmFuY2UgdmFsdWVzLCB0aGUgdGhlbWUgYXBw
bGllcyBwYWRkaW5nIHRvIGxlYXZlIHJvb20gZm9yIHRoZQogICAgICAgICAvLyBkcm9wLWRvd24g
YnV0dG9uLiBCdXQgbGVhdmluZyByb29tIGZvciB0aGUgYnV0dG9uIGluc2lkZSB0aGUgcG9wdXAg
bWVudSBpdHNlbGYKICAgICAgICAgLy8gbG9va3Mgc3RyYW5nZSwgc28gd2UgcmV0dXJuIGEgc21h
bGwgZGVmYXVsdCBwYWRkaW5nIHRvIGF2b2lkIGhhdmluZyBhIGxhcmdlIGVtcHR5CkBAIC01OTMs
NyArNTkzLDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJNZW51TGlzdDo6Y2xpZW50UGFkZGluZwogCiBM
YXlvdXRVbml0IFJlbmRlck1lbnVMaXN0OjpjbGllbnRQYWRkaW5nUmlnaHQoKSBjb25zdAogewot
ICAgIGlmICgoc3R5bGUoKS5hcHBlYXJhbmNlKCkgPT0gTWVudWxpc3RQYXJ0IHx8IHN0eWxlKCku
YXBwZWFyYW5jZSgpID09IE1lbnVsaXN0QnV0dG9uUGFydCkgJiYgc3R5bGUoKS5kaXJlY3Rpb24o
KSA9PSBMVFIpCisgICAgaWYgKChzdHlsZSgpLmFwcGVhcmFuY2UoKSA9PSBNZW51bGlzdFBhcnQg
fHwgc3R5bGUoKS5hcHBlYXJhbmNlKCkgPT0gTWVudWxpc3RCdXR0b25QYXJ0KSAmJiBzdHlsZSgp
LmRpcmVjdGlvbigpID09IFRleHREaXJlY3Rpb246OkxUUikKICAgICAgICAgcmV0dXJuIGVuZE9m
TGluZVBhZGRpbmc7CiAKICAgICByZXR1cm4gcGFkZGluZ1JpZ2h0KCkgKyBtX2lubmVyQmxvY2st
PnBhZGRpbmdSaWdodCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVHdGsuY3BwCShyZXZpc2lvbiAyMzQ2MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjAsMTAgKzM2MCwxMCBA
QCBzdGF0aWMgR3RrU3RhdGVGbGFncyB0aGVtZVBhcnRTdGF0ZUZsYWdzCiB7CiAgICAgdW5zaWdu
ZWQgc3RhdGVGbGFncyA9IDA7CiAgICAgc3dpdGNoIChyZW5kZXJPYmplY3Quc3R5bGUoKS5kaXJl
Y3Rpb24oKSkgewotICAgIGNhc2UgUlRMOgorICAgIGNhc2UgVGV4dERpcmVjdGlvbjo6UlRMOgog
ICAgICAgICBzdGF0ZUZsYWdzIHw9IEdUS19TVEFURV9GTEFHX0RJUl9SVEw7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgTFRSOgorICAgIGNhc2UgVGV4dERpcmVjdGlvbjo6TFRSOgogICAgICAg
ICBzdGF0ZUZsYWdzIHw9IEdUS19TVEFURV9GTEFHX0RJUl9MVFI7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KQEAgLTQyMCw5ICs0MjAsOSBAQCBzdGF0aWMgR3RrU3RhdGVGbGFncyB0aGVtZVBhcnRT
dGF0ZUZsYWdzCiBzdGF0aWMgR3RrVGV4dERpcmVjdGlvbiBndGtUZXh0RGlyZWN0aW9uKFRleHRE
aXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7Ci0gICAgY2Fz
ZSBSVEw6CisgICAgY2FzZSBUZXh0RGlyZWN0aW9uOjpSVEw6CiAgICAgICAgIHJldHVybiBHVEtf
VEVYVF9ESVJfUlRMOwotICAgIGNhc2UgTFRSOgorICAgIGNhc2UgVGV4dERpcmVjdGlvbjo6TFRS
OgogICAgICAgICByZXR1cm4gR1RLX1RFWFRfRElSX0xUUjsKICAgICBkZWZhdWx0OgogICAgICAg
ICByZXR1cm4gR1RLX1RFWFRfRElSX05PTkU7CkBAIC04MDQsOCArODA0LDggQEAgTGVuZ3RoQm94
IFJlbmRlclRoZW1lR3RrOjpwb3B1cEludGVybmFsUAogICAgIHBhZGRpbmcuYm90dG9tID0gY29t
Ym9Db250ZW50c0JveC5ib3R0b20gKyBib3hDb250ZW50c0JveC5ib3R0b20gKyBidXR0b25Db250
ZW50c0JveC5ib3R0b20gKyBidXR0b25Cb3hDb250ZW50c0JveC5ib3R0b207CiAKICAgICBhdXRv
IGFycm93U2l6ZSA9IGNvbWJvV2lkZ2V0LmFycm93KCkucHJlZmVycmVkU2l6ZSgpOwotICAgIHJl
dHVybiBMZW5ndGhCb3gocGFkZGluZy50b3AsIHBhZGRpbmcucmlnaHQgKyAoc3R5bGUuZGlyZWN0
aW9uKCkgPT0gTFRSID8gYXJyb3dTaXplLndpZHRoKCkgOiAwKSwKLSAgICAgICAgcGFkZGluZy5i
b3R0b20sIHBhZGRpbmcubGVmdCArIChzdHlsZS5kaXJlY3Rpb24oKSA9PSBSVEwgPyBhcnJvd1Np
emUud2lkdGgoKSA6IDApKTsKKyAgICByZXR1cm4gTGVuZ3RoQm94KHBhZGRpbmcudG9wLCBwYWRk
aW5nLnJpZ2h0ICsgKHN0eWxlLmRpcmVjdGlvbigpID09IFRleHREaXJlY3Rpb246OkxUUiA/IGFy
cm93U2l6ZS53aWR0aCgpIDogMCksCisgICAgICAgIHBhZGRpbmcuYm90dG9tLCBwYWRkaW5nLmxl
ZnQgKyAoc3R5bGUuZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6UlRMID8gYXJyb3dTaXpl
LndpZHRoKCkgOiAwKSk7CiB9CiAKIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50TWVudUxpc3Qo
Y29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJPYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCkBAIC04NDYsOCArODQ2LDggQEAgTGVuZ3RoQm94
IFJlbmRlclRoZW1lR3RrOjpwb3B1cEludGVybmFsUAogICAgIGd0a19zdHlsZV9jb250ZXh0X2dl
dF9zdHlsZShjb250ZXh0LmdldCgpLCAiaW50ZXJpb3ItZm9jdXMiLCAmaW50ZXJpb3JGb2N1cywg
ImZvY3VzLWxpbmUtd2lkdGgiLCAmZm9jdXNXaWR0aCwgImZvY3VzLXBhZGRpbmciLCAmZm9jdXNQ
YWQsIG51bGxwdHIpOwogICAgIGZvY3VzV2lkdGggPSBpbnRlcmlvckZvY3VzID8gZm9jdXNXaWR0
aCArIGZvY3VzUGFkIDogMDsKIAotICAgIHJldHVybiB7IGJvcmRlcldpZHRoLnRvcCArIGZvY3Vz
V2lkdGgsIGJvcmRlcldpZHRoLnJpZ2h0ICsgZm9jdXNXaWR0aCArIChzdHlsZS5kaXJlY3Rpb24o
KSA9PSBMVFIgPyBtaW5BcnJvd1NpemUgOiAwKSwKLSAgICAgICAgYm9yZGVyV2lkdGguYm90dG9t
ICsgZm9jdXNXaWR0aCwgYm9yZGVyV2lkdGgubGVmdCArIGZvY3VzV2lkdGggKyAoc3R5bGUuZGly
ZWN0aW9uKCkgPT0gUlRMID8gbWluQXJyb3dTaXplIDogMCkgfTsKKyAgICByZXR1cm4geyBib3Jk
ZXJXaWR0aC50b3AgKyBmb2N1c1dpZHRoLCBib3JkZXJXaWR0aC5yaWdodCArIGZvY3VzV2lkdGgg
KyAoc3R5bGUuZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gbWluQXJyb3dTaXpl
IDogMCksCisgICAgICAgIGJvcmRlcldpZHRoLmJvdHRvbSArIGZvY3VzV2lkdGgsIGJvcmRlcldp
ZHRoLmxlZnQgKyBmb2N1c1dpZHRoICsgKHN0eWxlLmRpcmVjdGlvbigpID09IFRleHREaXJlY3Rp
b246OlJUTCA/IG1pbkFycm93U2l6ZSA6IDApIH07CiB9CiAKIGJvb2wgUmVuZGVyVGhlbWVHdGs6
OnBhaW50TWVudUxpc3QoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJPYmplY3QsIGNvbnN0IFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBGbG9hdFJlY3QmIHIpCkBAIC0xMjk2LDcgKzEyOTYs
NyBAQCBib29sIFJlbmRlclRoZW1lR3RrOjpwYWludFNsaWRlclRyYWNrKGNvCiAgICAgfQogCiAg
ICAgaWYgKHBhcnQgPT0gU2xpZGVySG9yaXpvbnRhbFBhcnQpIHsKLSAgICAgICAgaWYgKHJlbmRl
ck9iamVjdC5zdHlsZSgpLmRpcmVjdGlvbigpID09IFJUTCkgeworICAgICAgICBpZiAocmVuZGVy
T2JqZWN0LnN0eWxlKCkuZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6UlRMKSB7CiAgICAg
ICAgICAgICBjb250ZW50c1JlY3QubW92ZSh0aHVtYkxvY2F0aW9uLngoKSwgMCk7CiAgICAgICAg
ICAgICBjb250ZW50c1JlY3Quc2V0V2lkdGgoY29udGVudHNSZWN0LndpZHRoKCkgLSB0aHVtYkxv
Y2F0aW9uLngoKSk7CiAgICAgICAgIH0gZWxzZQpAQCAtMTUyNCw3ICsxNTI0LDcgQEAgYm9vbCBS
ZW5kZXJUaGVtZUd0azo6cGFpbnRQcm9ncmVzc0JhcihjbwogI2lmIEdUS19DSEVDS19WRVJTSU9O
KDMsIDIwLCAwKQogUmVuZGVyVGhlbWU6OklubmVyU3BpbkJ1dHRvbkxheW91dCBSZW5kZXJUaGVt
ZUd0azo6aW5uZXJTcGluQnV0dG9uTGF5b3V0KGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyT2Jq
ZWN0KSBjb25zdAogewotICAgIHJldHVybiByZW5kZXJPYmplY3Quc3R5bGUoKS5kaXJlY3Rpb24o
KSA9PSBSVEwgPyBJbm5lclNwaW5CdXR0b25MYXlvdXQ6Okhvcml6b250YWxVcExlZnQgOiBJbm5l
clNwaW5CdXR0b25MYXlvdXQ6Okhvcml6b250YWxVcFJpZ2h0OworICAgIHJldHVybiByZW5kZXJP
YmplY3Quc3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpSVEwgPyBJbm5lclNw
aW5CdXR0b25MYXlvdXQ6Okhvcml6b250YWxVcExlZnQgOiBJbm5lclNwaW5CdXR0b25MYXlvdXQ6
Okhvcml6b250YWxVcFJpZ2h0OwogfQogCiB2b2lkIFJlbmRlclRoZW1lR3RrOjphZGp1c3RJbm5l
clNwaW5CdXR0b25TdHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25z
dCBFbGVtZW50KikgY29uc3QKQEAgLTE1NDYsMTIgKzE1NDYsMTIgQEAgYm9vbCBSZW5kZXJUaGVt
ZUd0azo6cGFpbnRJbm5lclNwaW5CdXR0bwogCiAgICAgSW50UmVjdCBpY29uUmVjdCA9IHJlY3Q7
CiAgICAgaWNvblJlY3Quc2V0V2lkdGgoaWNvblJlY3Qud2lkdGgoKSAvIDIpOwotICAgIGlmIChy
ZW5kZXJPYmplY3Quc3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBSVEwpCisgICAgaWYgKHJlbmRlck9i
amVjdC5zdHlsZSgpLmRpcmVjdGlvbigpID09IFRleHREaXJlY3Rpb246OlJUTCkKICAgICAgICAg
dXAucmVuZGVyKHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCktPmNyKCksIGlj
b25SZWN0KTsKICAgICBlbHNlCiAgICAgICAgIGRvd24ucmVuZGVyKHBhaW50SW5mby5jb250ZXh0
KCkucGxhdGZvcm1Db250ZXh0KCktPmNyKCksIGljb25SZWN0KTsKICAgICBpY29uUmVjdC5tb3Zl
KGljb25SZWN0LndpZHRoKCksIDApOwotICAgIGlmIChyZW5kZXJPYmplY3Quc3R5bGUoKS5kaXJl
Y3Rpb24oKSA9PSBSVEwpCisgICAgaWYgKHJlbmRlck9iamVjdC5zdHlsZSgpLmRpcmVjdGlvbigp
ID09IFRleHREaXJlY3Rpb246OlJUTCkKICAgICAgICAgZG93bi5yZW5kZXIocGFpbnRJbmZvLmNv
bnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgaWNvblJlY3QpOwogICAgIGVsc2UKICAg
ICAgICAgdXAucmVuZGVyKHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCktPmNy
KCksIGljb25SZWN0KTsKQEAgLTE5ODUsNyArMTk4NSw3IEBAIEludFJlY3QgUmVuZGVyVGhlbWVH
dGs6OmNhbGN1bGF0ZVByb2dyZXMKICAgICBjb25zdCBhdXRvJiByZW5kZXJQcm9ncmVzcyA9IGRv
d25jYXN0PFJlbmRlclByb2dyZXNzPihyZW5kZXJPYmplY3QpOwogICAgIGlmIChyZW5kZXJQcm9n
cmVzcy5pc0RldGVybWluYXRlKCkpIHsKICAgICAgICAgaW50IHByb2dyZXNzV2lkdGggPSBwcm9n
cmVzc1JlY3Qud2lkdGgoKSAqIHJlbmRlclByb2dyZXNzLnBvc2l0aW9uKCk7Ci0gICAgICAgIGlm
IChyZW5kZXJPYmplY3Quc3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBSVEwpCisgICAgICAgIGlmIChy
ZW5kZXJPYmplY3Quc3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpSVEwpCiAg
ICAgICAgICAgICBwcm9ncmVzc1JlY3Quc2V0WChwcm9ncmVzc1JlY3QueCgpICsgcHJvZ3Jlc3NS
ZWN0LndpZHRoKCkgLSBwcm9ncmVzc1dpZHRoKTsKICAgICAgICAgcHJvZ3Jlc3NSZWN0LnNldFdp
ZHRoKHByb2dyZXNzV2lkdGgpOwogICAgICAgICByZXR1cm4gcHJvZ3Jlc3NSZWN0OwpJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQkocmV2aXNpb24gMjM0
NjE4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NDcsNyArNTQ3LDcgQEAgY29uc3QgZmxvYXQgTWVudUxpc3RCdXR0b25Q
YWRkaW5nQWZ0ZXIgPQogTGVuZ3RoQm94IFJlbmRlclRoZW1lSU9TOjpwb3B1cEludGVybmFsUGFk
ZGluZ0JveChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpIGNvbnN0CiB7CiAgICAgaWYgKHN0eWxl
LmFwcGVhcmFuY2UoKSA9PSBNZW51bGlzdEJ1dHRvblBhcnQpIHsKLSAgICAgICAgaWYgKHN0eWxl
LmRpcmVjdGlvbigpID09IFJUTCkKKyAgICAgICAgaWYgKHN0eWxlLmRpcmVjdGlvbigpID09IFRl
eHREaXJlY3Rpb246OlJUTCkKICAgICAgICAgICAgIHJldHVybiB7IDAsIDAsIDAsIHN0YXRpY19j
YXN0PGludD4oTWVudUxpc3RCdXR0b25QYWRkaW5nQWZ0ZXIgKyBzdHlsZS5ib3JkZXJUb3BXaWR0
aCgpKSB9OwogICAgICAgICByZXR1cm4geyAwLCBzdGF0aWNfY2FzdDxpbnQ+KE1lbnVMaXN0QnV0
dG9uUGFkZGluZ0FmdGVyICsgc3R5bGUuYm9yZGVyVG9wV2lkdGgoKSksIDAsIDAgfTsKICAgICB9
CkBAIC02NDgsNyArNjQ4LDcgQEAgdm9pZCBSZW5kZXJUaGVtZUlPUzo6YWRqdXN0TWVudUxpc3RC
dXR0bwogYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRNZW51TGlzdEJ1dHRvbkRlY29yYXRpb25z
KGNvbnN0IFJlbmRlckJveCYgYm94LCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
RmxvYXRSZWN0JiByZWN0KQogewogICAgIGF1dG8mIHN0eWxlID0gYm94LnN0eWxlKCk7Ci0gICAg
Ym9vbCBpc1JUTCA9IHN0eWxlLmRpcmVjdGlvbigpID09IFJUTDsKKyAgICBib29sIGlzUlRMID0g
c3R5bGUuZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6UlRMOwogICAgIGZsb2F0IGJvcmRl
clRvcFdpZHRoID0gc3R5bGUuYm9yZGVyVG9wV2lkdGgoKTsKICAgICBGbG9hdFJlY3QgY2xpcChy
ZWN0LngoKSArIHN0eWxlLmJvcmRlckxlZnRXaWR0aCgpLCByZWN0LnkoKSArIHN0eWxlLmJvcmRl
clRvcFdpZHRoKCksIHJlY3Qud2lkdGgoKSAtIHN0eWxlLmJvcmRlckxlZnRXaWR0aCgpIC0gc3R5
bGUuYm9yZGVyUmlnaHRXaWR0aCgpLCByZWN0LmhlaWdodCgpIC0gc3R5bGUuYm9yZGVyVG9wV2lk
dGgoKSAtIHN0eWxlLmJvcmRlckJvdHRvbVdpZHRoKCkpOwogICAgIENHQ29udGV4dFJlZiBjZ0Nv
bnRleHQgPSBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQkocmV2aXNpb24gMjM0NjE5
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDg0LDcgKzE0ODQsNyBAQCB2b2lkIFJlbmRlclRoZW1lTWFjOjpwYWludE1l
bnVMaXN0QnV0dG9uCiAKIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50TWVudUxpc3RCdXR0b25E
ZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJCb3gmIHJlbmRlcmVyLCBjb25zdCBQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIGJvb2wgaXNSVEwgPSByZW5k
ZXJlci5zdHlsZSgpLmRpcmVjdGlvbigpID09IFJUTDsKKyAgICBib29sIGlzUlRMID0gcmVuZGVy
ZXIuc3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpSVEw7CiAgICAgSW50UmVj
dCBib3VuZHMgPSBJbnRSZWN0KHJlY3QueCgpICsgcmVuZGVyZXIuc3R5bGUoKS5ib3JkZXJMZWZ0
V2lkdGgoKSwKICAgICAgICAgcmVjdC55KCkgKyByZW5kZXJlci5zdHlsZSgpLmJvcmRlclRvcFdp
ZHRoKCksCiAgICAgICAgIHJlY3Qud2lkdGgoKSAtIHJlbmRlcmVyLnN0eWxlKCkuYm9yZGVyTGVm
dFdpZHRoKCkgLSByZW5kZXJlci5zdHlsZSgpLmJvcmRlclJpZ2h0V2lkdGgoKSwKQEAgLTE1OTMs
NyArMTU5Myw3IEBAIHZvaWQgUmVuZGVyVGhlbWVNYWM6OmFkanVzdE1lbnVMaXN0U3R5bGUKIExl
bmd0aEJveCBSZW5kZXJUaGVtZU1hYzo6cG9wdXBJbnRlcm5hbFBhZGRpbmdCb3goY29uc3QgUmVu
ZGVyU3R5bGUmIHN0eWxlKSBjb25zdAogewogICAgIGlmIChzdHlsZS5hcHBlYXJhbmNlKCkgPT0g
TWVudWxpc3RQYXJ0KSB7Ci0gICAgICAgIGNvbnN0IGludCogcGFkZGluZyA9IHBvcHVwQnV0dG9u
UGFkZGluZyhjb250cm9sU2l6ZUZvckZvbnQoc3R5bGUpLCBzdHlsZS5kaXJlY3Rpb24oKSA9PSBS
VEwpOworICAgICAgICBjb25zdCBpbnQqIHBhZGRpbmcgPSBwb3B1cEJ1dHRvblBhZGRpbmcoY29u
dHJvbFNpemVGb3JGb250KHN0eWxlKSwgc3R5bGUuZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlv
bjo6UlRMKTsKICAgICAgICAgcmV0dXJuIHsgc3RhdGljX2Nhc3Q8aW50PihwYWRkaW5nW3RvcFBh
ZGRpbmddICogc3R5bGUuZWZmZWN0aXZlWm9vbSgpKSwKICAgICAgICAgICAgIHN0YXRpY19jYXN0
PGludD4ocGFkZGluZ1tyaWdodFBhZGRpbmddICogc3R5bGUuZWZmZWN0aXZlWm9vbSgpKSwKICAg
ICAgICAgICAgIHN0YXRpY19jYXN0PGludD4ocGFkZGluZ1tib3R0b21QYWRkaW5nXSAqIHN0eWxl
LmVmZmVjdGl2ZVpvb20oKSksCkBAIC0xNjA0LDcgKzE2MDQsNyBAQCBMZW5ndGhCb3ggUmVuZGVy
VGhlbWVNYWM6OnBvcHVwSW50ZXJuYWxQCiAgICAgICAgIGZsb2F0IGFycm93V2lkdGggPSBiYXNl
QXJyb3dXaWR0aCAqIChzdHlsZS5jb21wdXRlZEZvbnRQaXhlbFNpemUoKSAvIGJhc2VGb250U2l6
ZSk7CiAgICAgICAgIGZsb2F0IHJpZ2h0UGFkZGluZyA9IGNlaWxmKGFycm93V2lkdGggKyAoYXJy
b3dQYWRkaW5nQmVmb3JlICsgYXJyb3dQYWRkaW5nQWZ0ZXIgKyBwYWRkaW5nQmVmb3JlU2VwYXJh
dG9yKSAqIHN0eWxlLmVmZmVjdGl2ZVpvb20oKSk7CiAgICAgICAgIGZsb2F0IGxlZnRQYWRkaW5n
ID0gc3R5bGVkUG9wdXBQYWRkaW5nTGVmdCAqIHN0eWxlLmVmZmVjdGl2ZVpvb20oKTsKLSAgICAg
ICAgaWYgKHN0eWxlLmRpcmVjdGlvbigpID09IFJUTCkKKyAgICAgICAgaWYgKHN0eWxlLmRpcmVj
dGlvbigpID09IFRleHREaXJlY3Rpb246OlJUTCkKICAgICAgICAgICAgIHN0ZDo6c3dhcChyaWdo
dFBhZGRpbmcsIGxlZnRQYWRkaW5nKTsKICAgICAgICAgcmV0dXJuIHsgc3RhdGljX2Nhc3Q8aW50
PihzdHlsZWRQb3B1cFBhZGRpbmdUb3AgKiBzdHlsZS5lZmZlY3RpdmVab29tKCkpLAogICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8aW50PihyaWdodFBhZGRpbmcpLApAQCAtMTY1MSw3ICsxNjUxLDcg
QEAgdm9pZCBSZW5kZXJUaGVtZU1hYzo6c2V0UG9wdXBCdXR0b25DZWxsUwogICAgIC8vIFNldCB0
aGUgY29udHJvbCBzaXplIGJhc2VkIG9mZiB0aGUgcmVjdGFuZ2xlIHdlJ3JlIHBhaW50aW5nIGlu
dG8uCiAgICAgc2V0Q29udHJvbFNpemUocG9wdXBCdXR0b24sIHBvcHVwQnV0dG9uU2l6ZXMoKSwg
YnV0dG9uU2l6ZSwgby5zdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSk7CiAKLSAgICBwb3B1cEJ1dHRv
bi51c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uID0gby5zdHlsZSgpLmRpcmVjdGlvbigpID09
IExUUiA/IE5TVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbkxlZnRUb1JpZ2h0IDogTlNVc2Vy
SW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uUmlnaHRUb0xlZnQ7CisgICAgcG9wdXBCdXR0b24udXNl
ckludGVyZmFjZUxheW91dERpcmVjdGlvbiA9IG8uc3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBUZXh0
RGlyZWN0aW9uOjpMVFIgPyBOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25MZWZ0VG9SaWdo
dCA6IE5TVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvblJpZ2h0VG9MZWZ0OwogCiAgICAgLy8g
VXBkYXRlIHRoZSB2YXJpb3VzIHN0YXRlcyB3ZSByZXNwb25kIHRvLgogICAgIHVwZGF0ZUNoZWNr
ZWRTdGF0ZShwb3B1cEJ1dHRvbiwgbyk7CkBAIC0xOTMyLDcgKzE5MzIsNyBAQCBib29sIFJlbmRl
clRoZW1lTWFjOjpwYWludFNlYXJjaEZpZWxkQ2FuCiAgICAgRmxvYXRSZWN0IGxvY2FsQm91bmRz
ID0gYWRqdXN0ZWRDYW5jZWxCdXR0b25SZWN0KFtzZWFyY2ggY2FuY2VsQnV0dG9uUmVjdEZvckJv
dW5kczpOU1JlY3Qoc25hcHBlZEludFJlY3QoaW5wdXRCb3guY29udGVudEJveFJlY3QoKSkpXSk7
CiAgICAgLy8gQWRqdXN0IHBvc2l0aW9uIGJhc2VkIG9uIHRoZSBjb250ZW50IGRpcmVjdGlvbi4K
ICAgICBmbG9hdCBhZGp1c3RlZFhQb3NpdGlvbjsKLSAgICBpZiAoYm94LnN0eWxlKCkuZGlyZWN0
aW9uKCkgPT0gUlRMKQorICAgIGlmIChib3guc3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBUZXh0RGly
ZWN0aW9uOjpSVEwpCiAgICAgICAgIGFkanVzdGVkWFBvc2l0aW9uID0gaW5wdXRCb3guY29udGVu
dEJveFJlY3QoKS54KCk7CiAgICAgZWxzZQogICAgICAgICBhZGp1c3RlZFhQb3NpdGlvbiA9IGlu
cHV0Qm94LmNvbnRlbnRCb3hSZWN0KCkubWF4WCgpIC0gbG9jYWxCb3VuZHMuc2l6ZSgpLndpZHRo
KCk7CkBAIC0yMDY4LDcgKzIwNjgsNyBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNlYXJj
aEZpZWxkUmVzCiAgICAgRmxvYXRSZWN0IGxvY2FsQm91bmRzID0gYWRqdXN0ZWRSZXN1bHRCdXR0
b25SZWN0KFtzZWFyY2ggc2VhcmNoQnV0dG9uUmVjdEZvckJvdW5kczpOU1JlY3Qoc25hcHBlZElu
dFJlY3QoaW5wdXRCb3guY29udGVudEJveFJlY3QoKSkpXSk7CiAgICAgLy8gQWRqdXN0IHBvc2l0
aW9uIGJhc2VkIG9uIHRoZSBjb250ZW50IGRpcmVjdGlvbi4KICAgICBmbG9hdCBhZGp1c3RlZFhQ
b3NpdGlvbjsKLSAgICBpZiAoYm94LnN0eWxlKCkuZGlyZWN0aW9uKCkgPT0gUlRMKQorICAgIGlm
IChib3guc3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpSVEwpCiAgICAgICAg
IGFkanVzdGVkWFBvc2l0aW9uID0gaW5wdXRCb3guY29udGVudEJveFJlY3QoKS5tYXhYKCkgLSBs
b2NhbEJvdW5kcy5zaXplKCkud2lkdGgoKTsKICAgICBlbHNlCiAgICAgICAgIGFkanVzdGVkWFBv
c2l0aW9uID0gaW5wdXRCb3guY29udGVudEJveFJlY3QoKS54KCk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAJKHJldmlzaW9uIDIzNDYxOCkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTc1OCw5ICs3NTgsOSBAQCB2b2lkIFJlbmRlclRoZW1lV2luOjphZGp1c3RNZW51TGlz
dEJ1dHRvCiB7CiAgICAgLy8gVGhlc2UgYXJlIHRoZSBwYWRkaW5ncyBuZWVkZWQgdG8gcGxhY2Ug
dGhlIHRleHQgY29ycmVjdGx5IGluIHRoZSA8c2VsZWN0PiBib3gKICAgICBjb25zdCBpbnQgZHJv
cERvd25Cb3hQYWRkaW5nVG9wICAgID0gMjsKLSAgICBjb25zdCBpbnQgZHJvcERvd25Cb3hQYWRk
aW5nUmlnaHQgID0gc3R5bGUuZGlyZWN0aW9uKCkgPT0gTFRSID8gNCArIGRyb3BEb3duQnV0dG9u
V2lkdGggOiA0OworICAgIGNvbnN0IGludCBkcm9wRG93bkJveFBhZGRpbmdSaWdodCAgPSBzdHls
ZS5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyA0ICsgZHJvcERvd25CdXR0b25X
aWR0aCA6IDQ7CiAgICAgY29uc3QgaW50IGRyb3BEb3duQm94UGFkZGluZ0JvdHRvbSA9IDI7Ci0g
ICAgY29uc3QgaW50IGRyb3BEb3duQm94UGFkZGluZ0xlZnQgICA9IHN0eWxlLmRpcmVjdGlvbigp
ID09IExUUiA/IDQgOiA0ICsgZHJvcERvd25CdXR0b25XaWR0aDsKKyAgICBjb25zdCBpbnQgZHJv
cERvd25Cb3hQYWRkaW5nTGVmdCAgID0gc3R5bGUuZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlv
bjo6TFRSID8gNCA6IDQgKyBkcm9wRG93bkJ1dHRvbldpZHRoOwogICAgIC8vIFRoZSA8c2VsZWN0
PiBib3ggbXVzdCBiZSBhdCBsZWFzdCAxMnB4IGhpZ2ggZm9yIHRoZSBidXR0b24gdG8gcmVuZGVy
IG5pY2VseSBvbiBXaW5kb3dzCiAgICAgY29uc3QgaW50IGRyb3BEb3duQm94TWluSGVpZ2h0ID0g
MTI7CiAgICAgCkBAIC03OTQsNyArNzk0LDcgQEAgYm9vbCBSZW5kZXJUaGVtZVdpbjo6cGFpbnRN
ZW51TGlzdEJ1dHRvbgogICAgIC8vIGxlYXZpbmcgc3BhY2UgZm9yIHRoZSB0ZXh0IGZpZWxkJ3Mg
MXB4IGJvcmRlcgogICAgIEludFJlY3QgYnV0dG9uUmVjdChyZWN0KTsKICAgICBidXR0b25SZWN0
LmluZmxhdGUoLWJvcmRlclRoaWNrbmVzcyk7Ci0gICAgaWYgKHJlbmRlcmVyLnN0eWxlKCkuZGly
ZWN0aW9uKCkgPT0gTFRSKQorICAgIGlmIChyZW5kZXJlci5zdHlsZSgpLmRpcmVjdGlvbigpID09
IFRleHREaXJlY3Rpb246OkxUUikKICAgICAgICAgYnV0dG9uUmVjdC5zZXRYKGJ1dHRvblJlY3Qu
bWF4WCgpIC0gZHJvcERvd25CdXR0b25XaWR0aCk7CiAgICAgYnV0dG9uUmVjdC5zZXRXaWR0aChk
cm9wRG93bkJ1dHRvbldpZHRoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAJKHJldmlzaW9uIDIzNDYxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04OSw3ICs4OSw3IEBAIExheW91dFVuaXQgUmVuZGVyTWF0aE1M
QmxvY2s6Om1hdGhBeGlzSGUKIAogTGF5b3V0VW5pdCBSZW5kZXJNYXRoTUxCbG9jazo6bWlycm9y
SWZOZWVkZWQoTGF5b3V0VW5pdCBob3Jpem9udGFsT2Zmc2V0LCBMYXlvdXRVbml0IGJveFdpZHRo
KSBjb25zdAogewotICAgIGlmIChzdHlsZSgpLmRpcmVjdGlvbigpID09IFJUTCkKKyAgICBpZiAo
c3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpSVEwpCiAgICAgICAgIHJldHVy
biBsb2dpY2FsV2lkdGgoKSAtIGJveFdpZHRoIC0gaG9yaXpvbnRhbE9mZnNldDsKIAogICAgIHJl
dHVybiBob3Jpem9udGFsT2Zmc2V0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAJKHJldmlzaW9uIDIz
NDYxOCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3Bl
cmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzgsNyArMjM4LDcgQEAgdm9pZCBSZW5kZXJN
YXRoTUxPcGVyYXRvcjo6bGF5b3V0QmxvY2soYgogICAgICAgICBzZXRMb2dpY2FsV2lkdGgod2lk
dGgpOwogCiAgICAgICAgIC8vIFdlIHRoZW4gbW92ZSB0aGUgY2hpbGRyZW4gdG8gdGFrZSBzcGFj
aW5nIGludG8gYWNjb3VudC4KLSAgICAgICAgTGF5b3V0UG9pbnQgaG9yaXpvbnRhbFNoaWZ0KHN0
eWxlKCkuZGlyZWN0aW9uKCkgPT0gTFRSID8gbGVhZGluZ1NwYWNlVmFsdWUgOiAtbGVhZGluZ1Nw
YWNlVmFsdWUsIDApOworICAgICAgICBMYXlvdXRQb2ludCBob3Jpem9udGFsU2hpZnQoc3R5bGUo
KS5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBsZWFkaW5nU3BhY2VWYWx1ZSA6
IC1sZWFkaW5nU3BhY2VWYWx1ZSwgMCk7CiAgICAgICAgIGZvciAoYXV0byogY2hpbGQgPSBmaXJz
dENoaWxkQm94KCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZ0JveCgpKQogICAg
ICAgICAgICAgY2hpbGQtPnNldExvY2F0aW9uKGNoaWxkLT5sb2NhdGlvbigpICsgaG9yaXpvbnRh
bFNoaWZ0KTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5jcHAJKHJldmlzaW9uIDIzNDYxOCkKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Miw3ICsx
NTIsNyBAQCBSZW5kZXJTdHlsZTo6UmVuZGVyU3R5bGUoQ3JlYXRlRGVmYXVsdFN0CiAjaWYgRU5B
QkxFKENVUlNPUl9WSVNJQklMSVRZKQogICAgIG1faW5oZXJpdGVkRmxhZ3MuY3Vyc29yVmlzaWJp
bGl0eSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbml0aWFsQ3Vyc29yVmlzaWJpbGl0eSgpKTsK
ICNlbmRpZgotICAgIG1faW5oZXJpdGVkRmxhZ3MuZGlyZWN0aW9uID0gaW5pdGlhbERpcmVjdGlv
bigpOworICAgIG1faW5oZXJpdGVkRmxhZ3MuZGlyZWN0aW9uID0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGluaXRpYWxEaXJlY3Rpb24oKSk7CiAgICAgbV9pbmhlcml0ZWRGbGFncy53aGl0ZVNwYWNl
ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluaXRpYWxXaGl0ZVNwYWNlKCkpOwogICAgIG1faW5o
ZXJpdGVkRmxhZ3MuYm9yZGVyQ29sbGFwc2UgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlh
bEJvcmRlckNvbGxhcHNlKCkpOwogICAgIG1faW5oZXJpdGVkRmxhZ3MucnRsT3JkZXJpbmcgPSBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlhbFJUTE9yZGVyaW5nKCkpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgJKHJldmlzaW9uIDIzNDYx
OCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zODgsNyArMzg4LDcgQEAgcHVibGljOgogICAgIFRleHRab29tIHRleHRa
b29tKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dFpvb20+KG1fcmFyZUluaGVyaXRl
ZERhdGEtPnRleHRab29tKTsgfQogCiAgICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24oKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0RGlyZWN0aW9uPihtX2luaGVyaXRlZEZsYWdzLmRp
cmVjdGlvbik7IH0KLSAgICBib29sIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSBjb25zdCB7IHJl
dHVybiBkaXJlY3Rpb24oKSA9PSBMVFI7IH0KKyAgICBib29sIGlzTGVmdFRvUmlnaHREaXJlY3Rp
b24oKSBjb25zdCB7IHJldHVybiBkaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFI7IH0K
ICAgICBib29sIGhhc0V4cGxpY2l0bHlTZXREaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX25v
bkluaGVyaXRlZEZsYWdzLmhhc0V4cGxpY2l0bHlTZXREaXJlY3Rpb247IH0KIAogICAgIGNvbnN0
IExlbmd0aCYgc3BlY2lmaWVkTGluZUhlaWdodCgpIGNvbnN0OwpAQCAtMTQ0Miw3ICsxNDQyLDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBDYXB0aW9uU2lkZSBpbml0aWFsQ2FwdGlvblNpZGUoKSB7
IHJldHVybiBDYXB0aW9uU2lkZTo6VG9wOyB9CiAgICAgc3RhdGljIENvbHVtbkF4aXMgaW5pdGlh
bENvbHVtbkF4aXMoKSB7IHJldHVybiBDb2x1bW5BeGlzOjpBdXRvOyB9CiAgICAgc3RhdGljIENv
bHVtblByb2dyZXNzaW9uIGluaXRpYWxDb2x1bW5Qcm9ncmVzc2lvbigpIHsgcmV0dXJuIENvbHVt
blByb2dyZXNzaW9uOjpOb3JtYWw7IH0KLSAgICBzdGF0aWMgVGV4dERpcmVjdGlvbiBpbml0aWFs
RGlyZWN0aW9uKCkgeyByZXR1cm4gTFRSOyB9CisgICAgc3RhdGljIFRleHREaXJlY3Rpb24gaW5p
dGlhbERpcmVjdGlvbigpIHsgcmV0dXJuIFRleHREaXJlY3Rpb246OkxUUjsgfQogICAgIHN0YXRp
YyBXcml0aW5nTW9kZSBpbml0aWFsV3JpdGluZ01vZGUoKSB7IHJldHVybiBUb3BUb0JvdHRvbVdy
aXRpbmdNb2RlOyB9CiAgICAgc3RhdGljIFRleHRDb21iaW5lIGluaXRpYWxUZXh0Q29tYmluZSgp
IHsgcmV0dXJuIFRleHRDb21iaW5lOjpOb25lOyB9CiAgICAgc3RhdGljIFRleHRPcmllbnRhdGlv
biBpbml0aWFsVGV4dE9yaWVudGF0aW9uKCkgeyByZXR1cm4gVGV4dE9yaWVudGF0aW9uOjpNaXhl
ZDsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3Bw
CShyZXZpc2lvbiAyMzQ2MTgpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0
dGluZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MjAsOSArODIwLDkgQEAgRXhjZXB0aW9uT3I8
U3RyaW5nPiBJbnRlcm5hbFNldHRpbmdzOjpzeQogICAgIGlmICghbV9wYWdlKQogICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yIH07CiAgICAgc3dpdGNoIChzZXR0
aW5ncygpLnN5c3RlbUxheW91dERpcmVjdGlvbigpKSB7Ci0gICAgY2FzZSBMVFI6CisgICAgY2Fz
ZSBUZXh0RGlyZWN0aW9uOjpMVFI6CiAgICAgICAgIHJldHVybiBTdHJpbmcgeyAiTFRSIl9zIH07
Ci0gICAgY2FzZSBSVEw6CisgICAgY2FzZSBUZXh0RGlyZWN0aW9uOjpSVEw6CiAgICAgICAgIHJl
dHVybiBTdHJpbmcgeyAiUlRMIl9zIH07CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpAQCAtODM0LDExICs4MzQsMTEgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSW50ZXJuYWxTZXR0aW5n
czo6c2V0UwogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52
YWxpZEFjY2Vzc0Vycm9yIH07CiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KGRpcmVjdGlvbiwgImx0ciIpKSB7Ci0gICAgICAgIHNldHRpbmdzKCkuc2V0U3lzdGVtTGF5b3V0
RGlyZWN0aW9uKExUUik7CisgICAgICAgIHNldHRpbmdzKCkuc2V0U3lzdGVtTGF5b3V0RGlyZWN0
aW9uKFRleHREaXJlY3Rpb246OkxUUik7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogICAg
IGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShkaXJlY3Rpb24sICJydGwiKSkgewot
ICAgICAgICBzZXR0aW5ncygpLnNldFN5c3RlbUxheW91dERpcmVjdGlvbihSVEwpOworICAgICAg
ICBzZXR0aW5ncygpLnNldFN5c3RlbUxheW91dERpcmVjdGlvbihUZXh0RGlyZWN0aW9uOjpSVEwp
OwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52
YWxpZEFjY2Vzc0Vycm9yIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgJKHJl
dmlzaW9uIDIzNDYxOCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTYxNCw3ICs2MTQsNyBAQCBwdWJsaWM6CiAKICAgICBSZWZQdHI8R0NP
YnNlcnZhdGlvbj4gb2JzZXJ2ZUdDKEpTQzo6SlNWYWx1ZSk7CiAKLSAgICBlbnVtIGNsYXNzIFVz
ZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24geyBMVFIsIFJUTCB9OworICAgIGVudW0gY2xhc3Mg
VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiA6IHVpbnQ4X3QgeyBMVFIsIFJUTCB9OwogICAg
IHZvaWQgc2V0VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbihVc2VySW50ZXJmYWNlTGF5b3V0
RGlyZWN0aW9uKTsKIAogICAgIGJvb2wgdXNlclByZWZlcnNSZWR1Y2VkTW90aW9uKCkgY29uc3Q7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjM0NjE5KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMiBAQAorMjAxOC0wOC0wNiAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFVzZSBhIDEtYnl0
ZSBlbnVtIGNsYXNzIGZvciBUZXh0RGlyZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODgzNTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9XZWJQb3B1cEl0ZW0uY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQb3B1cEl0ZW06OldlYlBvcHVwSXRlbSk6CisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgd2ViU2VsZWN0aW9uUmVjdHNGb3JTZWxlY3Rpb25SZWN0czpdKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvbWFjL1dlYlBvcHVwTWVudVByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQb3B1cE1lbnVQcm94eU1hYzo6cG9wdWxhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1
cE1lbnVQcm94eU1hYzo6c2hvd1BvcHVwTWVudSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1l
bnU6OnNob3cpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0QXNzaXN0ZWROb2RlSW5mb3JtYXRpb24p
OgorCiAyMDE4LTA4LTA2ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgVXNlIGVudW0gY2xhc3NlcyBhbmQgT3B0aW9uU2V0cyBmb3IgUGFpbnRQ
aGFzZSBhbmQgUGFpbnRCZWhhdmlvcgpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUG9w
dXBJdGVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQb3B1cEl0
ZW0uY3BwCShyZXZpc2lvbiAyMzQ2MTgpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQb3B1
cEl0ZW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBXZWJQb3B1cEl0ZW06OldlYlBvcHVwSXRlbSgpCiAgICAgOiBtX3R5cGUoSXRlbSkK
LSAgICAsIG1fdGV4dERpcmVjdGlvbihMVFIpCisgICAgLCBtX3RleHREaXJlY3Rpb24oVGV4dERp
cmVjdGlvbjo6TFRSKQogICAgICwgbV9oYXNUZXh0RGlyZWN0aW9uT3ZlcnJpZGUoZmFsc2UpCiAg
ICAgLCBtX2lzRW5hYmxlZCh0cnVlKQogICAgICwgbV9pc1NlbGVjdGVkKGZhbHNlKQpAQCAtNDQs
NyArNDQsNyBAQCBXZWJQb3B1cEl0ZW06OldlYlBvcHVwSXRlbSgpCiAKIFdlYlBvcHVwSXRlbTo6
V2ViUG9wdXBJdGVtKFR5cGUgdHlwZSkKICAgICA6IG1fdHlwZSh0eXBlKQotICAgICwgbV90ZXh0
RGlyZWN0aW9uKExUUikKKyAgICAsIG1fdGV4dERpcmVjdGlvbihUZXh0RGlyZWN0aW9uOjpMVFIp
CiAgICAgLCBtX2hhc1RleHREaXJlY3Rpb25PdmVycmlkZShmYWxzZSkKICAgICAsIG1faXNFbmFi
bGVkKHRydWUpCiAgICAgLCBtX2lzTGFiZWwoZmFsc2UpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHJldmlzaW9uIDIzNDYxOCkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTU3NCw3ICs1NzQsNyBAQCAgICAgLy8gV2UgYXJlIGluIHRoZSBWaWV3J3MgaW5p
dGlhbGl6YXRpCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQo
V2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6aW5saW5lTWVkaWFQbGF5YmFja1JlcXVpcmVzUGxh
eXNJbmxpbmVBdHRyaWJ1dGVLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1
ZSghIVtfY29uZmlndXJhdGlvbiBfaW5saW5lTWVkaWFQbGF5YmFja1JlcXVpcmVzUGxheXNJbmxp
bmVBdHRyaWJ1dGVdKSk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMo
KS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6YWxsb3dzUGljdHVyZUluUGljdHVyZU1l
ZGlhUGxheWJhY2tLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZSghIVtf
Y29uZmlndXJhdGlvbiBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlTWVkaWFQbGF5YmFja10gJiYgc2hv
dWxkQWxsb3dQaWN0dXJlSW5QaWN0dXJlTWVkaWFQbGF5YmFjaygpKSk7CiAgICAgcGFnZUNvbmZp
Z3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tl
eTo6dXNlckludGVyZmFjZURpcmVjdGlvblBvbGljeUtleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVu
Y2VzU3RvcmU6OlZhbHVlKHN0YXRpY19jYXN0PHVpbnQzMl90PihXZWJDb3JlOjpVc2VySW50ZXJm
YWNlRGlyZWN0aW9uUG9saWN5OjpDb250ZW50KSkpOwotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5w
cmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OnN5c3RlbUxh
eW91dERpcmVjdGlvbktleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKHN0
YXRpY19jYXN0PHVpbnQzMl90PihXZWJDb3JlOjpMVFIpKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRp
b24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6c3lz
dGVtTGF5b3V0RGlyZWN0aW9uS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFs
dWUoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KFdlYkNvcmU6OlRleHREaXJlY3Rpb246OkxUUikpKTsK
ICAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6Oldl
YlByZWZlcmVuY2VzS2V5OjphbGxvd1NldHRpbmdBbnlYSFJIZWFkZXJGcm9tRmlsZVVSTHNLZXko
KSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZShzaG91bGRBbGxvd1NldHRpbmdB
bnlYSFJIZWFkZXJGcm9tRmlsZVVSTHMoKSkpOwogI2lmIFVTRShTWVNURU1fUFJFVklFVykKICAg
ICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlBy
ZWZlcmVuY2VzS2V5OjpzeXN0ZW1QcmV2aWV3RW5hYmxlZEtleSgpLCBXZWJLaXQ6OldlYlByZWZl
cmVuY2VzU3RvcmU6OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIF9zeXN0ZW1QcmV2aWV3RW5hYmxl
ZF0pKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQkocmV2aXNpb24gMjM0NjE4KQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQkod29ya2luZyBj
b3B5KQpAQCAtMTc2Niw3ICsxNzY2LDcgQEAgLSAoTlNBcnJheSAqKXdlYlNlbGVjdGlvblJlY3Rz
Rm9yU2VsZWN0aQogICAgICAgICBjb25zdCBXZWJDb3JlOjpTZWxlY3Rpb25SZWN0JiBjb3JlUmVj
dCA9IHNlbGVjdGlvblJlY3RzW2ldOwogICAgICAgICBXZWJTZWxlY3Rpb25SZWN0ICp3ZWJSZWN0
ID0gW1dlYlNlbGVjdGlvblJlY3Qgc2VsZWN0aW9uUmVjdF07CiAgICAgICAgIHdlYlJlY3QucmVj
dCA9IGNvcmVSZWN0LnJlY3QoKTsKLSAgICAgICAgd2ViUmVjdC53cml0aW5nRGlyZWN0aW9uID0g
Y29yZVJlY3QuZGlyZWN0aW9uKCkgPT0gTFRSID8gV0tXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmln
aHQgOiBXS1dyaXRpbmdEaXJlY3Rpb25SaWdodFRvTGVmdDsKKyAgICAgICAgd2ViUmVjdC53cml0
aW5nRGlyZWN0aW9uID0gY29yZVJlY3QuZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRS
ID8gV0tXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQgOiBXS1dyaXRpbmdEaXJlY3Rpb25SaWdo
dFRvTGVmdDsKICAgICAgICAgd2ViUmVjdC5pc0xpbmVCcmVhayA9IGNvcmVSZWN0LmlzTGluZUJy
ZWFrKCk7CiAgICAgICAgIHdlYlJlY3QuaXNGaXJzdE9uTGluZSA9IGNvcmVSZWN0LmlzRmlyc3RP
bkxpbmUoKTsKICAgICAgICAgd2ViUmVjdC5pc0xhc3RPbkxpbmUgPSBjb3JlUmVjdC5pc0xhc3RP
bkxpbmUoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQb3B1cE1lbnVQ
cm94eU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2Vi
UG9wdXBNZW51UHJveHlNYWMubW0JKHJldmlzaW9uIDIzNDYxOCkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9XZWJQb3B1cE1lbnVQcm94eU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAt
NzMsOSArNzMsOSBAQCB2b2lkIFdlYlBvcHVwTWVudVByb3h5TWFjOjpwb3B1bGF0ZShjb25zCiAg
ICAgICAgICAgICBOU01lbnVJdGVtICptZW51SXRlbSA9IFttX3BvcHVwIGxhc3RJdGVtXTsKIAog
ICAgICAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJsZVBhcmFncmFwaFN0eWxlPiBwYXJhZ3JhcGhT
dHlsZSA9IGFkb3B0TlMoW1tOU1BhcmFncmFwaFN0eWxlIGRlZmF1bHRQYXJhZ3JhcGhTdHlsZV0g
bXV0YWJsZUNvcHldKTsKLSAgICAgICAgICAgIE5TV3JpdGluZ0RpcmVjdGlvbiB3cml0aW5nRGly
ZWN0aW9uID0gaXRlbXNbaV0ubV90ZXh0RGlyZWN0aW9uID09IExUUiA/IE5TV3JpdGluZ0RpcmVj
dGlvbkxlZnRUb1JpZ2h0IDogTlNXcml0aW5nRGlyZWN0aW9uUmlnaHRUb0xlZnQ7CisgICAgICAg
ICAgICBOU1dyaXRpbmdEaXJlY3Rpb24gd3JpdGluZ0RpcmVjdGlvbiA9IGl0ZW1zW2ldLm1fdGV4
dERpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBOU1dyaXRpbmdEaXJlY3Rpb25MZWZ0
VG9SaWdodCA6IE5TV3JpdGluZ0RpcmVjdGlvblJpZ2h0VG9MZWZ0OwogICAgICAgICAgICAgW3Bh
cmFncmFwaFN0eWxlIHNldEJhc2VXcml0aW5nRGlyZWN0aW9uOndyaXRpbmdEaXJlY3Rpb25dOwot
ICAgICAgICAgICAgW3BhcmFncmFwaFN0eWxlIHNldEFsaWdubWVudDptZW51VGV4dERpcmVjdGlv
biA9PSBMVFIgPyBOU1RleHRBbGlnbm1lbnRMZWZ0IDogTlNUZXh0QWxpZ25tZW50UmlnaHRdOwor
ICAgICAgICAgICAgW3BhcmFncmFwaFN0eWxlIHNldEFsaWdubWVudDptZW51VGV4dERpcmVjdGlv
biA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBOU1RleHRBbGlnbm1lbnRMZWZ0IDogTlNUZXh0QWxp
Z25tZW50UmlnaHRdOwogICAgICAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+
IGF0dHJpYnV0ZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdFdp
dGhPYmplY3RzQW5kS2V5czoKICAgICAgICAgICAgICAgICBwYXJhZ3JhcGhTdHlsZS5nZXQoKSwg
TlNQYXJhZ3JhcGhTdHlsZUF0dHJpYnV0ZU5hbWUsCiAgICAgICAgICAgICAgICAgZm9udCwgTlNG
b250QXR0cmlidXRlTmFtZSwKQEAgLTExMSwxMCArMTExLDEwIEBAIHZvaWQgV2ViUG9wdXBNZW51
UHJveHlNYWM6OnNob3dQb3B1cE1lbnUKIAogICAgIFttX3BvcHVwIGF0dGFjaFBvcFVwV2l0aEZy
YW1lOnJlY3QgaW5WaWV3Om1fd2ViVmlld107CiAgICAgW21fcG9wdXAgc2VsZWN0SXRlbUF0SW5k
ZXg6c2VsZWN0ZWRJbmRleF07Ci0gICAgW21fcG9wdXAgc2V0VXNlckludGVyZmFjZUxheW91dERp
cmVjdGlvbjp0ZXh0RGlyZWN0aW9uID09IExUUiA/IE5TVXNlckludGVyZmFjZUxheW91dERpcmVj
dGlvbkxlZnRUb1JpZ2h0IDogTlNVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uUmlnaHRUb0xl
ZnRdOworICAgIFttX3BvcHVwIHNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246dGV4dERp
cmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJl
Y3Rpb25MZWZ0VG9SaWdodCA6IE5TVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvblJpZ2h0VG9M
ZWZ0XTsKIAogICAgIE5TTWVudSAqbWVudSA9IFttX3BvcHVwIG1lbnVdOwotICAgIFttZW51IHNl
dFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246dGV4dERpcmVjdGlvbiA9PSBMVFIgPyBOU1Vz
ZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25MZWZ0VG9SaWdodCA6IE5TVXNlckludGVyZmFjZUxh
eW91dERpcmVjdGlvblJpZ2h0VG9MZWZ0XTsKKyAgICBbbWVudSBzZXRVc2VySW50ZXJmYWNlTGF5
b3V0RGlyZWN0aW9uOnRleHREaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gTlNVc2Vy
SW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uTGVmdFRvUmlnaHQgOiBOU1VzZXJJbnRlcmZhY2VMYXlv
dXREaXJlY3Rpb25SaWdodFRvTGVmdF07CiAKICAgICAvLyBUaGVzZSB2YWx1ZXMgd2VyZSBib3Jy
b3dlZCBmcm9tIEFwcEtpdCB0byBtYXRjaCB0aGVpciBwbGFjZW1lbnQgb2YgdGhlIG1lbnUuCiAg
ICAgY29uc3QgaW50IHBvcE92ZXJIb3Jpem9udGFsQWRqdXN0ID0gLTEzOwpAQCAtMTI5LDE4ICsx
MjksMTggQEAgdm9pZCBXZWJQb3B1cE1lbnVQcm94eU1hYzo6c2hvd1BvcHVwTWVudQogICAgICAg
ICBpZiAodGl0bGVGcmFtZS5zaXplLndpZHRoIDw9IDAgfHwgdGl0bGVGcmFtZS5zaXplLmhlaWdo
dCA8PSAwKQogICAgICAgICAgICAgdGl0bGVGcmFtZSA9IHJlY3Q7CiAgICAgICAgIGZsb2F0IHZl
cnRpY2FsT2Zmc2V0ID0gcm91bmRmKChOU01heFkocmVjdCkgLSBOU01heFkodGl0bGVGcmFtZSkp
ICsgTlNIZWlnaHQodGl0bGVGcmFtZSkpICsgMTsKLSAgICAgICAgaWYgKHRleHREaXJlY3Rpb24g
PT0gTFRSKQorICAgICAgICBpZiAodGV4dERpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIp
CiAgICAgICAgICAgICBsb2NhdGlvbiA9IE5TTWFrZVBvaW50KE5TTWluWChyZWN0KSArIHBvcE92
ZXJIb3Jpem9udGFsQWRqdXN0LCBOU01heFkocmVjdCkgLSB2ZXJ0aWNhbE9mZnNldCk7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIGxvY2F0aW9uID0gTlNNYWtlUG9pbnQoTlNNYXhYKHJlY3Qp
IC0gcG9wT3Zlckhvcml6b250YWxBZGp1c3QsIE5TTWF4WShyZWN0KSAtIHZlcnRpY2FsT2Zmc2V0
KTsKICAgICB9IGVsc2UgewotICAgICAgICBpZiAodGV4dERpcmVjdGlvbiA9PSBMVFIpCisgICAg
ICAgIGlmICh0ZXh0RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUikKICAgICAgICAgICAg
IGxvY2F0aW9uID0gTlNNYWtlUG9pbnQoTlNNaW5YKHJlY3QpICsgcG9wVW5kZXJIb3Jpem9udGFs
QWRqdXN0LCBOU01heFkocmVjdCkgKyBwb3BVbmRlclZlcnRpY2FsQWRqdXN0KTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgbG9jYXRpb24gPSBOU01ha2VQb2ludChOU01heFgocmVjdCkgLSBw
b3BVbmRlckhvcml6b250YWxBZGp1c3QsIE5TTWF4WShyZWN0KSArIHBvcFVuZGVyVmVydGljYWxB
ZGp1c3QpOwogICAgIH0KICAgICBSZXRhaW5QdHI8TlNWaWV3PiBkdW1teVZpZXcgPSBhZG9wdE5T
KFtbTlNWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOnJlY3RdKTsKLSAgICBbZHVtbXlWaWV3Lmdl
dCgpIHNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246dGV4dERpcmVjdGlvbiA9PSBMVFIg
PyBOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25MZWZ0VG9SaWdodCA6IE5TVXNlckludGVy
ZmFjZUxheW91dERpcmVjdGlvblJpZ2h0VG9MZWZ0XTsKKyAgICBbZHVtbXlWaWV3LmdldCgpIHNl
dFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246dGV4dERpcmVjdGlvbiA9PSBUZXh0RGlyZWN0
aW9uOjpMVFIgPyBOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25MZWZ0VG9SaWdodCA6IE5T
VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvblJpZ2h0VG9MZWZ0XTsKICAgICBbbV93ZWJWaWV3
IGFkZFN1YnZpZXc6ZHVtbXlWaWV3LmdldCgpXTsKICAgICBsb2NhdGlvbiA9IFtkdW1teVZpZXcg
Y29udmVydFBvaW50OmxvY2F0aW9uIGZyb21WaWV3Om1fd2ViVmlld107CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1
cE1lbnUuY3BwCShyZXZpc2lvbiAyMzQ2MTgpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBNZW51LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEyLDcg
KzExMiw3IEBAIHZvaWQgV2ViUG9wdXBNZW51OjpzaG93KGNvbnN0IEludFJlY3QmIHIKICAgICBQ
bGF0Zm9ybVBvcHVwTWVudURhdGEgcGxhdGZvcm1EYXRhOwogICAgIHNldFVwUGxhdGZvcm1EYXRh
KHBhZ2VDb29yZGluYXRlcywgcGxhdGZvcm1EYXRhKTsKIAotICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6U2hvd1BvcHVwTWVudShwYWdlQ29vcmRpbmF0ZXMsIG1fcG9wdXBDbGllbnQtPm1lbnVT
dHlsZSgpLnRleHREaXJlY3Rpb24oKSwgaXRlbXMsIGluZGV4LCBwbGF0Zm9ybURhdGEpLCBtX3Bh
Z2UtPnBhZ2VJRCgpKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dQb3B1cE1lbnUo
cGFnZUNvb3JkaW5hdGVzLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4obV9wb3B1cENsaWVudC0+bWVu
dVN0eWxlKCkudGV4dERpcmVjdGlvbigpKSwgaXRlbXMsIGluZGV4LCBwbGF0Zm9ybURhdGEpLCBt
X3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIAogdm9pZCBXZWJQb3B1cE1lbnU6OmhpZGUoKQpJbmRleDog
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW0JKHJldmlzaW9uIDIzNDYxOCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9XZWJQYWdlSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMzExLDcgKzIzMTEsNyBAQCB2
b2lkIFdlYlBhZ2U6OmdldEFzc2lzdGVkTm9kZUluZm9ybWF0aW9uCiAgICAgICAgIGJvb2wgaW5G
aXhlZCA9IGZhbHNlOwogICAgICAgICByZW5kZXJlci0+bG9jYWxUb0NvbnRhaW5lclBvaW50KEZs
b2F0UG9pbnQoKSwgbnVsbHB0ciwgVXNlVHJhbnNmb3JtcywgJmluRml4ZWQpOwogICAgICAgICBp
bmZvcm1hdGlvbi5pbnNpZGVGaXhlZFBvc2l0aW9uID0gaW5GaXhlZDsKLSAgICAgICAgaW5mb3Jt
YXRpb24uaXNSVEwgPSByZW5kZXJlci0+c3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBSVEw7CisgICAg
ICAgIGluZm9ybWF0aW9uLmlzUlRMID0gcmVuZGVyZXItPnN0eWxlKCkuZGlyZWN0aW9uKCkgPT0g
VGV4dERpcmVjdGlvbjo6UlRMOwogCiAgICAgICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gZWxl
bWVudEZyYW1lLnZpZXcoKTsKICAgICAgICAgaWYgKGluRml4ZWQgJiYgZWxlbWVudEZyYW1lLmlz
TWFpbkZyYW1lKCkgJiYgIWZyYW1lVmlldy0+ZnJhbWUoKS5zZXR0aW5ncygpLnZpc3VhbFZpZXdw
b3J0RW5hYmxlZCgpKSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9pb3MvQ2hhbmdlTG9nCShyZXZpc2lv
biAyMzQ2MTgpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxOC0wOC0wNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFj
aHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFVzZSBhIDEtYnl0ZSBlbnVtIGNsYXNz
IGZvciBUZXh0RGlyZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xODgzNTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lSU9TLm1tOgorICAgICAgICAoLVtX
ZWJGcmFtZSBzZWxlY3Rpb25SZWN0c0ZvckNvcmVSYW5nZTpdKToKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRpb24ubW06CisgICAgICAgICgtW1dlYlZpc2libGVQb3Np
dGlvbiB0ZXh0RGlyZWN0aW9uXSk6CisgICAgICAgICgtW1dlYlZpc2libGVQb3NpdGlvbiBkaXJl
Y3Rpb25Jc0Rvd25zdHJlYW06XSk6CisgICAgICAgICogV2ViVmlldy9XZWJQREZWaWV3SU9TLm1t
OgorICAgICAgICAoLVtXZWJQREZWaWV3IF9jaGVja1BERlRpdGxlXSk6CisKIDIwMTgtMDctMDQg
IFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgSW50cm9k
dWNlIFBMQVRGT1JNKElPU01BQykKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lSU9TLm1tCShyZXZpc2lvbiAyMzQ2MTgpCisr
KyBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUlPUy5tbQko
d29ya2luZyBjb3B5KQpAQCAtMjIwLDcgKzIyMCw3IEBAIC0gKE5TQXJyYXkgKilzZWxlY3Rpb25S
ZWN0c0ZvckNvcmVSYW5nZToKICAgICAgICAgU2VsZWN0aW9uUmVjdCAmY29yZVJlY3QgPSByZWN0
c1tpXTsKICAgICAgICAgV2ViU2VsZWN0aW9uUmVjdCAqd2ViUmVjdCA9IFtXZWJTZWxlY3Rpb25S
ZWN0IHNlbGVjdGlvblJlY3RdOwogICAgICAgICB3ZWJSZWN0LnJlY3QgPSBzdGF0aWNfY2FzdDxD
R1JlY3Q+KGNvcmVSZWN0LnJlY3QoKSk7Ci0gICAgICAgIHdlYlJlY3Qud3JpdGluZ0RpcmVjdGlv
biA9IGNvcmVSZWN0LmRpcmVjdGlvbigpID09IExUUiA/IFdLV3JpdGluZ0RpcmVjdGlvbkxlZnRU
b1JpZ2h0IDogV0tXcml0aW5nRGlyZWN0aW9uUmlnaHRUb0xlZnQ7CisgICAgICAgIHdlYlJlY3Qu
d3JpdGluZ0RpcmVjdGlvbiA9IGNvcmVSZWN0LmRpcmVjdGlvbigpID09IFRleHREaXJlY3Rpb246
OkxUUiA/IFdLV3JpdGluZ0RpcmVjdGlvbkxlZnRUb1JpZ2h0IDogV0tXcml0aW5nRGlyZWN0aW9u
UmlnaHRUb0xlZnQ7CiAgICAgICAgIHdlYlJlY3QuaXNMaW5lQnJlYWsgPSBjb3JlUmVjdC5pc0xp
bmVCcmVhaygpOwogICAgICAgICB3ZWJSZWN0LmlzRmlyc3RPbkxpbmUgPSBjb3JlUmVjdC5pc0Zp
cnN0T25MaW5lKCk7CiAgICAgICAgIHdlYlJlY3QuaXNMYXN0T25MaW5lID0gY29yZVJlY3QuaXNM
YXN0T25MaW5lKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9y
dC9XZWJWaXNpYmxlUG9zaXRpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2Fj
eS9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViVmlzaWJsZVBvc2l0aW9uLm1tCShyZXZpc2lvbiAyMzQ2
MTgpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJWaXNpYmxl
UG9zaXRpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTEzMiw3ICsxMzIsNyBAQCAtIChOU1N0cmlu
ZyAqKWRlc2NyaXB0aW9uCiAtIChUZXh0RGlyZWN0aW9uKXRleHREaXJlY3Rpb24KIHsKICAgICAv
LyBUT0RPOiBpbXBsZW1lbnQKLSAgICByZXR1cm4gTFRSOworICAgIHJldHVybiBUZXh0RGlyZWN0
aW9uOjpMVFI7CiB9CiAKIC0gKEJPT0wpZGlyZWN0aW9uSXNEb3duc3RyZWFtOihXZWJUZXh0QWRq
dXN0bWVudERpcmVjdGlvbilkaXJlY3Rpb24KQEAgLTE0NCwxMSArMTQ0LDkgQEAgLSAoQk9PTClk
aXJlY3Rpb25Jc0Rvd25zdHJlYW06KFdlYlRleHRBZAogICAgICAgICByZXR1cm4gWUVTOwogICAg
IAogICAgIAotICAgIGlmIChbc2VsZiB0ZXh0RGlyZWN0aW9uXSA9PSBMVFIpIHsKKyAgICBpZiAo
W3NlbGYgdGV4dERpcmVjdGlvbl0gPT0gVGV4dERpcmVjdGlvbjo6TFRSKQogICAgICAgICByZXR1
cm4gKGRpcmVjdGlvbiA9PSBXZWJUZXh0QWRqdXN0bWVudFJpZ2h0KTsKLSAgICB9IGVsc2Ugewot
ICAgICAgICByZXR1cm4gKGRpcmVjdGlvbiA9PSBXZWJUZXh0QWRqdXN0bWVudExlZnQpOwotICAg
IH0KKyAgICByZXR1cm4gKGRpcmVjdGlvbiA9PSBXZWJUZXh0QWRqdXN0bWVudExlZnQpOwogfQog
CiAtIChXZWJWaXNpYmxlUG9zaXRpb24gKilwb3NpdGlvbkJ5TW92aW5nSW5EaXJlY3Rpb246KFdl
YlRleHRBZGp1c3RtZW50RGlyZWN0aW9uKWRpcmVjdGlvbiBhbW91bnQ6KFVJbnQzMilhbW91bnQg
d2l0aEFmZmluaXR5RG93bnN0cmVhbTooQk9PTClhZmZpbml0eURvd25zdHJlYW0KSW5kZXg6IFNv
dXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld0lPUy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9XZWJWaWV3L1dlYlBERlZpZXdJT1MubW0JKHJl
dmlzaW9uIDIzNDYxOCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERG
Vmlld0lPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjk5LDcgKzI5OSw3IEBAIC0gKHZvaWQpX2No
ZWNrUERGVGl0bGUKICAgICBpZiAoW3RpdGxlIGxlbmd0aF0pIHsKICAgICAgICAgW190aXRsZSBy
ZWxlYXNlXTsKICAgICAgICAgX3RpdGxlID0gW3RpdGxlIGNvcHldOwotICAgICAgICBjb3JlKFtz
ZWxmIF9mcmFtZV0pLT5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERpZFJlY2VpdmVUaXRsZSh7
IHRpdGxlLCBMVFIgfSk7CisgICAgICAgIGNvcmUoW3NlbGYgX2ZyYW1lXSktPmxvYWRlcigpLmNs
aWVudCgpLmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKHsgdGl0bGUsIFRleHREaXJlY3Rpb246OkxU
UiB9KTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDIzNDYxOSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE4LTA4LTA2ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIGEgMS1ieXRlIGVudW0gY2xh
c3MgZm9yIFRleHREaXJlY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE4ODM1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUG9wdXBNZW51TWFjLm1tOgorICAgICAgICAo
UG9wdXBNZW51TWFjOjpwb3B1bGF0ZSk6CisgICAgICAgIChQb3B1cE1lbnVNYWM6OnNob3cpOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAg
ICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5zaXRpb25Ub0NvbW1pdHRlZEZvck5ld1BhZ2Up
OgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9k
aXNwYXRjaERpZFJlY2VpdmVUaXRsZTpdKToKKwogMjAxOC0wOC0wNiAgQWxleCBDaHJpc3RlbnNl
biAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFVzZSBlbnVtIGNsYXNzZXMg
YW5kIE9wdGlvblNldHMgZm9yIFBhaW50UGhhc2UgYW5kIFBhaW50QmVoYXZpb3IKSW5kZXg6IFNv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1BvcHVwTWVudU1hYy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9Qb3B1cE1l
bnVNYWMubW0JKHJldmlzaW9uIDIzNDYxOCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1BvcHVwTWVudU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcs
NyBAQCB2b2lkIFBvcHVwTWVudU1hYzo6cG9wdWxhdGUoKQogICAgICAgICBbbV9wb3B1cCBhZGRJ
dGVtV2l0aFRpdGxlOkAiIl07CiAKICAgICBUZXh0RGlyZWN0aW9uIG1lbnVUZXh0RGlyZWN0aW9u
ID0gbV9jbGllbnQtPm1lbnVTdHlsZSgpLnRleHREaXJlY3Rpb24oKTsKLSAgICBbbV9wb3B1cCBz
ZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uOm1lbnVUZXh0RGlyZWN0aW9uID09IExUUiA/
IE5TVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbkxlZnRUb1JpZ2h0IDogTlNVc2VySW50ZXJm
YWNlTGF5b3V0RGlyZWN0aW9uUmlnaHRUb0xlZnRdOworICAgIFttX3BvcHVwIHNldFVzZXJJbnRl
cmZhY2VMYXlvdXREaXJlY3Rpb246bWVudVRleHREaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6
TFRSID8gTlNVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uTGVmdFRvUmlnaHQgOiBOU1VzZXJJ
bnRlcmZhY2VMYXlvdXREaXJlY3Rpb25SaWdodFRvTGVmdF07CiAKICAgICBBU1NFUlQobV9jbGll
bnQpOwogICAgIGludCBzaXplID0gbV9jbGllbnQtPmxpc3RTaXplKCk7CkBAIC05MCw4ICs5MCw4
IEBAIHZvaWQgUG9wdXBNZW51TWFjOjpwb3B1bGF0ZSgpCiAgICAgICAgIH0KIAogICAgICAgICBS
ZXRhaW5QdHI8TlNNdXRhYmxlUGFyYWdyYXBoU3R5bGU+IHBhcmFncmFwaFN0eWxlID0gYWRvcHRO
UyhbW05TUGFyYWdyYXBoU3R5bGUgZGVmYXVsdFBhcmFncmFwaFN0eWxlXSBtdXRhYmxlQ29weV0p
OwotICAgICAgICBbcGFyYWdyYXBoU3R5bGUgc2V0QWxpZ25tZW50Om1lbnVUZXh0RGlyZWN0aW9u
ID09IExUUiA/IE5TVGV4dEFsaWdubWVudExlZnQgOiBOU1RleHRBbGlnbm1lbnRSaWdodF07Ci0g
ICAgICAgIE5TV3JpdGluZ0RpcmVjdGlvbiB3cml0aW5nRGlyZWN0aW9uID0gc3R5bGUudGV4dERp
cmVjdGlvbigpID09IExUUiA/IE5TV3JpdGluZ0RpcmVjdGlvbkxlZnRUb1JpZ2h0IDogTlNXcml0
aW5nRGlyZWN0aW9uUmlnaHRUb0xlZnQ7CisgICAgICAgIFtwYXJhZ3JhcGhTdHlsZSBzZXRBbGln
bm1lbnQ6bWVudVRleHREaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gTlNUZXh0QWxp
Z25tZW50TGVmdCA6IE5TVGV4dEFsaWdubWVudFJpZ2h0XTsKKyAgICAgICAgTlNXcml0aW5nRGly
ZWN0aW9uIHdyaXRpbmdEaXJlY3Rpb24gPSBzdHlsZS50ZXh0RGlyZWN0aW9uKCkgPT0gVGV4dERp
cmVjdGlvbjo6TFRSID8gTlNXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQgOiBOU1dyaXRpbmdE
aXJlY3Rpb25SaWdodFRvTGVmdDsKICAgICAgICAgW3BhcmFncmFwaFN0eWxlIHNldEJhc2VXcml0
aW5nRGlyZWN0aW9uOndyaXRpbmdEaXJlY3Rpb25dOwogICAgICAgICBpZiAoc3R5bGUuaGFzVGV4
dERpcmVjdGlvbk92ZXJyaWRlKCkpIHsKICAgICAgICAgICAgIFJldGFpblB0cjxOU051bWJlcj4g
d3JpdGluZ0RpcmVjdGlvblZhbHVlID0gYWRvcHROUyhbW05TTnVtYmVyIGFsbG9jXSBpbml0V2l0
aEludGVnZXI6d3JpdGluZ0RpcmVjdGlvbiArIE5TV3JpdGluZ0RpcmVjdGlvbk92ZXJyaWRlXSk7
CkBAIC0xNDYsMTAgKzE0NiwxMCBAQCB2b2lkIFBvcHVwTWVudU1hYzo6c2hvdyhjb25zdCBJbnRS
ZWN0JiByCiAKICAgICBbbV9wb3B1cCBhdHRhY2hQb3BVcFdpdGhGcmFtZTpyIGluVmlldzp2aWV3
XTsKICAgICBbbV9wb3B1cCBzZWxlY3RJdGVtQXRJbmRleDppbmRleF07Ci0gICAgW21fcG9wdXAg
c2V0VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbjp0ZXh0RGlyZWN0aW9uID09IExUUiA/IE5T
VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbkxlZnRUb1JpZ2h0IDogTlNVc2VySW50ZXJmYWNl
TGF5b3V0RGlyZWN0aW9uUmlnaHRUb0xlZnRdOworICAgIFttX3BvcHVwIHNldFVzZXJJbnRlcmZh
Y2VMYXlvdXREaXJlY3Rpb246dGV4dERpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBO
U1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25MZWZ0VG9SaWdodCA6IE5TVXNlckludGVyZmFj
ZUxheW91dERpcmVjdGlvblJpZ2h0VG9MZWZ0XTsKIAogICAgIE5TTWVudSAqbWVudSA9IFttX3Bv
cHVwIG1lbnVdOwotICAgIFttZW51IHNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246dGV4
dERpcmVjdGlvbiA9PSBMVFIgPyBOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25MZWZ0VG9S
aWdodCA6IE5TVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvblJpZ2h0VG9MZWZ0XTsKKyAgICBb
bWVudSBzZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uOnRleHREaXJlY3Rpb24gPT0gVGV4
dERpcmVjdGlvbjo6TFRSID8gTlNVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uTGVmdFRvUmln
aHQgOiBOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25SaWdodFRvTGVmdF07CiAKICAgICBO
U1BvaW50IGxvY2F0aW9uOwogICAgIENURm9udFJlZiBmb250ID0gbV9jbGllbnQtPm1lbnVTdHls
ZSgpLmZvbnQoKS5wcmltYXJ5Rm9udCgpLmdldENURm9udCgpOwpAQCAtMTY4LDcgKzE2OCw3IEBA
IHZvaWQgUG9wdXBNZW51TWFjOjpzaG93KGNvbnN0IEludFJlY3QmIHIKICAgICAgICAgdmVydE9m
ZnNldCArPSBDVEZvbnRHZXREZXNjZW50KGZvbnQpIC0gQ1RGb250R2V0RGVzY2VudChkZWZhdWx0
Rm9udC5nZXQoKSk7CiAgICAgICAgIHZlcnRPZmZzZXQgPSBmbWluZihOU0hlaWdodChyKSwgdmVy
dE9mZnNldCk7CiAjaWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEyMDAK
LSAgICAgICAgaWYgKHRleHREaXJlY3Rpb24gPT0gTFRSKQorICAgICAgICBpZiAodGV4dERpcmVj
dGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpCiAgICAgICAgICAgICBsb2NhdGlvbiA9IE5TTWFr
ZVBvaW50KE5TTWluWChyKSArIHBvcE92ZXJIb3Jpem9udGFsQWRqdXN0LCBOU01heFkocikgLSB2
ZXJ0T2Zmc2V0KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbG9jYXRpb24gPSBOU01ha2VQ
b2ludChOU01heFgocikgLSBwb3BPdmVySG9yaXpvbnRhbEFkanVzdCwgTlNNYXhZKHIpIC0gdmVy
dE9mZnNldCk7CkBAIC0xNzcsNyArMTc3LDcgQEAgdm9pZCBQb3B1cE1lbnVNYWM6OnNob3coY29u
c3QgSW50UmVjdCYgcgogI2VuZGlmCiAgICAgfSBlbHNlIHsKICNpZiBfX01BQ19PU19YX1ZFUlNJ
T05fTUlOX1JFUVVJUkVEID49IDEwMTIwMAotICAgICAgICBpZiAodGV4dERpcmVjdGlvbiA9PSBM
VFIpCisgICAgICAgIGlmICh0ZXh0RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUikKICAg
ICAgICAgICAgIGxvY2F0aW9uID0gTlNNYWtlUG9pbnQoTlNNaW5YKHIpICsgcG9wVW5kZXJIb3Jp
em9udGFsQWRqdXN0LCBOU01heFkocikgKyBwb3BVbmRlclZlcnRpY2FsQWRqdXN0KTsKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgbG9jYXRpb24gPSBOU01ha2VQb2ludChOU01heFgocikgLSBw
b3BVbmRlckhvcml6b250YWxBZGp1c3QsIE5TTWF4WShyKSArIHBvcFVuZGVyVmVydGljYWxBZGp1
c3QpOwpAQCAtMTkzLDcgKzE5Myw3IEBAIHZvaWQgUG9wdXBNZW51TWFjOjpzaG93KGNvbnN0IElu
dFJlY3QmIHIKICAgICBSZWY8UG9wdXBNZW51TWFjPiBwcm90ZWN0b3IoKnRoaXMpOwogCiAgICAg
UmV0YWluUHRyPE5TVmlldz4gZHVtbXlWaWV3ID0gYWRvcHROUyhbW05TVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpyXSk7Ci0gICAgW2R1bW15Vmlldy5nZXQoKSBzZXRVc2VySW50ZXJmYWNlTGF5
b3V0RGlyZWN0aW9uOnRleHREaXJlY3Rpb24gPT0gTFRSID8gTlNVc2VySW50ZXJmYWNlTGF5b3V0
RGlyZWN0aW9uTGVmdFRvUmlnaHQgOiBOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25SaWdo
dFRvTGVmdF07CisgICAgW2R1bW15Vmlldy5nZXQoKSBzZXRVc2VySW50ZXJmYWNlTGF5b3V0RGly
ZWN0aW9uOnRleHREaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gTlNVc2VySW50ZXJm
YWNlTGF5b3V0RGlyZWN0aW9uTGVmdFRvUmlnaHQgOiBOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJl
Y3Rpb25SaWdodFRvTGVmdF07CiAgICAgW3ZpZXcgYWRkU3VidmlldzpkdW1teVZpZXcuZ2V0KCld
OwogICAgIGxvY2F0aW9uID0gW2R1bW15VmlldyBjb252ZXJ0UG9pbnQ6bG9jYXRpb24gZnJvbVZp
ZXc6dmlld107CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQkocmV2aXNp
b24gMjM0NjE4KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTE0OTQsNyArMTQ5NCw3IEBA
IHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnRyYW5zaXRpb25Ub0MKICAgICAvLyBsaWtlIHRo
ZSBvbmVzIHRoYXQgU2FmYXJpIHVzZXMgZm9yIGJvb2ttYXJrcyBpdCBpcyB0aGUgb25seSB3YXkg
dGhlIERvY3VtZW50TG9hZGVyCiAgICAgLy8gd2lsbCBnZXQgdGhlIHByb3BlciB0aXRsZS4KICAg
ICBpZiAoYXV0byogZG9jdW1lbnRMb2FkZXIgPSBbZGF0YVNvdXJjZSBfZG9jdW1lbnRMb2FkZXJd
KQotICAgICAgICBkb2N1bWVudExvYWRlci0+c2V0VGl0bGUoeyBbZGF0YVNvdXJjZSBwYWdlVGl0
bGVdLCBMVFIgfSk7CisgICAgICAgIGRvY3VtZW50TG9hZGVyLT5zZXRUaXRsZSh7IFtkYXRhU291
cmNlIHBhZ2VUaXRsZV0sIFRleHREaXJlY3Rpb246OkxUUiB9KTsKIAogICAgIGlmIChhdXRvKiBv
d25lckVsZW1lbnQgPSBjb3JlRnJhbWUtPm93bmVyRWxlbWVudCgpKQogICAgICAgICBjb3JlRnJh
bWUtPnZpZXcoKS0+c2V0Q2FuSGF2ZVNjcm9sbGJhcnMob3duZXJFbGVtZW50LT5zY3JvbGxpbmdN
b2RlKCkgIT0gU2Nyb2xsYmFyQWx3YXlzT2ZmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQkocmV2aXNpb24gMjM0NjE5KQorKysgU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjMz
Nyw3ICsyMzM3LDcgQEAgLSAodm9pZClfZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGU6KE5TU3RyaQog
ICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBfcHJpdmF0ZS0+Y29yZUZyYW1lOwogICAgIGlmICghY29y
ZUZyYW1lKQogICAgICAgICByZXR1cm47Ci0gICAgY29yZUZyYW1lLT5sb2FkZXIoKS5jbGllbnQo
KS5kaXNwYXRjaERpZFJlY2VpdmVUaXRsZSh7IHRpdGxlLCBMVFIgfSk7CisgICAgY29yZUZyYW1l
LT5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERpZFJlY2VpdmVUaXRsZSh7IHRpdGxlLCBUZXh0
RGlyZWN0aW9uOjpMVFIgfSk7CiB9CiAKICNlbmRpZiAvLyBQTEFURk9STShJT1MpCkluZGV4OiBU
b29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAy
MzQ2MTgpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBA
QAorMjAxOC0wOC0wNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgorCisgICAgICAgIFVzZSBhIDEtYnl0ZSBlbnVtIGNsYXNzIGZvciBUZXh0RGlyZWN0aW9uCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODgzNTAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViQ29yZS9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvU3RyaW5nV2l0aERpcmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRv
cjw8KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ29tbWFuZEJhY2tGb3J3YXJkLm1tOgorICAgICAgICAo
VEVTVF9GKToKKwogMjAxOC0wOC0wNiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxl
LmNvbT4KIAogICAgICAgICBbaU9TXSBDYXJldCBkaXNhcHBlYXJzIGFmdGVyIHJlc2lnbmluZyBh
bmQgYmVjb21pbmcgZmlyc3QgcmVzcG9uZGVyIGlmIGFjdGl2ZSBmb2N1cyBzdGF0ZSBpcyByZXRh
aW5lZApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbXBsZXhUZXh0
Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJDb3JlL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDIzNDYxOCkKKysrIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNTIsNyArMzUyLDcgQEAgVEVTVF9GKENvbXBsZXhUZXh0Q29u
dHJvbGxlclRlc3QsIFRvdGFsVwogCiAgICAgVUNoYXIgY2hhcmFjdGVyc1tdID0geyAweDY0NCwg
JyAnLCAweDY0NCwgJyAnLCAweDY0NCB9OwogICAgIHNpemVfdCBjaGFyYWN0ZXJzTGVuZ3RoID0g
V1RGX0FSUkFZX0xFTkdUSChjaGFyYWN0ZXJzKTsKLSAgICBUZXh0UnVuIHRleHRSdW4oU3RyaW5n
VmlldyhjaGFyYWN0ZXJzLCBjaGFyYWN0ZXJzTGVuZ3RoKSwgMCwgMTQsIERlZmF1bHRFeHBhbnNp
b24sIFJUTCk7CisgICAgVGV4dFJ1biB0ZXh0UnVuKFN0cmluZ1ZpZXcoY2hhcmFjdGVycywgY2hh
cmFjdGVyc0xlbmd0aCksIDAsIDE0LCBEZWZhdWx0RXhwYW5zaW9uLCBUZXh0RGlyZWN0aW9uOjpS
VEwpOwogICAgIGF1dG8gcnVuID0gQ29tcGxleFRleHRDb250cm9sbGVyOjpDb21wbGV4VGV4dFJ1
bjo6Y3JlYXRlKGFkdmFuY2VzLCBvcmlnaW5zLCB7IDUsIDYsIDcsIDgsIDkgfSwgeyA0LCAzLCAy
LCAxLCAwIH0sIGluaXRpYWxBZHZhbmNlLCBmb250LnByaW1hcnlGb250KCksIGNoYXJhY3RlcnMs
IDAsIGNoYXJhY3RlcnNMZW5ndGgsIDAsIDUsIGZhbHNlKTsKICAgICBWZWN0b3I8UmVmPENvbXBs
ZXhUZXh0Q29udHJvbGxlcjo6Q29tcGxleFRleHRSdW4+PiBydW5zOwogICAgIHJ1bnMuYXBwZW5k
KFdURk1vdmUocnVuKSk7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
U3RyaW5nV2l0aERpcmVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL1N0cmluZ1dpdGhEaXJlY3Rpb24uY3BwCShyZXZpc2lvbiAyMzQ2MTgp
CisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU3RyaW5nV2l0aERpcmVjdGlv
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDQ5ICszMSw2NiBAQAogCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAorbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGQ6Om9zdHJlYW0mIG9wZXJh
dG9yPDwoc3RkOjpvc3RyZWFtJiBvcywgY29uc3QgVGV4dERpcmVjdGlvbiYgZGlyZWN0aW9uKQor
eworICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7CisgICAgY2FzZSBUZXh0RGlyZWN0aW9uOjpMVFI6
CisgICAgICAgIG9zIDw8ICJUZXh0RGlyZWN0aW9uOjpMVFIiOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFRleHREaXJlY3Rpb246OlJUTDoKKyAgICAgICAgb3MgPDwgIlRleHREaXJlY3Rpb246
OlJUTCI7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gb3M7Cit9CisKK30KKwog
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBURVNUKFN0cmluZ1dpdGhEaXJlY3Rpb24sIFRy
dW5jYXRlQXRFbmRXaXRoTGVmdFRvUmlnaHRTdHJpbmcpCiB7Ci0gICAgU3RyaW5nV2l0aERpcmVj
dGlvbiBzdHJpbmcgeyAiQ2FwcHVjY2lubyIsIExUUiB9OworICAgIFN0cmluZ1dpdGhEaXJlY3Rp
b24gc3RyaW5nIHsgIkNhcHB1Y2Npbm8iLCBUZXh0RGlyZWN0aW9uOjpMVFIgfTsKICAgICBTdHJp
bmdXaXRoRGlyZWN0aW9uIHJlc3VsdDsKIAogICAgIHJlc3VsdCA9IHRydW5jYXRlRnJvbUVuZChz
dHJpbmcsIDApOwotICAgIEVYUEVDVF9FUShMVFIsIHJlc3VsdC5kaXJlY3Rpb24pOworICAgIEVY
UEVDVF9FUShUZXh0RGlyZWN0aW9uOjpMVFIsIHJlc3VsdC5kaXJlY3Rpb24pOwogICAgIEVYUEVD
VF9FUSgiIiwgcmVzdWx0LnN0cmluZyk7CiAKICAgICByZXN1bHQgPSB0cnVuY2F0ZUZyb21FbmQo
c3RyaW5nLCAxKTsKLSAgICBFWFBFQ1RfRVEoTFRSLCByZXN1bHQuZGlyZWN0aW9uKTsKKyAgICBF
WFBFQ1RfRVEoVGV4dERpcmVjdGlvbjo6TFRSLCByZXN1bHQuZGlyZWN0aW9uKTsKICAgICBFWFBF
Q1RfRVEoIkMiLCByZXN1bHQuc3RyaW5nKTsKIAogICAgIHJlc3VsdCA9IHRydW5jYXRlRnJvbUVu
ZChzdHJpbmcsIDIpOwotICAgIEVYUEVDVF9FUShMVFIsIHJlc3VsdC5kaXJlY3Rpb24pOworICAg
IEVYUEVDVF9FUShUZXh0RGlyZWN0aW9uOjpMVFIsIHJlc3VsdC5kaXJlY3Rpb24pOwogICAgIEVY
UEVDVF9FUSgiQ2EiLCByZXN1bHQuc3RyaW5nKTsKIAogICAgIHJlc3VsdCA9IHRydW5jYXRlRnJv
bUVuZChzdHJpbmcsIDEwMDApOwotICAgIEVYUEVDVF9FUShMVFIsIHJlc3VsdC5kaXJlY3Rpb24p
OworICAgIEVYUEVDVF9FUShUZXh0RGlyZWN0aW9uOjpMVFIsIHJlc3VsdC5kaXJlY3Rpb24pOwog
ICAgIEVYUEVDVF9FUSgiQ2FwcHVjY2lubyIsIHJlc3VsdC5zdHJpbmcpOwogfQogCiBURVNUKFN0
cmluZ1dpdGhEaXJlY3Rpb24sIFRydW5jYXRlQXRFbmRXaXRoUmlnaHRUb0xlZnRTdHJpbmcpCiB7
Ci0gICAgU3RyaW5nV2l0aERpcmVjdGlvbiBzdHJpbmcgeyBTdHJpbmc6OmZyb21VVEY4KCLXp9a4
16TWvNeV1rzXpta0J9eZ16DXlda5IiksIFJUTCB9OworICAgIFN0cmluZ1dpdGhEaXJlY3Rpb24g
c3RyaW5nIHsgU3RyaW5nOjpmcm9tVVRGOCgi16fWuNek1rzXlda816bWtCfXmdeg15XWuSIpLCBU
ZXh0RGlyZWN0aW9uOjpSVEwgfTsKICAgICBTdHJpbmdXaXRoRGlyZWN0aW9uIHJlc3VsdDsKIAog
ICAgIHJlc3VsdCA9IHRydW5jYXRlRnJvbUVuZChzdHJpbmcsIDApOwotICAgIEVYUEVDVF9FUShS
VEwsIHJlc3VsdC5kaXJlY3Rpb24pOworICAgIEVYUEVDVF9FUShUZXh0RGlyZWN0aW9uOjpSVEws
IHJlc3VsdC5kaXJlY3Rpb24pOwogICAgIEVYUEVDVF9FUSgiIiwgcmVzdWx0LnN0cmluZyk7CiAK
ICAgICByZXN1bHQgPSB0cnVuY2F0ZUZyb21FbmQoc3RyaW5nLCAxKTsKLSAgICBFWFBFQ1RfRVEo
UlRMLCByZXN1bHQuZGlyZWN0aW9uKTsKKyAgICBFWFBFQ1RfRVEoVGV4dERpcmVjdGlvbjo6UlRM
LCByZXN1bHQuZGlyZWN0aW9uKTsKICAgICBFWFBFQ1RfRVEoU3RyaW5nOjpmcm9tVVRGOCgi16ci
KSwgcmVzdWx0LnN0cmluZyk7CiAKICAgICByZXN1bHQgPSB0cnVuY2F0ZUZyb21FbmQoc3RyaW5n
LCAyKTsKLSAgICBFWFBFQ1RfRVEoUlRMLCByZXN1bHQuZGlyZWN0aW9uKTsKKyAgICBFWFBFQ1Rf
RVEoVGV4dERpcmVjdGlvbjo6UlRMLCByZXN1bHQuZGlyZWN0aW9uKTsKICAgICBFWFBFQ1RfRVEo
U3RyaW5nOjpmcm9tVVRGOCgi16fWuCIpLCByZXN1bHQuc3RyaW5nKTsKIAogICAgIHJlc3VsdCA9
IHRydW5jYXRlRnJvbUVuZChzdHJpbmcsIDEwMDApOwotICAgIEVYUEVDVF9FUShSVEwsIHJlc3Vs
dC5kaXJlY3Rpb24pOworICAgIEVYUEVDVF9FUShUZXh0RGlyZWN0aW9uOjpSVEwsIHJlc3VsdC5k
aXJlY3Rpb24pOwogICAgIEVYUEVDVF9FUShTdHJpbmc6OmZyb21VVEY4KCLXp9a416TWvNeV1rzX
pta0J9eZ16DXlda5IiksIHJlc3VsdC5zdHJpbmcpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>346710</attachid>
            <date>2018-08-07 10:01:17 -0700</date>
            <delta_ts>2018-08-13 11:19:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188350-20180807100116.patch</filename>
            <type>text/plain</type>
            <size>128280</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNDYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2NCBAQAorMjAxOC0wOC0wNyAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFVzZSBhIDEt
Ynl0ZSBlbnVtIGNsYXNzIGZvciBUZXh0RGlyZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODgzNTAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb24uaDoKKyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBUZXh0RGlyZWN0aW9u
IGNvbnN0KToKKyAgICAgICAgKiBjc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RWxlbWVudFJ1bGVDb2xsZWN0b3I6Om1hdGNoQWxsUnVsZXMpOgorICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dXBkYXRl
VGl0bGVGcm9tVGl0bGVFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRU
aXRsZSk6CisgICAgICAgICogZG9tL1Bvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBv
c2l0aW9uOjpwcmltYXJ5RGlyZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBkb20vUmFuZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2U6OmNvbGxlY3RTZWxlY3Rpb25SZWN0c1dpdGhvdXRV
bmlvbkludGVyaW9yTGluZXMgY29uc3QpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKToKKyAgICAgICAg
KiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmJhc2VXcml0
aW5nRGlyZWN0aW9uRm9yU2VsZWN0aW9uU3RhcnQgY29uc3QpOgorICAgICAgICAqIGVkaXRpbmcv
RnJhbWVTZWxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246Ondp
bGxCZU1vZGlmaWVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjptb2RpZnlF
eHRlbmRpbmdSaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5
RXh0ZW5kaW5nRm9yd2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6bW9k
aWZ5TW92aW5nUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246Om1vZGlm
eUV4dGVuZGluZ0xlZnQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246Om1vZGlm
eUV4dGVuZGluZ0JhY2t3YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpt
b2RpZnlNb3ZpbmdMZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjp0ZXh0
U2VsZWN0aW9uSW50ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjptb2Rp
ZnkpOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlZpc2libGVQb3NpdGlvbjo6bGVmdFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6VmlzaWJsZVBvc2l0aW9uOjpyaWdodFZpc3VhbGx5RGlz
dGluY3RDYW5kaWRhdGUgY29uc3QpOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVVuaXRzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnZpc3VhbFdvcmRQb3NpdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpsZWZ0V29yZFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnJpZ2h0V29yZFBvc2l0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmxlZnRCb3VuZGFyeU9mTGluZSk6CisgICAgICAgIChX
ZWJDb3JlOjpyaWdodEJvdW5kYXJ5T2ZMaW5lKToKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpkaXJlY3Rpb25hbGl0eUlmaGFz
RGlyQXV0b0F0dHJpYnV0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6
ZGlyZWN0aW9uYWxpdHkgY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpzZXR1cERhdGVUaW1lQ2hv
b3NlclBhcmFtZXRlcnMpOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmRp
cmVjdGlvbkZvckZvcm1EYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9y
bUNvbnRyb2xFbGVtZW50OjphZGp1c3RJbm5lclRleHRTdHlsZSBjb25zdCk6CisgICAgICAgICog
aHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUaXRsZUVs
ZW1lbnQ6OmNvbXB1dGVkVGV4dFdpdGhEaXJlY3Rpb24pOgorICAgICAgICAqIGh0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OnRvVGV4dERpcmVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRpcmVjdGlvbiBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnRleHRPZmZzZXQpOgorICAgICAg
ICAqIGh0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTbGlkZXJDb250YWluZXI6OmxheW91dCk6CisgICAgICAgICogaHRtbC9zaGFkb3cv
VGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDb250
cm9sSW5uZXJFbGVtZW50OjpyZXNvbHZlQ3VzdG9tU3R5bGUpOgorICAgICAgICAqIHBhZ2UvQ2hy
b21lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZTo6c2V0VG9vbFRpcCk6CisgICAgICAg
ICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFnaW5hdGlvbk1vZGVG
b3JSZW5kZXJTdHlsZSk6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy55YW1sOgorICAgICAgICAq
IHBsYXRmb3JtL1JlY3RFZGdlcy5oOgorICAgICAgICAoV2ViQ29yZTo6UmVjdEVkZ2VzOjpzdGFy
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZWN0RWRnZXM6OmVuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZWN0RWRnZXM6OnN0YXJ0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlY3RFZGdlczo6
ZW5kIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlY3RFZGdlczo6c2V0U3RhcnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVjdEVkZ2VzOjpzZXRFbmQpOgorICAgICAgICAqIHBsYXRmb3JtL1Vz
ZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcGxleFRl
eHRDb250cm9sbGVyOjpjb21wdXRlRXhwYW5zaW9uT3Bwb3J0dW5pdHkpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRD
YXNjYWRlOjpleHBhbnNpb25PcHBvcnR1bml0eUNvdW50SW50ZXJuYWwpOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udENhc2NhZGU6OmxlYWRpbmdFeHBhbnNpb25PcHBvcnR1bml0eSk6CisgICAgICAg
IChXZWJDb3JlOjpGb250Q2FzY2FkZTo6dHJhaWxpbmdFeHBhbnNpb25PcHBvcnR1bml0eSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0JpZGlUZXh0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9UZXh0UnVuLmg6CisgICAgICAgIChXZWJDb3JlOjpUZXh0UnVuOjpUZXh0
UnVuKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRSdW46OnJ0bCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0UnVuOjpsdHIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFJ1bjo6
c2V0RGlyZWN0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9XaWR0aEl0ZXJhdG9y
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldpZHRoSXRlcmF0b3I6OldpZHRoSXRlcmF0b3IpOgor
ICAgICAgICAqIHBsYXRmb3JtL2lvcy9TZWxlY3Rpb25SZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNlbGVjdGlvblJlY3Q6OlNlbGVjdGlvblJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL3Rl
eHQvQmlkaVJlc29sdmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpCaWRpU3RhdHVzOjpCaWRpU3Rh
dHVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1N0cmluZ1dpdGhEaXJlY3Rpb24uaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS90ZXh0L1dyaXRpbmdNb2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpp
c0xlZnRUb1JpZ2h0RGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmlzVmVydGljYWxXcml0
aW5nTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjppc0ZsaXBwZWRXcml0aW5nTW9kZSk6CisgICAg
ICAgIChXZWJDb3JlOjptYXBMb2dpY2FsU2lkZVRvUGh5c2ljYWxTaWRlKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVz
dWx0OjpzcGVsbGluZ1Rvb2xUaXAgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJl
c3VsdDo6dGl0bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6aW5u
ZXJUZXh0SWZUcnVuY2F0ZWQgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVCb3gu
aDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUJveDo6ZGlyZWN0aW9uIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OklubGluZUJveDo6aXNMZWZ0VG9SaWdodERpcmVjdGlvbiBjb25zdCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5saW5lRmxvd0JveDo6cGFpbnRGaWxsTGF5ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9Jbmxp
bmVJdGVyYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6ZW1iZWRDaGFyRnJvbURpcmVjdGlvbik6
CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5saW5lVGV4dEJveDo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6bWlycm9yUlRMU2Vn
bWVudCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJsb2NrOjpjb25zdHJ1Y3RUZXh0UnVuKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRldGVybWlu
ZURpcmVjdGlvbmFsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6dGV4
dEFsaWdubWVudEZvckxpbmUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tG
bG93Ojp1cGRhdGVMb2dpY2FsV2lkdGhGb3JBbGlnbm1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyQmxvY2tGbG93OjpoYW5kbGVUcmFpbGluZ1NwYWNlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCbG9ja0Zsb3c6OmxheW91dFJ1bnNBbmRGbG9hdHNJblJhbmdlKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVJbmxp
bmVTdGF0aWNEaXN0YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVQ
b3NpdGlvbmVkTG9naWNhbFdpZHRoVXNpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWxXaWR0aFJlcGxhY2VkIGNvbnN0KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckRlcHJlY2F0ZWRGbGV4aWJsZUJveDo6YXBwbHlMaW5lQ2xhbXAp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGcmFnbWVudGVkRmxvdy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJGcmFnbWVudGVkRmxvdzo6dXBkYXRlTG9naWNhbFdpZHRoKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckZyYWdtZW50ZWRGbG93Ojp1cGRhdGVGcmFnbWVudHNGcmFn
bWVudGVkRmxvd1BvcnRpb25SZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllck1vZGVsT2JqZWN0
OjpzaG91bGRQbGFjZUJsb2NrRGlyZWN0aW9uU2Nyb2xsYmFyT25MZWZ0IGNvbnN0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyTWFycXVlZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJNYXJxdWVlOjpkaXJlY3Rpb24gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJN
ZW51TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNZW51TGlzdDo6YWRqdXN0SW5u
ZXJTdHlsZSk6CisgICAgICAgIChSZW5kZXJNZW51TGlzdDo6Y2xpZW50UGFkZGluZ0xlZnQgY29u
c3QpOgorICAgICAgICAoUmVuZGVyTWVudUxpc3Q6OmNsaWVudFBhZGRpbmdSaWdodCBjb25zdCk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGhlbWVJT1M6OnBvcHVwSW50ZXJuYWxQYWRkaW5nQm94IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lSU9TOjpwYWludE1lbnVMaXN0QnV0dG9uRGVjb3JhdGlv
bnMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRoZW1lTWFjOjpwYWludE1lbnVMaXN0QnV0dG9uRGVjb3JhdGlvbnMpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVNYWM6OnBvcHVwSW50ZXJuYWxQYWRkaW5nQm94
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lTWFjOjpzZXRQb3B1cEJ1dHRv
bkNlbGxTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6cGFpbnRTZWFy
Y2hGaWVsZENhbmNlbEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZU1hYzo6
cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24pOgorICAgICAgICAqIHJlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1M
QmxvY2s6Om1pcnJvcklmTmVlZGVkIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhN
TE9wZXJhdG9yOjpsYXlvdXRCbG9jayk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpSZW5kZXJTdHlsZSk6
CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTdHlsZTo6aXNMZWZ0VG9SaWdodERpcmVjdGlvbiBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6aW5pdGlhbERpcmVjdGlvbik6CisgICAgICAgICogdGVz
dGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsU2V0
dGluZ3M6OnN5c3RlbUxheW91dERpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5h
bFNldHRpbmdzOjpzZXRTeXN0ZW1MYXlvdXREaXJlY3Rpb24pOgorICAgICAgICAqIHRlc3Rpbmcv
SW50ZXJuYWxzLmg6CisKIDIwMTgtMDgtMDQgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgQWRkIENFUmVhY3Rpb25zPU5vdE5lZWRlZCBmb3IgcmVhY3Rpb25zIG9u
bHkgbmVlZGVkIGZvciBjdXN0b21pemVkIGJ1aWx0aW5zCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCShyZXZpc2lvbiAy
MzQ2MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogICAgIGNvbnN0
IFN0cmluZyYgdGFnKCkgY29uc3QgeyByZXR1cm4gbV90YWc7IH0KICAgICBjb25zdCBVUkwmIGlj
b24oKSBjb25zdCB7IHJldHVybiBtX2ljb247IH0KIAotICAgIFRleHREaXJlY3Rpb24gZGlyZWN0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9kaXJlY3Rpb24gPT0gRGlyZWN0aW9uOjpSdGwgPyBSVEwg
OiBMVFI7IH0KKyAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
ZGlyZWN0aW9uID09IERpcmVjdGlvbjo6UnRsID8gVGV4dERpcmVjdGlvbjo6UlRMIDogVGV4dERp
cmVjdGlvbjo6TFRSOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpc3BhdGNoQ2xpY2tF
dmVudCgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlzcGF0Y2hDbG9zZUV2ZW50KCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50
ZXJmYWNlVGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCShyZXZpc2lvbiAyMzQ2MTgp
CisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50
ZXJmYWNlVGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzNSw3ICszMzUsNyBAQCBzdGF0aWMg
aW50IG9mZnNldEFkanVzdG1lbnRGb3JMaXN0SXRlbShjCiAgICAgLy8gV2UgbmVlZCB0byBhZGp1
c3QgdGhlIG9mZnNldHMgZm9yIHRoZSBsaXN0IGl0ZW0gbWFya2VyIGluCiAgICAgLy8gTGVmdC1U
by1SaWdodCB0ZXh0LCBzaW5jZSB3ZSBleHBvc2UgaXQgdG9nZXRoZXIgd2l0aCB0aGUgdGV4dC4K
ICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gb2JqZWN0LT5yZW5kZXJlcigpOwotICAgIGlm
IChpczxSZW5kZXJMaXN0SXRlbT4ocmVuZGVyZXIpICYmIHJlbmRlcmVyLT5zdHlsZSgpLmRpcmVj
dGlvbigpID09IExUUikKKyAgICBpZiAoaXM8UmVuZGVyTGlzdEl0ZW0+KHJlbmRlcmVyKSAmJiBy
ZW5kZXJlci0+c3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpCiAgICAg
ICAgIHJldHVybiBkb3duY2FzdDxSZW5kZXJMaXN0SXRlbT4oKnJlbmRlcmVyKS5tYXJrZXJUZXh0
V2l0aFN1ZmZpeCgpLmxlbmd0aCgpOwogCiAgICAgcmV0dXJuIDA7CkBAIC00NjIsNyArNDYyLDcg
QEAgc3RhdGljIGdjaGFyKiB3ZWJraXRBY2Nlc3NpYmxlVGV4dEdldFRleAogICAgICAgICBSZW5k
ZXJPYmplY3QqIG9ialJlbmRlcmVyID0gY29yZU9iamVjdC0+cmVuZGVyZXIoKTsKICAgICAgICAg
aWYgKGlzPFJlbmRlckxpc3RJdGVtPihvYmpSZW5kZXJlcikpIHsKICAgICAgICAgICAgIFN0cmlu
ZyBtYXJrZXJUZXh0ID0gZG93bmNhc3Q8UmVuZGVyTGlzdEl0ZW0+KCpvYmpSZW5kZXJlcikubWFy
a2VyVGV4dFdpdGhTdWZmaXgoKTsKLSAgICAgICAgICAgIHJldCA9IG9ialJlbmRlcmVyLT5zdHls
ZSgpLmRpcmVjdGlvbigpID09IExUUiA/IG1hcmtlclRleHQgKyByZXQgOiByZXQgKyBtYXJrZXJU
ZXh0OworICAgICAgICAgICAgcmV0ID0gb2JqUmVuZGVyZXItPnN0eWxlKCkuZGlyZWN0aW9uKCkg
PT0gVGV4dERpcmVjdGlvbjo6TFRSID8gbWFya2VyVGV4dCArIHJldCA6IHJldCArIG1hcmtlclRl
eHQ7CiAgICAgICAgICAgICBpZiAoZW5kT2Zmc2V0ID09IC0xKQogICAgICAgICAgICAgICAgIGFj
dHVhbEVuZE9mZnNldCA9IHJldC5sZW5ndGgoKSArIG1hcmtlclRleHQubGVuZ3RoKCk7CiAgICAg
ICAgIH0KQEAgLTkwNSwxMSArOTA1LDExIEBAIHN0YXRpYyBjaGFyKiB3ZWJraXRBY2Nlc3NpYmxl
VGV4dExpbmVGb3IKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gY29yZU9iamVjdC0+cmVu
ZGVyZXIoKTsKICAgICBpZiAocmVuZGVyZXItPmlzTGlzdEl0ZW0oKSkgewogICAgICAgICAvLyBG
b3IgTGVmdC10by1SaWdodCwgdGhlIGxpc3QgaXRlbSBtYXJrZXIgaXMgYXQgdGhlIGJlZ2lubmlu
ZyBvZiB0aGUgZXhwb3NlZCB0ZXh0LgotICAgICAgICBpZiAocmVuZGVyZXItPnN0eWxlKCkuZGly
ZWN0aW9uKCkgPT0gTFRSICYmIGlzRmlyc3RWaXNpYmxlUG9zaXRpb25Jbk5vZGUoc2VsZWN0ZWRM
aW5lLnZpc2libGVTdGFydCgpLCBub2RlKSkKKyAgICAgICAgaWYgKHJlbmRlcmVyLT5zdHlsZSgp
LmRpcmVjdGlvbigpID09IFRleHREaXJlY3Rpb246OkxUUiAmJiBpc0ZpcnN0VmlzaWJsZVBvc2l0
aW9uSW5Ob2RlKHNlbGVjdGVkTGluZS52aXNpYmxlU3RhcnQoKSwgbm9kZSkpCiAgICAgICAgICAg
ICAqc3RhcnRPZmZzZXQgPSAwOwogCiAgICAgICAgIC8vIEZvciBSaWdodC10by1MZWZ0LCB0aGUg
bGlzdCBpdGVtIG1hcmtlciBpcyBhdCB0aGUgZW5kIG9mIHRoZSBleHBvc2VkIHRleHQuCi0gICAg
ICAgIGlmIChyZW5kZXJlci0+c3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBSVEwgJiYgaXNMYXN0Vmlz
aWJsZVBvc2l0aW9uSW5Ob2RlKHNlbGVjdGVkTGluZS52aXNpYmxlRW5kKCksIG5vZGUpKQorICAg
ICAgICBpZiAocmVuZGVyZXItPnN0eWxlKCkuZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6
UlRMICYmIGlzTGFzdFZpc2libGVQb3NpdGlvbkluTm9kZShzZWxlY3RlZExpbmUudmlzaWJsZUVu
ZCgpLCBub2RlKSkKICAgICAgICAgICAgICplbmRPZmZzZXQgPSBhY2Nlc3NpYmlsaXR5T2JqZWN0
TGVuZ3RoKGNvcmVPYmplY3QpOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NT
U1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCShyZXZpc2lvbiAyMzQ2MTgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMTUwLDEwICszMTUwLDEwIEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1MKIHsKICAgICBtX3ByaW1pdGl2ZVVuaXRUeXBlID0gQ1NTX1ZBTFVFX0lEOwogICAg
IHN3aXRjaCAoZSkgewotICAgIGNhc2UgTFRSOgorICAgIGNhc2UgVGV4dERpcmVjdGlvbjo6TFRS
OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUx0cjsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBSVEw6CisgICAgY2FzZSBUZXh0RGlyZWN0aW9uOjpSVEw6CiAgICAgICAgIG1f
dmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlUnRsOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0z
MTY1LDE1ICszMTY1LDE1IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpv
cGUKIAogICAgIHN3aXRjaCAobV92YWx1ZS52YWx1ZUlEKSB7CiAgICAgY2FzZSBDU1NWYWx1ZUx0
cjoKLSAgICAgICAgcmV0dXJuIExUUjsKKyAgICAgICAgcmV0dXJuIFRleHREaXJlY3Rpb246OkxU
UjsKICAgICBjYXNlIENTU1ZhbHVlUnRsOgotICAgICAgICByZXR1cm4gUlRMOworICAgICAgICBy
ZXR1cm4gVGV4dERpcmVjdGlvbjo6UlRMOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBMVFI7CisgICAg
cmV0dXJuIFRleHREaXJlY3Rpb246OkxUUjsKIH0KIAogdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFdyaXRpbmdNb2RlIGUpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvRWxlbWVudFJ1bGVDb2xsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAJKHJldmlzaW9uIDIzNDYx
OCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9FbGVtZW50UnVsZUNvbGxlY3Rvci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTUxOCw3ICs1MTgsNyBAQCB2b2lkIEVsZW1lbnRSdWxlQ29sbGVjdG9yOjpt
YXRjaEFsbFJ1bGVzCiAgICAgICAgICAgICBib29sIGlzQXV0bzsKICAgICAgICAgICAgIFRleHRE
aXJlY3Rpb24gdGV4dERpcmVjdGlvbiA9IGRvd25jYXN0PEhUTUxFbGVtZW50PihzdHlsZWRFbGVt
ZW50KS5kaXJlY3Rpb25hbGl0eUlmaGFzRGlyQXV0b0F0dHJpYnV0ZShpc0F1dG8pOwogICAgICAg
ICAgICAgaWYgKGlzQXV0bykKLSAgICAgICAgICAgICAgICBtX3Jlc3VsdC5hZGRNYXRjaGVkUHJv
cGVydGllcyh0ZXh0RGlyZWN0aW9uID09IExUUiA/IGxlZnRUb1JpZ2h0RGVjbGFyYXRpb24oKSA6
IHJpZ2h0VG9MZWZ0RGVjbGFyYXRpb24oKSk7CisgICAgICAgICAgICAgICAgbV9yZXN1bHQuYWRk
TWF0Y2hlZFByb3BlcnRpZXModGV4dERpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBs
ZWZ0VG9SaWdodERlY2xhcmF0aW9uKCkgOiByaWdodFRvTGVmdERlY2xhcmF0aW9uKCkpOwogICAg
ICAgICB9CiAgICAgfQogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lv
biAyMzQ2MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTE0LDcgKzE1MTQsNyBAQCB2b2lkIERvY3VtZW50Ojp1cGRhdGVUaXRsZUZyb21U
aXRsZUVsZW1lCiAgICAgICAgIHVwZGF0ZVRpdGxlKGRvd25jYXN0PEhUTUxUaXRsZUVsZW1lbnQ+
KCptX3RpdGxlRWxlbWVudCkudGV4dFdpdGhEaXJlY3Rpb24oKSk7CiAgICAgZWxzZSBpZiAoaXM8
U1ZHVGl0bGVFbGVtZW50PigqbV90aXRsZUVsZW1lbnQpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBE
b2VzIHRoZSBTVkcgdGl0bGUgZWxlbWVudCBoYXZlIGEgdGV4dCBkaXJlY3Rpb24/Ci0gICAgICAg
IHVwZGF0ZVRpdGxlKHsgZG93bmNhc3Q8U1ZHVGl0bGVFbGVtZW50PigqbV90aXRsZUVsZW1lbnQp
LnRleHRDb250ZW50KCksIExUUiB9KTsKKyAgICAgICAgdXBkYXRlVGl0bGUoeyBkb3duY2FzdDxT
VkdUaXRsZUVsZW1lbnQ+KCptX3RpdGxlRWxlbWVudCkudGV4dENvbnRlbnQoKSwgVGV4dERpcmVj
dGlvbjo6TFRSIH0pOwogICAgIH0KIH0KIApAQCAtMTU0Niw3ICsxNTQ2LDcgQEAgdm9pZCBEb2N1
bWVudDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nJiB0aQogICAgIGVsc2UgaWYgKGlzPFNWR1RpdGxl
RWxlbWVudD4obV90aXRsZUVsZW1lbnQuZ2V0KCkpKQogICAgICAgICBkb3duY2FzdDxTVkdUaXRs
ZUVsZW1lbnQ+KCptX3RpdGxlRWxlbWVudCkuc2V0VGV4dENvbnRlbnQodGl0bGUpOwogICAgIGVs
c2UKLSAgICAgICAgdXBkYXRlVGl0bGUoeyB0aXRsZSwgTFRSIH0pOworICAgICAgICB1cGRhdGVU
aXRsZSh7IHRpdGxlLCBUZXh0RGlyZWN0aW9uOjpMVFIgfSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVu
YW1lPiBzdHJ1Y3QgVGl0bGVUcmFpdHM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRp
b24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAJKHJl
dmlzaW9uIDIzNDYxOCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEzODgsMTAgKzEzODgsMTAgQEAgdm9pZCBQb3NpdGlvbjo6Z2V0SW5saW5l
Qm94QW5kT2Zmc2V0KEVBZgogVGV4dERpcmVjdGlvbiBQb3NpdGlvbjo6cHJpbWFyeURpcmVjdGlv
bigpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2FuY2hvck5vZGUtPnJlbmRlcmVyKCkpCi0gICAgICAg
IHJldHVybiBMVFI7CisgICAgICAgIHJldHVybiBUZXh0RGlyZWN0aW9uOjpMVFI7CiAgICAgaWYg
KGF1dG8qIGJsb2NrRmxvdyA9IGxpbmVhZ2VPZlR5cGU8UmVuZGVyQmxvY2tGbG93PigqbV9hbmNo
b3JOb2RlLT5yZW5kZXJlcigpKS5maXJzdCgpKQogICAgICAgICByZXR1cm4gYmxvY2tGbG93LT5z
dHlsZSgpLmRpcmVjdGlvbigpOwotICAgIHJldHVybiBMVFI7CisgICAgcmV0dXJuIFRleHREaXJl
Y3Rpb246OkxUUjsKIH0KIAogI2lmIEVOQUJMRShUUkVFX0RFQlVHR0lORykKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9t
L1JhbmdlLmNwcAkocmV2aXNpb24gMjM0NjE4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1Jhbmdl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQzMSw3ICsxNDMxLDcgQEAgaW50IFJhbmdlOjpjb2xs
ZWN0U2VsZWN0aW9uUmVjdHNXaXRob3V0VQogICAgICAgICBpZiAocmVjdHNbal0ubGluZU51bWJl
cigpICE9IHJlY3RzW2ogLSAxXS5saW5lTnVtYmVyKCkpCiAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgU2VsZWN0aW9uUmVjdCYgcHJldmlvdXNSZWN0ID0gcmVjdHNbaiAtIDFdOwotICAg
ICAgICBib29sIHByZXZpb3VzUmVjdE1heU5vdFJlYWNoUmlnaHRFZGdlID0gKHByZXZpb3VzUmVj
dC5kaXJlY3Rpb24oKSA9PSBMVFIgJiYgcHJldmlvdXNSZWN0LmNvbnRhaW5zRW5kKCkpIHx8IChw
cmV2aW91c1JlY3QuZGlyZWN0aW9uKCkgPT0gUlRMICYmIHByZXZpb3VzUmVjdC5jb250YWluc1N0
YXJ0KCkpOworICAgICAgICBib29sIHByZXZpb3VzUmVjdE1heU5vdFJlYWNoUmlnaHRFZGdlID0g
KHByZXZpb3VzUmVjdC5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgJiYgcHJldmlv
dXNSZWN0LmNvbnRhaW5zRW5kKCkpIHx8IChwcmV2aW91c1JlY3QuZGlyZWN0aW9uKCkgPT0gVGV4
dERpcmVjdGlvbjo6UlRMICYmIHByZXZpb3VzUmVjdC5jb250YWluc1N0YXJ0KCkpOwogICAgICAg
ICBpZiAocHJldmlvdXNSZWN0TWF5Tm90UmVhY2hSaWdodEVkZ2UpCiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgaW50IGFkanVzdGVkV2lkdGggPSByZWN0c1tqXS5sb2dpY2FsTGVmdCgp
IC0gcHJldmlvdXNSZWN0LmxvZ2ljYWxMZWZ0KCk7CkBAIC0xNDQ2LDEwICsxNDQ2LDEwIEBAIGlu
dCBSYW5nZTo6Y29sbGVjdFNlbGVjdGlvblJlY3RzV2l0aG91dFUKICAgICAgICAgU2VsZWN0aW9u
UmVjdCYgc2VsZWN0aW9uUmVjdCA9IHJlY3RzW2ldOwogICAgICAgICBpZiAoIXNlbGVjdGlvblJl
Y3QuaXNMaW5lQnJlYWsoKSAmJiBzZWxlY3Rpb25SZWN0LmxpbmVOdW1iZXIoKSA+PSBtYXhMaW5l
TnVtYmVyKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmIChzZWxlY3Rpb25SZWN0
LmRpcmVjdGlvbigpID09IFJUTCAmJiBzZWxlY3Rpb25SZWN0LmlzRmlyc3RPbkxpbmUoKSkgewor
ICAgICAgICBpZiAoc2VsZWN0aW9uUmVjdC5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpS
VEwgJiYgc2VsZWN0aW9uUmVjdC5pc0ZpcnN0T25MaW5lKCkpIHsKICAgICAgICAgICAgIHNlbGVj
dGlvblJlY3Quc2V0TG9naWNhbFdpZHRoKHNlbGVjdGlvblJlY3QubG9naWNhbFdpZHRoKCkgKyBz
ZWxlY3Rpb25SZWN0LmxvZ2ljYWxMZWZ0KCkgLSBzZWxlY3Rpb25SZWN0Lm1pblgoKSk7CiAgICAg
ICAgICAgICBzZWxlY3Rpb25SZWN0LnNldExvZ2ljYWxMZWZ0KHNlbGVjdGlvblJlY3QubWluWCgp
KTsKLSAgICAgICAgfSBlbHNlIGlmIChzZWxlY3Rpb25SZWN0LmRpcmVjdGlvbigpID09IExUUiAm
JiBzZWxlY3Rpb25SZWN0LmlzTGFzdE9uTGluZSgpKQorICAgICAgICB9IGVsc2UgaWYgKHNlbGVj
dGlvblJlY3QuZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSICYmIHNlbGVjdGlvblJl
Y3QuaXNMYXN0T25MaW5lKCkpCiAgICAgICAgICAgICBzZWxlY3Rpb25SZWN0LnNldExvZ2ljYWxX
aWR0aChzZWxlY3Rpb25SZWN0Lm1heFgoKSAtIHNlbGVjdGlvblJlY3QubG9naWNhbExlZnQoKSk7
CiAgICAgfQogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwCShyZXZpc2lv
biAyMzQ2MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNjIsMTAgKzM2MiwxMCBAQCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbk9mRW5j
bG9zaW5nQmxvY2soCiB7CiAgICAgYXV0byBibG9jayA9IGVuY2xvc2luZ0Jsb2NrKHBvc2l0aW9u
LmNvbnRhaW5lck5vZGUoKSk7CiAgICAgaWYgKCFibG9jaykKLSAgICAgICAgcmV0dXJuIExUUjsK
KyAgICAgICAgcmV0dXJuIFRleHREaXJlY3Rpb246OkxUUjsKICAgICBhdXRvIHJlbmRlcmVyID0g
YmxvY2stPnJlbmRlcmVyKCk7CiAgICAgaWYgKCFyZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIExU
UjsKKyAgICAgICAgcmV0dXJuIFRleHREaXJlY3Rpb246OkxUUjsKICAgICByZXR1cm4gcmVuZGVy
ZXItPnN0eWxlKCkuZGlyZWN0aW9uKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5jcHAJKHJldmlzaW9uIDIzNDYxOCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc2Miw5ICsxNzYyLDkgQEAgV3JpdGluZ0RpcmVjdGlv
biBFZGl0b3I6OmJhc2VXcml0aW5nRGlyZQogICAgIH0KIAogICAgIHN3aXRjaCAocmVuZGVyZXIt
PnN0eWxlKCkuZGlyZWN0aW9uKCkpIHsKLSAgICBjYXNlIExUUjoKKyAgICBjYXNlIFRleHREaXJl
Y3Rpb246OkxUUjoKICAgICAgICAgcmV0dXJuIExlZnRUb1JpZ2h0V3JpdGluZ0RpcmVjdGlvbjsK
LSAgICBjYXNlIFJUTDoKKyAgICBjYXNlIFRleHREaXJlY3Rpb246OlJUTDoKICAgICAgICAgcmV0
dXJuIFJpZ2h0VG9MZWZ0V3JpdGluZ0RpcmVjdGlvbjsKICAgICB9CiAgICAgCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAkocmV2aXNpb24gMjM0NjE4KQor
KysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTYzMyw3ICs2MzMsNyBAQCB2b2lkIEZyYW1lU2VsZWN0aW9uOjp3aWxsQmVNb2RpZmll
ZChFQWx0CiAgICAgfSBlbHNlIHsKICAgICAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKICAgICAg
ICAgY2FzZSBEaXJlY3Rpb25SaWdodDoKLSAgICAgICAgICAgIGlmIChkaXJlY3Rpb25PZlNlbGVj
dGlvbigpID09IExUUikKKyAgICAgICAgICAgIGlmIChkaXJlY3Rpb25PZlNlbGVjdGlvbigpID09
IFRleHREaXJlY3Rpb246OkxUUikKICAgICAgICAgICAgICAgICBiYXNlSXNTdGFydCA9IHRydWU7
CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgYmFzZUlzU3RhcnQgPSBmYWxzZTsK
QEAgLTY0Miw3ICs2NDIsNyBAQCB2b2lkIEZyYW1lU2VsZWN0aW9uOjp3aWxsQmVNb2RpZmllZChF
QWx0CiAgICAgICAgICAgICBiYXNlSXNTdGFydCA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBEaXJlY3Rpb25MZWZ0OgotICAgICAgICAgICAgaWYgKGRpcmVjdGlvbk9m
U2VsZWN0aW9uKCkgPT0gTFRSKQorICAgICAgICAgICAgaWYgKGRpcmVjdGlvbk9mU2VsZWN0aW9u
KCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSKQogICAgICAgICAgICAgICAgIGJhc2VJc1N0YXJ0ID0g
ZmFsc2U7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgYmFzZUlzU3RhcnQgPSB0
cnVlOwpAQCAtNzE4LDIzICs3MTgsMjMgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9u
Ojptb2RpZnlFeAogICAgIC8vIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gbW9kaWZ5RXh0ZW5kaW5n
UmlnaHQgYW5kIG1vZGlmeUV4dGVuZGluZ0ZvcndhcmQgaXM6CiAgICAgLy8gbW9kaWZ5RXh0ZW5k
aW5nRm9yd2FyZCBhbHdheXMgZXh0ZW5kcyBmb3J3YXJkIGxvZ2ljYWxseS4KICAgICAvLyBtb2Rp
ZnlFeHRlbmRpbmdSaWdodCBiZWhhdmVzIHRoZSBzYW1lIGFzIG1vZGlmeUV4dGVuZGluZ0Zvcndh
cmQgZXhjZXB0IGZvciBleHRlbmRpbmcgY2hhcmFjdGVyIG9yIHdvcmQsCi0gICAgLy8gaXQgZXh0
ZW5kcyBmb3J3YXJkIGxvZ2ljYWxseSBpZiB0aGUgZW5jbG9zaW5nIGJsb2NrIGlzIExUUiBkaXJl
Y3Rpb24sCi0gICAgLy8gYnV0IGl0IGV4dGVuZHMgYmFja3dhcmQgbG9naWNhbGx5IGlmIHRoZSBl
bmNsb3NpbmcgYmxvY2sgaXMgUlRMIGRpcmVjdGlvbi4KKyAgICAvLyBpdCBleHRlbmRzIGZvcndh
cmQgbG9naWNhbGx5IGlmIHRoZSBlbmNsb3NpbmcgYmxvY2sgaXMgVGV4dERpcmVjdGlvbjo6TFRS
LAorICAgIC8vIGJ1dCBpdCBleHRlbmRzIGJhY2t3YXJkIGxvZ2ljYWxseSBpZiB0aGUgZW5jbG9z
aW5nIGJsb2NrIGlzIFRleHREaXJlY3Rpb246OlJUTC4KICAgICBzd2l0Y2ggKGdyYW51bGFyaXR5
KSB7CiAgICAgY2FzZSBDaGFyYWN0ZXJHcmFudWxhcml0eToKLSAgICAgICAgaWYgKGRpcmVjdGlv
bk9mRW5jbG9zaW5nQmxvY2soKSA9PSBMVFIpCisgICAgICAgIGlmIChkaXJlY3Rpb25PZkVuY2xv
c2luZ0Jsb2NrKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSKQogICAgICAgICAgICAgcG9zID0gcG9z
Lm5leHQoQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkpOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICBwb3MgPSBwb3MucHJldmlvdXMoQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIFdvcmRHcmFudWxhcml0eToKLSAgICAgICAgaWYgKGRpcmVj
dGlvbk9mRW5jbG9zaW5nQmxvY2soKSA9PSBMVFIpCisgICAgICAgIGlmIChkaXJlY3Rpb25PZkVu
Y2xvc2luZ0Jsb2NrKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSKQogICAgICAgICAgICAgcG9zID0g
bmV4dFdvcmRQb3NpdGlvbkZvclBsYXRmb3JtKHBvcyk7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIHBvcyA9IHByZXZpb3VzV29yZFBvc2l0aW9uKHBvcyk7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgTGluZUJvdW5kYXJ5OgotICAgICAgICBpZiAoZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9j
aygpID09IExUUikKKyAgICAgICAgaWYgKGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2soKSA9PSBU
ZXh0RGlyZWN0aW9uOjpMVFIpCiAgICAgICAgICAgICBwb3MgPSBtb2RpZnlFeHRlbmRpbmdGb3J3
YXJkKGdyYW51bGFyaXR5KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcG9zID0gbW9kaWZ5
RXh0ZW5kaW5nQmFja3dhcmQoZ3JhbnVsYXJpdHkpOwpAQCAtNzUzLDcgKzc1Myw3IEBAIFZpc2li
bGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5RXgKICAgICAgICAgYnJlYWs7CiAgICAg
fQogI2lmIEVOQUJMRShVU0VSU0VMRUNUX0FMTCkKLSAgICBhZGp1c3RQb3NpdGlvbkZvclVzZXJT
ZWxlY3RBbGwocG9zLCBkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCkgPT0gTFRSKTsKKyAgICBh
ZGp1c3RQb3NpdGlvbkZvclVzZXJTZWxlY3RBbGwocG9zLCBkaXJlY3Rpb25PZkVuY2xvc2luZ0Js
b2NrKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSKTsKICNlbmRpZgogICAgIHJldHVybiBwb3M7CiB9
CkBAIC03OTgsNyArNzk4LDcgQEAgVmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2Rp
ZnlFeAogICAgICAgICBicmVhazsKICAgICB9CiAjaWYgRU5BQkxFKFVTRVJTRUxFQ1RfQUxMKQot
ICAgICBhZGp1c3RQb3NpdGlvbkZvclVzZXJTZWxlY3RBbGwocG9zLCBkaXJlY3Rpb25PZkVuY2xv
c2luZ0Jsb2NrKCkgPT0gTFRSKTsKKyAgICBhZGp1c3RQb3NpdGlvbkZvclVzZXJTZWxlY3RBbGwo
cG9zLCBkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSKTsK
ICNlbmRpZgogICAgIHJldHVybiBwb3M7CiB9CkBAIC04MTEsNyArODExLDcgQEAgVmlzaWJsZVBv
c2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlNbwogICAgIHN3aXRjaCAoZ3JhbnVsYXJpdHkp
IHsKICAgICBjYXNlIENoYXJhY3RlckdyYW51bGFyaXR5OgogICAgICAgICBpZiAoaXNSYW5nZSgp
KSB7Ci0gICAgICAgICAgICBpZiAoZGlyZWN0aW9uT2ZTZWxlY3Rpb24oKSA9PSBMVFIpCisgICAg
ICAgICAgICBpZiAoZGlyZWN0aW9uT2ZTZWxlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIp
CiAgICAgICAgICAgICAgICAgcG9zID0gVmlzaWJsZVBvc2l0aW9uKG1fc2VsZWN0aW9uLmVuZCgp
LCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAg
ICAgICBwb3MgPSBWaXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24uc3RhcnQoKSwgbV9zZWxlY3Rp
b24uYWZmaW5pdHkoKSk7CkBAIC05MzUsMjMgKzkzNSwyMyBAQCBWaXNpYmxlUG9zaXRpb24gRnJh
bWVTZWxlY3Rpb246Om1vZGlmeUV4CiAgICAgLy8gVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBtb2Rp
ZnlFeHRlbmRpbmdMZWZ0IGFuZCBtb2RpZnlFeHRlbmRpbmdCYWNrd2FyZCBpczoKICAgICAvLyBt
b2RpZnlFeHRlbmRpbmdCYWNrd2FyZCBhbHdheXMgZXh0ZW5kcyBiYWNrd2FyZCBsb2dpY2FsbHku
CiAgICAgLy8gbW9kaWZ5RXh0ZW5kaW5nTGVmdCBiZWhhdmVzIHRoZSBzYW1lIGFzIG1vZGlmeUV4
dGVuZGluZ0JhY2t3YXJkIGV4Y2VwdCBmb3IgZXh0ZW5kaW5nIGNoYXJhY3RlciBvciB3b3JkLAot
ICAgIC8vIGl0IGV4dGVuZHMgYmFja3dhcmQgbG9naWNhbGx5IGlmIHRoZSBlbmNsb3NpbmcgYmxv
Y2sgaXMgTFRSIGRpcmVjdGlvbiwKLSAgICAvLyBidXQgaXQgZXh0ZW5kcyBmb3J3YXJkIGxvZ2lj
YWxseSBpZiB0aGUgZW5jbG9zaW5nIGJsb2NrIGlzIFJUTCBkaXJlY3Rpb24uCisgICAgLy8gaXQg
ZXh0ZW5kcyBiYWNrd2FyZCBsb2dpY2FsbHkgaWYgdGhlIGVuY2xvc2luZyBibG9jayBpcyBUZXh0
RGlyZWN0aW9uOjpMVFIsCisgICAgLy8gYnV0IGl0IGV4dGVuZHMgZm9yd2FyZCBsb2dpY2FsbHkg
aWYgdGhlIGVuY2xvc2luZyBibG9jayBpcyBUZXh0RGlyZWN0aW9uOjpSVEwuCiAgICAgc3dpdGNo
IChncmFudWxhcml0eSkgewogICAgIGNhc2UgQ2hhcmFjdGVyR3JhbnVsYXJpdHk6Ci0gICAgICAg
IGlmIChkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCkgPT0gTFRSKQorICAgICAgICBpZiAoZGly
ZWN0aW9uT2ZFbmNsb3NpbmdCbG9jaygpID09IFRleHREaXJlY3Rpb246OkxUUikKICAgICAgICAg
ICAgIHBvcyA9IHBvcy5wcmV2aW91cyhDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSk7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIHBvcyA9IHBvcy5uZXh0KENhbm5vdENyb3NzRWRpdGluZ0Jv
dW5kYXJ5KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXb3JkR3JhbnVsYXJpdHk6Ci0gICAg
ICAgIGlmIChkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCkgPT0gTFRSKQorICAgICAgICBpZiAo
ZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9jaygpID09IFRleHREaXJlY3Rpb246OkxUUikKICAgICAg
ICAgICAgIHBvcyA9IHByZXZpb3VzV29yZFBvc2l0aW9uKHBvcyk7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIHBvcyA9IG5leHRXb3JkUG9zaXRpb25Gb3JQbGF0Zm9ybShwb3MpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIExpbmVCb3VuZGFyeToKLSAgICAgICAgaWYgKGRpcmVjdGlvbk9m
RW5jbG9zaW5nQmxvY2soKSA9PSBMVFIpCisgICAgICAgIGlmIChkaXJlY3Rpb25PZkVuY2xvc2lu
Z0Jsb2NrKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSKQogICAgICAgICAgICAgcG9zID0gbW9kaWZ5
RXh0ZW5kaW5nQmFja3dhcmQoZ3JhbnVsYXJpdHkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBwb3MgPSBtb2RpZnlFeHRlbmRpbmdGb3J3YXJkKGdyYW51bGFyaXR5KTsKQEAgLTk2OSw3ICs5
NjksNyBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWVTZWxlY3Rpb246Om1vZGlmeUV4CiAgICAgICAg
IGJyZWFrOwogICAgIH0KICNpZiBFTkFCTEUoVVNFUlNFTEVDVF9BTEwpCi0gICAgYWRqdXN0UG9z
aXRpb25Gb3JVc2VyU2VsZWN0QWxsKHBvcywgIShkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCkg
PT0gTFRSKSk7CisgICAgYWRqdXN0UG9zaXRpb25Gb3JVc2VyU2VsZWN0QWxsKHBvcywgIShkaXJl
Y3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSKSk7CiAjZW5kaWYK
ICAgICByZXR1cm4gcG9zOwogfQpAQCAtMTAxOSw3ICsxMDE5LDcgQEAgVmlzaWJsZVBvc2l0aW9u
IEZyYW1lU2VsZWN0aW9uOjptb2RpZnlFeAogICAgICAgICBicmVhazsKICAgICB9CiAjaWYgRU5B
QkxFKFVTRVJTRUxFQ1RfQUxMKQotICAgIGFkanVzdFBvc2l0aW9uRm9yVXNlclNlbGVjdEFsbChw
b3MsICEoZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9jaygpID09IExUUikpOworICAgIGFkanVzdFBv
c2l0aW9uRm9yVXNlclNlbGVjdEFsbChwb3MsICEoZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9jaygp
ID09IFRleHREaXJlY3Rpb246OkxUUikpOwogI2VuZGlmCiAgICAgcmV0dXJuIHBvczsKIH0KQEAg
LTEwMzIsNyArMTAzMiw3IEBAIFZpc2libGVQb3NpdGlvbiBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5
TW8KICAgICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7CiAgICAgY2FzZSBDaGFyYWN0ZXJHcmFudWxh
cml0eToKICAgICAgICAgaWYgKGlzUmFuZ2UoKSkKLSAgICAgICAgICAgIGlmIChkaXJlY3Rpb25P
ZlNlbGVjdGlvbigpID09IExUUikKKyAgICAgICAgICAgIGlmIChkaXJlY3Rpb25PZlNlbGVjdGlv
bigpID09IFRleHREaXJlY3Rpb246OkxUUikKICAgICAgICAgICAgICAgICBwb3MgPSBWaXNpYmxl
UG9zaXRpb24obV9zZWxlY3Rpb24uc3RhcnQoKSwgbV9zZWxlY3Rpb24uYWZmaW5pdHkoKSk7CiAg
ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgcG9zID0gVmlzaWJsZVBvc2l0aW9uKG1f
c2VsZWN0aW9uLmVuZCgpLCBtX3NlbGVjdGlvbi5hZmZpbml0eSgpKTsKQEAgLTExNTQsNyArMTE1
NCw3IEBAIEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50IEZyYW1lU2VsZWN0aW9uOjoKICAgICBib29s
IGZsaXAgPSBmYWxzZTsKICAgICBpZiAoYWx0ZXIgPT0gRnJhbWVTZWxlY3Rpb246OkFsdGVyYXRp
b25Nb3ZlKSB7CiAgICAgICAgIGludGVudC50eXBlID0gQVhUZXh0U3RhdGVDaGFuZ2VUeXBlU2Vs
ZWN0aW9uTW92ZTsKLSAgICAgICAgZmxpcCA9IGlzUmFuZ2UoKSAmJiBkaXJlY3Rpb25PZlNlbGVj
dGlvbigpID09IFJUTDsKKyAgICAgICAgZmxpcCA9IGlzUmFuZ2UoKSAmJiBkaXJlY3Rpb25PZlNl
bGVjdGlvbigpID09IFRleHREaXJlY3Rpb246OlJUTDsKICAgICB9IGVsc2UKICAgICAgICAgaW50
ZW50LnR5cGUgPSBBWFRleHRTdGF0ZUNoYW5nZVR5cGVTZWxlY3Rpb25FeHRlbmQ7CiAgICAgc3dp
dGNoIChncmFudWxhcml0eSkgewpAQCAtMTM3NSw3ICsxMzc1LDcgQEAgYm9vbCBGcmFtZVNlbGVj
dGlvbjo6bW9kaWZ5KEVBbHRlcmF0aW9uIAogICAgICAgICAgICAgc2V0RXh0ZW50KHBvc2l0aW9u
LCB1c2VyVHJpZ2dlcmVkKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBUZXh0RGlyZWN0
aW9uIHRleHREaXJlY3Rpb24gPSBkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKCk7Ci0gICAgICAg
ICAgICBpZiAoZGlyZWN0aW9uID09IERpcmVjdGlvbkZvcndhcmQgfHwgKHRleHREaXJlY3Rpb24g
PT0gTFRSICYmIGRpcmVjdGlvbiA9PSBEaXJlY3Rpb25SaWdodCkgfHwgKHRleHREaXJlY3Rpb24g
PT0gUlRMICYmIGRpcmVjdGlvbiA9PSBEaXJlY3Rpb25MZWZ0KSkKKyAgICAgICAgICAgIGlmIChk
aXJlY3Rpb24gPT0gRGlyZWN0aW9uRm9yd2FyZCB8fCAodGV4dERpcmVjdGlvbiA9PSBUZXh0RGly
ZWN0aW9uOjpMVFIgJiYgZGlyZWN0aW9uID09IERpcmVjdGlvblJpZ2h0KSB8fCAodGV4dERpcmVj
dGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpSVEwgJiYgZGlyZWN0aW9uID09IERpcmVjdGlvbkxlZnQp
KQogICAgICAgICAgICAgICAgIHNldEVuZChwb3NpdGlvbiwgdXNlclRyaWdnZXJlZCk7CiAgICAg
ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgc2V0U3RhcnQocG9zaXRpb24sIHVzZXJUcmln
Z2VyZWQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9zaXRpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmNw
cAkocmV2aXNpb24gMjM0NjE4KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlUG9z
aXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsNyArMTI3LDcgQEAgUG9zaXRpb24gVmlz
aWJsZVBvc2l0aW9uOjpsZWZ0VmlzdWFsbHlEaQogICAgICAgICBpbnQgb2Zmc2V0OwogICAgICAg
ICBwLmdldElubGluZUJveEFuZE9mZnNldChtX2FmZmluaXR5LCBwcmltYXJ5RGlyZWN0aW9uLCBi
b3gsIG9mZnNldCk7CiAgICAgICAgIGlmICghYm94KQotICAgICAgICAgICAgcmV0dXJuIHByaW1h
cnlEaXJlY3Rpb24gPT0gTFRSID8gcHJldmlvdXNWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1f
ZGVlcFBvc2l0aW9uKSA6IG5leHRWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0
aW9uKTsKKyAgICAgICAgICAgIHJldHVybiBwcmltYXJ5RGlyZWN0aW9uID09IFRleHREaXJlY3Rp
b246OkxUUiA/IHByZXZpb3VzVmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZShtX2RlZXBQb3NpdGlv
bikgOiBuZXh0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZShtX2RlZXBQb3NpdGlvbik7CiAKICAg
ICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9ICZib3gtPnJlbmRlcmVyKCk7CiAKQEAgLTEz
OCw3ICsxMzgsNyBAQCBQb3NpdGlvbiBWaXNpYmxlUG9zaXRpb246OmxlZnRWaXN1YWxseURpCiAg
ICAgICAgICAgICBpZiAoIXJlbmRlcmVyLT5ub2RlKCkpIHsKICAgICAgICAgICAgICAgICBib3gg
PSBib3gtPnByZXZMZWFmQ2hpbGQoKTsKICAgICAgICAgICAgICAgICBpZiAoIWJveCkKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHByaW1hcnlEaXJlY3Rpb24gPT0gTFRSID8gcHJldmlvdXNW
aXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9uKSA6IG5leHRWaXN1YWxseURp
c3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHByaW1hcnlEaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gcHJldmlvdXNWaXN1
YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9uKSA6IG5leHRWaXN1YWxseURpc3Rp
bmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9uKTsKICAgICAgICAgICAgICAgICByZW5kZXJlciA9
ICZib3gtPnJlbmRlcmVyKCk7CiAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gYm94LT5jYXJldFJp
Z2h0bW9zdE9mZnNldCgpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTU2LDcgKzE1
Niw3IEBAIFBvc2l0aW9uIFZpc2libGVQb3NpdGlvbjo6bGVmdFZpc3VhbGx5RGkKICAgICAgICAg
ICAgICAgICAvLyBPdmVyc2hvdCB0byB0aGUgbGVmdC4KICAgICAgICAgICAgICAgICBJbmxpbmVC
b3gqIHByZXZCb3ggPSBib3gtPnByZXZMZWFmQ2hpbGRJZ25vcmluZ0xpbmVCcmVhaygpOwogICAg
ICAgICAgICAgICAgIGlmICghcHJldkJveCkgewotICAgICAgICAgICAgICAgICAgICBQb3NpdGlv
biBwb3NpdGlvbk9uTGVmdCA9IHByaW1hcnlEaXJlY3Rpb24gPT0gTFRSID8gcHJldmlvdXNWaXN1
YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9uKSA6IG5leHRWaXN1YWxseURpc3Rp
bmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgUG9zaXRp
b24gcG9zaXRpb25PbkxlZnQgPSBwcmltYXJ5RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxU
UiA/IHByZXZpb3VzVmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZShtX2RlZXBQb3NpdGlvbikgOiBu
ZXh0VmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZShtX2RlZXBQb3NpdGlvbik7CiAgICAgICAgICAg
ICAgICAgICAgIGlmIChwb3NpdGlvbk9uTGVmdC5pc051bGwoKSkKICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBQb3NpdGlvbigpOwogCkBAIC0xODMsMTAgKzE4MywxMCBAQCBQb3NpdGlv
biBWaXNpYmxlUG9zaXRpb246OmxlZnRWaXN1YWxseURpCiAgICAgICAgICAgICBpZiAoYm94LT5k
aXJlY3Rpb24oKSA9PSBwcmltYXJ5RGlyZWN0aW9uKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFw
cmV2Qm94KSB7CiAgICAgICAgICAgICAgICAgICAgIElubGluZUJveCogbG9naWNhbFN0YXJ0ID0g
bnVsbHB0cjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHByaW1hcnlEaXJlY3Rpb24gPT0gTFRS
ID8gYm94LT5yb290KCkuZ2V0TG9naWNhbFN0YXJ0Qm94V2l0aE5vZGUobG9naWNhbFN0YXJ0KSA6
IGJveC0+cm9vdCgpLmdldExvZ2ljYWxFbmRCb3hXaXRoTm9kZShsb2dpY2FsU3RhcnQpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChwcmltYXJ5RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246
OkxUUiA/IGJveC0+cm9vdCgpLmdldExvZ2ljYWxTdGFydEJveFdpdGhOb2RlKGxvZ2ljYWxTdGFy
dCkgOiBib3gtPnJvb3QoKS5nZXRMb2dpY2FsRW5kQm94V2l0aE5vZGUobG9naWNhbFN0YXJ0KSkg
ewogICAgICAgICAgICAgICAgICAgICAgICAgYm94ID0gbG9naWNhbFN0YXJ0OwogICAgICAgICAg
ICAgICAgICAgICAgICAgcmVuZGVyZXIgPSAmYm94LT5yZW5kZXJlcigpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgb2Zmc2V0ID0gcHJpbWFyeURpcmVjdGlvbiA9PSBMVFIgPyBib3gtPmNhcmV0
TWluT2Zmc2V0KCkgOiBib3gtPmNhcmV0TWF4T2Zmc2V0KCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBvZmZzZXQgPSBwcmltYXJ5RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUiA/IGJv
eC0+Y2FyZXRNaW5PZmZzZXQoKSA6IGJveC0+Y2FyZXRNYXhPZmZzZXQoKTsKICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9
CkBAIC0yNDcsNyArMjQ3LDcgQEAgUG9zaXRpb24gVmlzaWJsZVBvc2l0aW9uOjpsZWZ0VmlzdWFs
bHlEaQogICAgICAgICAgICAgICAgICAgICBsZXZlbCA9IGJveC0+YmlkaUxldmVsKCk7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHJlbmRlcmVyID0gJmJveC0+cmVuZGVyZXIo
KTsKLSAgICAgICAgICAgICAgICBvZmZzZXQgPSBwcmltYXJ5RGlyZWN0aW9uID09IExUUiA/IGJv
eC0+Y2FyZXRNaW5PZmZzZXQoKSA6IGJveC0+Y2FyZXRNYXhPZmZzZXQoKTsKKyAgICAgICAgICAg
ICAgICBvZmZzZXQgPSBwcmltYXJ5RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUiA/IGJv
eC0+Y2FyZXRNaW5PZmZzZXQoKSA6IGJveC0+Y2FyZXRNYXhPZmZzZXQoKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0yOTcsNyArMjk3LDcgQEAgUG9z
aXRpb24gVmlzaWJsZVBvc2l0aW9uOjpyaWdodFZpc3VhbGx5RAogICAgICAgICBpbnQgb2Zmc2V0
OwogICAgICAgICBwLmdldElubGluZUJveEFuZE9mZnNldChtX2FmZmluaXR5LCBwcmltYXJ5RGly
ZWN0aW9uLCBib3gsIG9mZnNldCk7CiAgICAgICAgIGlmICghYm94KQotICAgICAgICAgICAgcmV0
dXJuIHByaW1hcnlEaXJlY3Rpb24gPT0gTFRSID8gbmV4dFZpc3VhbGx5RGlzdGluY3RDYW5kaWRh
dGUobV9kZWVwUG9zaXRpb24pIDogcHJldmlvdXNWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1f
ZGVlcFBvc2l0aW9uKTsKKyAgICAgICAgICAgIHJldHVybiBwcmltYXJ5RGlyZWN0aW9uID09IFRl
eHREaXJlY3Rpb246OkxUUiA/IG5leHRWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBv
c2l0aW9uKSA6IHByZXZpb3VzVmlzdWFsbHlEaXN0aW5jdENhbmRpZGF0ZShtX2RlZXBQb3NpdGlv
bik7CiAKICAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9ICZib3gtPnJlbmRlcmVyKCk7
CiAKQEAgLTMwOCw3ICszMDgsNyBAQCBQb3NpdGlvbiBWaXNpYmxlUG9zaXRpb246OnJpZ2h0Vmlz
dWFsbHlECiAgICAgICAgICAgICBpZiAoIXJlbmRlcmVyLT5ub2RlKCkpIHsKICAgICAgICAgICAg
ICAgICBib3ggPSBib3gtPm5leHRMZWFmQ2hpbGQoKTsKICAgICAgICAgICAgICAgICBpZiAoIWJv
eCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByaW1hcnlEaXJlY3Rpb24gPT0gTFRSID8g
bmV4dFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUobV9kZWVwUG9zaXRpb24pIDogcHJldmlvdXNW
aXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9uKTsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHByaW1hcnlEaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gbmV4
dFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUobV9kZWVwUG9zaXRpb24pIDogcHJldmlvdXNWaXN1
YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9uKTsKICAgICAgICAgICAgICAgICBy
ZW5kZXJlciA9ICZib3gtPnJlbmRlcmVyKCk7CiAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gYm94
LT5jYXJldExlZnRtb3N0T2Zmc2V0KCk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0z
MjYsNyArMzI2LDcgQEAgUG9zaXRpb24gVmlzaWJsZVBvc2l0aW9uOjpyaWdodFZpc3VhbGx5RAog
ICAgICAgICAgICAgICAgIC8vIE92ZXJzaG90IHRvIHRoZSByaWdodC4KICAgICAgICAgICAgICAg
ICBJbmxpbmVCb3gqIG5leHRCb3ggPSBib3gtPm5leHRMZWFmQ2hpbGRJZ25vcmluZ0xpbmVCcmVh
aygpOwogICAgICAgICAgICAgICAgIGlmICghbmV4dEJveCkgewotICAgICAgICAgICAgICAgICAg
ICBQb3NpdGlvbiBwb3NpdGlvbk9uUmlnaHQgPSBwcmltYXJ5RGlyZWN0aW9uID09IExUUiA/IG5l
eHRWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9uKSA6IHByZXZpb3VzVmlz
dWFsbHlEaXN0aW5jdENhbmRpZGF0ZShtX2RlZXBQb3NpdGlvbik7CisgICAgICAgICAgICAgICAg
ICAgIFBvc2l0aW9uIHBvc2l0aW9uT25SaWdodCA9IHByaW1hcnlEaXJlY3Rpb24gPT0gVGV4dERp
cmVjdGlvbjo6TFRSID8gbmV4dFZpc3VhbGx5RGlzdGluY3RDYW5kaWRhdGUobV9kZWVwUG9zaXRp
b24pIDogcHJldmlvdXNWaXN1YWxseURpc3RpbmN0Q2FuZGlkYXRlKG1fZGVlcFBvc2l0aW9uKTsK
ICAgICAgICAgICAgICAgICAgICAgaWYgKHBvc2l0aW9uT25SaWdodC5pc051bGwoKSkKICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBQb3NpdGlvbigpOwogCkBAIC0zNTMsMTAgKzM1Mywx
MCBAQCBQb3NpdGlvbiBWaXNpYmxlUG9zaXRpb246OnJpZ2h0VmlzdWFsbHlECiAgICAgICAgICAg
ICBpZiAoYm94LT5kaXJlY3Rpb24oKSA9PSBwcmltYXJ5RGlyZWN0aW9uKSB7CiAgICAgICAgICAg
ICAgICAgaWYgKCFuZXh0Qm94KSB7CiAgICAgICAgICAgICAgICAgICAgIElubGluZUJveCogbG9n
aWNhbEVuZCA9IG51bGxwdHI7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwcmltYXJ5RGlyZWN0
aW9uID09IExUUiA/IGJveC0+cm9vdCgpLmdldExvZ2ljYWxFbmRCb3hXaXRoTm9kZShsb2dpY2Fs
RW5kKSA6IGJveC0+cm9vdCgpLmdldExvZ2ljYWxTdGFydEJveFdpdGhOb2RlKGxvZ2ljYWxFbmQp
KSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChwcmltYXJ5RGlyZWN0aW9uID09IFRleHREaXJl
Y3Rpb246OkxUUiA/IGJveC0+cm9vdCgpLmdldExvZ2ljYWxFbmRCb3hXaXRoTm9kZShsb2dpY2Fs
RW5kKSA6IGJveC0+cm9vdCgpLmdldExvZ2ljYWxTdGFydEJveFdpdGhOb2RlKGxvZ2ljYWxFbmQp
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBib3ggPSBsb2dpY2FsRW5kOwogICAgICAgICAg
ICAgICAgICAgICAgICAgcmVuZGVyZXIgPSAmYm94LT5yZW5kZXJlcigpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgb2Zmc2V0ID0gcHJpbWFyeURpcmVjdGlvbiA9PSBMVFIgPyBib3gtPmNhcmV0
TWF4T2Zmc2V0KCkgOiBib3gtPmNhcmV0TWluT2Zmc2V0KCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBvZmZzZXQgPSBwcmltYXJ5RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUiA/IGJv
eC0+Y2FyZXRNYXhPZmZzZXQoKSA6IGJveC0+Y2FyZXRNaW5PZmZzZXQoKTsKICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9
CkBAIC00MjAsNyArNDIwLDcgQEAgUG9zaXRpb24gVmlzaWJsZVBvc2l0aW9uOjpyaWdodFZpc3Vh
bGx5RAogICAgICAgICAgICAgICAgICAgICBsZXZlbCA9IGJveC0+YmlkaUxldmVsKCk7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHJlbmRlcmVyID0gJmJveC0+cmVuZGVyZXIo
KTsKLSAgICAgICAgICAgICAgICBvZmZzZXQgPSBwcmltYXJ5RGlyZWN0aW9uID09IExUUiA/IGJv
eC0+Y2FyZXRNYXhPZmZzZXQoKSA6IGJveC0+Y2FyZXRNaW5PZmZzZXQoKTsKKyAgICAgICAgICAg
ICAgICBvZmZzZXQgPSBwcmltYXJ5RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUiA/IGJv
eC0+Y2FyZXRNYXhPZmZzZXQoKSA6IGJveC0+Y2FyZXRNaW5PZmZzZXQoKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1Zpc2libGVVbml0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRp
dGluZy9WaXNpYmxlVW5pdHMuY3BwCShyZXZpc2lvbiAyMzQ2MTgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwOCw3ICs0MDgs
NyBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIHZpc3VhbFdvcmRQb3NpdGlvCiAKICAgICAgICAg
Ym9vbCBpc1dvcmRCcmVhazsKICAgICAgICAgYm9vbCBib3hIYXNTYW1lRGlyZWN0aW9uYWxpdHlB
c0Jsb2NrID0gYm94LT5kaXJlY3Rpb24oKSA9PSBibG9ja0RpcmVjdGlvbjsKLSAgICAgICAgYm9v
bCBtb3ZpbmdCYWNrd2FyZCA9IChkaXJlY3Rpb24gPT0gTW92ZUxlZnQgJiYgYm94LT5kaXJlY3Rp
b24oKSA9PSBMVFIpIHx8IChkaXJlY3Rpb24gPT0gTW92ZVJpZ2h0ICYmIGJveC0+ZGlyZWN0aW9u
KCkgPT0gUlRMKTsKKyAgICAgICAgYm9vbCBtb3ZpbmdCYWNrd2FyZCA9IChkaXJlY3Rpb24gPT0g
TW92ZUxlZnQgJiYgYm94LT5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpIHx8IChk
aXJlY3Rpb24gPT0gTW92ZVJpZ2h0ICYmIGJveC0+ZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlv
bjo6UlRMKTsKICAgICAgICAgaWYgKChza2lwc1NwYWNlV2hlbk1vdmluZ1JpZ2h0ICYmIGJveEhh
c1NhbWVEaXJlY3Rpb25hbGl0eUFzQmxvY2spCiAgICAgICAgICAgICB8fCAoIXNraXBzU3BhY2VX
aGVuTW92aW5nUmlnaHQgJiYgbW92aW5nQmFja3dhcmQpKSB7CiAgICAgICAgICAgICBib29sIGxv
Z2ljYWxTdGFydEluUmVuZGVyZXIgPSBvZmZzZXRJbkJveCA9PSBzdGF0aWNfY2FzdDxpbnQ+KHRl
eHRCb3guc3RhcnQoKSkgJiYgcHJldmlvdXNCb3hJbkRpZmZlcmVudExpbmU7CkBAIC00MzksNyAr
NDM5LDcgQEAgVmlzaWJsZVBvc2l0aW9uIGxlZnRXb3JkUG9zaXRpb24oY29uc3QgVgogICAgIC8v
IEZJWE1FOiBIb3cgc2hvdWxkIHdlIGhhbmRsZSBhIG5vbi1lZGl0YWJsZSBwb3NpdGlvbj8KICAg
ICBpZiAobGVmdFdvcmRCcmVhay5pc051bGwoKSAmJiBpc0VkaXRhYmxlUG9zaXRpb24odmlzaWJs
ZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCkpKSB7CiAgICAgICAgIFRleHREaXJlY3Rpb24gYmxv
Y2tEaXJlY3Rpb24gPSBkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKHZpc2libGVQb3NpdGlvbi5k
ZWVwRXF1aXZhbGVudCgpKTsKLSAgICAgICAgbGVmdFdvcmRCcmVhayA9IGJsb2NrRGlyZWN0aW9u
ID09IExUUiA/IHN0YXJ0T2ZFZGl0YWJsZUNvbnRlbnQodmlzaWJsZVBvc2l0aW9uKSA6IGVuZE9m
RWRpdGFibGVDb250ZW50KHZpc2libGVQb3NpdGlvbik7CisgICAgICAgIGxlZnRXb3JkQnJlYWsg
PSBibG9ja0RpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBzdGFydE9mRWRpdGFibGVD
b250ZW50KHZpc2libGVQb3NpdGlvbikgOiBlbmRPZkVkaXRhYmxlQ29udGVudCh2aXNpYmxlUG9z
aXRpb24pOwogICAgIH0KICAgICByZXR1cm4gbGVmdFdvcmRCcmVhazsKIH0KQEAgLTQ1Miw3ICs0
NTIsNyBAQCBWaXNpYmxlUG9zaXRpb24gcmlnaHRXb3JkUG9zaXRpb24oY29uc3QgCiAgICAgLy8g
RklYTUU6IEhvdyBzaG91bGQgd2UgaGFuZGxlIGEgbm9uLWVkaXRhYmxlIHBvc2l0aW9uPwogICAg
IGlmIChyaWdodFdvcmRCcmVhay5pc051bGwoKSAmJiBpc0VkaXRhYmxlUG9zaXRpb24odmlzaWJs
ZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCkpKSB7CiAgICAgICAgIFRleHREaXJlY3Rpb24gYmxv
Y2tEaXJlY3Rpb24gPSBkaXJlY3Rpb25PZkVuY2xvc2luZ0Jsb2NrKHZpc2libGVQb3NpdGlvbi5k
ZWVwRXF1aXZhbGVudCgpKTsKLSAgICAgICAgcmlnaHRXb3JkQnJlYWsgPSBibG9ja0RpcmVjdGlv
biA9PSBMVFIgPyBlbmRPZkVkaXRhYmxlQ29udGVudCh2aXNpYmxlUG9zaXRpb24pIDogc3RhcnRP
ZkVkaXRhYmxlQ29udGVudCh2aXNpYmxlUG9zaXRpb24pOworICAgICAgICByaWdodFdvcmRCcmVh
ayA9IGJsb2NrRGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUiA/IGVuZE9mRWRpdGFibGVD
b250ZW50KHZpc2libGVQb3NpdGlvbikgOiBzdGFydE9mRWRpdGFibGVDb250ZW50KHZpc2libGVQ
b3NpdGlvbik7CiAgICAgfQogICAgIHJldHVybiByaWdodFdvcmRCcmVhazsKIH0KQEAgLTE1Mjks
MTIgKzE1MjksMTIgQEAgYm9vbCBpc0VuZE9mRWRpdGFibGVPck5vbkVkaXRhYmxlQ29udGVudAog
CiBWaXNpYmxlUG9zaXRpb24gbGVmdEJvdW5kYXJ5T2ZMaW5lKGNvbnN0IFZpc2libGVQb3NpdGlv
biYgYywgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24sIGJvb2wqIHJlYWNoZWRCb3VuZGFyeSkKIHsK
LSAgICByZXR1cm4gZGlyZWN0aW9uID09IExUUiA/IGxvZ2ljYWxTdGFydE9mTGluZShjLCByZWFj
aGVkQm91bmRhcnkpIDogbG9naWNhbEVuZE9mTGluZShjLCByZWFjaGVkQm91bmRhcnkpOworICAg
IHJldHVybiBkaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gbG9naWNhbFN0YXJ0T2ZM
aW5lKGMsIHJlYWNoZWRCb3VuZGFyeSkgOiBsb2dpY2FsRW5kT2ZMaW5lKGMsIHJlYWNoZWRCb3Vu
ZGFyeSk7CiB9CiAKIFZpc2libGVQb3NpdGlvbiByaWdodEJvdW5kYXJ5T2ZMaW5lKGNvbnN0IFZp
c2libGVQb3NpdGlvbiYgYywgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24sIGJvb2wqIHJlYWNoZWRC
b3VuZGFyeSkKIHsKLSAgICByZXR1cm4gZGlyZWN0aW9uID09IExUUiA/IGxvZ2ljYWxFbmRPZkxp
bmUoYywgcmVhY2hlZEJvdW5kYXJ5KSA6IGxvZ2ljYWxTdGFydE9mTGluZShjLCByZWFjaGVkQm91
bmRhcnkpOworICAgIHJldHVybiBkaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gbG9n
aWNhbEVuZE9mTGluZShjLCByZWFjaGVkQm91bmRhcnkpIDogbG9naWNhbFN0YXJ0T2ZMaW5lKGMs
IHJlYWNoZWRCb3VuZGFyeSk7CiB9CiAKIHN0YXRpYyBib29sIGRpcmVjdGlvbklzRG93bnN0cmVh
bShTZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uKQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRp
dGluZy9hdGsvRnJhbWVTZWxlY3Rpb25BdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvYXRrL0ZyYW1lU2VsZWN0aW9uQXRrLmNwcAkocmV2aXNpb24gMjM0NjE4KQor
KysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9hdGsvRnJhbWVTZWxlY3Rpb25BdGsuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Myw3ICs0Myw3IEBAIHN0YXRpYyB2b2lkIGVtaXRUZXh0U2VsZWN0aW9u
Q2hhbmdlKEFjY2UKICAgICAvLyB0aGUgbGlzdCBpdGVtIG1hcmtlciBpcyBleHBvc2VkIHRocm91
Z2ggdGhlIHRleHQgb2YgdGhlIGFjY2Vzc2libGUgbGlzdCBpdGVtIHJhdGhlcgogICAgIC8vIHRo
YW4gdGhyb3VnaCBhIHNlcGFyYXRlIGFjY2Vzc2libGUgb2JqZWN0LgogICAgIFJlbmRlck9iamVj
dCogcmVuZGVyZXIgPSBvYmplY3QtPnJlbmRlcmVyKCk7Ci0gICAgaWYgKGlzPFJlbmRlckxpc3RJ
dGVtPihyZW5kZXJlcikgJiYgcmVuZGVyZXItPnN0eWxlKCkuZGlyZWN0aW9uKCkgPT0gTFRSKQor
ICAgIGlmIChpczxSZW5kZXJMaXN0SXRlbT4ocmVuZGVyZXIpICYmIHJlbmRlcmVyLT5zdHlsZSgp
LmRpcmVjdGlvbigpID09IFRleHREaXJlY3Rpb246OkxUUikKICAgICAgICAgb2Zmc2V0ICs9IGRv
d25jYXN0PFJlbmRlckxpc3RJdGVtPigqcmVuZGVyZXIpLm1hcmtlclRleHRXaXRoU3VmZml4KCku
bGVuZ3RoKCk7CiAKICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUoYXhPYmplY3QsICJ0ZXh0LWNh
cmV0LW1vdmVkIiwgb2Zmc2V0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3Bw
CShyZXZpc2lvbiAyMzQ2MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODAwLDcgKzgwMCw3IEBAIFRleHREaXJlY3Rpb24gSFRNTEVs
ZW1lbnQ6OmRpcmVjdGlvbmFsaXQKIHsKICAgICBpZiAoIShzZWxmT3JBbmNlc3Rvckhhc0RpckF1
dG9BdHRyaWJ1dGUoKSAmJiBoYXNEaXJlY3Rpb25BdXRvKCkpKSB7CiAgICAgICAgIGlzQXV0byA9
IGZhbHNlOwotICAgICAgICByZXR1cm4gTFRSOworICAgICAgICByZXR1cm4gVGV4dERpcmVjdGlv
bjo6TFRSOwogICAgIH0KIAogICAgIGlzQXV0byA9IHRydWU7CkBAIC04MTUsNyArODE1LDcgQEAg
VGV4dERpcmVjdGlvbiBIVE1MRWxlbWVudDo6ZGlyZWN0aW9uYWxpdAogICAgICAgICBVQ2hhckRp
cmVjdGlvbiB0ZXh0RGlyZWN0aW9uID0gdGV4dEVsZW1lbnQudmFsdWUoKS5kZWZhdWx0V3JpdGlu
Z0RpcmVjdGlvbigmaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkpOwogICAgICAgICBpZiAoc3Ryb25n
RGlyZWN0aW9uYWxpdHlUZXh0Tm9kZSkKICAgICAgICAgICAgICpzdHJvbmdEaXJlY3Rpb25hbGl0
eVRleHROb2RlID0gaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkgPyAmdGV4dEVsZW1lbnQgOiBudWxs
cHRyOwotICAgICAgICByZXR1cm4gKHRleHREaXJlY3Rpb24gPT0gVV9MRUZUX1RPX1JJR0hUKSA/
IExUUiA6IFJUTDsKKyAgICAgICAgcmV0dXJuICh0ZXh0RGlyZWN0aW9uID09IFVfTEVGVF9UT19S
SUdIVCkgPyBUZXh0RGlyZWN0aW9uOjpMVFIgOiBUZXh0RGlyZWN0aW9uOjpSVEw7CiAgICAgfQog
CiAgICAgUmVmUHRyPE5vZGU+IG5vZGUgPSBmaXJzdENoaWxkKCk7CkBAIC04NDIsMTQgKzg0Miwx
NCBAQCBUZXh0RGlyZWN0aW9uIEhUTUxFbGVtZW50OjpkaXJlY3Rpb25hbGl0CiAgICAgICAgICAg
ICBpZiAoaGFzU3Ryb25nRGlyZWN0aW9uYWxpdHkpIHsKICAgICAgICAgICAgICAgICBpZiAoc3Ry
b25nRGlyZWN0aW9uYWxpdHlUZXh0Tm9kZSkKICAgICAgICAgICAgICAgICAgICAgKnN0cm9uZ0Rp
cmVjdGlvbmFsaXR5VGV4dE5vZGUgPSBub2RlLmdldCgpOwotICAgICAgICAgICAgICAgIHJldHVy
biAodGV4dERpcmVjdGlvbiA9PSBVX0xFRlRfVE9fUklHSFQpID8gTFRSIDogUlRMOworICAgICAg
ICAgICAgICAgIHJldHVybiAodGV4dERpcmVjdGlvbiA9PSBVX0xFRlRfVE9fUklHSFQpID8gVGV4
dERpcmVjdGlvbjo6TFRSIDogVGV4dERpcmVjdGlvbjo6UlRMOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgICAgIG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0KCpub2RlLCB0aGlzKTsK
ICAgICB9CiAgICAgaWYgKHN0cm9uZ0RpcmVjdGlvbmFsaXR5VGV4dE5vZGUpCiAgICAgICAgICpz
dHJvbmdEaXJlY3Rpb25hbGl0eVRleHROb2RlID0gbnVsbHB0cjsKLSAgICByZXR1cm4gTFRSOwor
ICAgIHJldHVybiBUZXh0RGlyZWN0aW9uOjpMVFI7CiB9CiAKIHZvaWQgSFRNTEVsZW1lbnQ6OmRp
ckF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAkocmV2aXNpb24gMjM0NjE4KQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjA5OCw3ICsyMDk4LDcgQEAgYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpzZXR1cERhdGVUaW1l
Q2hvbwogICAgIGVsc2UKICAgICAgICAgcGFyYW1ldGVycy5hbmNob3JSZWN0SW5Sb290VmlldyA9
IEludFJlY3QoKTsKICAgICBwYXJhbWV0ZXJzLmN1cnJlbnRWYWx1ZSA9IHZhbHVlKCk7Ci0gICAg
cGFyYW1ldGVycy5pc0FuY2hvckVsZW1lbnRSVEwgPSBjb21wdXRlZFN0eWxlKCktPmRpcmVjdGlv
bigpID09IFJUTDsKKyAgICBwYXJhbWV0ZXJzLmlzQW5jaG9yRWxlbWVudFJUTCA9IGNvbXB1dGVk
U3R5bGUoKS0+ZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6UlRMOwogI2lmIEVOQUJMRShE
QVRBTElTVF9FTEVNRU5UKQogICAgIGlmIChhdXRvIGRhdGFMaXN0ID0gdGhpcy0+ZGF0YUxpc3Qo
KSkgewogICAgICAgICBSZWY8SFRNTENvbGxlY3Rpb24+IG9wdGlvbnMgPSBkYXRhTGlzdC0+b3B0
aW9ucygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudC5jcHAJKHJldmlzaW9uIDIzNDYxOCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NzUs
NyArNzc1LDcgQEAgU3RyaW5nIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpkaXJlYwogICAg
ICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoZGlyQXR0cmlidXRlVmFsdWUs
ICJhdXRvIikpIHsKICAgICAgICAgICAgIGJvb2wgaXNBdXRvOwogICAgICAgICAgICAgVGV4dERp
cmVjdGlvbiB0ZXh0RGlyZWN0aW9uID0gc3RhdGljX2Nhc3Q8Y29uc3QgSFRNTEVsZW1lbnQqPihl
bGVtZW50KS0+ZGlyZWN0aW9uYWxpdHlJZmhhc0RpckF1dG9BdHRyaWJ1dGUoaXNBdXRvKTsKLSAg
ICAgICAgICAgIHJldHVybiB0ZXh0RGlyZWN0aW9uID09IFJUTCA/ICJydGwiIDogImx0ciI7Cisg
ICAgICAgICAgICByZXR1cm4gdGV4dERpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpSVEwgPyAi
cnRsIiA6ICJsdHIiOwogICAgICAgICB9CiAgICAgfQogCkBAIC04MzcsNyArODM3LDcgQEAgdm9p
ZCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6YWRqdXN0SQogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KIAotICAgICAgICB0ZXh0QmxvY2tTdHlsZS5zZXREaXJlY3Rpb24oTFRSKTsK
KyAgICAgICAgdGV4dEJsb2NrU3R5bGUuc2V0RGlyZWN0aW9uKFRleHREaXJlY3Rpb246OkxUUik7
CiAgICAgfQogI2VuZGlmCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUaXRsZUVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxl
bWVudC5jcHAJKHJldmlzaW9uIDIzNDYxOCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRp
dGxlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDcgQEAgU3RyaW5nIEhU
TUxUaXRsZUVsZW1lbnQ6OnRleHQoKSBjb25zdAogCiBTdHJpbmdXaXRoRGlyZWN0aW9uIEhUTUxU
aXRsZUVsZW1lbnQ6OmNvbXB1dGVkVGV4dFdpdGhEaXJlY3Rpb24oKQogewotICAgIFRleHREaXJl
Y3Rpb24gZGlyZWN0aW9uID0gTFRSOworICAgIGF1dG8gZGlyZWN0aW9uID0gVGV4dERpcmVjdGlv
bjo6TFRSOwogICAgIGlmIChhdXRvKiBjb21wdXRlZFN0eWxlID0gdGhpcy0+Y29tcHV0ZWRTdHls
ZSgpKQogICAgICAgICBkaXJlY3Rpb24gPSBjb21wdXRlZFN0eWxlLT5kaXJlY3Rpb24oKTsKICAg
ICBlbHNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAJKHJldmlzaW9uIDIzNDYxOCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI5NSwyMSArMjk1LDIxIEBAIGlubGluZSBUZXh0RGlyZWN0aW9uIENhbnZhc1Jl
bmRlcmluZ0NvbnQKICAgICAgICAgKmNvbXB1dGVkU3R5bGUgPSBzdHlsZTsKICAgICBzd2l0Y2gg
KGRpcmVjdGlvbikgewogICAgIGNhc2UgRGlyZWN0aW9uOjpJbmhlcml0OgotICAgICAgICByZXR1
cm4gc3R5bGUgPyBzdHlsZS0+ZGlyZWN0aW9uKCkgOiBMVFI7CisgICAgICAgIHJldHVybiBzdHls
ZSA/IHN0eWxlLT5kaXJlY3Rpb24oKSA6IFRleHREaXJlY3Rpb246OkxUUjsKICAgICBjYXNlIERp
cmVjdGlvbjo6UnRsOgotICAgICAgICByZXR1cm4gUlRMOworICAgICAgICByZXR1cm4gVGV4dERp
cmVjdGlvbjo6UlRMOwogICAgIGNhc2UgRGlyZWN0aW9uOjpMdHI6Ci0gICAgICAgIHJldHVybiBM
VFI7CisgICAgICAgIHJldHVybiBUZXh0RGlyZWN0aW9uOjpMVFI7CiAgICAgfQogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBMVFI7CisgICAgcmV0dXJuIFRleHREaXJlY3Rp
b246OkxUUjsKIH0KIAogQ2FudmFzRGlyZWN0aW9uIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6
ZGlyZWN0aW9uKCkgY29uc3QKIHsKICAgICBpZiAoc3RhdGUoKS5kaXJlY3Rpb24gPT0gRGlyZWN0
aW9uOjpJbmhlcml0KQogICAgICAgICBjYW52YXMoKS5kb2N1bWVudCgpLnVwZGF0ZVN0eWxlSWZO
ZWVkZWQoKTsKLSAgICByZXR1cm4gdG9UZXh0RGlyZWN0aW9uKHN0YXRlKCkuZGlyZWN0aW9uKSA9
PSBSVEwgPyBDYW52YXNEaXJlY3Rpb246OlJ0bCA6IENhbnZhc0RpcmVjdGlvbjo6THRyOworICAg
IHJldHVybiB0b1RleHREaXJlY3Rpb24oc3RhdGUoKS5kaXJlY3Rpb24pID09IFRleHREaXJlY3Rp
b246OlJUTCA/IENhbnZhc0RpcmVjdGlvbjo6UnRsIDogQ2FudmFzRGlyZWN0aW9uOjpMdHI7CiB9
CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXREaXJlY3Rpb24oQ2FudmFzRGly
ZWN0aW9uIGRpcmVjdGlvbikKQEAgLTQyOSw3ICs0MjksNyBAQCBGbG9hdFBvaW50IENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6dGV4CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGJvb2wg
aXNSVEwgPSBkaXJlY3Rpb24gPT0gUlRMOworICAgIGJvb2wgaXNSVEwgPSBkaXJlY3Rpb24gPT0g
VGV4dERpcmVjdGlvbjo6UlRMOwogICAgIGF1dG8gYWxpZ24gPSBzdGF0ZSgpLnRleHRBbGlnbjsK
ICAgICBpZiAoYWxpZ24gPT0gU3RhcnRUZXh0QWxpZ24pCiAgICAgICAgIGFsaWduID0gaXNSVEwg
PyBSaWdodFRleHRBbGlnbiA6IExlZnRUZXh0QWxpZ247CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAJKHJldmlzaW9uIDIzNDYx
OCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE3MSw3ICsxNzEsNyBAQCB2b2lkIFJlbmRlclNsaWRlckNvbnRh
aW5lcjo6bGF5b3V0KCkKICAgICAgICAgLy8gRklYTUU6IFdvcmsgYXJvdW5kIHJvdW5kaW5nIGlz
c3VlcyBpbiBSVEwgdmVydGljYWwgc2xpZGVycy4gV2Ugd2FudCB0aGVtIHRvCiAgICAgICAgIC8v
IHJlbmRlciBpZGVudGljYWxseSB0byBMVFIgdmVydGljYWwgc2xpZGVycy4gV2UgY2FuIHJlbW92
ZSB0aGlzIHdvcmsgYXJvdW5kIHdoZW4KICAgICAgICAgLy8gc3VicGl4ZWwgcmVuZGVyaW5nIGlz
IGVuYWJsZWQgb24gYWxsIHBvcnRzLgotICAgICAgICBtdXRhYmxlU3R5bGUoKS5zZXREaXJlY3Rp
b24oTFRSKTsKKyAgICAgICAgbXV0YWJsZVN0eWxlKCkuc2V0RGlyZWN0aW9uKFRleHREaXJlY3Rp
b246OkxUUik7CiAgICAgfQogCiAgICAgUmVuZGVyQm94KiB0aHVtYiA9IGlucHV0LnNsaWRlclRo
dW1iRWxlbWVudCgpID8gaW5wdXQuc2xpZGVyVGh1bWJFbGVtZW50KCktPnJlbmRlckJveCgpIDog
bnVsbHB0cjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5u
ZXJFbGVtZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
VGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAkocmV2aXNpb24gMjM0NjE4KQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTA5LDcgKzEwOSw3IEBAIHN0ZDo6b3B0aW9uYWw8RWxlbWVudFN0eWxlPiBU
ZXh0Q29udHJvbEkKICAgICBuZXdTdHlsZS0+c2V0RmxleEdyb3coMSk7CiAgICAgbmV3U3R5bGUt
PnNldE1pbldpZHRoKExlbmd0aCB7IDAsIEZpeGVkIH0pOyAvLyBOZWVkZWQgZm9yIGNvcnJlY3Qg
c2hyaW5raW5nLgogICAgIG5ld1N0eWxlLT5zZXREaXNwbGF5KERpc3BsYXlUeXBlOjpCbG9jayk7
Ci0gICAgbmV3U3R5bGUtPnNldERpcmVjdGlvbihMVFIpOworICAgIG5ld1N0eWxlLT5zZXREaXJl
Y3Rpb24oVGV4dERpcmVjdGlvbjo6TFRSKTsKICAgICAvLyBXZSBkb24ndCB3YW50IHRoZSBzaGFk
b3cgRE9NIHRvIGJlIGVkaXRhYmxlLCBzbyB3ZSBzZXQgdGhpcyBibG9jayB0byByZWFkLW9ubHkg
aW4gY2FzZSB0aGUgaW5wdXQgaXRzZWxmIGlzIGVkaXRhYmxlLgogICAgIG5ld1N0eWxlLT5zZXRV
c2VyTW9kaWZ5KFVzZXJNb2RpZnk6OlJlYWRPbmx5KTsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
cGFnZS9DaHJvbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21l
LmNwcAkocmV2aXNpb24gMjM0NjE4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNTYsNyArMzU2LDcgQEAgdm9pZCBDaHJvbWU6OnNldFRvb2xU
aXAoY29uc3QgSGl0VGVzdFJlcwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvcm0tPnJl
bmRlcmVyKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbFRpcERpcmVjdGlvbiA9
IGZvcm0tPnJlbmRlcmVyKCktPnN0eWxlKCkuZGlyZWN0aW9uKCk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbFRpcERpcmVjdGlv
biA9IExUUjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sVGlwRGlyZWN0aW9uID0g
VGV4dERpcmVjdGlvbjo6TFRSOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQpAQCAtMzY3LDcgKzM2Nyw3IEBAIHZvaWQgQ2hyb21lOjpzZXRU
b29sVGlwKGNvbnN0IEhpdFRlc3RSZXMKICAgICAgICAgICAgIC8vIEZJWE1FOiBOZWVkIHRvIHBh
c3MgdGhpcyBVUkwgdGhyb3VnaCB1c2VyVmlzaWJsZVN0cmluZyBvbmNlIHRoYXQncyBpbiBXZWJD
b3JlCiAgICAgICAgICAgICB0b29sVGlwID0gcmVzdWx0LmFic29sdXRlTGlua1VSTCgpLnN0cmlu
ZygpOwogICAgICAgICAgICAgLy8gVVJMIGFsd2F5cyBkaXNwbGF5IGFzIExUUi4KLSAgICAgICAg
ICAgIHRvb2xUaXBEaXJlY3Rpb24gPSBMVFI7CisgICAgICAgICAgICB0b29sVGlwRGlyZWN0aW9u
ID0gVGV4dERpcmVjdGlvbjo6TFRSOwogICAgICAgICB9CiAgICAgfQogCkBAIC0zODksNyArMzg5
LDcgQEAgdm9pZCBDaHJvbWU6OnNldFRvb2xUaXAoY29uc3QgSGl0VGVzdFJlcwogICAgICAgICAg
ICAgICAgIC8vIGltcGxlbWVudGF0aW9ucyBkb24ndCB1c2UgdGV4dCBkaXJlY3Rpb24gaW5mb3Jt
YXRpb24gZm9yCiAgICAgICAgICAgICAgICAgLy8gQ2hyb21lQ2xpZW50OjpzZXRUb29sVGlwLiBX
ZSdsbCB3b3JrIG9uIHRvb2x0aXAgdGV4dAogICAgICAgICAgICAgICAgIC8vIGRpcmVjdGlvbiBk
dXJpbmcgYmlkaSBjbGVhbnVwIGluIGZvcm0gaW5wdXRzLgotICAgICAgICAgICAgICAgIHRvb2xU
aXBEaXJlY3Rpb24gPSBMVFI7CisgICAgICAgICAgICAgICAgdG9vbFRpcERpcmVjdGlvbiA9IFRl
eHREaXJlY3Rpb246OkxUUjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHJldmlzaW9uIDIzNDYxOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYyLDcgKzE2Miw3
IEBAIFBhZ2luYXRpb246Ok1vZGUgcGFnaW5hdGlvbk1vZGVGb3JSZW5kZXIKICAgICAvLyBpcyBo
b3Jpem9udGFsLCB0aGVuIHdlIHVzZSBUZXh0RGlyZWN0aW9uIHRvIGNob29zZSBiZXR3ZWVuIHRo
b3NlIG9wdGlvbnMuIElmIHRoZSBXcml0aW5nTW9kZQogICAgIC8vIGlzIHZlcnRpY2FsLCB0aGVu
IHRoZSBkaXJlY3Rpb24gb2YgdGhlIHZlcnRpY2FsaXR5IGRpY3RhdGVzIHRoZSBjaG9pY2UuCiAg
ICAgaWYgKG92ZXJmbG93ID09IE92ZXJmbG93OjpQYWdlZFgpIHsKLSAgICAgICAgaWYgKChpc0hv
cml6b250YWxXcml0aW5nTW9kZSAmJiB0ZXh0RGlyZWN0aW9uID09IExUUikgfHwgd3JpdGluZ01v
ZGUgPT0gTGVmdFRvUmlnaHRXcml0aW5nTW9kZSkKKyAgICAgICAgaWYgKChpc0hvcml6b250YWxX
cml0aW5nTW9kZSAmJiB0ZXh0RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUikgfHwgd3Jp
dGluZ01vZGUgPT0gTGVmdFRvUmlnaHRXcml0aW5nTW9kZSkKICAgICAgICAgICAgIHJldHVybiBQ
YWdpbmF0aW9uOjpMZWZ0VG9SaWdodFBhZ2luYXRlZDsKICAgICAgICAgcmV0dXJuIFBhZ2luYXRp
b246OlJpZ2h0VG9MZWZ0UGFnaW5hdGVkOwogICAgIH0KQEAgLTE3MCw3ICsxNzAsNyBAQCBQYWdp
bmF0aW9uOjpNb2RlIHBhZ2luYXRpb25Nb2RlRm9yUmVuZGVyCiAgICAgLy8gcGFnZWQteSBhbHdh
eXMgY29ycmVzcG9uZHMgdG8gVG9wVG9Cb3R0b21QYWdpbmF0ZWQgb3IgQm90dG9tVG9Ub3BQYWdp
bmF0ZWQuIElmIHRoZSBXcml0aW5nTW9kZQogICAgIC8vIGlzIGhvcml6b250YWwsIHRoZW4gdGhl
IGRpcmVjdGlvbiBvZiB0aGUgaG9yaXpvbnRhbGl0eSBkaWN0YXRlcyB0aGUgY2hvaWNlLiBJZiB0
aGUgV3JpdGluZ01vZGUKICAgICAvLyBpcyB2ZXJ0aWNhbCwgdGhlbiB3ZSB1c2UgVGV4dERpcmVj
dGlvbiB0byBjaG9vc2UgYmV0d2VlbiB0aG9zZSBvcHRpb25zLiAKLSAgICBpZiAod3JpdGluZ01v
ZGUgPT0gVG9wVG9Cb3R0b21Xcml0aW5nTW9kZSB8fCAoIWlzSG9yaXpvbnRhbFdyaXRpbmdNb2Rl
ICYmIHRleHREaXJlY3Rpb24gPT0gUlRMKSkKKyAgICBpZiAod3JpdGluZ01vZGUgPT0gVG9wVG9C
b3R0b21Xcml0aW5nTW9kZSB8fCAoIWlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlICYmIHRleHREaXJl
Y3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6UlRMKSkKICAgICAgICAgcmV0dXJuIFBhZ2luYXRpb246
OlRvcFRvQm90dG9tUGFnaW5hdGVkOwogICAgIHJldHVybiBQYWdpbmF0aW9uOjpCb3R0b21Ub1Rv
cFBhZ2luYXRlZDsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwJKHJldmlzaW9u
IDIzNDYxOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbAkod29ya2luZyBj
b3B5KQpAQCAtNTA4LDcgKzUwOCw3IEBAIHVzZXJJbnRlcmZhY2VEaXJlY3Rpb25Qb2xpY3k6CiAg
IGluaXRpYWw6IFVzZXJJbnRlcmZhY2VEaXJlY3Rpb25Qb2xpY3k6OkNvbnRlbnQKIHN5c3RlbUxh
eW91dERpcmVjdGlvbjoKICAgdHlwZTogVGV4dERpcmVjdGlvbgotICBpbml0aWFsOiBMVFIKKyAg
aW5pdGlhbDogVGV4dERpcmVjdGlvbjo6TFRSCiAKIGFsbG93Q29udGVudFNlY3VyaXR5UG9saWN5
U291cmNlU3RhclRvTWF0Y2hBbnlQcm90b2NvbDoKICAgaW5pdGlhbDogZmFsc2UKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlY3RFZGdlcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1JlY3RFZGdlcy5oCShyZXZpc2lvbiAyMzQ2MTgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9SZWN0RWRnZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTksMTggKzU5
LDE4IEBAIHB1YmxpYzoKICAgICAKICAgICBUJiBiZWZvcmUoV3JpdGluZ01vZGUgd3JpdGluZ01v
ZGUpIHsgcmV0dXJuIGF0KG1hcExvZ2ljYWxTaWRlVG9QaHlzaWNhbFNpZGUod3JpdGluZ01vZGUs
IExvZ2ljYWxCb3hTaWRlOjpCZWZvcmUpKTsgfQogICAgIFQmIGFmdGVyKFdyaXRpbmdNb2RlIHdy
aXRpbmdNb2RlKSB7IHJldHVybiBhdChtYXBMb2dpY2FsU2lkZVRvUGh5c2ljYWxTaWRlKHdyaXRp
bmdNb2RlLCBMb2dpY2FsQm94U2lkZTo6QWZ0ZXIpKTsgfQotICAgIFQmIHN0YXJ0KFdyaXRpbmdN
b2RlIHdyaXRpbmdNb2RlLCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IExUUikgeyByZXR1cm4g
YXQobWFwTG9naWNhbFNpZGVUb1BoeXNpY2FsU2lkZShtYWtlVGV4dEZsb3cod3JpdGluZ01vZGUs
IGRpcmVjdGlvbiksIExvZ2ljYWxCb3hTaWRlOjpTdGFydCkpOyB9Ci0gICAgVCYgZW5kKFdyaXRp
bmdNb2RlIHdyaXRpbmdNb2RlLCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IExUUikgeyByZXR1
cm4gYXQobWFwTG9naWNhbFNpZGVUb1BoeXNpY2FsU2lkZShtYWtlVGV4dEZsb3cod3JpdGluZ01v
ZGUsIGRpcmVjdGlvbiksIExvZ2ljYWxCb3hTaWRlOjpFbmQpKTsgfQorICAgIFQmIHN0YXJ0KFdy
aXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IFRleHREaXJl
Y3Rpb246OkxUUikgeyByZXR1cm4gYXQobWFwTG9naWNhbFNpZGVUb1BoeXNpY2FsU2lkZShtYWtl
VGV4dEZsb3cod3JpdGluZ01vZGUsIGRpcmVjdGlvbiksIExvZ2ljYWxCb3hTaWRlOjpTdGFydCkp
OyB9CisgICAgVCYgZW5kKFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBUZXh0RGlyZWN0aW9uIGRp
cmVjdGlvbiA9IFRleHREaXJlY3Rpb246OkxUUikgeyByZXR1cm4gYXQobWFwTG9naWNhbFNpZGVU
b1BoeXNpY2FsU2lkZShtYWtlVGV4dEZsb3cod3JpdGluZ01vZGUsIGRpcmVjdGlvbiksIExvZ2lj
YWxCb3hTaWRlOjpFbmQpKTsgfQogICAgIAogICAgIGNvbnN0IFQmIGJlZm9yZShXcml0aW5nTW9k
ZSB3cml0aW5nTW9kZSkgY29uc3QgeyByZXR1cm4gYXQobWFwTG9naWNhbFNpZGVUb1BoeXNpY2Fs
U2lkZSh3cml0aW5nTW9kZSwgTG9naWNhbEJveFNpZGU6OkJlZm9yZSkpOyB9CiAgICAgY29uc3Qg
VCYgYWZ0ZXIoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUpIGNvbnN0IHsgcmV0dXJuIGF0KG1hcExv
Z2ljYWxTaWRlVG9QaHlzaWNhbFNpZGUod3JpdGluZ01vZGUsIExvZ2ljYWxCb3hTaWRlOjpBZnRl
cikpOyB9Ci0gICAgY29uc3QgVCYgc3RhcnQoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIFRleHRE
aXJlY3Rpb24gZGlyZWN0aW9uID0gTFRSKSBjb25zdCB7IHJldHVybiBhdChtYXBMb2dpY2FsU2lk
ZVRvUGh5c2ljYWxTaWRlKG1ha2VUZXh0Rmxvdyh3cml0aW5nTW9kZSwgZGlyZWN0aW9uKSwgTG9n
aWNhbEJveFNpZGU6OlN0YXJ0KSk7IH0KLSAgICBjb25zdCBUJiBlbmQoV3JpdGluZ01vZGUgd3Jp
dGluZ01vZGUsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gTFRSKSBjb25zdCB7IHJldHVybiBh
dChtYXBMb2dpY2FsU2lkZVRvUGh5c2ljYWxTaWRlKG1ha2VUZXh0Rmxvdyh3cml0aW5nTW9kZSwg
ZGlyZWN0aW9uKSwgTG9naWNhbEJveFNpZGU6OkVuZCkpOyB9CisgICAgY29uc3QgVCYgc3RhcnQo
V3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gVGV4dERp
cmVjdGlvbjo6TFRSKSBjb25zdCB7IHJldHVybiBhdChtYXBMb2dpY2FsU2lkZVRvUGh5c2ljYWxT
aWRlKG1ha2VUZXh0Rmxvdyh3cml0aW5nTW9kZSwgZGlyZWN0aW9uKSwgTG9naWNhbEJveFNpZGU6
OlN0YXJ0KSk7IH0KKyAgICBjb25zdCBUJiBlbmQoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIFRl
eHREaXJlY3Rpb24gZGlyZWN0aW9uID0gVGV4dERpcmVjdGlvbjo6TFRSKSBjb25zdCB7IHJldHVy
biBhdChtYXBMb2dpY2FsU2lkZVRvUGh5c2ljYWxTaWRlKG1ha2VUZXh0Rmxvdyh3cml0aW5nTW9k
ZSwgZGlyZWN0aW9uKSwgTG9naWNhbEJveFNpZGU6OkVuZCkpOyB9CiAgICAgCiAgICAgdm9pZCBz
ZXRCZWZvcmUoY29uc3QgVCYgYmVmb3JlLCBXcml0aW5nTW9kZSB3cml0aW5nTW9kZSkgeyB0aGlz
LT5iZWZvcmUod3JpdGluZ01vZGUpID0gYmVmb3JlOyB9CiAgICAgdm9pZCBzZXRBZnRlcihjb25z
dCBUJiBhZnRlciwgV3JpdGluZ01vZGUgd3JpdGluZ01vZGUpIHsgdGhpcy0+YWZ0ZXIod3JpdGlu
Z01vZGUpID0gYWZ0ZXI7IH0KLSAgICB2b2lkIHNldFN0YXJ0KGNvbnN0IFQmIHN0YXJ0LCBXcml0
aW5nTW9kZSB3cml0aW5nTW9kZSwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBMVFIpIHsgdGhp
cy0+c3RhcnQod3JpdGluZ01vZGUsIGRpcmVjdGlvbikgPSBzdGFydDsgfQotICAgIHZvaWQgc2V0
RW5kKGNvbnN0IFQmIGVuZCwgV3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb24g
ZGlyZWN0aW9uID0gTFRSKSB7IHRoaXMtPmVuZCh3cml0aW5nTW9kZSwgZGlyZWN0aW9uKSA9IGVu
ZDsgfQorICAgIHZvaWQgc2V0U3RhcnQoY29uc3QgVCYgc3RhcnQsIFdyaXRpbmdNb2RlIHdyaXRp
bmdNb2RlLCBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IFRleHREaXJlY3Rpb246OkxUUikgeyB0
aGlzLT5zdGFydCh3cml0aW5nTW9kZSwgZGlyZWN0aW9uKSA9IHN0YXJ0OyB9CisgICAgdm9pZCBz
ZXRFbmQoY29uc3QgVCYgZW5kLCBXcml0aW5nTW9kZSB3cml0aW5nTW9kZSwgVGV4dERpcmVjdGlv
biBkaXJlY3Rpb24gPSBUZXh0RGlyZWN0aW9uOjpMVFIpIHsgdGhpcy0+ZW5kKHdyaXRpbmdNb2Rl
LCBkaXJlY3Rpb24pID0gZW5kOyB9CiAgICAgCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJl
Y3RFZGdlcyYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fc2lkZXMgPT0gb3RoZXIubV9zaWRlczsg
fQogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBSZWN0RWRnZXMmIG90aGVyKSBjb25zdCB7IHJl
dHVybiBtX3NpZGVzICE9IG90aGVyLm1fc2lkZXM7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uLmgJKHJldmlz
aW9uIDIzNDYxOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJJbnRlcmZhY2VMYXlv
dXREaXJlY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTMgKzIzLDEwIEBACiAgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBVc2VySW50ZXJmYWNl
TGF5b3V0RGlyZWN0aW9uX2gKLSNkZWZpbmUgVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbl9o
CisjcHJhZ21hIG9uY2UKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1lbnVtIGNsYXNzIFVzZXJJ
bnRlcmZhY2VMYXlvdXREaXJlY3Rpb24geyBMVFIsIFJUTCB9OworZW51bSBjbGFzcyBVc2VySW50
ZXJmYWNlTGF5b3V0RGlyZWN0aW9uIDogdWludDhfdCB7IExUUiwgUlRMIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25f
aApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29tcGxleFRleHRDb250
cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyMzQ2MTgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBDb21wbGV4VGV4dENvbnRyb2xsZXI6
OmNvbXB1dGVFeHBhbgogICAgIGlmICghbV9leHBhbnNpb24pCiAgICAgICAgIG1fZXhwYW5zaW9u
UGVyT3Bwb3J0dW5pdHkgPSAwOwogICAgIGVsc2UgewotICAgICAgICB1bnNpZ25lZCBleHBhbnNp
b25PcHBvcnR1bml0eUNvdW50ID0gRm9udENhc2NhZGU6OmV4cGFuc2lvbk9wcG9ydHVuaXR5Q291
bnQobV9ydW4udGV4dCgpLCBtX3J1bi5sdHIoKSA/IExUUiA6IFJUTCwgbV9ydW4uZXhwYW5zaW9u
QmVoYXZpb3IoKSkuZmlyc3Q7CisgICAgICAgIHVuc2lnbmVkIGV4cGFuc2lvbk9wcG9ydHVuaXR5
Q291bnQgPSBGb250Q2FzY2FkZTo6ZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudChtX3J1bi50ZXh0
KCksIG1fcnVuLmx0cigpID8gVGV4dERpcmVjdGlvbjo6TFRSIDogVGV4dERpcmVjdGlvbjo6UlRM
LCBtX3J1bi5leHBhbnNpb25CZWhhdmlvcigpKS5maXJzdDsKIAogICAgICAgICBpZiAoIWV4cGFu
c2lvbk9wcG9ydHVuaXR5Q291bnQpCiAgICAgICAgICAgICBtX2V4cGFuc2lvblBlck9wcG9ydHVu
aXR5ID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNj
YWRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FzY2FkZS5jcHAJKHJldmlzaW9uIDIzNDYxOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA3NCw3ICsx
MDc0LDcgQEAgc3RkOjpwYWlyPHVuc2lnbmVkLCBib29sPiBGb250Q2FzY2FkZTo6ZQogICAgICAg
ICArK2NvdW50OwogICAgICAgICBpc0FmdGVyRXhwYW5zaW9uID0gdHJ1ZTsKICAgICB9Ci0gICAg
aWYgKGRpcmVjdGlvbiA9PSBMVFIpIHsKKyAgICBpZiAoZGlyZWN0aW9uID09IFRleHREaXJlY3Rp
b246OkxUUikgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kp
IHsKICAgICAgICAgICAgIGlmICh0cmVhdEFzU3BhY2UoY2hhcmFjdGVyc1tpXSkpIHsKICAgICAg
ICAgICAgICAgICBjb3VudCsrOwpAQCAtMTExMSw3ICsxMTExLDcgQEAgc3RkOjpwYWlyPHVuc2ln
bmVkLCBib29sPiBGb250Q2FzY2FkZTo6ZQogICAgICAgICArK2NvdW50OwogICAgICAgICBpc0Fm
dGVyRXhwYW5zaW9uID0gdHJ1ZTsKICAgICB9Ci0gICAgaWYgKGRpcmVjdGlvbiA9PSBMVFIpIHsK
KyAgICBpZiAoZGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUikgewogICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIFVDaGFyMzIg
Y2hhcmFjdGVyID0gY2hhcmFjdGVyc1tpXTsKICAgICAgICAgICAgIGlmICh0cmVhdEFzU3BhY2Uo
Y2hhcmFjdGVyKSkgewpAQCAtMTE4Miw3ICsxMTgyLDcgQEAgYm9vbCBGb250Q2FzY2FkZTo6bGVh
ZGluZ0V4cGFuc2lvbk9wcG9ydAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBVQ2hhcjMy
IGluaXRpYWxDaGFyYWN0ZXI7Ci0gICAgaWYgKGRpcmVjdGlvbiA9PSBMVFIpIHsKKyAgICBpZiAo
ZGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUikgewogICAgICAgICBpbml0aWFsQ2hhcmFj
dGVyID0gc3RyaW5nVmlld1swXTsKICAgICAgICAgaWYgKFUxNl9JU19MRUFEKGluaXRpYWxDaGFy
YWN0ZXIpICYmIHN0cmluZ1ZpZXcubGVuZ3RoKCkgPiAxICYmIFUxNl9JU19UUkFJTChzdHJpbmdW
aWV3WzFdKSkKICAgICAgICAgICAgIGluaXRpYWxDaGFyYWN0ZXIgPSBVMTZfR0VUX1NVUFBMRU1F
TlRBUlkoaW5pdGlhbENoYXJhY3Rlciwgc3RyaW5nVmlld1sxXSk7CkBAIC0xMjAxLDcgKzEyMDEs
NyBAQCBib29sIEZvbnRDYXNjYWRlOjp0cmFpbGluZ0V4cGFuc2lvbk9wcG9yCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIFVDaGFyMzIgZmluYWxDaGFyYWN0ZXI7Ci0gICAgaWYgKGRpcmVj
dGlvbiA9PSBMVFIpIHsKKyAgICBpZiAoZGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUikg
ewogICAgICAgICBmaW5hbENoYXJhY3RlciA9IHN0cmluZ1ZpZXdbc3RyaW5nVmlldy5sZW5ndGgo
KSAtIDFdOwogICAgICAgICBpZiAoVTE2X0lTX1RSQUlMKGZpbmFsQ2hhcmFjdGVyKSAmJiBzdHJp
bmdWaWV3Lmxlbmd0aCgpID4gMSAmJiBVMTZfSVNfTEVBRChzdHJpbmdWaWV3W3N0cmluZ1ZpZXcu
bGVuZ3RoKCkgLSAyXSkpCiAgICAgICAgICAgICBmaW5hbENoYXJhY3RlciA9IFUxNl9HRVRfU1VQ
UExFTUVOVEFSWShzdHJpbmdWaWV3W3N0cmluZ1ZpZXcubGVuZ3RoKCkgLSAyXSwgZmluYWxDaGFy
YWN0ZXIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuY3BwCShyZXZpc2lvbiAyMzQ2MTgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02ODMsNyArNjgzLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdCaWRpVGV4dChjb25z
dAogICAgIHdoaWxlIChiaWRpUnVuKSB7CiAgICAgICAgIFRleHRSdW4gc3VicnVuID0gcnVuLnN1
YlJ1bihiaWRpUnVuLT5zdGFydCgpLCBiaWRpUnVuLT5zdG9wKCkgLSBiaWRpUnVuLT5zdGFydCgp
KTsKICAgICAgICAgYm9vbCBpc1JUTCA9IGJpZGlSdW4tPmxldmVsKCkgJSAyOwotICAgICAgICBz
dWJydW4uc2V0RGlyZWN0aW9uKGlzUlRMID8gUlRMIDogTFRSKTsKKyAgICAgICAgc3VicnVuLnNl
dERpcmVjdGlvbihpc1JUTCA/IFRleHREaXJlY3Rpb246OlJUTCA6IFRleHREaXJlY3Rpb246OkxU
Uik7CiAgICAgICAgIHN1YnJ1bi5zZXREaXJlY3Rpb25hbE92ZXJyaWRlKGJpZGlSdW4tPmRpck92
ZXJyaWRlKGZhbHNlKSk7CiAKICAgICAgICAgZmxvYXQgd2lkdGggPSBmb250LmRyYXdUZXh0KCp0
aGlzLCBzdWJydW4sIGN1cnJQb2ludCwgMCwgc3RkOjpudWxsb3B0LCBjdXN0b21Gb250Tm90UmVh
ZHlBY3Rpb24pOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRS
dW4uaAkocmV2aXNpb24gMjM0NjE4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvVGV4dFJ1bi5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIHN0cnVjdCBXaWR0
aEl0ZXJhdG9yOwogY2xhc3MgVGV4dFJ1biB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgVGV4dFJ1bihjb25zdCBTdHJpbmcmIHRleHQsIGZsb2F0
IHhwb3MgPSAwLCBmbG9hdCBleHBhbnNpb24gPSAwLCBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNp
b25CZWhhdmlvciA9IERlZmF1bHRFeHBhbnNpb24sIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0g
TFRSLCBib29sIGRpcmVjdGlvbmFsT3ZlcnJpZGUgPSBmYWxzZSwgYm9vbCBjaGFyYWN0ZXJTY2Fu
Rm9yQ29kZVBhdGggPSB0cnVlKQorICAgIGV4cGxpY2l0IFRleHRSdW4oY29uc3QgU3RyaW5nJiB0
ZXh0LCBmbG9hdCB4cG9zID0gMCwgZmxvYXQgZXhwYW5zaW9uID0gMCwgRXhwYW5zaW9uQmVoYXZp
b3IgZXhwYW5zaW9uQmVoYXZpb3IgPSBEZWZhdWx0RXhwYW5zaW9uLCBUZXh0RGlyZWN0aW9uIGRp
cmVjdGlvbiA9IFRleHREaXJlY3Rpb246OkxUUiwgYm9vbCBkaXJlY3Rpb25hbE92ZXJyaWRlID0g
ZmFsc2UsIGJvb2wgY2hhcmFjdGVyU2NhbkZvckNvZGVQYXRoID0gdHJ1ZSkKICAgICAgICAgOiBt
X3RleHQodGV4dCkKICAgICAgICAgLCBtX3RhYlNpemUoMCkKICAgICAgICAgLCBtX3hwb3MoeHBv
cykKQEAgLTUyLDE0ICs1MiwxNCBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9leHBhbnNpb24oZXhw
YW5zaW9uKQogICAgICAgICAsIG1fZXhwYW5zaW9uQmVoYXZpb3IoZXhwYW5zaW9uQmVoYXZpb3Ip
CiAgICAgICAgICwgbV9hbGxvd1RhYnMoZmFsc2UpCi0gICAgICAgICwgbV9kaXJlY3Rpb24oZGly
ZWN0aW9uKQorICAgICAgICAsIG1fZGlyZWN0aW9uKHN0YXRpY19jYXN0PHVuc2lnbmVkPihkaXJl
Y3Rpb24pKQogICAgICAgICAsIG1fZGlyZWN0aW9uYWxPdmVycmlkZShkaXJlY3Rpb25hbE92ZXJy
aWRlKQogICAgICAgICAsIG1fY2hhcmFjdGVyU2NhbkZvckNvZGVQYXRoKGNoYXJhY3RlclNjYW5G
b3JDb2RlUGF0aCkKICAgICAgICAgLCBtX2Rpc2FibGVTcGFjaW5nKGZhbHNlKQogICAgIHsKICAg
ICB9CiAKLSAgICBleHBsaWNpdCBUZXh0UnVuKFN0cmluZ1ZpZXcgc3RyaW5nVmlldywgZmxvYXQg
eHBvcyA9IDAsIGZsb2F0IGV4cGFuc2lvbiA9IDAsIEV4cGFuc2lvbkJlaGF2aW9yIGV4cGFuc2lv
bkJlaGF2aW9yID0gRGVmYXVsdEV4cGFuc2lvbiwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBM
VFIsIGJvb2wgZGlyZWN0aW9uYWxPdmVycmlkZSA9IGZhbHNlLCBib29sIGNoYXJhY3RlclNjYW5G
b3JDb2RlUGF0aCA9IHRydWUpCisgICAgZXhwbGljaXQgVGV4dFJ1bihTdHJpbmdWaWV3IHN0cmlu
Z1ZpZXcsIGZsb2F0IHhwb3MgPSAwLCBmbG9hdCBleHBhbnNpb24gPSAwLCBFeHBhbnNpb25CZWhh
dmlvciBleHBhbnNpb25CZWhhdmlvciA9IERlZmF1bHRFeHBhbnNpb24sIFRleHREaXJlY3Rpb24g
ZGlyZWN0aW9uID0gVGV4dERpcmVjdGlvbjo6TFRSLCBib29sIGRpcmVjdGlvbmFsT3ZlcnJpZGUg
PSBmYWxzZSwgYm9vbCBjaGFyYWN0ZXJTY2FuRm9yQ29kZVBhdGggPSB0cnVlKQogICAgICAgICA6
IFRleHRSdW4oc3RyaW5nVmlldy50b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCksIHhwb3MsIGV4cGFu
c2lvbiwgZXhwYW5zaW9uQmVoYXZpb3IsIGRpcmVjdGlvbiwgZGlyZWN0aW9uYWxPdmVycmlkZSwg
Y2hhcmFjdGVyU2NhbkZvckNvZGVQYXRoKQogICAgIHsKICAgICB9CkBAIC0xMDMsMTQgKzEwMywx
NCBAQCBwdWJsaWM6CiAgICAgZmxvYXQgZXhwYW5zaW9uKCkgY29uc3QgeyByZXR1cm4gbV9leHBh
bnNpb247IH0KICAgICBFeHBhbnNpb25CZWhhdmlvciBleHBhbnNpb25CZWhhdmlvcigpIGNvbnN0
IHsgcmV0dXJuIG1fZXhwYW5zaW9uQmVoYXZpb3I7IH0KICAgICBUZXh0RGlyZWN0aW9uIGRpcmVj
dGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHREaXJlY3Rpb24+KG1fZGlyZWN0
aW9uKTsgfQotICAgIGJvb2wgcnRsKCkgY29uc3QgeyByZXR1cm4gbV9kaXJlY3Rpb24gPT0gUlRM
OyB9Ci0gICAgYm9vbCBsdHIoKSBjb25zdCB7IHJldHVybiBtX2RpcmVjdGlvbiA9PSBMVFI7IH0K
KyAgICBib29sIHJ0bCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHREaXJlY3Rpb24+
KG1fZGlyZWN0aW9uKSA9PSBUZXh0RGlyZWN0aW9uOjpSVEw7IH0KKyAgICBib29sIGx0cigpIGNv
bnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHREaXJlY3Rpb24+KG1fZGlyZWN0aW9uKSA9PSBU
ZXh0RGlyZWN0aW9uOjpMVFI7IH0KICAgICBib29sIGRpcmVjdGlvbmFsT3ZlcnJpZGUoKSBjb25z
dCB7IHJldHVybiBtX2RpcmVjdGlvbmFsT3ZlcnJpZGU7IH0KICAgICBib29sIGNoYXJhY3RlclNj
YW5Gb3JDb2RlUGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fY2hhcmFjdGVyU2NhbkZvckNvZGVQYXRo
OyB9CiAgICAgYm9vbCBzcGFjaW5nRGlzYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2Rpc2FibGVT
cGFjaW5nOyB9CiAKICAgICB2b2lkIGRpc2FibGVTcGFjaW5nKCkgeyBtX2Rpc2FibGVTcGFjaW5n
ID0gdHJ1ZTsgfQotICAgIHZvaWQgc2V0RGlyZWN0aW9uKFRleHREaXJlY3Rpb24gZGlyZWN0aW9u
KSB7IG1fZGlyZWN0aW9uID0gZGlyZWN0aW9uOyB9CisgICAgdm9pZCBzZXREaXJlY3Rpb24oVGV4
dERpcmVjdGlvbiBkaXJlY3Rpb24pIHsgbV9kaXJlY3Rpb24gPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oZGlyZWN0aW9uKTsgfQogICAgIHZvaWQgc2V0RGlyZWN0aW9uYWxPdmVycmlkZShib29sIG92
ZXJyaWRlKSB7IG1fZGlyZWN0aW9uYWxPdmVycmlkZSA9IG92ZXJyaWRlOyB9CiAgICAgdm9pZCBz
ZXRDaGFyYWN0ZXJTY2FuRm9yQ29kZVBhdGgoYm9vbCBzY2FuKSB7IG1fY2hhcmFjdGVyU2NhbkZv
ckNvZGVQYXRoID0gc2NhbjsgfQogICAgIFN0cmluZ1ZpZXcgdGV4dCgpIGNvbnN0IHsgcmV0dXJu
IG1fdGV4dDsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvV2lkdGhJ
dGVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvV2lkdGhJdGVyYXRvci5jcHAJKHJldmlzaW9uIDIzNDYxOCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1dpZHRoSXRlcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
Myw3ICs1Myw3IEBAIFdpZHRoSXRlcmF0b3I6OldpZHRoSXRlcmF0b3IoY29uc3QgRm9udEMKICAg
ICBpZiAoIW1fZXhwYW5zaW9uKQogICAgICAgICBtX2V4cGFuc2lvblBlck9wcG9ydHVuaXR5ID0g
MDsKICAgICBlbHNlIHsKLSAgICAgICAgdW5zaWduZWQgZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3Vu
dCA9IEZvbnRDYXNjYWRlOjpleHBhbnNpb25PcHBvcnR1bml0eUNvdW50KG1fcnVuLnRleHQoKSwg
bV9ydW4ubHRyKCkgPyBMVFIgOiBSVEwsIHJ1bi5leHBhbnNpb25CZWhhdmlvcigpKS5maXJzdDsK
KyAgICAgICAgdW5zaWduZWQgZXhwYW5zaW9uT3Bwb3J0dW5pdHlDb3VudCA9IEZvbnRDYXNjYWRl
OjpleHBhbnNpb25PcHBvcnR1bml0eUNvdW50KG1fcnVuLnRleHQoKSwgbV9ydW4ubHRyKCkgPyBU
ZXh0RGlyZWN0aW9uOjpMVFIgOiBUZXh0RGlyZWN0aW9uOjpSVEwsIHJ1bi5leHBhbnNpb25CZWhh
dmlvcigpKS5maXJzdDsKIAogICAgICAgICBpZiAoIWV4cGFuc2lvbk9wcG9ydHVuaXR5Q291bnQp
CiAgICAgICAgICAgICBtX2V4cGFuc2lvblBlck9wcG9ydHVuaXR5ID0gMDsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TZWxlY3Rpb25SZWN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvU2VsZWN0aW9uUmVjdC5jcHAJKHJldmlzaW9uIDIz
NDYxOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9TZWxlY3Rpb25SZWN0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNl
bGVjdGlvblJlY3Q6OlNlbGVjdGlvblJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCwgYm9vbCBpc0hv
cml6b250YWwsIGludCBwYWdlTnVtYmVyKQogICAgIDogbV9yZWN0KHJlY3QpCi0gICAgLCBtX2Rp
cmVjdGlvbihMVFIpCisgICAgLCBtX2RpcmVjdGlvbihUZXh0RGlyZWN0aW9uOjpMVFIpCiAgICAg
LCBtX21pblgoMCkKICAgICAsIG1fbWF4WCgwKQogICAgICwgbV9tYXhZKDApCkBAIC03Miw3ICs3
Miw3IEBAIFNlbGVjdGlvblJlY3Q6OlNlbGVjdGlvblJlY3QoY29uc3QgSW50UmUKIH0KIAogU2Vs
ZWN0aW9uUmVjdDo6U2VsZWN0aW9uUmVjdCgpCi0gICAgOiBtX2RpcmVjdGlvbihMVFIpCisgICAg
OiBtX2RpcmVjdGlvbihUZXh0RGlyZWN0aW9uOjpMVFIpCiAgICAgLCBtX21pblgoMCkKICAgICAs
IG1fbWF4WCgwKQogICAgICwgbV9tYXhZKDApCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L0JpZGlSZXNvbHZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvQmlkaVJlc29sdmVyLmgJKHJldmlzaW9uIDIzNDYxOCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvQmlkaVJlc29sdmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTg2LDEw
ICs4NiwxMCBAQCBzdHJ1Y3QgQmlkaVN0YXR1cyB7CiAgICAgLy8gQ3JlYXRlcyBhIEJpZGlTdGF0
dXMgcmVwcmVzZW50aW5nIGEgbmV3IHBhcmFncmFwaCByb290IHdpdGggYSBkZWZhdWx0IGRpcmVj
dGlvbi4KICAgICAvLyBVc2VzIFRleHREaXJlY3Rpb24gYXMgaXQgb25seSBoYXMgdHdvIHBvc3Np
YmlsaXRpZXMgaW5zdGVhZCBvZiBVQ2hhckRpcmVjdGlvbiB3aGljaCBoYXMgYXQgbGVhc3QgMTku
CiAgICAgQmlkaVN0YXR1cyhUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiwgYm9vbCBpc092ZXJyaWRl
KQotICAgICAgICA6IGVvcihkaXJlY3Rpb24gPT0gTFRSID8gVV9MRUZUX1RPX1JJR0hUIDogVV9S
SUdIVF9UT19MRUZUKQorICAgICAgICA6IGVvcihkaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6
TFRSID8gVV9MRUZUX1RPX1JJR0hUIDogVV9SSUdIVF9UT19MRUZUKQogICAgICAgICAsIGxhc3RT
dHJvbmcoZW9yKQogICAgICAgICAsIGxhc3QoZW9yKQotICAgICAgICAsIGNvbnRleHQoQmlkaUNv
bnRleHQ6OmNyZWF0ZShkaXJlY3Rpb24gPT0gTFRSID8gMCA6IDEsIGVvciwgaXNPdmVycmlkZSkp
CisgICAgICAgICwgY29udGV4dChCaWRpQ29udGV4dDo6Y3JlYXRlKGRpcmVjdGlvbiA9PSBUZXh0
RGlyZWN0aW9uOjpMVFIgPyAwIDogMSwgZW9yLCBpc092ZXJyaWRlKSkKICAgICB7CiAgICAgfQog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N0cmluZ1dpdGhEaXJlY3Rpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N0cmluZ1dpdGhE
aXJlY3Rpb24uaAkocmV2aXNpb24gMjM0NjE4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9TdHJpbmdXaXRoRGlyZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgU3RyaW5nV2l0aERpcmVjdGlvbiB7CiAg
ICAgU3RyaW5nIHN0cmluZzsKLSAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiB7IExUUiB9Owor
ICAgIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uIHsgVGV4dERpcmVjdGlvbjo6TFRSIH07CiB9Owog
CiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIGEsIGNv
bnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIGIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L1dyaXRpbmdNb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9Xcml0aW5nTW9kZS5oCShyZXZpc2lvbiAyMzQ2MTgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L1dyaXRpbmdNb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDExICsz
MywxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWVudW0gVGV4dERpcmVjdGlvbiB7IExU
UiwgUlRMIH07CitlbnVtIGNsYXNzIFRleHREaXJlY3Rpb24gOiB1aW50OF90IHsgTFRSLCBSVEwg
fTsKIAogaW5saW5lIGJvb2wgaXNMZWZ0VG9SaWdodERpcmVjdGlvbihUZXh0RGlyZWN0aW9uIGRp
cmVjdGlvbikKIHsKLSAgICByZXR1cm4gZGlyZWN0aW9uID09IExUUjsKKyAgICByZXR1cm4gZGly
ZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUjsKIH0KIAogZW51bSBXcml0aW5nTW9kZSB7CkBA
IC00NywxOSArNDcsMTkgQEAgZW51bSBXcml0aW5nTW9kZSB7CiAgICAgUmlnaHRUb0xlZnRXcml0
aW5nTW9kZSA9IDMsIC8vIHZlcnRpY2FsLXJsCiB9OwogCi0jZGVmaW5lIE1BS0VfVEVYVF9GTE9X
KHdyaXRpbmdNb2RlLCBkaXJlY3Rpb24pICAoKHdyaXRpbmdNb2RlKSA8PCAxIHwgKGRpcmVjdGlv
bikpCisjZGVmaW5lIE1BS0VfVEVYVF9GTE9XKHdyaXRpbmdNb2RlLCBkaXJlY3Rpb24pICAoKHdy
aXRpbmdNb2RlKSA8PCAxIHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRpcmVjdGlvbikpCiAKIC8v
IERlZmluZSB0aGUgdGV4dCBmbG93IGluIHRlcm1zIG9mIHRoZSB3cml0aW5nIG1vZGUgYW5kIHRo
ZSB0ZXh0IGRpcmVjdGlvbi4gVGhlIGZpcnN0CiAvLyBwYXJ0IGlzIHRoZSBsaW5lIGdyb3dpbmcg
ZGlyZWN0aW9uIGFuZCB0aGUgc2Vjb25kIHBhcnQgaXMgdGhlIGJsb2NrIGdyb3dpbmcgZGlyZWN0
aW9uLgogZW51bSBUZXh0RmxvdyB7Ci0gICAgSW5saW5lRWFzdEJsb2NrU291dGggPSBNQUtFX1RF
WFRfRkxPVyhUb3BUb0JvdHRvbVdyaXRpbmdNb2RlLCBMVFIpLAotICAgIElubGluZVdlc3RCbG9j
a1NvdXRoID0gTUFLRV9URVhUX0ZMT1coVG9wVG9Cb3R0b21Xcml0aW5nTW9kZSwgUlRMKSwKLSAg
ICBJbmxpbmVFYXN0QmxvY2tOb3J0aCA9IE1BS0VfVEVYVF9GTE9XKEJvdHRvbVRvVG9wV3JpdGlu
Z01vZGUsIExUUiksCi0gICAgSW5saW5lV2VzdEJsb2NrTm9ydGggPSBNQUtFX1RFWFRfRkxPVyhC
b3R0b21Ub1RvcFdyaXRpbmdNb2RlLCBSVEwpLAotICAgIElubGluZVNvdXRoQmxvY2tFYXN0ID0g
TUFLRV9URVhUX0ZMT1coTGVmdFRvUmlnaHRXcml0aW5nTW9kZSwgTFRSKSwKLSAgICBJbmxpbmVT
b3V0aEJsb2NrV2VzdCA9IE1BS0VfVEVYVF9GTE9XKExlZnRUb1JpZ2h0V3JpdGluZ01vZGUsIFJU
TCksCi0gICAgSW5saW5lTm9ydGhCbG9ja0Vhc3QgPSBNQUtFX1RFWFRfRkxPVyhSaWdodFRvTGVm
dFdyaXRpbmdNb2RlLCBMVFIpLAotICAgIElubGluZU5vcnRoQmxvY2tXZXN0ID0gTUFLRV9URVhU
X0ZMT1coUmlnaHRUb0xlZnRXcml0aW5nTW9kZSwgUlRMKQorICAgIElubGluZUVhc3RCbG9ja1Nv
dXRoID0gTUFLRV9URVhUX0ZMT1coVG9wVG9Cb3R0b21Xcml0aW5nTW9kZSwgVGV4dERpcmVjdGlv
bjo6TFRSKSwKKyAgICBJbmxpbmVXZXN0QmxvY2tTb3V0aCA9IE1BS0VfVEVYVF9GTE9XKFRvcFRv
Qm90dG9tV3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb246OlJUTCksCisgICAgSW5saW5lRWFzdEJs
b2NrTm9ydGggPSBNQUtFX1RFWFRfRkxPVyhCb3R0b21Ub1RvcFdyaXRpbmdNb2RlLCBUZXh0RGly
ZWN0aW9uOjpMVFIpLAorICAgIElubGluZVdlc3RCbG9ja05vcnRoID0gTUFLRV9URVhUX0ZMT1co
Qm90dG9tVG9Ub3BXcml0aW5nTW9kZSwgVGV4dERpcmVjdGlvbjo6UlRMKSwKKyAgICBJbmxpbmVT
b3V0aEJsb2NrRWFzdCA9IE1BS0VfVEVYVF9GTE9XKExlZnRUb1JpZ2h0V3JpdGluZ01vZGUsIFRl
eHREaXJlY3Rpb246OkxUUiksCisgICAgSW5saW5lU291dGhCbG9ja1dlc3QgPSBNQUtFX1RFWFRf
RkxPVyhMZWZ0VG9SaWdodFdyaXRpbmdNb2RlLCBUZXh0RGlyZWN0aW9uOjpSVEwpLAorICAgIElu
bGluZU5vcnRoQmxvY2tFYXN0ID0gTUFLRV9URVhUX0ZMT1coUmlnaHRUb0xlZnRXcml0aW5nTW9k
ZSwgVGV4dERpcmVjdGlvbjo6TFRSKSwKKyAgICBJbmxpbmVOb3J0aEJsb2NrV2VzdCA9IE1BS0Vf
VEVYVF9GTE9XKFJpZ2h0VG9MZWZ0V3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb246OlJUTCkKIH07
CiAKIGlubGluZSBUZXh0RmxvdyBtYWtlVGV4dEZsb3coV3JpdGluZ01vZGUgd3JpdGluZ01vZGUs
IFRleHREaXJlY3Rpb24gZGlyZWN0aW9uKQpAQCAtOTEsMTMgKzkxLDEzIEBAIGlubGluZSBib29s
IGlzVmVydGljYWxUZXh0RmxvdyhUZXh0RmxvdyAKIC8vIExpbmVzIGhhdmUgdmVydGljYWwgb3Jp
ZW50YXRpb247IG1vZGVzIHZlcnRpY2FsLWxyIG9yIHZlcnRpY2FsLXJsLgogaW5saW5lIGJvb2wg
aXNWZXJ0aWNhbFdyaXRpbmdNb2RlKFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKQogewotICAgIHJl
dHVybiBpc1ZlcnRpY2FsVGV4dEZsb3cobWFrZVRleHRGbG93KHdyaXRpbmdNb2RlLCBMVFIpKTsK
KyAgICByZXR1cm4gaXNWZXJ0aWNhbFRleHRGbG93KG1ha2VUZXh0Rmxvdyh3cml0aW5nTW9kZSwg
VGV4dERpcmVjdGlvbjo6TFRSKSk7CiB9CiAKIC8vIEJsb2NrIHByb2dyZXNzaW9uIGluY3JlYXNl
cyBpbiB0aGUgb3Bwb3NpdGUgZGlyZWN0aW9uIHRvIG5vcm1hbDsgbW9kZXMgdmVydGljYWwtcmwg
b3IgaG9yaXpvbnRhbC1idC4KIGlubGluZSBib29sIGlzRmxpcHBlZFdyaXRpbmdNb2RlKFdyaXRp
bmdNb2RlIHdyaXRpbmdNb2RlKQogewotICAgIHJldHVybiBpc0ZsaXBwZWRUZXh0RmxvdyhtYWtl
VGV4dEZsb3cod3JpdGluZ01vZGUsIExUUikpOworICAgIHJldHVybiBpc0ZsaXBwZWRUZXh0Rmxv
dyhtYWtlVGV4dEZsb3cod3JpdGluZ01vZGUsIFRleHREaXJlY3Rpb246OkxUUikpOwogfQogCiAv
LyBMaW5lcyBoYXZlIGhvcml6b250YWwgb3JpZW50YXRpb247IG1vZGVzIGhvcml6b250YWwtdGIg
b3IgaG9yaXpvbnRhbC1idC4KQEAgLTE2MSw3ICsxNjEsNyBAQCBpbmxpbmUgUGh5c2ljYWxCb3hT
aWRlIG1hcExvZ2ljYWxTaWRlVG9QCiBpbmxpbmUgUGh5c2ljYWxCb3hTaWRlIG1hcExvZ2ljYWxT
aWRlVG9QaHlzaWNhbFNpZGUoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIExvZ2ljYWxCb3hTaWRl
IGxvZ2ljYWxTaWRlKQogewogICAgIC8vIFNldCB0aGUgZGlyZWN0aW9uIHN1Y2ggdGhhdCBzaWRl
IGlzIG1pcnJvcmVkIGlmIGlzRmxpcHBlZFdyaXRpbmdNb2RlKCkgaXMgdHJ1ZQotICAgIFRleHRE
aXJlY3Rpb24gZGlyZWN0aW9uID0gaXNGbGlwcGVkV3JpdGluZ01vZGUod3JpdGluZ01vZGUpID8g
UlRMIDogTFRSOworICAgIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gaXNGbGlwcGVkV3JpdGlu
Z01vZGUod3JpdGluZ01vZGUpID8gVGV4dERpcmVjdGlvbjo6UlRMIDogVGV4dERpcmVjdGlvbjo6
TFRSOwogICAgIHJldHVybiBtYXBMb2dpY2FsU2lkZVRvUGh5c2ljYWxTaWRlKG1ha2VUZXh0Rmxv
dyh3cml0aW5nTW9kZSwgZGlyZWN0aW9uKSwgbG9naWNhbFNpZGUpOwogfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcAkocmV2aXNpb24gMjM0
NjE4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BvcHVwTWVudVdpbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTY1Nyw3ICs2NTcsNyBAQCB2b2lkIFBvcHVwTWVudVdpbjo6cGFpbnQo
Y29uc3QgSW50UmVjdCYgCiAgICAgICAgIC8vIERyYXcgdGhlIGl0ZW0gdGV4dAogICAgICAgICBp
ZiAoaXRlbVN0eWxlLmlzVmlzaWJsZSgpKSB7CiAgICAgICAgICAgICBpbnQgdGV4dFggPSAwOwot
ICAgICAgICAgICAgaWYgKGNsaWVudCgpLT5tZW51U3R5bGUoKS50ZXh0RGlyZWN0aW9uKCkgPT0g
TFRSKSB7CisgICAgICAgICAgICBpZiAoY2xpZW50KCktPm1lbnVTdHlsZSgpLnRleHREaXJlY3Rp
b24oKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpIHsKICAgICAgICAgICAgICAgICB0ZXh0WCA9IHN0
ZDo6bWF4PGludD4oMCwgY2xpZW50KCktPmNsaWVudFBhZGRpbmdMZWZ0KCkgLSBjbGllbnQoKS0+
Y2xpZW50SW5zZXRMZWZ0KCkpOwogICAgICAgICAgICAgICAgIGlmIChSZW5kZXJUaGVtZTo6c2lu
Z2xldG9uKCkucG9wdXBPcHRpb25TdXBwb3J0c1RleHRJbmRlbnQoKSkKICAgICAgICAgICAgICAg
ICAgICAgdGV4dFggKz0gbWluaW11bUludFZhbHVlRm9yTGVuZ3RoKGl0ZW1TdHlsZS50ZXh0SW5k
ZW50KCksIGl0ZW1SZWN0LndpZHRoKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0hpdFRlc3RSZXN1bHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9IaXRUZXN0UmVzdWx0LmNwcAkocmV2aXNpb24gMjM0NjE4KQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjAsNyArMjIw
LDcgQEAgU3RyaW5nIEhpdFRlc3RSZXN1bHQ6OnNlbGVjdGVkVGV4dCgpIGNvbgogCiBTdHJpbmcg
SGl0VGVzdFJlc3VsdDo6c3BlbGxpbmdUb29sVGlwKFRleHREaXJlY3Rpb24mIGRpcikgY29uc3QK
IHsKLSAgICBkaXIgPSBMVFI7CisgICAgZGlyID0gVGV4dERpcmVjdGlvbjo6TFRSOwogICAgIC8v
IFJldHVybiB0aGUgdG9vbCB0aXAgc3RyaW5nIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHBvaW50LCBp
ZiBhbnkuIE9ubHkgbWFya2VycyBhc3NvY2lhdGVkIHdpdGggYmFkIGdyYW1tYXIKICAgICAvLyBj
dXJyZW50bHkgc3VwcGx5IHN0cmluZ3MsIGJ1dCBtYXliZSBzb21lZGF5IG1hcmtlcnMgYXNzb2Np
YXRlZCB3aXRoIG1pc3NwZWxsZWQgd29yZHMgd2lsbCBhbHNvLgogICAgIGlmICghbV9pbm5lck5v
blNoYXJlZE5vZGUpCkBAIC0yNTEsNyArMjUxLDcgQEAgU3RyaW5nIEhpdFRlc3RSZXN1bHQ6OnJl
cGxhY2VkU3RyaW5nKCkgYwogICAgIAogU3RyaW5nIEhpdFRlc3RSZXN1bHQ6OnRpdGxlKFRleHRE
aXJlY3Rpb24mIGRpcikgY29uc3QKIHsKLSAgICBkaXIgPSBMVFI7CisgICAgZGlyID0gVGV4dERp
cmVjdGlvbjo6TFRSOwogICAgIC8vIEZpbmQgdGhlIHRpdGxlIGluIHRoZSBuZWFyZXN0IGVuY2xv
c2luZyBET00gbm9kZS4KICAgICAvLyBGb3IgPGFyZWE+IHRhZ3MgaW4gaW1hZ2UgbWFwcywgd2Fs
ayB0aGUgdHJlZSBmb3IgdGhlIDxhcmVhPiwgbm90IHRoZSA8aW1nPiB1c2luZyBpdC4KICAgICBm
b3IgKE5vZGUqIHRpdGxlTm9kZSA9IG1faW5uZXJOb2RlLmdldCgpOyB0aXRsZU5vZGU7IHRpdGxl
Tm9kZSA9IHRpdGxlTm9kZS0+cGFyZW50SW5Db21wb3NlZFRyZWUoKSkgewpAQCAtMjkwLDcgKzI5
MCw3IEBAIFN0cmluZyBIaXRUZXN0UmVzdWx0Ojppbm5lclRleHRJZlRydW5jYXQKICAgICAgICAg
fQogICAgIH0KIAotICAgIGRpciA9IExUUjsKKyAgICBkaXIgPSBUZXh0RGlyZWN0aW9uOjpMVFI7
CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvSW5saW5lQm94LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lu
bGluZUJveC5oCShyZXZpc2lvbiAyMzQ2MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SW5saW5lQm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTIxOCw4ICsyMTgsOCBAQCBwdWJsaWM6CiAK
ICAgICB1bnNpZ25lZCBjaGFyIGJpZGlMZXZlbCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0ZmllbGRz
LmJpZGlFbWJlZGRpbmdMZXZlbCgpOyB9CiAgICAgdm9pZCBzZXRCaWRpTGV2ZWwodW5zaWduZWQg
Y2hhciBsZXZlbCkgeyBtX2JpdGZpZWxkcy5zZXRCaWRpRW1iZWRkaW5nTGV2ZWwobGV2ZWwpOyB9
Ci0gICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBiaWRpTGV2ZWwo
KSAlIDIgPyBSVEwgOiBMVFI7IH0KLSAgICBib29sIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSBj
b25zdCB7IHJldHVybiBkaXJlY3Rpb24oKSA9PSBMVFI7IH0KKyAgICBUZXh0RGlyZWN0aW9uIGRp
cmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIGJpZGlMZXZlbCgpICUgMiA/IFRleHREaXJlY3Rpb246
OlJUTCA6IFRleHREaXJlY3Rpb246OkxUUjsgfQorICAgIGJvb2wgaXNMZWZ0VG9SaWdodERpcmVj
dGlvbigpIGNvbnN0IHsgcmV0dXJuIGRpcmVjdGlvbigpID09IFRleHREaXJlY3Rpb246OkxUUjsg
fQogICAgIGludCBjYXJldExlZnRtb3N0T2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gaXNMZWZ0VG9S
aWdodERpcmVjdGlvbigpID8gY2FyZXRNaW5PZmZzZXQoKSA6IGNhcmV0TWF4T2Zmc2V0KCk7IH0K
ICAgICBpbnQgY2FyZXRSaWdodG1vc3RPZmZzZXQoKSBjb25zdCB7IHJldHVybiBpc0xlZnRUb1Jp
Z2h0RGlyZWN0aW9uKCkgPyBjYXJldE1heE9mZnNldCgpIDogY2FyZXRNaW5PZmZzZXQoKTsgfQog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCShyZXZp
c2lvbiAyMzQ2MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNTEsNyArMTI1MSw3IEBAIHZvaWQgSW5saW5lRmxvd0Jv
eDo6cGFpbnRGaWxsTGF5ZXIoY29uc3QKICAgICAgICAgLy8gdGhlIHByZXZpb3VzIGxpbmUgbGVm
dCBvZmYuCiAgICAgICAgIExheW91dFVuaXQgbG9naWNhbE9mZnNldE9uTGluZSA9IDA7CiAgICAg
ICAgIExheW91dFVuaXQgdG90YWxMb2dpY2FsV2lkdGg7Ci0gICAgICAgIGlmIChyZW5kZXJlcigp
LnN0eWxlKCkuZGlyZWN0aW9uKCkgPT0gTFRSKSB7CisgICAgICAgIGlmIChyZW5kZXJlcigpLnN0
eWxlKCkuZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSKSB7CiAgICAgICAgICAgICBm
b3IgKElubGluZUZsb3dCb3gqIGN1cnIgPSBwcmV2TGluZUJveCgpOyBjdXJyOyBjdXJyID0gY3Vy
ci0+cHJldkxpbmVCb3goKSkKICAgICAgICAgICAgICAgICBsb2dpY2FsT2Zmc2V0T25MaW5lICs9
IGN1cnItPmxvZ2ljYWxXaWR0aCgpOwogICAgICAgICAgICAgdG90YWxMb2dpY2FsV2lkdGggPSBs
b2dpY2FsT2Zmc2V0T25MaW5lOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGlu
ZUl0ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGlu
ZUl0ZXJhdG9yLmgJKHJldmlzaW9uIDIzNDYxOCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9JbmxpbmVJdGVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDIsOCArMTQyLDggQEAgaW5s
aW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJbmxpbmVJdGVyYQogc3RhdGljIGlubGluZSBVQ2hh
ckRpcmVjdGlvbiBlbWJlZENoYXJGcm9tRGlyZWN0aW9uKFRleHREaXJlY3Rpb24gZGlyZWN0aW9u
LCBFVW5pY29kZUJpZGkgdW5pY29kZUJpZGkpCiB7CiAgICAgaWYgKHVuaWNvZGVCaWRpID09IEVt
YmVkKQotICAgICAgICByZXR1cm4gZGlyZWN0aW9uID09IFJUTCA/IFVfUklHSFRfVE9fTEVGVF9F
TUJFRERJTkcgOiBVX0xFRlRfVE9fUklHSFRfRU1CRURESU5HOwotICAgIHJldHVybiBkaXJlY3Rp
b24gPT0gUlRMID8gVV9SSUdIVF9UT19MRUZUX09WRVJSSURFIDogVV9MRUZUX1RPX1JJR0hUX09W
RVJSSURFOworICAgICAgICByZXR1cm4gZGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OlJUTCA/
IFVfUklHSFRfVE9fTEVGVF9FTUJFRERJTkcgOiBVX0xFRlRfVE9fUklHSFRfRU1CRURESU5HOwor
ICAgIHJldHVybiBkaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6UlRMID8gVV9SSUdIVF9UT19M
RUZUX09WRVJSSURFIDogVV9MRUZUX1RPX1JJR0hUX09WRVJSSURFOwogfQogCiB0ZW1wbGF0ZSA8
Y2xhc3MgT2JzZXJ2ZXI+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4
dEJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRl
eHRCb3guY3BwCShyZXZpc2lvbiAyMzQ2MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SW5saW5lVGV4dEJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5Myw3ICs1OTMsNyBAQCB2b2lk
IElubGluZVRleHRCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFpCiAgICAgICAgICAgICBpZiAoIWlz
SG9yaXpvbnRhbCgpKSB7CiAgICAgICAgICAgICAgICAgdGV4dERlY29yYXRpb25TZWxlY3Rpb25D
bGlwT3V0UmVjdC5tb3ZlKDAsIGxvZ2ljYWxXaWR0aEJlZm9yZVJhbmdlKTsKICAgICAgICAgICAg
ICAgICB0ZXh0RGVjb3JhdGlvblNlbGVjdGlvbkNsaXBPdXRSZWN0LnNldEhlaWdodChsb2dpY2Fs
U2VsZWN0aW9uV2lkdGgpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChkaXJlY3Rpb24oKSA9PSBS
VEwpIHsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlv
bjo6UlRMKSB7CiAgICAgICAgICAgICAgICAgdGV4dERlY29yYXRpb25TZWxlY3Rpb25DbGlwT3V0
UmVjdC5tb3ZlKGxvZ2ljYWxXaWR0aEFmdGVyUmFuZ2UsIDApOwogICAgICAgICAgICAgICAgIHRl
eHREZWNvcmF0aW9uU2VsZWN0aW9uQ2xpcE91dFJlY3Quc2V0V2lkdGgobG9naWNhbFNlbGVjdGlv
bldpZHRoKTsKICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC0xMTM5LDcgKzExMzksNyBAQCB2b2lk
IElubGluZVRleHRCb3g6OnBhaW50Q29tcG9zaXRpb25VbmRlCiAKIHN0YXRpYyBpbmxpbmUgdm9p
ZCBtaXJyb3JSVExTZWdtZW50KGZsb2F0IGxvZ2ljYWxXaWR0aCwgVGV4dERpcmVjdGlvbiBkaXJl
Y3Rpb24sIGZsb2F0JiBzdGFydCwgZmxvYXQgd2lkdGgpCiB7Ci0gICAgaWYgKGRpcmVjdGlvbiA9
PSBMVFIpCisgICAgaWYgKGRpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpCiAgICAgICAg
IHJldHVybjsKICAgICBzdGFydCA9IGxvZ2ljYWxXaWR0aCAtIHdpZHRoIC0gc3RhcnQ7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHJldmlzaW9uIDIz
NDYxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMwOTUsNyArMzA5NSw3IEBAIGNvbnN0IGNoYXIqIFJlbmRlckJsb2NrOjpy
ZW5kZXJOYW1lKCkgY28KIAogVGV4dFJ1biBSZW5kZXJCbG9jazo6Y29uc3RydWN0VGV4dFJ1bihT
dHJpbmdWaWV3IHN0cmluZ1ZpZXcsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgRXhwYW5zaW9u
QmVoYXZpb3IgZXhwYW5zaW9uLCBUZXh0UnVuRmxhZ3MgZmxhZ3MpCiB7Ci0gICAgVGV4dERpcmVj
dGlvbiB0ZXh0RGlyZWN0aW9uID0gTFRSOworICAgIGF1dG8gdGV4dERpcmVjdGlvbiA9IFRleHRE
aXJlY3Rpb246OkxUUjsKICAgICBib29sIGRpcmVjdGlvbmFsT3ZlcnJpZGUgPSBzdHlsZS5ydGxP
cmRlcmluZygpID09IE9yZGVyOjpWaXN1YWw7CiAgICAgaWYgKGZsYWdzICE9IERlZmF1bHRUZXh0
UnVuRmxhZ3MpIHsKICAgICAgICAgaWYgKGZsYWdzICYgUmVzcGVjdERpcmVjdGlvbikKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQu
Y3BwCShyZXZpc2lvbiAyMzQ2MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2tMaW5lTGF5b3V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAsMTEgKzYwLDExIEBAIHN0
YXRpYyB2b2lkIGRldGVybWluZURpcmVjdGlvbmFsaXR5KFRleHQKICAgICAgICAgaWYgKFVDaGFy
IGN1cnJlbnQgPSBpdGVyLmN1cnJlbnQoKSkgewogICAgICAgICAgICAgVUNoYXJEaXJlY3Rpb24g
Y2hhckRpcmVjdGlvbiA9IHVfY2hhckRpcmVjdGlvbihjdXJyZW50KTsKICAgICAgICAgICAgIGlm
IChjaGFyRGlyZWN0aW9uID09IFVfTEVGVF9UT19SSUdIVCkgewotICAgICAgICAgICAgICAgIGRp
ciA9IExUUjsKKyAgICAgICAgICAgICAgICBkaXIgPSBUZXh0RGlyZWN0aW9uOjpMVFI7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGNoYXJE
aXJlY3Rpb24gPT0gVV9SSUdIVF9UT19MRUZUIHx8IGNoYXJEaXJlY3Rpb24gPT0gVV9SSUdIVF9U
T19MRUZUX0FSQUJJQykgewotICAgICAgICAgICAgICAgIGRpciA9IFJUTDsKKyAgICAgICAgICAg
ICAgICBkaXIgPSBUZXh0RGlyZWN0aW9uOjpSVEw7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0zNDgsNyArMzQ4LDcgQEAgVGV4dEFsaWduTW9k
ZSBSZW5kZXJCbG9ja0Zsb3c6OnRleHRBbGlnbgogI2lmIEVOQUJMRShDU1MzX1RFWFQpCiAgICAg
VGV4dEp1c3RpZnkgdGV4dEp1c3RpZnkgPSBzdHlsZSgpLnRleHRKdXN0aWZ5KCk7CiAgICAgaWYg
KGFsaWdubWVudCA9PSBUZXh0QWxpZ25Nb2RlOjpKdXN0aWZ5ICYmIHRleHRKdXN0aWZ5ID09IFRl
eHRKdXN0aWZ5OjpOb25lKQotICAgICAgICByZXR1cm4gc3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBM
VFIgPyBUZXh0QWxpZ25Nb2RlOjpMZWZ0IDogVGV4dEFsaWduTW9kZTo6UmlnaHQ7CisgICAgICAg
IHJldHVybiBzdHlsZSgpLmRpcmVjdGlvbigpID09IFRleHREaXJlY3Rpb246OkxUUiA/IFRleHRB
bGlnbk1vZGU6OkxlZnQgOiBUZXh0QWxpZ25Nb2RlOjpSaWdodDsKICNlbmRpZgogCiAgICAgaWYg
KGVuZHNXaXRoU29mdEJyZWFrKQpAQCAtNjUwLDEzICs2NTAsMTMgQEAgdm9pZCBSZW5kZXJCbG9j
a0Zsb3c6OnVwZGF0ZUxvZ2ljYWxXaWR0aAogICAgICAgICB9CiAgICAgICAgIEZBTExUSFJPVUdI
OwogICAgIGNhc2UgVGV4dEFsaWduTW9kZTo6U3RhcnQ6Ci0gICAgICAgIGlmIChkaXJlY3Rpb24g
PT0gTFRSKQorICAgICAgICBpZiAoZGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUikKICAg
ICAgICAgICAgIHVwZGF0ZUxvZ2ljYWxXaWR0aEZvckxlZnRBbGlnbmVkQmxvY2soc3R5bGUoKS5p
c0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCksIHRyYWlsaW5nU3BhY2VSdW4sIGxvZ2ljYWxMZWZ0LCB0
b3RhbExvZ2ljYWxXaWR0aCwgYXZhaWxhYmxlTG9naWNhbFdpZHRoKTsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgdXBkYXRlTG9naWNhbFdpZHRoRm9yUmlnaHRBbGlnbmVkQmxvY2soc3R5bGUo
KS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCksIHRyYWlsaW5nU3BhY2VSdW4sIGxvZ2ljYWxMZWZ0
LCB0b3RhbExvZ2ljYWxXaWR0aCwgYXZhaWxhYmxlTG9naWNhbFdpZHRoKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBUZXh0QWxpZ25Nb2RlOjpFbmQ6Ci0gICAgICAgIGlmIChkaXJlY3Rpb24g
PT0gTFRSKQorICAgICAgICBpZiAoZGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUikKICAg
ICAgICAgICAgIHVwZGF0ZUxvZ2ljYWxXaWR0aEZvclJpZ2h0QWxpZ25lZEJsb2NrKHN0eWxlKCku
aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpLCB0cmFpbGluZ1NwYWNlUnVuLCBsb2dpY2FsTGVmdCwg
dG90YWxMb2dpY2FsV2lkdGgsIGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIHVwZGF0ZUxvZ2ljYWxXaWR0aEZvckxlZnRBbGlnbmVkQmxvY2soc3R5bGUo
KS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCksIHRyYWlsaW5nU3BhY2VSdW4sIGxvZ2ljYWxMZWZ0
LCB0b3RhbExvZ2ljYWxXaWR0aCwgYXZhaWxhYmxlTG9naWNhbFdpZHRoKTsKQEAgLTEwNjEsNyAr
MTA2MSw3IEBAIGlubGluZSBCaWRpUnVuKiBSZW5kZXJCbG9ja0Zsb3c6OmhhbmRsZVQKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IHN0eWxl
KCkuZGlyZWN0aW9uKCk7Ci0gICAgYm9vbCBzaG91bGRSZW9yZGVyID0gdHJhaWxpbmdTcGFjZVJ1
biAhPSAoZGlyZWN0aW9uID09IExUUiA/IGJpZGlSdW5zLmxhc3RSdW4oKSA6IGJpZGlSdW5zLmZp
cnN0UnVuKCkpOworICAgIGJvb2wgc2hvdWxkUmVvcmRlciA9IHRyYWlsaW5nU3BhY2VSdW4gIT0g
KGRpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBiaWRpUnVucy5sYXN0UnVuKCkgOiBi
aWRpUnVucy5maXJzdFJ1bigpKTsKICAgICBpZiAoZmlyc3RTcGFjZSAhPSB0cmFpbGluZ1NwYWNl
UnVuLT5zdGFydCgpKSB7CiAgICAgICAgIEJpZGlDb250ZXh0KiBiYXNlQ29udGV4dCA9IGN1cnJl
bnRDb250ZXh0OwogICAgICAgICB3aGlsZSAoQmlkaUNvbnRleHQqIHBhcmVudCA9IGJhc2VDb250
ZXh0LT5wYXJlbnQoKSkKQEAgLTEwNzAsNyArMTA3MCw3IEBAIGlubGluZSBCaWRpUnVuKiBSZW5k
ZXJCbG9ja0Zsb3c6OmhhbmRsZVQKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEJpZGlSdW4+IG5l
d1RyYWlsaW5nUnVuID0gc3RkOjptYWtlX3VuaXF1ZTxCaWRpUnVuPihmaXJzdFNwYWNlLCB0cmFp
bGluZ1NwYWNlUnVuLT5tX3N0b3AsIHRyYWlsaW5nU3BhY2VSdW4tPnJlbmRlcmVyKCksIGJhc2VD
b250ZXh0LCBVX09USEVSX05FVVRSQUwpOwogICAgICAgICB0cmFpbGluZ1NwYWNlUnVuLT5tX3N0
b3AgPSBmaXJzdFNwYWNlOwogICAgICAgICB0cmFpbGluZ1NwYWNlUnVuID0gbmV3VHJhaWxpbmdS
dW4uZ2V0KCk7Ci0gICAgICAgIGlmIChkaXJlY3Rpb24gPT0gTFRSKQorICAgICAgICBpZiAoZGly
ZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUikKICAgICAgICAgICAgIGJpZGlSdW5zLmFwcGVu
ZFJ1bihXVEZNb3ZlKG5ld1RyYWlsaW5nUnVuKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IGJpZGlSdW5zLnByZXBlbmRSdW4oV1RGTW92ZShuZXdUcmFpbGluZ1J1bikpOwpAQCAtMTA3OSw3
ICsxMDc5LDcgQEAgaW5saW5lIEJpZGlSdW4qIFJlbmRlckJsb2NrRmxvdzo6aGFuZGxlVAogICAg
IGlmICghc2hvdWxkUmVvcmRlcikKICAgICAgICAgcmV0dXJuIHRyYWlsaW5nU3BhY2VSdW47CiAK
LSAgICBpZiAoZGlyZWN0aW9uID09IExUUikgeworICAgIGlmIChkaXJlY3Rpb24gPT0gVGV4dERp
cmVjdGlvbjo6TFRSKSB7CiAgICAgICAgIGJpZGlSdW5zLm1vdmVSdW5Ub0VuZCh0cmFpbGluZ1Nw
YWNlUnVuKTsKICAgICAgICAgdHJhaWxpbmdTcGFjZVJ1bi0+bV9sZXZlbCA9IDA7CiAgICAgfSBl
bHNlIHsKQEAgLTEzNzgsNyArMTM3OCw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpsYXlvdXRS
dW5zQW5kRmxvYXQKICAgICAgICAgICAgIGlmIChsYXN0Um9vdEJveCgpKQogICAgICAgICAgICAg
ICAgIGxhc3RSb290Qm94KCktPnNldExpbmVCcmVha0luZm8oZW5kLnJlbmRlcmVyKCksIGVuZC5v
ZmZzZXQoKSwgcmVzb2x2ZXIuc3RhdHVzKCkpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgVmlzdWFsRGlyZWN0aW9uT3ZlcnJpZGUgb3ZlcnJpZGUgPSAoc3R5bGVUb1VzZS5ydGxPcmRl
cmluZygpID09IE9yZGVyOjpWaXN1YWwgPyAoc3R5bGVUb1VzZS5kaXJlY3Rpb24oKSA9PSBMVFIg
PyBWaXN1YWxMZWZ0VG9SaWdodE92ZXJyaWRlIDogVmlzdWFsUmlnaHRUb0xlZnRPdmVycmlkZSkg
OiBOb1Zpc3VhbE92ZXJyaWRlKTsKKyAgICAgICAgICAgIFZpc3VhbERpcmVjdGlvbk92ZXJyaWRl
IG92ZXJyaWRlID0gKHN0eWxlVG9Vc2UucnRsT3JkZXJpbmcoKSA9PSBPcmRlcjo6VmlzdWFsID8g
KHN0eWxlVG9Vc2UuZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gVmlzdWFsTGVm
dFRvUmlnaHRPdmVycmlkZSA6IFZpc3VhbFJpZ2h0VG9MZWZ0T3ZlcnJpZGUpIDogTm9WaXN1YWxP
dmVycmlkZSk7CiAKICAgICAgICAgICAgIGlmIChpc05ld1VCQVBhcmFncmFwaCAmJiBzdHlsZVRv
VXNlLnVuaWNvZGVCaWRpKCkgPT0gUGxhaW50ZXh0ICYmICFyZXNvbHZlci5jb250ZXh0KCktPnBh
cmVudCgpKSB7CiAgICAgICAgICAgICAgICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBzdHls
ZVRvVXNlLmRpcmVjdGlvbigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eC5jcHAJKHJldmlzaW9uIDIzNDYxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzMwLDcgKzMzMzAsNyBAQCBzdGF0aWMgdm9p
ZCBjb21wdXRlSW5saW5lU3RhdGljRGlzdGFuY2UoCiAgICAgLy8gYm90aCAibGVmdCIgYW5kICJy
aWdodCIgcHJvcGVydGllcyBhcmUgImF1dG8iLCB3ZSBjYW4gY29uc2lkZXIgdGhhdCBvbmUgb2YK
ICAgICAvLyB0aGVtIChkZXBlbmRpbmcgb24gdGhlIGRpcmVjdGlvbikgaXMgc2ltcGx5ICIwIi4K
ICAgICBpZiAocGFyZW50LT5pc1JlbmRlckdyaWQoKSAmJiBwYXJlbnQgPT0gY2hpbGQtPmNvbnRh
aW5pbmdCbG9jaygpKSB7Ci0gICAgICAgIGlmIChwYXJlbnREaXJlY3Rpb24gPT0gTFRSKQorICAg
ICAgICBpZiAocGFyZW50RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUikKICAgICAgICAg
ICAgIGxvZ2ljYWxMZWZ0LnNldFZhbHVlKEZpeGVkLCAwKTsKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgbG9naWNhbFJpZ2h0LnNldFZhbHVlKEZpeGVkLCAwKTsKQEAgLTMzMzgsNyArMzMzOCw3
IEBAIHN0YXRpYyB2b2lkIGNvbXB1dGVJbmxpbmVTdGF0aWNEaXN0YW5jZSgKICAgICB9CiAKICAg
ICAvLyBGSVhNRTogVGhlIHN0YXRpYyBkaXN0YW5jZSBjb21wdXRhdGlvbiBoYXMgbm90IGJlZW4g
cGF0Y2hlZCBmb3IgbWl4ZWQgd3JpdGluZyBtb2RlcyB5ZXQuCi0gICAgaWYgKHBhcmVudERpcmVj
dGlvbiA9PSBMVFIpIHsKKyAgICBpZiAocGFyZW50RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246
OkxUUikgewogICAgICAgICBMYXlvdXRVbml0IHN0YXRpY1Bvc2l0aW9uID0gY2hpbGQtPmxheWVy
KCktPnN0YXRpY0lubGluZVBvc2l0aW9uKCkgLSBjb250YWluZXJCbG9jay5ib3JkZXJMb2dpY2Fs
TGVmdCgpOwogICAgICAgICBmb3IgKGF1dG8qIGN1cnJlbnQgPSBwYXJlbnQ7IGN1cnJlbnQgJiYg
Y3VycmVudCAhPSAmY29udGFpbmVyQmxvY2s7IGN1cnJlbnQgPSBjdXJyZW50LT5jb250YWluZXIo
KSkgewogICAgICAgICAgICAgaWYgKCFpczxSZW5kZXJCb3g+KCpjdXJyZW50KSkKQEAgLTM1OTcs
NyArMzU5Nyw3IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9zaXRpb25lZExvZ2ljYWwKICAg
ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8gVXNlIHRoZSBjb250YWluaW5n
IGJsb2NrJ3MgZGlyZWN0aW9uIHJhdGhlciB0aGFuIHRoZSBwYXJlbnQgYmxvY2sncwogICAgICAg
ICAgICAgICAgIC8vIHBlciBDU1MgMi4xIHJlZmVyZW5jZSB0ZXN0IGFic3Bvcy1ub24tcmVwbGFj
ZWQtd2lkdGgtbWFyZ2luLTAwMC4KLSAgICAgICAgICAgICAgICBpZiAoY29udGFpbmVyRGlyZWN0
aW9uID09IExUUikgeworICAgICAgICAgICAgICAgIGlmIChjb250YWluZXJEaXJlY3Rpb24gPT0g
VGV4dERpcmVjdGlvbjo6TFRSKSB7CiAgICAgICAgICAgICAgICAgICAgIG1hcmdpbkxvZ2ljYWxM
ZWZ0VmFsdWUgPSAwOwogICAgICAgICAgICAgICAgICAgICBtYXJnaW5Mb2dpY2FsUmlnaHRWYWx1
ZSA9IGF2YWlsYWJsZVNwYWNlOyAvLyB3aWxsIGJlIG5lZ2F0aXZlCiAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKQEAgLTM2MjAsNyArMzYyMCw3IEBAIHZvaWQgUmVuZGVyQm94Ojpjb21wdXRlUG9z
aXRpb25lZExvZ2ljYWwKIAogICAgICAgICAgICAgLy8gVXNlIHRoZSBjb250YWluaW5nIGJsb2Nr
J3MgZGlyZWN0aW9uIHJhdGhlciB0aGFuIHRoZSBwYXJlbnQgYmxvY2sncwogICAgICAgICAgICAg
Ly8gcGVyIENTUyAyLjEgcmVmZXJlbmNlIHRlc3QgYWJzcG9zLW5vbi1yZXBsYWNlZC13aWR0aC1t
YXJnaW4tMDAwLgotICAgICAgICAgICAgaWYgKGNvbnRhaW5lckRpcmVjdGlvbiA9PSBSVEwpCisg
ICAgICAgICAgICBpZiAoY29udGFpbmVyRGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OlJUTCkK
ICAgICAgICAgICAgICAgICBsb2dpY2FsTGVmdFZhbHVlID0gKGF2YWlsYWJsZVNwYWNlICsgbG9n
aWNhbExlZnRWYWx1ZSkgLSBtYXJnaW5Mb2dpY2FsTGVmdFZhbHVlIC0gbWFyZ2luTG9naWNhbFJp
Z2h0VmFsdWU7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewpAQCAtNDA5NSw3ICs0MDk1LDcgQEAg
dm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVQb3NpdGlvbmVkTG9naWNhbAogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgLy8gVXNlIHRoZSBjb250YWluaW5nIGJsb2NrJ3MgZGlyZWN0aW9uIHJh
dGhlciB0aGFuIHRoZSBwYXJlbnQgYmxvY2sncwogICAgICAgICAgICAgLy8gcGVyIENTUyAyLjEg
cmVmZXJlbmNlIHRlc3QgYWJzcG9zLXJlcGxhY2VkLXdpZHRoLW1hcmdpbi0wMDAuCi0gICAgICAg
ICAgICBpZiAoY29udGFpbmVyRGlyZWN0aW9uID09IExUUikgeworICAgICAgICAgICAgaWYgKGNv
bnRhaW5lckRpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpIHsKICAgICAgICAgICAgICAg
ICBtYXJnaW5Mb2dpY2FsTGVmdEFsaWFzID0gMDsKICAgICAgICAgICAgICAgICBtYXJnaW5Mb2dp
Y2FsUmlnaHRBbGlhcyA9IGRpZmZlcmVuY2U7IC8vIHdpbGwgYmUgbmVnYXRpdmUKICAgICAgICAg
ICAgIH0gZWxzZSB7CkBAIC00MTQzLDcgKzQxNDMsNyBAQCB2b2lkIFJlbmRlckJveDo6Y29tcHV0
ZVBvc2l0aW9uZWRMb2dpY2FsCiAgICAgICAgIGxvZ2ljYWxSaWdodFZhbHVlID0gdmFsdWVGb3JM
ZW5ndGgobG9naWNhbFJpZ2h0LCBjb250YWluZXJMb2dpY2FsV2lkdGgpOwogICAgICAgICBsb2dp
Y2FsTGVmdFZhbHVlID0gdmFsdWVGb3JMZW5ndGgobG9naWNhbExlZnQsIGNvbnRhaW5lckxvZ2lj
YWxXaWR0aCk7CiAgICAgICAgIC8vIElmIHRoZSBjb250YWluaW5nIGJsb2NrIGlzIHJpZ2h0LXRv
LWxlZnQsIHRoZW4gcHVzaCB0aGUgbGVmdCBwb3NpdGlvbiBhcyBmYXIgdG8gdGhlIHJpZ2h0IGFz
IHBvc3NpYmxlCi0gICAgICAgIGlmIChjb250YWluZXJEaXJlY3Rpb24gPT0gUlRMKSB7CisgICAg
ICAgIGlmIChjb250YWluZXJEaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6UlRMKSB7CiAgICAg
ICAgICAgICBpbnQgdG90YWxMb2dpY2FsV2lkdGggPSBjb21wdXRlZFZhbHVlcy5tX2V4dGVudCAr
IGxvZ2ljYWxMZWZ0VmFsdWUgKyBsb2dpY2FsUmlnaHRWYWx1ZSArICBtYXJnaW5Mb2dpY2FsTGVm
dEFsaWFzICsgbWFyZ2luTG9naWNhbFJpZ2h0QWxpYXM7CiAgICAgICAgICAgICBsb2dpY2FsTGVm
dFZhbHVlID0gY29udGFpbmVyTG9naWNhbFdpZHRoIC0gKHRvdGFsTG9naWNhbFdpZHRoIC0gbG9n
aWNhbExlZnRWYWx1ZSk7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3guY3BwCShyZXZpc2lv
biAyMzQ2MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGVwcmVjYXRlZEZs
ZXhpYmxlQm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTc2LDcgKzk3Niw3IEBAIHZvaWQgUmVu
ZGVyRGVwcmVjYXRlZEZsZXhpYmxlQm94OjphcHBseUwKICAgICAgICAgY2hpbGQtPmxheW91dElm
TmVlZGVkKCk7CiAKICAgICAgICAgLy8gRklYTUU6IEZvciBub3cgZG9uJ3Qgc3VwcG9ydCBSVEwu
Ci0gICAgICAgIGlmIChzdHlsZSgpLmRpcmVjdGlvbigpICE9IExUUikKKyAgICAgICAgaWYgKHN0
eWxlKCkuZGlyZWN0aW9uKCkgIT0gVGV4dERpcmVjdGlvbjo6TFRSKQogICAgICAgICAgICAgY29u
dGludWU7CiAKICAgICAgICAgLy8gR2V0IHRoZSBsYXN0IGxpbmUKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGcmFnbWVudGVkRmxvdy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50ZWRGbG93LmNwcAkocmV2aXNpb24g
MjM0NjE4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYWdtZW50ZWRGbG93
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY4LDcgKzE2OCw3IEBAIHZvaWQgUmVuZGVyRnJhZ21l
bnRlZEZsb3c6OnVwZGF0ZUxvZ2ljYWwKICAgICAvLyBJZiB0aGUgZnJhZ21lbnRzIGhhdmUgbm9u
LXVuaWZvcm0gbG9naWNhbCB3aWR0aHMsIHRoZW4gaW5zZXJ0IGluc2V0IGluZm9ybWF0aW9uIGZv
ciB0aGUgUmVuZGVyRnJhZ21lbnRlZEZsb3cuCiAgICAgZm9yIChhdXRvJiBmcmFnbWVudCA6IG1f
ZnJhZ21lbnRMaXN0KSB7CiAgICAgICAgIExheW91dFVuaXQgZnJhZ21lbnRMb2dpY2FsV2lkdGgg
PSBmcmFnbWVudC0+cGFnZUxvZ2ljYWxXaWR0aCgpOwotICAgICAgICBMYXlvdXRVbml0IGxvZ2lj
YWxMZWZ0ID0gc3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBMVFIgPyBMYXlvdXRVbml0KCkgOiBsb2dp
Y2FsV2lkdGggLSBmcmFnbWVudExvZ2ljYWxXaWR0aDsKKyAgICAgICAgTGF5b3V0VW5pdCBsb2dp
Y2FsTGVmdCA9IHN0eWxlKCkuZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gTGF5
b3V0VW5pdCgpIDogbG9naWNhbFdpZHRoIC0gZnJhZ21lbnRMb2dpY2FsV2lkdGg7CiAgICAgICAg
IGZyYWdtZW50LT5zZXRSZW5kZXJCb3hGcmFnbWVudEluZm8odGhpcywgbG9naWNhbExlZnQsIGZy
YWdtZW50TG9naWNhbFdpZHRoLCBmYWxzZSk7CiAgICAgfQogfQpAQCAtNzg3LDcgKzc4Nyw3IEBA
IHZvaWQgUmVuZGVyRnJhZ21lbnRlZEZsb3c6OnVwZGF0ZUZyYWdtZW4KICAgICAgICAgTGF5b3V0
VW5pdCBmcmFnbWVudExvZ2ljYWxXaWR0aCA9IGZyYWdtZW50LT5wYWdlTG9naWNhbFdpZHRoKCk7
CiAgICAgICAgIExheW91dFVuaXQgZnJhZ21lbnRMb2dpY2FsSGVpZ2h0ID0gc3RkOjptaW48TGF5
b3V0VW5pdD4oUmVuZGVyRnJhZ21lbnRlZEZsb3c6Om1heExvZ2ljYWxIZWlnaHQoKSAtIGxvZ2lj
YWxIZWlnaHQsIGZyYWdtZW50LT5sb2dpY2FsSGVpZ2h0T2ZBbGxGcmFnbWVudGVkRmxvd0NvbnRl
bnQoKSk7CiAKLSAgICAgICAgTGF5b3V0UmVjdCBmcmFnbWVudFJlY3Qoc3R5bGUoKS5kaXJlY3Rp
b24oKSA9PSBMVFIgPyBMYXlvdXRVbml0KCkgOiBsb2dpY2FsV2lkdGgoKSAtIGZyYWdtZW50TG9n
aWNhbFdpZHRoLCBsb2dpY2FsSGVpZ2h0LCBmcmFnbWVudExvZ2ljYWxXaWR0aCwgZnJhZ21lbnRM
b2dpY2FsSGVpZ2h0KTsKKyAgICAgICAgTGF5b3V0UmVjdCBmcmFnbWVudFJlY3Qoc3R5bGUoKS5k
aXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBMYXlvdXRVbml0KCkgOiBsb2dpY2Fs
V2lkdGgoKSAtIGZyYWdtZW50TG9naWNhbFdpZHRoLCBsb2dpY2FsSGVpZ2h0LCBmcmFnbWVudExv
Z2ljYWxXaWR0aCwgZnJhZ21lbnRMb2dpY2FsSGVpZ2h0KTsKIAogICAgICAgICBmcmFnbWVudC0+
c2V0RnJhZ21lbnRlZEZsb3dQb3J0aW9uUmVjdChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8g
ZnJhZ21lbnRSZWN0IDogZnJhZ21lbnRSZWN0LnRyYW5zcG9zZWRSZWN0KCkpOwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3Qu
Y3BwCShyZXZpc2lvbiAyMzQ2MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NSw3ICsyNDUsNyBAQCBi
b29sIFJlbmRlckxheWVyTW9kZWxPYmplY3Q6OnNob3VsZFBsYWNlCiAgICAgY2FzZSBVc2VySW50
ZXJmYWNlRGlyZWN0aW9uUG9saWN5OjpDb250ZW50OgogICAgICAgICByZXR1cm4gc3R5bGUoKS5z
aG91bGRQbGFjZUJsb2NrRGlyZWN0aW9uU2Nyb2xsYmFyT25MZWZ0KCk7CiAgICAgY2FzZSBVc2Vy
SW50ZXJmYWNlRGlyZWN0aW9uUG9saWN5OjpTeXN0ZW06Ci0gICAgICAgIHJldHVybiBzZXR0aW5n
cygpLnN5c3RlbUxheW91dERpcmVjdGlvbigpID09IFJUTDsKKyAgICAgICAgcmV0dXJuIHNldHRp
bmdzKCkuc3lzdGVtTGF5b3V0RGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6UlRMOwogICAg
IH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gc3R5bGUoKS5zaG91bGRQ
bGFjZUJsb2NrRGlyZWN0aW9uU2Nyb2xsYmFyT25MZWZ0KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTWFycXVlZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck1hcnF1ZWUuY3BwCShyZXZpc2lvbiAyMzQ2MTgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWFycXVlZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEwNCw5ICsxMDQsOSBAQCBNYXJxdWVlRGlyZWN0aW9uIFJlbmRlck1hcnF1ZWU6OmRpcmVjdGlv
CiAgICAgaWYgKHJlc3VsdCA9PSBNYXJxdWVlRGlyZWN0aW9uOjpBdXRvKQogICAgICAgICByZXN1
bHQgPSBNYXJxdWVlRGlyZWN0aW9uOjpCYWNrd2FyZDsKICAgICBpZiAocmVzdWx0ID09IE1hcnF1
ZWVEaXJlY3Rpb246OkZvcndhcmQpCi0gICAgICAgIHJlc3VsdCA9IChkaXIgPT0gTFRSKSA/IE1h
cnF1ZWVEaXJlY3Rpb246OlJpZ2h0IDogTWFycXVlZURpcmVjdGlvbjo6TGVmdDsKKyAgICAgICAg
cmVzdWx0ID0gKGRpciA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpID8gTWFycXVlZURpcmVjdGlvbjo6
UmlnaHQgOiBNYXJxdWVlRGlyZWN0aW9uOjpMZWZ0OwogICAgIGlmIChyZXN1bHQgPT0gTWFycXVl
ZURpcmVjdGlvbjo6QmFja3dhcmQpCi0gICAgICAgIHJlc3VsdCA9IChkaXIgPT0gTFRSKSA/IE1h
cnF1ZWVEaXJlY3Rpb246OkxlZnQgOiBNYXJxdWVlRGlyZWN0aW9uOjpSaWdodDsKKyAgICAgICAg
cmVzdWx0ID0gKGRpciA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpID8gTWFycXVlZURpcmVjdGlvbjo6
TGVmdCA6IE1hcnF1ZWVEaXJlY3Rpb246OlJpZ2h0OwogICAgIAogICAgIC8vIE5vdyB3ZSBoYXZl
IHRoZSByZWFsIGRpcmVjdGlvbi4gIE5leHQgd2UgY2hlY2sgdG8gc2VlIGlmIHRoZSBpbmNyZW1l
bnQgaXMgbmVnYXRpdmUuCiAgICAgLy8gSWYgc28sIHRoZW4gd2UgcmV2ZXJzZSB0aGUgZGlyZWN0
aW9uLgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3Bw
CShyZXZpc2lvbiAyMzQ2MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVu
dUxpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjgsMTUgKzEyOCwxNSBAQCB2b2lkIFJlbmRl
ck1lbnVMaXN0OjphZGp1c3RJbm5lclN0eWxlKCkKICAgICAgICAgLy8gSXRlbXMgaW4gdGhlIHBv
cHVwIHdpbGwgbm90IHJlc3BlY3QgdGhlIENTUyB0ZXh0LWFsaWduIGFuZCBkaXJlY3Rpb24gcHJv
cGVydGllcywKICAgICAgICAgLy8gc28gd2UgbXVzdCBhZGp1c3Qgb3VyIG93biBzdHlsZSB0byBt
YXRjaC4KICAgICAgICAgaW5uZXJTdHlsZS5zZXRUZXh0QWxpZ24oVGV4dEFsaWduTW9kZTo6TGVm
dCk7Ci0gICAgICAgIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0gKG1fYnV0dG9uVGV4dCAmJiBt
X2J1dHRvblRleHQtPnRleHQoKS5kZWZhdWx0V3JpdGluZ0RpcmVjdGlvbigpID09IFVfUklHSFRf
VE9fTEVGVCkgPyBSVEwgOiBMVFI7CisgICAgICAgIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uID0g
KG1fYnV0dG9uVGV4dCAmJiBtX2J1dHRvblRleHQtPnRleHQoKS5kZWZhdWx0V3JpdGluZ0RpcmVj
dGlvbigpID09IFVfUklHSFRfVE9fTEVGVCkgPyBUZXh0RGlyZWN0aW9uOjpSVEwgOiBUZXh0RGly
ZWN0aW9uOjpMVFI7CiAgICAgICAgIGlubmVyU3R5bGUuc2V0RGlyZWN0aW9uKGRpcmVjdGlvbik7
CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIH0gZWxzZSBpZiAoZG9jdW1lbnQoKS5wYWdlKCktPmNo
cm9tZSgpLnNlbGVjdEl0ZW1BbGlnbm1lbnRGb2xsb3dzTWVudVdyaXRpbmdEaXJlY3Rpb24oKSkg
ewotICAgICAgICBpbm5lclN0eWxlLnNldFRleHRBbGlnbihzdHlsZSgpLmRpcmVjdGlvbigpID09
IExUUiA/IFRleHRBbGlnbk1vZGU6OkxlZnQgOiBUZXh0QWxpZ25Nb2RlOjpSaWdodCk7CisgICAg
ICAgIGlubmVyU3R5bGUuc2V0VGV4dEFsaWduKHN0eWxlKCkuZGlyZWN0aW9uKCkgPT0gVGV4dERp
cmVjdGlvbjo6TFRSID8gVGV4dEFsaWduTW9kZTo6TGVmdCA6IFRleHRBbGlnbk1vZGU6OlJpZ2h0
KTsKICAgICAgICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb247CiAgICAgICAgIEVVbmljb2RlQmlk
aSB1bmljb2RlQmlkaTsKICAgICAgICAgaWYgKG11bHRpcGxlKCkgJiYgc2VsZWN0ZWRPcHRpb25D
b3VudCgqdGhpcykgIT0gMSkgewotICAgICAgICAgICAgZGlyZWN0aW9uID0gKG1fYnV0dG9uVGV4
dCAmJiBtX2J1dHRvblRleHQtPnRleHQoKS5kZWZhdWx0V3JpdGluZ0RpcmVjdGlvbigpID09IFVf
UklHSFRfVE9fTEVGVCkgPyBSVEwgOiBMVFI7CisgICAgICAgICAgICBkaXJlY3Rpb24gPSAobV9i
dXR0b25UZXh0ICYmIG1fYnV0dG9uVGV4dC0+dGV4dCgpLmRlZmF1bHRXcml0aW5nRGlyZWN0aW9u
KCkgPT0gVV9SSUdIVF9UT19MRUZUKSA/IFRleHREaXJlY3Rpb246OlJUTCA6IFRleHREaXJlY3Rp
b246OkxUUjsKICAgICAgICAgICAgIHVuaWNvZGVCaWRpID0gVUJOb3JtYWw7CiAgICAgICAgIH0g
ZWxzZSBpZiAobV9vcHRpb25TdHlsZSkgewogICAgICAgICAgICAgZGlyZWN0aW9uID0gbV9vcHRp
b25TdHlsZS0+ZGlyZWN0aW9uKCk7CkBAIC01NzksNyArNTc5LDcgQEAgY29uc3QgaW50IGVuZE9m
TGluZVBhZGRpbmcgPSAyOwogCiBMYXlvdXRVbml0IFJlbmRlck1lbnVMaXN0OjpjbGllbnRQYWRk
aW5nTGVmdCgpIGNvbnN0CiB7Ci0gICAgaWYgKChzdHlsZSgpLmFwcGVhcmFuY2UoKSA9PSBNZW51
bGlzdFBhcnQgfHwgc3R5bGUoKS5hcHBlYXJhbmNlKCkgPT0gTWVudWxpc3RCdXR0b25QYXJ0KSAm
JiBzdHlsZSgpLmRpcmVjdGlvbigpID09IFJUTCkgeworICAgIGlmICgoc3R5bGUoKS5hcHBlYXJh
bmNlKCkgPT0gTWVudWxpc3RQYXJ0IHx8IHN0eWxlKCkuYXBwZWFyYW5jZSgpID09IE1lbnVsaXN0
QnV0dG9uUGFydCkgJiYgc3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpSVEwp
IHsKICAgICAgICAgLy8gRm9yIHRoZXNlIGFwcGVhcmFuY2UgdmFsdWVzLCB0aGUgdGhlbWUgYXBw
bGllcyBwYWRkaW5nIHRvIGxlYXZlIHJvb20gZm9yIHRoZQogICAgICAgICAvLyBkcm9wLWRvd24g
YnV0dG9uLiBCdXQgbGVhdmluZyByb29tIGZvciB0aGUgYnV0dG9uIGluc2lkZSB0aGUgcG9wdXAg
bWVudSBpdHNlbGYKICAgICAgICAgLy8gbG9va3Mgc3RyYW5nZSwgc28gd2UgcmV0dXJuIGEgc21h
bGwgZGVmYXVsdCBwYWRkaW5nIHRvIGF2b2lkIGhhdmluZyBhIGxhcmdlIGVtcHR5CkBAIC01OTMs
NyArNTkzLDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJNZW51TGlzdDo6Y2xpZW50UGFkZGluZwogCiBM
YXlvdXRVbml0IFJlbmRlck1lbnVMaXN0OjpjbGllbnRQYWRkaW5nUmlnaHQoKSBjb25zdAogewot
ICAgIGlmICgoc3R5bGUoKS5hcHBlYXJhbmNlKCkgPT0gTWVudWxpc3RQYXJ0IHx8IHN0eWxlKCku
YXBwZWFyYW5jZSgpID09IE1lbnVsaXN0QnV0dG9uUGFydCkgJiYgc3R5bGUoKS5kaXJlY3Rpb24o
KSA9PSBMVFIpCisgICAgaWYgKChzdHlsZSgpLmFwcGVhcmFuY2UoKSA9PSBNZW51bGlzdFBhcnQg
fHwgc3R5bGUoKS5hcHBlYXJhbmNlKCkgPT0gTWVudWxpc3RCdXR0b25QYXJ0KSAmJiBzdHlsZSgp
LmRpcmVjdGlvbigpID09IFRleHREaXJlY3Rpb246OkxUUikKICAgICAgICAgcmV0dXJuIGVuZE9m
TGluZVBhZGRpbmc7CiAKICAgICByZXR1cm4gcGFkZGluZ1JpZ2h0KCkgKyBtX2lubmVyQmxvY2st
PnBhZGRpbmdSaWdodCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVHdGsuY3BwCShyZXZpc2lvbiAyMzQ2MTgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWVHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjAsMTAgKzM2MCwxMCBA
QCBzdGF0aWMgR3RrU3RhdGVGbGFncyB0aGVtZVBhcnRTdGF0ZUZsYWdzCiB7CiAgICAgdW5zaWdu
ZWQgc3RhdGVGbGFncyA9IDA7CiAgICAgc3dpdGNoIChyZW5kZXJPYmplY3Quc3R5bGUoKS5kaXJl
Y3Rpb24oKSkgewotICAgIGNhc2UgUlRMOgorICAgIGNhc2UgVGV4dERpcmVjdGlvbjo6UlRMOgog
ICAgICAgICBzdGF0ZUZsYWdzIHw9IEdUS19TVEFURV9GTEFHX0RJUl9SVEw7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgTFRSOgorICAgIGNhc2UgVGV4dERpcmVjdGlvbjo6TFRSOgogICAgICAg
ICBzdGF0ZUZsYWdzIHw9IEdUS19TVEFURV9GTEFHX0RJUl9MVFI7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KQEAgLTQyMCw5ICs0MjAsOSBAQCBzdGF0aWMgR3RrU3RhdGVGbGFncyB0aGVtZVBhcnRT
dGF0ZUZsYWdzCiBzdGF0aWMgR3RrVGV4dERpcmVjdGlvbiBndGtUZXh0RGlyZWN0aW9uKFRleHRE
aXJlY3Rpb24gZGlyZWN0aW9uKQogewogICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7Ci0gICAgY2Fz
ZSBSVEw6CisgICAgY2FzZSBUZXh0RGlyZWN0aW9uOjpSVEw6CiAgICAgICAgIHJldHVybiBHVEtf
VEVYVF9ESVJfUlRMOwotICAgIGNhc2UgTFRSOgorICAgIGNhc2UgVGV4dERpcmVjdGlvbjo6TFRS
OgogICAgICAgICByZXR1cm4gR1RLX1RFWFRfRElSX0xUUjsKICAgICBkZWZhdWx0OgogICAgICAg
ICByZXR1cm4gR1RLX1RFWFRfRElSX05PTkU7CkBAIC04MDQsOCArODA0LDggQEAgTGVuZ3RoQm94
IFJlbmRlclRoZW1lR3RrOjpwb3B1cEludGVybmFsUAogICAgIHBhZGRpbmcuYm90dG9tID0gY29t
Ym9Db250ZW50c0JveC5ib3R0b20gKyBib3hDb250ZW50c0JveC5ib3R0b20gKyBidXR0b25Db250
ZW50c0JveC5ib3R0b20gKyBidXR0b25Cb3hDb250ZW50c0JveC5ib3R0b207CiAKICAgICBhdXRv
IGFycm93U2l6ZSA9IGNvbWJvV2lkZ2V0LmFycm93KCkucHJlZmVycmVkU2l6ZSgpOwotICAgIHJl
dHVybiBMZW5ndGhCb3gocGFkZGluZy50b3AsIHBhZGRpbmcucmlnaHQgKyAoc3R5bGUuZGlyZWN0
aW9uKCkgPT0gTFRSID8gYXJyb3dTaXplLndpZHRoKCkgOiAwKSwKLSAgICAgICAgcGFkZGluZy5i
b3R0b20sIHBhZGRpbmcubGVmdCArIChzdHlsZS5kaXJlY3Rpb24oKSA9PSBSVEwgPyBhcnJvd1Np
emUud2lkdGgoKSA6IDApKTsKKyAgICByZXR1cm4gTGVuZ3RoQm94KHBhZGRpbmcudG9wLCBwYWRk
aW5nLnJpZ2h0ICsgKHN0eWxlLmRpcmVjdGlvbigpID09IFRleHREaXJlY3Rpb246OkxUUiA/IGFy
cm93U2l6ZS53aWR0aCgpIDogMCksCisgICAgICAgIHBhZGRpbmcuYm90dG9tLCBwYWRkaW5nLmxl
ZnQgKyAoc3R5bGUuZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6UlRMID8gYXJyb3dTaXpl
LndpZHRoKCkgOiAwKSk7CiB9CiAKIGJvb2wgUmVuZGVyVGhlbWVHdGs6OnBhaW50TWVudUxpc3Qo
Y29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJPYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCkBAIC04NDYsOCArODQ2LDggQEAgTGVuZ3RoQm94
IFJlbmRlclRoZW1lR3RrOjpwb3B1cEludGVybmFsUAogICAgIGd0a19zdHlsZV9jb250ZXh0X2dl
dF9zdHlsZShjb250ZXh0LmdldCgpLCAiaW50ZXJpb3ItZm9jdXMiLCAmaW50ZXJpb3JGb2N1cywg
ImZvY3VzLWxpbmUtd2lkdGgiLCAmZm9jdXNXaWR0aCwgImZvY3VzLXBhZGRpbmciLCAmZm9jdXNQ
YWQsIG51bGxwdHIpOwogICAgIGZvY3VzV2lkdGggPSBpbnRlcmlvckZvY3VzID8gZm9jdXNXaWR0
aCArIGZvY3VzUGFkIDogMDsKIAotICAgIHJldHVybiB7IGJvcmRlcldpZHRoLnRvcCArIGZvY3Vz
V2lkdGgsIGJvcmRlcldpZHRoLnJpZ2h0ICsgZm9jdXNXaWR0aCArIChzdHlsZS5kaXJlY3Rpb24o
KSA9PSBMVFIgPyBtaW5BcnJvd1NpemUgOiAwKSwKLSAgICAgICAgYm9yZGVyV2lkdGguYm90dG9t
ICsgZm9jdXNXaWR0aCwgYm9yZGVyV2lkdGgubGVmdCArIGZvY3VzV2lkdGggKyAoc3R5bGUuZGly
ZWN0aW9uKCkgPT0gUlRMID8gbWluQXJyb3dTaXplIDogMCkgfTsKKyAgICByZXR1cm4geyBib3Jk
ZXJXaWR0aC50b3AgKyBmb2N1c1dpZHRoLCBib3JkZXJXaWR0aC5yaWdodCArIGZvY3VzV2lkdGgg
KyAoc3R5bGUuZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gbWluQXJyb3dTaXpl
IDogMCksCisgICAgICAgIGJvcmRlcldpZHRoLmJvdHRvbSArIGZvY3VzV2lkdGgsIGJvcmRlcldp
ZHRoLmxlZnQgKyBmb2N1c1dpZHRoICsgKHN0eWxlLmRpcmVjdGlvbigpID09IFRleHREaXJlY3Rp
b246OlJUTCA/IG1pbkFycm93U2l6ZSA6IDApIH07CiB9CiAKIGJvb2wgUmVuZGVyVGhlbWVHdGs6
OnBhaW50TWVudUxpc3QoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJPYmplY3QsIGNvbnN0IFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBGbG9hdFJlY3QmIHIpCkBAIC0xMjk2LDcgKzEyOTYs
NyBAQCBib29sIFJlbmRlclRoZW1lR3RrOjpwYWludFNsaWRlclRyYWNrKGNvCiAgICAgfQogCiAg
ICAgaWYgKHBhcnQgPT0gU2xpZGVySG9yaXpvbnRhbFBhcnQpIHsKLSAgICAgICAgaWYgKHJlbmRl
ck9iamVjdC5zdHlsZSgpLmRpcmVjdGlvbigpID09IFJUTCkgeworICAgICAgICBpZiAocmVuZGVy
T2JqZWN0LnN0eWxlKCkuZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6UlRMKSB7CiAgICAg
ICAgICAgICBjb250ZW50c1JlY3QubW92ZSh0aHVtYkxvY2F0aW9uLngoKSwgMCk7CiAgICAgICAg
ICAgICBjb250ZW50c1JlY3Quc2V0V2lkdGgoY29udGVudHNSZWN0LndpZHRoKCkgLSB0aHVtYkxv
Y2F0aW9uLngoKSk7CiAgICAgICAgIH0gZWxzZQpAQCAtMTUyNCw3ICsxNTI0LDcgQEAgYm9vbCBS
ZW5kZXJUaGVtZUd0azo6cGFpbnRQcm9ncmVzc0JhcihjbwogI2lmIEdUS19DSEVDS19WRVJTSU9O
KDMsIDIwLCAwKQogUmVuZGVyVGhlbWU6OklubmVyU3BpbkJ1dHRvbkxheW91dCBSZW5kZXJUaGVt
ZUd0azo6aW5uZXJTcGluQnV0dG9uTGF5b3V0KGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyT2Jq
ZWN0KSBjb25zdAogewotICAgIHJldHVybiByZW5kZXJPYmplY3Quc3R5bGUoKS5kaXJlY3Rpb24o
KSA9PSBSVEwgPyBJbm5lclNwaW5CdXR0b25MYXlvdXQ6Okhvcml6b250YWxVcExlZnQgOiBJbm5l
clNwaW5CdXR0b25MYXlvdXQ6Okhvcml6b250YWxVcFJpZ2h0OworICAgIHJldHVybiByZW5kZXJP
YmplY3Quc3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpSVEwgPyBJbm5lclNw
aW5CdXR0b25MYXlvdXQ6Okhvcml6b250YWxVcExlZnQgOiBJbm5lclNwaW5CdXR0b25MYXlvdXQ6
Okhvcml6b250YWxVcFJpZ2h0OwogfQogCiB2b2lkIFJlbmRlclRoZW1lR3RrOjphZGp1c3RJbm5l
clNwaW5CdXR0b25TdHlsZShTdHlsZVJlc29sdmVyJiwgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25z
dCBFbGVtZW50KikgY29uc3QKQEAgLTE1NDYsMTIgKzE1NDYsMTIgQEAgYm9vbCBSZW5kZXJUaGVt
ZUd0azo6cGFpbnRJbm5lclNwaW5CdXR0bwogCiAgICAgSW50UmVjdCBpY29uUmVjdCA9IHJlY3Q7
CiAgICAgaWNvblJlY3Quc2V0V2lkdGgoaWNvblJlY3Qud2lkdGgoKSAvIDIpOwotICAgIGlmIChy
ZW5kZXJPYmplY3Quc3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBSVEwpCisgICAgaWYgKHJlbmRlck9i
amVjdC5zdHlsZSgpLmRpcmVjdGlvbigpID09IFRleHREaXJlY3Rpb246OlJUTCkKICAgICAgICAg
dXAucmVuZGVyKHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCktPmNyKCksIGlj
b25SZWN0KTsKICAgICBlbHNlCiAgICAgICAgIGRvd24ucmVuZGVyKHBhaW50SW5mby5jb250ZXh0
KCkucGxhdGZvcm1Db250ZXh0KCktPmNyKCksIGljb25SZWN0KTsKICAgICBpY29uUmVjdC5tb3Zl
KGljb25SZWN0LndpZHRoKCksIDApOwotICAgIGlmIChyZW5kZXJPYmplY3Quc3R5bGUoKS5kaXJl
Y3Rpb24oKSA9PSBSVEwpCisgICAgaWYgKHJlbmRlck9iamVjdC5zdHlsZSgpLmRpcmVjdGlvbigp
ID09IFRleHREaXJlY3Rpb246OlJUTCkKICAgICAgICAgZG93bi5yZW5kZXIocGFpbnRJbmZvLmNv
bnRleHQoKS5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgaWNvblJlY3QpOwogICAgIGVsc2UKICAg
ICAgICAgdXAucmVuZGVyKHBhaW50SW5mby5jb250ZXh0KCkucGxhdGZvcm1Db250ZXh0KCktPmNy
KCksIGljb25SZWN0KTsKQEAgLTE5ODUsNyArMTk4NSw3IEBAIEludFJlY3QgUmVuZGVyVGhlbWVH
dGs6OmNhbGN1bGF0ZVByb2dyZXMKICAgICBjb25zdCBhdXRvJiByZW5kZXJQcm9ncmVzcyA9IGRv
d25jYXN0PFJlbmRlclByb2dyZXNzPihyZW5kZXJPYmplY3QpOwogICAgIGlmIChyZW5kZXJQcm9n
cmVzcy5pc0RldGVybWluYXRlKCkpIHsKICAgICAgICAgaW50IHByb2dyZXNzV2lkdGggPSBwcm9n
cmVzc1JlY3Qud2lkdGgoKSAqIHJlbmRlclByb2dyZXNzLnBvc2l0aW9uKCk7Ci0gICAgICAgIGlm
IChyZW5kZXJPYmplY3Quc3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBSVEwpCisgICAgICAgIGlmIChy
ZW5kZXJPYmplY3Quc3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpSVEwpCiAg
ICAgICAgICAgICBwcm9ncmVzc1JlY3Quc2V0WChwcm9ncmVzc1JlY3QueCgpICsgcHJvZ3Jlc3NS
ZWN0LndpZHRoKCkgLSBwcm9ncmVzc1dpZHRoKTsKICAgICAgICAgcHJvZ3Jlc3NSZWN0LnNldFdp
ZHRoKHByb2dyZXNzV2lkdGgpOwogICAgICAgICByZXR1cm4gcHJvZ3Jlc3NSZWN0OwpJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQkocmV2aXNpb24gMjM0
NjE4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NDcsNyArNTQ3LDcgQEAgY29uc3QgZmxvYXQgTWVudUxpc3RCdXR0b25Q
YWRkaW5nQWZ0ZXIgPQogTGVuZ3RoQm94IFJlbmRlclRoZW1lSU9TOjpwb3B1cEludGVybmFsUGFk
ZGluZ0JveChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpIGNvbnN0CiB7CiAgICAgaWYgKHN0eWxl
LmFwcGVhcmFuY2UoKSA9PSBNZW51bGlzdEJ1dHRvblBhcnQpIHsKLSAgICAgICAgaWYgKHN0eWxl
LmRpcmVjdGlvbigpID09IFJUTCkKKyAgICAgICAgaWYgKHN0eWxlLmRpcmVjdGlvbigpID09IFRl
eHREaXJlY3Rpb246OlJUTCkKICAgICAgICAgICAgIHJldHVybiB7IDAsIDAsIDAsIHN0YXRpY19j
YXN0PGludD4oTWVudUxpc3RCdXR0b25QYWRkaW5nQWZ0ZXIgKyBzdHlsZS5ib3JkZXJUb3BXaWR0
aCgpKSB9OwogICAgICAgICByZXR1cm4geyAwLCBzdGF0aWNfY2FzdDxpbnQ+KE1lbnVMaXN0QnV0
dG9uUGFkZGluZ0FmdGVyICsgc3R5bGUuYm9yZGVyVG9wV2lkdGgoKSksIDAsIDAgfTsKICAgICB9
CkBAIC02NDgsNyArNjQ4LDcgQEAgdm9pZCBSZW5kZXJUaGVtZUlPUzo6YWRqdXN0TWVudUxpc3RC
dXR0bwogYm9vbCBSZW5kZXJUaGVtZUlPUzo6cGFpbnRNZW51TGlzdEJ1dHRvbkRlY29yYXRpb25z
KGNvbnN0IFJlbmRlckJveCYgYm94LCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
RmxvYXRSZWN0JiByZWN0KQogewogICAgIGF1dG8mIHN0eWxlID0gYm94LnN0eWxlKCk7Ci0gICAg
Ym9vbCBpc1JUTCA9IHN0eWxlLmRpcmVjdGlvbigpID09IFJUTDsKKyAgICBib29sIGlzUlRMID0g
c3R5bGUuZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6UlRMOwogICAgIGZsb2F0IGJvcmRl
clRvcFdpZHRoID0gc3R5bGUuYm9yZGVyVG9wV2lkdGgoKTsKICAgICBGbG9hdFJlY3QgY2xpcChy
ZWN0LngoKSArIHN0eWxlLmJvcmRlckxlZnRXaWR0aCgpLCByZWN0LnkoKSArIHN0eWxlLmJvcmRl
clRvcFdpZHRoKCksIHJlY3Qud2lkdGgoKSAtIHN0eWxlLmJvcmRlckxlZnRXaWR0aCgpIC0gc3R5
bGUuYm9yZGVyUmlnaHRXaWR0aCgpLCByZWN0LmhlaWdodCgpIC0gc3R5bGUuYm9yZGVyVG9wV2lk
dGgoKSAtIHN0eWxlLmJvcmRlckJvdHRvbVdpZHRoKCkpOwogICAgIENHQ29udGV4dFJlZiBjZ0Nv
bnRleHQgPSBwYWludEluZm8uY29udGV4dCgpLnBsYXRmb3JtQ29udGV4dCgpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbQkocmV2aXNpb24gMjM0NjE5
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDg0LDcgKzE0ODQsNyBAQCB2b2lkIFJlbmRlclRoZW1lTWFjOjpwYWludE1l
bnVMaXN0QnV0dG9uCiAKIGJvb2wgUmVuZGVyVGhlbWVNYWM6OnBhaW50TWVudUxpc3RCdXR0b25E
ZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJCb3gmIHJlbmRlcmVyLCBjb25zdCBQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIGJvb2wgaXNSVEwgPSByZW5k
ZXJlci5zdHlsZSgpLmRpcmVjdGlvbigpID09IFJUTDsKKyAgICBib29sIGlzUlRMID0gcmVuZGVy
ZXIuc3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpSVEw7CiAgICAgSW50UmVj
dCBib3VuZHMgPSBJbnRSZWN0KHJlY3QueCgpICsgcmVuZGVyZXIuc3R5bGUoKS5ib3JkZXJMZWZ0
V2lkdGgoKSwKICAgICAgICAgcmVjdC55KCkgKyByZW5kZXJlci5zdHlsZSgpLmJvcmRlclRvcFdp
ZHRoKCksCiAgICAgICAgIHJlY3Qud2lkdGgoKSAtIHJlbmRlcmVyLnN0eWxlKCkuYm9yZGVyTGVm
dFdpZHRoKCkgLSByZW5kZXJlci5zdHlsZSgpLmJvcmRlclJpZ2h0V2lkdGgoKSwKQEAgLTE1OTMs
NyArMTU5Myw3IEBAIHZvaWQgUmVuZGVyVGhlbWVNYWM6OmFkanVzdE1lbnVMaXN0U3R5bGUKIExl
bmd0aEJveCBSZW5kZXJUaGVtZU1hYzo6cG9wdXBJbnRlcm5hbFBhZGRpbmdCb3goY29uc3QgUmVu
ZGVyU3R5bGUmIHN0eWxlKSBjb25zdAogewogICAgIGlmIChzdHlsZS5hcHBlYXJhbmNlKCkgPT0g
TWVudWxpc3RQYXJ0KSB7Ci0gICAgICAgIGNvbnN0IGludCogcGFkZGluZyA9IHBvcHVwQnV0dG9u
UGFkZGluZyhjb250cm9sU2l6ZUZvckZvbnQoc3R5bGUpLCBzdHlsZS5kaXJlY3Rpb24oKSA9PSBS
VEwpOworICAgICAgICBjb25zdCBpbnQqIHBhZGRpbmcgPSBwb3B1cEJ1dHRvblBhZGRpbmcoY29u
dHJvbFNpemVGb3JGb250KHN0eWxlKSwgc3R5bGUuZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlv
bjo6UlRMKTsKICAgICAgICAgcmV0dXJuIHsgc3RhdGljX2Nhc3Q8aW50PihwYWRkaW5nW3RvcFBh
ZGRpbmddICogc3R5bGUuZWZmZWN0aXZlWm9vbSgpKSwKICAgICAgICAgICAgIHN0YXRpY19jYXN0
PGludD4ocGFkZGluZ1tyaWdodFBhZGRpbmddICogc3R5bGUuZWZmZWN0aXZlWm9vbSgpKSwKICAg
ICAgICAgICAgIHN0YXRpY19jYXN0PGludD4ocGFkZGluZ1tib3R0b21QYWRkaW5nXSAqIHN0eWxl
LmVmZmVjdGl2ZVpvb20oKSksCkBAIC0xNjA0LDcgKzE2MDQsNyBAQCBMZW5ndGhCb3ggUmVuZGVy
VGhlbWVNYWM6OnBvcHVwSW50ZXJuYWxQCiAgICAgICAgIGZsb2F0IGFycm93V2lkdGggPSBiYXNl
QXJyb3dXaWR0aCAqIChzdHlsZS5jb21wdXRlZEZvbnRQaXhlbFNpemUoKSAvIGJhc2VGb250U2l6
ZSk7CiAgICAgICAgIGZsb2F0IHJpZ2h0UGFkZGluZyA9IGNlaWxmKGFycm93V2lkdGggKyAoYXJy
b3dQYWRkaW5nQmVmb3JlICsgYXJyb3dQYWRkaW5nQWZ0ZXIgKyBwYWRkaW5nQmVmb3JlU2VwYXJh
dG9yKSAqIHN0eWxlLmVmZmVjdGl2ZVpvb20oKSk7CiAgICAgICAgIGZsb2F0IGxlZnRQYWRkaW5n
ID0gc3R5bGVkUG9wdXBQYWRkaW5nTGVmdCAqIHN0eWxlLmVmZmVjdGl2ZVpvb20oKTsKLSAgICAg
ICAgaWYgKHN0eWxlLmRpcmVjdGlvbigpID09IFJUTCkKKyAgICAgICAgaWYgKHN0eWxlLmRpcmVj
dGlvbigpID09IFRleHREaXJlY3Rpb246OlJUTCkKICAgICAgICAgICAgIHN0ZDo6c3dhcChyaWdo
dFBhZGRpbmcsIGxlZnRQYWRkaW5nKTsKICAgICAgICAgcmV0dXJuIHsgc3RhdGljX2Nhc3Q8aW50
PihzdHlsZWRQb3B1cFBhZGRpbmdUb3AgKiBzdHlsZS5lZmZlY3RpdmVab29tKCkpLAogICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8aW50PihyaWdodFBhZGRpbmcpLApAQCAtMTY1MSw3ICsxNjUxLDcg
QEAgdm9pZCBSZW5kZXJUaGVtZU1hYzo6c2V0UG9wdXBCdXR0b25DZWxsUwogICAgIC8vIFNldCB0
aGUgY29udHJvbCBzaXplIGJhc2VkIG9mZiB0aGUgcmVjdGFuZ2xlIHdlJ3JlIHBhaW50aW5nIGlu
dG8uCiAgICAgc2V0Q29udHJvbFNpemUocG9wdXBCdXR0b24sIHBvcHVwQnV0dG9uU2l6ZXMoKSwg
YnV0dG9uU2l6ZSwgby5zdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSk7CiAKLSAgICBwb3B1cEJ1dHRv
bi51c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uID0gby5zdHlsZSgpLmRpcmVjdGlvbigpID09
IExUUiA/IE5TVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbkxlZnRUb1JpZ2h0IDogTlNVc2Vy
SW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uUmlnaHRUb0xlZnQ7CisgICAgcG9wdXBCdXR0b24udXNl
ckludGVyZmFjZUxheW91dERpcmVjdGlvbiA9IG8uc3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBUZXh0
RGlyZWN0aW9uOjpMVFIgPyBOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25MZWZ0VG9SaWdo
dCA6IE5TVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvblJpZ2h0VG9MZWZ0OwogCiAgICAgLy8g
VXBkYXRlIHRoZSB2YXJpb3VzIHN0YXRlcyB3ZSByZXNwb25kIHRvLgogICAgIHVwZGF0ZUNoZWNr
ZWRTdGF0ZShwb3B1cEJ1dHRvbiwgbyk7CkBAIC0xOTMyLDcgKzE5MzIsNyBAQCBib29sIFJlbmRl
clRoZW1lTWFjOjpwYWludFNlYXJjaEZpZWxkQ2FuCiAgICAgRmxvYXRSZWN0IGxvY2FsQm91bmRz
ID0gYWRqdXN0ZWRDYW5jZWxCdXR0b25SZWN0KFtzZWFyY2ggY2FuY2VsQnV0dG9uUmVjdEZvckJv
dW5kczpOU1JlY3Qoc25hcHBlZEludFJlY3QoaW5wdXRCb3guY29udGVudEJveFJlY3QoKSkpXSk7
CiAgICAgLy8gQWRqdXN0IHBvc2l0aW9uIGJhc2VkIG9uIHRoZSBjb250ZW50IGRpcmVjdGlvbi4K
ICAgICBmbG9hdCBhZGp1c3RlZFhQb3NpdGlvbjsKLSAgICBpZiAoYm94LnN0eWxlKCkuZGlyZWN0
aW9uKCkgPT0gUlRMKQorICAgIGlmIChib3guc3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBUZXh0RGly
ZWN0aW9uOjpSVEwpCiAgICAgICAgIGFkanVzdGVkWFBvc2l0aW9uID0gaW5wdXRCb3guY29udGVu
dEJveFJlY3QoKS54KCk7CiAgICAgZWxzZQogICAgICAgICBhZGp1c3RlZFhQb3NpdGlvbiA9IGlu
cHV0Qm94LmNvbnRlbnRCb3hSZWN0KCkubWF4WCgpIC0gbG9jYWxCb3VuZHMuc2l6ZSgpLndpZHRo
KCk7CkBAIC0yMDY4LDcgKzIwNjgsNyBAQCBib29sIFJlbmRlclRoZW1lTWFjOjpwYWludFNlYXJj
aEZpZWxkUmVzCiAgICAgRmxvYXRSZWN0IGxvY2FsQm91bmRzID0gYWRqdXN0ZWRSZXN1bHRCdXR0
b25SZWN0KFtzZWFyY2ggc2VhcmNoQnV0dG9uUmVjdEZvckJvdW5kczpOU1JlY3Qoc25hcHBlZElu
dFJlY3QoaW5wdXRCb3guY29udGVudEJveFJlY3QoKSkpXSk7CiAgICAgLy8gQWRqdXN0IHBvc2l0
aW9uIGJhc2VkIG9uIHRoZSBjb250ZW50IGRpcmVjdGlvbi4KICAgICBmbG9hdCBhZGp1c3RlZFhQ
b3NpdGlvbjsKLSAgICBpZiAoYm94LnN0eWxlKCkuZGlyZWN0aW9uKCkgPT0gUlRMKQorICAgIGlm
IChib3guc3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpSVEwpCiAgICAgICAg
IGFkanVzdGVkWFBvc2l0aW9uID0gaW5wdXRCb3guY29udGVudEJveFJlY3QoKS5tYXhYKCkgLSBs
b2NhbEJvdW5kcy5zaXplKCkud2lkdGgoKTsKICAgICBlbHNlCiAgICAgICAgIGFkanVzdGVkWFBv
c2l0aW9uID0gaW5wdXRCb3guY29udGVudEJveFJlY3QoKS54KCk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAJKHJldmlzaW9uIDIzNDYxOCkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZVdpbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTc1OCw5ICs3NTgsOSBAQCB2b2lkIFJlbmRlclRoZW1lV2luOjphZGp1c3RNZW51TGlz
dEJ1dHRvCiB7CiAgICAgLy8gVGhlc2UgYXJlIHRoZSBwYWRkaW5ncyBuZWVkZWQgdG8gcGxhY2Ug
dGhlIHRleHQgY29ycmVjdGx5IGluIHRoZSA8c2VsZWN0PiBib3gKICAgICBjb25zdCBpbnQgZHJv
cERvd25Cb3hQYWRkaW5nVG9wICAgID0gMjsKLSAgICBjb25zdCBpbnQgZHJvcERvd25Cb3hQYWRk
aW5nUmlnaHQgID0gc3R5bGUuZGlyZWN0aW9uKCkgPT0gTFRSID8gNCArIGRyb3BEb3duQnV0dG9u
V2lkdGggOiA0OworICAgIGNvbnN0IGludCBkcm9wRG93bkJveFBhZGRpbmdSaWdodCAgPSBzdHls
ZS5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyA0ICsgZHJvcERvd25CdXR0b25X
aWR0aCA6IDQ7CiAgICAgY29uc3QgaW50IGRyb3BEb3duQm94UGFkZGluZ0JvdHRvbSA9IDI7Ci0g
ICAgY29uc3QgaW50IGRyb3BEb3duQm94UGFkZGluZ0xlZnQgICA9IHN0eWxlLmRpcmVjdGlvbigp
ID09IExUUiA/IDQgOiA0ICsgZHJvcERvd25CdXR0b25XaWR0aDsKKyAgICBjb25zdCBpbnQgZHJv
cERvd25Cb3hQYWRkaW5nTGVmdCAgID0gc3R5bGUuZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlv
bjo6TFRSID8gNCA6IDQgKyBkcm9wRG93bkJ1dHRvbldpZHRoOwogICAgIC8vIFRoZSA8c2VsZWN0
PiBib3ggbXVzdCBiZSBhdCBsZWFzdCAxMnB4IGhpZ2ggZm9yIHRoZSBidXR0b24gdG8gcmVuZGVy
IG5pY2VseSBvbiBXaW5kb3dzCiAgICAgY29uc3QgaW50IGRyb3BEb3duQm94TWluSGVpZ2h0ID0g
MTI7CiAgICAgCkBAIC03OTQsNyArNzk0LDcgQEAgYm9vbCBSZW5kZXJUaGVtZVdpbjo6cGFpbnRN
ZW51TGlzdEJ1dHRvbgogICAgIC8vIGxlYXZpbmcgc3BhY2UgZm9yIHRoZSB0ZXh0IGZpZWxkJ3Mg
MXB4IGJvcmRlcgogICAgIEludFJlY3QgYnV0dG9uUmVjdChyZWN0KTsKICAgICBidXR0b25SZWN0
LmluZmxhdGUoLWJvcmRlclRoaWNrbmVzcyk7Ci0gICAgaWYgKHJlbmRlcmVyLnN0eWxlKCkuZGly
ZWN0aW9uKCkgPT0gTFRSKQorICAgIGlmIChyZW5kZXJlci5zdHlsZSgpLmRpcmVjdGlvbigpID09
IFRleHREaXJlY3Rpb246OkxUUikKICAgICAgICAgYnV0dG9uUmVjdC5zZXRYKGJ1dHRvblJlY3Qu
bWF4WCgpIC0gZHJvcERvd25CdXR0b25XaWR0aCk7CiAgICAgYnV0dG9uUmVjdC5zZXRXaWR0aChk
cm9wRG93bkJ1dHRvbldpZHRoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxCbG9jay5jcHAJKHJldmlzaW9uIDIzNDYxOSkK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04OSw3ICs4OSw3IEBAIExheW91dFVuaXQgUmVuZGVyTWF0aE1M
QmxvY2s6Om1hdGhBeGlzSGUKIAogTGF5b3V0VW5pdCBSZW5kZXJNYXRoTUxCbG9jazo6bWlycm9y
SWZOZWVkZWQoTGF5b3V0VW5pdCBob3Jpem9udGFsT2Zmc2V0LCBMYXlvdXRVbml0IGJveFdpZHRo
KSBjb25zdAogewotICAgIGlmIChzdHlsZSgpLmRpcmVjdGlvbigpID09IFJUTCkKKyAgICBpZiAo
c3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpSVEwpCiAgICAgICAgIHJldHVy
biBsb2dpY2FsV2lkdGgoKSAtIGJveFdpZHRoIC0gaG9yaXpvbnRhbE9mZnNldDsKIAogICAgIHJl
dHVybiBob3Jpem9udGFsT2Zmc2V0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxPcGVyYXRvci5jcHAJKHJldmlzaW9uIDIz
NDYxOCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MT3Bl
cmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzgsNyArMjM4LDcgQEAgdm9pZCBSZW5kZXJN
YXRoTUxPcGVyYXRvcjo6bGF5b3V0QmxvY2soYgogICAgICAgICBzZXRMb2dpY2FsV2lkdGgod2lk
dGgpOwogCiAgICAgICAgIC8vIFdlIHRoZW4gbW92ZSB0aGUgY2hpbGRyZW4gdG8gdGFrZSBzcGFj
aW5nIGludG8gYWNjb3VudC4KLSAgICAgICAgTGF5b3V0UG9pbnQgaG9yaXpvbnRhbFNoaWZ0KHN0
eWxlKCkuZGlyZWN0aW9uKCkgPT0gTFRSID8gbGVhZGluZ1NwYWNlVmFsdWUgOiAtbGVhZGluZ1Nw
YWNlVmFsdWUsIDApOworICAgICAgICBMYXlvdXRQb2ludCBob3Jpem9udGFsU2hpZnQoc3R5bGUo
KS5kaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBsZWFkaW5nU3BhY2VWYWx1ZSA6
IC1sZWFkaW5nU3BhY2VWYWx1ZSwgMCk7CiAgICAgICAgIGZvciAoYXV0byogY2hpbGQgPSBmaXJz
dENoaWxkQm94KCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZ0JveCgpKQogICAg
ICAgICAgICAgY2hpbGQtPnNldExvY2F0aW9uKGNoaWxkLT5sb2NhdGlvbigpICsgaG9yaXpvbnRh
bFNoaWZ0KTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5jcHAJKHJldmlzaW9uIDIzNDYxOCkKKysrIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Miw3ICsx
NTIsNyBAQCBSZW5kZXJTdHlsZTo6UmVuZGVyU3R5bGUoQ3JlYXRlRGVmYXVsdFN0CiAjaWYgRU5B
QkxFKENVUlNPUl9WSVNJQklMSVRZKQogICAgIG1faW5oZXJpdGVkRmxhZ3MuY3Vyc29yVmlzaWJp
bGl0eSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihpbml0aWFsQ3Vyc29yVmlzaWJpbGl0eSgpKTsK
ICNlbmRpZgotICAgIG1faW5oZXJpdGVkRmxhZ3MuZGlyZWN0aW9uID0gaW5pdGlhbERpcmVjdGlv
bigpOworICAgIG1faW5oZXJpdGVkRmxhZ3MuZGlyZWN0aW9uID0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KGluaXRpYWxEaXJlY3Rpb24oKSk7CiAgICAgbV9pbmhlcml0ZWRGbGFncy53aGl0ZVNwYWNl
ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGluaXRpYWxXaGl0ZVNwYWNlKCkpOwogICAgIG1faW5o
ZXJpdGVkRmxhZ3MuYm9yZGVyQ29sbGFwc2UgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlh
bEJvcmRlckNvbGxhcHNlKCkpOwogICAgIG1faW5oZXJpdGVkRmxhZ3MucnRsT3JkZXJpbmcgPSBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oaW5pdGlhbFJUTE9yZGVyaW5nKCkpOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgJKHJldmlzaW9uIDIzNDYx
OCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zODgsNyArMzg4LDcgQEAgcHVibGljOgogICAgIFRleHRab29tIHRleHRa
b29tKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dFpvb20+KG1fcmFyZUluaGVyaXRl
ZERhdGEtPnRleHRab29tKTsgfQogCiAgICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24oKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0RGlyZWN0aW9uPihtX2luaGVyaXRlZEZsYWdzLmRp
cmVjdGlvbik7IH0KLSAgICBib29sIGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSBjb25zdCB7IHJl
dHVybiBkaXJlY3Rpb24oKSA9PSBMVFI7IH0KKyAgICBib29sIGlzTGVmdFRvUmlnaHREaXJlY3Rp
b24oKSBjb25zdCB7IHJldHVybiBkaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9uOjpMVFI7IH0K
ICAgICBib29sIGhhc0V4cGxpY2l0bHlTZXREaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX25v
bkluaGVyaXRlZEZsYWdzLmhhc0V4cGxpY2l0bHlTZXREaXJlY3Rpb247IH0KIAogICAgIGNvbnN0
IExlbmd0aCYgc3BlY2lmaWVkTGluZUhlaWdodCgpIGNvbnN0OwpAQCAtMTQ0Miw3ICsxNDQyLDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBDYXB0aW9uU2lkZSBpbml0aWFsQ2FwdGlvblNpZGUoKSB7
IHJldHVybiBDYXB0aW9uU2lkZTo6VG9wOyB9CiAgICAgc3RhdGljIENvbHVtbkF4aXMgaW5pdGlh
bENvbHVtbkF4aXMoKSB7IHJldHVybiBDb2x1bW5BeGlzOjpBdXRvOyB9CiAgICAgc3RhdGljIENv
bHVtblByb2dyZXNzaW9uIGluaXRpYWxDb2x1bW5Qcm9ncmVzc2lvbigpIHsgcmV0dXJuIENvbHVt
blByb2dyZXNzaW9uOjpOb3JtYWw7IH0KLSAgICBzdGF0aWMgVGV4dERpcmVjdGlvbiBpbml0aWFs
RGlyZWN0aW9uKCkgeyByZXR1cm4gTFRSOyB9CisgICAgc3RhdGljIFRleHREaXJlY3Rpb24gaW5p
dGlhbERpcmVjdGlvbigpIHsgcmV0dXJuIFRleHREaXJlY3Rpb246OkxUUjsgfQogICAgIHN0YXRp
YyBXcml0aW5nTW9kZSBpbml0aWFsV3JpdGluZ01vZGUoKSB7IHJldHVybiBUb3BUb0JvdHRvbVdy
aXRpbmdNb2RlOyB9CiAgICAgc3RhdGljIFRleHRDb21iaW5lIGluaXRpYWxUZXh0Q29tYmluZSgp
IHsgcmV0dXJuIFRleHRDb21iaW5lOjpOb25lOyB9CiAgICAgc3RhdGljIFRleHRPcmllbnRhdGlv
biBpbml0aWFsVGV4dE9yaWVudGF0aW9uKCkgeyByZXR1cm4gVGV4dE9yaWVudGF0aW9uOjpNaXhl
ZDsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3Bw
CShyZXZpc2lvbiAyMzQ2MTgpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0
dGluZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MjAsOSArODIwLDkgQEAgRXhjZXB0aW9uT3I8
U3RyaW5nPiBJbnRlcm5hbFNldHRpbmdzOjpzeQogICAgIGlmICghbV9wYWdlKQogICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZEFjY2Vzc0Vycm9yIH07CiAgICAgc3dpdGNoIChzZXR0
aW5ncygpLnN5c3RlbUxheW91dERpcmVjdGlvbigpKSB7Ci0gICAgY2FzZSBMVFI6CisgICAgY2Fz
ZSBUZXh0RGlyZWN0aW9uOjpMVFI6CiAgICAgICAgIHJldHVybiBTdHJpbmcgeyAiTFRSIl9zIH07
Ci0gICAgY2FzZSBSVEw6CisgICAgY2FzZSBUZXh0RGlyZWN0aW9uOjpSVEw6CiAgICAgICAgIHJl
dHVybiBTdHJpbmcgeyAiUlRMIl9zIH07CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwpAQCAtODM0LDExICs4MzQsMTEgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSW50ZXJuYWxTZXR0aW5n
czo6c2V0UwogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52
YWxpZEFjY2Vzc0Vycm9yIH07CiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KGRpcmVjdGlvbiwgImx0ciIpKSB7Ci0gICAgICAgIHNldHRpbmdzKCkuc2V0U3lzdGVtTGF5b3V0
RGlyZWN0aW9uKExUUik7CisgICAgICAgIHNldHRpbmdzKCkuc2V0U3lzdGVtTGF5b3V0RGlyZWN0
aW9uKFRleHREaXJlY3Rpb246OkxUUik7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogICAg
IGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShkaXJlY3Rpb24sICJydGwiKSkgewot
ICAgICAgICBzZXR0aW5ncygpLnNldFN5c3RlbUxheW91dERpcmVjdGlvbihSVEwpOworICAgICAg
ICBzZXR0aW5ncygpLnNldFN5c3RlbUxheW91dERpcmVjdGlvbihUZXh0RGlyZWN0aW9uOjpSVEwp
OwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52
YWxpZEFjY2Vzc0Vycm9yIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgJKHJl
dmlzaW9uIDIzNDYxOCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTYxNCw3ICs2MTQsNyBAQCBwdWJsaWM6CiAKICAgICBSZWZQdHI8R0NP
YnNlcnZhdGlvbj4gb2JzZXJ2ZUdDKEpTQzo6SlNWYWx1ZSk7CiAKLSAgICBlbnVtIGNsYXNzIFVz
ZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24geyBMVFIsIFJUTCB9OworICAgIGVudW0gY2xhc3Mg
VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiA6IHVpbnQ4X3QgeyBMVFIsIFJUTCB9OwogICAg
IHZvaWQgc2V0VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbihVc2VySW50ZXJmYWNlTGF5b3V0
RGlyZWN0aW9uKTsKIAogICAgIGJvb2wgdXNlclByZWZlcnNSZWR1Y2VkTW90aW9uKCkgY29uc3Q7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjM0NjE5KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMiBAQAorMjAxOC0wOC0wNyAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFVzZSBhIDEtYnl0
ZSBlbnVtIGNsYXNzIGZvciBUZXh0RGlyZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODgzNTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9XZWJQb3B1cEl0ZW0uY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQb3B1cEl0ZW06OldlYlBvcHVwSXRlbSk6CisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgd2ViU2VsZWN0aW9uUmVjdHNGb3JTZWxlY3Rpb25SZWN0czpdKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvbWFjL1dlYlBvcHVwTWVudVByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQb3B1cE1lbnVQcm94eU1hYzo6cG9wdWxhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1
cE1lbnVQcm94eU1hYzo6c2hvd1BvcHVwTWVudSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1l
bnU6OnNob3cpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0QXNzaXN0ZWROb2RlSW5mb3JtYXRpb24p
OgorCiAyMDE4LTA4LTA2ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgVXNlIGVudW0gY2xhc3NlcyBhbmQgT3B0aW9uU2V0cyBmb3IgUGFpbnRQ
aGFzZSBhbmQgUGFpbnRCZWhhdmlvcgpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUG9w
dXBJdGVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQb3B1cEl0
ZW0uY3BwCShyZXZpc2lvbiAyMzQ2MTgpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQb3B1
cEl0ZW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBXZWJQb3B1cEl0ZW06OldlYlBvcHVwSXRlbSgpCiAgICAgOiBtX3R5cGUoSXRlbSkK
LSAgICAsIG1fdGV4dERpcmVjdGlvbihMVFIpCisgICAgLCBtX3RleHREaXJlY3Rpb24oVGV4dERp
cmVjdGlvbjo6TFRSKQogICAgICwgbV9oYXNUZXh0RGlyZWN0aW9uT3ZlcnJpZGUoZmFsc2UpCiAg
ICAgLCBtX2lzRW5hYmxlZCh0cnVlKQogICAgICwgbV9pc1NlbGVjdGVkKGZhbHNlKQpAQCAtNDQs
NyArNDQsNyBAQCBXZWJQb3B1cEl0ZW06OldlYlBvcHVwSXRlbSgpCiAKIFdlYlBvcHVwSXRlbTo6
V2ViUG9wdXBJdGVtKFR5cGUgdHlwZSkKICAgICA6IG1fdHlwZSh0eXBlKQotICAgICwgbV90ZXh0
RGlyZWN0aW9uKExUUikKKyAgICAsIG1fdGV4dERpcmVjdGlvbihUZXh0RGlyZWN0aW9uOjpMVFIp
CiAgICAgLCBtX2hhc1RleHREaXJlY3Rpb25PdmVycmlkZShmYWxzZSkKICAgICAsIG1faXNFbmFi
bGVkKHRydWUpCiAgICAgLCBtX2lzTGFiZWwoZmFsc2UpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHJldmlzaW9uIDIzNDYxOCkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTU3NCw3ICs1NzQsNyBAQCAgICAgLy8gV2UgYXJlIGluIHRoZSBWaWV3J3MgaW5p
dGlhbGl6YXRpCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQo
V2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6aW5saW5lTWVkaWFQbGF5YmFja1JlcXVpcmVzUGxh
eXNJbmxpbmVBdHRyaWJ1dGVLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1
ZSghIVtfY29uZmlndXJhdGlvbiBfaW5saW5lTWVkaWFQbGF5YmFja1JlcXVpcmVzUGxheXNJbmxp
bmVBdHRyaWJ1dGVdKSk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMo
KS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6YWxsb3dzUGljdHVyZUluUGljdHVyZU1l
ZGlhUGxheWJhY2tLZXkoKSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZSghIVtf
Y29uZmlndXJhdGlvbiBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlTWVkaWFQbGF5YmFja10gJiYgc2hv
dWxkQWxsb3dQaWN0dXJlSW5QaWN0dXJlTWVkaWFQbGF5YmFjaygpKSk7CiAgICAgcGFnZUNvbmZp
Z3VyYXRpb24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tl
eTo6dXNlckludGVyZmFjZURpcmVjdGlvblBvbGljeUtleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVu
Y2VzU3RvcmU6OlZhbHVlKHN0YXRpY19jYXN0PHVpbnQzMl90PihXZWJDb3JlOjpVc2VySW50ZXJm
YWNlRGlyZWN0aW9uUG9saWN5OjpDb250ZW50KSkpOwotICAgIHBhZ2VDb25maWd1cmF0aW9uLT5w
cmVmZXJlbmNlVmFsdWVzKCkuc2V0KFdlYktpdDo6V2ViUHJlZmVyZW5jZXNLZXk6OnN5c3RlbUxh
eW91dERpcmVjdGlvbktleSgpLCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmU6OlZhbHVlKHN0
YXRpY19jYXN0PHVpbnQzMl90PihXZWJDb3JlOjpMVFIpKSk7CisgICAgcGFnZUNvbmZpZ3VyYXRp
b24tPnByZWZlcmVuY2VWYWx1ZXMoKS5zZXQoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc0tleTo6c3lz
dGVtTGF5b3V0RGlyZWN0aW9uS2V5KCksIFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZTo6VmFs
dWUoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KFdlYkNvcmU6OlRleHREaXJlY3Rpb246OkxUUikpKTsK
ICAgICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6Oldl
YlByZWZlcmVuY2VzS2V5OjphbGxvd1NldHRpbmdBbnlYSFJIZWFkZXJGcm9tRmlsZVVSTHNLZXko
KSwgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlOjpWYWx1ZShzaG91bGRBbGxvd1NldHRpbmdB
bnlYSFJIZWFkZXJGcm9tRmlsZVVSTHMoKSkpOwogI2lmIFVTRShTWVNURU1fUFJFVklFVykKICAg
ICBwYWdlQ29uZmlndXJhdGlvbi0+cHJlZmVyZW5jZVZhbHVlcygpLnNldChXZWJLaXQ6OldlYlBy
ZWZlcmVuY2VzS2V5OjpzeXN0ZW1QcmV2aWV3RW5hYmxlZEtleSgpLCBXZWJLaXQ6OldlYlByZWZl
cmVuY2VzU3RvcmU6OlZhbHVlKCEhW19jb25maWd1cmF0aW9uIF9zeXN0ZW1QcmV2aWV3RW5hYmxl
ZF0pKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQkocmV2aXNpb24gMjM0NjE4KQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQkod29ya2luZyBj
b3B5KQpAQCAtMTc2Niw3ICsxNzY2LDcgQEAgLSAoTlNBcnJheSAqKXdlYlNlbGVjdGlvblJlY3Rz
Rm9yU2VsZWN0aQogICAgICAgICBjb25zdCBXZWJDb3JlOjpTZWxlY3Rpb25SZWN0JiBjb3JlUmVj
dCA9IHNlbGVjdGlvblJlY3RzW2ldOwogICAgICAgICBXZWJTZWxlY3Rpb25SZWN0ICp3ZWJSZWN0
ID0gW1dlYlNlbGVjdGlvblJlY3Qgc2VsZWN0aW9uUmVjdF07CiAgICAgICAgIHdlYlJlY3QucmVj
dCA9IGNvcmVSZWN0LnJlY3QoKTsKLSAgICAgICAgd2ViUmVjdC53cml0aW5nRGlyZWN0aW9uID0g
Y29yZVJlY3QuZGlyZWN0aW9uKCkgPT0gTFRSID8gV0tXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmln
aHQgOiBXS1dyaXRpbmdEaXJlY3Rpb25SaWdodFRvTGVmdDsKKyAgICAgICAgd2ViUmVjdC53cml0
aW5nRGlyZWN0aW9uID0gY29yZVJlY3QuZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRS
ID8gV0tXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQgOiBXS1dyaXRpbmdEaXJlY3Rpb25SaWdo
dFRvTGVmdDsKICAgICAgICAgd2ViUmVjdC5pc0xpbmVCcmVhayA9IGNvcmVSZWN0LmlzTGluZUJy
ZWFrKCk7CiAgICAgICAgIHdlYlJlY3QuaXNGaXJzdE9uTGluZSA9IGNvcmVSZWN0LmlzRmlyc3RP
bkxpbmUoKTsKICAgICAgICAgd2ViUmVjdC5pc0xhc3RPbkxpbmUgPSBjb3JlUmVjdC5pc0xhc3RP
bkxpbmUoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQb3B1cE1lbnVQ
cm94eU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2Vi
UG9wdXBNZW51UHJveHlNYWMubW0JKHJldmlzaW9uIDIzNDYxOCkKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9XZWJQb3B1cE1lbnVQcm94eU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAt
NzMsOSArNzMsOSBAQCB2b2lkIFdlYlBvcHVwTWVudVByb3h5TWFjOjpwb3B1bGF0ZShjb25zCiAg
ICAgICAgICAgICBOU01lbnVJdGVtICptZW51SXRlbSA9IFttX3BvcHVwIGxhc3RJdGVtXTsKIAog
ICAgICAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJsZVBhcmFncmFwaFN0eWxlPiBwYXJhZ3JhcGhT
dHlsZSA9IGFkb3B0TlMoW1tOU1BhcmFncmFwaFN0eWxlIGRlZmF1bHRQYXJhZ3JhcGhTdHlsZV0g
bXV0YWJsZUNvcHldKTsKLSAgICAgICAgICAgIE5TV3JpdGluZ0RpcmVjdGlvbiB3cml0aW5nRGly
ZWN0aW9uID0gaXRlbXNbaV0ubV90ZXh0RGlyZWN0aW9uID09IExUUiA/IE5TV3JpdGluZ0RpcmVj
dGlvbkxlZnRUb1JpZ2h0IDogTlNXcml0aW5nRGlyZWN0aW9uUmlnaHRUb0xlZnQ7CisgICAgICAg
ICAgICBOU1dyaXRpbmdEaXJlY3Rpb24gd3JpdGluZ0RpcmVjdGlvbiA9IGl0ZW1zW2ldLm1fdGV4
dERpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBOU1dyaXRpbmdEaXJlY3Rpb25MZWZ0
VG9SaWdodCA6IE5TV3JpdGluZ0RpcmVjdGlvblJpZ2h0VG9MZWZ0OwogICAgICAgICAgICAgW3Bh
cmFncmFwaFN0eWxlIHNldEJhc2VXcml0aW5nRGlyZWN0aW9uOndyaXRpbmdEaXJlY3Rpb25dOwot
ICAgICAgICAgICAgW3BhcmFncmFwaFN0eWxlIHNldEFsaWdubWVudDptZW51VGV4dERpcmVjdGlv
biA9PSBMVFIgPyBOU1RleHRBbGlnbm1lbnRMZWZ0IDogTlNUZXh0QWxpZ25tZW50UmlnaHRdOwor
ICAgICAgICAgICAgW3BhcmFncmFwaFN0eWxlIHNldEFsaWdubWVudDptZW51VGV4dERpcmVjdGlv
biA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBOU1RleHRBbGlnbm1lbnRMZWZ0IDogTlNUZXh0QWxp
Z25tZW50UmlnaHRdOwogICAgICAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+
IGF0dHJpYnV0ZXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdFdp
dGhPYmplY3RzQW5kS2V5czoKICAgICAgICAgICAgICAgICBwYXJhZ3JhcGhTdHlsZS5nZXQoKSwg
TlNQYXJhZ3JhcGhTdHlsZUF0dHJpYnV0ZU5hbWUsCiAgICAgICAgICAgICAgICAgZm9udCwgTlNG
b250QXR0cmlidXRlTmFtZSwKQEAgLTExMSwxMCArMTExLDEwIEBAIHZvaWQgV2ViUG9wdXBNZW51
UHJveHlNYWM6OnNob3dQb3B1cE1lbnUKIAogICAgIFttX3BvcHVwIGF0dGFjaFBvcFVwV2l0aEZy
YW1lOnJlY3QgaW5WaWV3Om1fd2ViVmlld107CiAgICAgW21fcG9wdXAgc2VsZWN0SXRlbUF0SW5k
ZXg6c2VsZWN0ZWRJbmRleF07Ci0gICAgW21fcG9wdXAgc2V0VXNlckludGVyZmFjZUxheW91dERp
cmVjdGlvbjp0ZXh0RGlyZWN0aW9uID09IExUUiA/IE5TVXNlckludGVyZmFjZUxheW91dERpcmVj
dGlvbkxlZnRUb1JpZ2h0IDogTlNVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uUmlnaHRUb0xl
ZnRdOworICAgIFttX3BvcHVwIHNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246dGV4dERp
cmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJl
Y3Rpb25MZWZ0VG9SaWdodCA6IE5TVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvblJpZ2h0VG9M
ZWZ0XTsKIAogICAgIE5TTWVudSAqbWVudSA9IFttX3BvcHVwIG1lbnVdOwotICAgIFttZW51IHNl
dFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246dGV4dERpcmVjdGlvbiA9PSBMVFIgPyBOU1Vz
ZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25MZWZ0VG9SaWdodCA6IE5TVXNlckludGVyZmFjZUxh
eW91dERpcmVjdGlvblJpZ2h0VG9MZWZ0XTsKKyAgICBbbWVudSBzZXRVc2VySW50ZXJmYWNlTGF5
b3V0RGlyZWN0aW9uOnRleHREaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gTlNVc2Vy
SW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uTGVmdFRvUmlnaHQgOiBOU1VzZXJJbnRlcmZhY2VMYXlv
dXREaXJlY3Rpb25SaWdodFRvTGVmdF07CiAKICAgICAvLyBUaGVzZSB2YWx1ZXMgd2VyZSBib3Jy
b3dlZCBmcm9tIEFwcEtpdCB0byBtYXRjaCB0aGVpciBwbGFjZW1lbnQgb2YgdGhlIG1lbnUuCiAg
ICAgY29uc3QgaW50IHBvcE92ZXJIb3Jpem9udGFsQWRqdXN0ID0gLTEzOwpAQCAtMTI5LDE4ICsx
MjksMTggQEAgdm9pZCBXZWJQb3B1cE1lbnVQcm94eU1hYzo6c2hvd1BvcHVwTWVudQogICAgICAg
ICBpZiAodGl0bGVGcmFtZS5zaXplLndpZHRoIDw9IDAgfHwgdGl0bGVGcmFtZS5zaXplLmhlaWdo
dCA8PSAwKQogICAgICAgICAgICAgdGl0bGVGcmFtZSA9IHJlY3Q7CiAgICAgICAgIGZsb2F0IHZl
cnRpY2FsT2Zmc2V0ID0gcm91bmRmKChOU01heFkocmVjdCkgLSBOU01heFkodGl0bGVGcmFtZSkp
ICsgTlNIZWlnaHQodGl0bGVGcmFtZSkpICsgMTsKLSAgICAgICAgaWYgKHRleHREaXJlY3Rpb24g
PT0gTFRSKQorICAgICAgICBpZiAodGV4dERpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIp
CiAgICAgICAgICAgICBsb2NhdGlvbiA9IE5TTWFrZVBvaW50KE5TTWluWChyZWN0KSArIHBvcE92
ZXJIb3Jpem9udGFsQWRqdXN0LCBOU01heFkocmVjdCkgLSB2ZXJ0aWNhbE9mZnNldCk7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIGxvY2F0aW9uID0gTlNNYWtlUG9pbnQoTlNNYXhYKHJlY3Qp
IC0gcG9wT3Zlckhvcml6b250YWxBZGp1c3QsIE5TTWF4WShyZWN0KSAtIHZlcnRpY2FsT2Zmc2V0
KTsKICAgICB9IGVsc2UgewotICAgICAgICBpZiAodGV4dERpcmVjdGlvbiA9PSBMVFIpCisgICAg
ICAgIGlmICh0ZXh0RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUikKICAgICAgICAgICAg
IGxvY2F0aW9uID0gTlNNYWtlUG9pbnQoTlNNaW5YKHJlY3QpICsgcG9wVW5kZXJIb3Jpem9udGFs
QWRqdXN0LCBOU01heFkocmVjdCkgKyBwb3BVbmRlclZlcnRpY2FsQWRqdXN0KTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgbG9jYXRpb24gPSBOU01ha2VQb2ludChOU01heFgocmVjdCkgLSBw
b3BVbmRlckhvcml6b250YWxBZGp1c3QsIE5TTWF4WShyZWN0KSArIHBvcFVuZGVyVmVydGljYWxB
ZGp1c3QpOwogICAgIH0KICAgICBSZXRhaW5QdHI8TlNWaWV3PiBkdW1teVZpZXcgPSBhZG9wdE5T
KFtbTlNWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOnJlY3RdKTsKLSAgICBbZHVtbXlWaWV3Lmdl
dCgpIHNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246dGV4dERpcmVjdGlvbiA9PSBMVFIg
PyBOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25MZWZ0VG9SaWdodCA6IE5TVXNlckludGVy
ZmFjZUxheW91dERpcmVjdGlvblJpZ2h0VG9MZWZ0XTsKKyAgICBbZHVtbXlWaWV3LmdldCgpIHNl
dFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246dGV4dERpcmVjdGlvbiA9PSBUZXh0RGlyZWN0
aW9uOjpMVFIgPyBOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25MZWZ0VG9SaWdodCA6IE5T
VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvblJpZ2h0VG9MZWZ0XTsKICAgICBbbV93ZWJWaWV3
IGFkZFN1YnZpZXc6ZHVtbXlWaWV3LmdldCgpXTsKICAgICBsb2NhdGlvbiA9IFtkdW1teVZpZXcg
Y29udmVydFBvaW50OmxvY2F0aW9uIGZyb21WaWV3Om1fd2ViVmlld107CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1
cE1lbnUuY3BwCShyZXZpc2lvbiAyMzQ2MTgpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBNZW51LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEyLDcg
KzExMiw3IEBAIHZvaWQgV2ViUG9wdXBNZW51OjpzaG93KGNvbnN0IEludFJlY3QmIHIKICAgICBQ
bGF0Zm9ybVBvcHVwTWVudURhdGEgcGxhdGZvcm1EYXRhOwogICAgIHNldFVwUGxhdGZvcm1EYXRh
KHBhZ2VDb29yZGluYXRlcywgcGxhdGZvcm1EYXRhKTsKIAotICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6U2hvd1BvcHVwTWVudShwYWdlQ29vcmRpbmF0ZXMsIG1fcG9wdXBDbGllbnQtPm1lbnVT
dHlsZSgpLnRleHREaXJlY3Rpb24oKSwgaXRlbXMsIGluZGV4LCBwbGF0Zm9ybURhdGEpLCBtX3Bh
Z2UtPnBhZ2VJRCgpKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dQb3B1cE1lbnUo
cGFnZUNvb3JkaW5hdGVzLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4obV9wb3B1cENsaWVudC0+bWVu
dVN0eWxlKCkudGV4dERpcmVjdGlvbigpKSwgaXRlbXMsIGluZGV4LCBwbGF0Zm9ybURhdGEpLCBt
X3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIAogdm9pZCBXZWJQb3B1cE1lbnU6OmhpZGUoKQpJbmRleDog
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3dpbi9XZWJQb3B1cE1lbnVX
aW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC93aW4vV2ViUG9wdXBNZW51V2luLmNwcAkocmV2aXNpb24gMjM0NjE4KQorKysgU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3dpbi9XZWJQb3B1cE1lbnVXaW4uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsNyArMTEyLDcgQEAgdm9pZCBXZWJQb3B1cE1lbnU6OnNl
dFVwUGxhdGZvcm1EYXRhKGNvbgogCiAgICAgICAgIFN0cmluZyBpdGVtVGV4dCA9IG1fcG9wdXBD
bGllbnQtPml0ZW1UZXh0KGluZGV4KTsKIAotICAgICAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlv
biA9IGl0ZW1UZXh0LmRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKCkgPT0gVV9SSUdIVF9UT19MRUZU
ID8gUlRMIDogTFRSOworICAgICAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiA9IGl0ZW1UZXh0
LmRlZmF1bHRXcml0aW5nRGlyZWN0aW9uKCkgPT0gVV9SSUdIVF9UT19MRUZUID8gVGV4dERpcmVj
dGlvbjo6UlRMIDogVGV4dERpcmVjdGlvbjo6TFRSOwogICAgICAgICBUZXh0UnVuIHRleHRSdW4o
aXRlbVRleHQsIDAsIDAsIEFsbG93VHJhaWxpbmdFeHBhbnNpb24sIGl0ZW1TdHlsZS50ZXh0RGly
ZWN0aW9uKCksIGl0ZW1TdHlsZS5oYXNUZXh0RGlyZWN0aW9uT3ZlcnJpZGUoKSk7CiAKICAgICAg
ICAgbm90U2VsZWN0ZWRCYWNraW5nU3RvcmVDb250ZXh0LT5zZXRGaWxsQ29sb3Iob3B0aW9uVGV4
dENvbG9yKTsKQEAgLTEyOSw3ICsxMjksNyBAQCB2b2lkIFdlYlBvcHVwTWVudTo6c2V0VXBQbGF0
Zm9ybURhdGEoY29uCiAgICAgICAgIC8vIERyYXcgdGhlIGl0ZW0gdGV4dAogICAgICAgICBpZiAo
aXRlbVN0eWxlLmlzVmlzaWJsZSgpKSB7CiAgICAgICAgICAgICBpbnQgdGV4dFggPSAwOwotICAg
ICAgICAgICAgaWYgKG1fcG9wdXBDbGllbnQtPm1lbnVTdHlsZSgpLnRleHREaXJlY3Rpb24oKSA9
PSBMVFIpIHsKKyAgICAgICAgICAgIGlmIChtX3BvcHVwQ2xpZW50LT5tZW51U3R5bGUoKS50ZXh0
RGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSKSB7CiAgICAgICAgICAgICAgICAgdGV4
dFggPSBzdGQ6Om1heDxpbnQ+KDAsIG1fcG9wdXBDbGllbnQtPmNsaWVudFBhZGRpbmdMZWZ0KCkg
LSBtX3BvcHVwQ2xpZW50LT5jbGllbnRJbnNldExlZnQoKSk7CiAgICAgICAgICAgICAgICAgaWYg
KFJlbmRlclRoZW1lOjpzaW5nbGV0b24oKS5wb3B1cE9wdGlvblN1cHBvcnRzVGV4dEluZGVudCgp
KQogICAgICAgICAgICAgICAgICAgICB0ZXh0WCArPSBtaW5pbXVtSW50VmFsdWVGb3JMZW5ndGgo
aXRlbVN0eWxlLnRleHRJbmRlbnQoKSwgaXRlbVJlY3Qud2lkdGgoKSk7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQkocmV2
aXNpb24gMjM0NjE4KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dl
YlBhZ2VJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTIzMTEsNyArMjMxMSw3IEBAIHZvaWQgV2Vi
UGFnZTo6Z2V0QXNzaXN0ZWROb2RlSW5mb3JtYXRpb24KICAgICAgICAgYm9vbCBpbkZpeGVkID0g
ZmFsc2U7CiAgICAgICAgIHJlbmRlcmVyLT5sb2NhbFRvQ29udGFpbmVyUG9pbnQoRmxvYXRQb2lu
dCgpLCBudWxscHRyLCBVc2VUcmFuc2Zvcm1zLCAmaW5GaXhlZCk7CiAgICAgICAgIGluZm9ybWF0
aW9uLmluc2lkZUZpeGVkUG9zaXRpb24gPSBpbkZpeGVkOwotICAgICAgICBpbmZvcm1hdGlvbi5p
c1JUTCA9IHJlbmRlcmVyLT5zdHlsZSgpLmRpcmVjdGlvbigpID09IFJUTDsKKyAgICAgICAgaW5m
b3JtYXRpb24uaXNSVEwgPSByZW5kZXJlci0+c3R5bGUoKS5kaXJlY3Rpb24oKSA9PSBUZXh0RGly
ZWN0aW9uOjpSVEw7CiAKICAgICAgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBlbGVtZW50RnJh
bWUudmlldygpOwogICAgICAgICBpZiAoaW5GaXhlZCAmJiBlbGVtZW50RnJhbWUuaXNNYWluRnJh
bWUoKSAmJiAhZnJhbWVWaWV3LT5mcmFtZSgpLnNldHRpbmdzKCkudmlzdWFsVmlld3BvcnRFbmFi
bGVkKCkpIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNDYx
OCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE4IEBACisyMDE4LTA4LTA3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXNlIGEgMS1ieXRlIGVudW0gY2xhc3MgZm9yIFRl
eHREaXJlY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4ODM1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVJT1MubW06CisgICAgICAgICgtW1dlYkZyYW1l
IHNlbGVjdGlvblJlY3RzRm9yQ29yZVJhbmdlOl0pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYlZpc2libGVQb3NpdGlvbi5tbToKKyAgICAgICAgKC1bV2ViVmlzaWJsZVBvc2l0aW9uIHRl
eHREaXJlY3Rpb25dKToKKyAgICAgICAgKC1bV2ViVmlzaWJsZVBvc2l0aW9uIGRpcmVjdGlvbklz
RG93bnN0cmVhbTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlBERlZpZXdJT1MubW06CisgICAg
ICAgICgtW1dlYlBERlZpZXcgX2NoZWNrUERGVGl0bGVdKToKKwogMjAxOC0wNy0wNCAgVGltIEhv
cnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBJbnRyb2R1Y2UgUExB
VEZPUk0oSU9TTUFDKQpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9pb3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVJT1MubW0JKHJldmlzaW9uIDIzNDYxOCkKKysrIFNvdXJj
ZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lSU9TLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0yMjAsNyArMjIwLDcgQEAgLSAoTlNBcnJheSAqKXNlbGVjdGlvblJlY3RzRm9y
Q29yZVJhbmdlOgogICAgICAgICBTZWxlY3Rpb25SZWN0ICZjb3JlUmVjdCA9IHJlY3RzW2ldOwog
ICAgICAgICBXZWJTZWxlY3Rpb25SZWN0ICp3ZWJSZWN0ID0gW1dlYlNlbGVjdGlvblJlY3Qgc2Vs
ZWN0aW9uUmVjdF07CiAgICAgICAgIHdlYlJlY3QucmVjdCA9IHN0YXRpY19jYXN0PENHUmVjdD4o
Y29yZVJlY3QucmVjdCgpKTsKLSAgICAgICAgd2ViUmVjdC53cml0aW5nRGlyZWN0aW9uID0gY29y
ZVJlY3QuZGlyZWN0aW9uKCkgPT0gTFRSID8gV0tXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQg
OiBXS1dyaXRpbmdEaXJlY3Rpb25SaWdodFRvTGVmdDsKKyAgICAgICAgd2ViUmVjdC53cml0aW5n
RGlyZWN0aW9uID0gY29yZVJlY3QuZGlyZWN0aW9uKCkgPT0gVGV4dERpcmVjdGlvbjo6TFRSID8g
V0tXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQgOiBXS1dyaXRpbmdEaXJlY3Rpb25SaWdodFRv
TGVmdDsKICAgICAgICAgd2ViUmVjdC5pc0xpbmVCcmVhayA9IGNvcmVSZWN0LmlzTGluZUJyZWFr
KCk7CiAgICAgICAgIHdlYlJlY3QuaXNGaXJzdE9uTGluZSA9IGNvcmVSZWN0LmlzRmlyc3RPbkxp
bmUoKTsKICAgICAgICAgd2ViUmVjdC5pc0xhc3RPbkxpbmUgPSBjb3JlUmVjdC5pc0xhc3RPbkxp
bmUoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYlZp
c2libGVQb3NpdGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L2lvcy9X
ZWJDb3JlU3VwcG9ydC9XZWJWaXNpYmxlUG9zaXRpb24ubW0JKHJldmlzaW9uIDIzNDYxOCkKKysr
IFNvdXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYlZpc2libGVQb3NpdGlv
bi5tbQkod29ya2luZyBjb3B5KQpAQCAtMTMyLDcgKzEzMiw3IEBAIC0gKE5TU3RyaW5nICopZGVz
Y3JpcHRpb24KIC0gKFRleHREaXJlY3Rpb24pdGV4dERpcmVjdGlvbgogewogICAgIC8vIFRPRE86
IGltcGxlbWVudAotICAgIHJldHVybiBMVFI7CisgICAgcmV0dXJuIFRleHREaXJlY3Rpb246OkxU
UjsKIH0KIAogLSAoQk9PTClkaXJlY3Rpb25Jc0Rvd25zdHJlYW06KFdlYlRleHRBZGp1c3RtZW50
RGlyZWN0aW9uKWRpcmVjdGlvbgpAQCAtMTQ0LDExICsxNDQsOSBAQCAtIChCT09MKWRpcmVjdGlv
bklzRG93bnN0cmVhbTooV2ViVGV4dEFkCiAgICAgICAgIHJldHVybiBZRVM7CiAgICAgCiAgICAg
Ci0gICAgaWYgKFtzZWxmIHRleHREaXJlY3Rpb25dID09IExUUikgeworICAgIGlmIChbc2VsZiB0
ZXh0RGlyZWN0aW9uXSA9PSBUZXh0RGlyZWN0aW9uOjpMVFIpCiAgICAgICAgIHJldHVybiAoZGly
ZWN0aW9uID09IFdlYlRleHRBZGp1c3RtZW50UmlnaHQpOwotICAgIH0gZWxzZSB7Ci0gICAgICAg
IHJldHVybiAoZGlyZWN0aW9uID09IFdlYlRleHRBZGp1c3RtZW50TGVmdCk7Ci0gICAgfQorICAg
IHJldHVybiAoZGlyZWN0aW9uID09IFdlYlRleHRBZGp1c3RtZW50TGVmdCk7CiB9CiAKIC0gKFdl
YlZpc2libGVQb3NpdGlvbiAqKXBvc2l0aW9uQnlNb3ZpbmdJbkRpcmVjdGlvbjooV2ViVGV4dEFk
anVzdG1lbnREaXJlY3Rpb24pZGlyZWN0aW9uIGFtb3VudDooVUludDMyKWFtb3VudCB3aXRoQWZm
aW5pdHlEb3duc3RyZWFtOihCT09MKWFmZmluaXR5RG93bnN0cmVhbQpJbmRleDogU291cmNlL1dl
YktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3SU9TLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXRMZWdhY3kvaW9zL1dlYlZpZXcvV2ViUERGVmlld0lPUy5tbQkocmV2aXNpb24g
MjM0NjE4KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViVmlldy9XZWJQREZWaWV3SU9T
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOTksNyArMjk5LDcgQEAgLSAodm9pZClfY2hlY2tQREZU
aXRsZQogICAgIGlmIChbdGl0bGUgbGVuZ3RoXSkgewogICAgICAgICBbX3RpdGxlIHJlbGVhc2Vd
OwogICAgICAgICBfdGl0bGUgPSBbdGl0bGUgY29weV07Ci0gICAgICAgIGNvcmUoW3NlbGYgX2Zy
YW1lXSktPmxvYWRlcigpLmNsaWVudCgpLmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKHsgdGl0bGUs
IExUUiB9KTsKKyAgICAgICAgY29yZShbc2VsZiBfZnJhbWVdKS0+bG9hZGVyKCkuY2xpZW50KCku
ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoeyB0aXRsZSwgVGV4dERpcmVjdGlvbjo6TFRSIH0pOwog
ICAgIH0KIH0KIApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMjM0
NjE5KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTggQEAKKzIwMTgtMDgtMDcgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0
ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBVc2UgYSAxLWJ5dGUgZW51bSBjbGFzcyBmb3Ig
VGV4dERpcmVjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTg4MzUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9Qb3B1cE1lbnVNYWMubW06CisgICAgICAgIChQb3B1cE1l
bnVNYWM6OnBvcHVsYXRlKToKKyAgICAgICAgKFBvcHVwTWVudU1hYzo6c2hvdyk6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChXZWJG
cmFtZUxvYWRlckNsaWVudDo6dHJhbnNpdGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSk6CisgICAg
ICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgX2Rpc3BhdGNo
RGlkUmVjZWl2ZVRpdGxlOl0pOgorCiAyMDE4LTA4LTA2ICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVXNlIGVudW0gY2xhc3NlcyBhbmQgT3B0
aW9uU2V0cyBmb3IgUGFpbnRQaGFzZSBhbmQgUGFpbnRCZWhhdmlvcgpJbmRleDogU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvUG9wdXBNZW51TWFjLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1BvcHVwTWVudU1hYy5t
bQkocmV2aXNpb24gMjM0NjE4KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvUG9wdXBNZW51TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw3ICs2Nyw3IEBAIHZv
aWQgUG9wdXBNZW51TWFjOjpwb3B1bGF0ZSgpCiAgICAgICAgIFttX3BvcHVwIGFkZEl0ZW1XaXRo
VGl0bGU6QCIiXTsKIAogICAgIFRleHREaXJlY3Rpb24gbWVudVRleHREaXJlY3Rpb24gPSBtX2Ns
aWVudC0+bWVudVN0eWxlKCkudGV4dERpcmVjdGlvbigpOwotICAgIFttX3BvcHVwIHNldFVzZXJJ
bnRlcmZhY2VMYXlvdXREaXJlY3Rpb246bWVudVRleHREaXJlY3Rpb24gPT0gTFRSID8gTlNVc2Vy
SW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uTGVmdFRvUmlnaHQgOiBOU1VzZXJJbnRlcmZhY2VMYXlv
dXREaXJlY3Rpb25SaWdodFRvTGVmdF07CisgICAgW21fcG9wdXAgc2V0VXNlckludGVyZmFjZUxh
eW91dERpcmVjdGlvbjptZW51VGV4dERpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBO
U1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25MZWZ0VG9SaWdodCA6IE5TVXNlckludGVyZmFj
ZUxheW91dERpcmVjdGlvblJpZ2h0VG9MZWZ0XTsKIAogICAgIEFTU0VSVChtX2NsaWVudCk7CiAg
ICAgaW50IHNpemUgPSBtX2NsaWVudC0+bGlzdFNpemUoKTsKQEAgLTkwLDggKzkwLDggQEAgdm9p
ZCBQb3B1cE1lbnVNYWM6OnBvcHVsYXRlKCkKICAgICAgICAgfQogCiAgICAgICAgIFJldGFpblB0
cjxOU011dGFibGVQYXJhZ3JhcGhTdHlsZT4gcGFyYWdyYXBoU3R5bGUgPSBhZG9wdE5TKFtbTlNQ
YXJhZ3JhcGhTdHlsZSBkZWZhdWx0UGFyYWdyYXBoU3R5bGVdIG11dGFibGVDb3B5XSk7Ci0gICAg
ICAgIFtwYXJhZ3JhcGhTdHlsZSBzZXRBbGlnbm1lbnQ6bWVudVRleHREaXJlY3Rpb24gPT0gTFRS
ID8gTlNUZXh0QWxpZ25tZW50TGVmdCA6IE5TVGV4dEFsaWdubWVudFJpZ2h0XTsKLSAgICAgICAg
TlNXcml0aW5nRGlyZWN0aW9uIHdyaXRpbmdEaXJlY3Rpb24gPSBzdHlsZS50ZXh0RGlyZWN0aW9u
KCkgPT0gTFRSID8gTlNXcml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQgOiBOU1dyaXRpbmdEaXJl
Y3Rpb25SaWdodFRvTGVmdDsKKyAgICAgICAgW3BhcmFncmFwaFN0eWxlIHNldEFsaWdubWVudDpt
ZW51VGV4dERpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBOU1RleHRBbGlnbm1lbnRM
ZWZ0IDogTlNUZXh0QWxpZ25tZW50UmlnaHRdOworICAgICAgICBOU1dyaXRpbmdEaXJlY3Rpb24g
d3JpdGluZ0RpcmVjdGlvbiA9IHN0eWxlLnRleHREaXJlY3Rpb24oKSA9PSBUZXh0RGlyZWN0aW9u
OjpMVFIgPyBOU1dyaXRpbmdEaXJlY3Rpb25MZWZ0VG9SaWdodCA6IE5TV3JpdGluZ0RpcmVjdGlv
blJpZ2h0VG9MZWZ0OwogICAgICAgICBbcGFyYWdyYXBoU3R5bGUgc2V0QmFzZVdyaXRpbmdEaXJl
Y3Rpb246d3JpdGluZ0RpcmVjdGlvbl07CiAgICAgICAgIGlmIChzdHlsZS5oYXNUZXh0RGlyZWN0
aW9uT3ZlcnJpZGUoKSkgewogICAgICAgICAgICAgUmV0YWluUHRyPE5TTnVtYmVyPiB3cml0aW5n
RGlyZWN0aW9uVmFsdWUgPSBhZG9wdE5TKFtbTlNOdW1iZXIgYWxsb2NdIGluaXRXaXRoSW50ZWdl
cjp3cml0aW5nRGlyZWN0aW9uICsgTlNXcml0aW5nRGlyZWN0aW9uT3ZlcnJpZGVdKTsKQEAgLTE0
NiwxMCArMTQ2LDEwIEBAIHZvaWQgUG9wdXBNZW51TWFjOjpzaG93KGNvbnN0IEludFJlY3QmIHIK
IAogICAgIFttX3BvcHVwIGF0dGFjaFBvcFVwV2l0aEZyYW1lOnIgaW5WaWV3OnZpZXddOwogICAg
IFttX3BvcHVwIHNlbGVjdEl0ZW1BdEluZGV4OmluZGV4XTsKLSAgICBbbV9wb3B1cCBzZXRVc2Vy
SW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uOnRleHREaXJlY3Rpb24gPT0gTFRSID8gTlNVc2VySW50
ZXJmYWNlTGF5b3V0RGlyZWN0aW9uTGVmdFRvUmlnaHQgOiBOU1VzZXJJbnRlcmZhY2VMYXlvdXRE
aXJlY3Rpb25SaWdodFRvTGVmdF07CisgICAgW21fcG9wdXAgc2V0VXNlckludGVyZmFjZUxheW91
dERpcmVjdGlvbjp0ZXh0RGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUiA/IE5TVXNlcklu
dGVyZmFjZUxheW91dERpcmVjdGlvbkxlZnRUb1JpZ2h0IDogTlNVc2VySW50ZXJmYWNlTGF5b3V0
RGlyZWN0aW9uUmlnaHRUb0xlZnRdOwogCiAgICAgTlNNZW51ICptZW51ID0gW21fcG9wdXAgbWVu
dV07Ci0gICAgW21lbnUgc2V0VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbjp0ZXh0RGlyZWN0
aW9uID09IExUUiA/IE5TVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbkxlZnRUb1JpZ2h0IDog
TlNVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uUmlnaHRUb0xlZnRdOworICAgIFttZW51IHNl
dFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246dGV4dERpcmVjdGlvbiA9PSBUZXh0RGlyZWN0
aW9uOjpMVFIgPyBOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25MZWZ0VG9SaWdodCA6IE5T
VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvblJpZ2h0VG9MZWZ0XTsKIAogICAgIE5TUG9pbnQg
bG9jYXRpb247CiAgICAgQ1RGb250UmVmIGZvbnQgPSBtX2NsaWVudC0+bWVudVN0eWxlKCkuZm9u
dCgpLnByaW1hcnlGb250KCkuZ2V0Q1RGb250KCk7CkBAIC0xNjgsNyArMTY4LDcgQEAgdm9pZCBQ
b3B1cE1lbnVNYWM6OnNob3coY29uc3QgSW50UmVjdCYgcgogICAgICAgICB2ZXJ0T2Zmc2V0ICs9
IENURm9udEdldERlc2NlbnQoZm9udCkgLSBDVEZvbnRHZXREZXNjZW50KGRlZmF1bHRGb250Lmdl
dCgpKTsKICAgICAgICAgdmVydE9mZnNldCA9IGZtaW5mKE5TSGVpZ2h0KHIpLCB2ZXJ0T2Zmc2V0
KTsKICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwMTIwMAotICAgICAg
ICBpZiAodGV4dERpcmVjdGlvbiA9PSBMVFIpCisgICAgICAgIGlmICh0ZXh0RGlyZWN0aW9uID09
IFRleHREaXJlY3Rpb246OkxUUikKICAgICAgICAgICAgIGxvY2F0aW9uID0gTlNNYWtlUG9pbnQo
TlNNaW5YKHIpICsgcG9wT3Zlckhvcml6b250YWxBZGp1c3QsIE5TTWF4WShyKSAtIHZlcnRPZmZz
ZXQpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBsb2NhdGlvbiA9IE5TTWFrZVBvaW50KE5T
TWF4WChyKSAtIHBvcE92ZXJIb3Jpem9udGFsQWRqdXN0LCBOU01heFkocikgLSB2ZXJ0T2Zmc2V0
KTsKQEAgLTE3Nyw3ICsxNzcsNyBAQCB2b2lkIFBvcHVwTWVudU1hYzo6c2hvdyhjb25zdCBJbnRS
ZWN0JiByCiAjZW5kaWYKICAgICB9IGVsc2UgewogI2lmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTAxMjAwCi0gICAgICAgIGlmICh0ZXh0RGlyZWN0aW9uID09IExUUikKKyAg
ICAgICAgaWYgKHRleHREaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSKQogICAgICAgICAg
ICAgbG9jYXRpb24gPSBOU01ha2VQb2ludChOU01pblgocikgKyBwb3BVbmRlckhvcml6b250YWxB
ZGp1c3QsIE5TTWF4WShyKSArIHBvcFVuZGVyVmVydGljYWxBZGp1c3QpOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBsb2NhdGlvbiA9IE5TTWFrZVBvaW50KE5TTWF4WChyKSAtIHBvcFVuZGVy
SG9yaXpvbnRhbEFkanVzdCwgTlNNYXhZKHIpICsgcG9wVW5kZXJWZXJ0aWNhbEFkanVzdCk7CkBA
IC0xOTMsNyArMTkzLDcgQEAgdm9pZCBQb3B1cE1lbnVNYWM6OnNob3coY29uc3QgSW50UmVjdCYg
cgogICAgIFJlZjxQb3B1cE1lbnVNYWM+IHByb3RlY3RvcigqdGhpcyk7CiAKICAgICBSZXRhaW5Q
dHI8TlNWaWV3PiBkdW1teVZpZXcgPSBhZG9wdE5TKFtbTlNWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOnJdKTsKLSAgICBbZHVtbXlWaWV3LmdldCgpIHNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJl
Y3Rpb246dGV4dERpcmVjdGlvbiA9PSBMVFIgPyBOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rp
b25MZWZ0VG9SaWdodCA6IE5TVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvblJpZ2h0VG9MZWZ0
XTsKKyAgICBbZHVtbXlWaWV3LmdldCgpIHNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246
dGV4dERpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyBOU1VzZXJJbnRlcmZhY2VMYXlv
dXREaXJlY3Rpb25MZWZ0VG9SaWdodCA6IE5TVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvblJp
Z2h0VG9MZWZ0XTsKICAgICBbdmlldyBhZGRTdWJ2aWV3OmR1bW15Vmlldy5nZXQoKV07CiAgICAg
bG9jYXRpb24gPSBbZHVtbXlWaWV3IGNvbnZlcnRQb2ludDpsb2NhdGlvbiBmcm9tVmlldzp2aWV3
XTsKICAgICAKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCShyZXZpc2lvbiAyMzQ2
MTgpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMTQ5NCw3ICsxNDk0LDcgQEAgdm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6dHJhbnNpdGlvblRvQwogICAgIC8vIGxpa2UgdGhlIG9uZXMg
dGhhdCBTYWZhcmkgdXNlcyBmb3IgYm9va21hcmtzIGl0IGlzIHRoZSBvbmx5IHdheSB0aGUgRG9j
dW1lbnRMb2FkZXIKICAgICAvLyB3aWxsIGdldCB0aGUgcHJvcGVyIHRpdGxlLgogICAgIGlmIChh
dXRvKiBkb2N1bWVudExvYWRlciA9IFtkYXRhU291cmNlIF9kb2N1bWVudExvYWRlcl0pCi0gICAg
ICAgIGRvY3VtZW50TG9hZGVyLT5zZXRUaXRsZSh7IFtkYXRhU291cmNlIHBhZ2VUaXRsZV0sIExU
UiB9KTsKKyAgICAgICAgZG9jdW1lbnRMb2FkZXItPnNldFRpdGxlKHsgW2RhdGFTb3VyY2UgcGFn
ZVRpdGxlXSwgVGV4dERpcmVjdGlvbjo6TFRSIH0pOwogCiAgICAgaWYgKGF1dG8qIG93bmVyRWxl
bWVudCA9IGNvcmVGcmFtZS0+b3duZXJFbGVtZW50KCkpCiAgICAgICAgIGNvcmVGcmFtZS0+dmll
dygpLT5zZXRDYW5IYXZlU2Nyb2xsYmFycyhvd25lckVsZW1lbnQtPnNjcm9sbGluZ01vZGUoKSAh
PSBTY3JvbGxiYXJBbHdheXNPZmYpOwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJGcmFtZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJWaWV3L1dlYkZyYW1lLm1tCShyZXZpc2lvbiAyMzQ2MTkpCisrKyBTb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMzM3LDcgKzIz
MzcsNyBAQCAtICh2b2lkKV9kaXNwYXRjaERpZFJlY2VpdmVUaXRsZTooTlNTdHJpCiAgICAgRnJh
bWUqIGNvcmVGcmFtZSA9IF9wcml2YXRlLT5jb3JlRnJhbWU7CiAgICAgaWYgKCFjb3JlRnJhbWUp
CiAgICAgICAgIHJldHVybjsKLSAgICBjb3JlRnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmRpc3Bh
dGNoRGlkUmVjZWl2ZVRpdGxlKHsgdGl0bGUsIExUUiB9KTsKKyAgICBjb3JlRnJhbWUtPmxvYWRl
cigpLmNsaWVudCgpLmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKHsgdGl0bGUsIFRleHREaXJlY3Rp
b246OkxUUiB9KTsKIH0KIAogI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKSW5kZXg6IFRvb2xzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNDYxOCkK
KysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE4
LTA4LTA3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgVXNlIGEgMS1ieXRlIGVudW0gY2xhc3MgZm9yIFRleHREaXJlY3Rpb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODM1MAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpURVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9T
dHJpbmdXaXRoRGlyZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPDwpOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9Db21tYW5kQmFja0ZvcndhcmQubW06CisgICAgICAgIChURVNUX0Yp
OgorCiAyMDE4LTA4LTA2ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgog
CiAgICAgICAgIFtpT1NdIENhcmV0IGRpc2FwcGVhcnMgYWZ0ZXIgcmVzaWduaW5nIGFuZCBiZWNv
bWluZyBmaXJzdCByZXNwb25kZXIgaWYgYWN0aXZlIGZvY3VzIHN0YXRlIGlzIHJldGFpbmVkCklu
ZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvQ29tcGxleFRleHRDb250cm9s
bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
Q29tcGxleFRleHRDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMjM0NjE4KQorKysgVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM1Miw3ICszNTIsNyBAQCBURVNUX0YoQ29tcGxleFRleHRDb250cm9sbGVy
VGVzdCwgVG90YWxXCiAKICAgICBVQ2hhciBjaGFyYWN0ZXJzW10gPSB7IDB4NjQ0LCAnICcsIDB4
NjQ0LCAnICcsIDB4NjQ0IH07CiAgICAgc2l6ZV90IGNoYXJhY3RlcnNMZW5ndGggPSBXVEZfQVJS
QVlfTEVOR1RIKGNoYXJhY3RlcnMpOwotICAgIFRleHRSdW4gdGV4dFJ1bihTdHJpbmdWaWV3KGNo
YXJhY3RlcnMsIGNoYXJhY3RlcnNMZW5ndGgpLCAwLCAxNCwgRGVmYXVsdEV4cGFuc2lvbiwgUlRM
KTsKKyAgICBUZXh0UnVuIHRleHRSdW4oU3RyaW5nVmlldyhjaGFyYWN0ZXJzLCBjaGFyYWN0ZXJz
TGVuZ3RoKSwgMCwgMTQsIERlZmF1bHRFeHBhbnNpb24sIFRleHREaXJlY3Rpb246OlJUTCk7CiAg
ICAgYXV0byBydW4gPSBDb21wbGV4VGV4dENvbnRyb2xsZXI6OkNvbXBsZXhUZXh0UnVuOjpjcmVh
dGUoYWR2YW5jZXMsIG9yaWdpbnMsIHsgNSwgNiwgNywgOCwgOSB9LCB7IDQsIDMsIDIsIDEsIDAg
fSwgaW5pdGlhbEFkdmFuY2UsIGZvbnQucHJpbWFyeUZvbnQoKSwgY2hhcmFjdGVycywgMCwgY2hh
cmFjdGVyc0xlbmd0aCwgMCwgNSwgZmFsc2UpOwogICAgIFZlY3RvcjxSZWY8Q29tcGxleFRleHRD
b250cm9sbGVyOjpDb21wbGV4VGV4dFJ1bj4+IHJ1bnM7CiAgICAgcnVucy5hcHBlbmQoV1RGTW92
ZShydW4pKTsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TdHJpbmdX
aXRoRGlyZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvU3RyaW5nV2l0aERpcmVjdGlvbi5jcHAJKHJldmlzaW9uIDIzNDYxOCkKKysrIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9TdHJpbmdXaXRoRGlyZWN0aW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzEsNDkgKzMxLDY2IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChz
dGQ6Om9zdHJlYW0mIG9zLCBjb25zdCBUZXh0RGlyZWN0aW9uJiBkaXJlY3Rpb24pCit7CisgICAg
c3dpdGNoIChkaXJlY3Rpb24pIHsKKyAgICBjYXNlIFRleHREaXJlY3Rpb246OkxUUjoKKyAgICAg
ICAgb3MgPDwgIlRleHREaXJlY3Rpb246OkxUUiI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
VGV4dERpcmVjdGlvbjo6UlRMOgorICAgICAgICBvcyA8PCAiVGV4dERpcmVjdGlvbjo6UlRMIjsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiBvczsKK30KKworfQorCiBuYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSSB7CiAKIFRFU1QoU3RyaW5nV2l0aERpcmVjdGlvbiwgVHJ1bmNhdGVB
dEVuZFdpdGhMZWZ0VG9SaWdodFN0cmluZykKIHsKLSAgICBTdHJpbmdXaXRoRGlyZWN0aW9uIHN0
cmluZyB7ICJDYXBwdWNjaW5vIiwgTFRSIH07CisgICAgU3RyaW5nV2l0aERpcmVjdGlvbiBzdHJp
bmcgeyAiQ2FwcHVjY2lubyIsIFRleHREaXJlY3Rpb246OkxUUiB9OwogICAgIFN0cmluZ1dpdGhE
aXJlY3Rpb24gcmVzdWx0OwogCiAgICAgcmVzdWx0ID0gdHJ1bmNhdGVGcm9tRW5kKHN0cmluZywg
MCk7Ci0gICAgRVhQRUNUX0VRKExUUiwgcmVzdWx0LmRpcmVjdGlvbik7CisgICAgRVhQRUNUX0VR
KFRleHREaXJlY3Rpb246OkxUUiwgcmVzdWx0LmRpcmVjdGlvbik7CiAgICAgRVhQRUNUX0VRKCIi
LCByZXN1bHQuc3RyaW5nKTsKIAogICAgIHJlc3VsdCA9IHRydW5jYXRlRnJvbUVuZChzdHJpbmcs
IDEpOwotICAgIEVYUEVDVF9FUShMVFIsIHJlc3VsdC5kaXJlY3Rpb24pOworICAgIEVYUEVDVF9F
UShUZXh0RGlyZWN0aW9uOjpMVFIsIHJlc3VsdC5kaXJlY3Rpb24pOwogICAgIEVYUEVDVF9FUSgi
QyIsIHJlc3VsdC5zdHJpbmcpOwogCiAgICAgcmVzdWx0ID0gdHJ1bmNhdGVGcm9tRW5kKHN0cmlu
ZywgMik7Ci0gICAgRVhQRUNUX0VRKExUUiwgcmVzdWx0LmRpcmVjdGlvbik7CisgICAgRVhQRUNU
X0VRKFRleHREaXJlY3Rpb246OkxUUiwgcmVzdWx0LmRpcmVjdGlvbik7CiAgICAgRVhQRUNUX0VR
KCJDYSIsIHJlc3VsdC5zdHJpbmcpOwogCiAgICAgcmVzdWx0ID0gdHJ1bmNhdGVGcm9tRW5kKHN0
cmluZywgMTAwMCk7Ci0gICAgRVhQRUNUX0VRKExUUiwgcmVzdWx0LmRpcmVjdGlvbik7CisgICAg
RVhQRUNUX0VRKFRleHREaXJlY3Rpb246OkxUUiwgcmVzdWx0LmRpcmVjdGlvbik7CiAgICAgRVhQ
RUNUX0VRKCJDYXBwdWNjaW5vIiwgcmVzdWx0LnN0cmluZyk7CiB9CiAKIFRFU1QoU3RyaW5nV2l0
aERpcmVjdGlvbiwgVHJ1bmNhdGVBdEVuZFdpdGhSaWdodFRvTGVmdFN0cmluZykKIHsKLSAgICBT
dHJpbmdXaXRoRGlyZWN0aW9uIHN0cmluZyB7IFN0cmluZzo6ZnJvbVVURjgoIten1rjXpNa815XW
vNem1rQn15nXoNeV1rkiKSwgUlRMIH07CisgICAgU3RyaW5nV2l0aERpcmVjdGlvbiBzdHJpbmcg
eyBTdHJpbmc6OmZyb21VVEY4KCLXp9a416TWvNeV1rzXpta0J9eZ16DXlda5IiksIFRleHREaXJl
Y3Rpb246OlJUTCB9OwogICAgIFN0cmluZ1dpdGhEaXJlY3Rpb24gcmVzdWx0OwogCiAgICAgcmVz
dWx0ID0gdHJ1bmNhdGVGcm9tRW5kKHN0cmluZywgMCk7Ci0gICAgRVhQRUNUX0VRKFJUTCwgcmVz
dWx0LmRpcmVjdGlvbik7CisgICAgRVhQRUNUX0VRKFRleHREaXJlY3Rpb246OlJUTCwgcmVzdWx0
LmRpcmVjdGlvbik7CiAgICAgRVhQRUNUX0VRKCIiLCByZXN1bHQuc3RyaW5nKTsKIAogICAgIHJl
c3VsdCA9IHRydW5jYXRlRnJvbUVuZChzdHJpbmcsIDEpOwotICAgIEVYUEVDVF9FUShSVEwsIHJl
c3VsdC5kaXJlY3Rpb24pOworICAgIEVYUEVDVF9FUShUZXh0RGlyZWN0aW9uOjpSVEwsIHJlc3Vs
dC5kaXJlY3Rpb24pOwogICAgIEVYUEVDVF9FUShTdHJpbmc6OmZyb21VVEY4KCLXpyIpLCByZXN1
bHQuc3RyaW5nKTsKIAogICAgIHJlc3VsdCA9IHRydW5jYXRlRnJvbUVuZChzdHJpbmcsIDIpOwot
ICAgIEVYUEVDVF9FUShSVEwsIHJlc3VsdC5kaXJlY3Rpb24pOworICAgIEVYUEVDVF9FUShUZXh0
RGlyZWN0aW9uOjpSVEwsIHJlc3VsdC5kaXJlY3Rpb24pOwogICAgIEVYUEVDVF9FUShTdHJpbmc6
OmZyb21VVEY4KCLXp9a4IiksIHJlc3VsdC5zdHJpbmcpOwogCiAgICAgcmVzdWx0ID0gdHJ1bmNh
dGVGcm9tRW5kKHN0cmluZywgMTAwMCk7Ci0gICAgRVhQRUNUX0VRKFJUTCwgcmVzdWx0LmRpcmVj
dGlvbik7CisgICAgRVhQRUNUX0VRKFRleHREaXJlY3Rpb246OlJUTCwgcmVzdWx0LmRpcmVjdGlv
bik7CiAgICAgRVhQRUNUX0VRKFN0cmluZzo6ZnJvbVVURjgoIten1rjXpNa815XWvNem1rQn15nX
oNeV1rkiKSwgcmVzdWx0LnN0cmluZyk7CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>