<?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>190806</bug_id>
          
          <creation_ts>2018-10-22 14:28:35 -0700</creation_ts>
          <short_desc>[PSON] Add support for cross-site client-side redirects</short_desc>
          <delta_ts>2018-10-23 10:54:41 -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>WebKit2</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="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>japhet</cc>
    
    <cc>koivisto</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1471348</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-10-22 14:28:35 -0700</bug_when>
    <thetext>Add support for cross-site client-side redirects so that it swaps process and so that the back forward list looks as expected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471349</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-10-22 14:28:56 -0700</bug_when>
    <thetext>&lt;rdar://problem/45047344&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471406</commentid>
    <comment_count>2</comment_count>
      <attachid>352923</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-10-22 16:42:12 -0700</bug_when>
    <thetext>Created attachment 352923
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471408</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-10-22 16:44:01 -0700</bug_when>
    <thetext>Attachment 352923 did not pass style-queue:


ERROR: Source/WebKit/Shared/NavigationActionData.cpp:145:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:267:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:269:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:271:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:273:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:277:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:281:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
Total errors found: 7 in 21 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>1471417</commentid>
    <comment_count>4</comment_count>
      <attachid>352927</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-10-22 16:57:46 -0700</bug_when>
    <thetext>Created attachment 352927
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471422</commentid>
    <comment_count>5</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-10-22 17:01:03 -0700</bug_when>
    <thetext>Attachment 352927 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:267:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:269:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:271:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:273:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:277:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/ProcessSwapOnNavigation.mm:281:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
Total errors found: 6 in 24 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>1471596</commentid>
    <comment_count>6</comment_count>
      <attachid>352927</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2018-10-23 10:10:16 -0700</bug_when>
    <thetext>Comment on attachment 352927
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471597</commentid>
    <comment_count>7</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2018-10-23 10:11:36 -0700</bug_when>
    <thetext>From our in-person conversation, it seems like the design we want, in the long term, is for history and back-forward to live in the UI process. That way, there would be no need to transfer client redirect state between web processes. Rather, the UI process would just know that it was doing a client redirect, and it would do the right thing with history.

Still, I think this is a reasonable solution within our current design.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471611</commentid>
    <comment_count>8</comment_count>
      <attachid>352927</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-10-23 10:54:39 -0700</bug_when>
    <thetext>Comment on attachment 352927
Patch

Clearing flags on attachment: 352927

Committed r237355: &lt;https://trac.webkit.org/changeset/237355&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471612</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-10-23 10:54:41 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352923</attachid>
            <date>2018-10-22 16:42:12 -0700</date>
            <delta_ts>2018-10-22 16:57:44 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>190806_wip.patch</filename>
            <type>text/plain</type>
            <size>39137</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRSZXF1ZXN0LmggYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkUmVxdWVzdC5oCmluZGV4IDM5NzBhYjk5NWVl
Li40YzBjM2Q1NjIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkUmVxdWVzdC5o
CkBAIC03Miw3ICs3MiwxNCBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNTdWJzdGl0dXRlRGF0YSgp
IHsgcmV0dXJuIG1fc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpOyB9CiAKICAgICBMb2NrSGlzdG9y
eSBsb2NrSGlzdG9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9ja0hpc3Rvcnk7IH0KKyAgICB2b2lk
IHNldExvY2tIaXN0b3J5KExvY2tIaXN0b3J5IHZhbHVlKSB7IG1fbG9ja0hpc3RvcnkgPSB2YWx1
ZTsgfQorCiAgICAgTG9ja0JhY2tGb3J3YXJkTGlzdCBsb2NrQmFja0ZvcndhcmRMaXN0KCkgY29u
c3QgeyByZXR1cm4gbV9sb2NrQmFja0ZvcndhcmRMaXN0OyB9CisgICAgdm9pZCBzZXRsb2NrQmFj
a0ZvcndhcmRMaXN0KExvY2tCYWNrRm9yd2FyZExpc3QgdmFsdWUpIHsgbV9sb2NrQmFja0Zvcndh
cmRMaXN0ID0gdmFsdWU7IH0KKworICAgIGNvbnN0IFN0cmluZyYgY2xpZW50UmVkaXJlY3RTb3Vy
Y2VGb3JIaXN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnRSZWRpcmVjdFNvdXJjZUZvckhp
c3Rvcnk7IH0KKyAgICB2b2lkIHNldENsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeShjb25z
dCBTdHJpbmcmIGNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeSkgeyBtX2NsaWVudFJlZGly
ZWN0U291cmNlRm9ySGlzdG9yeSA9IGNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeTsgfQor
CiAgICAgU2hvdWxkU2VuZFJlZmVycmVyIHNob3VsZFNlbmRSZWZlcnJlcigpIGNvbnN0IHsgcmV0
dXJuIG1fc2hvdWxkU2VuZFJlZmVycmVyOyB9CiAgICAgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlk
VVJMIGFsbG93TmF2aWdhdGlvblRvSW52YWxpZFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dO
YXZpZ2F0aW9uVG9JbnZhbGlkVVJMOyB9CiAgICAgTmV3RnJhbWVPcGVuZXJQb2xpY3kgbmV3RnJh
bWVPcGVuZXJQb2xpY3koKSBjb25zdCB7IHJldHVybiBtX25ld0ZyYW1lT3BlbmVyUG9saWN5OyB9
CkBAIC05Nyw2ICsxMDQsNyBAQCBwcml2YXRlOgogICAgIFJlc291cmNlUmVxdWVzdCBtX3Jlc291
cmNlUmVxdWVzdDsKICAgICBTdHJpbmcgbV9mcmFtZU5hbWU7CiAgICAgU3Vic3RpdHV0ZURhdGEg
bV9zdWJzdGl0dXRlRGF0YTsKKyAgICBTdHJpbmcgbV9jbGllbnRSZWRpcmVjdFNvdXJjZUZvckhp
c3Rvcnk7CiAKICAgICBib29sIG1fc2hvdWxkQ2hlY2tOZXdXaW5kb3dQb2xpY3kgeyBmYWxzZSB9
OwogICAgIGJvb2wgbV9zaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgeyBmYWxzZSB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggZmU0NGYwYTI1ZjUuLmIxODY4MjJi
MDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTEzNjAsNiArMTM2
MCw4IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRVUkwoRnJhbWVMb2FkUmVxdWVzdCYmIGZyYW1l
TG9hZFJlcXVlc3QsIGNvbnN0IFN0cmluZyYgcmVmCiAgICAgaWYgKG1fZnJhbWUucGFnZSgpICYm
IG1fZnJhbWUucGFnZSgpLT5vcGVuZWRWaWFXaW5kb3dPcGVuV2l0aE9wZW5lcigpKQogICAgICAg
ICBhY3Rpb24uc2V0T3BlbmVkVmlhV2luZG93T3BlbldpdGhPcGVuZXIoKTsKICAgICBhY3Rpb24u
c2V0SGFzT3BlbmVkRnJhbWVzKCFtX29wZW5lZEZyYW1lcy5pc0VtcHR5KCkpOworICAgIGFjdGlv
bi5zZXRMb2NrSGlzdG9yeShsb2NrSGlzdG9yeSk7CisgICAgYWN0aW9uLnNldExvY2tCYWNrRm9y
d2FyZExpc3QoZnJhbWVMb2FkUmVxdWVzdC5sb2NrQmFja0ZvcndhcmRMaXN0KCkpOwogCiAgICAg
aWYgKCF0YXJnZXRGcmFtZSAmJiAhZWZmZWN0aXZlRnJhbWVOYW1lLmlzRW1wdHkoKSkgewogICAg
ICAgICBhY3Rpb24gPSBhY3Rpb24uY29weVdpdGhTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
KHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb0FwcGx5KG1fZnJhbWUsIGZyYW1lTG9hZFJl
cXVlc3QpKTsKQEAgLTE0NTgsNiArMTQ2MCwxMyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkKEZy
YW1lTG9hZFJlcXVlc3QmJiByZXF1ZXN0KQogICAgIGFkZFNhbWVTaXRlSW5mb1RvUmVxdWVzdElm
TmVlZGVkKGxvYWRlci0+cmVxdWVzdCgpKTsKICAgICBhcHBseVNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3lUb05ld0RvY3VtZW50TG9hZGVyKG1fZnJhbWUsIGxvYWRlciwgcmVxdWVzdCk7CiAK
KyAgICBpZiAocmVxdWVzdC5zaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQoKSAmJiByZXF1ZXN0
LmxvY2tIaXN0b3J5KCkgPT0gTG9ja0hpc3Rvcnk6OlllcykgeworICAgICAgICAvLyBUaGUgbG9h
ZCB3ZSdyZSBjb250aW51aW5nIGlzIGEgY2xpZW50LXNpZGUgcmVkaXJlY3Qgc28gc2V0IHRoaW5n
cyB1cCBhY2NvcmRpbmdseS4KKyAgICAgICAgbG9hZGVyLT5zZXRDbGllbnRSZWRpcmVjdFNvdXJj
ZUZvckhpc3RvcnkocmVxdWVzdC5jbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkoKSk7Cisg
ICAgICAgIGxvYWRlci0+c2V0SXNDbGllbnRSZWRpcmVjdCh0cnVlKTsKKyAgICAgICAgbV9sb2Fk
VHlwZSA9IEZyYW1lTG9hZFR5cGU6OlJlZGlyZWN0V2l0aExvY2tlZEJhY2tGb3J3YXJkTGlzdDsK
KyAgICB9CisKICAgICBTZXRGb3JTY29wZTxib29sPiBjdXJyZW50TG9hZFNob3VsZEJlVHJlYXRl
ZEFzQ29udGludWluZ0xvYWRHdWFyZChtX2N1cnJlbnRMb2FkU2hvdWxkQmVUcmVhdGVkQXNDb250
aW51aW5nTG9hZCwgcmVxdWVzdC5zaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQoKSk7CiAgICAg
bG9hZChsb2FkZXIuZ2V0KCksIHJlcXVlc3Quc2hvdWxkU2tpcFNhZmVCcm93c2luZ0NoZWNrKCkp
OwogfQpAQCAtMTQ5NSw3ICsxNTA0LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZChEb2N1bWVu
dExvYWRlciYgbmV3RG9jdW1lbnRMb2FkZXIsIFNob3VsZFNraXBTYWZlQnJvd3NpbmcKICAgICAg
ICAgdHlwZSA9IEZyYW1lTG9hZFR5cGU6OlNhbWU7CiAgICAgfSBlbHNlIGlmIChzaG91bGRUcmVh
dFVSTEFzU2FtZUFzQ3VycmVudChuZXdEb2N1bWVudExvYWRlci51bnJlYWNoYWJsZVVSTCgpKSAm
JiBpc1JlbG9hZChtX2xvYWRUeXBlKSkKICAgICAgICAgdHlwZSA9IG1fbG9hZFR5cGU7Ci0gICAg
ZWxzZSBpZiAobV9sb2FkVHlwZSA9PSBGcmFtZUxvYWRUeXBlOjpSZWRpcmVjdFdpdGhMb2NrZWRC
YWNrRm9yd2FyZExpc3QgJiYgIW5ld0RvY3VtZW50TG9hZGVyLnVucmVhY2hhYmxlVVJMKCkuaXNF
bXB0eSgpICYmIG5ld0RvY3VtZW50TG9hZGVyLnN1YnN0aXR1dGVEYXRhKCkuaXNWYWxpZCgpKQor
ICAgIGVsc2UgaWYgKG1fbG9hZFR5cGUgPT0gRnJhbWVMb2FkVHlwZTo6UmVkaXJlY3RXaXRoTG9j
a2VkQmFja0ZvcndhcmRMaXN0ICYmICgoIW5ld0RvY3VtZW50TG9hZGVyLnVucmVhY2hhYmxlVVJM
KCkuaXNFbXB0eSgpICYmIG5ld0RvY3VtZW50TG9hZGVyLnN1YnN0aXR1dGVEYXRhKCkuaXNWYWxp
ZCgpKSB8fCBtX2N1cnJlbnRMb2FkU2hvdWxkQmVUcmVhdGVkQXNDb250aW51aW5nTG9hZCkpCiAg
ICAgICAgIHR5cGUgPSBGcmFtZUxvYWRUeXBlOjpSZWRpcmVjdFdpdGhMb2NrZWRCYWNrRm9yd2Fy
ZExpc3Q7CiAgICAgZWxzZQogICAgICAgICB0eXBlID0gRnJhbWVMb2FkVHlwZTo6U3RhbmRhcmQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcAppbmRleCAyZWRi
N2IzZWE1Yy4uNzZjOTRiMjRmZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9I
aXN0b3J5Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlD
b250cm9sbGVyLmNwcApAQCAtNDQwLDcgKzQ0MCw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6
OnVwZGF0ZUZvclJlZGlyZWN0V2l0aExvY2tlZEJhY2tGb3J3YXJkTGlzdCgpCiAgICAgICAgIGlm
IChQYWdlKiBwYWdlID0gbV9mcmFtZS5wYWdlKCkpCiAgICAgICAgICAgICBhZGRWaXNpdGVkTGlu
aygqcGFnZSwgaGlzdG9yeVVSTCk7CiAKLSAgICAgICAgaWYgKCFtX2ZyYW1lLmxvYWRlcigpLmRv
Y3VtZW50TG9hZGVyKCktPmRpZENyZWF0ZUdsb2JhbEhpc3RvcnlFbnRyeSgpICYmIG1fZnJhbWUu
bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+dW5yZWFjaGFibGVVUkwoKS5pc0VtcHR5KCkgJiYg
IW1fZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCkuaXNFbXB0eSgpKQorICAgICAgICBpZiAoIW1fZnJh
bWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+ZGlkQ3JlYXRlR2xvYmFsSGlzdG9yeUVudHJ5
KCkgJiYgbV9mcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT51bnJlYWNoYWJsZVVSTCgp
LmlzRW1wdHkoKSkKICAgICAgICAgICAgIG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkudXBkYXRl
R2xvYmFsSGlzdG9yeVJlZGlyZWN0TGlua3MoKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9IaXN0b3J5Q29udHJvbGxlci5oCmluZGV4IDVkMjVmZWExYmQ0Li5kOTUyNTJjZjczMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmgKQEAgLTc1LDcgKzc1
LDcgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlRm9yRnJhbWVMb2FkQ29tcGxldGVkKCk7CiAK
ICAgICBIaXN0b3J5SXRlbSogY3VycmVudEl0ZW0oKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRJ
dGVtLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRDdXJyZW50SXRlbShIaXN0b3J5SXRlbSYpOworICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q3VycmVudEl0ZW0oSGlzdG9yeUl0ZW0mKTsKICAgICB2
b2lkIHNldEN1cnJlbnRJdGVtVGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYpOwogICAg
IGJvb2wgY3VycmVudEl0ZW1TaG91bGRCZVJlcGxhY2VkKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCByZXBsYWNlQ3VycmVudEl0ZW0oSGlzdG9yeUl0ZW0qKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5oCmluZGV4IDlkNzIxZDZlNzEzLi4zOWM1NjRlMGQ3
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5oCkBAIC0xMzAsNiAr
MTMwLDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFRhcmdldEJhY2tGb3J3YXJkSXRlbShIaXN0
b3J5SXRlbSYpOwogICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8QmFja0ZvcndhcmRJdGVtSWRlbnRp
Zmllcj4mIHRhcmdldEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBt
X3RhcmdldEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI7IH0KIAorICAgIExvY2tIaXN0b3J5IGxv
Y2tIaXN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9sb2NrSGlzdG9yeTsgfQorICAgIHZvaWQgc2V0
TG9ja0hpc3RvcnkoTG9ja0hpc3RvcnkgbG9ja0hpc3RvcnkpIHsgbV9sb2NrSGlzdG9yeSA9IGxv
Y2tIaXN0b3J5OyB9CisKKyAgICBMb2NrQmFja0ZvcndhcmRMaXN0IGxvY2tCYWNrRm9yd2FyZExp
c3QoKSBjb25zdCB7IHJldHVybiBtX2xvY2tCYWNrRm9yd2FyZExpc3Q7IH0KKyAgICB2b2lkIHNl
dExvY2tCYWNrRm9yd2FyZExpc3QoTG9ja0JhY2tGb3J3YXJkTGlzdCBsb2NrQmFja0ZvcndhcmRM
aXN0KSB7IG1fbG9ja0JhY2tGb3J3YXJkTGlzdCA9IGxvY2tCYWNrRm9yd2FyZExpc3Q7IH0KKwog
cHJpdmF0ZToKICAgICAvLyBEbyBub3QgYWRkIGEgc3Ryb25nIHJlZmVyZW5jZSB0byB0aGUgb3Jp
Z2luYXRpbmcgZG9jdW1lbnQgb3IgYSBzdWJvYmplY3QgdGhhdCBob2xkcyB0aGUKICAgICAvLyBv
cmlnaW5hdGluZyBkb2N1bWVudC4gU2VlIGNvbW1lbnQgYWJvdmUgdGhlIGNsYXNzIGZvciBtb3Jl
IGRldGFpbHMuCkBAIC0xNDcsNiArMTUzLDggQEAgcHJpdmF0ZToKICAgICBib29sIG1fb3BlbmVk
VmlhV2luZG93T3BlbldpdGhPcGVuZXIgeyBmYWxzZSB9OwogICAgIHN0ZDo6b3B0aW9uYWw8UGFn
ZUlEQW5kRnJhbWVJRFBhaXI+IG1fb3BlbmVyOwogICAgIHN0ZDo6b3B0aW9uYWw8QmFja0Zvcndh
cmRJdGVtSWRlbnRpZmllcj4gbV90YXJnZXRCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyOworICAg
IExvY2tIaXN0b3J5IG1fbG9ja0hpc3RvcnkgeyBMb2NrSGlzdG9yeTo6Tm8gfTsKKyAgICBMb2Nr
QmFja0ZvcndhcmRMaXN0IG1fbG9ja0JhY2tGb3J3YXJkTGlzdCB7IExvY2tCYWNrRm9yd2FyZExp
c3Q6Ok5vIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Mb2FkUGFyYW1ldGVycy5jcHAKaW5kZXggMGI1MWZmMDM2YzYuLmJlYjYyNDQ2NzIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuY3BwCkBAIC01MCw2ICs1MCw5IEBAIHZv
aWQgTG9hZFBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAg
ICAgZW5jb2RlciA8PCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ7CiAgICAgZW5jb2RlciA8
PCB1c2VyRGF0YTsKICAgICBlbmNvZGVyIDw8IGZvclNhZmVCcm93c2luZzsKKyAgICBlbmNvZGVy
LmVuY29kZUVudW0obG9ja0hpc3RvcnkpOworICAgIGVuY29kZXIuZW5jb2RlRW51bShsb2NrQmFj
a0ZvcndhcmRMaXN0KTsKKyAgICBlbmNvZGVyIDw8IGNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlz
dG9yeTsKIAogICAgIHBsYXRmb3JtRW5jb2RlKGVuY29kZXIpOwogfQpAQCAtMTA4LDcgKzExMSwx
OSBAQCBib29sIExvYWRQYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBM
b2FkUGFyYW1ldGVycyYgZGF0YSkKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5mb3JT
YWZlQnJvd3NpbmcpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCisKKyAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlRW51bShkYXRhLmxvY2tIaXN0b3J5KSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0oZGF0YS5sb2NrQmFja0ZvcndhcmRMaXN0
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGNs
aWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeTsKKyAgICBkZWNvZGVyID4+IGNsaWVudFJlZGly
ZWN0U291cmNlRm9ySGlzdG9yeTsKKyAgICBpZiAoIWNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlz
dG9yeSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGRhdGEuY2xpZW50UmVkaXJlY3RTb3Vy
Y2VGb3JIaXN0b3J5ID0gV1RGTW92ZSgqY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5KTsK
KwogICAgIGlmICghcGxhdGZvcm1EZWNvZGUoZGVjb2RlciwgZGF0YSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRl
cnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmgKaW5kZXggNTc0Yzdj
ZDI4NGUuLjdhNDkwOGQxMDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2Fk
UGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmgK
QEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAi
U2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIlVzZXJEYXRhLmgiCisjaW5jbHVkZSA8V2Vi
Q29yZS9GcmFtZUxvYWRlclR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVl
c3QuaD4KIAogT0JKQ19DTEFTUyBOU0RpY3Rpb25hcnk7CkBAIC02Myw2ICs2NCw5IEBAIHN0cnVj
dCBMb2FkUGFyYW1ldGVycyB7CiAgICAgYm9vbCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQg
eyBmYWxzZSB9OwogICAgIFVzZXJEYXRhIHVzZXJEYXRhOwogICAgIGJvb2wgZm9yU2FmZUJyb3dz
aW5nIHsgZmFsc2UgfTsKKyAgICBXZWJDb3JlOjpMb2NrSGlzdG9yeSBsb2NrSGlzdG9yeSB7IFdl
YkNvcmU6OkxvY2tIaXN0b3J5OjpObyB9OworICAgIFdlYkNvcmU6OkxvY2tCYWNrRm9yd2FyZExp
c3QgbG9ja0JhY2tGb3J3YXJkTGlzdCB7IFdlYkNvcmU6OkxvY2tCYWNrRm9yd2FyZExpc3Q6Ok5v
IH07CisgICAgU3RyaW5nIGNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeTsKIAogI2lmIFBM
QVRGT1JNKENPQ09BKQogICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IGRhdGFEZXRlY3Rpb25D
b250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvTmF2aWdhdGlvbkFjdGlv
bkRhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTmF2aWdhdGlvbkFjdGlvbkRhdGEuY3Bw
CmluZGV4IDM5NDM2MWRiMDRiLi4zNjFhODczNGUzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvTmF2aWdhdGlvbkFjdGlvbkRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL05hdmlnYXRpb25BY3Rpb25EYXRhLmNwcApAQCAtNTEsNiArNTEsOSBAQCB2b2lkIE5hdmln
YXRpb25BY3Rpb25EYXRhOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAg
IGVuY29kZXIgPDwgb3BlbmVyOwogICAgIGVuY29kZXIgPDwgcmVxdWVzdGVyT3JpZ2luOwogICAg
IGVuY29kZXIgPDwgdGFyZ2V0QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcjsKKyAgICBlbmNvZGVy
LmVuY29kZUVudW0obG9ja0hpc3RvcnkpOworICAgIGVuY29kZXIuZW5jb2RlRW51bShsb2NrQmFj
a0ZvcndhcmRMaXN0KTsKKyAgICBlbmNvZGVyIDw8IGNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlz
dG9yeTsKIH0KIAogc3RkOjpvcHRpb25hbDxOYXZpZ2F0aW9uQWN0aW9uRGF0YT4gTmF2aWdhdGlv
bkFjdGlvbkRhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCkBAIC0xMjgsMTEgKzEz
MSwyNCBAQCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpb25BY3Rpb25EYXRhPiBOYXZpZ2F0aW9uQWN0
aW9uRGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZAogICAgIGRlY29kZXIgPj4gdGFyZ2V0QmFj
a0ZvcndhcmRJdGVtSWRlbnRpZmllcjsKICAgICBpZiAoIXRhcmdldEJhY2tGb3J3YXJkSXRlbUlk
ZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBXZWJDb3JlOjpM
b2NrSGlzdG9yeSBsb2NrSGlzdG9yeTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShsb2Nr
SGlzdG9yeSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBXZWJDb3JlOjpM
b2NrQmFja0ZvcndhcmRMaXN0IGxvY2tCYWNrRm9yd2FyZExpc3Q7CisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZUVudW0obG9ja0JhY2tGb3J3YXJkTGlzdCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gY2xpZW50UmVkaXJlY3RTb3VyY2VG
b3JIaXN0b3J5OworICAgIGRlY29kZXIgPj4gY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5
OworICAgIGlmICghY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5KQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogICAgICAgICAKICAgICByZXR1cm4ge3sgV1RGTW92ZShuYXZpZ2F0
aW9uVHlwZSksIFdURk1vdmUobW9kaWZpZXJzKSwgV1RGTW92ZShtb3VzZUJ1dHRvbiksIFdURk1v
dmUoc3ludGhldGljQ2xpY2tUeXBlKSwgV1RGTW92ZSgqdXNlckdlc3R1cmVUb2tlbklkZW50aWZp
ZXIpLAogICAgICAgICBXVEZNb3ZlKCpjYW5IYW5kbGVSZXF1ZXN0KSwgV1RGTW92ZShzaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5KSwgV1RGTW92ZSgqZG93bmxvYWRBdHRyaWJ1dGUpLCBXVEZN
b3ZlKGNsaWNrTG9jYXRpb25JblJvb3RWaWV3Q29vcmRpbmF0ZXMpLAogICAgICAgICBXVEZNb3Zl
KCppc1JlZGlyZWN0KSwgKnRyZWF0QXNTYW1lT3JpZ2luTmF2aWdhdGlvbiwgKmhhc09wZW5lZEZy
YW1lcywgKm9wZW5lZFZpYVdpbmRvd09wZW5XaXRoT3BlbmVyLCBXVEZNb3ZlKCpvcGVuZXIpLCBX
VEZNb3ZlKCpyZXF1ZXN0ZXJPcmlnaW4pLAotICAgICAgICBXVEZNb3ZlKCp0YXJnZXRCYWNrRm9y
d2FyZEl0ZW1JZGVudGlmaWVyKSB9fTsKKyAgICAgICAgV1RGTW92ZSgqdGFyZ2V0QmFja0Zvcndh
cmRJdGVtSWRlbnRpZmllciksIGxvY2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0LCBXVEZN
b3ZlKCpjbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkpIH19OwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05hdmlnYXRpb25B
Y3Rpb25EYXRhLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9OYXZpZ2F0aW9uQWN0aW9uRGF0YS5o
CmluZGV4IDA4MzlmMWY0YjVkLi4xNmY5NzY3YWZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvTmF2aWdhdGlvbkFjdGlvbkRhdGEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9OYXZpZ2F0aW9uQWN0aW9uRGF0YS5oCkBAIC01OCw2ICs1OCw5IEBAIHN0cnVjdCBOYXZpZ2F0
aW9uQWN0aW9uRGF0YSB7CiAgICAgc3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8dWludDY0X3QsIHVp
bnQ2NF90Pj4gb3BlbmVyOwogICAgIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSByZXF1ZXN0
ZXJPcmlnaW47CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVu
dGlmaWVyPiB0YXJnZXRCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyOworICAgIFdlYkNvcmU6Okxv
Y2tIaXN0b3J5IGxvY2tIaXN0b3J5OworICAgIFdlYkNvcmU6OkxvY2tCYWNrRm9yd2FyZExpc3Qg
bG9ja0JhY2tGb3J3YXJkTGlzdDsKKyAgICBXVEY6OlN0cmluZyBjbGllbnRSZWRpcmVjdFNvdXJj
ZUZvckhpc3Rvcnk7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0uY3BwCmluZGV4IGRmOTczNTBlMDMwLi42MTJkYjIzMjY5NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAKQEAgLTEx
NSw3ICsxMTUsNiBAQCBib29sIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06Oml0ZW1Jc0luU2FtZURv
Y3VtZW50KGNvbnN0IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mCiAKIHZvaWQgV2ViQmFja0Zvcndh
cmRMaXN0SXRlbTo6c2V0U3VzcGVuZGVkUGFnZShTdXNwZW5kZWRQYWdlUHJveHkmIHBhZ2UpCiB7
Ci0gICAgQVNTRVJUKCFtX3N1c3BlbmRlZFBhZ2UpOwogICAgIG1fc3VzcGVuZGVkUGFnZSA9IG1h
a2VXZWFrUHRyKHBhZ2UpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJTmF2aWdhdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5h
dmlnYXRpb24uaAppbmRleCBjNjhlM2JmZTcxMS4uYmExZTM5MzZiZGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uaApAQCAtMTAxLDYgKzEwMSwxNSBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRSZXF1ZXN0ZXJPcmlnaW4oY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiBvcmlnaW4pIHsgbV9yZXF1ZXN0ZXJPcmlnaW4gPSBvcmlnaW47IH0KICAg
ICBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHJlcXVlc3Rlck9yaWdpbigpIGNv
bnN0IHsgcmV0dXJuIG1fcmVxdWVzdGVyT3JpZ2luOyB9CiAKKyAgICB2b2lkIHNldExvY2tIaXN0
b3J5KFdlYkNvcmU6OkxvY2tIaXN0b3J5IGxvY2tIaXN0b3J5KSB7IG1fbG9ja0hpc3RvcnkgPSBs
b2NrSGlzdG9yeTsgfQorICAgIFdlYkNvcmU6OkxvY2tIaXN0b3J5IGxvY2tIaXN0b3J5KCkgY29u
c3QgeyByZXR1cm4gbV9sb2NrSGlzdG9yeTsgfQorCisgICAgdm9pZCBzZXRMb2NrQmFja0Zvcndh
cmRMaXN0KFdlYkNvcmU6OkxvY2tCYWNrRm9yd2FyZExpc3QgbG9ja0JhY2tGb3J3YXJkTGlzdCkg
eyBtX2xvY2tCYWNrRm9yd2FyZExpc3QgPSBsb2NrQmFja0ZvcndhcmRMaXN0OyB9CisgICAgV2Vi
Q29yZTo6TG9ja0JhY2tGb3J3YXJkTGlzdCBsb2NrQmFja0ZvcndhcmRMaXN0KCkgY29uc3QgeyBy
ZXR1cm4gbV9sb2NrQmFja0ZvcndhcmRMaXN0OyB9CisKKyAgICB2b2lkIHNldENsaWVudFJlZGly
ZWN0U291cmNlRm9ySGlzdG9yeShjb25zdCBXVEY6OlN0cmluZyYgY2xpZW50UmVkaXJlY3RTb3Vy
Y2VGb3JIaXN0b3J5KSB7IG1fY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5ID0gY2xpZW50
UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5OyB9CisgICAgV1RGOjpTdHJpbmcgY2xpZW50UmVkaXJl
Y3RTb3VyY2VGb3JIaXN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnRSZWRpcmVjdFNvdXJj
ZUZvckhpc3Rvcnk7IH0KKwogI2lmICFMT0dfRElTQUJMRUQKICAgICBjb25zdCBjaGFyKiBsb2dn
aW5nU3RyaW5nKCkgY29uc3Q7CiAjZW5kaWYKQEAgLTEyNyw2ICsxMzYsOSBAQCBwcml2YXRlOgog
ICAgIGJvb2wgbV9vcGVuZWRWaWFXaW5kb3dPcGVuV2l0aE9wZW5lciB7IGZhbHNlIH07CiAgICAg
c3RkOjpvcHRpb25hbDxzdGQ6OnBhaXI8dWludDY0X3QsIHVpbnQ2NF90Pj4gbV9vcGVuZXI7CiAg
ICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIG1fcmVxdWVzdGVyT3JpZ2luOworICAgIFdl
YkNvcmU6OkxvY2tIaXN0b3J5IG1fbG9ja0hpc3Rvcnk7CisgICAgV2ViQ29yZTo6TG9ja0JhY2tG
b3J3YXJkTGlzdCBtX2xvY2tCYWNrRm9yd2FyZExpc3Q7CisgICAgV1RGOjpTdHJpbmcgbV9jbGll
bnRSZWRpcmVjdFNvdXJjZUZvckhpc3Rvcnk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBBUEkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCmlu
ZGV4IDM0ZjA4OTNkODgzLi44OWQzZTgyNzI1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCkBAIC03Myw3ICs3Myw4IEBAIHB1Ymxp
YzoKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvbihXZWJL
aXQ6OldlYlBhZ2VQcm94eSYsIE5hdmlnYXRpb24qLCBPYmplY3QqKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxOYXZpZ2F0aW9uKFdl
YktpdDo6V2ViUGFnZVByb3h5JiwgTmF2aWdhdGlvbiosIE9iamVjdCopIHsgfQotICAgIHZpcnR1
YWwgdm9pZCB3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KFdlYktpdDo6V2ViUGFnZVByb3h5Jiwg
Y29uc3QgV1RGOjpTdHJpbmcmLCBkb3VibGUpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVy
Zm9ybUNsaWVudFJlZGlyZWN0KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJp
bmcmIGRlc3RpbmF0aW9uVVJMLCBkb3VibGUpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRQZXJm
b3JtQ2xpZW50UmVkaXJlY3QoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBjb25zdCBXVEY6OlN0cmlu
ZyYgc291cmNlVVJMLCBjb25zdCBXVEY6OlN0cmluZyYgZGVzdGluYXRpb25VUkwpIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBkaWRDYW5jZWxDbGllbnRSZWRpcmVjdChXZWJLaXQ6OldlYlBhZ2VQcm94
eSYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uV2l0
aEVycm9yKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgTmF2
aWdhdGlvbiosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBPYmplY3QqKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWVXaXRoRXJyb3Io
V2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBjb25zdCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBOYXZpZ2F0aW9uKiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYsIE9iamVjdCopIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oCmlu
ZGV4IDQ4ZjhmMGVhNThiLi5iYTU2ODZiNTJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZh
dGUuaApAQCAtNjgsNiArNjgsNyBAQCBzdGF0aWMgY29uc3QgV0tOYXZpZ2F0aW9uUmVzcG9uc2VQ
b2xpY3kgX1dLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5QmVjb21lRG93bmxvYQogLSAodm9pZClf
d2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBuYXZpZ2F0aW9uOihXS05hdmlnYXRpb24gKilu
YXZpZ2F0aW9uIGRpZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1lOihXS0ZyYW1lSW5mbyAq
KXN1YmZyYW1lIHdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yOwogCiAtICh2b2lkKV93ZWJWaWV3
OihXS1dlYlZpZXcgKil3ZWJWaWV3IHdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VSTDooTlNV
UkwgKilVUkwgZGVsYXk6KE5TVGltZUludGVydmFsKWRlbGF5OworLSAodm9pZClfd2ViVmlldzoo
V0tXZWJWaWV3ICopd2ViVmlldyBkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3RGcm9tVVJMOihOU1VS
TCAqKXNvdXJjZVVSTCB0b1VSTDooTlNVUkwgKilkZXN0aW5hdGlvblVSTDsKIC0gKHZvaWQpX3dl
YlZpZXdEaWRDYW5jZWxDbGllbnRSZWRpcmVjdDooV0tXZWJWaWV3ICopd2ViVmlldzsKIAogLSAo
dm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBuYXZpZ2F0aW9uRGlkRmluaXNoRG9j
dW1lbnRMb2FkOihXS05hdmlnYXRpb24gKiluYXZpZ2F0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAppbmRleCAwYzlhZjk1M2Q5OS4uYTZh
OTc0NzJkNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmln
YXRpb25TdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRp
b25TdGF0ZS5oCkBAIC05OCw2ICs5OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHZvaWQgZGlkU3Rh
cnRQcm92aXNpb25hbE5hdmlnYXRpb24oV2ViUGFnZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiwg
QVBJOjpPYmplY3QqKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVk
aXJlY3RGb3JQcm92aXNpb25hbE5hdmlnYXRpb24oV2ViUGFnZVByb3h5JiwgQVBJOjpOYXZpZ2F0
aW9uKiwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCB3aWxsUGVyZm9ybUNs
aWVudFJlZGlyZWN0KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJiwgZG91YmxlKSBv
dmVycmlkZTsKKyAgICAgICAgdm9pZCBkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3QoV2ViUGFnZVBy
b3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYpIG92ZXJyaWRlOwog
ICAgICAgICB2b2lkIGRpZENhbmNlbENsaWVudFJlZGlyZWN0KFdlYlBhZ2VQcm94eSYpIG92ZXJy
aWRlOwogICAgICAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25XaXRoRXJyb3Io
V2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSYsIEFQSTo6TmF2aWdhdGlvbiosIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImLCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOwogICAgICAgICB2
b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1lV2l0aEVycm9yKFdlYlBhZ2VQcm94
eSYsIFdlYkZyYW1lUHJveHkmLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBB
UEk6Ok5hdmlnYXRpb24qLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgQVBJOjpPYmpl
Y3QqKSBvdmVycmlkZTsKQEAgLTE5NSw2ICsxOTYsNyBAQCBwcml2YXRlOgogICAgICAgICBib29s
IHdlYlZpZXdEaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uV2l0aEVycm9yIDogMTsKICAgICAg
ICAgYm9vbCB3ZWJWaWV3TmF2aWdhdGlvbkRpZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1l
V2l0aEVycm9yIDogMTsKICAgICAgICAgYm9vbCB3ZWJWaWV3V2lsbFBlcmZvcm1DbGllbnRSZWRp
cmVjdCA6IDE7CisgICAgICAgIGJvb2wgd2ViVmlld0RpZFBlcmZvcm1DbGllbnRSZWRpcmVjdCA6
IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld0RpZENhbmNlbENsaWVudFJlZGlyZWN0IDogMTsKICAg
ICAgICAgYm9vbCB3ZWJWaWV3RGlkQ29tbWl0TmF2aWdhdGlvbiA6IDE7CiAgICAgICAgIGJvb2wg
d2ViVmlld05hdmlnYXRpb25EaWRGaW5pc2hEb2N1bWVudExvYWQgOiAxOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCmluZGV4IGJmMGJkMDcw
YzM5Li4wNmM0ZTUxOGY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvTmF2aWdhdGlvblN0YXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L05hdmlnYXRpb25TdGF0ZS5tbQpAQCAtMTU3LDYgKzE1Nyw3IEBAIHZvaWQgTmF2aWdhdGlvblN0
YXRlOjpzZXROYXZpZ2F0aW9uRGVsZWdhdGUoaWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlPiBkZWxl
Z2F0ZSkKIAogICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3TmF2aWdhdGlv
bkRpZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1lV2l0aEVycm9yID0gW2RlbGVnYXRlIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6bmF2aWdhdGlvbjpkaWRGYWlsUHJv
dmlzaW9uYWxMb2FkSW5TdWJmcmFtZTp3aXRoRXJyb3I6KV07CiAgICAgbV9uYXZpZ2F0aW9uRGVs
ZWdhdGVNZXRob2RzLndlYlZpZXdXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0ID0gW2RlbGVnYXRl
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6d2lsbFBlcmZvcm1DbGllbnRS
ZWRpcmVjdFRvVVJMOmRlbGF5OildOworICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53
ZWJWaWV3RGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0ID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0RnJvbVVSTDp0
b1VSTDopXTsKICAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZENhbmNl
bENsaWVudFJlZGlyZWN0ID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
X3dlYlZpZXdEaWRDYW5jZWxDbGllbnRSZWRpcmVjdDopXTsKICAgICBtX25hdmlnYXRpb25EZWxl
Z2F0ZU1ldGhvZHMud2ViVmlld05hdmlnYXRpb25EaWRGaW5pc2hEb2N1bWVudExvYWQgPSBbZGVs
ZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpuYXZpZ2F0aW9uRGlk
RmluaXNoRG9jdW1lbnRMb2FkOildOwogICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53
ZWJWaWV3TmF2aWdhdGlvbkRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb24gPSBbZGVsZWdhdGUgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpuYXZpZ2F0aW9uOmRpZFNhbWVEb2N1
bWVudE5hdmlnYXRpb246KV07CkBAIC03MDQsNiArNzA1LDIxIEBAIHZvaWQgTmF2aWdhdGlvblN0
YXRlOjpOYXZpZ2F0aW9uQ2xpZW50Ojp3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KFdlYlBhZ2VQ
cm94eSYKICAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+
KG5hdmlnYXRpb25EZWxlZ2F0ZSkgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3
IHdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VSTDp1cmwgZGVsYXk6ZGVsYXldOwogfQogCit2
b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6ZGlkUGVyZm9ybUNsaWVudFJl
ZGlyZWN0KFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgV1RGOjpTdHJpbmcmIHNvdXJjZVVSTFN0
cmluZywgY29uc3QgV1RGOjpTdHJpbmcmIGRlc3RpbmF0aW9uVVJMU3RyaW5nKQoreworICAgIGlm
ICghbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdE
aWRQZXJmb3JtQ2xpZW50UmVkaXJlY3QpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gbmF2
aWdhdGlvbkRlbGVnYXRlID0gbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGUu
Z2V0KCk7CisgICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdhdGUpCisgICAgICAgIHJldHVybjsKKwor
ICAgIFdlYkNvcmU6OlVSTCBzb3VyY2VVUkwoV2ViQ29yZTo6VVJMKCksIHNvdXJjZVVSTFN0cmlu
Zyk7CisgICAgV2ViQ29yZTo6VVJMIGRlc3RpbmF0aW9uVVJMKFdlYkNvcmU6OlVSTCgpLCBkZXN0
aW5hdGlvblVSTFN0cmluZyk7CisKKyAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlvbkRl
bGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRpb25EZWxlZ2F0ZSkgX3dlYlZpZXc6bV9uYXZpZ2F0aW9u
U3RhdGUubV93ZWJWaWV3IGRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdEZyb21VUkw6c291cmNlVVJM
IHRvVVJMOmRlc3RpbmF0aW9uVVJMXTsKK30KKwogdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmln
YXRpb25DbGllbnQ6OmRpZENhbmNlbENsaWVudFJlZGlyZWN0KFdlYlBhZ2VQcm94eSYgcGFnZSkK
IHsKICAgICBpZiAoIW1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9k
cy53ZWJWaWV3RGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9GcmFtZUxvYWRTdGF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
RnJhbWVMb2FkU3RhdGUuaAppbmRleCA5OGMzMjVlODQ0My4uYTg5YWQwMDBjYzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0ZyYW1lTG9hZFN0YXRlLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvRnJhbWVMb2FkU3RhdGUuaApAQCAtNTEsNiArNTEsNyBAQCBwdWJs
aWM6CiAKICAgICBTdGF0ZSBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KICAgICBj
b25zdCBXZWJDb3JlOjpVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CisgICAgdm9p
ZCBzZXRVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpIHsgbV91cmwgPSB1cmw7IH0KICAgICBj
b25zdCBXZWJDb3JlOjpVUkwmIHByb3Zpc2lvbmFsVVJMKCkgY29uc3QgeyByZXR1cm4gbV9wcm92
aXNpb25hbFVSTDsgfQogCiAgICAgdm9pZCBzZXRVbnJlYWNoYWJsZVVSTChjb25zdCBXZWJDb3Jl
OjpVUkwmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGYy
NzM3YTI3NzA3Li43YTM0NTExYzg1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCkBAIC0xMDMsNiArMTAzLDcgQEAKICNpbmNsdWRlICJXZWJJbWFnZS5oIgogI2lu
Y2x1ZGUgIldlYkluc3BlY3RvclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yVXRpbGl0
aWVzLmgiCisjaW5jbHVkZSAiV2ViTmF2aWdhdGlvbkRhdGFTdG9yZS5oIgogI2luY2x1ZGUgIldl
Yk5hdmlnYXRpb25TdGF0ZS5oIgogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eS5oIgogI2luY2x1ZGUgIldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuaCIKQEAgLTEw
MTcsNiArMTAxOCw5IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0
aW9uKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgUmVzb3VyCiAgICAgbG9hZFBhcmFtZXRl
cnMuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9ICh1aW50NjRfdClzaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5OwogICAgIGxvYWRQYXJhbWV0ZXJzLnVzZXJEYXRhID0gVXNlckRhdGEo
cHJvY2VzcygpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEpLmdldCgpKTsKICAg
ICBsb2FkUGFyYW1ldGVycy5zaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgPSBzaG91bGRUcmVh
dEFzQ29udGludWluZ0xvYWQgPT0gU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpZZXM7Cisg
ICAgbG9hZFBhcmFtZXRlcnMubG9ja0hpc3RvcnkgPSBuYXZpZ2F0aW9uLmxvY2tIaXN0b3J5KCk7
CisgICAgbG9hZFBhcmFtZXRlcnMubG9ja0JhY2tGb3J3YXJkTGlzdCA9IG5hdmlnYXRpb24ubG9j
a0JhY2tGb3J3YXJkTGlzdCgpOworICAgIGxvYWRQYXJhbWV0ZXJzLmNsaWVudFJlZGlyZWN0U291
cmNlRm9ySGlzdG9yeSA9IG5hdmlnYXRpb24uY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5
KCk7CiAgICAgYm9vbCBjcmVhdGVkRXh0ZW5zaW9uID0gbWF5YmVJbml0aWFsaXplU2FuZGJveEV4
dGVuc2lvbkhhbmRsZSh1cmwsIGxvYWRQYXJhbWV0ZXJzLnNhbmRib3hFeHRlbnNpb25IYW5kbGUp
OwogICAgIGlmIChjcmVhdGVkRXh0ZW5zaW9uKQogICAgICAgICBtX3Byb2Nlc3MtPndpbGxBY3F1
aXJlVW5pdmVyc2FsRmlsZVJlYWRTYW5kYm94RXh0ZW5zaW9uKCk7CkBAIC0yNTQ4LDYgKzI1NTIs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKEFQ
STo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgUgogCiAgICAgUmVmPFdlYlByb2Nlc3NQcm94eT4g
cHJldmlvdXNQcm9jZXNzID0gbV9wcm9jZXNzLmNvcHlSZWYoKTsKICAgICBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBtYWluRnJhbWVJREluUHJldmlvdXNQcm9jZXNzID0gbV9tYWluRnJhbWUgPyBz
dGQ6Om1ha2Vfb3B0aW9uYWwobV9tYWluRnJhbWUtPmZyYW1lSUQoKSkgOiBzdGQ6Om51bGxvcHQ7
CisgICAgYXV0byBtYWluRnJhbWVVUkwgPSBtX21haW5GcmFtZSA/IG1fbWFpbkZyYW1lLT51cmwo
KSA6IFdlYkNvcmU6OlVSTCgpOwogCiAgICAgQVNTRVJUKG1fcHJvY2Vzcy5wdHIoKSAhPSBwcm9j
ZXNzLnB0cigpKTsKIApAQCAtMjU3NSw2ICsyNTgwLDE2IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpj
b250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9u
LCBSCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBpZiAobmF2aWdhdGlvbi5sb2NrQmFj
a0ZvcndhcmRMaXN0KCkgPT0gTG9ja0JhY2tGb3J3YXJkTGlzdDo6WWVzIHx8IG5hdmlnYXRpb24u
bG9ja0hpc3RvcnkoKSA9PSBMb2NrSGlzdG9yeTo6WWVzKSB7CisgICAgICAgIC8vIElmIFdlYkNv
cmUgaXMgc3VwcG9zZWQgdG8gbG9jayB0aGUgaGlzdG9yeSBmb3IgdGhpcyBsb2FkLCB0aGVuIHRo
ZSBuZXcgcHJvY2VzcyBuZWVkcyB0byBrbm93IGFib3V0IHRoZSBjdXJyZW50IGhpc3RvcnkgaXRl
bSBzbyBpdCBjYW4gdXBkYXRlCisgICAgICAgIC8vIGl0IGluc3RlYWQgb2YgY3JlYXRpbmcgYSBu
ZXcgb25lLgorICAgICAgICBhdXRvIGl0ZW1TdGF0ZXMgPSBtX2JhY2tGb3J3YXJkTGlzdC0+Zmls
dGVyZWRJdGVtU3RhdGVzKFtjdXJyZW50SXRlbSA9IG1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50
SXRlbSgpXShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtKSB7CisgICAgICAgICAgICByZXR1
cm4gJml0ZW0gPT0gY3VycmVudEl0ZW07CisgICAgICAgIH0pOworICAgICAgICBSRUxFQVNFX0FT
U0VSVChpdGVtU3RhdGVzLnNpemUoKSA9PSAxKTsKKyAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpTZXRDdXJyZW50SGlzdG9yeUl0ZW1Gb3JSZWF0dGFjaChpdGVtU3Rh
dGVzWzBdKSwgbV9wYWdlSUQpOworICAgIH0KKwogICAgIC8vIEZJWE1FOiBXb3JrIG91dCB0aW1p
bmcgb2YgcmVzcG9uZGluZyB3aXRoIHRoZSBsYXN0IHBvbGljeSBkZWxlZ2F0ZSwgZXRjCiAgICAg
QVNTRVJUKCFuYXZpZ2F0aW9uLmN1cnJlbnRSZXF1ZXN0KCkuaXNFbXB0eSgpKTsKICAgICBsb2Fk
UmVxdWVzdFdpdGhOYXZpZ2F0aW9uKG5hdmlnYXRpb24sIFJlc291cmNlUmVxdWVzdCB7IG5hdmln
YXRpb24uY3VycmVudFJlcXVlc3QoKSB9LCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5OjpTaG91bGRBbGxvd0V4dGVybmFsU2NoZW1lcywgbnVsbHB0ciwgU2hvdWxkVHJlYXRB
c0NvbnRpbnVpbmdMb2FkOjpZZXMpOwpAQCAtMjU4MiwxNCArMjU5NywxNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKEFQSTo6TmF2aWdhdGlvbiYg
bmF2aWdhdGlvbiwgUgogICAgIC8vIE5vcm1hbGx5LCBub3RpZmljYXRpb24gb2YgYSBzZXJ2ZXIg
cmVkaXJlY3QgY29tZXMgZnJvbSB0aGUgV2ViQ29udGVudCBwcm9jZXNzLgogICAgIC8vIElmIHdl
IGFyZSBwcm9jZXNzIHN3YXBwaW5nIGluIHJlc3BvbnNlIHRvIGEgc2VydmVyIHJlZGlyZWN0IHRo
ZW4gdGhhdCBub3RpZmljYXRpb24gd2lsbCBub3QgY29tZSBmcm9tIHRoZSBuZXcgV2ViQ29udGVu
dCBwcm9jZXNzLgogICAgIC8vIEluIHRoaXMgY2FzZSB3ZSBoYXZlIHRoZSBVSVByb2Nlc3Mgc3lu
dGhlc2l6ZSB0aGUgcmVkaXJlY3Qgbm90aWZpY2F0aW9uIGF0IHRoZSBhcHByb3ByaWF0ZSB0aW1l
LgotICAgIGlmIChuYXZpZ2F0aW9uLmN1cnJlbnRSZXF1ZXN0SXNSZWRpcmVjdCgpKSB7Ci0gICAg
ICAgIEFTU0VSVCghbV9tYWluRnJhbWUpOwotICAgICAgICBtX21haW5GcmFtZUNyZWF0aW9uSGFu
ZGxlciA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG5hdmlnYXRpb24g
PSBtYWtlUmVmKG5hdmlnYXRpb24pLCByZXF1ZXN0ID0gIG5hdmlnYXRpb24uY3VycmVudFJlcXVl
c3QoKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIEFTU0VSVChtX21haW5GcmFtZSk7CisgICAg
QVNTRVJUKCFtX21haW5GcmFtZSk7CisgICAgbV9tYWluRnJhbWVDcmVhdGlvbkhhbmRsZXIgPSBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBuYXZpZ2F0aW9uID0gbWFrZVJl
ZihuYXZpZ2F0aW9uKSwgcmVxdWVzdCA9ICBuYXZpZ2F0aW9uLmN1cnJlbnRSZXF1ZXN0KCksIG1h
aW5GcmFtZVVSTCwgaXNTZXJ2ZXJSZWRpcmVjdCA9IG5hdmlnYXRpb24uY3VycmVudFJlcXVlc3RJ
c1JlZGlyZWN0KCldKCkgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVChtX21haW5GcmFtZSk7Cisg
ICAgICAgIC8vIFJlc3RvcmUgdGhlIG1haW4gZnJhbWUncyBjb21taXR0ZWQgVVJMIGFzIHNvbWUg
Y2xpZW50cyBtYXkgcmVseSBvbiBpdCB1bnRpbCB0aGUgbmV4dCBsb2FkIGlzIGNvbW1pdHRlZC4K
KyAgICAgICAgbV9tYWluRnJhbWUtPmZyYW1lTG9hZFN0YXRlKCkuc2V0VVJMKG1haW5GcmFtZVVS
TCk7CisKKyAgICAgICAgaWYgKGlzU2VydmVyUmVkaXJlY3QpIHsKICAgICAgICAgICAgIG1fbWFp
bkZyYW1lLT5mcmFtZUxvYWRTdGF0ZSgpLmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKHJlcXVlc3Qu
dXJsKCkpOwogICAgICAgICAgICAgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9u
YWxMb2FkRm9yRnJhbWUobV9tYWluRnJhbWUtPmZyYW1lSUQoKSwgbmF2aWdhdGlvbi0+bmF2aWdh
dGlvbklEKCksIFdURk1vdmUocmVxdWVzdCksIHsgfSk7Ci0gICAgICAgIH07Ci0gICAgfQorICAg
ICAgICB9CisgICAgfTsKIAogICAgIGJvb2wgaXNJbml0aWFsTmF2aWdhdGlvbkluTmV3V2luZG93
ID0gb3BlbmVkQnlET00oKSAmJiAhaGFzQ29tbWl0dGVkQW55UHJvdmlzaW9uYWxMb2FkcygpOwog
ICAgIGlmICghaXNJbml0aWFsTmF2aWdhdGlvbkluTmV3V2luZG93IHx8ICFtYWluRnJhbWVJRElu
UHJldmlvdXNQcm9jZXNzKQpAQCAtNDExNSw2ICs0MTMzLDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oV2ViRnJhbWVQcm94eSYgZnJhbWUsIGNv
bnN0IFcKICAgICAgICAgbmF2aWdhdGlvbi0+c2V0T3BlbmVkVmlhV2luZG93T3BlbldpdGhPcGVu
ZXIoKTsKICAgICBuYXZpZ2F0aW9uLT5zZXRPcGVuZXIobmF2aWdhdGlvbkFjdGlvbkRhdGEub3Bl
bmVyKTsKICAgICBuYXZpZ2F0aW9uLT5zZXRSZXF1ZXN0ZXJPcmlnaW4obmF2aWdhdGlvbkFjdGlv
bkRhdGEucmVxdWVzdGVyT3JpZ2luKTsKKyAgICBuYXZpZ2F0aW9uLT5zZXRMb2NrSGlzdG9yeShu
YXZpZ2F0aW9uQWN0aW9uRGF0YS5sb2NrSGlzdG9yeSk7CisgICAgbmF2aWdhdGlvbi0+c2V0TG9j
a0JhY2tGb3J3YXJkTGlzdChuYXZpZ2F0aW9uQWN0aW9uRGF0YS5sb2NrQmFja0ZvcndhcmRMaXN0
KTsKKyAgICBuYXZpZ2F0aW9uLT5zZXRDbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkobmF2
aWdhdGlvbkFjdGlvbkRhdGEuY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5KTsKIAogI2lm
IEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICBpZiAoZnJhbWUuZGlkSGFuZGxlQ29udGVu
dEZpbHRlclVuYmxvY2tOYXZpZ2F0aW9uKHJlcXVlc3QpKQpAQCAtNDMwMiw4ICs0MzIzLDEwIEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgU3RyaW5n
JiBzb3VyY2VVUkxTdHJpbmcsIGNvbnN0CiAgICAgTUVTU0FHRV9DSEVDS19VUkwoc291cmNlVVJM
U3RyaW5nKTsKICAgICBNRVNTQUdFX0NIRUNLX1VSTChkZXN0aW5hdGlvblVSTFN0cmluZyk7CiAK
LSAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpCisgICAgaWYgKGZyYW1lLT5pc01haW5GcmFt
ZSgpKSB7CiAgICAgICAgIG1faGlzdG9yeUNsaWVudC0+ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0
KCp0aGlzLCBzb3VyY2VVUkxTdHJpbmcsIGRlc3RpbmF0aW9uVVJMU3RyaW5nKTsKKyAgICAgICAg
bV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3QoKnRoaXMsIHNvdXJj
ZVVSTFN0cmluZywgZGVzdGluYXRpb25VUkxTdHJpbmcpOworICAgIH0KICAgICBwcm9jZXNzKCku
cHJvY2Vzc1Bvb2woKS5oaXN0b3J5Q2xpZW50KCkuZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KHBy
b2Nlc3MoKS5wcm9jZXNzUG9vbCgpLCAqdGhpcywgc291cmNlVVJMU3RyaW5nLCBkZXN0aW5hdGlv
blVSTFN0cmluZywgKmZyYW1lKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAK
aW5kZXggMWQwOWFmMjFkMDEuLmViMjU2NzMxYzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAKQEAgLTg3MSw2ICs4NzEsOCBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdAogICAg
IGlmIChhdXRvJiByZXF1ZXN0ZXIgPSBuYXZpZ2F0aW9uQWN0aW9uLnJlcXVlc3RlcigpKQogICAg
ICAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5yZXF1ZXN0ZXJPcmlnaW4gPSByZXF1ZXN0ZXItPnNl
Y3VyaXR5T3JpZ2luKCkuZGF0YSgpOwogICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLnRhcmdldEJh
Y2tGb3J3YXJkSXRlbUlkZW50aWZpZXIgPSBuYXZpZ2F0aW9uQWN0aW9uLnRhcmdldEJhY2tGb3J3
YXJkSXRlbUlkZW50aWZpZXIoKTsKKyAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5sb2NrSGlzdG9y
eSA9IG5hdmlnYXRpb25BY3Rpb24ubG9ja0hpc3RvcnkoKTsKKyAgICBuYXZpZ2F0aW9uQWN0aW9u
RGF0YS5sb2NrQmFja0ZvcndhcmRMaXN0ID0gbmF2aWdhdGlvbkFjdGlvbi5sb2NrQmFja0Zvcndh
cmRMaXN0KCk7CiAKICAgICBXZWJDb3JlOjpGcmFtZSogY29yZUZyYW1lID0gbV9mcmFtZS0+Y29y
ZUZyYW1lKCk7CiAgICAgaWYgKCFjb3JlRnJhbWUpCkBAIC04ODQsNiArODg2LDggQEAgdm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uKGNvbnN0IE5hdmlnYXQKICAgICBpZiAoIWRvY3VtZW50TG9hZGVyKQogICAgICAgICBkb2N1
bWVudExvYWRlciA9IHN0YXRpY19jYXN0PFdlYkRvY3VtZW50TG9hZGVyKj4oY29yZUZyYW1lLT5s
b2FkZXIoKS5kb2N1bWVudExvYWRlcigpKTsKIAorICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLmNs
aWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeSA9IGRvY3VtZW50TG9hZGVyLT5jbGllbnRSZWRp
cmVjdFNvdXJjZUZvckhpc3RvcnkoKTsKKwogICAgIC8vIE5vdGlmeSB0aGUgVUlQcm9jZXNzLgog
ICAgIFJlZjxXZWJGcmFtZT4gcHJvdGVjdCgqbV9mcmFtZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNTcyZGFlZTI1OWQuLjllMjZkYzEx
ZWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApA
QCAtMTMwNyw2ICsxMzA3LDkgQEAgdm9pZCBXZWJQYWdlOjpsb2FkUmVxdWVzdChMb2FkUGFyYW1l
dGVycyYmIGxvYWRQYXJhbWV0ZXJzKQogICAgIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kg
ZXh0ZXJuYWxVUkxzUG9saWN5ID0gc3RhdGljX2Nhc3Q8U2hvdWxkT3BlbkV4dGVybmFsVVJMc1Bv
bGljeT4obG9hZFBhcmFtZXRlcnMuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSk7CiAgICAg
ZnJhbWVMb2FkUmVxdWVzdC5zZXRTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KGV4dGVybmFs
VVJMc1BvbGljeSk7CiAgICAgZnJhbWVMb2FkUmVxdWVzdC5zZXRTaG91bGRUcmVhdEFzQ29udGlu
dWluZ0xvYWQobG9hZFBhcmFtZXRlcnMuc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkKTsKKyAg
ICBmcmFtZUxvYWRSZXF1ZXN0LnNldExvY2tIaXN0b3J5KGxvYWRQYXJhbWV0ZXJzLmxvY2tIaXN0
b3J5KTsKKyAgICBmcmFtZUxvYWRSZXF1ZXN0LnNldGxvY2tCYWNrRm9yd2FyZExpc3QobG9hZFBh
cmFtZXRlcnMubG9ja0JhY2tGb3J3YXJkTGlzdCk7CisgICAgZnJhbWVMb2FkUmVxdWVzdC5zZXRD
bGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkobG9hZFBhcmFtZXRlcnMuY2xpZW50UmVkaXJl
Y3RTb3VyY2VGb3JIaXN0b3J5KTsKIAogICAgIGNvcmVQYWdlKCktPnVzZXJJbnB1dEJyaWRnZSgp
LmxvYWRSZXF1ZXN0KFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdCkpOwogCkBAIC0yNjA2LDYgKzI2
MDksMTQgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVCYWNrRm9yd2FyZExpc3RGb3JSZWF0dGFjaChj
b25zdCBWZWN0b3I8V2ViS2l0OjpCYWNrRm9yd2FyZEwKICAgICByZXN0b3JlU2Vzc2lvbkludGVy
bmFsKGl0ZW1TdGF0ZXMsIFdhc1Jlc3RvcmVkQnlBUElSZXF1ZXN0OjpObywgV2ViQmFja0Zvcndh
cmRMaXN0UHJveHk6Ok92ZXJ3cml0ZUV4aXN0aW5nSXRlbTo6WWVzKTsKIH0KIAordm9pZCBXZWJQ
YWdlOjpzZXRDdXJyZW50SGlzdG9yeUl0ZW1Gb3JSZWF0dGFjaChXZWJLaXQ6OkJhY2tGb3J3YXJk
TGlzdEl0ZW1TdGF0ZSYmIGl0ZW1TdGF0ZSkKK3sKKyAgICBhdXRvIGhpc3RvcnlJdGVtID0gdG9I
aXN0b3J5SXRlbShpdGVtU3RhdGUpOworICAgIGF1dG8mIGhpc3RvcnlJdGVtUmVmID0gaGlzdG9y
eUl0ZW0uZ2V0KCk7CisgICAgc3RhdGljX2Nhc3Q8V2ViQmFja0ZvcndhcmRMaXN0UHJveHkmPihj
b3JlUGFnZSgpLT5iYWNrRm9yd2FyZCgpLmNsaWVudCgpKS5hZGRJdGVtRnJvbVVJUHJvY2Vzcyhp
dGVtU3RhdGUuaWRlbnRpZmllciwgV1RGTW92ZShoaXN0b3J5SXRlbSksIG1fcGFnZUlELCBXZWJC
YWNrRm9yd2FyZExpc3RQcm94eTo6T3ZlcndyaXRlRXhpc3RpbmdJdGVtOjpZZXMpOworICAgIGNv
cmVQYWdlKCktPm1haW5GcmFtZSgpLmxvYWRlcigpLmhpc3RvcnkoKS5zZXRDdXJyZW50SXRlbSho
aXN0b3J5SXRlbVJlZik7Cit9CisKIHZvaWQgV2ViUGFnZTo6cmVxdWVzdEZvbnRBdHRyaWJ1dGVz
QXRTZWxlY3Rpb25TdGFydChDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgYXV0byBhdHRy
aWJ1dGVzID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKS5l
ZGl0b3IoKS5mb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBiYTUyNzQzMzEzMS4uYjI1NTFlNzQ5
ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTEy
MDksNiArMTIwOSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXN0b3JlU2Vzc2lvbihjb25zdCBW
ZWN0b3I8QmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlPiYpOwogICAgIHZvaWQgZGlkUmVtb3ZlQmFj
a0ZvcndhcmRJdGVtKGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImKTsK
ICAgICB2b2lkIHVwZGF0ZUJhY2tGb3J3YXJkTGlzdEZvclJlYXR0YWNoKGNvbnN0IFZlY3RvcjxX
ZWJLaXQ6OkJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZT4mKTsKKyAgICB2b2lkIHNldEN1cnJlbnRI
aXN0b3J5SXRlbUZvclJlYXR0YWNoKFdlYktpdDo6QmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYp
OwogCiAgICAgdm9pZCByZXF1ZXN0Rm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KENhbGxi
YWNrSUQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbgppbmRleCA5N2FkNDQyZWMxOS4uNmM4NzEwNDliNDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
bgpAQCAtMTU3LDYgKzE1Nyw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIg
ewogICAgIAogICAgIFJlc3RvcmVTZXNzaW9uKFZlY3RvcjxXZWJLaXQ6OkJhY2tGb3J3YXJkTGlz
dEl0ZW1TdGF0ZT4gaXRlbVN0YXRlcykKICAgICBVcGRhdGVCYWNrRm9yd2FyZExpc3RGb3JSZWF0
dGFjaChWZWN0b3I8V2ViS2l0OjpCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGU+IGl0ZW1TdGF0ZXMp
CisgICAgU2V0Q3VycmVudEhpc3RvcnlJdGVtRm9yUmVhdHRhY2goc3RydWN0IFdlYktpdDo6QmFj
a0ZvcndhcmRMaXN0SXRlbVN0YXRlIGl0ZW1TdGF0ZSkKIAogICAgIERpZFJlbW92ZUJhY2tGb3J3
YXJkSXRlbShzdHJ1Y3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciBiYWNrRm9y
d2FyZEl0ZW1JRCkKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KaW5kZXggYmMyOWVm
OGJmNzEuLjBmZTNjM2Q3MDMwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KQEAg
LTY4LDYgKzY4LDExIEBAIGJvb2wgZGlkUmVjZWl2ZUFsZXJ0Owogc3RhdGljIGJvb2wgcmVjZWl2
ZWRNZXNzYWdlOwogc3RhdGljIGJvb2wgc2VydmVyUmVkaXJlY3RlZDsKIHN0YXRpYyBIYXNoU2V0
PHBpZF90PiBzZWVuUElEczsKK3N0YXRpYyBib29sIHdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3Q7
CitzdGF0aWMgYm9vbCBkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3Q7CitzdGF0aWMgUmV0YWluUHRy
PE5TVVJMPiBjbGllbnRSZWRpcmVjdFNvdXJjZVVSTDsKK3N0YXRpYyBSZXRhaW5QdHI8TlNVUkw+
IGNsaWVudFJlZGlyZWN0RGVzdGluYXRpb25VUkw7CisKIEBpbnRlcmZhY2UgUFNPTk1lc3NhZ2VI
YW5kbGVyIDogTlNPYmplY3QgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+CiBAZW5kCiAKQEAgLTEy
NCw2ICsxMjksMjAgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZFJl
Y2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTmF2aWcKICAgICBzZXJ2ZXJSZWRpcmVj
dGVkID0gdHJ1ZTsKIH0KIAorLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyB3
aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0VG9VUkw6KE5TVVJMICopVVJMIGRlbGF5OihOU1RpbWVJ
bnRlcnZhbClkZWxheQoreworICAgIGNsaWVudFJlZGlyZWN0RGVzdGluYXRpb25VUkwgPSBVUkw7
CisgICAgd2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdCA9IHRydWU7Cit9CisKKy0gKHZvaWQpX3dl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0RnJvbVVS
TDooTlNVUkwgKilzb3VyY2VVUkwgdG9VUkw6KE5TVVJMICopZGVzdGluYXRpb25VUkwKK3sKKyAg
ICBFWFBFQ1RfVFJVRSh3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KTsKKyAgICBFWFBFQ1RfV0tf
U1RSRVEoW2NsaWVudFJlZGlyZWN0RGVzdGluYXRpb25VUkwgYWJzb2x1dGVTdHJpbmddLCBbZGVz
dGluYXRpb25VUkwgYWJzb2x1dGVTdHJpbmddKTsKKyAgICBjbGllbnRSZWRpcmVjdFNvdXJjZVVS
TCA9IHNvdXJjZVVSTDsKKyAgICBkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3QgPSB0cnVlOworfQor
CiBAZW5kCiAKIHN0YXRpYyBSZXRhaW5QdHI8V0tXZWJWaWV3PiBjcmVhdGVkV2ViVmlldzsKQEAg
LTI0NSw2ICsyNjQsMjIgQEAgd2luZG93Lm9ucGFnZXNob3cgPSBmdW5jdGlvbihldnQpIHsKIDwv
aGVhZD4KIClQU09OUkVTT1VSQ0UiOwogCitzdGF0aWMgY29uc3QgY2hhciogbGlua1RvQ3Jvc3NT
aXRlQ2xpZW50U2lkZVJlZGlyZWN0Qnl0ZXMgPSBSIlBTT05SRVNPVVJDRSgKKzxib2R5PgorICA8
YSBpZD0idGVzdExpbmsiIGhyZWY9InBzb246Ly93d3cuZ29vZ2xlLmNvbS9jbGllbnRTaWRlUmVk
aXJlY3QuaHRtbCI+TGluayB0byBjcm9zcy1zaXRlIGNsaWVudC1zaWRlIHJlZGlyZWN0PC9hPgor
PC9ib2R5PgorKVBTT05SRVNPVVJDRSI7CisKK3N0YXRpYyBjb25zdCBjaGFyKiBjcm9zc1NpdGVD
bGllbnRTaWRlUmVkaXJlY3RCeXRlcyA9IFIiUFNPTlJFU09VUkNFKAorPGJvZHk+Cis8c2NyaXB0
Pgorb25sb2FkID0gKCkgPT4geworICBsb2NhdGlvbiA9ICJwc29uOi8vd3d3LmFwcGxlLmNvbS9t
YWluLmh0bWwiOworfTsKKzwvc2NyaXB0PgorPC9ib2R5PgorKVBTT05SRVNPVVJDRSI7CisKICNp
ZiBQTEFURk9STShNQUMpCiAKIHN0YXRpYyBjb25zdCBjaGFyKiB3aW5kb3dPcGVuQ3Jvc3NTaXRl
Tm9PcGVuZXJUZXN0Qnl0ZXMgPSBSIlBTT05SRVNPVVJDRSgKQEAgLTEwOTcsNiArMTEzMiwxNDMg
QEAgVEVTVChQcm9jZXNzU3dhcCwgU2VydmVyUmVkaXJlY3QyKQogICAgIEVYUEVDVF9FUSgydSwg
c2VlblBJRHMuc2l6ZSgpKTsKIH0KIAorZW51bSBjbGFzcyBTaG91bGRFbmFibGVQU09OIHsgTm8s
IFllcyB9Oworc3RhdGljIHZvaWQgcnVuQ2xpZW50U2lkZVJlZGlyZWN0VGVzdChTaG91bGRFbmFi
bGVQU09OIHNob3VsZEVuYWJsZVBTT04pCit7CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0
XSk7CisgICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fwc09uTmF2
aWdhdGlvbiA9IHNob3VsZEVuYWJsZVBTT04gPT0gU2hvdWxkRW5hYmxlUFNPTjo6WWVzID8gWUVT
IDogTk87CisgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFs
bG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQo
KV0pOworCisgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXdDb25maWd1cmF0aW9u
IHNldFByb2Nlc3NQb29sOnByb2Nlc3NQb29sLmdldCgpXTsKKyAgICBhdXRvIGhhbmRsZXIgPSBh
ZG9wdE5TKFtbUFNPTlNjaGVtZSBhbGxvY10gaW5pdF0pOworICAgIFtoYW5kbGVyIGFkZE1hcHBp
bmdGcm9tVVJMU3RyaW5nOkAicHNvbjovL3d3dy53ZWJraXQub3JnL21haW4uaHRtbCIgdG9EYXRh
OmxpbmtUb0Nyb3NzU2l0ZUNsaWVudFNpZGVSZWRpcmVjdEJ5dGVzXTsKKyAgICBbaGFuZGxlciBh
ZGRNYXBwaW5nRnJvbVVSTFN0cmluZzpAInBzb246Ly93d3cuZ29vZ2xlLmNvbS9jbGllbnRTaWRl
UmVkaXJlY3QuaHRtbCIgdG9EYXRhOmNyb3NzU2l0ZUNsaWVudFNpZGVSZWRpcmVjdEJ5dGVzXTsK
KyAgICBbd2ViVmlld0NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5kbGVyLmdl
dCgpIGZvclVSTFNjaGVtZTpAInBzb24iXTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYw
MCkgY29uZmlndXJhdGlvbjp3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIGF1dG8g
ZGVsZWdhdGUgPSBhZG9wdE5TKFtbUFNPTk5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0p
OworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisK
KyAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJM
OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAicHNvbjovL3d3dy53ZWJraXQub3JnL21haW4uaHRtbCJd
XTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgYXV0byB3ZWJr
aXRQSUQgPSBbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdOworCisgICAgLy8gTmF2aWdh
dGUgdG8gdGhlIHBhZ2UgZG9pbmcgYSBjbGllbnQtc2lkZSByZWRpcmVjdCB0byBhcHBsZS5jb20u
CisgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAidGVzdExpbmsuY2xpY2soKSIgY29t
cGxldGlvbkhhbmRsZXI6bmlsXTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9u
ZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgRVhQRUNUX1dLX1NUUkVRKEAicHNvbjovL3d3
dy5nb29nbGUuY29tL2NsaWVudFNpZGVSZWRpcmVjdC5odG1sIiwgW1t3ZWJWaWV3IFVSTF0gYWJz
b2x1dGVTdHJpbmddKTsKKyAgICBhdXRvIGdvb2dsZVBJRCA9IFt3ZWJWaWV3IF93ZWJQcm9jZXNz
SWRlbnRpZmllcl07CisgICAgaWYgKHNob3VsZEVuYWJsZVBTT04gPT0gU2hvdWxkRW5hYmxlUFNP
Tjo6WWVzKQorICAgICAgICBFWFBFQ1RfTkUod2Via2l0UElELCBnb29nbGVQSUQpOworICAgIGVs
c2UKKyAgICAgICAgRVhQRUNUX0VRKHdlYmtpdFBJRCwgZ29vZ2xlUElEKTsKKworICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgRVhQ
RUNUX1dLX1NUUkVRKEAicHNvbjovL3d3dy5hcHBsZS5jb20vbWFpbi5odG1sIiwgW1t3ZWJWaWV3
IFVSTF0gYWJzb2x1dGVTdHJpbmddKTsKKworICAgIGF1dG8gYXBwbGVQSUQgPSBbd2ViVmlldyBf
d2ViUHJvY2Vzc0lkZW50aWZpZXJdOworICAgIGlmIChzaG91bGRFbmFibGVQU09OID09IFNob3Vs
ZEVuYWJsZVBTT046OlllcykgeworICAgICAgICBFWFBFQ1RfTkUod2Via2l0UElELCBhcHBsZVBJ
RCk7CisgICAgICAgIEVYUEVDVF9ORSh3ZWJraXRQSUQsIGdvb2dsZVBJRCk7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgRVhQRUNUX0VRKHdlYmtpdFBJRCwgYXBwbGVQSUQpOworICAgICAgICBFWFBF
Q1RfRVEod2Via2l0UElELCBnb29nbGVQSUQpOworICAgIH0KKworICAgIEVYUEVDVF9UUlVFKHdp
bGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QpOworICAgIEVYUEVDVF9UUlVFKGRpZFBlcmZvcm1DbGll
bnRSZWRpcmVjdCk7CisgICAgRVhQRUNUX1dLX1NUUkVRKEAicHNvbjovL3d3dy5nb29nbGUuY29t
L2NsaWVudFNpZGVSZWRpcmVjdC5odG1sIiwgW2NsaWVudFJlZGlyZWN0U291cmNlVVJMIGFic29s
dXRlU3RyaW5nXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKEAicHNvbjovL3d3dy5hcHBsZS5jb20v
bWFpbi5odG1sIiwgW2NsaWVudFJlZGlyZWN0RGVzdGluYXRpb25VUkwgYWJzb2x1dGVTdHJpbmdd
KTsKKworICAgIHdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QgPSBmYWxzZTsKKyAgICBkaWRQZXJm
b3JtQ2xpZW50UmVkaXJlY3QgPSBmYWxzZTsKKyAgICBjbGllbnRSZWRpcmVjdFNvdXJjZVVSTCA9
IG51bGxwdHI7CisgICAgY2xpZW50UmVkaXJlY3REZXN0aW5hdGlvblVSTCA9IG51bGxwdHI7CisK
KyAgICAvLyBWYWxpZGF0ZSBCYWNrL0ZvcndhcmQgbGlzdC4KKyAgICBhdXRvKiBiYWNrRm9yd2Fy
ZExpc3QgPSBbd2ViVmlldyBiYWNrRm9yd2FyZExpc3RdOworICAgIGF1dG8qIGN1cnJlbnRJdGVt
ID0gYmFja0ZvcndhcmRMaXN0LmN1cnJlbnRJdGVtOworICAgIEVYUEVDVF9XS19TVFJFUShAInBz
b246Ly93d3cuYXBwbGUuY29tL21haW4uaHRtbCIsIFtjdXJyZW50SXRlbS5VUkwgYWJzb2x1dGVT
dHJpbmddKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoQCJwc29uOi8vd3d3LmFwcGxlLmNvbS9tYWlu
Lmh0bWwiLCBbY3VycmVudEl0ZW0uaW5pdGlhbFVSTCBhYnNvbHV0ZVN0cmluZ10pOworICAgIEVY
UEVDVF9UUlVFKCFiYWNrRm9yd2FyZExpc3QuZm9yd2FyZEl0ZW0pOworCisgICAgRVhQRUNUX0VR
KDFVLCBiYWNrRm9yd2FyZExpc3QuYmFja0xpc3QuY291bnQpOworCisgICAgYXV0byogYmFja0l0
ZW0gPSBiYWNrRm9yd2FyZExpc3QuYmFja0l0ZW07CisgICAgRVhQRUNUX1dLX1NUUkVRKEAicHNv
bjovL3d3dy53ZWJraXQub3JnL21haW4uaHRtbCIsIFtiYWNrSXRlbS5VUkwgYWJzb2x1dGVTdHJp
bmddKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoQCJwc29uOi8vd3d3LndlYmtpdC5vcmcvbWFpbi5o
dG1sIiwgW2JhY2tJdGVtLmluaXRpYWxVUkwgYWJzb2x1dGVTdHJpbmddKTsKKworICAgIC8vIE5h
dmlnYXRlIGJhY2suCisgICAgW3dlYlZpZXcgZ29CYWNrXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIEVYUEVDVF9XS19TVFJF
UShAInBzb246Ly93d3cud2Via2l0Lm9yZy9tYWluLmh0bWwiLCBbW3dlYlZpZXcgVVJMXSBhYnNv
bHV0ZVN0cmluZ10pOworICAgIEVYUEVDVF9GQUxTRSh3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0
KTsKKyAgICBFWFBFQ1RfRkFMU0UoZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KTsKKworICAgIGF1
dG8gcGlkQWZ0ZXJCYWNrTmF2aWdhdGlvbiA9IFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmll
cl07CisgICAgRVhQRUNUX0VRKHdlYmtpdFBJRCwgcGlkQWZ0ZXJCYWNrTmF2aWdhdGlvbik7CisK
KyAgICAvLyBWYWxpZGF0ZSBCYWNrL0ZvcndhcmQgbGlzdC4KKyAgICBjdXJyZW50SXRlbSA9IGJh
Y2tGb3J3YXJkTGlzdC5jdXJyZW50SXRlbTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoQCJwc29uOi8v
d3d3LndlYmtpdC5vcmcvbWFpbi5odG1sIiwgW2N1cnJlbnRJdGVtLlVSTCBhYnNvbHV0ZVN0cmlu
Z10pOworICAgIEVYUEVDVF9XS19TVFJFUShAInBzb246Ly93d3cud2Via2l0Lm9yZy9tYWluLmh0
bWwiLCBbY3VycmVudEl0ZW0uaW5pdGlhbFVSTCBhYnNvbHV0ZVN0cmluZ10pOworCisgICAgRVhQ
RUNUX1RSVUUoIWJhY2tGb3J3YXJkTGlzdC5iYWNrSXRlbSk7CisgICAgRVhQRUNUX0VRKDFVLCBi
YWNrRm9yd2FyZExpc3QuZm9yd2FyZExpc3QuY291bnQpOworCisgICAgYXV0byogZm9yd2FyZEl0
ZW0gPSBiYWNrRm9yd2FyZExpc3QuZm9yd2FyZEl0ZW07CisgICAgRVhQRUNUX1dLX1NUUkVRKEAi
cHNvbjovL3d3dy5hcHBsZS5jb20vbWFpbi5odG1sIiwgW2ZvcndhcmRJdGVtLlVSTCBhYnNvbHV0
ZVN0cmluZ10pOworICAgIEVYUEVDVF9XS19TVFJFUShAInBzb246Ly93d3cuYXBwbGUuY29tL21h
aW4uaHRtbCIsIFtmb3J3YXJkSXRlbS5pbml0aWFsVVJMIGFic29sdXRlU3RyaW5nXSk7CisKKyAg
ICAvLyBOYXZpZ2F0ZSBmb3J3YXJkLgorICAgIFt3ZWJWaWV3IGdvRm9yd2FyZF07CisgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0gZmFsc2U7CisKKyAgICBF
WFBFQ1RfV0tfU1RSRVEoQCJwc29uOi8vd3d3LmFwcGxlLmNvbS9tYWluLmh0bWwiLCBbW3dlYlZp
ZXcgVVJMXSBhYnNvbHV0ZVN0cmluZ10pOworICAgIEVYUEVDVF9GQUxTRSh3aWxsUGVyZm9ybUNs
aWVudFJlZGlyZWN0KTsKKyAgICBFWFBFQ1RfRkFMU0UoZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0
KTsKKworICAgIGF1dG8gcGlkQWZ0ZXJGb3J3YXJkTmF2aWdhdGlvbiA9IFt3ZWJWaWV3IF93ZWJQ
cm9jZXNzSWRlbnRpZmllcl07CisgICAgRVhQRUNUX0VRKGFwcGxlUElELCBwaWRBZnRlckZvcndh
cmROYXZpZ2F0aW9uKTsKKworICAgIC8vIFZhbGlkYXRlIEJhY2svRm9yd2FyZCBsaXN0LgorICAg
IGN1cnJlbnRJdGVtID0gYmFja0ZvcndhcmRMaXN0LmN1cnJlbnRJdGVtOworICAgIEVYUEVDVF9X
S19TVFJFUShAInBzb246Ly93d3cuYXBwbGUuY29tL21haW4uaHRtbCIsIFtjdXJyZW50SXRlbS5V
UkwgYWJzb2x1dGVTdHJpbmddKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoQCJwc29uOi8vd3d3LmFw
cGxlLmNvbS9tYWluLmh0bWwiLCBbY3VycmVudEl0ZW0uaW5pdGlhbFVSTCBhYnNvbHV0ZVN0cmlu
Z10pOworICAgIEVYUEVDVF9UUlVFKCFiYWNrRm9yd2FyZExpc3QuZm9yd2FyZEl0ZW0pOworCisg
ICAgRVhQRUNUX0VRKDFVLCBiYWNrRm9yd2FyZExpc3QuYmFja0xpc3QuY291bnQpOworCisgICAg
Ly8gRklYTUU6IHVuY29tbWVudCB0aGUgZm9sbG93aW5nIG9uY2UgPHJkYXI6Ly9wcm9ibGVtLzQ1
MDU4OTM4PiBoYXMgYmVlbiBmaXhlZC4gV2hlbiBlbmFibGluZyBQU09OCisgICAgLy8gdGhlIGJh
Y2tJdGVtJ3MgVVJMIGN1cnJlbnRseSBiZWNvbWVzIGFib3V0OmJsYW5rLgorICAgIC8vIGJhY2tJ
dGVtID0gYmFja0ZvcndhcmRMaXN0LmJhY2tJdGVtOworICAgIC8vIEVYUEVDVF9XS19TVFJFUShA
InBzb246Ly93d3cud2Via2l0Lm9yZy9tYWluLmh0bWwiLCBbYmFja0l0ZW0uVVJMIGFic29sdXRl
U3RyaW5nXSk7CisgICAgLy8gRVhQRUNUX1dLX1NUUkVRKEAicHNvbjovL3d3dy53ZWJraXQub3Jn
L21haW4uaHRtbCIsIFtiYWNrSXRlbS5pbml0aWFsVVJMIGFic29sdXRlU3RyaW5nXSk7Cit9CisK
K1RFU1QoUHJvY2Vzc1N3YXAsIENyb3NzU2l0ZUNsaWVudFNpZGVSZWRpcmVjdFdpdGhvdXRQU09O
KQoreworICAgIHJ1bkNsaWVudFNpZGVSZWRpcmVjdFRlc3QoU2hvdWxkRW5hYmxlUFNPTjo6Tm8p
OworfQorCitURVNUKFByb2Nlc3NTd2FwLCBDcm9zc1NpdGVDbGllbnRTaWRlUmVkaXJlY3RXaXRo
UFNPTikKK3sKKyAgICBydW5DbGllbnRTaWRlUmVkaXJlY3RUZXN0KFNob3VsZEVuYWJsZVBTT046
Olllcyk7Cit9CisKIHN0YXRpYyBjb25zdCBjaGFyKiBzZXNzaW9uU3RvcmFnZVRlc3RCeXRlcyA9
IFIiUFNPTlJFU09VUkNFKAogPGhlYWQ+CiA8c2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352927</attachid>
            <date>2018-10-22 16:57:46 -0700</date>
            <delta_ts>2018-10-23 10:54:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190806-20181022165745.patch</filename>
            <type>text/plain</type>
            <size>47510</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3MzI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDEwOGRlNzE3ZTI3YmU5
MTRmYzFjZGFjYjhlMTIxMDNlNThiYjA4Yy4uODNlMDJlMGUzMDBmYTVkOGFmYWEzM2U3YWQxNTY0
OGZmZWI3YTcyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDE4LTEwLTIyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW1BTT05dIEFkZCBzdXBwb3J0
IGZvciBjcm9zcy1zaXRlIGNsaWVudC1zaWRlIHJlZGlyZWN0cworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwODA2CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS80NTA0NzM0ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgc3VwcG9ydCBmb3IgY3Jvc3Mtc2l0ZSBjbGllbnQtc2lkZSByZWRpcmVjdHMg
c28gdGhhdCBpdCBzd2FwcyBwcm9jZXNzIGFuZCBzbyB0aGF0IHRoZSBiYWNrCisgICAgICAgIGZv
cndhcmQgbGlzdCBsb29rcyBhcyBleHBlY3RlZC4gVG8gc3VwcG9ydCB0aGlzLCB0aGUgZm9sbG93
aW5nIGNoYW5nZXMgaGFkIHRvIGJlIGRvbmU6CisgICAgICAgIC0gVGhlIE5hdmlnYXRpb25BY3Rp
b24gbm93IHByb3ZpZGVzIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gc28gdGhhdCB0aGUgV2ViUHJv
Y2VzcyBjYW4gY29tbXVuaWNhdGUKKyAgICAgICAgICB0aGluZ3MgYWJvdXQgdGhlIGNsaWVudC1z
aWRlIHJlZGlyZWN0IHRvIHRoZSBVSVByb2Nlc3M6IGxvY2tIaXN0b3J5IC8gbG9ja0JhY2tGb3J3
YXJkTGlzdCBhbmQKKyAgICAgICAgICBjbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkuCisg
ICAgICAgIC0gSWYgdGhlIFVJUHJvY2VzcyBkZWNpZGVzIHRvIHByb2Nlc3Mtc3dhcCBvbiBhIGNs
aWVudC1zaWRlIHJlZGlyZWN0LCB3ZSBwYXNzIHRoZSBjbGllbnQtc2lkZQorICAgICAgICAgIHJl
ZGlyZWN0IGluZm9ybWF0aW9uIHRvIHRoZSBuZXcgV2ViQ29udGVudCBwcm9jZXNzIHZpYSBMb2Fk
UmVxdWVzdCBzdHJ1Y3QuIFdlYkNvcmUgdGhlbiB0YWtlcworICAgICAgICAgIGNhcmUgb2Ygc2V0
dGluZyB0aGluZ3MgdXAgdXNpbmcgdGhpcyBpbmZvcm1hdGlvbiBzbyB0aGF0IGl0IHJlY29nbml6
ZXMgdGhhdCBpdCBpcyBjb250aW51aW5nCisgICAgICAgICAgYSBsb2FkIHRoYXQgaXMgYSBjbGll
bnQgc2lkZSByZWRpcmVjdC4KKyAgICAgICAgLSBXZSBhbHNvIG5lZWQgdG8gcGFzcyB0aGUgY3Vy
cmVudCBCYWNrRm9yd2FyZExpc3RJdGVtIC8gSGlzdG9yeUl0ZW0gdG8gdGhlIG5ldyBXZWJDb250
ZW50CisgICAgICAgICAgcHJvY2VzcyBzbyB0aGF0IHRoZSBuZXcgcHJvY2VzcyBjYW4gdHJ1bHkg
bG9jayBoaXN0b3J5IGFuZCBrZWVwIHVwZGF0aW5nIHRoZSAqY3VycmVudCoKKyAgICAgICAgICBI
aXN0b3J5SXRlbSwgaW5zdGVhZCBvZiBjcmVhdGluZyBhIG5ldyBIaXN0b3J5SXRlbS4KKyAgICAg
ICAgLSBBZnRlciBhIHByb2Nlc3Mgc3dhcCwgd2hlbiB3ZSByZS1jb25zdHJ1Y3QgdGhlIFdlYkZy
YW1lUHJveHkgZm9yIHRoZSBtYWluIGZyYW1lIGluIHRoZSBuZXcKKyAgICAgICAgICBwcm9jZXNz
LCB3ZSBub3cgc2V0IHRoZSBmcmFtZSdzIFVSTCBpbiB0aGUgVUlQcm9jZXNzIHRvIHRoZSBVUkwg
aXQgaGFkIGJlZm9yZSB3ZSBzd2FwcGVkLgorICAgICAgICAgIENsaWVudHMgc3VjaCBhcyBTYWZh
cmksIHJlbHkgb24gdGhlIG1haW4gZnJhbWUncyBVUkwgYmVpbmcgdGhlIGV4cGVjdGVkIHZhbHVl
ICh0aGUgbGFzdAorICAgICAgICAgIGNvbW1pdHRlZCBsb2FkIFVSTCkgdW50aWwgdGhlIG5leHQg
bG9hZCBpcyBjb21taXR0ZWQgd2hlbiByZWNlaXZpbmcgZGlkUGVyZm9ybVJlZGlyZWN0CisgICAg
ICAgICAgY2FsbHMuIEJlY2F1c2Ugd2UgYXJlIGRlc3Ryb3lpbmcgdGhlIG1haW4gZnJhbWUgb24g
cHJvY2Vzcy1zd2FwcGluZywgd2Ugd2VyZSBsb3NpbmcgdGhlCisgICAgICAgICAgbGFzdCBjb21t
aXR0ZWQgVVJMIGFuZCBTYWZhcmkgd291bGQgaGl0IGFzc2VydGlvbnMuCisKKyAgICAgICAgV2l0
aCB0aGlzIG1vZGVsLCB0aGUgd2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdCBJUEMgaXMgc3RpbGwg
c2VudCBmcm9tIHRoZSBwcmV2aW91cyBXZWJQcm9jZXNzCisgICAgICAgIGFuZCB0aGUgZGlkUGVy
Zm9ybUNsaWVudFJlZGlyZWN0IElQQyBpcyBub3cgc2VudCBieSB0aGUgbmV3IFdlYlByb2Nlc3Mu
IE5vIGNoYW5nZSBzaG91bGQgYmUKKyAgICAgICAgb2JzZXJ2YWJsZSBmcm9tIHRoZSBjbGllbnQn
cyBwb2ludCBvZiB2aWV3LgorCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZFJlcXVlc3QuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZFJlcXVlc3Q6OnNldExvY2tIaXN0b3J5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZFJlcXVlc3Q6OnNldGxvY2tCYWNrRm9yd2FyZExpc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkUmVxdWVzdDo6Y2xpZW50UmVkaXJlY3RTb3Vy
Y2VGb3JIaXN0b3J5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZFJlcXVlc3Q6
OnNldENsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeSk6CisgICAgICAgICogbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkVVJMKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkKToKKyAgICAgICAgKiBsb2FkZXIv
SGlzdG9yeUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUNvbnRyb2xs
ZXI6OnVwZGF0ZUZvclJlZGlyZWN0V2l0aExvY2tlZEJhY2tGb3J3YXJkTGlzdCk6CisgICAgICAg
ICogbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmg6CisgICAgICAgICogbG9hZGVyL05hdmlnYXRp
b25BY3Rpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb246OmxvY2tIaXN0
b3J5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb246OnNldExvY2tI
aXN0b3J5KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb246OmxvY2tCYWNrRm9y
d2FyZExpc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdGlvbkFjdGlvbjo6c2V0
TG9ja0JhY2tGb3J3YXJkTGlzdCk6CisKIDIwMTgtMTAtMjIgIFphbGFuIEJ1anRhcyAgPHphbGFu
QGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJRkNdIEFkZCBqdXN0aWZ5IHRleHQtYWxpZ24g
c3VwcG9ydC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggMGMyZjZkODY2Y2NiYWU1OGRhYjRkNTM0ODVjMzA0MTI1MGFl
NzNjYS4uYmRhZjk5NTVmMzNkNzIyNDA4YjZjNjNkODc1MDE3ZGU1YmJiM2NmYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw1MSBAQAorMjAxOC0xMC0yMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgorCisgICAgICAgIFtQU09OXSBBZGQgc3VwcG9ydCBmb3IgY3Jvc3Mtc2l0ZSBjbGllbnQt
c2lkZSByZWRpcmVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5MDgwNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDUwNDczNDQ+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvTG9hZFBh
cmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpMb2FkUGFyYW1ldGVyczo6ZW5jb2RlIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6TG9hZFBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAg
ICogU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmg6CisgICAgICAgICogU2hhcmVkL05hdmlnYXRpb25B
Y3Rpb25EYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGE6OmVu
Y29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhOjpkZWNv
ZGUpOgorICAgICAgICAqIFNoYXJlZC9OYXZpZ2F0aW9uQWN0aW9uRGF0YS5oOgorICAgICAgICAq
IFNoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
QmFja0ZvcndhcmRMaXN0SXRlbTo6c2V0U3VzcGVuZGVkUGFnZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmg6CisgICAgICAgIChBUEk6Ok5hdmlnYXRpb246OnNldExv
Y2tIaXN0b3J5KToKKyAgICAgICAgKEFQSTo6TmF2aWdhdGlvbjo6bG9ja0hpc3RvcnkgY29uc3Qp
OgorICAgICAgICAoQVBJOjpOYXZpZ2F0aW9uOjpzZXRMb2NrQmFja0ZvcndhcmRMaXN0KToKKyAg
ICAgICAgKEFQSTo6TmF2aWdhdGlvbjo6bG9ja0JhY2tGb3J3YXJkTGlzdCBjb25zdCk6CisgICAg
ICAgIChBUEk6Ok5hdmlnYXRpb246OnNldENsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeSk6
CisgICAgICAgIChBUEk6Ok5hdmlnYXRpb246OmNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9y
eSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50Lmg6
CisgICAgICAgIChBUEk6Ok5hdmlnYXRpb25DbGllbnQ6OndpbGxQZXJmb3JtQ2xpZW50UmVkaXJl
Y3QpOgorICAgICAgICAoQVBJOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRQZXJmb3JtQ2xpZW50UmVk
aXJlY3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uRGVsZWdh
dGVQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW06CisgICAgICAg
IChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6c2V0TmF2aWdhdGlvbkRlbGVnYXRlKToKKyAgICAg
ICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkaWRQZXJmb3Jt
Q2xpZW50UmVkaXJlY3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9GcmFtZUxvYWRTdGF0ZS5oOgor
ICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRTdGF0ZTo6c2V0VVJMKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojps
b2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
Ojpjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdCk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6bG9hZFJlcXVlc3QpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpzZXRDdXJyZW50SGlzdG9yeUl0ZW1Gb3JSZWF0dGFjaCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAxOC0xMC0xOSAgQnJlbnQgRnVsZ2hh
bSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBBbGxvdyBXZWJDb250ZW50IHByb2Nl
c3MgdG8gY2hlY2sgc29tZSBmaWxlIHN5c3RlbSBmZWF0dXJlcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRSZXF1ZXN0LmgKaW5kZXggMzk3MGFiOTk1ZWVkMGQyZjllOTk4ZDkyODM1ODc2
YTc1MzU1NjUzOS4uNGMwYzNkNTYyMmVmMjE4MWMzODYyNDY5NWQ0NWE3ZTk3OThkZjJmZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZFJlcXVlc3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkUmVxdWVzdC5oCkBAIC03Miw3ICs3MiwxNCBA
QCBwdWJsaWM6CiAgICAgYm9vbCBoYXNTdWJzdGl0dXRlRGF0YSgpIHsgcmV0dXJuIG1fc3Vic3Rp
dHV0ZURhdGEuaXNWYWxpZCgpOyB9CiAKICAgICBMb2NrSGlzdG9yeSBsb2NrSGlzdG9yeSgpIGNv
bnN0IHsgcmV0dXJuIG1fbG9ja0hpc3Rvcnk7IH0KKyAgICB2b2lkIHNldExvY2tIaXN0b3J5KExv
Y2tIaXN0b3J5IHZhbHVlKSB7IG1fbG9ja0hpc3RvcnkgPSB2YWx1ZTsgfQorCiAgICAgTG9ja0Jh
Y2tGb3J3YXJkTGlzdCBsb2NrQmFja0ZvcndhcmRMaXN0KCkgY29uc3QgeyByZXR1cm4gbV9sb2Nr
QmFja0ZvcndhcmRMaXN0OyB9CisgICAgdm9pZCBzZXRsb2NrQmFja0ZvcndhcmRMaXN0KExvY2tC
YWNrRm9yd2FyZExpc3QgdmFsdWUpIHsgbV9sb2NrQmFja0ZvcndhcmRMaXN0ID0gdmFsdWU7IH0K
KworICAgIGNvbnN0IFN0cmluZyYgY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5KCkgY29u
c3QgeyByZXR1cm4gbV9jbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3Rvcnk7IH0KKyAgICB2b2lk
IHNldENsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeShjb25zdCBTdHJpbmcmIGNsaWVudFJl
ZGlyZWN0U291cmNlRm9ySGlzdG9yeSkgeyBtX2NsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9y
eSA9IGNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeTsgfQorCiAgICAgU2hvdWxkU2VuZFJl
ZmVycmVyIHNob3VsZFNlbmRSZWZlcnJlcigpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkU2VuZFJl
ZmVycmVyOyB9CiAgICAgQWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlkVVJMIGFsbG93TmF2aWdhdGlv
blRvSW52YWxpZFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dOYXZpZ2F0aW9uVG9JbnZhbGlk
VVJMOyB9CiAgICAgTmV3RnJhbWVPcGVuZXJQb2xpY3kgbmV3RnJhbWVPcGVuZXJQb2xpY3koKSBj
b25zdCB7IHJldHVybiBtX25ld0ZyYW1lT3BlbmVyUG9saWN5OyB9CkBAIC05Nyw2ICsxMDQsNyBA
QCBwcml2YXRlOgogICAgIFJlc291cmNlUmVxdWVzdCBtX3Jlc291cmNlUmVxdWVzdDsKICAgICBT
dHJpbmcgbV9mcmFtZU5hbWU7CiAgICAgU3Vic3RpdHV0ZURhdGEgbV9zdWJzdGl0dXRlRGF0YTsK
KyAgICBTdHJpbmcgbV9jbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3Rvcnk7CiAKICAgICBib29s
IG1fc2hvdWxkQ2hlY2tOZXdXaW5kb3dQb2xpY3kgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9zaG91
bGRUcmVhdEFzQ29udGludWluZ0xvYWQgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAKaW5kZXggZmU0NGYwYTI1ZjVkYWM3YzM5MjUzOWVlODFlODhlNGEzNWMxOGU1
OS4uYjE4NjgyMmIwN2I3NTljOTJjODBhNGRjNTA3YjE4MTBkNjE3ZDI0NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0xMzYwLDYgKzEzNjAsOCBAQCB2b2lkIEZyYW1l
TG9hZGVyOjpsb2FkVVJMKEZyYW1lTG9hZFJlcXVlc3QmJiBmcmFtZUxvYWRSZXF1ZXN0LCBjb25z
dCBTdHJpbmcmIHJlZgogICAgIGlmIChtX2ZyYW1lLnBhZ2UoKSAmJiBtX2ZyYW1lLnBhZ2UoKS0+
b3BlbmVkVmlhV2luZG93T3BlbldpdGhPcGVuZXIoKSkKICAgICAgICAgYWN0aW9uLnNldE9wZW5l
ZFZpYVdpbmRvd09wZW5XaXRoT3BlbmVyKCk7CiAgICAgYWN0aW9uLnNldEhhc09wZW5lZEZyYW1l
cyghbV9vcGVuZWRGcmFtZXMuaXNFbXB0eSgpKTsKKyAgICBhY3Rpb24uc2V0TG9ja0hpc3Rvcnko
bG9ja0hpc3RvcnkpOworICAgIGFjdGlvbi5zZXRMb2NrQmFja0ZvcndhcmRMaXN0KGZyYW1lTG9h
ZFJlcXVlc3QubG9ja0JhY2tGb3J3YXJkTGlzdCgpKTsKIAogICAgIGlmICghdGFyZ2V0RnJhbWUg
JiYgIWVmZmVjdGl2ZUZyYW1lTmFtZS5pc0VtcHR5KCkpIHsKICAgICAgICAgYWN0aW9uID0gYWN0
aW9uLmNvcHlXaXRoU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeShzaG91bGRPcGVuRXh0ZXJu
YWxVUkxzUG9saWN5VG9BcHBseShtX2ZyYW1lLCBmcmFtZUxvYWRSZXF1ZXN0KSk7CkBAIC0xNDU4
LDYgKzE0NjAsMTMgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZChGcmFtZUxvYWRSZXF1ZXN0JiYg
cmVxdWVzdCkKICAgICBhZGRTYW1lU2l0ZUluZm9Ub1JlcXVlc3RJZk5lZWRlZChsb2FkZXItPnJl
cXVlc3QoKSk7CiAgICAgYXBwbHlTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5VG9OZXdEb2N1
bWVudExvYWRlcihtX2ZyYW1lLCBsb2FkZXIsIHJlcXVlc3QpOwogCisgICAgaWYgKHJlcXVlc3Qu
c2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkKCkgJiYgcmVxdWVzdC5sb2NrSGlzdG9yeSgpID09
IExvY2tIaXN0b3J5OjpZZXMpIHsKKyAgICAgICAgLy8gVGhlIGxvYWQgd2UncmUgY29udGludWlu
ZyBpcyBhIGNsaWVudC1zaWRlIHJlZGlyZWN0IHNvIHNldCB0aGluZ3MgdXAgYWNjb3JkaW5nbHku
CisgICAgICAgIGxvYWRlci0+c2V0Q2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5KHJlcXVl
c3QuY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5KCkpOworICAgICAgICBsb2FkZXItPnNl
dElzQ2xpZW50UmVkaXJlY3QodHJ1ZSk7CisgICAgICAgIG1fbG9hZFR5cGUgPSBGcmFtZUxvYWRU
eXBlOjpSZWRpcmVjdFdpdGhMb2NrZWRCYWNrRm9yd2FyZExpc3Q7CisgICAgfQorCiAgICAgU2V0
Rm9yU2NvcGU8Ym9vbD4gY3VycmVudExvYWRTaG91bGRCZVRyZWF0ZWRBc0NvbnRpbnVpbmdMb2Fk
R3VhcmQobV9jdXJyZW50TG9hZFNob3VsZEJlVHJlYXRlZEFzQ29udGludWluZ0xvYWQsIHJlcXVl
c3Quc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkKCkpOwogICAgIGxvYWQobG9hZGVyLmdldCgp
LCByZXF1ZXN0LnNob3VsZFNraXBTYWZlQnJvd3NpbmdDaGVjaygpKTsKIH0KQEAgLTE0OTUsNyAr
MTUwNCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWQoRG9jdW1lbnRMb2FkZXImIG5ld0RvY3Vt
ZW50TG9hZGVyLCBTaG91bGRTa2lwU2FmZUJyb3dzaW5nCiAgICAgICAgIHR5cGUgPSBGcmFtZUxv
YWRUeXBlOjpTYW1lOwogICAgIH0gZWxzZSBpZiAoc2hvdWxkVHJlYXRVUkxBc1NhbWVBc0N1cnJl
bnQobmV3RG9jdW1lbnRMb2FkZXIudW5yZWFjaGFibGVVUkwoKSkgJiYgaXNSZWxvYWQobV9sb2Fk
VHlwZSkpCiAgICAgICAgIHR5cGUgPSBtX2xvYWRUeXBlOwotICAgIGVsc2UgaWYgKG1fbG9hZFR5
cGUgPT0gRnJhbWVMb2FkVHlwZTo6UmVkaXJlY3RXaXRoTG9ja2VkQmFja0ZvcndhcmRMaXN0ICYm
ICFuZXdEb2N1bWVudExvYWRlci51bnJlYWNoYWJsZVVSTCgpLmlzRW1wdHkoKSAmJiBuZXdEb2N1
bWVudExvYWRlci5zdWJzdGl0dXRlRGF0YSgpLmlzVmFsaWQoKSkKKyAgICBlbHNlIGlmIChtX2xv
YWRUeXBlID09IEZyYW1lTG9hZFR5cGU6OlJlZGlyZWN0V2l0aExvY2tlZEJhY2tGb3J3YXJkTGlz
dCAmJiAoKCFuZXdEb2N1bWVudExvYWRlci51bnJlYWNoYWJsZVVSTCgpLmlzRW1wdHkoKSAmJiBu
ZXdEb2N1bWVudExvYWRlci5zdWJzdGl0dXRlRGF0YSgpLmlzVmFsaWQoKSkgfHwgbV9jdXJyZW50
TG9hZFNob3VsZEJlVHJlYXRlZEFzQ29udGludWluZ0xvYWQpKQogICAgICAgICB0eXBlID0gRnJh
bWVMb2FkVHlwZTo6UmVkaXJlY3RXaXRoTG9ja2VkQmFja0ZvcndhcmRMaXN0OwogICAgIGVsc2UK
ICAgICAgICAgdHlwZSA9IEZyYW1lTG9hZFR5cGU6OlN0YW5kYXJkOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKaW5kZXggMmVkYjdiM2VhNWM2OGIyNjQzMzZj
ODA3ZWVjZmM3ZTNhNDU2YmQ1Zi4uNzZjOTRiMjRmZWI4YmVhMmYxMGQ4ZDg2YjA0N2UwODBlMmVh
NTU0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCkBA
IC00NDAsNyArNDQwLDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yUmVkaXJl
Y3RXaXRoTG9ja2VkQmFja0ZvcndhcmRMaXN0KCkKICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBt
X2ZyYW1lLnBhZ2UoKSkKICAgICAgICAgICAgIGFkZFZpc2l0ZWRMaW5rKCpwYWdlLCBoaXN0b3J5
VVJMKTsKIAotICAgICAgICBpZiAoIW1fZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+
ZGlkQ3JlYXRlR2xvYmFsSGlzdG9yeUVudHJ5KCkgJiYgbV9mcmFtZS5sb2FkZXIoKS5kb2N1bWVu
dExvYWRlcigpLT51bnJlYWNoYWJsZVVSTCgpLmlzRW1wdHkoKSAmJiAhbV9mcmFtZS5kb2N1bWVu
dCgpLT51cmwoKS5pc0VtcHR5KCkpCisgICAgICAgIGlmICghbV9mcmFtZS5sb2FkZXIoKS5kb2N1
bWVudExvYWRlcigpLT5kaWRDcmVhdGVHbG9iYWxIaXN0b3J5RW50cnkoKSAmJiBtX2ZyYW1lLmxv
YWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnVucmVhY2hhYmxlVVJMKCkuaXNFbXB0eSgpKQogICAg
ICAgICAgICAgbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS51cGRhdGVHbG9iYWxIaXN0b3J5UmVk
aXJlY3RMaW5rcygpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9IaXN0b3J5Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250
cm9sbGVyLmgKaW5kZXggNWQyNWZlYTFiZDQ2OTVjNDkyYzE4YjAyN2Q5MDY3NTlkOTJkZDFjZC4u
ZDk1MjUyY2Y3MzNmZDEyNTYzYTZkZTBiZjI3YzJjNWIyNGU5YjkyYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmgKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgdXBkYXRlRm9yRnJhbWVMb2FkQ29tcGxldGVkKCk7CiAKICAgICBIaXN0b3J5SXRl
bSogY3VycmVudEl0ZW0oKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRJdGVtLmdldCgpOyB9Ci0g
ICAgdm9pZCBzZXRDdXJyZW50SXRlbShIaXN0b3J5SXRlbSYpOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0Q3VycmVudEl0ZW0oSGlzdG9yeUl0ZW0mKTsKICAgICB2b2lkIHNldEN1cnJlbnRJ
dGVtVGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYpOwogICAgIGJvb2wgY3VycmVudEl0
ZW1TaG91bGRCZVJlcGxhY2VkKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXBs
YWNlQ3VycmVudEl0ZW0oSGlzdG9yeUl0ZW0qKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdh
dGlvbkFjdGlvbi5oCmluZGV4IDlkNzIxZDZlNzEzNGE4NDM5ZDIyOTRiYzI5NTA3NDA5MzYwZGFh
ODMuLjM5YzU2NGUwZDc3MmMxZjgyYjExZTM5MDZiMDY2ODYyYmRjZWI4MzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uaApAQCAtMTMwLDYgKzEzMCwxMiBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRUYXJnZXRCYWNrRm9yd2FyZEl0ZW0oSGlzdG9yeUl0ZW0mKTsKICAg
ICBjb25zdCBzdGQ6Om9wdGlvbmFsPEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI+JiB0YXJnZXRC
YWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXRCYWNrRm9y
d2FyZEl0ZW1JZGVudGlmaWVyOyB9CiAKKyAgICBMb2NrSGlzdG9yeSBsb2NrSGlzdG9yeSgpIGNv
bnN0IHsgcmV0dXJuIG1fbG9ja0hpc3Rvcnk7IH0KKyAgICB2b2lkIHNldExvY2tIaXN0b3J5KExv
Y2tIaXN0b3J5IGxvY2tIaXN0b3J5KSB7IG1fbG9ja0hpc3RvcnkgPSBsb2NrSGlzdG9yeTsgfQor
CisgICAgTG9ja0JhY2tGb3J3YXJkTGlzdCBsb2NrQmFja0ZvcndhcmRMaXN0KCkgY29uc3QgeyBy
ZXR1cm4gbV9sb2NrQmFja0ZvcndhcmRMaXN0OyB9CisgICAgdm9pZCBzZXRMb2NrQmFja0Zvcndh
cmRMaXN0KExvY2tCYWNrRm9yd2FyZExpc3QgbG9ja0JhY2tGb3J3YXJkTGlzdCkgeyBtX2xvY2tC
YWNrRm9yd2FyZExpc3QgPSBsb2NrQmFja0ZvcndhcmRMaXN0OyB9CisKIHByaXZhdGU6CiAgICAg
Ly8gRG8gbm90IGFkZCBhIHN0cm9uZyByZWZlcmVuY2UgdG8gdGhlIG9yaWdpbmF0aW5nIGRvY3Vt
ZW50IG9yIGEgc3Vib2JqZWN0IHRoYXQgaG9sZHMgdGhlCiAgICAgLy8gb3JpZ2luYXRpbmcgZG9j
dW1lbnQuIFNlZSBjb21tZW50IGFib3ZlIHRoZSBjbGFzcyBmb3IgbW9yZSBkZXRhaWxzLgpAQCAt
MTQ3LDYgKzE1Myw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX29wZW5lZFZpYVdpbmRvd09wZW5X
aXRoT3BlbmVyIHsgZmFsc2UgfTsKICAgICBzdGQ6Om9wdGlvbmFsPFBhZ2VJREFuZEZyYW1lSURQ
YWlyPiBtX29wZW5lcjsKICAgICBzdGQ6Om9wdGlvbmFsPEJhY2tGb3J3YXJkSXRlbUlkZW50aWZp
ZXI+IG1fdGFyZ2V0QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcjsKKyAgICBMb2NrSGlzdG9yeSBt
X2xvY2tIaXN0b3J5IHsgTG9ja0hpc3Rvcnk6Ok5vIH07CisgICAgTG9ja0JhY2tGb3J3YXJkTGlz
dCBtX2xvY2tCYWNrRm9yd2FyZExpc3QgeyBMb2NrQmFja0ZvcndhcmRMaXN0OjpObyB9OwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvTG9hZFBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRl
cnMuY3BwCmluZGV4IDBiNTFmZjAzNmM2NmE1MDExYzA4MmFlYTlmNzZmYTMzYjY3NTFhZWQuLmJl
YjYyNDQ2NzIyYmZiMTRmMGJjOWM4YmUxNzYxOGYwOGZjNjZmYTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Mb2FkUGFyYW1ldGVycy5jcHAKQEAgLTUwLDYgKzUwLDkgQEAgdm9pZCBMb2FkUGFyYW1l
dGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8
IHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDsKICAgICBlbmNvZGVyIDw8IHVzZXJEYXRhOwog
ICAgIGVuY29kZXIgPDwgZm9yU2FmZUJyb3dzaW5nOworICAgIGVuY29kZXIuZW5jb2RlRW51bShs
b2NrSGlzdG9yeSk7CisgICAgZW5jb2Rlci5lbmNvZGVFbnVtKGxvY2tCYWNrRm9yd2FyZExpc3Qp
OworICAgIGVuY29kZXIgPDwgY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5OwogCiAgICAg
cGxhdGZvcm1FbmNvZGUoZW5jb2Rlcik7CiB9CkBAIC0xMDgsNyArMTExLDE5IEBAIGJvb2wgTG9h
ZFBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIExvYWRQYXJhbWV0ZXJz
JiBkYXRhKQogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShkYXRhLmZvclNhZmVCcm93c2luZykp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKKworICAgIGlmICghZGVjb2Rlci5kZWNvZGVF
bnVtKGRhdGEubG9ja0hpc3RvcnkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAo
IWRlY29kZXIuZGVjb2RlRW51bShkYXRhLmxvY2tCYWNrRm9yd2FyZExpc3QpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gY2xpZW50UmVkaXJlY3RT
b3VyY2VGb3JIaXN0b3J5OworICAgIGRlY29kZXIgPj4gY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JI
aXN0b3J5OworICAgIGlmICghY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5KQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgZGF0YS5jbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3Rvcnkg
PSBXVEZNb3ZlKCpjbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkpOworCiAgICAgaWYgKCFw
bGF0Zm9ybURlY29kZShkZWNvZGVyLCBkYXRhKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5oIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvTG9hZFBhcmFtZXRlcnMuaAppbmRleCA1NzRjN2NkMjg0ZTJhOTk1NTcx
MDJiNWM1YzM2NGEyN2Y4YjVhMjhiLi43YTQ5MDhkMTAwMjdiMTQyNDgxYmNjMjFmMjRjY2JkY2Fk
NzY4YjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Mb2FkUGFyYW1ldGVycy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0xvYWRQYXJhbWV0ZXJzLmgKQEAgLTI4LDYgKzI4
LDcgQEAKICNpbmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVu
c2lvbi5oIgogI2luY2x1ZGUgIlVzZXJEYXRhLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxv
YWRlclR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KIAogT0JK
Q19DTEFTUyBOU0RpY3Rpb25hcnk7CkBAIC02Myw2ICs2NCw5IEBAIHN0cnVjdCBMb2FkUGFyYW1l
dGVycyB7CiAgICAgYm9vbCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgeyBmYWxzZSB9Owog
ICAgIFVzZXJEYXRhIHVzZXJEYXRhOwogICAgIGJvb2wgZm9yU2FmZUJyb3dzaW5nIHsgZmFsc2Ug
fTsKKyAgICBXZWJDb3JlOjpMb2NrSGlzdG9yeSBsb2NrSGlzdG9yeSB7IFdlYkNvcmU6OkxvY2tI
aXN0b3J5OjpObyB9OworICAgIFdlYkNvcmU6OkxvY2tCYWNrRm9yd2FyZExpc3QgbG9ja0JhY2tG
b3J3YXJkTGlzdCB7IFdlYkNvcmU6OkxvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vIH07CisgICAgU3Ry
aW5nIGNsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeTsKIAogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IGRhdGFEZXRlY3Rpb25Db250ZXh0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvTmF2aWdhdGlvbkFjdGlvbkRhdGEuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvTmF2aWdhdGlvbkFjdGlvbkRhdGEuY3BwCmluZGV4IDM5NDM2
MWRiMDRiNjQxZTU1Yzc3Mzg4ZmE1M2RmMTQ2YjkyOGMwZDEuLjM4NzIyZTk3ZTJlYTE0YzMyNDUy
NjE0M2ExNmRhZGEyNzJjYzA0MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05h
dmlnYXRpb25BY3Rpb25EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9OYXZpZ2F0
aW9uQWN0aW9uRGF0YS5jcHAKQEAgLTUxLDYgKzUxLDkgQEAgdm9pZCBOYXZpZ2F0aW9uQWN0aW9u
RGF0YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8
IG9wZW5lcjsKICAgICBlbmNvZGVyIDw8IHJlcXVlc3Rlck9yaWdpbjsKICAgICBlbmNvZGVyIDw8
IHRhcmdldEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXI7CisgICAgZW5jb2Rlci5lbmNvZGVFbnVt
KGxvY2tIaXN0b3J5KTsKKyAgICBlbmNvZGVyLmVuY29kZUVudW0obG9ja0JhY2tGb3J3YXJkTGlz
dCk7CisgICAgZW5jb2RlciA8PCBjbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3Rvcnk7CiB9CiAK
IHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGlvbkFjdGlvbkRhdGE+IE5hdmlnYXRpb25BY3Rpb25EYXRh
OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQpAQCAtMTI4LDExICsxMzEsMjQgQEAgc3Rk
OjpvcHRpb25hbDxOYXZpZ2F0aW9uQWN0aW9uRGF0YT4gTmF2aWdhdGlvbkFjdGlvbkRhdGE6OmRl
Y29kZShJUEM6OkRlY29kZXImIGQKICAgICBkZWNvZGVyID4+IHRhcmdldEJhY2tGb3J3YXJkSXRl
bUlkZW50aWZpZXI7CiAgICAgaWYgKCF0YXJnZXRCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgICAgICAKKworICAgIFdlYkNvcmU6Okxv
Y2tIaXN0b3J5IGxvY2tIaXN0b3J5OworICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKGxvY2tI
aXN0b3J5KSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIFdlYkNvcmU6Okxv
Y2tCYWNrRm9yd2FyZExpc3QgbG9ja0JhY2tGb3J3YXJkTGlzdDsKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlRW51bShsb2NrQmFja0ZvcndhcmRMaXN0KSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBjbGllbnRSZWRpcmVjdFNvdXJjZUZv
ckhpc3Rvcnk7CisgICAgZGVjb2RlciA+PiBjbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3Rvcnk7
CisgICAgaWYgKCFjbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkpCisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisKICAgICByZXR1cm4ge3sgV1RGTW92ZShuYXZpZ2F0aW9uVHlwZSks
IFdURk1vdmUobW9kaWZpZXJzKSwgV1RGTW92ZShtb3VzZUJ1dHRvbiksIFdURk1vdmUoc3ludGhl
dGljQ2xpY2tUeXBlKSwgV1RGTW92ZSgqdXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXIpLAogICAg
ICAgICBXVEZNb3ZlKCpjYW5IYW5kbGVSZXF1ZXN0KSwgV1RGTW92ZShzaG91bGRPcGVuRXh0ZXJu
YWxVUkxzUG9saWN5KSwgV1RGTW92ZSgqZG93bmxvYWRBdHRyaWJ1dGUpLCBXVEZNb3ZlKGNsaWNr
TG9jYXRpb25JblJvb3RWaWV3Q29vcmRpbmF0ZXMpLAogICAgICAgICBXVEZNb3ZlKCppc1JlZGly
ZWN0KSwgKnRyZWF0QXNTYW1lT3JpZ2luTmF2aWdhdGlvbiwgKmhhc09wZW5lZEZyYW1lcywgKm9w
ZW5lZFZpYVdpbmRvd09wZW5XaXRoT3BlbmVyLCBXVEZNb3ZlKCpvcGVuZXIpLCBXVEZNb3ZlKCpy
ZXF1ZXN0ZXJPcmlnaW4pLAotICAgICAgICBXVEZNb3ZlKCp0YXJnZXRCYWNrRm9yd2FyZEl0ZW1J
ZGVudGlmaWVyKSB9fTsKKyAgICAgICAgV1RGTW92ZSgqdGFyZ2V0QmFja0ZvcndhcmRJdGVtSWRl
bnRpZmllciksIGxvY2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0LCBXVEZNb3ZlKCpjbGll
bnRSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkpIH19OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL05hdmlnYXRpb25BY3Rpb25EYXRh
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9OYXZpZ2F0aW9uQWN0aW9uRGF0YS5oCmluZGV4IDA4
MzlmMWY0YjVkNDRkNzJmMDVmNjY3YzlhYjNkNzJlMTAxOWNhZjYuLjE2Zjk3NjdhZmVhZDcwYjUx
ODRkNDFkYmNjMmM1YzQ1NGE3NDg0OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L05hdmlnYXRpb25BY3Rpb25EYXRhLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvTmF2aWdh
dGlvbkFjdGlvbkRhdGEuaApAQCAtNTgsNiArNTgsOSBAQCBzdHJ1Y3QgTmF2aWdhdGlvbkFjdGlv
bkRhdGEgewogICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPHVpbnQ2NF90LCB1aW50NjRfdD4+
IG9wZW5lcjsKICAgICBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgcmVxdWVzdGVyT3JpZ2lu
OwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcj4g
dGFyZ2V0QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcjsKKyAgICBXZWJDb3JlOjpMb2NrSGlzdG9y
eSBsb2NrSGlzdG9yeTsKKyAgICBXZWJDb3JlOjpMb2NrQmFja0ZvcndhcmRMaXN0IGxvY2tCYWNr
Rm9yd2FyZExpc3Q7CisgICAgV1RGOjpTdHJpbmcgY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0
b3J5OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0Zv
cndhcmRMaXN0SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExp
c3RJdGVtLmNwcAppbmRleCBkZjk3MzUwZTAzMGM5ODIzNWJhM2JhZTRhZDVjYjA1NjVjOTRlNjc1
Li42MTJkYjIzMjY5NzI5M2JjMGFlYTU0ZjYwMGRkNzE3NjY3MjAyNzFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcApAQCAtMTE1LDcgKzEx
NSw2IEBAIGJvb2wgV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6aXRlbUlzSW5TYW1lRG9jdW1lbnQo
Y29uc3QgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYKIAogdm9pZCBXZWJCYWNrRm9yd2FyZExpc3RJ
dGVtOjpzZXRTdXNwZW5kZWRQYWdlKFN1c3BlbmRlZFBhZ2VQcm94eSYgcGFnZSkKIHsKLSAgICBB
U1NFUlQoIW1fc3VzcGVuZGVkUGFnZSk7CiAgICAgbV9zdXNwZW5kZWRQYWdlID0gbWFrZVdlYWtQ
dHIocGFnZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElOYXZpZ2F0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlv
bi5oCmluZGV4IGM2OGUzYmZlNzExYzI3NmY3MDczMWU4OTk5OTA2MGMyMzZlZTIyZjcuLmJhMWUz
OTM2YmRhNmY1ZmNlNDU4NTM1YTU4NWY4NTQ4MTU5ZTFkM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb24uaApAQCAtMTAxLDYgKzEwMSwxNSBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRSZXF1ZXN0ZXJPcmlnaW4oY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhJiBvcmlnaW4pIHsgbV9yZXF1ZXN0ZXJPcmlnaW4gPSBvcmlnaW47IH0KICAgICBjb25z
dCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIHJlcXVlc3Rlck9yaWdpbigpIGNvbnN0IHsg
cmV0dXJuIG1fcmVxdWVzdGVyT3JpZ2luOyB9CiAKKyAgICB2b2lkIHNldExvY2tIaXN0b3J5KFdl
YkNvcmU6OkxvY2tIaXN0b3J5IGxvY2tIaXN0b3J5KSB7IG1fbG9ja0hpc3RvcnkgPSBsb2NrSGlz
dG9yeTsgfQorICAgIFdlYkNvcmU6OkxvY2tIaXN0b3J5IGxvY2tIaXN0b3J5KCkgY29uc3QgeyBy
ZXR1cm4gbV9sb2NrSGlzdG9yeTsgfQorCisgICAgdm9pZCBzZXRMb2NrQmFja0ZvcndhcmRMaXN0
KFdlYkNvcmU6OkxvY2tCYWNrRm9yd2FyZExpc3QgbG9ja0JhY2tGb3J3YXJkTGlzdCkgeyBtX2xv
Y2tCYWNrRm9yd2FyZExpc3QgPSBsb2NrQmFja0ZvcndhcmRMaXN0OyB9CisgICAgV2ViQ29yZTo6
TG9ja0JhY2tGb3J3YXJkTGlzdCBsb2NrQmFja0ZvcndhcmRMaXN0KCkgY29uc3QgeyByZXR1cm4g
bV9sb2NrQmFja0ZvcndhcmRMaXN0OyB9CisKKyAgICB2b2lkIHNldENsaWVudFJlZGlyZWN0U291
cmNlRm9ySGlzdG9yeShjb25zdCBXVEY6OlN0cmluZyYgY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JI
aXN0b3J5KSB7IG1fY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5ID0gY2xpZW50UmVkaXJl
Y3RTb3VyY2VGb3JIaXN0b3J5OyB9CisgICAgV1RGOjpTdHJpbmcgY2xpZW50UmVkaXJlY3RTb3Vy
Y2VGb3JIaXN0b3J5KCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnRSZWRpcmVjdFNvdXJjZUZvckhp
c3Rvcnk7IH0KKwogI2lmICFMT0dfRElTQUJMRUQKICAgICBjb25zdCBjaGFyKiBsb2dnaW5nU3Ry
aW5nKCkgY29uc3Q7CiAjZW5kaWYKQEAgLTEyNyw2ICsxMzYsOSBAQCBwcml2YXRlOgogICAgIGJv
b2wgbV9vcGVuZWRWaWFXaW5kb3dPcGVuV2l0aE9wZW5lciB7IGZhbHNlIH07CiAgICAgc3RkOjpv
cHRpb25hbDxzdGQ6OnBhaXI8dWludDY0X3QsIHVpbnQ2NF90Pj4gbV9vcGVuZXI7CiAgICAgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIG1fcmVxdWVzdGVyT3JpZ2luOworICAgIFdlYkNvcmU6
OkxvY2tIaXN0b3J5IG1fbG9ja0hpc3Rvcnk7CisgICAgV2ViQ29yZTo6TG9ja0JhY2tGb3J3YXJk
TGlzdCBtX2xvY2tCYWNrRm9yd2FyZExpc3Q7CisgICAgV1RGOjpTdHJpbmcgbV9jbGllbnRSZWRp
cmVjdFNvdXJjZUZvckhpc3Rvcnk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCmluZGV4IDM0
ZjA4OTNkODgzYzNkMjYwZjIyMDlhOTBhNWJkNTg3NjY3NDE4ZTIuLjg5ZDNlODI3MjViNmMxY2Ji
MDAxMmJiOTAwYjEwMGVhZjY4NWI2MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaApAQCAtNzMsNyArNzMsOCBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbE5hdmlnYXRpb24oV2ViS2l0OjpX
ZWJQYWdlUHJveHkmLCBOYXZpZ2F0aW9uKiwgT2JqZWN0KikgeyB9CiAgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTmF2aWdhdGlvbihXZWJLaXQ6
OldlYlBhZ2VQcm94eSYsIE5hdmlnYXRpb24qLCBPYmplY3QqKSB7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgd2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIGNvbnN0
IFdURjo6U3RyaW5nJiwgZG91YmxlKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgd2lsbFBlcmZvcm1D
bGllbnRSZWRpcmVjdChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJiBk
ZXN0aW5hdGlvblVSTCwgZG91YmxlKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUGVyZm9ybUNs
aWVudFJlZGlyZWN0KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmIHNv
dXJjZVVSTCwgY29uc3QgV1RGOjpTdHJpbmcmIGRlc3RpbmF0aW9uVVJMKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3QoV2ViS2l0OjpXZWJQYWdlUHJveHkmKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbldpdGhFcnJv
cihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIE5hdmlnYXRp
b24qLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgT2JqZWN0KikgeyB9CiAgICAgdmly
dHVhbCB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1lV2l0aEVycm9yKFdlYktp
dDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgY29uc3QgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhJiwgTmF2aWdhdGlvbiosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImLCBPYmplY3QqKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaAppbmRleCA0
OGY4ZjBlYTU4YmE2YWViMjVmMzRkMjczZmYzNWIxYjZmN2ZlMjAyLi5iYTU2ODZiNTJkN2FmZmQ0
MWExYTIwZDMzNjViNzYwMzcwOTA3MjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5o
CkBAIC02OCw2ICs2OCw3IEBAIHN0YXRpYyBjb25zdCBXS05hdmlnYXRpb25SZXNwb25zZVBvbGlj
eSBfV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lCZWNvbWVEb3dubG9hCiAtICh2b2lkKV93ZWJW
aWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IG5hdmlnYXRpb246KFdLTmF2aWdhdGlvbiAqKW5hdmln
YXRpb24gZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEluU3ViZnJhbWU6KFdLRnJhbWVJbmZvICopc3Vi
ZnJhbWUgd2l0aEVycm9yOihOU0Vycm9yICopZXJyb3I7CiAKIC0gKHZvaWQpX3dlYlZpZXc6KFdL
V2ViVmlldyAqKXdlYlZpZXcgd2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdFRvVVJMOihOU1VSTCAq
KVVSTCBkZWxheTooTlNUaW1lSW50ZXJ2YWwpZGVsYXk7CistICh2b2lkKV93ZWJWaWV3OihXS1dl
YlZpZXcgKil3ZWJWaWV3IGRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdEZyb21VUkw6KE5TVVJMICop
c291cmNlVVJMIHRvVVJMOihOU1VSTCAqKWRlc3RpbmF0aW9uVVJMOwogLSAodm9pZClfd2ViVmll
d0RpZENhbmNlbENsaWVudFJlZGlyZWN0OihXS1dlYlZpZXcgKil3ZWJWaWV3OwogCiAtICh2b2lk
KV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IG5hdmlnYXRpb25EaWRGaW5pc2hEb2N1bWVu
dExvYWQ6KFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oCmluZGV4IDBjOWFmOTUzZDk5Y2E0NDA3MDVh
YjQ1YTIwZmIxNDVmYzEzNDM4YjcuLmE2YTk3NDcyZDU1MzBjZTlmMTdhNjZjNzU4NWQwZGFlODVi
NDM0YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRp
b25TdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25T
dGF0ZS5oCkBAIC05OCw2ICs5OCw3IEBAIHByaXZhdGU6CiAgICAgICAgIHZvaWQgZGlkU3RhcnRQ
cm92aXNpb25hbE5hdmlnYXRpb24oV2ViUGFnZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiwgQVBJ
OjpPYmplY3QqKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJl
Y3RGb3JQcm92aXNpb25hbE5hdmlnYXRpb24oV2ViUGFnZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9u
KiwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCB3aWxsUGVyZm9ybUNsaWVu
dFJlZGlyZWN0KFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJiwgZG91YmxlKSBvdmVy
cmlkZTsKKyAgICAgICAgdm9pZCBkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3QoV2ViUGFnZVByb3h5
JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYpIG92ZXJyaWRlOwogICAg
ICAgICB2b2lkIGRpZENhbmNlbENsaWVudFJlZGlyZWN0KFdlYlBhZ2VQcm94eSYpIG92ZXJyaWRl
OwogICAgICAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25XaXRoRXJyb3IoV2Vi
UGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSYsIEFQSTo6TmF2aWdhdGlvbiosIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlRXJyb3ImLCBBUEk6Ok9iamVjdCopIG92ZXJyaWRlOwogICAgICAgICB2b2lk
IGRpZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1lV2l0aEVycm9yKFdlYlBhZ2VQcm94eSYs
IFdlYkZyYW1lUHJveHkmLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBBUEk6
Ok5hdmlnYXRpb24qLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgQVBJOjpPYmplY3Qq
KSBvdmVycmlkZTsKQEAgLTE5NSw2ICsxOTYsNyBAQCBwcml2YXRlOgogICAgICAgICBib29sIHdl
YlZpZXdEaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uV2l0aEVycm9yIDogMTsKICAgICAgICAg
Ym9vbCB3ZWJWaWV3TmF2aWdhdGlvbkRpZEZhaWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1lV2l0
aEVycm9yIDogMTsKICAgICAgICAgYm9vbCB3ZWJWaWV3V2lsbFBlcmZvcm1DbGllbnRSZWRpcmVj
dCA6IDE7CisgICAgICAgIGJvb2wgd2ViVmlld0RpZFBlcmZvcm1DbGllbnRSZWRpcmVjdCA6IDE7
CiAgICAgICAgIGJvb2wgd2ViVmlld0RpZENhbmNlbENsaWVudFJlZGlyZWN0IDogMTsKICAgICAg
ICAgYm9vbCB3ZWJWaWV3RGlkQ29tbWl0TmF2aWdhdGlvbiA6IDE7CiAgICAgICAgIGJvb2wgd2Vi
Vmlld05hdmlnYXRpb25EaWRGaW5pc2hEb2N1bWVudExvYWQgOiAxOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCmluZGV4IGJmMGJkMDcwYzM5
ZGM5MzMyZjNmMTA4OWVlZjZhNmRmYmQ5ZmMzYTguLjA2YzRlNTE4ZjVmY2IxNjBhNGE3MDk5ZTA3
YzFiOTI4NWY3MTUwYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L05hdmlnYXRpb25TdGF0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9O
YXZpZ2F0aW9uU3RhdGUubW0KQEAgLTE1Nyw2ICsxNTcsNyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0
ZTo6c2V0TmF2aWdhdGlvbkRlbGVnYXRlKGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZT4gZGVsZWdh
dGUpCiAKICAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld05hdmlnYXRpb25E
aWRGYWlsUHJvdmlzaW9uYWxMb2FkSW5TdWJmcmFtZVdpdGhFcnJvciA9IFtkZWxlZ2F0ZSByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3Om5hdmlnYXRpb246ZGlkRmFpbFByb3Zp
c2lvbmFsTG9hZEluU3ViZnJhbWU6d2l0aEVycm9yOildOwogICAgIG1fbmF2aWdhdGlvbkRlbGVn
YXRlTWV0aG9kcy53ZWJWaWV3V2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdCA9IFtkZWxlZ2F0ZSBy
ZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OndpbGxQZXJmb3JtQ2xpZW50UmVk
aXJlY3RUb1VSTDpkZWxheTopXTsKKyAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2Vi
Vmlld0RpZFBlcmZvcm1DbGllbnRSZWRpcmVjdCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdEZyb21VUkw6dG9V
Ukw6KV07CiAgICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWRDYW5jZWxD
bGllbnRSZWRpcmVjdCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93
ZWJWaWV3RGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3Q6KV07CiAgICAgbV9uYXZpZ2F0aW9uRGVsZWdh
dGVNZXRob2RzLndlYlZpZXdOYXZpZ2F0aW9uRGlkRmluaXNoRG9jdW1lbnRMb2FkID0gW2RlbGVn
YXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6bmF2aWdhdGlvbkRpZEZp
bmlzaERvY3VtZW50TG9hZDopXTsKICAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2Vi
Vmlld05hdmlnYXRpb25EaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uID0gW2RlbGVnYXRlIHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6bmF2aWdhdGlvbjpkaWRTYW1lRG9jdW1l
bnROYXZpZ2F0aW9uOildOwpAQCAtNzA0LDYgKzcwNSwyMSBAQCB2b2lkIE5hdmlnYXRpb25TdGF0
ZTo6TmF2aWdhdGlvbkNsaWVudDo6d2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdChXZWJQYWdlUHJv
eHkmCiAgICAgW3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+Pihu
YXZpZ2F0aW9uRGVsZWdhdGUpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyB3
aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0VG9VUkw6dXJsIGRlbGF5OmRlbGF5XTsKIH0KIAordm9p
ZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OmRpZFBlcmZvcm1DbGllbnRSZWRp
cmVjdChXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IFdURjo6U3RyaW5nJiBzb3VyY2VVUkxTdHJp
bmcsIGNvbnN0IFdURjo6U3RyaW5nJiBkZXN0aW5hdGlvblVSTFN0cmluZykKK3sKKyAgICBpZiAo
IW1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlk
UGVyZm9ybUNsaWVudFJlZGlyZWN0KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIG5hdmln
YXRpb25EZWxlZ2F0ZSA9IG1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlLmdl
dCgpOworICAgIGlmICghbmF2aWdhdGlvbkRlbGVnYXRlKQorICAgICAgICByZXR1cm47CisKKyAg
ICBXZWJDb3JlOjpVUkwgc291cmNlVVJMKFdlYkNvcmU6OlVSTCgpLCBzb3VyY2VVUkxTdHJpbmcp
OworICAgIFdlYkNvcmU6OlVSTCBkZXN0aW5hdGlvblVSTChXZWJDb3JlOjpVUkwoKSwgZGVzdGlu
YXRpb25VUkxTdHJpbmcpOworCisgICAgW3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxl
Z2F0ZVByaXZhdGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0
YXRlLm1fd2ViVmlldyBkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3RGcm9tVVJMOnNvdXJjZVVSTCB0
b1VSTDpkZXN0aW5hdGlvblVSTF07Cit9CisKIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0
aW9uQ2xpZW50OjpkaWRDYW5jZWxDbGllbnRSZWRpcmVjdChXZWJQYWdlUHJveHkmIHBhZ2UpCiB7
CiAgICAgaWYgKCFtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMu
d2ViVmlld0RpZENhbmNlbENsaWVudFJlZGlyZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvRnJhbWVMb2FkU3RhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Zy
YW1lTG9hZFN0YXRlLmgKaW5kZXggOThjMzI1ZTg0NDM2ZWRhZTRkY2Y2MzlkMTQwNzZkYTk4MzUz
NmMxMi4uYTg5YWQwMDBjYzEwNDgzNzY3ZmU5ZjUzY2JhZmZjNDA0ZGEyOWRjMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRnJhbWVMb2FkU3RhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9GcmFtZUxvYWRTdGF0ZS5oCkBAIC01MSw2ICs1MSw3IEBAIHB1Ymxp
YzoKIAogICAgIFN0YXRlIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZTsgfQogICAgIGNv
bnN0IFdlYkNvcmU6OlVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KKyAgICB2b2lk
IHNldFVSTChjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkgeyBtX3VybCA9IHVybDsgfQogICAgIGNv
bnN0IFdlYkNvcmU6OlVSTCYgcHJvdmlzaW9uYWxVUkwoKSBjb25zdCB7IHJldHVybiBtX3Byb3Zp
c2lvbmFsVVJMOyB9CiAKICAgICB2b2lkIHNldFVucmVhY2hhYmxlVVJMKGNvbnN0IFdlYkNvcmU6
OlVSTCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggZjI3
MzdhMjc3MDc3MWUxMGNiMWFkZGM4ZWFjNGNmNzljM2M4YmRiNi4uOWRlYTc5ODBhZjYwNzdjYWY2
Y2FlZTdmOWI0ZjRmZjg0NWIzYWY1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCkBAIC0xMDMsNiArMTAzLDcgQEAKICNpbmNsdWRlICJXZWJJbWFnZS5oIgogI2lu
Y2x1ZGUgIldlYkluc3BlY3RvclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yVXRpbGl0
aWVzLmgiCisjaW5jbHVkZSAiV2ViTmF2aWdhdGlvbkRhdGFTdG9yZS5oIgogI2luY2x1ZGUgIldl
Yk5hdmlnYXRpb25TdGF0ZS5oIgogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eS5oIgogI2luY2x1ZGUgIldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuaCIKQEAgLTEw
MTcsNiArMTAxOCw5IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0
aW9uKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgUmVzb3VyCiAgICAgbG9hZFBhcmFtZXRl
cnMuc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSA9ICh1aW50NjRfdClzaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5OwogICAgIGxvYWRQYXJhbWV0ZXJzLnVzZXJEYXRhID0gVXNlckRhdGEo
cHJvY2VzcygpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEpLmdldCgpKTsKICAg
ICBsb2FkUGFyYW1ldGVycy5zaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgPSBzaG91bGRUcmVh
dEFzQ29udGludWluZ0xvYWQgPT0gU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpZZXM7Cisg
ICAgbG9hZFBhcmFtZXRlcnMubG9ja0hpc3RvcnkgPSBuYXZpZ2F0aW9uLmxvY2tIaXN0b3J5KCk7
CisgICAgbG9hZFBhcmFtZXRlcnMubG9ja0JhY2tGb3J3YXJkTGlzdCA9IG5hdmlnYXRpb24ubG9j
a0JhY2tGb3J3YXJkTGlzdCgpOworICAgIGxvYWRQYXJhbWV0ZXJzLmNsaWVudFJlZGlyZWN0U291
cmNlRm9ySGlzdG9yeSA9IG5hdmlnYXRpb24uY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5
KCk7CiAgICAgYm9vbCBjcmVhdGVkRXh0ZW5zaW9uID0gbWF5YmVJbml0aWFsaXplU2FuZGJveEV4
dGVuc2lvbkhhbmRsZSh1cmwsIGxvYWRQYXJhbWV0ZXJzLnNhbmRib3hFeHRlbnNpb25IYW5kbGUp
OwogICAgIGlmIChjcmVhdGVkRXh0ZW5zaW9uKQogICAgICAgICBtX3Byb2Nlc3MtPndpbGxBY3F1
aXJlVW5pdmVyc2FsRmlsZVJlYWRTYW5kYm94RXh0ZW5zaW9uKCk7CkBAIC0yNTQ4LDYgKzI1NTIs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKEFQ
STo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgUgogCiAgICAgUmVmPFdlYlByb2Nlc3NQcm94eT4g
cHJldmlvdXNQcm9jZXNzID0gbV9wcm9jZXNzLmNvcHlSZWYoKTsKICAgICBzdGQ6Om9wdGlvbmFs
PHVpbnQ2NF90PiBtYWluRnJhbWVJREluUHJldmlvdXNQcm9jZXNzID0gbV9tYWluRnJhbWUgPyBz
dGQ6Om1ha2Vfb3B0aW9uYWwobV9tYWluRnJhbWUtPmZyYW1lSUQoKSkgOiBzdGQ6Om51bGxvcHQ7
CisgICAgYXV0byBtYWluRnJhbWVVUkwgPSBtX21haW5GcmFtZSA/IG1fbWFpbkZyYW1lLT51cmwo
KSA6IFdlYkNvcmU6OlVSTCgpOwogCiAgICAgQVNTRVJUKG1fcHJvY2Vzcy5wdHIoKSAhPSBwcm9j
ZXNzLnB0cigpKTsKIApAQCAtMjU3NSwyMSArMjU4MCwzNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlv
biwgUgogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYgKG5hdmlnYXRpb24ubG9ja0Jh
Y2tGb3J3YXJkTGlzdCgpID09IExvY2tCYWNrRm9yd2FyZExpc3Q6OlllcyB8fCBuYXZpZ2F0aW9u
LmxvY2tIaXN0b3J5KCkgPT0gTG9ja0hpc3Rvcnk6OlllcykgeworICAgICAgICAvLyBJZiBXZWJD
b3JlIGlzIHN1cHBvc2VkIHRvIGxvY2sgdGhlIGhpc3RvcnkgZm9yIHRoaXMgbG9hZCwgdGhlbiB0
aGUgbmV3IHByb2Nlc3MgbmVlZHMgdG8ga25vdyBhYm91dCB0aGUgY3VycmVudCBoaXN0b3J5IGl0
ZW0gc28gaXQgY2FuIHVwZGF0ZQorICAgICAgICAvLyBpdCBpbnN0ZWFkIG9mIGNyZWF0aW5nIGEg
bmV3IG9uZS4KKyAgICAgICAgYXV0byBpdGVtU3RhdGVzID0gbV9iYWNrRm9yd2FyZExpc3QtPmZp
bHRlcmVkSXRlbVN0YXRlcyhbY3VycmVudEl0ZW0gPSBtX2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVu
dEl0ZW0oKV0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSkgeworICAgICAgICAgICAgcmV0
dXJuICZpdGVtID09IGN1cnJlbnRJdGVtOworICAgICAgICB9KTsKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlQoaXRlbVN0YXRlcy5zaXplKCkgPT0gMSk7CisgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2V0Q3VycmVudEhpc3RvcnlJdGVtRm9yUmVhdHRhY2goaXRlbVN0
YXRlc1swXSksIG1fcGFnZUlEKTsKKyAgICB9CisKICAgICAvLyBGSVhNRTogV29yayBvdXQgdGlt
aW5nIG9mIHJlc3BvbmRpbmcgd2l0aCB0aGUgbGFzdCBwb2xpY3kgZGVsZWdhdGUsIGV0YwogICAg
IEFTU0VSVCghbmF2aWdhdGlvbi5jdXJyZW50UmVxdWVzdCgpLmlzRW1wdHkoKSk7CiAgICAgbG9h
ZFJlcXVlc3RXaXRoTmF2aWdhdGlvbihuYXZpZ2F0aW9uLCBSZXNvdXJjZVJlcXVlc3QgeyBuYXZp
Z2F0aW9uLmN1cnJlbnRSZXF1ZXN0KCkgfSwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeTo6U2hvdWxkQWxsb3dFeHRlcm5hbFNjaGVtZXMsIG51bGxwdHIsIFNob3VsZFRyZWF0
QXNDb250aW51aW5nTG9hZDo6WWVzKTsKIAotICAgIC8vIE5vcm1hbGx5LCBub3RpZmljYXRpb24g
b2YgYSBzZXJ2ZXIgcmVkaXJlY3QgY29tZXMgZnJvbSB0aGUgV2ViQ29udGVudCBwcm9jZXNzLgot
ICAgIC8vIElmIHdlIGFyZSBwcm9jZXNzIHN3YXBwaW5nIGluIHJlc3BvbnNlIHRvIGEgc2VydmVy
IHJlZGlyZWN0IHRoZW4gdGhhdCBub3RpZmljYXRpb24gd2lsbCBub3QgY29tZSBmcm9tIHRoZSBu
ZXcgV2ViQ29udGVudCBwcm9jZXNzLgotICAgIC8vIEluIHRoaXMgY2FzZSB3ZSBoYXZlIHRoZSBV
SVByb2Nlc3Mgc3ludGhlc2l6ZSB0aGUgcmVkaXJlY3Qgbm90aWZpY2F0aW9uIGF0IHRoZSBhcHBy
b3ByaWF0ZSB0aW1lLgotICAgIGlmIChuYXZpZ2F0aW9uLmN1cnJlbnRSZXF1ZXN0SXNSZWRpcmVj
dCgpKSB7Ci0gICAgICAgIEFTU0VSVCghbV9tYWluRnJhbWUpOwotICAgICAgICBtX21haW5GcmFt
ZUNyZWF0aW9uSGFuZGxlciA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IG5hdmlnYXRpb24gPSBtYWtlUmVmKG5hdmlnYXRpb24pLCByZXF1ZXN0ID0gIG5hdmlnYXRpb24u
Y3VycmVudFJlcXVlc3QoKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIEFTU0VSVChtX21haW5G
cmFtZSk7CisgICAgQVNTRVJUKCFtX21haW5GcmFtZSk7CisgICAgbV9tYWluRnJhbWVDcmVhdGlv
bkhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBuYXZpZ2F0
aW9uID0gbWFrZVJlZihuYXZpZ2F0aW9uKSwgcmVxdWVzdCA9ICBuYXZpZ2F0aW9uLmN1cnJlbnRS
ZXF1ZXN0KCksIG1haW5GcmFtZVVSTCwgaXNTZXJ2ZXJSZWRpcmVjdCA9IG5hdmlnYXRpb24uY3Vy
cmVudFJlcXVlc3RJc1JlZGlyZWN0KCldKCkgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVChtX21h
aW5GcmFtZSk7CisgICAgICAgIC8vIFJlc3RvcmUgdGhlIG1haW4gZnJhbWUncyBjb21taXR0ZWQg
VVJMIGFzIHNvbWUgY2xpZW50cyBtYXkgcmVseSBvbiBpdCB1bnRpbCB0aGUgbmV4dCBsb2FkIGlz
IGNvbW1pdHRlZC4KKyAgICAgICAgbV9tYWluRnJhbWUtPmZyYW1lTG9hZFN0YXRlKCkuc2V0VVJM
KG1haW5GcmFtZVVSTCk7CisKKyAgICAgICAgLy8gTm9ybWFsbHksIG5vdGlmaWNhdGlvbiBvZiBh
IHNlcnZlciByZWRpcmVjdCBjb21lcyBmcm9tIHRoZSBXZWJDb250ZW50IHByb2Nlc3MuCisgICAg
ICAgIC8vIElmIHdlIGFyZSBwcm9jZXNzIHN3YXBwaW5nIGluIHJlc3BvbnNlIHRvIGEgc2VydmVy
IHJlZGlyZWN0IHRoZW4gdGhhdCBub3RpZmljYXRpb24gd2lsbCBub3QgY29tZSBmcm9tIHRoZSBu
ZXcgV2ViQ29udGVudCBwcm9jZXNzLgorICAgICAgICAvLyBJbiB0aGlzIGNhc2Ugd2UgaGF2ZSB0
aGUgVUlQcm9jZXNzIHN5bnRoZXNpemUgdGhlIHJlZGlyZWN0IG5vdGlmaWNhdGlvbiBhdCB0aGUg
YXBwcm9wcmlhdGUgdGltZS4KKyAgICAgICAgaWYgKGlzU2VydmVyUmVkaXJlY3QpIHsKICAgICAg
ICAgICAgIG1fbWFpbkZyYW1lLT5mcmFtZUxvYWRTdGF0ZSgpLmRpZFN0YXJ0UHJvdmlzaW9uYWxM
b2FkKHJlcXVlc3QudXJsKCkpOwogICAgICAgICAgICAgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0
Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUobV9tYWluRnJhbWUtPmZyYW1lSUQoKSwgbmF2aWdh
dGlvbi0+bmF2aWdhdGlvbklEKCksIFdURk1vdmUocmVxdWVzdCksIHsgfSk7Ci0gICAgICAgIH07
Ci0gICAgfQorICAgICAgICB9CisgICAgfTsKIAogICAgIGJvb2wgaXNJbml0aWFsTmF2aWdhdGlv
bkluTmV3V2luZG93ID0gb3BlbmVkQnlET00oKSAmJiAhaGFzQ29tbWl0dGVkQW55UHJvdmlzaW9u
YWxMb2FkcygpOwogICAgIGlmICghaXNJbml0aWFsTmF2aWdhdGlvbkluTmV3V2luZG93IHx8ICFt
YWluRnJhbWVJREluUHJldmlvdXNQcm9jZXNzKQpAQCAtNDExNSw2ICs0MTMzLDkgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oV2ViRnJhbWVQcm94
eSYgZnJhbWUsIGNvbnN0IFcKICAgICAgICAgbmF2aWdhdGlvbi0+c2V0T3BlbmVkVmlhV2luZG93
T3BlbldpdGhPcGVuZXIoKTsKICAgICBuYXZpZ2F0aW9uLT5zZXRPcGVuZXIobmF2aWdhdGlvbkFj
dGlvbkRhdGEub3BlbmVyKTsKICAgICBuYXZpZ2F0aW9uLT5zZXRSZXF1ZXN0ZXJPcmlnaW4obmF2
aWdhdGlvbkFjdGlvbkRhdGEucmVxdWVzdGVyT3JpZ2luKTsKKyAgICBuYXZpZ2F0aW9uLT5zZXRM
b2NrSGlzdG9yeShuYXZpZ2F0aW9uQWN0aW9uRGF0YS5sb2NrSGlzdG9yeSk7CisgICAgbmF2aWdh
dGlvbi0+c2V0TG9ja0JhY2tGb3J3YXJkTGlzdChuYXZpZ2F0aW9uQWN0aW9uRGF0YS5sb2NrQmFj
a0ZvcndhcmRMaXN0KTsKKyAgICBuYXZpZ2F0aW9uLT5zZXRDbGllbnRSZWRpcmVjdFNvdXJjZUZv
ckhpc3RvcnkobmF2aWdhdGlvbkFjdGlvbkRhdGEuY2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0
b3J5KTsKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICBpZiAoZnJhbWUuZGlk
SGFuZGxlQ29udGVudEZpbHRlclVuYmxvY2tOYXZpZ2F0aW9uKHJlcXVlc3QpKQpAQCAtNDMwMiw4
ICs0MzIzLDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3Qo
Y29uc3QgU3RyaW5nJiBzb3VyY2VVUkxTdHJpbmcsIGNvbnN0CiAgICAgTUVTU0FHRV9DSEVDS19V
Ukwoc291cmNlVVJMU3RyaW5nKTsKICAgICBNRVNTQUdFX0NIRUNLX1VSTChkZXN0aW5hdGlvblVS
TFN0cmluZyk7CiAKLSAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpCisgICAgaWYgKGZyYW1l
LT5pc01haW5GcmFtZSgpKSB7CiAgICAgICAgIG1faGlzdG9yeUNsaWVudC0+ZGlkUGVyZm9ybUNs
aWVudFJlZGlyZWN0KCp0aGlzLCBzb3VyY2VVUkxTdHJpbmcsIGRlc3RpbmF0aW9uVVJMU3RyaW5n
KTsKKyAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3Qo
KnRoaXMsIHNvdXJjZVVSTFN0cmluZywgZGVzdGluYXRpb25VUkxTdHJpbmcpOworICAgIH0KICAg
ICBwcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5oaXN0b3J5Q2xpZW50KCkuZGlkUGVyZm9ybUNsaWVu
dFJlZGlyZWN0KHByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLCAqdGhpcywgc291cmNlVVJMU3RyaW5n
LCBkZXN0aW5hdGlvblVSTFN0cmluZywgKmZyYW1lKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAKaW5kZXggMWQwOWFmMjFkMDE5MTFmNWNiMGFjYzYzNDU2OWZlMGQwYjRhMjQ5
OC4uZWIyNTY3MzFjMDViNDdlZTIwMzhjMmY5N2E2Yjk0ZTYyZjI3ZTU2NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC04NzEsNiArODcxLDggQEAgdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0
IE5hdmlnYXQKICAgICBpZiAoYXV0byYgcmVxdWVzdGVyID0gbmF2aWdhdGlvbkFjdGlvbi5yZXF1
ZXN0ZXIoKSkKICAgICAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEucmVxdWVzdGVyT3JpZ2luID0g
cmVxdWVzdGVyLT5zZWN1cml0eU9yaWdpbigpLmRhdGEoKTsKICAgICBuYXZpZ2F0aW9uQWN0aW9u
RGF0YS50YXJnZXRCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyID0gbmF2aWdhdGlvbkFjdGlvbi50
YXJnZXRCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyKCk7CisgICAgbmF2aWdhdGlvbkFjdGlvbkRh
dGEubG9ja0hpc3RvcnkgPSBuYXZpZ2F0aW9uQWN0aW9uLmxvY2tIaXN0b3J5KCk7CisgICAgbmF2
aWdhdGlvbkFjdGlvbkRhdGEubG9ja0JhY2tGb3J3YXJkTGlzdCA9IG5hdmlnYXRpb25BY3Rpb24u
bG9ja0JhY2tGb3J3YXJkTGlzdCgpOwogCiAgICAgV2ViQ29yZTo6RnJhbWUqIGNvcmVGcmFtZSA9
IG1fZnJhbWUtPmNvcmVGcmFtZSgpOwogICAgIGlmICghY29yZUZyYW1lKQpAQCAtODg0LDYgKzg4
Niw4IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbihjb25zdCBOYXZpZ2F0CiAgICAgaWYgKCFkb2N1bWVudExvYWRlcikK
ICAgICAgICAgZG9jdW1lbnRMb2FkZXIgPSBzdGF0aWNfY2FzdDxXZWJEb2N1bWVudExvYWRlcio+
KGNvcmVGcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSk7CiAKKyAgICBuYXZpZ2F0aW9u
QWN0aW9uRGF0YS5jbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkgPSBkb2N1bWVudExvYWRl
ci0+Y2xpZW50UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5KCk7CisKICAgICAvLyBOb3RpZnkgdGhl
IFVJUHJvY2Vzcy4KICAgICBSZWY8V2ViRnJhbWU+IHByb3RlY3QoKm1fZnJhbWUpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDU3MmRhZWUy
NTlkNWUwYjE1NGJiOGE1NTcwYWEwNTY0MTM2YWQxY2EuLjllMjZkYzExZWUwYWE1ZmE1NGI1NTAy
YWQ1MTAxNzA0NDRhODE0NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCkBAIC0xMzA3LDYgKzEzMDcsOSBAQCB2b2lkIFdlYlBhZ2U6OmxvYWRSZXF1
ZXN0KExvYWRQYXJhbWV0ZXJzJiYgbG9hZFBhcmFtZXRlcnMpCiAgICAgU2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeSBleHRlcm5hbFVSTHNQb2xpY3kgPSBzdGF0aWNfY2FzdDxTaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5Pihsb2FkUGFyYW1ldGVycy5zaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5KTsKICAgICBmcmFtZUxvYWRSZXF1ZXN0LnNldFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3koZXh0ZXJuYWxVUkxzUG9saWN5KTsKICAgICBmcmFtZUxvYWRSZXF1ZXN0LnNldFNob3Vs
ZFRyZWF0QXNDb250aW51aW5nTG9hZChsb2FkUGFyYW1ldGVycy5zaG91bGRUcmVhdEFzQ29udGlu
dWluZ0xvYWQpOworICAgIGZyYW1lTG9hZFJlcXVlc3Quc2V0TG9ja0hpc3RvcnkobG9hZFBhcmFt
ZXRlcnMubG9ja0hpc3RvcnkpOworICAgIGZyYW1lTG9hZFJlcXVlc3Quc2V0bG9ja0JhY2tGb3J3
YXJkTGlzdChsb2FkUGFyYW1ldGVycy5sb2NrQmFja0ZvcndhcmRMaXN0KTsKKyAgICBmcmFtZUxv
YWRSZXF1ZXN0LnNldENsaWVudFJlZGlyZWN0U291cmNlRm9ySGlzdG9yeShsb2FkUGFyYW1ldGVy
cy5jbGllbnRSZWRpcmVjdFNvdXJjZUZvckhpc3RvcnkpOwogCiAgICAgY29yZVBhZ2UoKS0+dXNl
cklucHV0QnJpZGdlKCkubG9hZFJlcXVlc3QoV1RGTW92ZShmcmFtZUxvYWRSZXF1ZXN0KSk7CiAK
QEAgLTI2MDYsNiArMjYwOSwxNCBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZUJhY2tGb3J3YXJkTGlz
dEZvclJlYXR0YWNoKGNvbnN0IFZlY3RvcjxXZWJLaXQ6OkJhY2tGb3J3YXJkTAogICAgIHJlc3Rv
cmVTZXNzaW9uSW50ZXJuYWwoaXRlbVN0YXRlcywgV2FzUmVzdG9yZWRCeUFQSVJlcXVlc3Q6Ok5v
LCBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6T3ZlcndyaXRlRXhpc3RpbmdJdGVtOjpZZXMpOwog
fQogCit2b2lkIFdlYlBhZ2U6OnNldEN1cnJlbnRIaXN0b3J5SXRlbUZvclJlYXR0YWNoKFdlYktp
dDo6QmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYgaXRlbVN0YXRlKQoreworICAgIGF1dG8gaGlz
dG9yeUl0ZW0gPSB0b0hpc3RvcnlJdGVtKGl0ZW1TdGF0ZSk7CisgICAgYXV0byYgaGlzdG9yeUl0
ZW1SZWYgPSBoaXN0b3J5SXRlbS5nZXQoKTsKKyAgICBzdGF0aWNfY2FzdDxXZWJCYWNrRm9yd2Fy
ZExpc3RQcm94eSY+KGNvcmVQYWdlKCktPmJhY2tGb3J3YXJkKCkuY2xpZW50KCkpLmFkZEl0ZW1G
cm9tVUlQcm9jZXNzKGl0ZW1TdGF0ZS5pZGVudGlmaWVyLCBXVEZNb3ZlKGhpc3RvcnlJdGVtKSwg
bV9wYWdlSUQsIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjpPdmVyd3JpdGVFeGlzdGluZ0l0ZW06
Olllcyk7CisgICAgY29yZVBhZ2UoKS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuaGlzdG9yeSgpLnNl
dEN1cnJlbnRJdGVtKGhpc3RvcnlJdGVtUmVmKTsKK30KKwogdm9pZCBXZWJQYWdlOjpyZXF1ZXN0
Rm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsK
ICAgICBhdXRvIGF0dHJpYnV0ZXMgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRP
ck1haW5GcmFtZSgpLmVkaXRvcigpLmZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGJhNTI3NDMz
MTMxZmNjOWUyYWNmOThhZjVhMzhmMTJjMDhjMTBlOTguLmIyNTUxZTc0OWUxMGM1ODZiMzQ0MTA5
ZGQ1ZDY1ZjQ5YWNkMTg0OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKQEAgLTEyMDksNiArMTIwOSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXN0b3Jl
U2Vzc2lvbihjb25zdCBWZWN0b3I8QmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlPiYpOwogICAgIHZv
aWQgZGlkUmVtb3ZlQmFja0ZvcndhcmRJdGVtKGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRl
bUlkZW50aWZpZXImKTsKICAgICB2b2lkIHVwZGF0ZUJhY2tGb3J3YXJkTGlzdEZvclJlYXR0YWNo
KGNvbnN0IFZlY3RvcjxXZWJLaXQ6OkJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZT4mKTsKKyAgICB2
b2lkIHNldEN1cnJlbnRIaXN0b3J5SXRlbUZvclJlYXR0YWNoKFdlYktpdDo6QmFja0ZvcndhcmRM
aXN0SXRlbVN0YXRlJiYpOwogCiAgICAgdm9pZCByZXF1ZXN0Rm9udEF0dHJpYnV0ZXNBdFNlbGVj
dGlvblN0YXJ0KENhbGxiYWNrSUQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCA5N2FkNDQyZWMxOWNmMTZlZjM3
NDQ4Yjg5Nzg3ZGFmNDVlY2VjMmExLi42Yzg3MTA0OWI0MjZlZDg4YTNmOTIyYjgzYzFiZmY0MDFi
NjIzNDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4KQEAgLTE1Nyw2ICsxNTcsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdl
IExlZ2FjeVJlY2VpdmVyIHsKICAgICAKICAgICBSZXN0b3JlU2Vzc2lvbihWZWN0b3I8V2ViS2l0
OjpCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGU+IGl0ZW1TdGF0ZXMpCiAgICAgVXBkYXRlQmFja0Zv
cndhcmRMaXN0Rm9yUmVhdHRhY2goVmVjdG9yPFdlYktpdDo6QmFja0ZvcndhcmRMaXN0SXRlbVN0
YXRlPiBpdGVtU3RhdGVzKQorICAgIFNldEN1cnJlbnRIaXN0b3J5SXRlbUZvclJlYXR0YWNoKHN0
cnVjdCBXZWJLaXQ6OkJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSBpdGVtU3RhdGUpCiAKICAgICBE
aWRSZW1vdmVCYWNrRm9yd2FyZEl0ZW0oc3RydWN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlk
ZW50aWZpZXIgYmFja0ZvcndhcmRJdGVtSUQpCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2ZGE1ODk2NWZmYWZkOWQ4NmM3MTM1MGU1NmVkNTY1
MTQ3YmZkYmVjLi5lZWZkYmMxYjhmODczMjhjNDExMjMxN2JhMmYyMjNiNWIzMTkyMDk2IDEwMDY0
NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTcgQEAKKzIwMTgtMTAtMjIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAg
ICAgICBbUFNPTl0gQWRkIHN1cHBvcnQgZm9yIGNyb3NzLXNpdGUgY2xpZW50LXNpZGUgcmVkaXJl
Y3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA4
MDYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ1MDQ3MzQ0PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBBUEkgdGVzdCBjb3ZlcmFnZS4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5h
dmlnYXRpb24ubW06CisgICAgICAgICgtW1BTT05OYXZpZ2F0aW9uRGVsZWdhdGUgX3dlYlZpZXc6
d2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdFRvVVJMOmRlbGF5Ol0pOgorICAgICAgICAoLVtQU09O
TmF2aWdhdGlvbkRlbGVnYXRlIF93ZWJWaWV3OmRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdEZyb21V
Ukw6dG9VUkw6XSk6CisKIDIwMTgtMTAtMTkgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNv
bT4KIAogICAgICAgICBbbWFjT1NdIE1pbmlCcm93c2VyIGhhcyBhbiB1bnVzZWQgaW5qZWN0ZWQg
YnVuZGxlCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9Qcm9jZXNzU3dhcE9uTmF2aWdhdGlvbi5tbQppbmRleCBiYzI5ZWY4YmY3MTEw
NzA3NmRmODQ0OWFjZDMzZTZlZDU0NTFkYWRlLi4wZmUzYzNkNzAzMDFhZjk2OTcwZGQ4ZjFkZTgx
ZjdhM2ZmMDM0YzA5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1Byb2Nlc3NTd2FwT25OYXZpZ2F0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvUHJvY2Vzc1N3YXBPbk5hdmlnYXRpb24ubW0KQEAgLTY4LDYg
KzY4LDExIEBAIGJvb2wgZGlkUmVjZWl2ZUFsZXJ0Owogc3RhdGljIGJvb2wgcmVjZWl2ZWRNZXNz
YWdlOwogc3RhdGljIGJvb2wgc2VydmVyUmVkaXJlY3RlZDsKIHN0YXRpYyBIYXNoU2V0PHBpZF90
PiBzZWVuUElEczsKK3N0YXRpYyBib29sIHdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3Q7CitzdGF0
aWMgYm9vbCBkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3Q7CitzdGF0aWMgUmV0YWluUHRyPE5TVVJM
PiBjbGllbnRSZWRpcmVjdFNvdXJjZVVSTDsKK3N0YXRpYyBSZXRhaW5QdHI8TlNVUkw+IGNsaWVu
dFJlZGlyZWN0RGVzdGluYXRpb25VUkw7CisKIEBpbnRlcmZhY2UgUFNPTk1lc3NhZ2VIYW5kbGVy
IDogTlNPYmplY3QgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+CiBAZW5kCiAKQEAgLTEyNCw2ICsx
MjksMjAgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZFJlY2VpdmVT
ZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTmF2aWcKICAgICBzZXJ2ZXJSZWRpcmVjdGVkID0g
dHJ1ZTsKIH0KIAorLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyB3aWxsUGVy
Zm9ybUNsaWVudFJlZGlyZWN0VG9VUkw6KE5TVVJMICopVVJMIGRlbGF5OihOU1RpbWVJbnRlcnZh
bClkZWxheQoreworICAgIGNsaWVudFJlZGlyZWN0RGVzdGluYXRpb25VUkwgPSBVUkw7CisgICAg
d2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdCA9IHRydWU7Cit9CisKKy0gKHZvaWQpX3dlYlZpZXc6
KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0RnJvbVVSTDooTlNV
UkwgKilzb3VyY2VVUkwgdG9VUkw6KE5TVVJMICopZGVzdGluYXRpb25VUkwKK3sKKyAgICBFWFBF
Q1RfVFJVRSh3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEo
W2NsaWVudFJlZGlyZWN0RGVzdGluYXRpb25VUkwgYWJzb2x1dGVTdHJpbmddLCBbZGVzdGluYXRp
b25VUkwgYWJzb2x1dGVTdHJpbmddKTsKKyAgICBjbGllbnRSZWRpcmVjdFNvdXJjZVVSTCA9IHNv
dXJjZVVSTDsKKyAgICBkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3QgPSB0cnVlOworfQorCiBAZW5k
CiAKIHN0YXRpYyBSZXRhaW5QdHI8V0tXZWJWaWV3PiBjcmVhdGVkV2ViVmlldzsKQEAgLTI0NSw2
ICsyNjQsMjIgQEAgd2luZG93Lm9ucGFnZXNob3cgPSBmdW5jdGlvbihldnQpIHsKIDwvaGVhZD4K
IClQU09OUkVTT1VSQ0UiOwogCitzdGF0aWMgY29uc3QgY2hhciogbGlua1RvQ3Jvc3NTaXRlQ2xp
ZW50U2lkZVJlZGlyZWN0Qnl0ZXMgPSBSIlBTT05SRVNPVVJDRSgKKzxib2R5PgorICA8YSBpZD0i
dGVzdExpbmsiIGhyZWY9InBzb246Ly93d3cuZ29vZ2xlLmNvbS9jbGllbnRTaWRlUmVkaXJlY3Qu
aHRtbCI+TGluayB0byBjcm9zcy1zaXRlIGNsaWVudC1zaWRlIHJlZGlyZWN0PC9hPgorPC9ib2R5
PgorKVBTT05SRVNPVVJDRSI7CisKK3N0YXRpYyBjb25zdCBjaGFyKiBjcm9zc1NpdGVDbGllbnRT
aWRlUmVkaXJlY3RCeXRlcyA9IFIiUFNPTlJFU09VUkNFKAorPGJvZHk+Cis8c2NyaXB0Pgorb25s
b2FkID0gKCkgPT4geworICBsb2NhdGlvbiA9ICJwc29uOi8vd3d3LmFwcGxlLmNvbS9tYWluLmh0
bWwiOworfTsKKzwvc2NyaXB0PgorPC9ib2R5PgorKVBTT05SRVNPVVJDRSI7CisKICNpZiBQTEFU
Rk9STShNQUMpCiAKIHN0YXRpYyBjb25zdCBjaGFyKiB3aW5kb3dPcGVuQ3Jvc3NTaXRlTm9PcGVu
ZXJUZXN0Qnl0ZXMgPSBSIlBTT05SRVNPVVJDRSgKQEAgLTEwOTcsNiArMTEzMiwxNDMgQEAgVEVT
VChQcm9jZXNzU3dhcCwgU2VydmVyUmVkaXJlY3QyKQogICAgIEVYUEVDVF9FUSgydSwgc2VlblBJ
RHMuc2l6ZSgpKTsKIH0KIAorZW51bSBjbGFzcyBTaG91bGRFbmFibGVQU09OIHsgTm8sIFllcyB9
Oworc3RhdGljIHZvaWQgcnVuQ2xpZW50U2lkZVJlZGlyZWN0VGVzdChTaG91bGRFbmFibGVQU09O
IHNob3VsZEVuYWJsZVBTT04pCit7CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtbX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Cisg
ICAgcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmdldCgpLnByb2Nlc3NTd2Fwc09uTmF2aWdhdGlv
biA9IHNob3VsZEVuYWJsZVBTT04gPT0gU2hvdWxkRW5hYmxlUFNPTjo6WWVzID8gWUVTIDogTk87
CisgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBf
aW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5nZXQoKV0pOwor
CisgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25m
aWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXdDb25maWd1cmF0aW9uIHNldFBy
b2Nlc3NQb29sOnByb2Nlc3NQb29sLmdldCgpXTsKKyAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5T
KFtbUFNPTlNjaGVtZSBhbGxvY10gaW5pdF0pOworICAgIFtoYW5kbGVyIGFkZE1hcHBpbmdGcm9t
VVJMU3RyaW5nOkAicHNvbjovL3d3dy53ZWJraXQub3JnL21haW4uaHRtbCIgdG9EYXRhOmxpbmtU
b0Nyb3NzU2l0ZUNsaWVudFNpZGVSZWRpcmVjdEJ5dGVzXTsKKyAgICBbaGFuZGxlciBhZGRNYXBw
aW5nRnJvbVVSTFN0cmluZzpAInBzb246Ly93d3cuZ29vZ2xlLmNvbS9jbGllbnRTaWRlUmVkaXJl
Y3QuaHRtbCIgdG9EYXRhOmNyb3NzU2l0ZUNsaWVudFNpZGVSZWRpcmVjdEJ5dGVzXTsKKyAgICBb
d2ViVmlld0NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5kbGVyLmdldCgpIGZv
clVSTFNjaGVtZTpAInBzb24iXTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29u
ZmlndXJhdGlvbjp3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIGF1dG8gZGVsZWdh
dGUgPSBhZG9wdE5TKFtbUFNPTk5hdmlnYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAg
IFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBO
U1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VS
TCBVUkxXaXRoU3RyaW5nOkAicHNvbjovL3d3dy53ZWJraXQub3JnL21haW4uaHRtbCJdXTsKKyAg
ICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgYXV0byB3ZWJraXRQSUQg
PSBbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdOworCisgICAgLy8gTmF2aWdhdGUgdG8g
dGhlIHBhZ2UgZG9pbmcgYSBjbGllbnQtc2lkZSByZWRpcmVjdCB0byBhcHBsZS5jb20uCisgICAg
W3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAidGVzdExpbmsuY2xpY2soKSIgY29tcGxldGlv
bkhhbmRsZXI6bmlsXTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7Cisg
ICAgZG9uZSA9IGZhbHNlOworCisgICAgRVhQRUNUX1dLX1NUUkVRKEAicHNvbjovL3d3dy5nb29n
bGUuY29tL2NsaWVudFNpZGVSZWRpcmVjdC5odG1sIiwgW1t3ZWJWaWV3IFVSTF0gYWJzb2x1dGVT
dHJpbmddKTsKKyAgICBhdXRvIGdvb2dsZVBJRCA9IFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRp
Zmllcl07CisgICAgaWYgKHNob3VsZEVuYWJsZVBTT04gPT0gU2hvdWxkRW5hYmxlUFNPTjo6WWVz
KQorICAgICAgICBFWFBFQ1RfTkUod2Via2l0UElELCBnb29nbGVQSUQpOworICAgIGVsc2UKKyAg
ICAgICAgRVhQRUNUX0VRKHdlYmtpdFBJRCwgZ29vZ2xlUElEKTsKKworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgRVhQRUNUX1dL
X1NUUkVRKEAicHNvbjovL3d3dy5hcHBsZS5jb20vbWFpbi5odG1sIiwgW1t3ZWJWaWV3IFVSTF0g
YWJzb2x1dGVTdHJpbmddKTsKKworICAgIGF1dG8gYXBwbGVQSUQgPSBbd2ViVmlldyBfd2ViUHJv
Y2Vzc0lkZW50aWZpZXJdOworICAgIGlmIChzaG91bGRFbmFibGVQU09OID09IFNob3VsZEVuYWJs
ZVBTT046OlllcykgeworICAgICAgICBFWFBFQ1RfTkUod2Via2l0UElELCBhcHBsZVBJRCk7Cisg
ICAgICAgIEVYUEVDVF9ORSh3ZWJraXRQSUQsIGdvb2dsZVBJRCk7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgRVhQRUNUX0VRKHdlYmtpdFBJRCwgYXBwbGVQSUQpOworICAgICAgICBFWFBFQ1RfRVEo
d2Via2l0UElELCBnb29nbGVQSUQpOworICAgIH0KKworICAgIEVYUEVDVF9UUlVFKHdpbGxQZXJm
b3JtQ2xpZW50UmVkaXJlY3QpOworICAgIEVYUEVDVF9UUlVFKGRpZFBlcmZvcm1DbGllbnRSZWRp
cmVjdCk7CisgICAgRVhQRUNUX1dLX1NUUkVRKEAicHNvbjovL3d3dy5nb29nbGUuY29tL2NsaWVu
dFNpZGVSZWRpcmVjdC5odG1sIiwgW2NsaWVudFJlZGlyZWN0U291cmNlVVJMIGFic29sdXRlU3Ry
aW5nXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKEAicHNvbjovL3d3dy5hcHBsZS5jb20vbWFpbi5o
dG1sIiwgW2NsaWVudFJlZGlyZWN0RGVzdGluYXRpb25VUkwgYWJzb2x1dGVTdHJpbmddKTsKKwor
ICAgIHdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3QgPSBmYWxzZTsKKyAgICBkaWRQZXJmb3JtQ2xp
ZW50UmVkaXJlY3QgPSBmYWxzZTsKKyAgICBjbGllbnRSZWRpcmVjdFNvdXJjZVVSTCA9IG51bGxw
dHI7CisgICAgY2xpZW50UmVkaXJlY3REZXN0aW5hdGlvblVSTCA9IG51bGxwdHI7CisKKyAgICAv
LyBWYWxpZGF0ZSBCYWNrL0ZvcndhcmQgbGlzdC4KKyAgICBhdXRvKiBiYWNrRm9yd2FyZExpc3Qg
PSBbd2ViVmlldyBiYWNrRm9yd2FyZExpc3RdOworICAgIGF1dG8qIGN1cnJlbnRJdGVtID0gYmFj
a0ZvcndhcmRMaXN0LmN1cnJlbnRJdGVtOworICAgIEVYUEVDVF9XS19TVFJFUShAInBzb246Ly93
d3cuYXBwbGUuY29tL21haW4uaHRtbCIsIFtjdXJyZW50SXRlbS5VUkwgYWJzb2x1dGVTdHJpbmdd
KTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoQCJwc29uOi8vd3d3LmFwcGxlLmNvbS9tYWluLmh0bWwi
LCBbY3VycmVudEl0ZW0uaW5pdGlhbFVSTCBhYnNvbHV0ZVN0cmluZ10pOworICAgIEVYUEVDVF9U
UlVFKCFiYWNrRm9yd2FyZExpc3QuZm9yd2FyZEl0ZW0pOworCisgICAgRVhQRUNUX0VRKDFVLCBi
YWNrRm9yd2FyZExpc3QuYmFja0xpc3QuY291bnQpOworCisgICAgYXV0byogYmFja0l0ZW0gPSBi
YWNrRm9yd2FyZExpc3QuYmFja0l0ZW07CisgICAgRVhQRUNUX1dLX1NUUkVRKEAicHNvbjovL3d3
dy53ZWJraXQub3JnL21haW4uaHRtbCIsIFtiYWNrSXRlbS5VUkwgYWJzb2x1dGVTdHJpbmddKTsK
KyAgICBFWFBFQ1RfV0tfU1RSRVEoQCJwc29uOi8vd3d3LndlYmtpdC5vcmcvbWFpbi5odG1sIiwg
W2JhY2tJdGVtLmluaXRpYWxVUkwgYWJzb2x1dGVTdHJpbmddKTsKKworICAgIC8vIE5hdmlnYXRl
IGJhY2suCisgICAgW3dlYlZpZXcgZ29CYWNrXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIEVYUEVDVF9XS19TVFJFUShAInBz
b246Ly93d3cud2Via2l0Lm9yZy9tYWluLmh0bWwiLCBbW3dlYlZpZXcgVVJMXSBhYnNvbHV0ZVN0
cmluZ10pOworICAgIEVYUEVDVF9GQUxTRSh3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0KTsKKyAg
ICBFWFBFQ1RfRkFMU0UoZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KTsKKworICAgIGF1dG8gcGlk
QWZ0ZXJCYWNrTmF2aWdhdGlvbiA9IFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl07Cisg
ICAgRVhQRUNUX0VRKHdlYmtpdFBJRCwgcGlkQWZ0ZXJCYWNrTmF2aWdhdGlvbik7CisKKyAgICAv
LyBWYWxpZGF0ZSBCYWNrL0ZvcndhcmQgbGlzdC4KKyAgICBjdXJyZW50SXRlbSA9IGJhY2tGb3J3
YXJkTGlzdC5jdXJyZW50SXRlbTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoQCJwc29uOi8vd3d3Lndl
YmtpdC5vcmcvbWFpbi5odG1sIiwgW2N1cnJlbnRJdGVtLlVSTCBhYnNvbHV0ZVN0cmluZ10pOwor
ICAgIEVYUEVDVF9XS19TVFJFUShAInBzb246Ly93d3cud2Via2l0Lm9yZy9tYWluLmh0bWwiLCBb
Y3VycmVudEl0ZW0uaW5pdGlhbFVSTCBhYnNvbHV0ZVN0cmluZ10pOworCisgICAgRVhQRUNUX1RS
VUUoIWJhY2tGb3J3YXJkTGlzdC5iYWNrSXRlbSk7CisgICAgRVhQRUNUX0VRKDFVLCBiYWNrRm9y
d2FyZExpc3QuZm9yd2FyZExpc3QuY291bnQpOworCisgICAgYXV0byogZm9yd2FyZEl0ZW0gPSBi
YWNrRm9yd2FyZExpc3QuZm9yd2FyZEl0ZW07CisgICAgRVhQRUNUX1dLX1NUUkVRKEAicHNvbjov
L3d3dy5hcHBsZS5jb20vbWFpbi5odG1sIiwgW2ZvcndhcmRJdGVtLlVSTCBhYnNvbHV0ZVN0cmlu
Z10pOworICAgIEVYUEVDVF9XS19TVFJFUShAInBzb246Ly93d3cuYXBwbGUuY29tL21haW4uaHRt
bCIsIFtmb3J3YXJkSXRlbS5pbml0aWFsVVJMIGFic29sdXRlU3RyaW5nXSk7CisKKyAgICAvLyBO
YXZpZ2F0ZSBmb3J3YXJkLgorICAgIFt3ZWJWaWV3IGdvRm9yd2FyZF07CisgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0gZmFsc2U7CisKKyAgICBFWFBFQ1Rf
V0tfU1RSRVEoQCJwc29uOi8vd3d3LmFwcGxlLmNvbS9tYWluLmh0bWwiLCBbW3dlYlZpZXcgVVJM
XSBhYnNvbHV0ZVN0cmluZ10pOworICAgIEVYUEVDVF9GQUxTRSh3aWxsUGVyZm9ybUNsaWVudFJl
ZGlyZWN0KTsKKyAgICBFWFBFQ1RfRkFMU0UoZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KTsKKwor
ICAgIGF1dG8gcGlkQWZ0ZXJGb3J3YXJkTmF2aWdhdGlvbiA9IFt3ZWJWaWV3IF93ZWJQcm9jZXNz
SWRlbnRpZmllcl07CisgICAgRVhQRUNUX0VRKGFwcGxlUElELCBwaWRBZnRlckZvcndhcmROYXZp
Z2F0aW9uKTsKKworICAgIC8vIFZhbGlkYXRlIEJhY2svRm9yd2FyZCBsaXN0LgorICAgIGN1cnJl
bnRJdGVtID0gYmFja0ZvcndhcmRMaXN0LmN1cnJlbnRJdGVtOworICAgIEVYUEVDVF9XS19TVFJF
UShAInBzb246Ly93d3cuYXBwbGUuY29tL21haW4uaHRtbCIsIFtjdXJyZW50SXRlbS5VUkwgYWJz
b2x1dGVTdHJpbmddKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoQCJwc29uOi8vd3d3LmFwcGxlLmNv
bS9tYWluLmh0bWwiLCBbY3VycmVudEl0ZW0uaW5pdGlhbFVSTCBhYnNvbHV0ZVN0cmluZ10pOwor
ICAgIEVYUEVDVF9UUlVFKCFiYWNrRm9yd2FyZExpc3QuZm9yd2FyZEl0ZW0pOworCisgICAgRVhQ
RUNUX0VRKDFVLCBiYWNrRm9yd2FyZExpc3QuYmFja0xpc3QuY291bnQpOworCisgICAgLy8gRklY
TUU6IHVuY29tbWVudCB0aGUgZm9sbG93aW5nIG9uY2UgPHJkYXI6Ly9wcm9ibGVtLzQ1MDU4OTM4
PiBoYXMgYmVlbiBmaXhlZC4gV2hlbiBlbmFibGluZyBQU09OCisgICAgLy8gdGhlIGJhY2tJdGVt
J3MgVVJMIGN1cnJlbnRseSBiZWNvbWVzIGFib3V0OmJsYW5rLgorICAgIC8vIGJhY2tJdGVtID0g
YmFja0ZvcndhcmRMaXN0LmJhY2tJdGVtOworICAgIC8vIEVYUEVDVF9XS19TVFJFUShAInBzb246
Ly93d3cud2Via2l0Lm9yZy9tYWluLmh0bWwiLCBbYmFja0l0ZW0uVVJMIGFic29sdXRlU3RyaW5n
XSk7CisgICAgLy8gRVhQRUNUX1dLX1NUUkVRKEAicHNvbjovL3d3dy53ZWJraXQub3JnL21haW4u
aHRtbCIsIFtiYWNrSXRlbS5pbml0aWFsVVJMIGFic29sdXRlU3RyaW5nXSk7Cit9CisKK1RFU1Qo
UHJvY2Vzc1N3YXAsIENyb3NzU2l0ZUNsaWVudFNpZGVSZWRpcmVjdFdpdGhvdXRQU09OKQorewor
ICAgIHJ1bkNsaWVudFNpZGVSZWRpcmVjdFRlc3QoU2hvdWxkRW5hYmxlUFNPTjo6Tm8pOworfQor
CitURVNUKFByb2Nlc3NTd2FwLCBDcm9zc1NpdGVDbGllbnRTaWRlUmVkaXJlY3RXaXRoUFNPTikK
K3sKKyAgICBydW5DbGllbnRTaWRlUmVkaXJlY3RUZXN0KFNob3VsZEVuYWJsZVBTT046Olllcyk7
Cit9CisKIHN0YXRpYyBjb25zdCBjaGFyKiBzZXNzaW9uU3RvcmFnZVRlc3RCeXRlcyA9IFIiUFNP
TlJFU09VUkNFKAogPGhlYWQ+CiA8c2NyaXB0Pgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>