<?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>176889</bug_id>
          
          <creation_ts>2017-09-13 23:06:41 -0700</creation_ts>
          <short_desc>Add WKUIDelegatePrivate equivalent of WKPageUIClient&apos;s drawHeader, drawFooter, headerHeight, and footerHeight</short_desc>
          <delta_ts>2017-09-27 12:59:38 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>aestes</cc>
    
    <cc>berto</cc>
    
    <cc>buildbot</cc>
    
    <cc>cgarcia</cc>
    
    <cc>gustavo</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1348650</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-13 23:06:41 -0700</bug_when>
    <thetext>Add WKUIDelegatePrivate equivalent of WKPageUIClient&apos;s drawHeader, drawFooter, headerHeight, and footerHeight</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348653</commentid>
    <comment_count>1</comment_count>
      <attachid>320729</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-13 23:13:25 -0700</bug_when>
    <thetext>Created attachment 320729
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348677</commentid>
    <comment_count>2</comment_count>
      <attachid>320737</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-14 00:01:43 -0700</bug_when>
    <thetext>Created attachment 320737
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348678</commentid>
    <comment_count>3</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-09-14 00:03:34 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348847</commentid>
    <comment_count>4</comment_count>
      <attachid>320737</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-09-14 10:43:05 -0700</bug_when>
    <thetext>Comment on attachment 320737
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=320737&amp;action=review

&gt; Source/WebKit/UIProcess/WebFrameProxy.cpp:79
&gt; +void WebFrameProxy::loadURL(const WebCore::URL&amp; url)

There&apos;s a &quot;using namespace WebCore&quot; at the top of this file, so you don&apos;t need to specify &quot;WebCore::&quot; here.

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:964
&gt; +void WebPageProxy::loadAlternateHTMLString(const String&amp; htmlString, const WebCore::URL&amp; baseURL, const WebCore::URL&amp; unreachableURL, API::Object* userData)

Ditto.

&gt; Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp:2495
&gt; +    getPage(webView).loadAlternateHTMLString(String::fromUTF8(content), WebCore::URL(WebCore::URL(), String::fromUTF8(baseURI)), WebCore::URL(WebCore::URL(), String::fromUTF8(contentURI)));

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348859</commentid>
    <comment_count>5</comment_count>
      <attachid>320790</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-14 10:53:47 -0700</bug_when>
    <thetext>Created attachment 320790
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348861</commentid>
    <comment_count>6</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-14 10:55:34 -0700</bug_when>
    <thetext>http://trac.webkit.org/r222033</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348923</commentid>
    <comment_count>7</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2017-09-14 12:31:48 -0700</bug_when>
    <thetext>API test WebKit.PrintFrame is timing out after this change:
https://build.webkit.org/builders/Apple%20El%20Capitan%20Release%20WK2%20%28Tests%29/builds/4465</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348942</commentid>
    <comment_count>8</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2017-09-14 13:12:10 -0700</bug_when>
    <thetext>Reverted r222033 for reason:

This change caused API test WebKit.PrintFrame to time out.

Committed r222047: &lt;http://trac.webkit.org/changeset/222047&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349081</commentid>
    <comment_count>9</comment_count>
      <attachid>320844</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-14 16:36:00 -0700</bug_when>
    <thetext>Created attachment 320844
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349083</commentid>
    <comment_count>10</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-14 16:38:54 -0700</bug_when>
    <thetext>So it turns out the exact call order and number to these delegate callbacks are not the same on all mac platforms.  I modified the test to verify that each delegate is called at least once, and I check the values as before.

http://trac.webkit.org/r222059</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353754</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:59:38 -0700</bug_when>
    <thetext>&lt;rdar://problem/34694441&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320729</attachid>
            <date>2017-09-13 23:13:25 -0700</date>
            <delta_ts>2017-09-14 00:01:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176889-20170913231324.patch</filename>
            <type>text/plain</type>
            <size>48330</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjE5ODIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDczIEBACisyMDE3LTA5LTEzICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFdLVUlEZWxl
Z2F0ZVByaXZhdGUgZXF1aXZhbGVudCBvZiBXS1BhZ2VVSUNsaWVudCdzIGRyYXdIZWFkZXIsIGRy
YXdGb290ZXIsIGhlYWRlckhlaWdodCwgYW5kIGZvb3RlckhlaWdodAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2ODg5CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8yOTI3MDAzNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdl
TG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcpOgorICAgICAgICAoV0tQYWdlTG9hZEFsdGVybmF0ZUhU
TUxTdHJpbmdXaXRoVXNlckRhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tC
cm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS0Jyb3dzaW5nQ29udGV4
dENvbnRyb2xsZXIgbG9hZEFsdGVybmF0ZUhUTUxTdHJpbmc6YmFzZVVSTDpmb3JVbnJlYWNoYWJs
ZVVSTDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZh
dGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAg
ICAgKC1bV0tXZWJWaWV3IF9sb2FkQWx0ZXJuYXRlSFRNTFN0cmluZzpiYXNlVVJMOmZvclVucmVh
Y2hhYmxlVVJMOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW06CisgICAgICAgIChXZWJLaXQ6
OlVJRGVsZWdhdGU6OnNldERlbGVnYXRlKToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6
VUlDbGllbnQ6OmhlYWRlckhlaWdodCk6CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJ
Q2xpZW50Ojpmb290ZXJIZWlnaHQpOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNs
aWVudDo6ZHJhd0hlYWRlcik6CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50
OjpkcmF3Rm9vdGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV0tSZWxvYWRGcmFtZUVy
cm9yUmVjb3ZlcnlBdHRlbXB0ZXIubW06CisgICAgICAgICgtW1dLUmVsb2FkRnJhbWVFcnJvclJl
Y292ZXJ5QXR0ZW1wdGVyIGF0dGVtcHRSZWNvdmVyeV0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnByaW50
T3BlcmF0aW9uV2l0aFByaW50SW5mbyk6CisgICAgICAgICogVUlQcm9jZXNzL0ZyYW1lTG9hZFN0
YXRlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkU3RhdGU6OmRpZFN0YXJ0UHJvdmlz
aW9uYWxMb2FkKToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkU3RhdGU6OmRpZFJlY2VpdmVT
ZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCk6CisgICAgICAgIChXZWJLaXQ6OkZyYW1l
TG9hZFN0YXRlOjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKFdlYktpdDo6RnJh
bWVMb2FkU3RhdGU6OmRpZENvbW1pdExvYWQpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRT
dGF0ZTo6ZGlkU2FtZURvY3VtZW50Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6RnJh
bWVMb2FkU3RhdGU6OnNldFVucmVhY2hhYmxlVVJMKToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVM
b2FkU3RhdGU6OkZyYW1lTG9hZFN0YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
RnJhbWVMb2FkU3RhdGUuaDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkU3RhdGU6OnVybCBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZFN0YXRlOjpwcm92aXNpb25hbFVSTCBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZFN0YXRlOjp1bnJlYWNoYWJsZVVSTCBj
b25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZVByb3h5Ojpsb2FkVVJMKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJh
bWVQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJG
cmFtZVByb3h5OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZVByb3h5OjpkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVQcm94eTo6c2V0VW5yZWFjaGFibGVVUkwpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJGcmFtZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6Oldl
YkZyYW1lUHJveHk6OnVybCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lUHJveHk6
OnByb3Zpc2lvbmFsVVJMIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVQcm94eTo6
dW5yZWFjaGFibGVVUkwgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWRBbHRlcm5hdGVIVE1MU3Ry
aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFs
TG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRSZWNlaXZl
U2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZy
YW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9y
UHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkwpOgorICAgICAgICAoV2ViS2l0OjpXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2UpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRQdXNoU3Rh
dGVXaXRoaW5QYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGlkUmVwbGFjZVN0YXRlV2l0aGluUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFBvcFN0YXRlV2l0aGluUGFnZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9u
YWxMb2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OmxvYWRVUkxJbkZyYW1lKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluOgorCiAyMDE3LTA5LTEzICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlz
dGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIFdLVUlEZWxlZ2F0ZVByaXZhdGUgZXF1
aXZhbGVudCBvZiBXS1BhZ2VVSUNsaWVudCdzIHNldElzUmVzaXphYmxlLCBnZXRXaW5kb3dGcmFt
ZSwgYW5kIHNldFdpbmRvd0ZyYW1lCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9GcmFt
ZUxvYWRTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRnJh
bWVMb2FkU3RhdGUuY3BwCShyZXZpc2lvbiAyMjE5MDcpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9GcmFtZUxvYWRTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDE2ICsyOCwxMSBA
QAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotRnJhbWVMb2FkU3RhdGU6OkZyYW1lTG9hZFN0YXRl
KCkKLSAgICA6IG1fc3RhdGUoU3RhdGU6OkZpbmlzaGVkKQotewotfQotCiBGcmFtZUxvYWRTdGF0
ZTo6fkZyYW1lTG9hZFN0YXRlKCkKIHsKIH0KIAotdm9pZCBGcmFtZUxvYWRTdGF0ZTo6ZGlkU3Rh
cnRQcm92aXNpb25hbExvYWQoY29uc3QgU3RyaW5nJiB1cmwpCit2b2lkIEZyYW1lTG9hZFN0YXRl
OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKIHsKICAg
ICBBU1NFUlQobV9wcm92aXNpb25hbFVSTC5pc0VtcHR5KCkpOwogCkBAIC00NSw3ICs0MCw3IEBA
IHZvaWQgRnJhbWVMb2FkU3RhdGU6OmRpZFN0YXJ0UHJvdmlzaW9uYWwKICAgICBtX3Byb3Zpc2lv
bmFsVVJMID0gdXJsOwogfQogCi12b2lkIEZyYW1lTG9hZFN0YXRlOjpkaWRSZWNlaXZlU2VydmVy
UmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoY29uc3QgU3RyaW5nJiB1cmwpCit2b2lkIEZyYW1l
TG9hZFN0YXRlOjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoY29u
c3QgV2ViQ29yZTo6VVJMJiB1cmwpCiB7CiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OlBy
b3Zpc2lvbmFsKTsKIApAQCAtNTcsNyArNTIsNyBAQCB2b2lkIEZyYW1lTG9hZFN0YXRlOjpkaWRG
YWlsUHJvdmlzaW9uYWxMCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OlByb3Zpc2lvbmFs
KTsKIAogICAgIG1fc3RhdGUgPSBTdGF0ZTo6RmluaXNoZWQ7Ci0gICAgbV9wcm92aXNpb25hbFVS
TCA9IFN0cmluZygpOworICAgIG1fcHJvdmlzaW9uYWxVUkwgPSB7IH07CiAgICAgbV91bnJlYWNo
YWJsZVVSTCA9IG1fbGFzdFVucmVhY2hhYmxlVVJMOwogfQogCkBAIC02Nyw3ICs2Miw3IEBAIHZv
aWQgRnJhbWVMb2FkU3RhdGU6OmRpZENvbW1pdExvYWQoKQogCiAgICAgbV9zdGF0ZSA9IFN0YXRl
OjpDb21taXR0ZWQ7CiAgICAgbV91cmwgPSBtX3Byb3Zpc2lvbmFsVVJMOwotICAgIG1fcHJvdmlz
aW9uYWxVUkwgPSBTdHJpbmcoKTsKKyAgICBtX3Byb3Zpc2lvbmFsVVJMID0geyB9OwogfQogCiB2
b2lkIEZyYW1lTG9hZFN0YXRlOjpkaWRGaW5pc2hMb2FkKCkKQEAgLTg2LDEyICs4MSwxMiBAQCB2
b2lkIEZyYW1lTG9hZFN0YXRlOjpkaWRGYWlsTG9hZCgpCiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpG
aW5pc2hlZDsKIH0KIAotdm9pZCBGcmFtZUxvYWRTdGF0ZTo6ZGlkU2FtZURvY3VtZW50Tm90aWZp
Y2F0aW9uKGNvbnN0IFN0cmluZyYgdXJsKQordm9pZCBGcmFtZUxvYWRTdGF0ZTo6ZGlkU2FtZURv
Y3VtZW50Tm90aWZpY2F0aW9uKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKQogewogICAgIG1fdXJs
ID0gdXJsOwogfQogCi12b2lkIEZyYW1lTG9hZFN0YXRlOjpzZXRVbnJlYWNoYWJsZVVSTChjb25z
dCBTdHJpbmcmIHVucmVhY2hhYmxlVVJMKQordm9pZCBGcmFtZUxvYWRTdGF0ZTo6c2V0VW5yZWFj
aGFibGVVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiB1bnJlYWNoYWJsZVVSTCkKIHsKICAgICBtX2xh
c3RVbnJlYWNoYWJsZVVSTCA9IG1fdW5yZWFjaGFibGVVUkw7CiAgICAgbV91bnJlYWNoYWJsZVVS
TCA9IHVucmVhY2hhYmxlVVJMOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRnJhbWVM
b2FkU3RhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9GcmFtZUxv
YWRTdGF0ZS5oCShyZXZpc2lvbiAyMjE5MDcpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9G
cmFtZUxvYWRTdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxNiArMjMsMTQgQEAKICAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEZyYW1lTG9hZFN0
YXRlX2gKLSNkZWZpbmUgRnJhbWVMb2FkU3RhdGVfaAorI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgRnJhbWVMb2FkU3RhdGUgewogcHVibGljOgotICAgIEZy
YW1lTG9hZFN0YXRlKCk7CiAgICAgfkZyYW1lTG9hZFN0YXRlKCk7CiAKICAgICBlbnVtIGNsYXNz
IFN0YXRlIHsKQEAgLTQxLDMxICszOSwyOSBAQCBwdWJsaWM6CiAgICAgICAgIEZpbmlzaGVkCiAg
ICAgfTsKIAotICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWQoY29uc3QgU3RyaW5nJiB1
cmwpOwotICAgIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2Fk
KGNvbnN0IFN0cmluZyYgdXJsKTsKKyAgICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKGNv
bnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9y
UHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdlYkNvcmU6OlVSTCYpOwogICAgIHZvaWQgZGlkRmFpbFBy
b3Zpc2lvbmFsTG9hZCgpOwogCiAgICAgdm9pZCBkaWRDb21taXRMb2FkKCk7CiAgICAgdm9pZCBk
aWRGaW5pc2hMb2FkKCk7CiAgICAgdm9pZCBkaWRGYWlsTG9hZCgpOwogCi0gICAgdm9pZCBkaWRT
YW1lRG9jdW1lbnROb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBkaWRTYW1l
RG9jdW1lbnROb3RpZmljYXRpb24oY29uc3QgV2ViQ29yZTo6VVJMJik7CiAKICAgICBTdGF0ZSBz
dGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KLSAgICBjb25zdCBTdHJpbmcmIHVybCgp
IGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9Ci0gICAgY29uc3QgU3RyaW5nJiBwcm92aXNpb25hbFVS
TCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdmlzaW9uYWxVUkw7IH0KKyAgICBjb25zdCBXZWJDb3Jl
OjpVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CisgICAgY29uc3QgV2ViQ29yZTo6
VVJMJiBwcm92aXNpb25hbFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdmlzaW9uYWxVUkw7IH0K
IAotICAgIHZvaWQgc2V0VW5yZWFjaGFibGVVUkwoY29uc3QgU3RyaW5nJik7Ci0gICAgY29uc3Qg
U3RyaW5nJiB1bnJlYWNoYWJsZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fdW5yZWFjaGFibGVVUkw7
IH0KKyAgICB2b2lkIHNldFVucmVhY2hhYmxlVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAg
IGNvbnN0IFdlYkNvcmU6OlVSTCYgdW5yZWFjaGFibGVVUkwoKSBjb25zdCB7IHJldHVybiBtX3Vu
cmVhY2hhYmxlVVJMOyB9CiAKIHByaXZhdGU6Ci0gICAgU3RhdGUgbV9zdGF0ZTsKLSAgICBTdHJp
bmcgbV91cmw7Ci0gICAgU3RyaW5nIG1fcHJvdmlzaW9uYWxVUkw7Ci0gICAgU3RyaW5nIG1fdW5y
ZWFjaGFibGVVUkw7Ci0gICAgU3RyaW5nIG1fbGFzdFVucmVhY2hhYmxlVVJMOworICAgIFN0YXRl
IG1fc3RhdGUgeyBTdGF0ZTo6RmluaXNoZWQgfTsKKyAgICBXZWJDb3JlOjpVUkwgbV91cmw7Cisg
ICAgV2ViQ29yZTo6VVJMIG1fcHJvdmlzaW9uYWxVUkw7CisgICAgV2ViQ29yZTo6VVJMIG1fdW5y
ZWFjaGFibGVVUkw7CisgICAgV2ViQ29yZTo6VVJMIG1fbGFzdFVucmVhY2hhYmxlVVJMOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBGcmFtZUxvYWRTdGF0ZV9oCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcAkocmV2aXNpb24g
MjIxOTA3KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDcgQEAgYm9vbCBXZWJGcmFtZVByb3h5Ojppc01haW5G
cmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIHRoaXMgPT0gbV9wYWdlLT5tYWluRnJhbWUoKTsKIH0K
IAotdm9pZCBXZWJGcmFtZVByb3h5Ojpsb2FkVVJMKGNvbnN0IFN0cmluZyYgdXJsKQordm9pZCBX
ZWJGcmFtZVByb3h5Ojpsb2FkVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKQogewogICAgIGlm
ICghbV9wYWdlKQogICAgICAgICByZXR1cm47CkBAIC0xMzAsMTIgKzEzMCwxMiBAQCBib29sIFdl
YkZyYW1lUHJveHk6OmlzRGlzcGxheWluZ1BERkRvY3VtCiAgICAgcmV0dXJuIE1JTUVUeXBlUmVn
aXN0cnk6OmlzUERGT3JQb3N0U2NyaXB0TUlNRVR5cGUobV9NSU1FVHlwZSk7CiB9CiAKLXZvaWQg
V2ViRnJhbWVQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWQoY29uc3QgU3RyaW5nJiB1cmwp
Cit2b2lkIFdlYkZyYW1lUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdlYkNv
cmU6OlVSTCYgdXJsKQogewogICAgIG1fZnJhbWVMb2FkU3RhdGUuZGlkU3RhcnRQcm92aXNpb25h
bExvYWQodXJsKTsKIH0KIAotdm9pZCBXZWJGcmFtZVByb3h5OjpkaWRSZWNlaXZlU2VydmVyUmVk
aXJlY3RGb3JQcm92aXNpb25hbExvYWQoY29uc3QgU3RyaW5nJiB1cmwpCit2b2lkIFdlYkZyYW1l
UHJveHk6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZChjb25zdCBX
ZWJDb3JlOjpVUkwmIHVybCkKIHsKICAgICBtX2ZyYW1lTG9hZFN0YXRlLmRpZFJlY2VpdmVTZXJ2
ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCh1cmwpOwogfQpAQCAtMTY2LDcgKzE2Niw3IEBA
IHZvaWQgV2ViRnJhbWVQcm94eTo6ZGlkRmFpbExvYWQoKQogICAgIG1fZnJhbWVMb2FkU3RhdGUu
ZGlkRmFpbExvYWQoKTsKIH0KIAotdm9pZCBXZWJGcmFtZVByb3h5OjpkaWRTYW1lRG9jdW1lbnRO
YXZpZ2F0aW9uKGNvbnN0IFN0cmluZyYgdXJsKQordm9pZCBXZWJGcmFtZVByb3h5OjpkaWRTYW1l
RG9jdW1lbnROYXZpZ2F0aW9uKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKQogewogICAgIG1fZnJh
bWVMb2FkU3RhdGUuZGlkU2FtZURvY3VtZW50Tm90aWZpY2F0aW9uKHVybCk7CiB9CkBAIC0yMzIs
NyArMjMyLDcgQEAgdm9pZCBXZWJGcmFtZVByb3h5OjpnZXRSZXNvdXJjZURhdGEoQVBJOgogICAg
IG1fcGFnZS0+Z2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKHRoaXMsIHJlc291cmNlVVJMLCBXVEZN
b3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKIH0KIAotdm9pZCBXZWJGcmFtZVByb3h5OjpzZXRVbnJl
YWNoYWJsZVVSTChjb25zdCBTdHJpbmcmIHVucmVhY2hhYmxlVVJMKQordm9pZCBXZWJGcmFtZVBy
b3h5OjpzZXRVbnJlYWNoYWJsZVVSTChjb25zdCBXZWJDb3JlOjpVUkwmIHVucmVhY2hhYmxlVVJM
KQogewogICAgIG1fZnJhbWVMb2FkU3RhdGUuc2V0VW5yZWFjaGFibGVVUkwodW5yZWFjaGFibGVV
UkwpOwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaAkocmV2
aXNpb24gMjIxOTA3KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5o
CSh3b3JraW5nIGNvcHkpCkBAIC03NywxNCArNzcsMTQgQEAgcHVibGljOgogCiAgICAgRnJhbWVM
b2FkU3RhdGUmIGZyYW1lTG9hZFN0YXRlKCkgeyByZXR1cm4gbV9mcmFtZUxvYWRTdGF0ZTsgfQog
Ci0gICAgdm9pZCBsb2FkVVJMKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgbG9hZFVSTChjb25z
dCBXZWJDb3JlOjpVUkwmKTsKICAgICB2b2lkIHN0b3BMb2FkaW5nKCkgY29uc3Q7CiAKLSAgICBj
b25zdCBTdHJpbmcmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVMb2FkU3RhdGUudXJsKCk7
IH0KLSAgICBjb25zdCBTdHJpbmcmIHByb3Zpc2lvbmFsVVJMKCkgY29uc3QgeyByZXR1cm4gbV9m
cmFtZUxvYWRTdGF0ZS5wcm92aXNpb25hbFVSTCgpOyB9CisgICAgY29uc3QgV2ViQ29yZTo6VVJM
JiB1cmwoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lTG9hZFN0YXRlLnVybCgpOyB9CisgICAgY29u
c3QgV2ViQ29yZTo6VVJMJiBwcm92aXNpb25hbFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVM
b2FkU3RhdGUucHJvdmlzaW9uYWxVUkwoKTsgfQogCi0gICAgdm9pZCBzZXRVbnJlYWNoYWJsZVVS
TChjb25zdCBTdHJpbmcmKTsKLSAgICBjb25zdCBTdHJpbmcmIHVucmVhY2hhYmxlVVJMKCkgY29u
c3QgeyByZXR1cm4gbV9mcmFtZUxvYWRTdGF0ZS51bnJlYWNoYWJsZVVSTCgpOyB9CisgICAgdm9p
ZCBzZXRVbnJlYWNoYWJsZVVSTChjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICBjb25zdCBXZWJD
b3JlOjpVUkwmIHVucmVhY2hhYmxlVVJMKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZUxvYWRTdGF0
ZS51bnJlYWNoYWJsZVVSTCgpOyB9CiAKICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKCkgY29u
c3QgeyByZXR1cm4gbV9NSU1FVHlwZTsgfQogICAgIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGFpbnNQbHVnaW5Eb2N1bWVudDsgfQpAQCAtMTA1LDEz
ICsxMDUsMTMgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0TWFpblJlc291cmNlRGF0YShGdW5jdGlv
bjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBn
ZXRSZXNvdXJjZURhdGEoQVBJOjpVUkwqLCBGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJik7CiAKLSAgICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2Fk
KGNvbnN0IFN0cmluZyYgdXJsKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZv
clByb3Zpc2lvbmFsTG9hZChjb25zdCBTdHJpbmcmIHVybCk7CisgICAgdm9pZCBkaWRTdGFydFBy
b3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVT
ZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpVUkwmKTsKICAg
ICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWQoKTsKICAgICB2b2lkIGRpZENvbW1pdExvYWQo
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgV2ViQ2VydGlmaWNhdGVJbmZvJiwgYm9vbCBjb250
YWluc1BsdWdpbkRvY3VtZW50KTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWQoKTsKICAgICB2b2lk
IGRpZEZhaWxMb2FkKCk7Ci0gICAgdm9pZCBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKGNvbnN0
IFN0cmluZyYpOyAvLyBlZy4gYW5jaG9yIG5hdmlnYXRpb24sIHNlc3Npb24gc3RhdGUgY2hhbmdl
LgorICAgIHZvaWQgZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbihjb25zdCBXZWJDb3JlOjpVUkwm
KTsgLy8gZWcuIGFuY2hvciBuYXZpZ2F0aW9uLCBzZXNzaW9uIHN0YXRlIGNoYW5nZS4KICAgICB2
b2lkIGRpZENoYW5nZVRpdGxlKGNvbnN0IFN0cmluZyYpOwogCiAgICAgLy8gUG9saWN5IG9wZXJh
dGlvbnMuCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJl
dmlzaW9uIDIyMTk4MikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTk2MSw3ICs5NjEsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0
aW9uPiBXZWJQYWdlUHJveHk6OmxvCiAgICAgcmV0dXJuIFdURk1vdmUobmF2aWdhdGlvbik7CiB9
CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkQWx0ZXJuYXRlSFRNTFN0cmluZyhjb25zdCBTdHJp
bmcmIGh0bWxTdHJpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgY29uc3QgU3RyaW5nJiB1bnJl
YWNoYWJsZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQordm9pZCBXZWJQYWdlUHJveHk6Omxv
YWRBbHRlcm5hdGVIVE1MU3RyaW5nKGNvbnN0IFN0cmluZyYgaHRtbFN0cmluZywgY29uc3QgV2Vi
Q29yZTo6VVJMJiBiYXNlVVJMLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVucmVhY2hhYmxlVVJMLCBB
UEk6Ok9iamVjdCogdXNlckRhdGEpCiB7CiAgICAgLy8gV2hlbiB0aGUgVUlQcm9jZXNzIGlzIGlu
IHRoZSBwcm9jZXNzIG9mIGhhbmRsaW5nIGEgZmFpbGluZyBwcm92aXNpb25hbCBsb2FkLCBkbyBu
b3QgYXR0ZW1wdCB0bwogICAgIC8vIHN0YXJ0IGEgc2Vjb25kIGFsdGVybmF0aXZlIEhUTUwgbG9h
ZCBhcyB0aGlzIHdpbGwgcHJldmVudCB0aGUgcGFnZSBsb2FkIHN0YXRlIGZyb20gYmVpbmcKQEAg
LTMxNDYsNyArMzE0Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWREZXN0cm95TmF2aWdhdGlv
bigKICAgICBtX25hdmlnYXRpb25TdGF0ZS0+ZGlkRGVzdHJveU5hdmlnYXRpb24obmF2aWdhdGlv
bklEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJp
bmcmIHVybCwgY29uc3QgU3RyaW5nJiB1bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEmIHVz
ZXJEYXRhKQordm9pZCBXZWJQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpVUkwm
JiB1cmwsIFdlYkNvcmU6OlVSTCYmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0YSYgdXNl
ckRhdGEpCiB7CiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IobV9wYWdlQ2xpZW50
KTsKIApAQCAtMzE4MCw3ICszMTgwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFN0YXJ0UHJv
dmlzaW9uYWxMbwogICAgICAgICBtX2xvYWRlckNsaWVudC0+ZGlkU3RhcnRQcm92aXNpb25hbExv
YWRGb3JGcmFtZSgqdGhpcywgKmZyYW1lLCBuYXZpZ2F0aW9uLmdldCgpLCBtX3Byb2Nlc3MtPnRy
YW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKIH0KIAot
dm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFs
TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29u
c3QgU3RyaW5nJiB1cmwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgV2ViUGFnZVBy
b3h5OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1
aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlVSTCYmIHVy
bCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3Ig
cHJvdGVjdG9yKG1fcGFnZUNsaWVudCk7CiAKQEAgLTMyMzQsNyArMzIzNCw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpkaWRDYW5jZWxDbGllbnRSZWRpcmUKICAgICB9CiB9CiAKLXZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQs
IHVpbnQ2NF90LCBjb25zdCBTdHJpbmcmIHVybCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaGFu
Z2VQcm92aXNpb25hbFVSTEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90LCBXZWJD
b3JlOjpVUkwmJiB1cmwpCiB7CiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IobV9w
YWdlQ2xpZW50KTsKIApAQCAtMzQ4Miw3ICszNDgyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZEZhaWxMb2FkRm9yRnJhbWUodQogICAgICAgICBtX3BhZ2VDbGllbnQuZGlkRmFpbExvYWRGb3JN
YWluRnJhbWUoKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZFNhbWVEb2N1bWVudE5hdmln
YXRpb25Gb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVp
bnQzMl90IG9wYXF1ZVNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLCBjb25zdCBTdHJpbmcmIHVy
bCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBXZWJQYWdlUHJveHk6OmRpZFNhbWVE
b2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZp
Z2F0aW9uSUQsIHVpbnQzMl90IG9wYXF1ZVNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLCBXZWJD
b3JlOjpVUkwmJiB1cmwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKICAgICBQYWdlQ2xp
ZW50UHJvdGVjdG9yIHByb3RlY3RvcihtX3BhZ2VDbGllbnQpOwogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMjIxOTgyKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5NSw3ICsz
OTUsNyBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gbG9hZEZpbGUoY29u
c3QgU3RyaW5nJiBmaWxlVVJMLCBjb25zdCBTdHJpbmcmIHJlc291cmNlRGlyZWN0b3J5VVJMLCBB
UEk6Ok9iamVjdCogdXNlckRhdGEgPSBudWxscHRyKTsKICAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0
aW9uPiBsb2FkRGF0YShBUEk6OkRhdGEqLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBT
dHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2Vy
RGF0YSA9IG51bGxwdHIpOwogICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IGxvYWRIVE1MU3Ry
aW5nKGNvbnN0IFN0cmluZyYgaHRtbFN0cmluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBBUEk6
Ok9iamVjdCogdXNlckRhdGEgPSBudWxscHRyKTsKLSAgICB2b2lkIGxvYWRBbHRlcm5hdGVIVE1M
U3RyaW5nKGNvbnN0IFN0cmluZyYgaHRtbFN0cmluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBj
b25zdCBTdHJpbmcmIHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEgPSBudWxs
cHRyKTsKKyAgICB2b2lkIGxvYWRBbHRlcm5hdGVIVE1MU3RyaW5nKGNvbnN0IFN0cmluZyYgaHRt
bFN0cmluZywgY29uc3QgV2ViQ29yZTo6VVJMJiBiYXNlVVJMLCBjb25zdCBXZWJDb3JlOjpVUkwm
IHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEgPSBudWxscHRyKTsKICAgICB2
b2lkIGxvYWRQbGFpblRleHRTdHJpbmcoY29uc3QgU3RyaW5nJiwgQVBJOjpPYmplY3QqIHVzZXJE
YXRhID0gbnVsbHB0cik7CiAgICAgdm9pZCBsb2FkV2ViQXJjaGl2ZURhdGEoQVBJOjpEYXRhKiwg
QVBJOjpPYmplY3QqIHVzZXJEYXRhID0gbnVsbHB0cik7CiAgICAgdm9pZCBuYXZpZ2F0ZVRvUERG
TGlua1dpdGhTaW11bGF0ZWRDbGljayhjb25zdCBTdHJpbmcmIHVybCwgV2ViQ29yZTo6SW50UG9p
bnQgZG9jdW1lbnRQb2ludCwgV2ViQ29yZTo6SW50UG9pbnQgc2NyZWVuUG9pbnQpOwpAQCAtMTI0
OCwxNyArMTI0OCwxNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkQ3JlYXRlTWFpbkZyYW1lKHVp
bnQ2NF90IGZyYW1lSUQpOwogICAgIHZvaWQgZGlkQ3JlYXRlU3ViZnJhbWUodWludDY0X3QgZnJh
bWVJRCk7CiAKLSAgICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0
X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIHVybCwgY29u
c3QgU3RyaW5nJiB1bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEmKTsKLSAgICB2b2lkIGRp
ZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90
IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiwgY29uc3QgVXNl
ckRhdGEmKTsKKyAgICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0
X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpVUkwmJiwgV2ViQ29y
ZTo6VVJMJiYgdW5yZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJEYXRhJik7CisgICAgdm9pZCBkaWRS
ZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBm
cmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlVSTCYmLCBjb25zdCBVc2Vy
RGF0YSYpOwogICAgIHZvaWQgd2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdEZvckZyYW1lKHVpbnQ2
NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgdXJsLCBkb3VibGUgZGVsYXkpOwogICAgIHZvaWQg
ZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlEKTsKLSAgICB2
b2lkIGRpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWlu
dDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIHVybCk7CisgICAgdm9pZCBkaWRDaGFu
Z2VQcm92aXNpb25hbFVSTEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgV2ViQ29yZTo6VVJMJiYpOwogICAgIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBT
dHJpbmcmIHByb3Zpc2lvbmFsVVJMLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29u
c3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZENvbW1pdExvYWRGb3JGcmFtZSh1aW50NjRfdCBm
cmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJv
b2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IGZyYW1lTG9hZFR5cGUs
IGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYsIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1
bWVudCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhh
c0luc2VjdXJlQ29udGVudCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZEZpbmlzaERv
Y3VtZW50TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZSh1aW50
NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFVzZXJEYXRhJik7CiAg
ICAgdm9pZCBkaWRGYWlsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFVzZXJEYXRh
Jik7Ci0gICAgdm9pZCBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUodWludDY0X3Qg
ZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50MzJfdCBzYW1lRG9jdW1lbnROYXZp
Z2F0aW9uVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgVXNlckRhdGEmKTsKKyAgICB2b2lkIGRp
ZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIHVpbnQzMl90IHNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLCBXZWJD
b3JlOjpVUkwmJiwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZENoYW5nZU1haW5Eb2N1
bWVudCh1aW50NjRfdCBmcmFtZUlEKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZVRpdGxlRm9yRnJh
bWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiwgY29uc3QgVXNlckRhdGEmKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW4JKHJldmlzaW9uIDIyMTk4MikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMTE1LDExICsxMTUsMTEgQEAgbWVz
c2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBEaWRDcmVhdGVTdWJmcmFtZSh1aW50NjRfdCBm
cmFtZUlEKQogCiAgICAgIyBGcmFtZSBsb2FkIG1lc3NhZ2VzCi0gICAgRGlkU3RhcnRQcm92aXNp
b25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IFN0cmluZyB1cmwsIFN0cmluZyB1bnJlYWNoYWJsZVVSTCwgV2ViS2l0OjpVc2VyRGF0YSB1c2Vy
RGF0YSkKLSAgICBEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JG
cmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFN0cmluZyB1cmws
IFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCisgICAgRGlkU3RhcnRQcm92aXNpb25hbExvYWRG
b3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6
OlVSTCB1cmwsIFdlYkNvcmU6OlVSTCB1bnJlYWNoYWJsZVVSTCwgV2ViS2l0OjpVc2VyRGF0YSB1
c2VyRGF0YSkKKyAgICBEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRG
b3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6
OlVSTCB1cmwsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgV2lsbFBlcmZvcm1DbGll
bnRSZWRpcmVjdEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyB1cmwsIGRvdWJsZSBk
ZWxheSkKICAgICBEaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQpCi0gICAgRGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlE
LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFN0cmluZyB1cmwpCisgICAgRGlkQ2hhbmdlUHJvdmlz
aW9uYWxVUkxGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IFdlYkNvcmU6OlVSTCB1cmwpCiAgICAgRGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVp
bnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVT
ZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBTdHJpbmcgcHJvdmlzaW9uYWxV
UkwsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IsIFdlYktpdDo6VXNlckRhdGEgdXNlckRh
dGEpCiAgICAgRGlkQ29tbWl0TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgU3RyaW5nIG1pbWVUeXBlLCBib29sIGhhc0N1c3RvbUNvbnRlbnRQcm92
aWRlciwgdWludDMyX3QgbG9hZFR5cGUsIFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyBjZXJ0aWZp
Y2F0ZUluZm8sIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgV2ViS2l0
OjpVc2VyRGF0YSB1c2VyRGF0YSkKICAgICBEaWRGYWlsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZy
YW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJv
ciwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKQEAgLTEzMiw3ICsxMzIsNyBAQCBtZXNzYWdl
cyAtPiBXZWJQYWdlUHJveHkgewogICAgIERpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRGb3JGcmFt
ZSh1aW50NjRfdCBmcmFtZUlELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogICAgIERpZFJ1
bkluc2VjdXJlQ29udGVudEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFdlYktpdDo6VXNlckRh
dGEgdXNlckRhdGEpCiAgICAgRGlkRGV0ZWN0WFNTRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwg
V2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKLSAgICBEaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9u
Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50MzJf
dCB0eXBlLCBTdHJpbmcgdXJsLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQorICAgIERpZFNh
bWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIHVpbnQzMl90IHR5cGUsIFdlYkNvcmU6OlVSTCB1cmwsIFdlYktpdDo6VXNl
ckRhdGEgdXNlckRhdGEpCiAgICAgRGlkQ2hhbmdlTWFpbkRvY3VtZW50KHVpbnQ2NF90IGZyYW1l
SUQpOwogICAgIERpZERlc3Ryb3lOYXZpZ2F0aW9uKHVpbnQ2NF90IG5hdmlnYXRpb25JRCkKIApJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCShyZXZpc2lvbiAy
MjE5ODIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMDksMTIgKzIwOSwxMiBAQCB2b2lkIFdLUGFnZUxvYWRIVE1MU3RyaW5n
V2l0aFVzZXJEYXRhKFdLCiAKIHZvaWQgV0tQYWdlTG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcoV0tQ
YWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIGh0bWxTdHJpbmdSZWYsIFdLVVJMUmVmIGJhc2VV
UkxSZWYsIFdLVVJMUmVmIHVucmVhY2hhYmxlVVJMUmVmKQogewotICAgIHRvSW1wbChwYWdlUmVm
KS0+bG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcodG9XVEZTdHJpbmcoaHRtbFN0cmluZ1JlZiksIHRv
V1RGU3RyaW5nKGJhc2VVUkxSZWYpLCB0b1dURlN0cmluZyh1bnJlYWNoYWJsZVVSTFJlZikpOwor
ICAgIHRvSW1wbChwYWdlUmVmKS0+bG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcodG9XVEZTdHJpbmco
aHRtbFN0cmluZ1JlZiksIFVSTChVUkwoKSwgdG9XVEZTdHJpbmcoYmFzZVVSTFJlZikpLCBVUkwo
VVJMKCksIHRvV1RGU3RyaW5nKHVucmVhY2hhYmxlVVJMUmVmKSkpOwogfQogCiB2b2lkIFdLUGFn
ZUxvYWRBbHRlcm5hdGVIVE1MU3RyaW5nV2l0aFVzZXJEYXRhKFdLUGFnZVJlZiBwYWdlUmVmLCBX
S1N0cmluZ1JlZiBodG1sU3RyaW5nUmVmLCBXS1VSTFJlZiBiYXNlVVJMUmVmLCBXS1VSTFJlZiB1
bnJlYWNoYWJsZVVSTFJlZiwgV0tUeXBlUmVmIHVzZXJEYXRhUmVmKQogewotICAgIHRvSW1wbChw
YWdlUmVmKS0+bG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcodG9XVEZTdHJpbmcoaHRtbFN0cmluZ1Jl
ZiksIHRvV1RGU3RyaW5nKGJhc2VVUkxSZWYpLCB0b1dURlN0cmluZyh1bnJlYWNoYWJsZVVSTFJl
ZiksIHRvSW1wbCh1c2VyRGF0YVJlZikpOworICAgIHRvSW1wbChwYWdlUmVmKS0+bG9hZEFsdGVy
bmF0ZUhUTUxTdHJpbmcodG9XVEZTdHJpbmcoaHRtbFN0cmluZ1JlZiksIFVSTChVUkwoKSwgdG9X
VEZTdHJpbmcoYmFzZVVSTFJlZikpLCBVUkwoVVJMKCksIHRvV1RGU3RyaW5nKHVucmVhY2hhYmxl
VVJMUmVmKSksIHRvSW1wbCh1c2VyRGF0YVJlZikpOwogfQogCiB2b2lkIFdLUGFnZUxvYWRQbGFp
blRleHRTdHJpbmcoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIHBsYWluVGV4dFN0cmlu
Z1JlZikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5n
Q29udGV4dENvbnRyb2xsZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQkocmV2aXNpb24gMjIx
OTA3KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250
ZXh0Q29udHJvbGxlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMTU3LDcgKzE1Nyw3IEBAIC0gKHZv
aWQpbG9hZEhUTUxTdHJpbmc6KE5TU3RyaW5nICopSFRNTFMKIAogLSAodm9pZClsb2FkQWx0ZXJu
YXRlSFRNTFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgYmFzZVVSTDooTlNVUkwgKiliYXNlVVJM
IGZvclVucmVhY2hhYmxlVVJMOihOU1VSTCAqKXVucmVhY2hhYmxlVVJMCiB7Ci0gICAgX3BhZ2Ut
PmxvYWRBbHRlcm5hdGVIVE1MU3RyaW5nKHN0cmluZywgW2Jhc2VVUkwgX3dlYl9vcmlnaW5hbERh
dGFBc1dURlN0cmluZ10sIFt1bnJlYWNoYWJsZVVSTCBfd2ViX29yaWdpbmFsRGF0YUFzV1RGU3Ry
aW5nXSk7CisgICAgX3BhZ2UtPmxvYWRBbHRlcm5hdGVIVE1MU3RyaW5nKHN0cmluZywgYmFzZVVS
TCwgdW5yZWFjaGFibGVVUkwpOwogfQogCiAtICh2b2lkKWxvYWREYXRhOihOU0RhdGEgKilkYXRh
IE1JTUVUeXBlOihOU1N0cmluZyAqKU1JTUVUeXBlIHRleHRFbmNvZGluZ05hbWU6KE5TU3RyaW5n
ICopZW5jb2RpbmdOYW1lIGJhc2VVUkw6KE5TVVJMICopYmFzZVVSTApJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0
ZS5oCShyZXZpc2lvbiAyMjE5ODIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjEsNiArMTYxLDEw
IEBAIHN0cnVjdCBVSUVkZ2VJbnNldHM7CiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3
ZWJWaWV3IGRpZENsaWNrQXV0b0ZpbGxCdXR0b25XaXRoVXNlckluZm86KGlkIDxOU1NlY3VyZUNv
ZGluZz4pdXNlckluZm8gV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSkpOwogLSAo
dm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBnZXRUb29sYmFyc0FyZVZpc2libGVX
aXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIgV0tf
QVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSkpOwogLSAodm9pZClfd2ViVmlldzooV0tX
ZWJWaWV3ICopd2ViVmlldyBzYXZlRGF0YVRvRmlsZTooTlNEYXRhICopZGF0YSBzdWdnZXN0ZWRG
aWxlbmFtZTooTlNTdHJpbmcgKilzdWdnZXN0ZWRGaWxlbmFtZSBtaW1lVHlwZTooTlNTdHJpbmcg
KiltaW1lVHlwZSBvcmlnaW5hdGluZ1VSTDooTlNVUkwgKil1cmwgV0tfQVBJX0FWQUlMQUJMRSht
YWNvc3goV0tfTUFDX1RCQSkpOworLSAoQ0dGbG9hdClfd2ViVmlld0hlYWRlckhlaWdodDooV0tX
ZWJWaWV3ICopd2ViVmlldyBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSk7Cist
IChDR0Zsb2F0KV93ZWJWaWV3Rm9vdGVySGVpZ2h0OihXS1dlYlZpZXcgKil3ZWJWaWV3IFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpKTsKKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgZHJhd0hlYWRlckluUmVjdDooQ0dSZWN0KXJlY3QgZm9yUGFnZVdpdGhU
aXRsZTooTlNTdHJpbmcgKil0aXRsZSBVUkw6KE5TVVJMICopdXJsIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3N4KFdLX01BQ19UQkEpKTsKKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZp
ZXcgZHJhd0Zvb3RlckluUmVjdDooQ0dSZWN0KXJlY3QgZm9yUGFnZVdpdGhUaXRsZTooTlNTdHJp
bmcgKil0aXRsZSBVUkw6KE5TVVJMICopdXJsIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01B
Q19UQkEpKTsKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVxdWVzdE5v
dGlmaWNhdGlvblBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbjooV0tTZWN1cml0eU9yaWdpbiAq
KXNlY3VyaXR5T3JpZ2luIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCkpZGVjaXNpb25I
YW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpKTsKIC0gKHZvaWQpX3dl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYnZpZXcgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQ6KF9XS0hp
dFRlc3RSZXN1bHQgKiloaXRUZXN0UmVzdWx0IHdpdGhGbGFnczooTlNFdmVudE1vZGlmaWVyRmxh
Z3MpZmxhZ3MgdXNlckluZm86KGlkIDxOU1NlY3VyZUNvZGluZz4pdXNlckluZm87CiAtICh2b2lk
KV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEV4Y2VlZEJhY2tncm91bmRSZXNvdXJj
ZUxpbWl0V2hpbGVJbkZvcmVncm91bmQ6KF9XS1Jlc291cmNlTGltaXQpbGltaXQgV0tfQVBJX0FW
QUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSkpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCShyZXZpc2lvbiAyMjE5MDcpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0zODQxLDcgKzM4NDEsNyBAQCAtIChOU1VSTCAqKV91bnJlYWNoYWJsZVVSTAogCiAtICh2
b2lkKV9sb2FkQWx0ZXJuYXRlSFRNTFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgYmFzZVVSTDoo
TlNVUkwgKiliYXNlVVJMIGZvclVucmVhY2hhYmxlVVJMOihOU1VSTCAqKXVucmVhY2hhYmxlVVJM
CiB7Ci0gICAgX3BhZ2UtPmxvYWRBbHRlcm5hdGVIVE1MU3RyaW5nKHN0cmluZywgW2Jhc2VVUkwg
X3dlYl9vcmlnaW5hbERhdGFBc1dURlN0cmluZ10sIFt1bnJlYWNoYWJsZVVSTCBfd2ViX29yaWdp
bmFsRGF0YUFzV1RGU3RyaW5nXSk7CisgICAgX3BhZ2UtPmxvYWRBbHRlcm5hdGVIVE1MU3RyaW5n
KHN0cmluZywgYmFzZVVSTCwgdW5yZWFjaGFibGVVUkwpOwogfQogCiAtIChXS05hdmlnYXRpb24g
KilfbG9hZERhdGE6KE5TRGF0YSAqKWRhdGEgTUlNRVR5cGU6KE5TU3RyaW5nICopTUlNRVR5cGUg
Y2hhcmFjdGVyRW5jb2RpbmdOYW1lOihOU1N0cmluZyAqKWNoYXJhY3RlckVuY29kaW5nTmFtZSBi
YXNlVVJMOihOU1VSTCAqKWJhc2VVUkwgdXNlckRhdGE6KGlkKXVzZXJEYXRhCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCShyZXZpc2lvbiAyMjE5ODIp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEwNSw2ICsxMDUsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBzZXRXaW5k
b3dGcmFtZShXZWJQYWdlUHJveHkmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBmaW5hbDsK
ICAgICAgICAgdm9pZCB3aW5kb3dGcmFtZShXZWJQYWdlUHJveHkmLCBGdW5jdGlvbjx2b2lkKFdl
YkNvcmU6OkZsb2F0UmVjdCk+JiYpIGZpbmFsOwogICAgICAgICB2b2lkIGRpZE5vdEhhbmRsZVdo
ZWVsRXZlbnQoV2ViUGFnZVByb3h5KiwgY29uc3QgTmF0aXZlV2ViV2hlZWxFdmVudCYpIGZpbmFs
OworICAgICAgICBmbG9hdCBoZWFkZXJIZWlnaHQoV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94
eSYpIGZpbmFsOworICAgICAgICBmbG9hdCBmb290ZXJIZWlnaHQoV2ViUGFnZVByb3h5JiwgV2Vi
RnJhbWVQcm94eSYpIGZpbmFsOworICAgICAgICB2b2lkIGRyYXdIZWFkZXIoV2ViUGFnZVByb3h5
JiwgV2ViRnJhbWVQcm94eSYsIFdlYkNvcmU6OkZsb2F0UmVjdCYmKSBmaW5hbDsKKyAgICAgICAg
dm9pZCBkcmF3Rm9vdGVyKFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmLCBXZWJDb3JlOjpG
bG9hdFJlY3QmJikgZmluYWw7CiAgICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0
aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3h5JiwgQVBJOjpTZWN1cml0eU9yaWdpbiYs
IEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwogICAgICAgICB2b2lkIGhhbmRsZUF1dG9w
bGF5RXZlbnQoV2ViUGFnZVByb3h5JiwgV2ViQ29yZTo6QXV0b3BsYXlFdmVudCwgT3B0aW9uU2V0
PFdlYkNvcmU6OkF1dG9wbGF5RXZlbnRGbGFncz4pIGZpbmFsOwogICAgICAgICB2b2lkIHVuYXZh
aWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZChXZWJQYWdlUHJveHkmLCBXS1BsdWdpblVuYXZhaWxh
YmlsaXR5UmVhc29uLCBBUEk6OkRpY3Rpb25hcnkmKSBmaW5hbDsKQEAgLTE2MCwxMiArMTY0LDE2
IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgd2ViVmlld1J1bk1vZGFsIDogMTsKICAgICAgICAg
Ym9vbCB3ZWJWaWV3VGFrZUZvY3VzIDogMTsKICAgICAgICAgYm9vbCB3ZWJWaWV3RGlkU2Nyb2xs
IDogMTsKKyAgICAgICAgYm9vbCB3ZWJWaWV3SGVhZGVySGVpZ2h0IDogMTsKKyAgICAgICAgYm9v
bCB3ZWJWaWV3Rm9vdGVySGVpZ2h0IDogMTsKICAgICAgICAgYm9vbCB3ZWJWaWV3U2V0UmVzaXph
YmxlIDogMTsKICAgICAgICAgYm9vbCB3ZWJWaWV3U2V0V2luZG93RnJhbWUgOiAxOwogICAgICAg
ICBib29sIHdlYlZpZXdEaWROb3RIYW5kbGVXaGVlbEV2ZW50IDogMTsKICAgICAgICAgYm9vbCB3
ZWJWaWV3SGFuZGxlQXV0b3BsYXlFdmVudFdpdGhGbGFncyA6IDE7CiAgICAgICAgIGJvb2wgd2Vi
Vmlld1VuYXZhaWxhYmxlUGx1Z0luQnV0dG9uQ2xpY2tlZCA6IDE7CiAgICAgICAgIGJvb2wgd2Vi
Vmlld0RpZENsaWNrQXV0b0ZpbGxCdXR0b25XaXRoVXNlckluZm8gOiAxOworICAgICAgICBib29s
IHdlYlZpZXdEcmF3SGVhZGVySW5SZWN0Rm9yUGFnZVdpdGhUaXRsZVVSTCA6IDE7CisgICAgICAg
IGJvb2wgd2ViVmlld0RyYXdGb290ZXJJblJlY3RGb3JQYWdlV2l0aFRpdGxlVVJMIDogMTsKICAg
ICAgICAgYm9vbCB3ZWJWaWV3R2V0V2luZG93RnJhbWVXaXRoQ29tcGxldGlvbkhhbmRsZXIgOiAx
OwogICAgICAgICBib29sIHdlYlZpZXdNb3VzZURpZE1vdmVPdmVyRWxlbWVudFdpdGhGbGFnc1Vz
ZXJJbmZvIDogMTsKICAgICAgICAgYm9vbCB3ZWJWaWV3R2V0VG9vbGJhcnNBcmVWaXNpYmxlV2l0
aENvbXBsZXRpb25IYW5kbGVyIDogMTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1VJRGVsZWdhdGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvVUlEZWxlZ2F0ZS5tbQkocmV2aXNpb24gMjIxOTgyKQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTIwLDYgKzEy
MCwxMCBAQCB2b2lkIFVJRGVsZWdhdGU6OnNldERlbGVnYXRlKGlkIDxXS1VJRGVsCiAgICAgbV9k
ZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1VuYXZhaWxhYmxlUGx1Z0luQnV0dG9uQ2xpY2tlZCA9IFtk
ZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnVuYXZhaWxhYmxl
UGx1Z0luQnV0dG9uQ2xpY2tlZFdpdGhSZWFzb246cGx1Z0luSW5mbzopXTsKICAgICBtX2RlbGVn
YXRlTWV0aG9kcy53ZWJWaWV3SGFuZGxlQXV0b3BsYXlFdmVudFdpdGhGbGFncyA9IFtkZWxlZ2F0
ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmhhbmRsZUF1dG9wbGF5RXZl
bnQ6d2l0aEZsYWdzOildOwogICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWRDbGlja0F1
dG9GaWxsQnV0dG9uV2l0aFVzZXJJbmZvID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3IoX3dlYlZpZXc6ZGlkQ2xpY2tBdXRvRmlsbEJ1dHRvbldpdGhVc2VySW5mbzopXTsK
KyAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RHJhd0hlYWRlckluUmVjdEZvclBhZ2VXaXRo
VGl0bGVVUkwgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmll
dzpkcmF3SGVhZGVySW5SZWN0OmZvclBhZ2VXaXRoVGl0bGU6VVJMOildOworICAgIG1fZGVsZWdh
dGVNZXRob2RzLndlYlZpZXdEcmF3Rm9vdGVySW5SZWN0Rm9yUGFnZVdpdGhUaXRsZVVSTCA9IFtk
ZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmRyYXdGb290ZXJJ
blJlY3Q6Zm9yUGFnZVdpdGhUaXRsZTpVUkw6KV07CisgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2Vi
Vmlld0hlYWRlckhlaWdodCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KF93ZWJWaWV3SGVhZGVySGVpZ2h0OildOworICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdG
b290ZXJIZWlnaHQgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2Vi
Vmlld0Zvb3RlckhlaWdodDopXTsKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3TW91c2VE
aWRNb3ZlT3ZlckVsZW1lbnRXaXRoRmxhZ3NVc2VySW5mbyA9IFtkZWxlZ2F0ZSByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50OndpdGhG
bGFnczp1c2VySW5mbzopXTsKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkRXhjZWVk
QmFja2dyb3VuZFJlc291cmNlTGltaXRXaGlsZUluRm9yZWdyb3VuZCA9IFtkZWxlZ2F0ZSByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmRpZEV4Y2VlZEJhY2tncm91bmRSZXNv
dXJjZUxpbWl0V2hpbGVJbkZvcmVncm91bmQ6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2Vi
Vmlld1NhdmVEYXRhVG9GaWxlU3VnZ2VzdGVkRmlsZW5hbWVNaW1lVHlwZU9yaWdpbmF0aW5nVVJM
ID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6c2F2ZURh
dGFUb0ZpbGU6c3VnZ2VzdGVkRmlsZW5hbWU6bWltZVR5cGU6b3JpZ2luYXRpbmdVUkw6KV07CkBA
IC00MjMsNiArNDI3LDU0IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bk1vZGFsKFdl
YlAKICAgICBbKGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPilkZWxlZ2F0ZSBfd2ViVmlld1J1bk1v
ZGFsOm1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXddOwogfQogCitmbG9hdCBVSURlbGVnYXRlOjpVSUNs
aWVudDo6aGVhZGVySGVpZ2h0KFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmIHdlYkZyYW1l
UHJveHkpCit7CisgICAgaWYgKCFtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmll
d0hlYWRlckhlaWdodCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgYXV0byBkZWxlZ2F0
ZSA9IG1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlLmdldCgpOworICAgIGlmICghZGVsZWdhdGUpCisg
ICAgICAgIHJldHVybiAwOworICAgIAorICAgIHJldHVybiBbKGlkIDxXS1VJRGVsZWdhdGVQcml2
YXRlPilkZWxlZ2F0ZSBfd2ViVmlld0hlYWRlckhlaWdodDptX3VpRGVsZWdhdGUubV93ZWJWaWV3
XTsKK30KKworZmxvYXQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmZvb3RlckhlaWdodChXZWJQYWdl
UHJveHkmLCBXZWJGcmFtZVByb3h5JikKK3sKKyAgICBpZiAoIW1fdWlEZWxlZ2F0ZS5tX2RlbGVn
YXRlTWV0aG9kcy53ZWJWaWV3Rm9vdGVySGVpZ2h0KQorICAgICAgICByZXR1cm4gMDsKKyAgICAK
KyAgICBhdXRvIGRlbGVnYXRlID0gbV91aURlbGVnYXRlLm1fZGVsZWdhdGUuZ2V0KCk7CisgICAg
aWYgKCFkZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgcmV0dXJuIFsoaWQg
PFdLVUlEZWxlZ2F0ZVByaXZhdGU+KWRlbGVnYXRlIF93ZWJWaWV3Rm9vdGVySGVpZ2h0Om1fdWlE
ZWxlZ2F0ZS5tX3dlYlZpZXddOworfQorCit2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpkcmF3
SGVhZGVyKFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBXZWJDb3JlOjpGbG9h
dFJlY3QmJiByZWN0KQoreworICAgIGlmICghbV91aURlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2Rz
LndlYlZpZXdEcmF3SGVhZGVySW5SZWN0Rm9yUGFnZVdpdGhUaXRsZVVSTCkKKyAgICAgICAgcmV0
dXJuOworICAgIAorICAgIGF1dG8gZGVsZWdhdGUgPSBtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZS5n
ZXQoKTsKKyAgICBpZiAoIWRlbGVnYXRlKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgWyhp
ZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3dlYlZpZXc6bV91aURlbGVnYXRlLm1f
d2ViVmlldyBkcmF3SGVhZGVySW5SZWN0OnJlY3QgZm9yUGFnZVdpdGhUaXRsZTpmcmFtZS50aXRs
ZSgpIFVSTDpmcmFtZS51cmwoKV07Cit9CisKK3ZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmRy
YXdGb290ZXIoV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSYgZnJhbWUsIFdlYkNvcmU6OkZs
b2F0UmVjdCYmIHJlY3QpCit7CisgICAgaWYgKCFtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhv
ZHMud2ViVmlld0RyYXdGb290ZXJJblJlY3RGb3JQYWdlV2l0aFRpdGxlVVJMKQorICAgICAgICBy
ZXR1cm47CisgICAgCisgICAgYXV0byBkZWxlZ2F0ZSA9IG1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRl
LmdldCgpOworICAgIGlmICghZGVsZWdhdGUpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBb
KGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPilkZWxlZ2F0ZSBfd2ViVmlldzptX3VpRGVsZWdhdGUu
bV93ZWJWaWV3IGRyYXdGb290ZXJJblJlY3Q6cmVjdCBmb3JQYWdlV2l0aFRpdGxlOmZyYW1lLnRp
dGxlKCkgVVJMOmZyYW1lLnVybCgpXTsKK30KKwogdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6
cGFnZURpZFNjcm9sbChXZWJQYWdlUHJveHkqKQogewogICAgIGlmICghbV91aURlbGVnYXRlLm1f
ZGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWRTY3JvbGwpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XS1JlbG9hZEZyYW1lRXJyb3JSZWNvdmVyeUF0dGVtcHRlci5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1JlbG9hZEZyYW1lRXJy
b3JSZWNvdmVyeUF0dGVtcHRlci5tbQkocmV2aXNpb24gMjIxOTA3KQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV0tSZWxvYWRGcmFtZUVycm9yUmVjb3ZlcnlBdHRlbXB0ZXIubW0J
KHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAgLSAoQk9PTClhdHRlbXB0UmVjb3ZlcnkK
ICAgICBpZiAoIXdlYkZyYW1lUHJveHkpCiAgICAgICAgIHJldHVybiBOTzsKIAotICAgIHdlYkZy
YW1lUHJveHktPmxvYWRVUkwoX3VybFN0cmluZyk7CisgICAgd2ViRnJhbWVQcm94eS0+bG9hZFVS
TChXZWJDb3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIF91cmxTdHJpbmcpKTsKICAgICByZXR1cm4g
WUVTOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1w
bC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3
SW1wbC5tbQkocmV2aXNpb24gMjIxOTA3KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViVmlld0ltcGwubW0JKHdvcmtpbmcgY29weSkKQEAgLTE2MjQsNyArMTYyNCw3IEBAIGJv
b2wgV2ViVmlld0ltcGw6OmNhbkNoYW5nZUZyYW1lTGF5b3V0KFcKIAogTlNQcmludE9wZXJhdGlv
biAqV2ViVmlld0ltcGw6OnByaW50T3BlcmF0aW9uV2l0aFByaW50SW5mbyhOU1ByaW50SW5mbyAq
cHJpbnRJbmZvLCBXZWJGcmFtZVByb3h5JiBmcmFtZSkKIHsKLSAgICBMT0coUHJpbnRpbmcsICJD
cmVhdGluZyBhbiBOU1ByaW50T3BlcmF0aW9uIGZvciBmcmFtZSAnJXMnIiwgZnJhbWUudXJsKCku
dXRmOCgpLmRhdGEoKSk7CisgICAgTE9HKFByaW50aW5nLCAiQ3JlYXRpbmcgYW4gTlNQcmludE9w
ZXJhdGlvbiBmb3IgZnJhbWUgJyVzJyIsIGZyYW1lLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOwogCiAgICAgLy8gRklYTUU6IElmIHRoZSBmcmFtZSBjYW5ub3QgYmUgcHJpbnRlZCAoZS5n
LiBpZiBpdCBjb250YWlucyBhbiBlbmNyeXB0ZWQgUERGIHRoYXQgZGlzYWxsb3dzCiAgICAgLy8g
cHJpbnRpbmcpLCB0aGlzIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gbmlsLgpJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiAyMjE5MDcpCisrKyBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNzksMTQgKzI3OSwxMyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERpZFJlCiAgICAgICAgIHJldHVybjsKIAogICAgIFdlYkRvY3VtZW50TG9h
ZGVyJiBkb2N1bWVudExvYWRlciA9IHN0YXRpY19jYXN0PFdlYkRvY3VtZW50TG9hZGVyJj4oKm1f
ZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5wcm92aXNpb25hbERvY3VtZW50TG9hZGVyKCkp
OwotICAgIGNvbnN0IFN0cmluZyYgdXJsID0gZG9jdW1lbnRMb2FkZXIudXJsKCkuc3RyaW5nKCk7
CiAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiB1c2VyRGF0YTsKIAogICAgIC8vIE5vdGlmeSB0aGUg
YnVuZGxlIGNsaWVudC4KICAgICB3ZWJQYWdlLT5pbmplY3RlZEJ1bmRsZUxvYWRlckNsaWVudCgp
LmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKCp3ZWJQ
YWdlLCAqbV9mcmFtZSwgdXNlckRhdGEpOwogCiAgICAgLy8gTm90aWZ5IHRoZSBVSVByb2Nlc3Mu
Ci0gICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCks
IGRvY3VtZW50TG9hZGVyLm5hdmlnYXRpb25JRCgpLCB1cmwsIFVzZXJEYXRhKFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdl
dCgpKSkpOworICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUmVj
ZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUobV9mcmFtZS0+ZnJh
bWVJRCgpLCBkb2N1bWVudExvYWRlci5uYXZpZ2F0aW9uSUQoKSwgZG9jdW1lbnRMb2FkZXIudXJs
KCksIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hh
bmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpOwogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERpZENoYW5nZVByb3Zpc2lvbmFsVVJMKCkKQEAgLTI5Niw3ICsyOTUs
NyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoCiAgICAgICAgIHJl
dHVybjsKIAogICAgIFdlYkRvY3VtZW50TG9hZGVyJiBkb2N1bWVudExvYWRlciA9IHN0YXRpY19j
YXN0PFdlYkRvY3VtZW50TG9hZGVyJj4oKm1fZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5w
cm92aXNpb25hbERvY3VtZW50TG9hZGVyKCkpOwotICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6RGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZShtX2ZyYW1lLT5m
cmFtZUlEKCksIGRvY3VtZW50TG9hZGVyLm5hdmlnYXRpb25JRCgpLCBkb2N1bWVudExvYWRlci51
cmwoKS5zdHJpbmcoKSkpOworICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIGRv
Y3VtZW50TG9hZGVyLm5hdmlnYXRpb25JRCgpLCBkb2N1bWVudExvYWRlci51cmwoKSkpOwogfQog
CiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENhbmNlbENsaWVudFJlZGly
ZWN0KCkKQEAgLTMzOSw3ICszMzgsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaERpZENoCiAgICAgd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVMb2FkZXJDbGllbnQoKS5kaWRT
YW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUoKndlYlBhZ2UsICptX2ZyYW1lLCBTYW1lRG9j
dW1lbnROYXZpZ2F0aW9uQW5jaG9yTmF2aWdhdGlvbiwgdXNlckRhdGEpOwogCiAgICAgLy8gTm90
aWZ5IHRoZSBVSVByb2Nlc3MuCi0gICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpEaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgp
LCBuYXZpZ2F0aW9uSUQsIFNhbWVEb2N1bWVudE5hdmlnYXRpb25BbmNob3JOYXZpZ2F0aW9uLCBt
X2ZyYW1lLT5jb3JlRnJhbWUoKS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCksIFVzZXJEYXRh
KFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRh
dGEuZ2V0KCkpLmdldCgpKSkpOworICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6RGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQo
KSwgbmF2aWdhdGlvbklELCBTYW1lRG9jdW1lbnROYXZpZ2F0aW9uQW5jaG9yTmF2aWdhdGlvbiwg
bV9mcmFtZS0+Y29yZUZyYW1lKCktPmRvY3VtZW50KCktPnVybCgpLCBVc2VyRGF0YShXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgp
KS5nZXQoKSkpKTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRD
aGFuZ2VNYWluRG9jdW1lbnQoKQpAQCAtMzY1LDcgKzM2NCw3IEBAIHZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGlkUHUKICAgICB3ZWJQYWdlLT5pbmplY3RlZEJ1bmRsZUxvYWRl
ckNsaWVudCgpLmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSgqd2ViUGFnZSwgKm1f
ZnJhbWUsIFNhbWVEb2N1bWVudE5hdmlnYXRpb25TZXNzaW9uU3RhdGVQdXNoLCB1c2VyRGF0YSk7
CiAKICAgICAvLyBOb3RpZnkgdGhlIFVJUHJvY2Vzcy4KLSAgICB3ZWJQYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZShtX2Zy
YW1lLT5mcmFtZUlEKCksIG5hdmlnYXRpb25JRCwgU2FtZURvY3VtZW50TmF2aWdhdGlvblNlc3Np
b25TdGF0ZVB1c2gsIG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5kb2N1bWVudCgpLT51cmwoKS5zdHJp
bmcoKSwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1Rv
SGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSk7CisgICAgd2ViUGFnZS0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpEaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUobV9m
cmFtZS0+ZnJhbWVJRCgpLCBuYXZpZ2F0aW9uSUQsIFNhbWVEb2N1bWVudE5hdmlnYXRpb25TZXNz
aW9uU3RhdGVQdXNoLCBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+ZG9jdW1lbnQoKS0+dXJsKCksIFVz
ZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXMo
dXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpOwogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERpZFJlcGxhY2VTdGF0ZVdpdGhpblBhZ2UoKQpAQCAtMzgyLDcgKzM4MSw3IEBA
IHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmUKICAgICB3ZWJQYWdlLT5p
bmplY3RlZEJ1bmRsZUxvYWRlckNsaWVudCgpLmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JG
cmFtZSgqd2ViUGFnZSwgKm1fZnJhbWUsIFNhbWVEb2N1bWVudE5hdmlnYXRpb25TZXNzaW9uU3Rh
dGVSZXBsYWNlLCB1c2VyRGF0YSk7CiAKICAgICAvLyBOb3RpZnkgdGhlIFVJUHJvY2Vzcy4KLSAg
ICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFNhbWVEb2N1bWVudE5h
dmlnYXRpb25Gb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIG5hdmlnYXRpb25JRCwgU2FtZURv
Y3VtZW50TmF2aWdhdGlvblNlc3Npb25TdGF0ZVJlcGxhY2UsIG1fZnJhbWUtPmNvcmVGcmFtZSgp
LT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKSwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSk7
CisgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRTYW1lRG9jdW1l
bnROYXZpZ2F0aW9uRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBuYXZpZ2F0aW9uSUQsIFNh
bWVEb2N1bWVudE5hdmlnYXRpb25TZXNzaW9uU3RhdGVSZXBsYWNlLCBtX2ZyYW1lLT5jb3JlRnJh
bWUoKS0+ZG9jdW1lbnQoKS0+dXJsKCksIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpOwogfQog
CiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFBvcFN0YXRlV2l0aGluUGFn
ZSgpCkBAIC0zOTksNyArMzk4LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEaWRQbwogICAgIHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlTG9hZGVyQ2xpZW50KCkuZGlkU2Ft
ZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKCp3ZWJQYWdlLCAqbV9mcmFtZSwgU2FtZURvY3Vt
ZW50TmF2aWdhdGlvblNlc3Npb25TdGF0ZVBvcCwgdXNlckRhdGEpOwogCiAgICAgLy8gTm90aWZ5
IHRoZSBVSVByb2Nlc3MuCi0gICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpEaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBu
YXZpZ2F0aW9uSUQsIFNhbWVEb2N1bWVudE5hdmlnYXRpb25TZXNzaW9uU3RhdGVQb3AsIG1fZnJh
bWUtPmNvcmVGcmFtZSgpLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKSwgVXNlckRhdGEoV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5n
ZXQoKSkuZ2V0KCkpKSk7CisgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpEaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBu
YXZpZ2F0aW9uSUQsIFNhbWVEb2N1bWVudE5hdmlnYXRpb25TZXNzaW9uU3RhdGVQb3AsIG1fZnJh
bWUtPmNvcmVGcmFtZSgpLT5kb2N1bWVudCgpLT51cmwoKSwgVXNlckRhdGEoV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0
KCkpKSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbENsb3Nl
KCkKQEAgLTQyMywxMyArNDIyLDEzIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGlkU3QKICAgICB3ZWJQYWdlLT5zYW5kYm94RXh0ZW5zaW9uVHJhY2tlcigpLmRpZFN0YXJ0
UHJvdmlzaW9uYWxMb2FkKG1fZnJhbWUpOwogCiAgICAgV2ViRG9jdW1lbnRMb2FkZXImIHByb3Zp
c2lvbmFsTG9hZGVyID0gc3RhdGljX2Nhc3Q8V2ViRG9jdW1lbnRMb2FkZXImPigqbV9mcmFtZS0+
Y29yZUZyYW1lKCktPmxvYWRlcigpLnByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIoKSk7Ci0gICAg
Y29uc3QgU3RyaW5nJiB1cmwgPSBwcm92aXNpb25hbExvYWRlci51cmwoKS5zdHJpbmcoKTsKKyAg
ICBhdXRvJiB1cmwgPSBwcm92aXNpb25hbExvYWRlci51cmwoKTsKICAgICBSZWZQdHI8QVBJOjpP
YmplY3Q+IHVzZXJEYXRhOwogCiAgICAgLy8gTm90aWZ5IHRoZSBidW5kbGUgY2xpZW50LgogICAg
IHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlTG9hZGVyQ2xpZW50KCkuZGlkU3RhcnRQcm92aXNpb25h
bExvYWRGb3JGcmFtZSgqd2ViUGFnZSwgKm1fZnJhbWUsIHVzZXJEYXRhKTsKIAotICAgIFN0cmlu
ZyB1bnJlYWNoYWJsZVVSTCA9IHByb3Zpc2lvbmFsTG9hZGVyLnVucmVhY2hhYmxlVVJMKCkuc3Ry
aW5nKCk7CisgICAgYXV0byYgdW5yZWFjaGFibGVVUkwgPSBwcm92aXNpb25hbExvYWRlci51bnJl
YWNoYWJsZVVSTCgpOwogCiAgICAgLy8gTm90aWZ5IHRoZSBVSVByb2Nlc3MuCiAgICAgd2ViUGFn
ZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgcHJvdmlzaW9uYWxMb2FkZXIubmF2aWdhdGlvbklE
KCksIHVybCwgdW5yZWFjaGFibGVVUkwsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpOwpJbmRl
eDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlz
aW9uIDIyMTkwNykKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTc2LDEzICsxMTc2LDEzIEBAIHZvaWQgV2ViUGFnZTo6
c2VuZENsb3NlKCkKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNsb3NlUGFnZShm
YWxzZSkpOwogfQogCi12b2lkIFdlYlBhZ2U6OmxvYWRVUkxJbkZyYW1lKGNvbnN0IFN0cmluZyYg
dXJsLCB1aW50NjRfdCBmcmFtZUlEKQordm9pZCBXZWJQYWdlOjpsb2FkVVJMSW5GcmFtZShXZWJD
b3JlOjpVUkwmJiB1cmwsIHVpbnQ2NF90IGZyYW1lSUQpCiB7CiAgICAgV2ViRnJhbWUqIGZyYW1l
ID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgaWYgKCFm
cmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIo
KS5sb2FkKEZyYW1lTG9hZFJlcXVlc3QoKmZyYW1lLT5jb3JlRnJhbWUoKSwgUmVzb3VyY2VSZXF1
ZXN0KFVSTChVUkwoKSwgdXJsKSksIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3Vs
ZE5vdEFsbG93KSk7CisgICAgZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5sb2FkKEZyYW1l
TG9hZFJlcXVlc3QoKmZyYW1lLT5jb3JlRnJhbWUoKSwgUmVzb3VyY2VSZXF1ZXN0KHVybCksIFNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93KSk7CiB9CiAKICNpZiAh
UExBVEZPUk0oQ09DT0EpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCShyZXZpc2lvbiAyMjE5MDcpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOTUsNyArMTA5NSw3IEBAIHBy
aXZhdGU6CiAgICAgc3RhdGljIGJvb2wgc2Nyb2xsKFdlYkNvcmU6OlBhZ2UqLCBXZWJDb3JlOjpT
Y3JvbGxEaXJlY3Rpb24sIFdlYkNvcmU6OlNjcm9sbEdyYW51bGFyaXR5KTsKICAgICBzdGF0aWMg
Ym9vbCBsb2dpY2FsU2Nyb2xsKFdlYkNvcmU6OlBhZ2UqLCBXZWJDb3JlOjpTY3JvbGxMb2dpY2Fs
RGlyZWN0aW9uLCBXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eSk7CiAKLSAgICB2b2lkIGxvYWRV
UkxJbkZyYW1lKGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90IGZyYW1lSUQpOworICAgIHZvaWQgbG9h
ZFVSTEluRnJhbWUoV2ViQ29yZTo6VVJMJiYsIHVpbnQ2NF90IGZyYW1lSUQpOwogCiAgICAgZW51
bSBjbGFzcyBXYXNSZXN0b3JlZEJ5QVBJUmVxdWVzdCB7IE5vLCBZZXMgfTsKICAgICB2b2lkIHJl
c3RvcmVTZXNzaW9uSW50ZXJuYWwoY29uc3QgVmVjdG9yPEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0
ZT4mLCBXYXNSZXN0b3JlZEJ5QVBJUmVxdWVzdCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIy
MTkwNykKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTEzMiw3ICsxMzIsNyBAQCBtZXNzYWdlcyAtPiBXZWJQ
YWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBHb1RvQmFja0ZvcndhcmRJdGVtKHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgdWludDY0X3QgYmFja0ZvcndhcmRJdGVtSUQpCiAgICAgVHJ5UmVzdG9yZVNj
cm9sbFBvc2l0aW9uKCkKIAotICAgIExvYWRVUkxJbkZyYW1lKFN0cmluZyB1cmwsIHVpbnQ2NF90
IGZyYW1lSUQpCisgICAgTG9hZFVSTEluRnJhbWUoV2ViQ29yZTo6VVJMIHVybCwgdWludDY0X3Qg
ZnJhbWVJRCkKICAgICBMb2FkUmVxdWVzdChzdHJ1Y3QgV2ViS2l0OjpMb2FkUGFyYW1ldGVycyBs
b2FkUGFyYW1ldGVycykKICAgICBMb2FkRGF0YShzdHJ1Y3QgV2ViS2l0OjpMb2FkUGFyYW1ldGVy
cyBsb2FkUGFyYW1ldGVycykKICAgICBMb2FkU3RyaW5nKHN0cnVjdCBXZWJLaXQ6OkxvYWRQYXJh
bWV0ZXJzIGxvYWRQYXJhbWV0ZXJzKQpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjIyMDA5KQorKysgVG9vbHMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTctMDktMTMgIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgV0tVSURlbGVn
YXRlUHJpdmF0ZSBlcXVpdmFsZW50IG9mIFdLUGFnZVVJQ2xpZW50J3MgZHJhd0hlYWRlciwgZHJh
d0Zvb3RlciwgaGVhZGVySGVpZ2h0LCBhbmQgZm9vdGVySGVpZ2h0CisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY4ODkKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzI5MjcwMDM1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9VSURlbGVnYXRlLm1t
OgorICAgICAgICAoLVtQcmludERlbGVnYXRlIF93ZWJWaWV3OnByaW50RnJhbWU6XSk6CisgICAg
ICAgICgtW1ByaW50RGVsZWdhdGUgX3dlYlZpZXdIZWFkZXJIZWlnaHQ6XSk6CisgICAgICAgICgt
W1ByaW50RGVsZWdhdGUgX3dlYlZpZXdGb290ZXJIZWlnaHQ6XSk6CisgICAgICAgICgtW1ByaW50
RGVsZWdhdGUgX3dlYlZpZXc6ZHJhd0hlYWRlckluUmVjdDpmb3JQYWdlV2l0aFRpdGxlOlVSTDpd
KToKKyAgICAgICAgKC1bUHJpbnREZWxlZ2F0ZSBfd2ViVmlldzpkcmF3Rm9vdGVySW5SZWN0OmZv
clBhZ2VXaXRoVGl0bGU6VVJMOl0pOgorICAgICAgICAoY2FsbGJhY2tzRXF1YWwpOgorICAgICAg
ICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lmg6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tOgorICAgICAg
ICAoLVtUZXN0V0tXZWJWaWV3IGhvc3RXaW5kb3ddKToKKwogMjAxNy0wOS0xMyAgSm9obiBXaWxh
bmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBJbnRyb2R1Y2UgU3RvcmFnZSBB
Y2Nlc3MgQVBJIChkb2N1bWVudCBwYXJ0cykgYXMgYW4gZXhwZXJpbWVudGFsIGZlYXR1cmUKSW5k
ZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVUlEZWxlZ2F0ZS5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VJRGVs
ZWdhdGUubW0JKHJldmlzaW9uIDIyMTk4MikKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvVUlEZWxlZ2F0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsNyBA
QAogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9f
V0tIaXRUZXN0UmVzdWx0Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3
dGYvVmVjdG9yLmg+CiAKICNpZiBQTEFURk9STShNQUMpCiAjaW1wb3J0IDxDYXJib24vQ2FyYm9u
Lmg+CkBAIC0yODIsNiArMjgzLDkzIEBAIFRFU1QoV2ViS2l0LCBXaW5kb3dGcmFtZSkKICAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwogfQogCitlbnVtIGNsYXNzIENhbGxiYWNr
IHsKKyAgICBIZWFkZXJIZWlnaHQsCisgICAgRm9vdGVySGVpZ2h0LAorICAgIERyYXdIZWFkZXIs
CisgICAgRHJhd0Zvb3RlciwKK307CisKK3N0YXRpYyBWZWN0b3I8Q2FsbGJhY2s+IGNhbGxiYWNr
czsKKworQGludGVyZmFjZSBQcmludERlbGVnYXRlIDogTlNPYmplY3QgPFdLVUlEZWxlZ2F0ZVBy
aXZhdGU+CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBQcmludERlbGVnYXRlCisKKy0gKHZvaWQp
X3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcHJpbnRGcmFtZTooX1dLRnJhbWVIYW5kbGUg
KilmcmFtZQoreworICAgIGRvbmUgPSB0cnVlOworfQorCistIChDR0Zsb2F0KV93ZWJWaWV3SGVh
ZGVySGVpZ2h0OihXS1dlYlZpZXcgKil3ZWJWaWV3Cit7CisgICAgY2FsbGJhY2tzLmFwcGVuZChD
YWxsYmFjazo6SGVhZGVySGVpZ2h0KTsKKyAgICByZXR1cm4gMy4xNDE1OTsKK30KKworLSAoQ0dG
bG9hdClfd2ViVmlld0Zvb3RlckhlaWdodDooV0tXZWJWaWV3ICopd2ViVmlldworeworICAgIGNh
bGxiYWNrcy5hcHBlbmQoQ2FsbGJhY2s6OkZvb3RlckhlaWdodCk7CisgICAgcmV0dXJuIDIuNzE4
Mjg7Cit9CisKKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZHJhd0hlYWRl
ckluUmVjdDooQ0dSZWN0KXJlY3QgZm9yUGFnZVdpdGhUaXRsZTooTlNTdHJpbmcgKil0aXRsZSBV
Ukw6KE5TVVJMICopdXJsCit7CisgICAgRVhQRUNUX0VRKHJlY3Qub3JpZ2luLngsIDcyKTsKKyAg
ICBFWFBFQ1RfVFJVRShzdGQ6OmFicyhyZWN0Lm9yaWdpbi55IC0gNjk4Ljg1ODM5OCkgPCAuMDAw
MDEpOworICAgIEVYUEVDVF9UUlVFKHN0ZDo6YWJzKHJlY3Quc2l6ZS5oZWlnaHQgLSAzLjE0MTU5
MCkgPCAuMDAwMDEpOworICAgIEVYUEVDVF9FUShyZWN0LnNpemUud2lkdGgsIDQ2OC4wMDAwMDAp
OworICAgIEVYUEVDVF9TVFJFUSh0aXRsZS5VVEY4U3RyaW5nLCAidGVzdF90aXRsZSIpOworICAg
IEVYUEVDVF9TVFJFUSh1cmwuYWJzb2x1dGVTdHJpbmcuVVRGOFN0cmluZywgImh0dHA6Ly9leGFt
cGxlLmNvbS8iKTsKKyAgICBjYWxsYmFja3MuYXBwZW5kKENhbGxiYWNrOjpEcmF3SGVhZGVyKTsK
K30KKworLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkcmF3Rm9vdGVySW5S
ZWN0OihDR1JlY3QpcmVjdCBmb3JQYWdlV2l0aFRpdGxlOihOU1N0cmluZyAqKXRpdGxlIFVSTDoo
TlNVUkwgKil1cmwKK3sKKyAgICBFWFBFQ1RfRVEocmVjdC5vcmlnaW4ueCwgNzIpOworICAgIEVY
UEVDVF9FUShyZWN0Lm9yaWdpbi55LCA5MCk7CisgICAgRVhQRUNUX1RSVUUoc3RkOjphYnMocmVj
dC5zaXplLmhlaWdodCAtIDIuNzE4MjgwKSA8IC4wMDAwMSk7CisgICAgRVhQRUNUX0VRKHJlY3Qu
c2l6ZS53aWR0aCwgNDY4LjAwMDAwMCk7CisgICAgRVhQRUNUX1NUUkVRKHVybC5hYnNvbHV0ZVN0
cmluZy5VVEY4U3RyaW5nLCAiaHR0cDovL2V4YW1wbGUuY29tLyIpOworICAgIGNhbGxiYWNrcy5h
cHBlbmQoQ2FsbGJhY2s6OkRyYXdGb290ZXIpOworICAgIGNvbnN0IHNpemVfdCBleHBlY3RlZEZp
bmFsQ2FsbGJhY2tTaXplID0gMzk7CisgICAgaWYgKGNhbGxiYWNrcy5zaXplKCkgPT0gZXhwZWN0
ZWRGaW5hbENhbGxiYWNrU2l6ZSkKKyAgICAgICAgZG9uZSA9IHRydWU7Cit9CisKK0BlbmQKKwor
Ym9vbCBjYWxsYmFja3NFcXVhbChjb25zdCBWZWN0b3I8Q2FsbGJhY2s+IGEsIGNvbnN0IFZlY3Rv
cjxDYWxsYmFjaz4gYikKK3sKKyAgICBpZiAoYS5zaXplKCkgIT0gYi5zaXplKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGEuc2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgaWYgKGFbaV0gIT0gYltpXSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK1RFU1QoV2ViS2l0MiwgUHJpbnRGcmFtZSkK
K3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOworICAgIGF1dG8gZGVsZWdh
dGUgPSBhZG9wdE5TKFtbUHJpbnREZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3
IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3Ry
aW5nOkAiPGhlYWQ+PHRpdGxlPnRlc3RfdGl0bGU8L3RpdGxlPjwvaGVhZD48Ym9keSBvbmxvYWQ9
J3ByaW50KCknPmhlbGxvIHdvcmxkITwvYm9keT4iIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJp
bmc6QCJodHRwOi8vZXhhbXBsZS5jb20vIl1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmZG9uZSk7CisKKyAgICBkb25lID0gZmFsc2U7CisgICAgTlNQcmludE9wZXJhdGlvbiAqb3Bl
cmF0aW9uID0gW3dlYlZpZXcgX3ByaW50T3BlcmF0aW9uV2l0aFByaW50SW5mbzpbTlNQcmludElu
Zm8gc2hhcmVkUHJpbnRJbmZvXV07CisgICAgRVhQRUNUX1RSVUUob3BlcmF0aW9uLmNhblNwYXdu
U2VwYXJhdGVUaHJlYWQpOworICAgIEVYUEVDVF9TVFJFUShvcGVyYXRpb24uam9iVGl0bGUuVVRG
OFN0cmluZywgInRlc3RfdGl0bGUiKTsKKworICAgIFtvcGVyYXRpb24gcnVuT3BlcmF0aW9uTW9k
YWxGb3JXaW5kb3c6W3dlYlZpZXcgaG9zdFdpbmRvd10gZGVsZWdhdGU6bmlsIGRpZFJ1blNlbGVj
dG9yOm5pbCBjb250ZXh0SW5mbzpuaWxdOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
ZG9uZSk7CisKKyAgICBFWFBFQ1RfVFJVRShjYWxsYmFja3NFcXVhbChjYWxsYmFja3MsIHsgQ2Fs
bGJhY2s6OkhlYWRlckhlaWdodCwgQ2FsbGJhY2s6OkZvb3RlckhlaWdodCwgQ2FsbGJhY2s6Okhl
YWRlckhlaWdodCwgQ2FsbGJhY2s6OkZvb3RlckhlaWdodCwgQ2FsbGJhY2s6OkhlYWRlckhlaWdo
dCwgQ2FsbGJhY2s6OkZvb3RlckhlaWdodCwgQ2FsbGJhY2s6OkhlYWRlckhlaWdodCwgQ2FsbGJh
Y2s6OkZvb3RlckhlaWdodCwgQ2FsbGJhY2s6OkhlYWRlckhlaWdodCwgQ2FsbGJhY2s6OkZvb3Rl
ckhlaWdodCwgQ2FsbGJhY2s6OkhlYWRlckhlaWdodCwgQ2FsbGJhY2s6OkZvb3RlckhlaWdodCwg
Q2FsbGJhY2s6OkhlYWRlckhlaWdodCwgQ2FsbGJhY2s6OkZvb3RlckhlaWdodCwgQ2FsbGJhY2s6
OkhlYWRlckhlaWdodCwgQ2FsbGJhY2s6OkZvb3RlckhlaWdodCwgQ2FsbGJhY2s6OkhlYWRlckhl
aWdodCwgQ2FsbGJhY2s6OkZvb3RlckhlaWdodCwgQ2FsbGJhY2s6OkhlYWRlckhlaWdodCwgQ2Fs
bGJhY2s6OkZvb3RlckhlaWdodCwgQ2FsbGJhY2s6OkZvb3RlckhlaWdodCwgQ2FsbGJhY2s6OkZv
b3RlckhlaWdodCwgQ2FsbGJhY2s6OkhlYWRlckhlaWdodCwgQ2FsbGJhY2s6OkRyYXdIZWFkZXIs
IENhbGxiYWNrOjpEcmF3Rm9vdGVyLCBDYWxsYmFjazo6SGVhZGVySGVpZ2h0LCBDYWxsYmFjazo6
Rm9vdGVySGVpZ2h0LCBDYWxsYmFjazo6Rm9vdGVySGVpZ2h0LCBDYWxsYmFjazo6Rm9vdGVySGVp
Z2h0LCBDYWxsYmFjazo6SGVhZGVySGVpZ2h0LCBDYWxsYmFjazo6RHJhd0hlYWRlciwgQ2FsbGJh
Y2s6OkRyYXdGb290ZXIsIENhbGxiYWNrOjpIZWFkZXJIZWlnaHQsIENhbGxiYWNrOjpGb290ZXJI
ZWlnaHQsIENhbGxiYWNrOjpGb290ZXJIZWlnaHQsIENhbGxiYWNrOjpGb290ZXJIZWlnaHQsIENh
bGxiYWNrOjpIZWFkZXJIZWlnaHQsIENhbGxiYWNrOjpEcmF3SGVhZGVyLCBDYWxsYmFjazo6RHJh
d0Zvb3RlciB9KSk7Cit9CisKIEBpbnRlcmZhY2UgTm90aWZpY2F0aW9uRGVsZWdhdGUgOiBOU09i
amVjdCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4gewogICAgIGJvb2wgX2FsbG93Tm90aWZpY2F0aW9u
czsKIH0KSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oCShy
ZXZpc2lvbiAyMjE5MDcpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZp
ZXcuaAkod29ya2luZyBjb3B5KQpAQCAtNjYsNiArNjYsNyBAQAogLSAodm9pZCltb3VzZU1vdmVU
b1BvaW50OihOU1BvaW50KXBvaW50IHdpdGhGbGFnczooTlNFdmVudE1vZGlmaWVyRmxhZ3MpZmxh
Z3M7CiAtICh2b2lkKXNlbmRDbGlja3NBdFBvaW50OihOU1BvaW50KXBvaW50IG51bWJlck9mQ2xp
Y2tzOihOU1VJbnRlZ2VyKW51bWJlck9mQ2xpY2tzOwogLSAodm9pZCl0eXBlQ2hhcmFjdGVyOihj
aGFyKWNoYXJhY3RlcjsKKy0gKE5TV2luZG93ICopaG9zdFdpbmRvdzsKIEBlbmQKICNlbmRpZgog
CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCShyZXZp
c2lvbiAyMjE5MDcpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTM0OSw2ICszNDksMTEgQEAgLSAodm9pZClzZW5kQ2xpY2tz
QXRQb2ludDooTlNQb2ludClwb2ludAogICAgIH0KIH0KIAorLSAoTlNXaW5kb3cgKilob3N0V2lu
ZG93Cit7CisgICAgcmV0dXJuIF9ob3N0V2luZG93LmdldCgpOworfQorCiAtICh2b2lkKXR5cGVD
aGFyYWN0ZXI6KGNoYXIpY2hhcmFjdGVyIHsKICAgICBOU1N0cmluZyAqY2hhcmFjdGVyQXNTdHJp
bmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVjIiAsIGNoYXJhY3Rlcl07CiAgICAg
TlNFdmVudFR5cGUga2V5RG93bkV2ZW50VHlwZSA9IE5TRXZlbnRUeXBlS2V5RG93bjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320737</attachid>
            <date>2017-09-14 00:01:43 -0700</date>
            <delta_ts>2017-09-14 10:53:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176889-20170914000134.patch</filename>
            <type>text/plain</type>
            <size>49301</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjE5ODIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDczIEBACisyMDE3LTA5LTEzICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFdLVUlEZWxl
Z2F0ZVByaXZhdGUgZXF1aXZhbGVudCBvZiBXS1BhZ2VVSUNsaWVudCdzIGRyYXdIZWFkZXIsIGRy
YXdGb290ZXIsIGhlYWRlckhlaWdodCwgYW5kIGZvb3RlckhlaWdodAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2ODg5CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8yOTI3MDAzNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdl
TG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcpOgorICAgICAgICAoV0tQYWdlTG9hZEFsdGVybmF0ZUhU
TUxTdHJpbmdXaXRoVXNlckRhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tC
cm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS0Jyb3dzaW5nQ29udGV4
dENvbnRyb2xsZXIgbG9hZEFsdGVybmF0ZUhUTUxTdHJpbmc6YmFzZVVSTDpmb3JVbnJlYWNoYWJs
ZVVSTDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZh
dGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAg
ICAgKC1bV0tXZWJWaWV3IF9sb2FkQWx0ZXJuYXRlSFRNTFN0cmluZzpiYXNlVVJMOmZvclVucmVh
Y2hhYmxlVVJMOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW06CisgICAgICAgIChXZWJLaXQ6
OlVJRGVsZWdhdGU6OnNldERlbGVnYXRlKToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6
VUlDbGllbnQ6OmhlYWRlckhlaWdodCk6CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJ
Q2xpZW50Ojpmb290ZXJIZWlnaHQpOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNs
aWVudDo6ZHJhd0hlYWRlcik6CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50
OjpkcmF3Rm9vdGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV0tSZWxvYWRGcmFtZUVy
cm9yUmVjb3ZlcnlBdHRlbXB0ZXIubW06CisgICAgICAgICgtW1dLUmVsb2FkRnJhbWVFcnJvclJl
Y292ZXJ5QXR0ZW1wdGVyIGF0dGVtcHRSZWNvdmVyeV0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9D
b2NvYS9XZWJWaWV3SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnByaW50
T3BlcmF0aW9uV2l0aFByaW50SW5mbyk6CisgICAgICAgICogVUlQcm9jZXNzL0ZyYW1lTG9hZFN0
YXRlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkU3RhdGU6OmRpZFN0YXJ0UHJvdmlz
aW9uYWxMb2FkKToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkU3RhdGU6OmRpZFJlY2VpdmVT
ZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCk6CisgICAgICAgIChXZWJLaXQ6OkZyYW1l
TG9hZFN0YXRlOjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKFdlYktpdDo6RnJh
bWVMb2FkU3RhdGU6OmRpZENvbW1pdExvYWQpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRT
dGF0ZTo6ZGlkU2FtZURvY3VtZW50Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6RnJh
bWVMb2FkU3RhdGU6OnNldFVucmVhY2hhYmxlVVJMKToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVM
b2FkU3RhdGU6OkZyYW1lTG9hZFN0YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
RnJhbWVMb2FkU3RhdGUuaDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkU3RhdGU6OnVybCBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZFN0YXRlOjpwcm92aXNpb25hbFVSTCBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZFN0YXRlOjp1bnJlYWNoYWJsZVVSTCBj
b25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZVByb3h5Ojpsb2FkVVJMKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJh
bWVQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJG
cmFtZVByb3h5OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZVByb3h5OjpkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9u
KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVQcm94eTo6c2V0VW5yZWFjaGFibGVVUkwpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJGcmFtZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6Oldl
YkZyYW1lUHJveHk6OnVybCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lUHJveHk6
OnByb3Zpc2lvbmFsVVJMIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVQcm94eTo6
dW5yZWFjaGFibGVVUkwgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWRBbHRlcm5hdGVIVE1MU3Ry
aW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFs
TG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRSZWNlaXZl
U2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZy
YW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9y
UHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkwpOgorICAgICAgICAoV2ViS2l0OjpXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2UpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRQdXNoU3Rh
dGVXaXRoaW5QYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGlkUmVwbGFjZVN0YXRlV2l0aGluUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFBvcFN0YXRlV2l0aGluUGFnZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9u
YWxMb2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OmxvYWRVUkxJbkZyYW1lKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluOgorCiAyMDE3LTA5LTEzICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlz
dGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIFdLVUlEZWxlZ2F0ZVByaXZhdGUgZXF1
aXZhbGVudCBvZiBXS1BhZ2VVSUNsaWVudCdzIHNldElzUmVzaXphYmxlLCBnZXRXaW5kb3dGcmFt
ZSwgYW5kIHNldFdpbmRvd0ZyYW1lCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9GcmFt
ZUxvYWRTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRnJh
bWVMb2FkU3RhdGUuY3BwCShyZXZpc2lvbiAyMjE5MDcpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9GcmFtZUxvYWRTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDE2ICsyOCwxMSBA
QAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotRnJhbWVMb2FkU3RhdGU6OkZyYW1lTG9hZFN0YXRl
KCkKLSAgICA6IG1fc3RhdGUoU3RhdGU6OkZpbmlzaGVkKQotewotfQotCiBGcmFtZUxvYWRTdGF0
ZTo6fkZyYW1lTG9hZFN0YXRlKCkKIHsKIH0KIAotdm9pZCBGcmFtZUxvYWRTdGF0ZTo6ZGlkU3Rh
cnRQcm92aXNpb25hbExvYWQoY29uc3QgU3RyaW5nJiB1cmwpCit2b2lkIEZyYW1lTG9hZFN0YXRl
OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKIHsKICAg
ICBBU1NFUlQobV9wcm92aXNpb25hbFVSTC5pc0VtcHR5KCkpOwogCkBAIC00NSw3ICs0MCw3IEBA
IHZvaWQgRnJhbWVMb2FkU3RhdGU6OmRpZFN0YXJ0UHJvdmlzaW9uYWwKICAgICBtX3Byb3Zpc2lv
bmFsVVJMID0gdXJsOwogfQogCi12b2lkIEZyYW1lTG9hZFN0YXRlOjpkaWRSZWNlaXZlU2VydmVy
UmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoY29uc3QgU3RyaW5nJiB1cmwpCit2b2lkIEZyYW1l
TG9hZFN0YXRlOjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoY29u
c3QgV2ViQ29yZTo6VVJMJiB1cmwpCiB7CiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OlBy
b3Zpc2lvbmFsKTsKIApAQCAtNTcsNyArNTIsNyBAQCB2b2lkIEZyYW1lTG9hZFN0YXRlOjpkaWRG
YWlsUHJvdmlzaW9uYWxMCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OlByb3Zpc2lvbmFs
KTsKIAogICAgIG1fc3RhdGUgPSBTdGF0ZTo6RmluaXNoZWQ7Ci0gICAgbV9wcm92aXNpb25hbFVS
TCA9IFN0cmluZygpOworICAgIG1fcHJvdmlzaW9uYWxVUkwgPSB7IH07CiAgICAgbV91bnJlYWNo
YWJsZVVSTCA9IG1fbGFzdFVucmVhY2hhYmxlVVJMOwogfQogCkBAIC02Nyw3ICs2Miw3IEBAIHZv
aWQgRnJhbWVMb2FkU3RhdGU6OmRpZENvbW1pdExvYWQoKQogCiAgICAgbV9zdGF0ZSA9IFN0YXRl
OjpDb21taXR0ZWQ7CiAgICAgbV91cmwgPSBtX3Byb3Zpc2lvbmFsVVJMOwotICAgIG1fcHJvdmlz
aW9uYWxVUkwgPSBTdHJpbmcoKTsKKyAgICBtX3Byb3Zpc2lvbmFsVVJMID0geyB9OwogfQogCiB2
b2lkIEZyYW1lTG9hZFN0YXRlOjpkaWRGaW5pc2hMb2FkKCkKQEAgLTg2LDEyICs4MSwxMiBAQCB2
b2lkIEZyYW1lTG9hZFN0YXRlOjpkaWRGYWlsTG9hZCgpCiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpG
aW5pc2hlZDsKIH0KIAotdm9pZCBGcmFtZUxvYWRTdGF0ZTo6ZGlkU2FtZURvY3VtZW50Tm90aWZp
Y2F0aW9uKGNvbnN0IFN0cmluZyYgdXJsKQordm9pZCBGcmFtZUxvYWRTdGF0ZTo6ZGlkU2FtZURv
Y3VtZW50Tm90aWZpY2F0aW9uKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKQogewogICAgIG1fdXJs
ID0gdXJsOwogfQogCi12b2lkIEZyYW1lTG9hZFN0YXRlOjpzZXRVbnJlYWNoYWJsZVVSTChjb25z
dCBTdHJpbmcmIHVucmVhY2hhYmxlVVJMKQordm9pZCBGcmFtZUxvYWRTdGF0ZTo6c2V0VW5yZWFj
aGFibGVVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiB1bnJlYWNoYWJsZVVSTCkKIHsKICAgICBtX2xh
c3RVbnJlYWNoYWJsZVVSTCA9IG1fdW5yZWFjaGFibGVVUkw7CiAgICAgbV91bnJlYWNoYWJsZVVS
TCA9IHVucmVhY2hhYmxlVVJMOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRnJhbWVM
b2FkU3RhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9GcmFtZUxv
YWRTdGF0ZS5oCShyZXZpc2lvbiAyMjE5MDcpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9G
cmFtZUxvYWRTdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxNiArMjMsMTQgQEAKICAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEZyYW1lTG9hZFN0
YXRlX2gKLSNkZWZpbmUgRnJhbWVMb2FkU3RhdGVfaAorI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgRnJhbWVMb2FkU3RhdGUgewogcHVibGljOgotICAgIEZy
YW1lTG9hZFN0YXRlKCk7CiAgICAgfkZyYW1lTG9hZFN0YXRlKCk7CiAKICAgICBlbnVtIGNsYXNz
IFN0YXRlIHsKQEAgLTQxLDMxICszOSwyOSBAQCBwdWJsaWM6CiAgICAgICAgIEZpbmlzaGVkCiAg
ICAgfTsKIAotICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWQoY29uc3QgU3RyaW5nJiB1
cmwpOwotICAgIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2Fk
KGNvbnN0IFN0cmluZyYgdXJsKTsKKyAgICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKGNv
bnN0IFdlYkNvcmU6OlVSTCYpOworICAgIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9y
UHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdlYkNvcmU6OlVSTCYpOwogICAgIHZvaWQgZGlkRmFpbFBy
b3Zpc2lvbmFsTG9hZCgpOwogCiAgICAgdm9pZCBkaWRDb21taXRMb2FkKCk7CiAgICAgdm9pZCBk
aWRGaW5pc2hMb2FkKCk7CiAgICAgdm9pZCBkaWRGYWlsTG9hZCgpOwogCi0gICAgdm9pZCBkaWRT
YW1lRG9jdW1lbnROb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBkaWRTYW1l
RG9jdW1lbnROb3RpZmljYXRpb24oY29uc3QgV2ViQ29yZTo6VVJMJik7CiAKICAgICBTdGF0ZSBz
dGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KLSAgICBjb25zdCBTdHJpbmcmIHVybCgp
IGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9Ci0gICAgY29uc3QgU3RyaW5nJiBwcm92aXNpb25hbFVS
TCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdmlzaW9uYWxVUkw7IH0KKyAgICBjb25zdCBXZWJDb3Jl
OjpVUkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CisgICAgY29uc3QgV2ViQ29yZTo6
VVJMJiBwcm92aXNpb25hbFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdmlzaW9uYWxVUkw7IH0K
IAotICAgIHZvaWQgc2V0VW5yZWFjaGFibGVVUkwoY29uc3QgU3RyaW5nJik7Ci0gICAgY29uc3Qg
U3RyaW5nJiB1bnJlYWNoYWJsZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fdW5yZWFjaGFibGVVUkw7
IH0KKyAgICB2b2lkIHNldFVucmVhY2hhYmxlVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAg
IGNvbnN0IFdlYkNvcmU6OlVSTCYgdW5yZWFjaGFibGVVUkwoKSBjb25zdCB7IHJldHVybiBtX3Vu
cmVhY2hhYmxlVVJMOyB9CiAKIHByaXZhdGU6Ci0gICAgU3RhdGUgbV9zdGF0ZTsKLSAgICBTdHJp
bmcgbV91cmw7Ci0gICAgU3RyaW5nIG1fcHJvdmlzaW9uYWxVUkw7Ci0gICAgU3RyaW5nIG1fdW5y
ZWFjaGFibGVVUkw7Ci0gICAgU3RyaW5nIG1fbGFzdFVucmVhY2hhYmxlVVJMOworICAgIFN0YXRl
IG1fc3RhdGUgeyBTdGF0ZTo6RmluaXNoZWQgfTsKKyAgICBXZWJDb3JlOjpVUkwgbV91cmw7Cisg
ICAgV2ViQ29yZTo6VVJMIG1fcHJvdmlzaW9uYWxVUkw7CisgICAgV2ViQ29yZTo6VVJMIG1fdW5y
ZWFjaGFibGVVUkw7CisgICAgV2ViQ29yZTo6VVJMIG1fbGFzdFVucmVhY2hhYmxlVVJMOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBGcmFtZUxvYWRTdGF0ZV9oCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcAkocmV2aXNpb24g
MjIxOTA3KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDcgQEAgYm9vbCBXZWJGcmFtZVByb3h5Ojppc01haW5G
cmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuIHRoaXMgPT0gbV9wYWdlLT5tYWluRnJhbWUoKTsKIH0K
IAotdm9pZCBXZWJGcmFtZVByb3h5Ojpsb2FkVVJMKGNvbnN0IFN0cmluZyYgdXJsKQordm9pZCBX
ZWJGcmFtZVByb3h5Ojpsb2FkVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKQogewogICAgIGlm
ICghbV9wYWdlKQogICAgICAgICByZXR1cm47CkBAIC0xMzAsMTIgKzEzMCwxMiBAQCBib29sIFdl
YkZyYW1lUHJveHk6OmlzRGlzcGxheWluZ1BERkRvY3VtCiAgICAgcmV0dXJuIE1JTUVUeXBlUmVn
aXN0cnk6OmlzUERGT3JQb3N0U2NyaXB0TUlNRVR5cGUobV9NSU1FVHlwZSk7CiB9CiAKLXZvaWQg
V2ViRnJhbWVQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWQoY29uc3QgU3RyaW5nJiB1cmwp
Cit2b2lkIFdlYkZyYW1lUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdlYkNv
cmU6OlVSTCYgdXJsKQogewogICAgIG1fZnJhbWVMb2FkU3RhdGUuZGlkU3RhcnRQcm92aXNpb25h
bExvYWQodXJsKTsKIH0KIAotdm9pZCBXZWJGcmFtZVByb3h5OjpkaWRSZWNlaXZlU2VydmVyUmVk
aXJlY3RGb3JQcm92aXNpb25hbExvYWQoY29uc3QgU3RyaW5nJiB1cmwpCit2b2lkIFdlYkZyYW1l
UHJveHk6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZChjb25zdCBX
ZWJDb3JlOjpVUkwmIHVybCkKIHsKICAgICBtX2ZyYW1lTG9hZFN0YXRlLmRpZFJlY2VpdmVTZXJ2
ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCh1cmwpOwogfQpAQCAtMTY2LDcgKzE2Niw3IEBA
IHZvaWQgV2ViRnJhbWVQcm94eTo6ZGlkRmFpbExvYWQoKQogICAgIG1fZnJhbWVMb2FkU3RhdGUu
ZGlkRmFpbExvYWQoKTsKIH0KIAotdm9pZCBXZWJGcmFtZVByb3h5OjpkaWRTYW1lRG9jdW1lbnRO
YXZpZ2F0aW9uKGNvbnN0IFN0cmluZyYgdXJsKQordm9pZCBXZWJGcmFtZVByb3h5OjpkaWRTYW1l
RG9jdW1lbnROYXZpZ2F0aW9uKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKQogewogICAgIG1fZnJh
bWVMb2FkU3RhdGUuZGlkU2FtZURvY3VtZW50Tm90aWZpY2F0aW9uKHVybCk7CiB9CkBAIC0yMzIs
NyArMjMyLDcgQEAgdm9pZCBXZWJGcmFtZVByb3h5OjpnZXRSZXNvdXJjZURhdGEoQVBJOgogICAg
IG1fcGFnZS0+Z2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKHRoaXMsIHJlc291cmNlVVJMLCBXVEZN
b3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKIH0KIAotdm9pZCBXZWJGcmFtZVByb3h5OjpzZXRVbnJl
YWNoYWJsZVVSTChjb25zdCBTdHJpbmcmIHVucmVhY2hhYmxlVVJMKQordm9pZCBXZWJGcmFtZVBy
b3h5OjpzZXRVbnJlYWNoYWJsZVVSTChjb25zdCBXZWJDb3JlOjpVUkwmIHVucmVhY2hhYmxlVVJM
KQogewogICAgIG1fZnJhbWVMb2FkU3RhdGUuc2V0VW5yZWFjaGFibGVVUkwodW5yZWFjaGFibGVV
UkwpOwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaAkocmV2
aXNpb24gMjIxOTA3KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5o
CSh3b3JraW5nIGNvcHkpCkBAIC03NywxNCArNzcsMTQgQEAgcHVibGljOgogCiAgICAgRnJhbWVM
b2FkU3RhdGUmIGZyYW1lTG9hZFN0YXRlKCkgeyByZXR1cm4gbV9mcmFtZUxvYWRTdGF0ZTsgfQog
Ci0gICAgdm9pZCBsb2FkVVJMKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgbG9hZFVSTChjb25z
dCBXZWJDb3JlOjpVUkwmKTsKICAgICB2b2lkIHN0b3BMb2FkaW5nKCkgY29uc3Q7CiAKLSAgICBj
b25zdCBTdHJpbmcmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVMb2FkU3RhdGUudXJsKCk7
IH0KLSAgICBjb25zdCBTdHJpbmcmIHByb3Zpc2lvbmFsVVJMKCkgY29uc3QgeyByZXR1cm4gbV9m
cmFtZUxvYWRTdGF0ZS5wcm92aXNpb25hbFVSTCgpOyB9CisgICAgY29uc3QgV2ViQ29yZTo6VVJM
JiB1cmwoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lTG9hZFN0YXRlLnVybCgpOyB9CisgICAgY29u
c3QgV2ViQ29yZTo6VVJMJiBwcm92aXNpb25hbFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVM
b2FkU3RhdGUucHJvdmlzaW9uYWxVUkwoKTsgfQogCi0gICAgdm9pZCBzZXRVbnJlYWNoYWJsZVVS
TChjb25zdCBTdHJpbmcmKTsKLSAgICBjb25zdCBTdHJpbmcmIHVucmVhY2hhYmxlVVJMKCkgY29u
c3QgeyByZXR1cm4gbV9mcmFtZUxvYWRTdGF0ZS51bnJlYWNoYWJsZVVSTCgpOyB9CisgICAgdm9p
ZCBzZXRVbnJlYWNoYWJsZVVSTChjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICBjb25zdCBXZWJD
b3JlOjpVUkwmIHVucmVhY2hhYmxlVVJMKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZUxvYWRTdGF0
ZS51bnJlYWNoYWJsZVVSTCgpOyB9CiAKICAgICBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKCkgY29u
c3QgeyByZXR1cm4gbV9NSU1FVHlwZTsgfQogICAgIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGFpbnNQbHVnaW5Eb2N1bWVudDsgfQpAQCAtMTA1LDEz
ICsxMDUsMTMgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0TWFpblJlc291cmNlRGF0YShGdW5jdGlv
bjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBn
ZXRSZXNvdXJjZURhdGEoQVBJOjpVUkwqLCBGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJik7CiAKLSAgICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2Fk
KGNvbnN0IFN0cmluZyYgdXJsKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZv
clByb3Zpc2lvbmFsTG9hZChjb25zdCBTdHJpbmcmIHVybCk7CisgICAgdm9pZCBkaWRTdGFydFBy
b3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVT
ZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpVUkwmKTsKICAg
ICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWQoKTsKICAgICB2b2lkIGRpZENvbW1pdExvYWQo
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgV2ViQ2VydGlmaWNhdGVJbmZvJiwgYm9vbCBjb250
YWluc1BsdWdpbkRvY3VtZW50KTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWQoKTsKICAgICB2b2lk
IGRpZEZhaWxMb2FkKCk7Ci0gICAgdm9pZCBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKGNvbnN0
IFN0cmluZyYpOyAvLyBlZy4gYW5jaG9yIG5hdmlnYXRpb24sIHNlc3Npb24gc3RhdGUgY2hhbmdl
LgorICAgIHZvaWQgZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbihjb25zdCBXZWJDb3JlOjpVUkwm
KTsgLy8gZWcuIGFuY2hvciBuYXZpZ2F0aW9uLCBzZXNzaW9uIHN0YXRlIGNoYW5nZS4KICAgICB2
b2lkIGRpZENoYW5nZVRpdGxlKGNvbnN0IFN0cmluZyYpOwogCiAgICAgLy8gUG9saWN5IG9wZXJh
dGlvbnMuCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJl
dmlzaW9uIDIyMTk4MikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTk2MSw3ICs5NjEsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0
aW9uPiBXZWJQYWdlUHJveHk6OmxvCiAgICAgcmV0dXJuIFdURk1vdmUobmF2aWdhdGlvbik7CiB9
CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkQWx0ZXJuYXRlSFRNTFN0cmluZyhjb25zdCBTdHJp
bmcmIGh0bWxTdHJpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgY29uc3QgU3RyaW5nJiB1bnJl
YWNoYWJsZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQordm9pZCBXZWJQYWdlUHJveHk6Omxv
YWRBbHRlcm5hdGVIVE1MU3RyaW5nKGNvbnN0IFN0cmluZyYgaHRtbFN0cmluZywgY29uc3QgV2Vi
Q29yZTo6VVJMJiBiYXNlVVJMLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVucmVhY2hhYmxlVVJMLCBB
UEk6Ok9iamVjdCogdXNlckRhdGEpCiB7CiAgICAgLy8gV2hlbiB0aGUgVUlQcm9jZXNzIGlzIGlu
IHRoZSBwcm9jZXNzIG9mIGhhbmRsaW5nIGEgZmFpbGluZyBwcm92aXNpb25hbCBsb2FkLCBkbyBu
b3QgYXR0ZW1wdCB0bwogICAgIC8vIHN0YXJ0IGEgc2Vjb25kIGFsdGVybmF0aXZlIEhUTUwgbG9h
ZCBhcyB0aGlzIHdpbGwgcHJldmVudCB0aGUgcGFnZSBsb2FkIHN0YXRlIGZyb20gYmVpbmcKQEAg
LTMxNDYsNyArMzE0Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWREZXN0cm95TmF2aWdhdGlv
bigKICAgICBtX25hdmlnYXRpb25TdGF0ZS0+ZGlkRGVzdHJveU5hdmlnYXRpb24obmF2aWdhdGlv
bklEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJp
bmcmIHVybCwgY29uc3QgU3RyaW5nJiB1bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEmIHVz
ZXJEYXRhKQordm9pZCBXZWJQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpVUkwm
JiB1cmwsIFdlYkNvcmU6OlVSTCYmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0YSYgdXNl
ckRhdGEpCiB7CiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IobV9wYWdlQ2xpZW50
KTsKIApAQCAtMzE4MCw3ICszMTgwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFN0YXJ0UHJv
dmlzaW9uYWxMbwogICAgICAgICBtX2xvYWRlckNsaWVudC0+ZGlkU3RhcnRQcm92aXNpb25hbExv
YWRGb3JGcmFtZSgqdGhpcywgKmZyYW1lLCBuYXZpZ2F0aW9uLmdldCgpLCBtX3Byb2Nlc3MtPnRy
YW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKIH0KIAot
dm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFs
TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29u
c3QgU3RyaW5nJiB1cmwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgV2ViUGFnZVBy
b3h5OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1
aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlVSTCYmIHVy
bCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3Ig
cHJvdGVjdG9yKG1fcGFnZUNsaWVudCk7CiAKQEAgLTMyMzQsNyArMzIzNCw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpkaWRDYW5jZWxDbGllbnRSZWRpcmUKICAgICB9CiB9CiAKLXZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQs
IHVpbnQ2NF90LCBjb25zdCBTdHJpbmcmIHVybCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaGFu
Z2VQcm92aXNpb25hbFVSTEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90LCBXZWJD
b3JlOjpVUkwmJiB1cmwpCiB7CiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IobV9w
YWdlQ2xpZW50KTsKIApAQCAtMzQ4Miw3ICszNDgyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZEZhaWxMb2FkRm9yRnJhbWUodQogICAgICAgICBtX3BhZ2VDbGllbnQuZGlkRmFpbExvYWRGb3JN
YWluRnJhbWUoKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZFNhbWVEb2N1bWVudE5hdmln
YXRpb25Gb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVp
bnQzMl90IG9wYXF1ZVNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLCBjb25zdCBTdHJpbmcmIHVy
bCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBXZWJQYWdlUHJveHk6OmRpZFNhbWVE
b2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZp
Z2F0aW9uSUQsIHVpbnQzMl90IG9wYXF1ZVNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLCBXZWJD
b3JlOjpVUkwmJiB1cmwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKICAgICBQYWdlQ2xp
ZW50UHJvdGVjdG9yIHByb3RlY3RvcihtX3BhZ2VDbGllbnQpOwogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMjIxOTgyKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTM5NSw3ICsz
OTUsNyBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gbG9hZEZpbGUoY29u
c3QgU3RyaW5nJiBmaWxlVVJMLCBjb25zdCBTdHJpbmcmIHJlc291cmNlRGlyZWN0b3J5VVJMLCBB
UEk6Ok9iamVjdCogdXNlckRhdGEgPSBudWxscHRyKTsKICAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0
aW9uPiBsb2FkRGF0YShBUEk6OkRhdGEqLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBT
dHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2Vy
RGF0YSA9IG51bGxwdHIpOwogICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IGxvYWRIVE1MU3Ry
aW5nKGNvbnN0IFN0cmluZyYgaHRtbFN0cmluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBBUEk6
Ok9iamVjdCogdXNlckRhdGEgPSBudWxscHRyKTsKLSAgICB2b2lkIGxvYWRBbHRlcm5hdGVIVE1M
U3RyaW5nKGNvbnN0IFN0cmluZyYgaHRtbFN0cmluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBj
b25zdCBTdHJpbmcmIHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEgPSBudWxs
cHRyKTsKKyAgICB2b2lkIGxvYWRBbHRlcm5hdGVIVE1MU3RyaW5nKGNvbnN0IFN0cmluZyYgaHRt
bFN0cmluZywgY29uc3QgV2ViQ29yZTo6VVJMJiBiYXNlVVJMLCBjb25zdCBXZWJDb3JlOjpVUkwm
IHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEgPSBudWxscHRyKTsKICAgICB2
b2lkIGxvYWRQbGFpblRleHRTdHJpbmcoY29uc3QgU3RyaW5nJiwgQVBJOjpPYmplY3QqIHVzZXJE
YXRhID0gbnVsbHB0cik7CiAgICAgdm9pZCBsb2FkV2ViQXJjaGl2ZURhdGEoQVBJOjpEYXRhKiwg
QVBJOjpPYmplY3QqIHVzZXJEYXRhID0gbnVsbHB0cik7CiAgICAgdm9pZCBuYXZpZ2F0ZVRvUERG
TGlua1dpdGhTaW11bGF0ZWRDbGljayhjb25zdCBTdHJpbmcmIHVybCwgV2ViQ29yZTo6SW50UG9p
bnQgZG9jdW1lbnRQb2ludCwgV2ViQ29yZTo6SW50UG9pbnQgc2NyZWVuUG9pbnQpOwpAQCAtMTI0
OCwxNyArMTI0OCwxNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkQ3JlYXRlTWFpbkZyYW1lKHVp
bnQ2NF90IGZyYW1lSUQpOwogICAgIHZvaWQgZGlkQ3JlYXRlU3ViZnJhbWUodWludDY0X3QgZnJh
bWVJRCk7CiAKLSAgICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0
X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIHVybCwgY29u
c3QgU3RyaW5nJiB1bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEmKTsKLSAgICB2b2lkIGRp
ZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90
IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiwgY29uc3QgVXNl
ckRhdGEmKTsKKyAgICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0
X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpVUkwmJiwgV2ViQ29y
ZTo6VVJMJiYgdW5yZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJEYXRhJik7CisgICAgdm9pZCBkaWRS
ZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBm
cmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlVSTCYmLCBjb25zdCBVc2Vy
RGF0YSYpOwogICAgIHZvaWQgd2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdEZvckZyYW1lKHVpbnQ2
NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgdXJsLCBkb3VibGUgZGVsYXkpOwogICAgIHZvaWQg
ZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlEKTsKLSAgICB2
b2lkIGRpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWlu
dDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIHVybCk7CisgICAgdm9pZCBkaWRDaGFu
Z2VQcm92aXNpb25hbFVSTEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgV2ViQ29yZTo6VVJMJiYpOwogICAgIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBT
dHJpbmcmIHByb3Zpc2lvbmFsVVJMLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29u
c3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZENvbW1pdExvYWRGb3JGcmFtZSh1aW50NjRfdCBm
cmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJv
b2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IGZyYW1lTG9hZFR5cGUs
IGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYsIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1
bWVudCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhh
c0luc2VjdXJlQ29udGVudCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZEZpbmlzaERv
Y3VtZW50TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZSh1aW50
NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFVzZXJEYXRhJik7CiAg
ICAgdm9pZCBkaWRGYWlsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IFVzZXJEYXRh
Jik7Ci0gICAgdm9pZCBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUodWludDY0X3Qg
ZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50MzJfdCBzYW1lRG9jdW1lbnROYXZp
Z2F0aW9uVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgVXNlckRhdGEmKTsKKyAgICB2b2lkIGRp
ZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIHVpbnQzMl90IHNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLCBXZWJD
b3JlOjpVUkwmJiwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZENoYW5nZU1haW5Eb2N1
bWVudCh1aW50NjRfdCBmcmFtZUlEKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZVRpdGxlRm9yRnJh
bWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiwgY29uc3QgVXNlckRhdGEmKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW4JKHJldmlzaW9uIDIyMTk4MikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMTE1LDExICsxMTUsMTEgQEAgbWVz
c2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBEaWRDcmVhdGVTdWJmcmFtZSh1aW50NjRfdCBm
cmFtZUlEKQogCiAgICAgIyBGcmFtZSBsb2FkIG1lc3NhZ2VzCi0gICAgRGlkU3RhcnRQcm92aXNp
b25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IFN0cmluZyB1cmwsIFN0cmluZyB1bnJlYWNoYWJsZVVSTCwgV2ViS2l0OjpVc2VyRGF0YSB1c2Vy
RGF0YSkKLSAgICBEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JG
cmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFN0cmluZyB1cmws
IFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCisgICAgRGlkU3RhcnRQcm92aXNpb25hbExvYWRG
b3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6
OlVSTCB1cmwsIFdlYkNvcmU6OlVSTCB1bnJlYWNoYWJsZVVSTCwgV2ViS2l0OjpVc2VyRGF0YSB1
c2VyRGF0YSkKKyAgICBEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRG
b3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6
OlVSTCB1cmwsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgV2lsbFBlcmZvcm1DbGll
bnRSZWRpcmVjdEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyB1cmwsIGRvdWJsZSBk
ZWxheSkKICAgICBEaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQpCi0gICAgRGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlE
LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFN0cmluZyB1cmwpCisgICAgRGlkQ2hhbmdlUHJvdmlz
aW9uYWxVUkxGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IFdlYkNvcmU6OlVSTCB1cmwpCiAgICAgRGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVp
bnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVT
ZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBTdHJpbmcgcHJvdmlzaW9uYWxV
UkwsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IsIFdlYktpdDo6VXNlckRhdGEgdXNlckRh
dGEpCiAgICAgRGlkQ29tbWl0TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgU3RyaW5nIG1pbWVUeXBlLCBib29sIGhhc0N1c3RvbUNvbnRlbnRQcm92
aWRlciwgdWludDMyX3QgbG9hZFR5cGUsIFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyBjZXJ0aWZp
Y2F0ZUluZm8sIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgc3RkOjpvcHRpb25hbDxXZWJD
b3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgV2ViS2l0
OjpVc2VyRGF0YSB1c2VyRGF0YSkKICAgICBEaWRGYWlsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZy
YW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJv
ciwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKQEAgLTEzMiw3ICsxMzIsNyBAQCBtZXNzYWdl
cyAtPiBXZWJQYWdlUHJveHkgewogICAgIERpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRGb3JGcmFt
ZSh1aW50NjRfdCBmcmFtZUlELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogICAgIERpZFJ1
bkluc2VjdXJlQ29udGVudEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFdlYktpdDo6VXNlckRh
dGEgdXNlckRhdGEpCiAgICAgRGlkRGV0ZWN0WFNTRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwg
V2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKLSAgICBEaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9u
Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50MzJf
dCB0eXBlLCBTdHJpbmcgdXJsLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQorICAgIERpZFNh
bWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIHVpbnQzMl90IHR5cGUsIFdlYkNvcmU6OlVSTCB1cmwsIFdlYktpdDo6VXNl
ckRhdGEgdXNlckRhdGEpCiAgICAgRGlkQ2hhbmdlTWFpbkRvY3VtZW50KHVpbnQ2NF90IGZyYW1l
SUQpOwogICAgIERpZERlc3Ryb3lOYXZpZ2F0aW9uKHVpbnQ2NF90IG5hdmlnYXRpb25JRCkKIApJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCShyZXZpc2lvbiAy
MjE5ODIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMDksMTIgKzIwOSwxMiBAQCB2b2lkIFdLUGFnZUxvYWRIVE1MU3RyaW5n
V2l0aFVzZXJEYXRhKFdLCiAKIHZvaWQgV0tQYWdlTG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcoV0tQ
YWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIGh0bWxTdHJpbmdSZWYsIFdLVVJMUmVmIGJhc2VV
UkxSZWYsIFdLVVJMUmVmIHVucmVhY2hhYmxlVVJMUmVmKQogewotICAgIHRvSW1wbChwYWdlUmVm
KS0+bG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcodG9XVEZTdHJpbmcoaHRtbFN0cmluZ1JlZiksIHRv
V1RGU3RyaW5nKGJhc2VVUkxSZWYpLCB0b1dURlN0cmluZyh1bnJlYWNoYWJsZVVSTFJlZikpOwor
ICAgIHRvSW1wbChwYWdlUmVmKS0+bG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcodG9XVEZTdHJpbmco
aHRtbFN0cmluZ1JlZiksIFVSTChVUkwoKSwgdG9XVEZTdHJpbmcoYmFzZVVSTFJlZikpLCBVUkwo
VVJMKCksIHRvV1RGU3RyaW5nKHVucmVhY2hhYmxlVVJMUmVmKSkpOwogfQogCiB2b2lkIFdLUGFn
ZUxvYWRBbHRlcm5hdGVIVE1MU3RyaW5nV2l0aFVzZXJEYXRhKFdLUGFnZVJlZiBwYWdlUmVmLCBX
S1N0cmluZ1JlZiBodG1sU3RyaW5nUmVmLCBXS1VSTFJlZiBiYXNlVVJMUmVmLCBXS1VSTFJlZiB1
bnJlYWNoYWJsZVVSTFJlZiwgV0tUeXBlUmVmIHVzZXJEYXRhUmVmKQogewotICAgIHRvSW1wbChw
YWdlUmVmKS0+bG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcodG9XVEZTdHJpbmcoaHRtbFN0cmluZ1Jl
ZiksIHRvV1RGU3RyaW5nKGJhc2VVUkxSZWYpLCB0b1dURlN0cmluZyh1bnJlYWNoYWJsZVVSTFJl
ZiksIHRvSW1wbCh1c2VyRGF0YVJlZikpOworICAgIHRvSW1wbChwYWdlUmVmKS0+bG9hZEFsdGVy
bmF0ZUhUTUxTdHJpbmcodG9XVEZTdHJpbmcoaHRtbFN0cmluZ1JlZiksIFVSTChVUkwoKSwgdG9X
VEZTdHJpbmcoYmFzZVVSTFJlZikpLCBVUkwoVVJMKCksIHRvV1RGU3RyaW5nKHVucmVhY2hhYmxl
VVJMUmVmKSksIHRvSW1wbCh1c2VyRGF0YVJlZikpOwogfQogCiB2b2lkIFdLUGFnZUxvYWRQbGFp
blRleHRTdHJpbmcoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIHBsYWluVGV4dFN0cmlu
Z1JlZikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5n
Q29udGV4dENvbnRyb2xsZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQkocmV2aXNpb24gMjIx
OTA3KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250
ZXh0Q29udHJvbGxlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMTU3LDcgKzE1Nyw3IEBAIC0gKHZv
aWQpbG9hZEhUTUxTdHJpbmc6KE5TU3RyaW5nICopSFRNTFMKIAogLSAodm9pZClsb2FkQWx0ZXJu
YXRlSFRNTFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgYmFzZVVSTDooTlNVUkwgKiliYXNlVVJM
IGZvclVucmVhY2hhYmxlVVJMOihOU1VSTCAqKXVucmVhY2hhYmxlVVJMCiB7Ci0gICAgX3BhZ2Ut
PmxvYWRBbHRlcm5hdGVIVE1MU3RyaW5nKHN0cmluZywgW2Jhc2VVUkwgX3dlYl9vcmlnaW5hbERh
dGFBc1dURlN0cmluZ10sIFt1bnJlYWNoYWJsZVVSTCBfd2ViX29yaWdpbmFsRGF0YUFzV1RGU3Ry
aW5nXSk7CisgICAgX3BhZ2UtPmxvYWRBbHRlcm5hdGVIVE1MU3RyaW5nKHN0cmluZywgYmFzZVVS
TCwgdW5yZWFjaGFibGVVUkwpOwogfQogCiAtICh2b2lkKWxvYWREYXRhOihOU0RhdGEgKilkYXRh
IE1JTUVUeXBlOihOU1N0cmluZyAqKU1JTUVUeXBlIHRleHRFbmNvZGluZ05hbWU6KE5TU3RyaW5n
ICopZW5jb2RpbmdOYW1lIGJhc2VVUkw6KE5TVVJMICopYmFzZVVSTApJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0
ZS5oCShyZXZpc2lvbiAyMjE5ODIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjEsNiArMTYxLDEw
IEBAIHN0cnVjdCBVSUVkZ2VJbnNldHM7CiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3
ZWJWaWV3IGRpZENsaWNrQXV0b0ZpbGxCdXR0b25XaXRoVXNlckluZm86KGlkIDxOU1NlY3VyZUNv
ZGluZz4pdXNlckluZm8gV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSkpOwogLSAo
dm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBnZXRUb29sYmFyc0FyZVZpc2libGVX
aXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIgV0tf
QVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSkpOwogLSAodm9pZClfd2ViVmlldzooV0tX
ZWJWaWV3ICopd2ViVmlldyBzYXZlRGF0YVRvRmlsZTooTlNEYXRhICopZGF0YSBzdWdnZXN0ZWRG
aWxlbmFtZTooTlNTdHJpbmcgKilzdWdnZXN0ZWRGaWxlbmFtZSBtaW1lVHlwZTooTlNTdHJpbmcg
KiltaW1lVHlwZSBvcmlnaW5hdGluZ1VSTDooTlNVUkwgKil1cmwgV0tfQVBJX0FWQUlMQUJMRSht
YWNvc3goV0tfTUFDX1RCQSkpOworLSAoQ0dGbG9hdClfd2ViVmlld0hlYWRlckhlaWdodDooV0tX
ZWJWaWV3ICopd2ViVmlldyBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSk7Cist
IChDR0Zsb2F0KV93ZWJWaWV3Rm9vdGVySGVpZ2h0OihXS1dlYlZpZXcgKil3ZWJWaWV3IFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpKTsKKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgZHJhd0hlYWRlckluUmVjdDooQ0dSZWN0KXJlY3QgZm9yUGFnZVdpdGhU
aXRsZTooTlNTdHJpbmcgKil0aXRsZSBVUkw6KE5TVVJMICopdXJsIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3N4KFdLX01BQ19UQkEpKTsKKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZp
ZXcgZHJhd0Zvb3RlckluUmVjdDooQ0dSZWN0KXJlY3QgZm9yUGFnZVdpdGhUaXRsZTooTlNTdHJp
bmcgKil0aXRsZSBVUkw6KE5TVVJMICopdXJsIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01B
Q19UQkEpKTsKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcmVxdWVzdE5v
dGlmaWNhdGlvblBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbjooV0tTZWN1cml0eU9yaWdpbiAq
KXNlY3VyaXR5T3JpZ2luIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCkpZGVjaXNpb25I
YW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpKTsKIC0gKHZvaWQpX3dl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYnZpZXcgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQ6KF9XS0hp
dFRlc3RSZXN1bHQgKiloaXRUZXN0UmVzdWx0IHdpdGhGbGFnczooTlNFdmVudE1vZGlmaWVyRmxh
Z3MpZmxhZ3MgdXNlckluZm86KGlkIDxOU1NlY3VyZUNvZGluZz4pdXNlckluZm87CiAtICh2b2lk
KV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEV4Y2VlZEJhY2tncm91bmRSZXNvdXJj
ZUxpbWl0V2hpbGVJbkZvcmVncm91bmQ6KF9XS1Jlc291cmNlTGltaXQpbGltaXQgV0tfQVBJX0FW
QUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSkpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCShyZXZpc2lvbiAyMjE5MDcpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0zODQxLDcgKzM4NDEsNyBAQCAtIChOU1VSTCAqKV91bnJlYWNoYWJsZVVSTAogCiAtICh2
b2lkKV9sb2FkQWx0ZXJuYXRlSFRNTFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgYmFzZVVSTDoo
TlNVUkwgKiliYXNlVVJMIGZvclVucmVhY2hhYmxlVVJMOihOU1VSTCAqKXVucmVhY2hhYmxlVVJM
CiB7Ci0gICAgX3BhZ2UtPmxvYWRBbHRlcm5hdGVIVE1MU3RyaW5nKHN0cmluZywgW2Jhc2VVUkwg
X3dlYl9vcmlnaW5hbERhdGFBc1dURlN0cmluZ10sIFt1bnJlYWNoYWJsZVVSTCBfd2ViX29yaWdp
bmFsRGF0YUFzV1RGU3RyaW5nXSk7CisgICAgX3BhZ2UtPmxvYWRBbHRlcm5hdGVIVE1MU3RyaW5n
KHN0cmluZywgYmFzZVVSTCwgdW5yZWFjaGFibGVVUkwpOwogfQogCiAtIChXS05hdmlnYXRpb24g
KilfbG9hZERhdGE6KE5TRGF0YSAqKWRhdGEgTUlNRVR5cGU6KE5TU3RyaW5nICopTUlNRVR5cGUg
Y2hhcmFjdGVyRW5jb2RpbmdOYW1lOihOU1N0cmluZyAqKWNoYXJhY3RlckVuY29kaW5nTmFtZSBi
YXNlVVJMOihOU1VSTCAqKWJhc2VVUkwgdXNlckRhdGE6KGlkKXVzZXJEYXRhCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAko
cmV2aXNpb24gMjIxOTA3KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2Vi
S2l0V2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDYgKzY1LDcgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL0dVbmlxdWVQdHJTb3VwLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9KU0RPTUV4Y2Vw
dGlvbkhhbmRsaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWZQdHJDYWlyby5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KICNpbmNsdWRl
IDx3dGYvU2V0Rm9yU2NvcGUuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CkBAIC0y
NDkxLDcgKzI0OTIsNyBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19sb2FkX2FsdGVybmF0ZV9odG1s
CiAgICAgZ19yZXR1cm5faWZfZmFpbChjb250ZW50KTsKICAgICBnX3JldHVybl9pZl9mYWlsKGNv
bnRlbnRVUkkpOwogCi0gICAgZ2V0UGFnZSh3ZWJWaWV3KS5sb2FkQWx0ZXJuYXRlSFRNTFN0cmlu
ZyhTdHJpbmc6OmZyb21VVEY4KGNvbnRlbnQpLCBTdHJpbmc6OmZyb21VVEY4KGJhc2VVUkkpLCBT
dHJpbmc6OmZyb21VVEY4KGNvbnRlbnRVUkkpKTsKKyAgICBnZXRQYWdlKHdlYlZpZXcpLmxvYWRB
bHRlcm5hdGVIVE1MU3RyaW5nKFN0cmluZzo6ZnJvbVVURjgoY29udGVudCksIFdlYkNvcmU6OlVS
TChXZWJDb3JlOjpVUkwoKSwgU3RyaW5nOjpmcm9tVVRGOChiYXNlVVJJKSksIFdlYkNvcmU6OlVS
TChXZWJDb3JlOjpVUkwoKSwgU3RyaW5nOjpmcm9tVVRGOChjb250ZW50VVJJKSkpOwogfQogCiAv
KioKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgJKHJl
dmlzaW9uIDIyMTk4MikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdh
dGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDYgKzEwNSwxMCBAQCBwcml2YXRlOgogICAgICAg
ICB2b2lkIHNldFdpbmRvd0ZyYW1lKFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
UmVjdCYpIGZpbmFsOwogICAgICAgICB2b2lkIHdpbmRvd0ZyYW1lKFdlYlBhZ2VQcm94eSYsIEZ1
bmN0aW9uPHZvaWQoV2ViQ29yZTo6RmxvYXRSZWN0KT4mJikgZmluYWw7CiAgICAgICAgIHZvaWQg
ZGlkTm90SGFuZGxlV2hlZWxFdmVudChXZWJQYWdlUHJveHkqLCBjb25zdCBOYXRpdmVXZWJXaGVl
bEV2ZW50JikgZmluYWw7CisgICAgICAgIGZsb2F0IGhlYWRlckhlaWdodChXZWJQYWdlUHJveHkm
LCBXZWJGcmFtZVByb3h5JikgZmluYWw7CisgICAgICAgIGZsb2F0IGZvb3RlckhlaWdodChXZWJQ
YWdlUHJveHkmLCBXZWJGcmFtZVByb3h5JikgZmluYWw7CisgICAgICAgIHZvaWQgZHJhd0hlYWRl
cihXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5JiwgV2ViQ29yZTo6RmxvYXRSZWN0JiYpIGZp
bmFsOworICAgICAgICB2b2lkIGRyYXdGb290ZXIoV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94
eSYsIFdlYkNvcmU6OkZsb2F0UmVjdCYmKSBmaW5hbDsKICAgICAgICAgdm9pZCBkZWNpZGVQb2xp
Y3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveHkmLCBBUEk6OlNl
Y3VyaXR5T3JpZ2luJiwgRnVuY3Rpb248dm9pZChib29sKT4mJikgZmluYWw7CiAgICAgICAgIHZv
aWQgaGFuZGxlQXV0b3BsYXlFdmVudChXZWJQYWdlUHJveHkmLCBXZWJDb3JlOjpBdXRvcGxheUV2
ZW50LCBPcHRpb25TZXQ8V2ViQ29yZTo6QXV0b3BsYXlFdmVudEZsYWdzPikgZmluYWw7CiAgICAg
ICAgIHZvaWQgdW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkKFdlYlBhZ2VQcm94eSYsIFdL
UGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24sIEFQSTo6RGljdGlvbmFyeSYpIGZpbmFsOwpAQCAt
MTYwLDEyICsxNjQsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCB3ZWJWaWV3UnVuTW9kYWwg
OiAxOwogICAgICAgICBib29sIHdlYlZpZXdUYWtlRm9jdXMgOiAxOwogICAgICAgICBib29sIHdl
YlZpZXdEaWRTY3JvbGwgOiAxOworICAgICAgICBib29sIHdlYlZpZXdIZWFkZXJIZWlnaHQgOiAx
OworICAgICAgICBib29sIHdlYlZpZXdGb290ZXJIZWlnaHQgOiAxOwogICAgICAgICBib29sIHdl
YlZpZXdTZXRSZXNpemFibGUgOiAxOwogICAgICAgICBib29sIHdlYlZpZXdTZXRXaW5kb3dGcmFt
ZSA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld0RpZE5vdEhhbmRsZVdoZWVsRXZlbnQgOiAxOwog
ICAgICAgICBib29sIHdlYlZpZXdIYW5kbGVBdXRvcGxheUV2ZW50V2l0aEZsYWdzIDogMTsKICAg
ICAgICAgYm9vbCB3ZWJWaWV3VW5hdmFpbGFibGVQbHVnSW5CdXR0b25DbGlja2VkIDogMTsKICAg
ICAgICAgYm9vbCB3ZWJWaWV3RGlkQ2xpY2tBdXRvRmlsbEJ1dHRvbldpdGhVc2VySW5mbyA6IDE7
CisgICAgICAgIGJvb2wgd2ViVmlld0RyYXdIZWFkZXJJblJlY3RGb3JQYWdlV2l0aFRpdGxlVVJM
IDogMTsKKyAgICAgICAgYm9vbCB3ZWJWaWV3RHJhd0Zvb3RlckluUmVjdEZvclBhZ2VXaXRoVGl0
bGVVUkwgOiAxOwogICAgICAgICBib29sIHdlYlZpZXdHZXRXaW5kb3dGcmFtZVdpdGhDb21wbGV0
aW9uSGFuZGxlciA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld01vdXNlRGlkTW92ZU92ZXJFbGVt
ZW50V2l0aEZsYWdzVXNlckluZm8gOiAxOwogICAgICAgICBib29sIHdlYlZpZXdHZXRUb29sYmFy
c0FyZVZpc2libGVXaXRoQ29tcGxldGlvbkhhbmRsZXIgOiAxOwpJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCShyZXZpc2lvbiAyMjE5ODIpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjAsNiArMTIwLDEwIEBAIHZvaWQgVUlEZWxlZ2F0ZTo6c2V0RGVsZWdhdGUoaWQgPFdL
VUlEZWwKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3VW5hdmFpbGFibGVQbHVnSW5CdXR0
b25DbGlja2VkID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZp
ZXc6dW5hdmFpbGFibGVQbHVnSW5CdXR0b25DbGlja2VkV2l0aFJlYXNvbjpwbHVnSW5JbmZvOild
OwogICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdIYW5kbGVBdXRvcGxheUV2ZW50V2l0aEZs
YWdzID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6aGFu
ZGxlQXV0b3BsYXlFdmVudDp3aXRoRmxhZ3M6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2Vi
Vmlld0RpZENsaWNrQXV0b0ZpbGxCdXR0b25XaXRoVXNlckluZm8gPSBbZGVsZWdhdGUgcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpkaWRDbGlja0F1dG9GaWxsQnV0dG9uV2l0
aFVzZXJJbmZvOildOworICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdEcmF3SGVhZGVySW5S
ZWN0Rm9yUGFnZVdpdGhUaXRsZVVSTCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKF93ZWJWaWV3OmRyYXdIZWFkZXJJblJlY3Q6Zm9yUGFnZVdpdGhUaXRsZTpVUkw6KV07
CisgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RyYXdGb290ZXJJblJlY3RGb3JQYWdlV2l0
aFRpdGxlVVJMID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZp
ZXc6ZHJhd0Zvb3RlckluUmVjdDpmb3JQYWdlV2l0aFRpdGxlOlVSTDopXTsKKyAgICBtX2RlbGVn
YXRlTWV0aG9kcy53ZWJWaWV3SGVhZGVySGVpZ2h0ID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3IoX3dlYlZpZXdIZWFkZXJIZWlnaHQ6KV07CisgICAgbV9kZWxlZ2F0ZU1l
dGhvZHMud2ViVmlld0Zvb3RlckhlaWdodCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKF93ZWJWaWV3Rm9vdGVySGVpZ2h0OildOwogICAgIG1fZGVsZWdhdGVNZXRob2Rz
LndlYlZpZXdNb3VzZURpZE1vdmVPdmVyRWxlbWVudFdpdGhGbGFnc1VzZXJJbmZvID0gW2RlbGVn
YXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6bW91c2VEaWRNb3ZlT3Zl
ckVsZW1lbnQ6d2l0aEZsYWdzOnVzZXJJbmZvOildOwogICAgIG1fZGVsZWdhdGVNZXRob2RzLndl
YlZpZXdEaWRFeGNlZWRCYWNrZ3JvdW5kUmVzb3VyY2VMaW1pdFdoaWxlSW5Gb3JlZ3JvdW5kID0g
W2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6ZGlkRXhjZWVk
QmFja2dyb3VuZFJlc291cmNlTGltaXRXaGlsZUluRm9yZWdyb3VuZDopXTsKICAgICBtX2RlbGVn
YXRlTWV0aG9kcy53ZWJWaWV3U2F2ZURhdGFUb0ZpbGVTdWdnZXN0ZWRGaWxlbmFtZU1pbWVUeXBl
T3JpZ2luYXRpbmdVUkwgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihf
d2ViVmlldzpzYXZlRGF0YVRvRmlsZTpzdWdnZXN0ZWRGaWxlbmFtZTptaW1lVHlwZTpvcmlnaW5h
dGluZ1VSTDopXTsKQEAgLTQyMyw2ICs0MjcsNTQgQEAgdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVu
dDo6cnVuTW9kYWwoV2ViUAogICAgIFsoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KWRlbGVnYXRl
IF93ZWJWaWV3UnVuTW9kYWw6bV91aURlbGVnYXRlLm1fd2ViVmlld107CiB9CiAKK2Zsb2F0IFVJ
RGVsZWdhdGU6OlVJQ2xpZW50OjpoZWFkZXJIZWlnaHQoV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQ
cm94eSYgd2ViRnJhbWVQcm94eSkKK3sKKyAgICBpZiAoIW1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRl
TWV0aG9kcy53ZWJWaWV3SGVhZGVySGVpZ2h0KQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAg
ICBhdXRvIGRlbGVnYXRlID0gbV91aURlbGVnYXRlLm1fZGVsZWdhdGUuZ2V0KCk7CisgICAgaWYg
KCFkZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgcmV0dXJuIFsoaWQgPFdL
VUlEZWxlZ2F0ZVByaXZhdGU+KWRlbGVnYXRlIF93ZWJWaWV3SGVhZGVySGVpZ2h0Om1fdWlEZWxl
Z2F0ZS5tX3dlYlZpZXddOworfQorCitmbG9hdCBVSURlbGVnYXRlOjpVSUNsaWVudDo6Zm9vdGVy
SGVpZ2h0KFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmKQoreworICAgIGlmICghbV91aURl
bGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdGb290ZXJIZWlnaHQpCisgICAgICAgIHJl
dHVybiAwOworICAgIAorICAgIGF1dG8gZGVsZWdhdGUgPSBtX3VpRGVsZWdhdGUubV9kZWxlZ2F0
ZS5nZXQoKTsKKyAgICBpZiAoIWRlbGVnYXRlKQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAg
ICByZXR1cm4gWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3dlYlZpZXdGb290
ZXJIZWlnaHQ6bV91aURlbGVnYXRlLm1fd2ViVmlld107Cit9CisKK3ZvaWQgVUlEZWxlZ2F0ZTo6
VUlDbGllbnQ6OmRyYXdIZWFkZXIoV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSYgZnJhbWUs
IFdlYkNvcmU6OkZsb2F0UmVjdCYmIHJlY3QpCit7CisgICAgaWYgKCFtX3VpRGVsZWdhdGUubV9k
ZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RyYXdIZWFkZXJJblJlY3RGb3JQYWdlV2l0aFRpdGxlVVJM
KQorICAgICAgICByZXR1cm47CisgICAgCisgICAgYXV0byBkZWxlZ2F0ZSA9IG1fdWlEZWxlZ2F0
ZS5tX2RlbGVnYXRlLmdldCgpOworICAgIGlmICghZGVsZWdhdGUpCisgICAgICAgIHJldHVybjsK
KyAgICAKKyAgICBbKGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPilkZWxlZ2F0ZSBfd2ViVmlldzpt
X3VpRGVsZWdhdGUubV93ZWJWaWV3IGRyYXdIZWFkZXJJblJlY3Q6cmVjdCBmb3JQYWdlV2l0aFRp
dGxlOmZyYW1lLnRpdGxlKCkgVVJMOmZyYW1lLnVybCgpXTsKK30KKwordm9pZCBVSURlbGVnYXRl
OjpVSUNsaWVudDo6ZHJhd0Zvb3RlcihXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5JiBmcmFt
ZSwgV2ViQ29yZTo6RmxvYXRSZWN0JiYgcmVjdCkKK3sKKyAgICBpZiAoIW1fdWlEZWxlZ2F0ZS5t
X2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RHJhd0Zvb3RlckluUmVjdEZvclBhZ2VXaXRoVGl0bGVV
UkwpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBhdXRvIGRlbGVnYXRlID0gbV91aURlbGVn
YXRlLm1fZGVsZWdhdGUuZ2V0KCk7CisgICAgaWYgKCFkZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJu
OworICAgIAorICAgIFsoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KWRlbGVnYXRlIF93ZWJWaWV3
Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgZHJhd0Zvb3RlckluUmVjdDpyZWN0IGZvclBhZ2VXaXRo
VGl0bGU6ZnJhbWUudGl0bGUoKSBVUkw6ZnJhbWUudXJsKCldOworfQorCiB2b2lkIFVJRGVsZWdh
dGU6OlVJQ2xpZW50OjpwYWdlRGlkU2Nyb2xsKFdlYlBhZ2VQcm94eSopCiB7CiAgICAgaWYgKCFt
X3VpRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZFNjcm9sbCkKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dLUmVsb2FkRnJhbWVFcnJvclJlY292ZXJ5QXR0
ZW1wdGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dL
UmVsb2FkRnJhbWVFcnJvclJlY292ZXJ5QXR0ZW1wdGVyLm1tCShyZXZpc2lvbiAyMjE5MDcpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1JlbG9hZEZyYW1lRXJyb3JSZWNvdmVy
eUF0dGVtcHRlci5tbQkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQCAtIChCT09MKWF0
dGVtcHRSZWNvdmVyeQogICAgIGlmICghd2ViRnJhbWVQcm94eSkKICAgICAgICAgcmV0dXJuIE5P
OwogCi0gICAgd2ViRnJhbWVQcm94eS0+bG9hZFVSTChfdXJsU3RyaW5nKTsKKyAgICB3ZWJGcmFt
ZVByb3h5LT5sb2FkVVJMKFdlYkNvcmU6OlVSTChXZWJDb3JlOjpVUkwoKSwgX3VybFN0cmluZykp
OwogICAgIHJldHVybiBZRVM7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlZpZXdJbXBsLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlZpZXdJbXBsLm1tCShyZXZpc2lvbiAyMjE5MDcpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQkod29ya2luZyBjb3B5KQpAQCAtMTYyNCw3
ICsxNjI0LDcgQEAgYm9vbCBXZWJWaWV3SW1wbDo6Y2FuQ2hhbmdlRnJhbWVMYXlvdXQoVwogCiBO
U1ByaW50T3BlcmF0aW9uICpXZWJWaWV3SW1wbDo6cHJpbnRPcGVyYXRpb25XaXRoUHJpbnRJbmZv
KE5TUHJpbnRJbmZvICpwcmludEluZm8sIFdlYkZyYW1lUHJveHkmIGZyYW1lKQogewotICAgIExP
RyhQcmludGluZywgIkNyZWF0aW5nIGFuIE5TUHJpbnRPcGVyYXRpb24gZm9yIGZyYW1lICclcyci
LCBmcmFtZS51cmwoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBMT0coUHJpbnRpbmcsICJDcmVhdGlu
ZyBhbiBOU1ByaW50T3BlcmF0aW9uIGZvciBmcmFtZSAnJXMnIiwgZnJhbWUudXJsKCkuc3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CiAKICAgICAvLyBGSVhNRTogSWYgdGhlIGZyYW1lIGNhbm5vdCBi
ZSBwcmludGVkIChlLmcuIGlmIGl0IGNvbnRhaW5zIGFuIGVuY3J5cHRlZCBQREYgdGhhdCBkaXNh
bGxvd3MKICAgICAvLyBwcmludGluZyksIHRoaXMgZnVuY3Rpb24gc2hvdWxkIHJldHVybiBuaWwu
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDIyMTkwNykK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3OSwxNCArMjc5LDEzIEBAIHZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmUKICAgICAgICAgcmV0dXJuOwogCiAgICAg
V2ViRG9jdW1lbnRMb2FkZXImIGRvY3VtZW50TG9hZGVyID0gc3RhdGljX2Nhc3Q8V2ViRG9jdW1l
bnRMb2FkZXImPigqbV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLnByb3Zpc2lvbmFsRG9j
dW1lbnRMb2FkZXIoKSk7Ci0gICAgY29uc3QgU3RyaW5nJiB1cmwgPSBkb2N1bWVudExvYWRlci51
cmwoKS5zdHJpbmcoKTsKICAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IHVzZXJEYXRhOwogCiAgICAg
Ly8gTm90aWZ5IHRoZSBidW5kbGUgY2xpZW50LgogICAgIHdlYlBhZ2UtPmluamVjdGVkQnVuZGxl
TG9hZGVyQ2xpZW50KCkuZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWUoKndlYlBhZ2UsICptX2ZyYW1lLCB1c2VyRGF0YSk7CiAKICAgICAvLyBOb3RpZnkg
dGhlIFVJUHJvY2Vzcy4KLSAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKG1fZnJh
bWUtPmZyYW1lSUQoKSwgZG9jdW1lbnRMb2FkZXIubmF2aWdhdGlvbklEKCksIHVybCwgVXNlckRh
dGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2Vy
RGF0YS5nZXQoKSkuZ2V0KCkpKSk7CisgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFt
ZShtX2ZyYW1lLT5mcmFtZUlEKCksIGRvY3VtZW50TG9hZGVyLm5hdmlnYXRpb25JRCgpLCBkb2N1
bWVudExvYWRlci51cmwoKSwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNm
b3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSk7CiB9CiAKIHZvaWQg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkwoKQpA
QCAtMjk2LDcgKzI5NSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlk
Q2gKICAgICAgICAgcmV0dXJuOwogCiAgICAgV2ViRG9jdW1lbnRMb2FkZXImIGRvY3VtZW50TG9h
ZGVyID0gc3RhdGljX2Nhc3Q8V2ViRG9jdW1lbnRMb2FkZXImPigqbV9mcmFtZS0+Y29yZUZyYW1l
KCktPmxvYWRlcigpLnByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIoKSk7Ci0gICAgd2ViUGFnZS0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZy
YW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgZG9jdW1lbnRMb2FkZXIubmF2aWdhdGlvbklEKCksIGRv
Y3VtZW50TG9hZGVyLnVybCgpLnN0cmluZygpKSk7CisgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpEaWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1lKG1fZnJhbWUt
PmZyYW1lSUQoKSwgZG9jdW1lbnRMb2FkZXIubmF2aWdhdGlvbklEKCksIGRvY3VtZW50TG9hZGVy
LnVybCgpKSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2Fu
Y2VsQ2xpZW50UmVkaXJlY3QoKQpAQCAtMzM5LDcgKzMzOCw3IEBAIHZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2gKICAgICB3ZWJQYWdlLT5pbmplY3RlZEJ1bmRsZUxvYWRl
ckNsaWVudCgpLmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSgqd2ViUGFnZSwgKm1f
ZnJhbWUsIFNhbWVEb2N1bWVudE5hdmlnYXRpb25BbmNob3JOYXZpZ2F0aW9uLCB1c2VyRGF0YSk7
CiAKICAgICAvLyBOb3RpZnkgdGhlIFVJUHJvY2Vzcy4KLSAgICB3ZWJQYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZShtX2Zy
YW1lLT5mcmFtZUlEKCksIG5hdmlnYXRpb25JRCwgU2FtZURvY3VtZW50TmF2aWdhdGlvbkFuY2hv
ck5hdmlnYXRpb24sIG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5kb2N1bWVudCgpLT51cmwoKS5zdHJp
bmcoKSwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1Rv
SGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSk7CisgICAgd2ViUGFnZS0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpEaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUobV9m
cmFtZS0+ZnJhbWVJRCgpLCBuYXZpZ2F0aW9uSUQsIFNhbWVEb2N1bWVudE5hdmlnYXRpb25BbmNo
b3JOYXZpZ2F0aW9uLCBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+ZG9jdW1lbnQoKS0+dXJsKCksIFVz
ZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXMo
dXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpOwogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERpZENoYW5nZU1haW5Eb2N1bWVudCgpCkBAIC0zNjUsNyArMzY0LDcgQEAgdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRQdQogICAgIHdlYlBhZ2UtPmluamVj
dGVkQnVuZGxlTG9hZGVyQ2xpZW50KCkuZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1l
KCp3ZWJQYWdlLCAqbV9mcmFtZSwgU2FtZURvY3VtZW50TmF2aWdhdGlvblNlc3Npb25TdGF0ZVB1
c2gsIHVzZXJEYXRhKTsKIAogICAgIC8vIE5vdGlmeSB0aGUgVUlQcm9jZXNzLgotICAgIHdlYlBh
Z2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkU2FtZURvY3VtZW50TmF2aWdhdGlv
bkZvckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgbmF2aWdhdGlvbklELCBTYW1lRG9jdW1lbnRO
YXZpZ2F0aW9uU2Vzc2lvblN0YXRlUHVzaCwgbV9mcmFtZS0+Y29yZUZyYW1lKCktPmRvY3VtZW50
KCktPnVybCgpLnN0cmluZygpLCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFu
c2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKTsKKyAgICB3ZWJQ
YWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFNhbWVEb2N1bWVudE5hdmlnYXRp
b25Gb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIG5hdmlnYXRpb25JRCwgU2FtZURvY3VtZW50
TmF2aWdhdGlvblNlc3Npb25TdGF0ZVB1c2gsIG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5kb2N1bWVu
dCgpLT51cmwoKSwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2Jq
ZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSk7CiB9CiAKIHZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVwbGFjZVN0YXRlV2l0aGluUGFnZSgpCkBAIC0z
ODIsNyArMzgxLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZQog
ICAgIHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlTG9hZGVyQ2xpZW50KCkuZGlkU2FtZURvY3VtZW50
TmF2aWdhdGlvbkZvckZyYW1lKCp3ZWJQYWdlLCAqbV9mcmFtZSwgU2FtZURvY3VtZW50TmF2aWdh
dGlvblNlc3Npb25TdGF0ZVJlcGxhY2UsIHVzZXJEYXRhKTsKIAogICAgIC8vIE5vdGlmeSB0aGUg
VUlQcm9jZXNzLgotICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlk
U2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgbmF2aWdh
dGlvbklELCBTYW1lRG9jdW1lbnROYXZpZ2F0aW9uU2Vzc2lvblN0YXRlUmVwbGFjZSwgbV9mcmFt
ZS0+Y29yZUZyYW1lKCktPmRvY3VtZW50KCktPnVybCgpLnN0cmluZygpLCBVc2VyRGF0YShXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdl
dCgpKS5nZXQoKSkpKTsKKyAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIG5h
dmlnYXRpb25JRCwgU2FtZURvY3VtZW50TmF2aWdhdGlvblNlc3Npb25TdGF0ZVJlcGxhY2UsIG1f
ZnJhbWUtPmNvcmVGcmFtZSgpLT5kb2N1bWVudCgpLT51cmwoKSwgVXNlckRhdGEoV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSku
Z2V0KCkpKSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUG9w
U3RhdGVXaXRoaW5QYWdlKCkKQEAgLTM5OSw3ICszOTgsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERpZFBvCiAgICAgd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVMb2FkZXJD
bGllbnQoKS5kaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUoKndlYlBhZ2UsICptX2Zy
YW1lLCBTYW1lRG9jdW1lbnROYXZpZ2F0aW9uU2Vzc2lvblN0YXRlUG9wLCB1c2VyRGF0YSk7CiAK
ICAgICAvLyBOb3RpZnkgdGhlIFVJUHJvY2Vzcy4KLSAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZShtX2ZyYW1l
LT5mcmFtZUlEKCksIG5hdmlnYXRpb25JRCwgU2FtZURvY3VtZW50TmF2aWdhdGlvblNlc3Npb25T
dGF0ZVBvcCwgbV9mcmFtZS0+Y29yZUZyYW1lKCktPmRvY3VtZW50KCktPnVybCgpLnN0cmluZygp
LCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5k
bGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKTsKKyAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZShtX2ZyYW1l
LT5mcmFtZUlEKCksIG5hdmlnYXRpb25JRCwgU2FtZURvY3VtZW50TmF2aWdhdGlvblNlc3Npb25T
dGF0ZVBvcCwgbV9mcmFtZS0+Y29yZUZyYW1lKCktPmRvY3VtZW50KCktPnVybCgpLCBVc2VyRGF0
YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJE
YXRhLmdldCgpKS5nZXQoKSkpKTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hXaWxsQ2xvc2UoKQpAQCAtNDIzLDEzICs0MjIsMTMgQEAgdm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEaWRTdAogICAgIHdlYlBhZ2UtPnNhbmRib3hFeHRlbnNpb25UcmFj
a2VyKCkuZGlkU3RhcnRQcm92aXNpb25hbExvYWQobV9mcmFtZSk7CiAKICAgICBXZWJEb2N1bWVu
dExvYWRlciYgcHJvdmlzaW9uYWxMb2FkZXIgPSBzdGF0aWNfY2FzdDxXZWJEb2N1bWVudExvYWRl
ciY+KCptX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkucHJvdmlzaW9uYWxEb2N1bWVudExv
YWRlcigpKTsKLSAgICBjb25zdCBTdHJpbmcmIHVybCA9IHByb3Zpc2lvbmFsTG9hZGVyLnVybCgp
LnN0cmluZygpOworICAgIGF1dG8mIHVybCA9IHByb3Zpc2lvbmFsTG9hZGVyLnVybCgpOwogICAg
IFJlZlB0cjxBUEk6Ok9iamVjdD4gdXNlckRhdGE7CiAKICAgICAvLyBOb3RpZnkgdGhlIGJ1bmRs
ZSBjbGllbnQuCiAgICAgd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVMb2FkZXJDbGllbnQoKS5kaWRT
dGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKCp3ZWJQYWdlLCAqbV9mcmFtZSwgdXNlckRhdGEp
OwogCi0gICAgU3RyaW5nIHVucmVhY2hhYmxlVVJMID0gcHJvdmlzaW9uYWxMb2FkZXIudW5yZWFj
aGFibGVVUkwoKS5zdHJpbmcoKTsKKyAgICBhdXRvJiB1bnJlYWNoYWJsZVVSTCA9IHByb3Zpc2lv
bmFsTG9hZGVyLnVucmVhY2hhYmxlVVJMKCk7CiAKICAgICAvLyBOb3RpZnkgdGhlIFVJUHJvY2Vz
cy4KICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFN0YXJ0UHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBwcm92aXNpb25hbExvYWRl
ci5uYXZpZ2F0aW9uSUQoKSwgdXJsLCB1bnJlYWNoYWJsZVVSTCwgVXNlckRhdGEoV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSku
Z2V0KCkpKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAkocmV2aXNpb24gMjIxOTA3KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNzYsMTMgKzExNzYsMTMgQEAg
dm9pZCBXZWJQYWdlOjpzZW5kQ2xvc2UoKQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6Q2xvc2VQYWdlKGZhbHNlKSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6bG9hZFVSTEluRnJhbWUo
Y29uc3QgU3RyaW5nJiB1cmwsIHVpbnQ2NF90IGZyYW1lSUQpCit2b2lkIFdlYlBhZ2U6OmxvYWRV
UkxJbkZyYW1lKFdlYkNvcmU6OlVSTCYmIHVybCwgdWludDY0X3QgZnJhbWVJRCkKIHsKICAgICBX
ZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlE
KTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBmcmFtZS0+Y29yZUZy
YW1lKCktPmxvYWRlcigpLmxvYWQoRnJhbWVMb2FkUmVxdWVzdCgqZnJhbWUtPmNvcmVGcmFtZSgp
LCBSZXNvdXJjZVJlcXVlc3QoVVJMKFVSTCgpLCB1cmwpKSwgU2hvdWxkT3BlbkV4dGVybmFsVVJM
c1BvbGljeTo6U2hvdWxkTm90QWxsb3cpKTsKKyAgICBmcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRl
cigpLmxvYWQoRnJhbWVMb2FkUmVxdWVzdCgqZnJhbWUtPmNvcmVGcmFtZSgpLCBSZXNvdXJjZVJl
cXVlc3QodXJsKSwgU2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeTo6U2hvdWxkTm90QWxsb3cp
KTsKIH0KIAogI2lmICFQTEFURk9STShDT0NPQSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDIyMTkwNykKKysrIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTA5NSw3
ICsxMDk1LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBzY3JvbGwoV2ViQ29yZTo6UGFn
ZSosIFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbiwgV2ViQ29yZTo6U2Nyb2xsR3JhbnVsYXJpdHkp
OwogICAgIHN0YXRpYyBib29sIGxvZ2ljYWxTY3JvbGwoV2ViQ29yZTo6UGFnZSosIFdlYkNvcmU6
OlNjcm9sbExvZ2ljYWxEaXJlY3Rpb24sIFdlYkNvcmU6OlNjcm9sbEdyYW51bGFyaXR5KTsKIAot
ICAgIHZvaWQgbG9hZFVSTEluRnJhbWUoY29uc3QgU3RyaW5nJiwgdWludDY0X3QgZnJhbWVJRCk7
CisgICAgdm9pZCBsb2FkVVJMSW5GcmFtZShXZWJDb3JlOjpVUkwmJiwgdWludDY0X3QgZnJhbWVJ
RCk7CiAKICAgICBlbnVtIGNsYXNzIFdhc1Jlc3RvcmVkQnlBUElSZXF1ZXN0IHsgTm8sIFllcyB9
OwogICAgIHZvaWQgcmVzdG9yZVNlc3Npb25JbnRlcm5hbChjb25zdCBWZWN0b3I8QmFja0Zvcndh
cmRMaXN0SXRlbVN0YXRlPiYsIFdhc1Jlc3RvcmVkQnlBUElSZXF1ZXN0KTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
bgkocmV2aXNpb24gMjIxOTA3KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMTMyLDcgKzEzMiw3IEBAIG1l
c3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIEdvVG9CYWNrRm9yd2FyZEl0
ZW0odWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50NjRfdCBiYWNrRm9yd2FyZEl0ZW1JRCkKICAg
ICBUcnlSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKQogCi0gICAgTG9hZFVSTEluRnJhbWUoU3RyaW5n
IHVybCwgdWludDY0X3QgZnJhbWVJRCkKKyAgICBMb2FkVVJMSW5GcmFtZShXZWJDb3JlOjpVUkwg
dXJsLCB1aW50NjRfdCBmcmFtZUlEKQogICAgIExvYWRSZXF1ZXN0KHN0cnVjdCBXZWJLaXQ6Okxv
YWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJzKQogICAgIExvYWREYXRhKHN0cnVjdCBXZWJLaXQ6
OkxvYWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJzKQogICAgIExvYWRTdHJpbmcoc3RydWN0IFdl
YktpdDo6TG9hZFBhcmFtZXRlcnMgbG9hZFBhcmFtZXRlcnMpCkluZGV4OiBUb29scy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjIwMDkpCisrKyBU
b29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMyBAQAorMjAxNy0wOS0x
MyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAg
IEFkZCBXS1VJRGVsZWdhdGVQcml2YXRlIGVxdWl2YWxlbnQgb2YgV0tQYWdlVUlDbGllbnQncyBk
cmF3SGVhZGVyLCBkcmF3Rm9vdGVyLCBoZWFkZXJIZWlnaHQsIGFuZCBmb290ZXJIZWlnaHQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3Njg4OQorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMjkyNzAwMzU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1VJRGVsZWdhdGUubW06CisgICAgICAgICgtW1ByaW50RGVsZWdhdGUgX3dlYlZpZXc6cHJpbnRG
cmFtZTpdKToKKyAgICAgICAgKC1bUHJpbnREZWxlZ2F0ZSBfd2ViVmlld0hlYWRlckhlaWdodDpd
KToKKyAgICAgICAgKC1bUHJpbnREZWxlZ2F0ZSBfd2ViVmlld0Zvb3RlckhlaWdodDpdKToKKyAg
ICAgICAgKC1bUHJpbnREZWxlZ2F0ZSBfd2ViVmlldzpkcmF3SGVhZGVySW5SZWN0OmZvclBhZ2VX
aXRoVGl0bGU6VVJMOl0pOgorICAgICAgICAoLVtQcmludERlbGVnYXRlIF93ZWJWaWV3OmRyYXdG
b290ZXJJblJlY3Q6Zm9yUGFnZVdpdGhUaXRsZTpVUkw6XSk6CisgICAgICAgIChjYWxsYmFja3NF
cXVhbCk6CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rl
c3RXS1dlYlZpZXcuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZp
ZXcubW06CisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXcgaG9zdFdpbmRvd10pOgorCiAyMDE3LTA5
LTEzICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEludHJv
ZHVjZSBTdG9yYWdlIEFjY2VzcyBBUEkgKGRvY3VtZW50IHBhcnRzKSBhcyBhbiBleHBlcmltZW50
YWwgZmVhdHVyZQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9V
SURlbGVnYXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvVUlEZWxlZ2F0ZS5tbQkocmV2aXNpb24gMjIxOTgyKQorKysgVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9VSURlbGVnYXRlLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC00MSw2ICs0MSw3IEBACiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgogI2lt
cG9ydCA8V2ViS2l0L19XS0hpdFRlc3RSZXN1bHQuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIu
aD4KKyNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykKICNpbXBvcnQg
PENhcmJvbi9DYXJib24uaD4KQEAgLTI4Miw2ICsyODMsOTMgQEAgVEVTVChXZWJLaXQsIFdpbmRv
d0ZyYW1lKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiB9CiAKK2VudW0g
Y2xhc3MgQ2FsbGJhY2sgeworICAgIEhlYWRlckhlaWdodCwKKyAgICBGb290ZXJIZWlnaHQsCisg
ICAgRHJhd0hlYWRlciwKKyAgICBEcmF3Rm9vdGVyLAorfTsKKworc3RhdGljIFZlY3RvcjxDYWxs
YmFjaz4gY2FsbGJhY2tzOworCitAaW50ZXJmYWNlIFByaW50RGVsZWdhdGUgOiBOU09iamVjdCA8
V0tVSURlbGVnYXRlUHJpdmF0ZT4KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFByaW50RGVsZWdh
dGUKKworLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBwcmludEZyYW1lOihf
V0tGcmFtZUhhbmRsZSAqKWZyYW1lCit7CisgICAgZG9uZSA9IHRydWU7Cit9CisKKy0gKENHRmxv
YXQpX3dlYlZpZXdIZWFkZXJIZWlnaHQ6KFdLV2ViVmlldyAqKXdlYlZpZXcKK3sKKyAgICBjYWxs
YmFja3MuYXBwZW5kKENhbGxiYWNrOjpIZWFkZXJIZWlnaHQpOworICAgIHJldHVybiAzLjE0MTU5
OworfQorCistIChDR0Zsb2F0KV93ZWJWaWV3Rm9vdGVySGVpZ2h0OihXS1dlYlZpZXcgKil3ZWJW
aWV3Cit7CisgICAgY2FsbGJhY2tzLmFwcGVuZChDYWxsYmFjazo6Rm9vdGVySGVpZ2h0KTsKKyAg
ICByZXR1cm4gMi43MTgyODsKK30KKworLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2Vi
VmlldyBkcmF3SGVhZGVySW5SZWN0OihDR1JlY3QpcmVjdCBmb3JQYWdlV2l0aFRpdGxlOihOU1N0
cmluZyAqKXRpdGxlIFVSTDooTlNVUkwgKil1cmwKK3sKKyAgICBFWFBFQ1RfRVEocmVjdC5vcmln
aW4ueCwgNzIpOworICAgIEVYUEVDVF9UUlVFKGZhYnMocmVjdC5vcmlnaW4ueSAtIDY5OC44NTgz
OTgpIDwgLjAwMDAxKTsKKyAgICBFWFBFQ1RfVFJVRShmYWJzKHJlY3Quc2l6ZS5oZWlnaHQgLSAz
LjE0MTU5MCkgPCAuMDAwMDEpOworICAgIEVYUEVDVF9FUShyZWN0LnNpemUud2lkdGgsIDQ2OC4w
MDAwMDApOworICAgIEVYUEVDVF9TVFJFUSh0aXRsZS5VVEY4U3RyaW5nLCAidGVzdF90aXRsZSIp
OworICAgIEVYUEVDVF9TVFJFUSh1cmwuYWJzb2x1dGVTdHJpbmcuVVRGOFN0cmluZywgImh0dHA6
Ly9leGFtcGxlLmNvbS8iKTsKKyAgICBjYWxsYmFja3MuYXBwZW5kKENhbGxiYWNrOjpEcmF3SGVh
ZGVyKTsKK30KKworLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkcmF3Rm9v
dGVySW5SZWN0OihDR1JlY3QpcmVjdCBmb3JQYWdlV2l0aFRpdGxlOihOU1N0cmluZyAqKXRpdGxl
IFVSTDooTlNVUkwgKil1cmwKK3sKKyAgICBFWFBFQ1RfRVEocmVjdC5vcmlnaW4ueCwgNzIpOwor
ICAgIEVYUEVDVF9FUShyZWN0Lm9yaWdpbi55LCA5MCk7CisgICAgRVhQRUNUX1RSVUUoZmFicyhy
ZWN0LnNpemUuaGVpZ2h0IC0gMi43MTgyODApIDwgLjAwMDAxKTsKKyAgICBFWFBFQ1RfRVEocmVj
dC5zaXplLndpZHRoLCA0NjguMDAwMDAwKTsKKyAgICBFWFBFQ1RfU1RSRVEodXJsLmFic29sdXRl
U3RyaW5nLlVURjhTdHJpbmcsICJodHRwOi8vZXhhbXBsZS5jb20vIik7CisgICAgY2FsbGJhY2tz
LmFwcGVuZChDYWxsYmFjazo6RHJhd0Zvb3Rlcik7CisgICAgY29uc3Qgc2l6ZV90IGV4cGVjdGVk
RmluYWxDYWxsYmFja1NpemUgPSAzOTsKKyAgICBpZiAoY2FsbGJhY2tzLnNpemUoKSA9PSBleHBl
Y3RlZEZpbmFsQ2FsbGJhY2tTaXplKQorICAgICAgICBkb25lID0gdHJ1ZTsKK30KKworQGVuZAor
Citib29sIGNhbGxiYWNrc0VxdWFsKGNvbnN0IFZlY3RvcjxDYWxsYmFjaz4gYSwgY29uc3QgVmVj
dG9yPENhbGxiYWNrPiBiKQoreworICAgIGlmIChhLnNpemUoKSAhPSBiLnNpemUoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYS5zaXplKCk7ICsr
aSkgeworICAgICAgICBpZiAoYVtpXSAhPSBiW2ldKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworVEVTVChXZWJLaXQyLCBQcmludEZyYW1l
KQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CisgICAgYXV0byBkZWxl
Z2F0ZSA9IGFkb3B0TlMoW1tQcmludERlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZp
ZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisgICAgW3dlYlZpZXcgbG9hZEhUTUxT
dHJpbmc6QCI8aGVhZD48dGl0bGU+dGVzdF90aXRsZTwvdGl0bGU+PC9oZWFkPjxib2R5IG9ubG9h
ZD0ncHJpbnQoKSc+aGVsbG8gd29ybGQhPC9ib2R5PiIgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0
cmluZzpAImh0dHA6Ly9leGFtcGxlLmNvbS8iXV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZkb25lKTsKKworICAgIGRvbmUgPSBmYWxzZTsKKyAgICBOU1ByaW50T3BlcmF0aW9uICpv
cGVyYXRpb24gPSBbd2ViVmlldyBfcHJpbnRPcGVyYXRpb25XaXRoUHJpbnRJbmZvOltOU1ByaW50
SW5mbyBzaGFyZWRQcmludEluZm9dXTsKKyAgICBFWFBFQ1RfVFJVRShvcGVyYXRpb24uY2FuU3Bh
d25TZXBhcmF0ZVRocmVhZCk7CisgICAgRVhQRUNUX1NUUkVRKG9wZXJhdGlvbi5qb2JUaXRsZS5V
VEY4U3RyaW5nLCAidGVzdF90aXRsZSIpOworCisgICAgW29wZXJhdGlvbiBydW5PcGVyYXRpb25N
b2RhbEZvcldpbmRvdzpbd2ViVmlldyBob3N0V2luZG93XSBkZWxlZ2F0ZTpuaWwgZGlkUnVuU2Vs
ZWN0b3I6bmlsIGNvbnRleHRJbmZvOm5pbF07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZkb25lKTsKKworICAgIEVYUEVDVF9UUlVFKGNhbGxiYWNrc0VxdWFsKGNhbGxiYWNrcywgeyBD
YWxsYmFjazo6SGVhZGVySGVpZ2h0LCBDYWxsYmFjazo6Rm9vdGVySGVpZ2h0LCBDYWxsYmFjazo6
SGVhZGVySGVpZ2h0LCBDYWxsYmFjazo6Rm9vdGVySGVpZ2h0LCBDYWxsYmFjazo6SGVhZGVySGVp
Z2h0LCBDYWxsYmFjazo6Rm9vdGVySGVpZ2h0LCBDYWxsYmFjazo6SGVhZGVySGVpZ2h0LCBDYWxs
YmFjazo6Rm9vdGVySGVpZ2h0LCBDYWxsYmFjazo6SGVhZGVySGVpZ2h0LCBDYWxsYmFjazo6Rm9v
dGVySGVpZ2h0LCBDYWxsYmFjazo6SGVhZGVySGVpZ2h0LCBDYWxsYmFjazo6Rm9vdGVySGVpZ2h0
LCBDYWxsYmFjazo6SGVhZGVySGVpZ2h0LCBDYWxsYmFjazo6Rm9vdGVySGVpZ2h0LCBDYWxsYmFj
azo6SGVhZGVySGVpZ2h0LCBDYWxsYmFjazo6Rm9vdGVySGVpZ2h0LCBDYWxsYmFjazo6SGVhZGVy
SGVpZ2h0LCBDYWxsYmFjazo6Rm9vdGVySGVpZ2h0LCBDYWxsYmFjazo6SGVhZGVySGVpZ2h0LCBD
YWxsYmFjazo6Rm9vdGVySGVpZ2h0LCBDYWxsYmFjazo6Rm9vdGVySGVpZ2h0LCBDYWxsYmFjazo6
Rm9vdGVySGVpZ2h0LCBDYWxsYmFjazo6SGVhZGVySGVpZ2h0LCBDYWxsYmFjazo6RHJhd0hlYWRl
ciwgQ2FsbGJhY2s6OkRyYXdGb290ZXIsIENhbGxiYWNrOjpIZWFkZXJIZWlnaHQsIENhbGxiYWNr
OjpGb290ZXJIZWlnaHQsIENhbGxiYWNrOjpGb290ZXJIZWlnaHQsIENhbGxiYWNrOjpGb290ZXJI
ZWlnaHQsIENhbGxiYWNrOjpIZWFkZXJIZWlnaHQsIENhbGxiYWNrOjpEcmF3SGVhZGVyLCBDYWxs
YmFjazo6RHJhd0Zvb3RlciwgQ2FsbGJhY2s6OkhlYWRlckhlaWdodCwgQ2FsbGJhY2s6OkZvb3Rl
ckhlaWdodCwgQ2FsbGJhY2s6OkZvb3RlckhlaWdodCwgQ2FsbGJhY2s6OkZvb3RlckhlaWdodCwg
Q2FsbGJhY2s6OkhlYWRlckhlaWdodCwgQ2FsbGJhY2s6OkRyYXdIZWFkZXIsIENhbGxiYWNrOjpE
cmF3Rm9vdGVyIH0pKTsKK30KKwogQGludGVyZmFjZSBOb3RpZmljYXRpb25EZWxlZ2F0ZSA6IE5T
T2JqZWN0IDxXS1VJRGVsZWdhdGVQcml2YXRlPiB7CiAgICAgYm9vbCBfYWxsb3dOb3RpZmljYXRp
b25zOwogfQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmgJ
KHJldmlzaW9uIDIyMTkwNykKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2Vi
Vmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC02Niw2ICs2Niw3IEBACiAtICh2b2lkKW1vdXNlTW92
ZVRvUG9pbnQ6KE5TUG9pbnQpcG9pbnQgd2l0aEZsYWdzOihOU0V2ZW50TW9kaWZpZXJGbGFncylm
bGFnczsKIC0gKHZvaWQpc2VuZENsaWNrc0F0UG9pbnQ6KE5TUG9pbnQpcG9pbnQgbnVtYmVyT2ZD
bGlja3M6KE5TVUludGVnZXIpbnVtYmVyT2ZDbGlja3M7CiAtICh2b2lkKXR5cGVDaGFyYWN0ZXI6
KGNoYXIpY2hhcmFjdGVyOworLSAoTlNXaW5kb3cgKilob3N0V2luZG93OwogQGVuZAogI2VuZGlm
CiAKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0JKHJl
dmlzaW9uIDIyMTkwNykKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmll
dy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzQ5LDYgKzM0OSwxMSBAQCAtICh2b2lkKXNlbmRDbGlj
a3NBdFBvaW50OihOU1BvaW50KXBvaW50CiAgICAgfQogfQogCistIChOU1dpbmRvdyAqKWhvc3RX
aW5kb3cKK3sKKyAgICByZXR1cm4gX2hvc3RXaW5kb3cuZ2V0KCk7Cit9CisKIC0gKHZvaWQpdHlw
ZUNoYXJhY3RlcjooY2hhciljaGFyYWN0ZXIgewogICAgIE5TU3RyaW5nICpjaGFyYWN0ZXJBc1N0
cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJWMiICwgY2hhcmFjdGVyXTsKICAg
ICBOU0V2ZW50VHlwZSBrZXlEb3duRXZlbnRUeXBlID0gTlNFdmVudFR5cGVLZXlEb3duOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320790</attachid>
            <date>2017-09-14 10:53:47 -0700</date>
            <delta_ts>2017-09-14 16:35:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176889-20170914105346.patch</filename>
            <type>text/plain</type>
            <size>52219</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjIwMzApCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDczIEBACisyMDE3LTA5LTE0ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFdLVUlEZWxl
Z2F0ZVByaXZhdGUgZXF1aXZhbGVudCBvZiBXS1BhZ2VVSUNsaWVudCdzIGRyYXdIZWFkZXIsIGRy
YXdGb290ZXIsIGhlYWRlckhlaWdodCwgYW5kIGZvb3RlckhlaWdodAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2ODg5CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8yOTI3MDAzNT4KKworICAgICAgICBSZXZpZXdlZCBieSBBbmR5IEVzdGVzLgorCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VMb2Fk
QWx0ZXJuYXRlSFRNTFN0cmluZyk6CisgICAgICAgIChXS1BhZ2VMb2FkQWx0ZXJuYXRlSFRNTFN0
cmluZ1dpdGhVc2VyRGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dz
aW5nQ29udGV4dENvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLQnJvd3NpbmdDb250ZXh0Q29u
dHJvbGxlciBsb2FkQWx0ZXJuYXRlSFRNTFN0cmluZzpiYXNlVVJMOmZvclVucmVhY2hhYmxlVVJM
Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAo
LVtXS1dlYlZpZXcgX2xvYWRBbHRlcm5hdGVIVE1MU3RyaW5nOmJhc2VVUkw6Zm9yVW5yZWFjaGFi
bGVVUkw6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6VUlE
ZWxlZ2F0ZTo6c2V0RGVsZWdhdGUpOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNs
aWVudDo6aGVhZGVySGVpZ2h0KToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGll
bnQ6OmZvb3RlckhlaWdodCk6CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50
OjpkcmF3SGVhZGVyKToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmRy
YXdGb290ZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XS1JlbG9hZEZyYW1lRXJyb3JS
ZWNvdmVyeUF0dGVtcHRlci5tbToKKyAgICAgICAgKC1bV0tSZWxvYWRGcmFtZUVycm9yUmVjb3Zl
cnlBdHRlbXB0ZXIgYXR0ZW1wdFJlY292ZXJ5XSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cHJpbnRPcGVy
YXRpb25XaXRoUHJpbnRJbmZvKToKKyAgICAgICAgKiBVSVByb2Nlc3MvRnJhbWVMb2FkU3RhdGUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRTdGF0ZTo6ZGlkU3RhcnRQcm92aXNpb25h
bExvYWQpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRTdGF0ZTo6ZGlkUmVjZWl2ZVNlcnZl
clJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2Fk
U3RhdGU6OmRpZEZhaWxQcm92aXNpb25hbExvYWQpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxv
YWRTdGF0ZTo6ZGlkQ29tbWl0TG9hZCk6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZFN0YXRl
OjpkaWRTYW1lRG9jdW1lbnROb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxv
YWRTdGF0ZTo6c2V0VW5yZWFjaGFibGVVUkwpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRT
dGF0ZTo6RnJhbWVMb2FkU3RhdGUpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9GcmFt
ZUxvYWRTdGF0ZS5oOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRTdGF0ZTo6dXJsIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkU3RhdGU6OnByb3Zpc2lvbmFsVVJMIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkU3RhdGU6OnVucmVhY2hhYmxlVVJMIGNvbnN0
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkZyYW1lUHJveHk6OmxvYWRVUkwpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZVBy
b3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1l
UHJveHk6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZyYW1lUHJveHk6OmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZVByb3h5OjpzZXRVbnJlYWNoYWJsZVVSTCk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJh
bWVQcm94eTo6dXJsIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVQcm94eTo6cHJv
dmlzaW9uYWxVUkwgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZVByb3h5Ojp1bnJl
YWNoYWJsZVVSTCBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVTZXJ2
ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpkaWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1lKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92
aXNpb25hbExvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEaWRDaGFuZ2VQcm92aXNpb25hbFVSTCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFB1c2hTdGF0ZVdp
dGhpblBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEaWRSZXBsYWNlU3RhdGVXaXRoaW5QYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUG9wU3RhdGVXaXRoaW5QYWdlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExv
YWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6bG9hZFVSTEluRnJhbWUpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW46CisKIDIwMTctMDktMTQgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNp
YUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW1dheWxhbmRdIEZsaWNrZXJpbmcgd2hlbiBy
ZXNpemluZyB0aGUgd2luZG93CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9GcmFtZUxv
YWRTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRnJhbWVM
b2FkU3RhdGUuY3BwCShyZXZpc2lvbiAyMjE5MDcpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9GcmFtZUxvYWRTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDE2ICsyOCwxMSBAQAog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotRnJhbWVMb2FkU3RhdGU6OkZyYW1lTG9hZFN0YXRlKCkK
LSAgICA6IG1fc3RhdGUoU3RhdGU6OkZpbmlzaGVkKQotewotfQotCiBGcmFtZUxvYWRTdGF0ZTo6
fkZyYW1lTG9hZFN0YXRlKCkKIHsKIH0KIAotdm9pZCBGcmFtZUxvYWRTdGF0ZTo6ZGlkU3RhcnRQ
cm92aXNpb25hbExvYWQoY29uc3QgU3RyaW5nJiB1cmwpCit2b2lkIEZyYW1lTG9hZFN0YXRlOjpk
aWRTdGFydFByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKIHsKICAgICBB
U1NFUlQobV9wcm92aXNpb25hbFVSTC5pc0VtcHR5KCkpOwogCkBAIC00NSw3ICs0MCw3IEBAIHZv
aWQgRnJhbWVMb2FkU3RhdGU6OmRpZFN0YXJ0UHJvdmlzaW9uYWwKICAgICBtX3Byb3Zpc2lvbmFs
VVJMID0gdXJsOwogfQogCi12b2lkIEZyYW1lTG9hZFN0YXRlOjpkaWRSZWNlaXZlU2VydmVyUmVk
aXJlY3RGb3JQcm92aXNpb25hbExvYWQoY29uc3QgU3RyaW5nJiB1cmwpCit2b2lkIEZyYW1lTG9h
ZFN0YXRlOjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoY29uc3Qg
V2ViQ29yZTo6VVJMJiB1cmwpCiB7CiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OlByb3Zp
c2lvbmFsKTsKIApAQCAtNTcsNyArNTIsNyBAQCB2b2lkIEZyYW1lTG9hZFN0YXRlOjpkaWRGYWls
UHJvdmlzaW9uYWxMCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OlByb3Zpc2lvbmFsKTsK
IAogICAgIG1fc3RhdGUgPSBTdGF0ZTo6RmluaXNoZWQ7Ci0gICAgbV9wcm92aXNpb25hbFVSTCA9
IFN0cmluZygpOworICAgIG1fcHJvdmlzaW9uYWxVUkwgPSB7IH07CiAgICAgbV91bnJlYWNoYWJs
ZVVSTCA9IG1fbGFzdFVucmVhY2hhYmxlVVJMOwogfQogCkBAIC02Nyw3ICs2Miw3IEBAIHZvaWQg
RnJhbWVMb2FkU3RhdGU6OmRpZENvbW1pdExvYWQoKQogCiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpD
b21taXR0ZWQ7CiAgICAgbV91cmwgPSBtX3Byb3Zpc2lvbmFsVVJMOwotICAgIG1fcHJvdmlzaW9u
YWxVUkwgPSBTdHJpbmcoKTsKKyAgICBtX3Byb3Zpc2lvbmFsVVJMID0geyB9OwogfQogCiB2b2lk
IEZyYW1lTG9hZFN0YXRlOjpkaWRGaW5pc2hMb2FkKCkKQEAgLTg2LDEyICs4MSwxMiBAQCB2b2lk
IEZyYW1lTG9hZFN0YXRlOjpkaWRGYWlsTG9hZCgpCiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpGaW5p
c2hlZDsKIH0KIAotdm9pZCBGcmFtZUxvYWRTdGF0ZTo6ZGlkU2FtZURvY3VtZW50Tm90aWZpY2F0
aW9uKGNvbnN0IFN0cmluZyYgdXJsKQordm9pZCBGcmFtZUxvYWRTdGF0ZTo6ZGlkU2FtZURvY3Vt
ZW50Tm90aWZpY2F0aW9uKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKQogewogICAgIG1fdXJsID0g
dXJsOwogfQogCi12b2lkIEZyYW1lTG9hZFN0YXRlOjpzZXRVbnJlYWNoYWJsZVVSTChjb25zdCBT
dHJpbmcmIHVucmVhY2hhYmxlVVJMKQordm9pZCBGcmFtZUxvYWRTdGF0ZTo6c2V0VW5yZWFjaGFi
bGVVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiB1bnJlYWNoYWJsZVVSTCkKIHsKICAgICBtX2xhc3RV
bnJlYWNoYWJsZVVSTCA9IG1fdW5yZWFjaGFibGVVUkw7CiAgICAgbV91bnJlYWNoYWJsZVVSTCA9
IHVucmVhY2hhYmxlVVJMOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRnJhbWVMb2Fk
U3RhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9GcmFtZUxvYWRT
dGF0ZS5oCShyZXZpc2lvbiAyMjE5MDcpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9GcmFt
ZUxvYWRTdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxNiArMjMsMTQgQEAKICAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEZyYW1lTG9hZFN0YXRl
X2gKLSNkZWZpbmUgRnJhbWVMb2FkU3RhdGVfaAorI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAogY2xhc3MgRnJhbWVMb2FkU3RhdGUgewogcHVibGljOgotICAgIEZyYW1l
TG9hZFN0YXRlKCk7CiAgICAgfkZyYW1lTG9hZFN0YXRlKCk7CiAKICAgICBlbnVtIGNsYXNzIFN0
YXRlIHsKQEAgLTQxLDMxICszOSwyOSBAQCBwdWJsaWM6CiAgICAgICAgIEZpbmlzaGVkCiAgICAg
fTsKIAotICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWQoY29uc3QgU3RyaW5nJiB1cmwp
OwotICAgIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKGNv
bnN0IFN0cmluZyYgdXJsKTsKKyAgICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKGNvbnN0
IFdlYkNvcmU6OlVSTCYpOworICAgIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJv
dmlzaW9uYWxMb2FkKGNvbnN0IFdlYkNvcmU6OlVSTCYpOwogICAgIHZvaWQgZGlkRmFpbFByb3Zp
c2lvbmFsTG9hZCgpOwogCiAgICAgdm9pZCBkaWRDb21taXRMb2FkKCk7CiAgICAgdm9pZCBkaWRG
aW5pc2hMb2FkKCk7CiAgICAgdm9pZCBkaWRGYWlsTG9hZCgpOwogCi0gICAgdm9pZCBkaWRTYW1l
RG9jdW1lbnROb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBkaWRTYW1lRG9j
dW1lbnROb3RpZmljYXRpb24oY29uc3QgV2ViQ29yZTo6VVJMJik7CiAKICAgICBTdGF0ZSBzdGF0
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KLSAgICBjb25zdCBTdHJpbmcmIHVybCgpIGNv
bnN0IHsgcmV0dXJuIG1fdXJsOyB9Ci0gICAgY29uc3QgU3RyaW5nJiBwcm92aXNpb25hbFVSTCgp
IGNvbnN0IHsgcmV0dXJuIG1fcHJvdmlzaW9uYWxVUkw7IH0KKyAgICBjb25zdCBXZWJDb3JlOjpV
UkwmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CisgICAgY29uc3QgV2ViQ29yZTo6VVJM
JiBwcm92aXNpb25hbFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvdmlzaW9uYWxVUkw7IH0KIAot
ICAgIHZvaWQgc2V0VW5yZWFjaGFibGVVUkwoY29uc3QgU3RyaW5nJik7Ci0gICAgY29uc3QgU3Ry
aW5nJiB1bnJlYWNoYWJsZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fdW5yZWFjaGFibGVVUkw7IH0K
KyAgICB2b2lkIHNldFVucmVhY2hhYmxlVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpOworICAgIGNv
bnN0IFdlYkNvcmU6OlVSTCYgdW5yZWFjaGFibGVVUkwoKSBjb25zdCB7IHJldHVybiBtX3VucmVh
Y2hhYmxlVVJMOyB9CiAKIHByaXZhdGU6Ci0gICAgU3RhdGUgbV9zdGF0ZTsKLSAgICBTdHJpbmcg
bV91cmw7Ci0gICAgU3RyaW5nIG1fcHJvdmlzaW9uYWxVUkw7Ci0gICAgU3RyaW5nIG1fdW5yZWFj
aGFibGVVUkw7Ci0gICAgU3RyaW5nIG1fbGFzdFVucmVhY2hhYmxlVVJMOworICAgIFN0YXRlIG1f
c3RhdGUgeyBTdGF0ZTo6RmluaXNoZWQgfTsKKyAgICBXZWJDb3JlOjpVUkwgbV91cmw7CisgICAg
V2ViQ29yZTo6VVJMIG1fcHJvdmlzaW9uYWxVUkw7CisgICAgV2ViQ29yZTo6VVJMIG1fdW5yZWFj
aGFibGVVUkw7CisgICAgV2ViQ29yZTo6VVJMIG1fbGFzdFVucmVhY2hhYmxlVVJMOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBGcmFtZUxvYWRTdGF0ZV9oCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcAkocmV2aXNpb24gMjIx
OTA3KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTc2LDcgKzc2LDcgQEAgYm9vbCBXZWJGcmFtZVByb3h5Ojppc01haW5GcmFt
ZSgpIGNvbnN0CiAgICAgcmV0dXJuIHRoaXMgPT0gbV9wYWdlLT5tYWluRnJhbWUoKTsKIH0KIAot
dm9pZCBXZWJGcmFtZVByb3h5Ojpsb2FkVVJMKGNvbnN0IFN0cmluZyYgdXJsKQordm9pZCBXZWJG
cmFtZVByb3h5Ojpsb2FkVVJMKGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlmICghbV9wYWdlKQog
ICAgICAgICByZXR1cm47CkBAIC0xMzAsMTIgKzEzMCwxMiBAQCBib29sIFdlYkZyYW1lUHJveHk6
OmlzRGlzcGxheWluZ1BERkRvY3VtCiAgICAgcmV0dXJuIE1JTUVUeXBlUmVnaXN0cnk6OmlzUERG
T3JQb3N0U2NyaXB0TUlNRVR5cGUobV9NSU1FVHlwZSk7CiB9CiAKLXZvaWQgV2ViRnJhbWVQcm94
eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWQoY29uc3QgU3RyaW5nJiB1cmwpCit2b2lkIFdlYkZy
YW1lUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKGNvbnN0IFVSTCYgdXJsKQogewogICAg
IG1fZnJhbWVMb2FkU3RhdGUuZGlkU3RhcnRQcm92aXNpb25hbExvYWQodXJsKTsKIH0KIAotdm9p
ZCBXZWJGcmFtZVByb3h5OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExv
YWQoY29uc3QgU3RyaW5nJiB1cmwpCit2b2lkIFdlYkZyYW1lUHJveHk6OmRpZFJlY2VpdmVTZXJ2
ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZChjb25zdCBVUkwmIHVybCkKIHsKICAgICBtX2Zy
YW1lTG9hZFN0YXRlLmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCh1
cmwpOwogfQpAQCAtMTY2LDcgKzE2Niw3IEBAIHZvaWQgV2ViRnJhbWVQcm94eTo6ZGlkRmFpbExv
YWQoKQogICAgIG1fZnJhbWVMb2FkU3RhdGUuZGlkRmFpbExvYWQoKTsKIH0KIAotdm9pZCBXZWJG
cmFtZVByb3h5OjpkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKGNvbnN0IFN0cmluZyYgdXJsKQor
dm9pZCBXZWJGcmFtZVByb3h5OjpkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKGNvbnN0IFVSTCYg
dXJsKQogewogICAgIG1fZnJhbWVMb2FkU3RhdGUuZGlkU2FtZURvY3VtZW50Tm90aWZpY2F0aW9u
KHVybCk7CiB9CkBAIC0xNzYsNyArMTc2LDcgQEAgdm9pZCBXZWJGcmFtZVByb3h5OjpkaWRDaGFu
Z2VUaXRsZShjb25zdAogICAgIG1fdGl0bGUgPSB0aXRsZTsKIH0KIAotdm9pZCBXZWJGcmFtZVBy
b3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKFdlYkNvcmU6OlBvbGljeUFjdGlvbiBhY3Rpb24s
IHVpbnQ2NF90IGxpc3RlbmVySUQsIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgY29uc3Qg
V2Vic2l0ZVBvbGljaWVzJiB3ZWJzaXRlUG9saWNpZXMpCit2b2lkIFdlYkZyYW1lUHJveHk6OnJl
Y2VpdmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIGFjdGlvbiwgdWludDY0X3QgbGlzdGVu
ZXJJRCwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBjb25zdCBXZWJzaXRlUG9saWNpZXMm
IHdlYnNpdGVQb2xpY2llcykKIHsKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuOwpA
QCAtMjMyLDEzICsyMzIsMTMgQEAgdm9pZCBXZWJGcmFtZVByb3h5OjpnZXRSZXNvdXJjZURhdGEo
QVBJOgogICAgIG1fcGFnZS0+Z2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKHRoaXMsIHJlc291cmNl
VVJMLCBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKIH0KIAotdm9pZCBXZWJGcmFtZVByb3h5
OjpzZXRVbnJlYWNoYWJsZVVSTChjb25zdCBTdHJpbmcmIHVucmVhY2hhYmxlVVJMKQordm9pZCBX
ZWJGcmFtZVByb3h5OjpzZXRVbnJlYWNoYWJsZVVSTChjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJM
KQogewogICAgIG1fZnJhbWVMb2FkU3RhdGUuc2V0VW5yZWFjaGFibGVVUkwodW5yZWFjaGFibGVV
UkwpOwogfQogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQotYm9vbCBXZWJGcmFtZVBy
b3h5OjpkaWRIYW5kbGVDb250ZW50RmlsdGVyVW5ibG9ja05hdmlnYXRpb24oY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQorYm9vbCBXZWJGcmFtZVByb3h5OjpkaWRIYW5k
bGVDb250ZW50RmlsdGVyVW5ibG9ja05hdmlnYXRpb24oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0KQogewogICAgIGlmICghbV9jb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuY2FuSGFu
ZGxlUmVxdWVzdChyZXF1ZXN0KSkgewogICAgICAgICBtX2NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFu
ZGxlciA9IHsgfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmgJ
KHJldmlzaW9uIDIyMTkwNykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJv
eHkuaAkod29ya2luZyBjb3B5KQpAQCAtNzcsMTQgKzc3LDE0IEBAIHB1YmxpYzoKIAogICAgIEZy
YW1lTG9hZFN0YXRlJiBmcmFtZUxvYWRTdGF0ZSgpIHsgcmV0dXJuIG1fZnJhbWVMb2FkU3RhdGU7
IH0KIAotICAgIHZvaWQgbG9hZFVSTChjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGxvYWRVUkwo
Y29uc3QgV2ViQ29yZTo6VVJMJik7CiAgICAgdm9pZCBzdG9wTG9hZGluZygpIGNvbnN0OwogCi0g
ICAgY29uc3QgU3RyaW5nJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lTG9hZFN0YXRlLnVy
bCgpOyB9Ci0gICAgY29uc3QgU3RyaW5nJiBwcm92aXNpb25hbFVSTCgpIGNvbnN0IHsgcmV0dXJu
IG1fZnJhbWVMb2FkU3RhdGUucHJvdmlzaW9uYWxVUkwoKTsgfQorICAgIGNvbnN0IFdlYkNvcmU6
OlVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZUxvYWRTdGF0ZS51cmwoKTsgfQorICAg
IGNvbnN0IFdlYkNvcmU6OlVSTCYgcHJvdmlzaW9uYWxVUkwoKSBjb25zdCB7IHJldHVybiBtX2Zy
YW1lTG9hZFN0YXRlLnByb3Zpc2lvbmFsVVJMKCk7IH0KIAotICAgIHZvaWQgc2V0VW5yZWFjaGFi
bGVVUkwoY29uc3QgU3RyaW5nJik7Ci0gICAgY29uc3QgU3RyaW5nJiB1bnJlYWNoYWJsZVVSTCgp
IGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVMb2FkU3RhdGUudW5yZWFjaGFibGVVUkwoKTsgfQorICAg
IHZvaWQgc2V0VW5yZWFjaGFibGVVUkwoY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgY29uc3Qg
V2ViQ29yZTo6VVJMJiB1bnJlYWNoYWJsZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVMb2Fk
U3RhdGUudW5yZWFjaGFibGVVUkwoKTsgfQogCiAgICAgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSgp
IGNvbnN0IHsgcmV0dXJuIG1fTUlNRVR5cGU7IH0KICAgICBib29sIGNvbnRhaW5zUGx1Z2luRG9j
dW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRhaW5zUGx1Z2luRG9jdW1lbnQ7IH0KQEAgLTEw
NSwxMyArMTA1LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGdldE1haW5SZXNvdXJjZURhdGEoRnVu
Y3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAgIHZv
aWQgZ2V0UmVzb3VyY2VEYXRhKEFQSTo6VVJMKiwgRnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwg
Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogCi0gICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFs
TG9hZChjb25zdCBTdHJpbmcmIHVybCk7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJl
Y3RGb3JQcm92aXNpb25hbExvYWQoY29uc3QgU3RyaW5nJiB1cmwpOworICAgIHZvaWQgZGlkU3Rh
cnRQcm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgdm9pZCBkaWRSZWNl
aXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6VVJMJik7
CiAgICAgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgdm9pZCBkaWRDb21taXRM
b2FkKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIFdlYkNlcnRpZmljYXRlSW5mbyYsIGJvb2wg
Y29udGFpbnNQbHVnaW5Eb2N1bWVudCk7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkKCk7CiAgICAg
dm9pZCBkaWRGYWlsTG9hZCgpOwotICAgIHZvaWQgZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbihj
b25zdCBTdHJpbmcmKTsgLy8gZWcuIGFuY2hvciBuYXZpZ2F0aW9uLCBzZXNzaW9uIHN0YXRlIGNo
YW5nZS4KKyAgICB2b2lkIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb24oY29uc3QgV2ViQ29yZTo6
VVJMJik7IC8vIGVnLiBhbmNob3IgbmF2aWdhdGlvbiwgc2Vzc2lvbiBzdGF0ZSBjaGFuZ2UuCiAg
ICAgdm9pZCBkaWRDaGFuZ2VUaXRsZShjb25zdCBTdHJpbmcmKTsKIAogICAgIC8vIFBvbGljeSBv
cGVyYXRpb25zLgpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CShyZXZpc2lvbiAyMjE5ODIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NjEsNyArOTYxLDcgQEAgUmVmUHRyPEFQSTo6TmF2
aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpsbwogICAgIHJldHVybiBXVEZNb3ZlKG5hdmlnYXRpb24p
OwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6bG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcoY29uc3Qg
U3RyaW5nJiBodG1sU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIGNvbnN0IFN0cmluZyYg
dW5yZWFjaGFibGVVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5
Ojpsb2FkQWx0ZXJuYXRlSFRNTFN0cmluZyhjb25zdCBTdHJpbmcmIGh0bWxTdHJpbmcsIGNvbnN0
IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgV2ViQ29yZTo6VVJMJiB1bnJlYWNoYWJsZVVS
TCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQogewogICAgIC8vIFdoZW4gdGhlIFVJUHJvY2VzcyBp
cyBpbiB0aGUgcHJvY2VzcyBvZiBoYW5kbGluZyBhIGZhaWxpbmcgcHJvdmlzaW9uYWwgbG9hZCwg
ZG8gbm90IGF0dGVtcHQgdG8KICAgICAvLyBzdGFydCBhIHNlY29uZCBhbHRlcm5hdGl2ZSBIVE1M
IGxvYWQgYXMgdGhpcyB3aWxsIHByZXZlbnQgdGhlIHBhZ2UgbG9hZCBzdGF0ZSBmcm9tIGJlaW5n
CkBAIC0zMTQ2LDcgKzMxNDYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRGVzdHJveU5hdmln
YXRpb24oCiAgICAgbV9uYXZpZ2F0aW9uU3RhdGUtPmRpZERlc3Ryb3lOYXZpZ2F0aW9uKG5hdmln
YXRpb25JRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3Qg
U3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdW5yZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJEYXRh
JiB1c2VyRGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6
VVJMJiYgdXJsLCBXZWJDb3JlOjpVUkwmJiB1bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEm
IHVzZXJEYXRhKQogewogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKG1fcGFnZUNs
aWVudCk7CiAKQEAgLTMxODAsNyArMzE4MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRTdGFy
dFByb3Zpc2lvbmFsTG8KICAgICAgICAgbV9sb2FkZXJDbGllbnQtPmRpZFN0YXJ0UHJvdmlzaW9u
YWxMb2FkRm9yRnJhbWUoKnRoaXMsICpmcmFtZSwgbmF2aWdhdGlvbi5nZXQoKSwgbV9wcm9jZXNz
LT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CiB9
CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNp
b25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCit2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpVUkwm
JiB1cmwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKICAgICBQYWdlQ2xpZW50UHJvdGVj
dG9yIHByb3RlY3RvcihtX3BhZ2VDbGllbnQpOwogCkBAIC0zMjM0LDcgKzMyMzQsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6ZGlkQ2FuY2VsQ2xpZW50UmVkaXJlCiAgICAgfQogfQogCi12b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZSh1aW50NjRfdCBmcmFt
ZUlELCB1aW50NjRfdCwgY29uc3QgU3RyaW5nJiB1cmwpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
Q2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCwg
V2ViQ29yZTo6VVJMJiYgdXJsKQogewogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9y
KG1fcGFnZUNsaWVudCk7CiAKQEAgLTM0ODIsNyArMzQ4Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpkaWRGYWlsTG9hZEZvckZyYW1lKHUKICAgICAgICAgbV9wYWdlQ2xpZW50LmRpZEZhaWxMb2Fk
Rm9yTWFpbkZyYW1lKCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRTYW1lRG9jdW1lbnRO
YXZpZ2F0aW9uRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklE
LCB1aW50MzJfdCBvcGFxdWVTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSwgY29uc3QgU3RyaW5n
JiB1cmwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRT
YW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCB1aW50MzJfdCBvcGFxdWVTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSwg
V2ViQ29yZTo6VVJMJiYgdXJsLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgUGFn
ZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IobV9wYWdlQ2xpZW50KTsKIApJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDIyMTk4MikKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOTUs
NyArMzk1LDcgQEAgcHVibGljOgogICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IGxvYWRGaWxl
KGNvbnN0IFN0cmluZyYgZmlsZVVSTCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURpcmVjdG9yeVVS
TCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhID0gbnVsbHB0cik7CiAgICAgUmVmUHRyPEFQSTo6TmF2
aWdhdGlvbj4gbG9hZERhdGEoQVBJOjpEYXRhKiwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29u
c3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVjdCog
dXNlckRhdGEgPSBudWxscHRyKTsKICAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBsb2FkSFRN
TFN0cmluZyhjb25zdCBTdHJpbmcmIGh0bWxTdHJpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwg
QVBJOjpPYmplY3QqIHVzZXJEYXRhID0gbnVsbHB0cik7Ci0gICAgdm9pZCBsb2FkQWx0ZXJuYXRl
SFRNTFN0cmluZyhjb25zdCBTdHJpbmcmIGh0bWxTdHJpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVS
TCwgY29uc3QgU3RyaW5nJiB1bnJlYWNoYWJsZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhID0g
bnVsbHB0cik7CisgICAgdm9pZCBsb2FkQWx0ZXJuYXRlSFRNTFN0cmluZyhjb25zdCBTdHJpbmcm
IGh0bWxTdHJpbmcsIGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgV2ViQ29yZTo6
VVJMJiB1bnJlYWNoYWJsZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhID0gbnVsbHB0cik7CiAg
ICAgdm9pZCBsb2FkUGxhaW5UZXh0U3RyaW5nKGNvbnN0IFN0cmluZyYsIEFQSTo6T2JqZWN0KiB1
c2VyRGF0YSA9IG51bGxwdHIpOwogICAgIHZvaWQgbG9hZFdlYkFyY2hpdmVEYXRhKEFQSTo6RGF0
YSosIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSA9IG51bGxwdHIpOwogICAgIHZvaWQgbmF2aWdhdGVU
b1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2soY29uc3QgU3RyaW5nJiB1cmwsIFdlYkNvcmU6Oklu
dFBvaW50IGRvY3VtZW50UG9pbnQsIFdlYkNvcmU6OkludFBvaW50IHNjcmVlblBvaW50KTsKQEAg
LTEyNDgsMTcgKzEyNDgsMTcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZENyZWF0ZU1haW5GcmFt
ZSh1aW50NjRfdCBmcmFtZUlEKTsKICAgICB2b2lkIGRpZENyZWF0ZVN1YmZyYW1lKHVpbnQ2NF90
IGZyYW1lSUQpOwogCi0gICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiB1cmws
IGNvbnN0IFN0cmluZyYgdW5yZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJEYXRhJik7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50
NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYsIGNvbnN0
IFVzZXJEYXRhJik7CisgICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6VVJMJiYsIFdl
YkNvcmU6OlVSTCYmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0YSYpOworICAgIHZvaWQg
ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0
X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpVUkwmJiwgY29uc3Qg
VXNlckRhdGEmKTsKICAgICB2b2lkIHdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSh1
aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHVybCwgZG91YmxlIGRlbGF5KTsKICAgICB2
b2lkIGRpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCk7Ci0g
ICAgdm9pZCBkaWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQs
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiB1cmwpOworICAgIHZvaWQgZGlk
Q2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlVSTCYmKTsKICAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25h
bExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29u
c3QgU3RyaW5nJiBwcm92aXNpb25hbFVSTCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYs
IGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCBkaWRDb21taXRMb2FkRm9yRnJhbWUodWludDY0
X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBmcmFtZUxvYWRU
eXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mLCBib29sIGNvbnRhaW5zUGx1Z2lu
RG9jdW1lbnQsIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBmb3Jj
ZWRIYXNJbnNlY3VyZUNvbnRlbnQsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCBkaWRGaW5p
c2hEb2N1bWVudExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUo
dWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBVc2VyRGF0YSYp
OwogICAgIHZvaWQgZGlkRmFpbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBVc2Vy
RGF0YSYpOwotICAgIHZvaWQgZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKHVpbnQ2
NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgdWludDMyX3Qgc2FtZURvY3VtZW50
TmF2aWdhdGlvblR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFVzZXJEYXRhJik7CisgICAgdm9p
ZCBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWlu
dDY0X3QgbmF2aWdhdGlvbklELCB1aW50MzJfdCBzYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSwg
V2ViQ29yZTo6VVJMJiYsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCBkaWRDaGFuZ2VNYWlu
RG9jdW1lbnQodWludDY0X3QgZnJhbWVJRCk7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVUaXRsZUZv
ckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFVzZXJEYXRhJik7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluCShyZXZpc2lvbiAyMjE5ODIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTExNSwxMSArMTE1LDExIEBA
IG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgRGlkQ3JlYXRlU3ViZnJhbWUodWludDY0
X3QgZnJhbWVJRCkKIAogICAgICMgRnJhbWUgbG9hZCBtZXNzYWdlcwotICAgIERpZFN0YXJ0UHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBTdHJpbmcgdXJsLCBTdHJpbmcgdW5yZWFjaGFibGVVUkwsIFdlYktpdDo6VXNlckRhdGEg
dXNlckRhdGEpCi0gICAgRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBTdHJpbmcg
dXJsLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQorICAgIERpZFN0YXJ0UHJvdmlzaW9uYWxM
b2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJD
b3JlOjpVUkwgdXJsLCBXZWJDb3JlOjpVUkwgdW5yZWFjaGFibGVVUkwsIFdlYktpdDo6VXNlckRh
dGEgdXNlckRhdGEpCisgICAgRGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxM
b2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJD
b3JlOjpVUkwgdXJsLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogICAgIFdpbGxQZXJmb3Jt
Q2xpZW50UmVkaXJlY3RGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgdXJsLCBkb3Vi
bGUgZGVsYXkpCiAgICAgRGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSh1aW50NjRfdCBm
cmFtZUlEKQotICAgIERpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWUodWludDY0X3QgZnJh
bWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBTdHJpbmcgdXJsKQorICAgIERpZENoYW5nZVBy
b3Zpc2lvbmFsVVJMRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBXZWJDb3JlOjpVUkwgdXJsKQogICAgIERpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFt
ZSh1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZy
YW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgU3RyaW5nIHByb3Zpc2lv
bmFsVVJMLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yLCBXZWJLaXQ6OlVzZXJEYXRhIHVz
ZXJEYXRhKQogICAgIERpZENvbW1pdExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIFN0cmluZyBtaW1lVHlwZSwgYm9vbCBoYXNDdXN0b21Db250ZW50
UHJvdmlkZXIsIHVpbnQzMl90IGxvYWRUeXBlLCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8gY2Vy
dGlmaWNhdGVJbmZvLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIFdl
YktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgRGlkRmFpbExvYWRGb3JGcmFtZSh1aW50NjRf
dCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlJlc291cmNlRXJyb3Ig
ZXJyb3IsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCkBAIC0xMzIsNyArMTMyLDcgQEAgbWVz
c2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBEaWREaXNwbGF5SW5zZWN1cmVDb250ZW50Rm9y
RnJhbWUodWludDY0X3QgZnJhbWVJRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKICAgICBE
aWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBXZWJLaXQ6OlVz
ZXJEYXRhIHVzZXJEYXRhKQogICAgIERpZERldGVjdFhTU0ZvckZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCi0gICAgRGlkU2FtZURvY3VtZW50TmF2aWdh
dGlvbkZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgdWlu
dDMyX3QgdHlwZSwgU3RyaW5nIHVybCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKKyAgICBE
aWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0
X3QgbmF2aWdhdGlvbklELCB1aW50MzJfdCB0eXBlLCBXZWJDb3JlOjpVUkwgdXJsLCBXZWJLaXQ6
OlVzZXJEYXRhIHVzZXJEYXRhKQogICAgIERpZENoYW5nZU1haW5Eb2N1bWVudCh1aW50NjRfdCBm
cmFtZUlEKTsKICAgICBEaWREZXN0cm95TmF2aWdhdGlvbih1aW50NjRfdCBuYXZpZ2F0aW9uSUQp
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkocmV2aXNp
b24gMjIxOTgyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjA5LDEyICsyMDksMTIgQEAgdm9pZCBXS1BhZ2VMb2FkSFRNTFN0
cmluZ1dpdGhVc2VyRGF0YShXSwogCiB2b2lkIFdLUGFnZUxvYWRBbHRlcm5hdGVIVE1MU3RyaW5n
KFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBodG1sU3RyaW5nUmVmLCBXS1VSTFJlZiBi
YXNlVVJMUmVmLCBXS1VSTFJlZiB1bnJlYWNoYWJsZVVSTFJlZikKIHsKLSAgICB0b0ltcGwocGFn
ZVJlZiktPmxvYWRBbHRlcm5hdGVIVE1MU3RyaW5nKHRvV1RGU3RyaW5nKGh0bWxTdHJpbmdSZWYp
LCB0b1dURlN0cmluZyhiYXNlVVJMUmVmKSwgdG9XVEZTdHJpbmcodW5yZWFjaGFibGVVUkxSZWYp
KTsKKyAgICB0b0ltcGwocGFnZVJlZiktPmxvYWRBbHRlcm5hdGVIVE1MU3RyaW5nKHRvV1RGU3Ry
aW5nKGh0bWxTdHJpbmdSZWYpLCBVUkwoVVJMKCksIHRvV1RGU3RyaW5nKGJhc2VVUkxSZWYpKSwg
VVJMKFVSTCgpLCB0b1dURlN0cmluZyh1bnJlYWNoYWJsZVVSTFJlZikpKTsKIH0KIAogdm9pZCBX
S1BhZ2VMb2FkQWx0ZXJuYXRlSFRNTFN0cmluZ1dpdGhVc2VyRGF0YShXS1BhZ2VSZWYgcGFnZVJl
ZiwgV0tTdHJpbmdSZWYgaHRtbFN0cmluZ1JlZiwgV0tVUkxSZWYgYmFzZVVSTFJlZiwgV0tVUkxS
ZWYgdW5yZWFjaGFibGVVUkxSZWYsIFdLVHlwZVJlZiB1c2VyRGF0YVJlZikKIHsKLSAgICB0b0lt
cGwocGFnZVJlZiktPmxvYWRBbHRlcm5hdGVIVE1MU3RyaW5nKHRvV1RGU3RyaW5nKGh0bWxTdHJp
bmdSZWYpLCB0b1dURlN0cmluZyhiYXNlVVJMUmVmKSwgdG9XVEZTdHJpbmcodW5yZWFjaGFibGVV
UkxSZWYpLCB0b0ltcGwodXNlckRhdGFSZWYpKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPmxvYWRB
bHRlcm5hdGVIVE1MU3RyaW5nKHRvV1RGU3RyaW5nKGh0bWxTdHJpbmdSZWYpLCBVUkwoVVJMKCks
IHRvV1RGU3RyaW5nKGJhc2VVUkxSZWYpKSwgVVJMKFVSTCgpLCB0b1dURlN0cmluZyh1bnJlYWNo
YWJsZVVSTFJlZikpLCB0b0ltcGwodXNlckRhdGFSZWYpKTsKIH0KIAogdm9pZCBXS1BhZ2VMb2Fk
UGxhaW5UZXh0U3RyaW5nKFdLUGFnZVJlZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBwbGFpblRleHRT
dHJpbmdSZWYpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93
c2luZ0NvbnRleHRDb250cm9sbGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0JKHJldmlzaW9u
IDIyMTkwNykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5n
Q29udGV4dENvbnRyb2xsZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTE1Nyw3ICsxNTcsNyBAQCAt
ICh2b2lkKWxvYWRIVE1MU3RyaW5nOihOU1N0cmluZyAqKUhUTUxTCiAKIC0gKHZvaWQpbG9hZEFs
dGVybmF0ZUhUTUxTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIGJhc2VVUkw6KE5TVVJMICopYmFz
ZVVSTCBmb3JVbnJlYWNoYWJsZVVSTDooTlNVUkwgKil1bnJlYWNoYWJsZVVSTAogewotICAgIF9w
YWdlLT5sb2FkQWx0ZXJuYXRlSFRNTFN0cmluZyhzdHJpbmcsIFtiYXNlVVJMIF93ZWJfb3JpZ2lu
YWxEYXRhQXNXVEZTdHJpbmddLCBbdW5yZWFjaGFibGVVUkwgX3dlYl9vcmlnaW5hbERhdGFBc1dU
RlN0cmluZ10pOworICAgIF9wYWdlLT5sb2FkQWx0ZXJuYXRlSFRNTFN0cmluZyhzdHJpbmcsIGJh
c2VVUkwsIHVucmVhY2hhYmxlVVJMKTsKIH0KIAogLSAodm9pZClsb2FkRGF0YTooTlNEYXRhICop
ZGF0YSBNSU1FVHlwZTooTlNTdHJpbmcgKilNSU1FVHlwZSB0ZXh0RW5jb2RpbmdOYW1lOihOU1N0
cmluZyAqKWVuY29kaW5nTmFtZSBiYXNlVVJMOihOU1VSTCAqKWJhc2VVUkwKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVBy
aXZhdGUuaAkocmV2aXNpb24gMjIxOTgyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTYxLDYgKzE2
MSwxMCBAQCBzdHJ1Y3QgVUlFZGdlSW5zZXRzOwogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3
ICopd2ViVmlldyBkaWRDbGlja0F1dG9GaWxsQnV0dG9uV2l0aFVzZXJJbmZvOihpZCA8TlNTZWN1
cmVDb2Rpbmc+KXVzZXJJbmZvIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpKTsK
IC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZ2V0VG9vbGJhcnNBcmVWaXNp
YmxlV2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVy
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpKTsKIC0gKHZvaWQpX3dlYlZpZXc6
KFdLV2ViVmlldyAqKXdlYlZpZXcgc2F2ZURhdGFUb0ZpbGU6KE5TRGF0YSAqKWRhdGEgc3VnZ2Vz
dGVkRmlsZW5hbWU6KE5TU3RyaW5nICopc3VnZ2VzdGVkRmlsZW5hbWUgbWltZVR5cGU6KE5TU3Ry
aW5nICopbWltZVR5cGUgb3JpZ2luYXRpbmdVUkw6KE5TVVJMICopdXJsIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3N4KFdLX01BQ19UQkEpKTsKKy0gKENHRmxvYXQpX3dlYlZpZXdIZWFkZXJIZWlnaHQ6
KFdLV2ViVmlldyAqKXdlYlZpZXcgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSkp
OworLSAoQ0dGbG9hdClfd2ViVmlld0Zvb3RlckhlaWdodDooV0tXZWJWaWV3ICopd2ViVmlldyBX
S19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSk7CistICh2b2lkKV93ZWJWaWV3OihX
S1dlYlZpZXcgKil3ZWJWaWV3IGRyYXdIZWFkZXJJblJlY3Q6KENHUmVjdClyZWN0IGZvclBhZ2VX
aXRoVGl0bGU6KE5TU3RyaW5nICopdGl0bGUgVVJMOihOU1VSTCAqKXVybCBXS19BUElfQVZBSUxB
QkxFKG1hY29zeChXS19NQUNfVEJBKSk7CistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3
ZWJWaWV3IGRyYXdGb290ZXJJblJlY3Q6KENHUmVjdClyZWN0IGZvclBhZ2VXaXRoVGl0bGU6KE5T
U3RyaW5nICopdGl0bGUgVVJMOihOU1VSTCAqKXVybCBXS19BUElfQVZBSUxBQkxFKG1hY29zeChX
S19NQUNfVEJBKSk7CiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlcXVl
c3ROb3RpZmljYXRpb25QZXJtaXNzaW9uRm9yU2VjdXJpdHlPcmlnaW46KFdLU2VjdXJpdHlPcmln
aW4gKilzZWN1cml0eU9yaWdpbiBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wpKWRlY2lz
aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSk7CiAtICh2b2lk
KV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJ2aWV3IG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50Oihf
V0tIaXRUZXN0UmVzdWx0ICopaGl0VGVzdFJlc3VsdCB3aXRoRmxhZ3M6KE5TRXZlbnRNb2RpZmll
ckZsYWdzKWZsYWdzIHVzZXJJbmZvOihpZCA8TlNTZWN1cmVDb2Rpbmc+KXVzZXJJbmZvOwogLSAo
dm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRFeGNlZWRCYWNrZ3JvdW5kUmVz
b3VyY2VMaW1pdFdoaWxlSW5Gb3JlZ3JvdW5kOihfV0tSZXNvdXJjZUxpbWl0KWxpbWl0IFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQkocmV2aXNpb24gMjIxOTA3KQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMzg0MSw3ICszODQxLDcgQEAgLSAoTlNVUkwgKilfdW5yZWFjaGFibGVVUkwKIAog
LSAodm9pZClfbG9hZEFsdGVybmF0ZUhUTUxTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIGJhc2VV
Ukw6KE5TVVJMICopYmFzZVVSTCBmb3JVbnJlYWNoYWJsZVVSTDooTlNVUkwgKil1bnJlYWNoYWJs
ZVVSTAogewotICAgIF9wYWdlLT5sb2FkQWx0ZXJuYXRlSFRNTFN0cmluZyhzdHJpbmcsIFtiYXNl
VVJMIF93ZWJfb3JpZ2luYWxEYXRhQXNXVEZTdHJpbmddLCBbdW5yZWFjaGFibGVVUkwgX3dlYl9v
cmlnaW5hbERhdGFBc1dURlN0cmluZ10pOworICAgIF9wYWdlLT5sb2FkQWx0ZXJuYXRlSFRNTFN0
cmluZyhzdHJpbmcsIGJhc2VVUkwsIHVucmVhY2hhYmxlVVJMKTsKIH0KIAogLSAoV0tOYXZpZ2F0
aW9uICopX2xvYWREYXRhOihOU0RhdGEgKilkYXRhIE1JTUVUeXBlOihOU1N0cmluZyAqKU1JTUVU
eXBlIGNoYXJhY3RlckVuY29kaW5nTmFtZTooTlNTdHJpbmcgKiljaGFyYWN0ZXJFbmNvZGluZ05h
bWUgYmFzZVVSTDooTlNVUkwgKiliYXNlVVJMIHVzZXJEYXRhOihpZCl1c2VyRGF0YQpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5j
cHAJKHJldmlzaW9uIDIyMTkwNykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGli
L1dlYktpdFdlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw2ICs2NSw3IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9HVW5pcXVlUHRyU291cC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSlNET01F
eGNlcHRpb25IYW5kbGluZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVmUHRyQ2Fpcm8uaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1VSTC5oPgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CiAjaW5j
bHVkZSA8d3RmL1NldEZvclNjb3BlLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgpA
QCAtMjQ5MSw3ICsyNDkyLDcgQEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfbG9hZF9hbHRlcm5hdGVf
aHRtbAogICAgIGdfcmV0dXJuX2lmX2ZhaWwoY29udGVudCk7CiAgICAgZ19yZXR1cm5faWZfZmFp
bChjb250ZW50VVJJKTsKIAotICAgIGdldFBhZ2Uod2ViVmlldykubG9hZEFsdGVybmF0ZUhUTUxT
dHJpbmcoU3RyaW5nOjpmcm9tVVRGOChjb250ZW50KSwgU3RyaW5nOjpmcm9tVVRGOChiYXNlVVJJ
KSwgU3RyaW5nOjpmcm9tVVRGOChjb250ZW50VVJJKSk7CisgICAgZ2V0UGFnZSh3ZWJWaWV3KS5s
b2FkQWx0ZXJuYXRlSFRNTFN0cmluZyhTdHJpbmc6OmZyb21VVEY4KGNvbnRlbnQpLCBVUkwoVVJM
KCksIFN0cmluZzo6ZnJvbVVURjgoYmFzZVVSSSkpLCBVUkwoVVJMKCksIFN0cmluZzo6ZnJvbVVU
RjgoY29udGVudFVSSSkpKTsKIH0KIAogLyoqCkBAIC0yNjI3LDcgKzI2MjgsNyBAQCB2b2lkIHdl
YmtpdF93ZWJfdmlld19yZWxvYWRfYnlwYXNzX2NhY2hlCiB7CiAgICAgZ19yZXR1cm5faWZfZmFp
bChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldykpOwogCi0gICAgZ2V0UGFnZSh3ZWJWaWV3KS5y
ZWxvYWQoV2ViQ29yZTo6UmVsb2FkT3B0aW9uOjpGcm9tT3JpZ2luKTsKKyAgICBnZXRQYWdlKHdl
YlZpZXcpLnJlbG9hZChSZWxvYWRPcHRpb246OkZyb21PcmlnaW4pOwogfQogCiAvKioKQEAgLTMx
NTUsNyArMzE1Niw3IEBAIEpTR2xvYmFsQ29udGV4dFJlZiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2oK
ICAgICByZXR1cm4gd2ViVmlldy0+cHJpdi0+amF2YXNjcmlwdEdsb2JhbENvbnRleHQuZ2V0KCk7
CiB9CiAKLXN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0Q2FsbGJhY2soQVBJ
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHdrU2VyaWFsaXplZFNjcmlwdFZhbHVlLCBjb25zdCBX
ZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzJiBleGNlcHRpb25EZXRhaWxzLCBHVGFzayogdGFzaykK
K3N0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0Q2FsbGJhY2soQVBJOjpTZXJp
YWxpemVkU2NyaXB0VmFsdWUqIHdrU2VyaWFsaXplZFNjcmlwdFZhbHVlLCBjb25zdCBFeGNlcHRp
b25EZXRhaWxzJiBleGNlcHRpb25EZXRhaWxzLCBHVGFzayogdGFzaykKIHsKICAgICBpZiAoZ190
YXNrX3JldHVybl9lcnJvcl9pZl9jYW5jZWxsZWQodGFzaykpCiAgICAgICAgIHJldHVybjsKQEAg
LTMyMDYsNyArMzIwNyw3IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X3J1bl9qYXZhc2NyaXB0KFdl
YksKICAgICBnX3JldHVybl9pZl9mYWlsKHNjcmlwdCk7CiAKICAgICBHVGFzayogdGFzayA9IGdf
dGFza19uZXcod2ViVmlldywgY2FuY2VsbGFibGUsIGNhbGxiYWNrLCB1c2VyRGF0YSk7Ci0gICAg
Z2V0UGFnZSh3ZWJWaWV3KS5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoU3RyaW5nOjpmcm9tVVRG
OChzY3JpcHQpLCB0cnVlLCBbdGFza10oQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSwgYm9vbCwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscyYg
ZXhjZXB0aW9uRGV0YWlscywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKSB7CisgICAgZ2V0
UGFnZSh3ZWJWaWV3KS5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoU3RyaW5nOjpmcm9tVVRGOChz
Y3JpcHQpLCB0cnVlLCBbdGFza10oQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSwgYm9vbCwgY29uc3QgRXhjZXB0aW9uRGV0YWlscyYgZXhjZXB0aW9uRGV0
YWlscywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKSB7CiAgICAgICAgIHdlYmtpdFdlYlZp
ZXdSdW5KYXZhU2NyaXB0Q2FsbGJhY2soc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBleGNlcHRpb25E
ZXRhaWxzLCBhZG9wdEdSZWYodGFzaykuZ2V0KCkpOwogICAgIH0pOwogfQpAQCAtMzI5Nyw3ICsz
Mjk4LDcgQEAgc3RhdGljIHZvaWQgcmVzb3VyY2VzU3RyZWFtUmVhZENhbGxiYWNrKAogICAgIFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcoZ190YXNrX2dldF9zb3VyY2Vf
b2JqZWN0KHRhc2suZ2V0KCkpKTsKICAgICBncG9pbnRlciBvdXRwdXRTdHJlYW1EYXRhID0gZ19t
ZW1vcnlfb3V0cHV0X3N0cmVhbV9nZXRfZGF0YShHX01FTU9SWV9PVVRQVVRfU1RSRUFNKG9iamVj
dCkpOwogICAgIGdldFBhZ2Uod2ViVmlldykucnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFN0cmlu
Zzo6ZnJvbVVURjgocmVpbnRlcnByZXRfY2FzdDxjb25zdCBnY2hhcio+KG91dHB1dFN0cmVhbURh
dGEpKSwgdHJ1ZSwKLSAgICAgICAgW3Rhc2tdKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBz
ZXJpYWxpemVkU2NyaXB0VmFsdWUsIGJvb2wsIGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFp
bHMmIGV4Y2VwdGlvbkRldGFpbHMsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvcikgeworICAg
ICAgICBbdGFza10oQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZSwgYm9vbCwgY29uc3QgRXhjZXB0aW9uRGV0YWlscyYgZXhjZXB0aW9uRGV0YWlscywgV2Vi
S2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKSB7CiAgICAgICAgICAgICB3ZWJraXRXZWJWaWV3UnVu
SmF2YVNjcmlwdENhbGxiYWNrKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgZXhjZXB0aW9uRGV0YWls
cywgdGFzay5nZXQoKSk7CiAgICAgICAgIH0pOwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaAkocmV2aXNpb24gMjIxOTgyKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUs
NiArMTA1LDEwIEBAIHByaXZhdGU6CiAgICAgICAgIHZvaWQgc2V0V2luZG93RnJhbWUoV2ViUGFn
ZVByb3h5JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JikgZmluYWw7CiAgICAgICAgIHZvaWQg
d2luZG93RnJhbWUoV2ViUGFnZVByb3h5JiwgRnVuY3Rpb248dm9pZChXZWJDb3JlOjpGbG9hdFJl
Y3QpPiYmKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWROb3RIYW5kbGVXaGVlbEV2ZW50KFdlYlBh
Z2VQcm94eSosIGNvbnN0IE5hdGl2ZVdlYldoZWVsRXZlbnQmKSBmaW5hbDsKKyAgICAgICAgZmxv
YXQgaGVhZGVySGVpZ2h0KFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmKSBmaW5hbDsKKyAg
ICAgICAgZmxvYXQgZm9vdGVySGVpZ2h0KFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmKSBm
aW5hbDsKKyAgICAgICAgdm9pZCBkcmF3SGVhZGVyKFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJv
eHkmLCBXZWJDb3JlOjpGbG9hdFJlY3QmJikgZmluYWw7CisgICAgICAgIHZvaWQgZHJhd0Zvb3Rl
cihXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5JiwgV2ViQ29yZTo6RmxvYXRSZWN0JiYpIGZp
bmFsOwogICAgICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0KFdlYlBhZ2VQcm94eSYsIEFQSTo6U2VjdXJpdHlPcmlnaW4mLCBGdW5jdGlvbjx2b2lk
KGJvb2wpPiYmKSBmaW5hbDsKICAgICAgICAgdm9pZCBoYW5kbGVBdXRvcGxheUV2ZW50KFdlYlBh
Z2VQcm94eSYsIFdlYkNvcmU6OkF1dG9wbGF5RXZlbnQsIE9wdGlvblNldDxXZWJDb3JlOjpBdXRv
cGxheUV2ZW50RmxhZ3M+KSBmaW5hbDsKICAgICAgICAgdm9pZCB1bmF2YWlsYWJsZVBsdWdpbkJ1
dHRvbkNsaWNrZWQoV2ViUGFnZVByb3h5JiwgV0tQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbiwg
QVBJOjpEaWN0aW9uYXJ5JikgZmluYWw7CkBAIC0xNjAsMTIgKzE2NCwxNiBAQCBwcml2YXRlOgog
ICAgICAgICBib29sIHdlYlZpZXdSdW5Nb2RhbCA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld1Rh
a2VGb2N1cyA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld0RpZFNjcm9sbCA6IDE7CisgICAgICAg
IGJvb2wgd2ViVmlld0hlYWRlckhlaWdodCA6IDE7CisgICAgICAgIGJvb2wgd2ViVmlld0Zvb3Rl
ckhlaWdodCA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld1NldFJlc2l6YWJsZSA6IDE7CiAgICAg
ICAgIGJvb2wgd2ViVmlld1NldFdpbmRvd0ZyYW1lIDogMTsKICAgICAgICAgYm9vbCB3ZWJWaWV3
RGlkTm90SGFuZGxlV2hlZWxFdmVudCA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld0hhbmRsZUF1
dG9wbGF5RXZlbnRXaXRoRmxhZ3MgOiAxOwogICAgICAgICBib29sIHdlYlZpZXdVbmF2YWlsYWJs
ZVBsdWdJbkJ1dHRvbkNsaWNrZWQgOiAxOwogICAgICAgICBib29sIHdlYlZpZXdEaWRDbGlja0F1
dG9GaWxsQnV0dG9uV2l0aFVzZXJJbmZvIDogMTsKKyAgICAgICAgYm9vbCB3ZWJWaWV3RHJhd0hl
YWRlckluUmVjdEZvclBhZ2VXaXRoVGl0bGVVUkwgOiAxOworICAgICAgICBib29sIHdlYlZpZXdE
cmF3Rm9vdGVySW5SZWN0Rm9yUGFnZVdpdGhUaXRsZVVSTCA6IDE7CiAgICAgICAgIGJvb2wgd2Vi
Vmlld0dldFdpbmRvd0ZyYW1lV2l0aENvbXBsZXRpb25IYW5kbGVyIDogMTsKICAgICAgICAgYm9v
bCB3ZWJWaWV3TW91c2VEaWRNb3ZlT3ZlckVsZW1lbnRXaXRoRmxhZ3NVc2VySW5mbyA6IDE7CiAg
ICAgICAgIGJvb2wgd2ViVmlld0dldFRvb2xiYXJzQXJlVmlzaWJsZVdpdGhDb21wbGV0aW9uSGFu
ZGxlciA6IDE7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRl
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdh
dGUubW0JKHJldmlzaW9uIDIyMTk4MikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1VJRGVsZWdhdGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTEyMCw2ICsxMjAsMTAgQEAgdm9pZCBV
SURlbGVnYXRlOjpzZXREZWxlZ2F0ZShpZCA8V0tVSURlbAogICAgIG1fZGVsZWdhdGVNZXRob2Rz
LndlYlZpZXdVbmF2YWlsYWJsZVBsdWdJbkJ1dHRvbkNsaWNrZWQgPSBbZGVsZWdhdGUgcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzp1bmF2YWlsYWJsZVBsdWdJbkJ1dHRvbkNs
aWNrZWRXaXRoUmVhc29uOnBsdWdJbkluZm86KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2Vi
Vmlld0hhbmRsZUF1dG9wbGF5RXZlbnRXaXRoRmxhZ3MgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpoYW5kbGVBdXRvcGxheUV2ZW50OndpdGhGbGFnczop
XTsKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkQ2xpY2tBdXRvRmlsbEJ1dHRvbldp
dGhVc2VySW5mbyA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJW
aWV3OmRpZENsaWNrQXV0b0ZpbGxCdXR0b25XaXRoVXNlckluZm86KV07CisgICAgbV9kZWxlZ2F0
ZU1ldGhvZHMud2ViVmlld0RyYXdIZWFkZXJJblJlY3RGb3JQYWdlV2l0aFRpdGxlVVJMID0gW2Rl
bGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6ZHJhd0hlYWRlcklu
UmVjdDpmb3JQYWdlV2l0aFRpdGxlOlVSTDopXTsKKyAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJW
aWV3RHJhd0Zvb3RlckluUmVjdEZvclBhZ2VXaXRoVGl0bGVVUkwgPSBbZGVsZWdhdGUgcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpkcmF3Rm9vdGVySW5SZWN0OmZvclBhZ2VX
aXRoVGl0bGU6VVJMOildOworICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdIZWFkZXJIZWln
aHQgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlld0hlYWRl
ckhlaWdodDopXTsKKyAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3Rm9vdGVySGVpZ2h0ID0g
W2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXdGb290ZXJIZWln
aHQ6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld01vdXNlRGlkTW92ZU92ZXJFbGVt
ZW50V2l0aEZsYWdzVXNlckluZm8gPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3Rvcihfd2ViVmlldzptb3VzZURpZE1vdmVPdmVyRWxlbWVudDp3aXRoRmxhZ3M6dXNlckluZm86
KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZEV4Y2VlZEJhY2tncm91bmRSZXNv
dXJjZUxpbWl0V2hpbGVJbkZvcmVncm91bmQgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3Rvcihfd2ViVmlldzpkaWRFeGNlZWRCYWNrZ3JvdW5kUmVzb3VyY2VMaW1pdFdoaWxl
SW5Gb3JlZ3JvdW5kOildOwogICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdTYXZlRGF0YVRv
RmlsZVN1Z2dlc3RlZEZpbGVuYW1lTWltZVR5cGVPcmlnaW5hdGluZ1VSTCA9IFtkZWxlZ2F0ZSBy
ZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnNhdmVEYXRhVG9GaWxlOnN1Z2dl
c3RlZEZpbGVuYW1lOm1pbWVUeXBlOm9yaWdpbmF0aW5nVVJMOildOwpAQCAtNDIzLDYgKzQyNyw1
NCBAQCB2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5Nb2RhbChXZWJQCiAgICAgWyhpZCA8
V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3dlYlZpZXdSdW5Nb2RhbDptX3VpRGVsZWdh
dGUubV93ZWJWaWV3XTsKIH0KIAorZmxvYXQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmhlYWRlckhl
aWdodChXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5JiB3ZWJGcmFtZVByb3h5KQoreworICAg
IGlmICghbV91aURlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdIZWFkZXJIZWlnaHQp
CisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIGF1dG8gZGVsZWdhdGUgPSBtX3VpRGVsZWdh
dGUubV9kZWxlZ2F0ZS5nZXQoKTsKKyAgICBpZiAoIWRlbGVnYXRlKQorICAgICAgICByZXR1cm4g
MDsKKyAgICAKKyAgICByZXR1cm4gWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUg
X3dlYlZpZXdIZWFkZXJIZWlnaHQ6bV91aURlbGVnYXRlLm1fd2ViVmlld107Cit9CisKK2Zsb2F0
IFVJRGVsZWdhdGU6OlVJQ2xpZW50Ojpmb290ZXJIZWlnaHQoV2ViUGFnZVByb3h5JiwgV2ViRnJh
bWVQcm94eSYpCit7CisgICAgaWYgKCFtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2Vi
Vmlld0Zvb3RlckhlaWdodCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgYXV0byBkZWxl
Z2F0ZSA9IG1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlLmdldCgpOworICAgIGlmICghZGVsZWdhdGUp
CisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIHJldHVybiBbKGlkIDxXS1VJRGVsZWdhdGVQ
cml2YXRlPilkZWxlZ2F0ZSBfd2ViVmlld0Zvb3RlckhlaWdodDptX3VpRGVsZWdhdGUubV93ZWJW
aWV3XTsKK30KKwordm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZHJhd0hlYWRlcihXZWJQYWdl
UHJveHkmLCBXZWJGcmFtZVByb3h5JiBmcmFtZSwgV2ViQ29yZTo6RmxvYXRSZWN0JiYgcmVjdCkK
K3sKKyAgICBpZiAoIW1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RHJhd0hl
YWRlckluUmVjdEZvclBhZ2VXaXRoVGl0bGVVUkwpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAg
ICBhdXRvIGRlbGVnYXRlID0gbV91aURlbGVnYXRlLm1fZGVsZWdhdGUuZ2V0KCk7CisgICAgaWYg
KCFkZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIFsoaWQgPFdLVUlEZWxlZ2F0
ZVByaXZhdGU+KWRlbGVnYXRlIF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgZHJhd0hl
YWRlckluUmVjdDpyZWN0IGZvclBhZ2VXaXRoVGl0bGU6ZnJhbWUudGl0bGUoKSBVUkw6ZnJhbWUu
dXJsKCldOworfQorCit2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpkcmF3Rm9vdGVyKFdlYlBh
Z2VQcm94eSYsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBXZWJDb3JlOjpGbG9hdFJlY3QmJiByZWN0
KQoreworICAgIGlmICghbV91aURlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdEcmF3
Rm9vdGVySW5SZWN0Rm9yUGFnZVdpdGhUaXRsZVVSTCkKKyAgICAgICAgcmV0dXJuOworICAgIAor
ICAgIGF1dG8gZGVsZWdhdGUgPSBtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZS5nZXQoKTsKKyAgICBp
ZiAoIWRlbGVnYXRlKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgWyhpZCA8V0tVSURlbGVn
YXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3dlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyBkcmF3
Rm9vdGVySW5SZWN0OnJlY3QgZm9yUGFnZVdpdGhUaXRsZTpmcmFtZS50aXRsZSgpIFVSTDpmcmFt
ZS51cmwoKV07Cit9CisKIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnBhZ2VEaWRTY3JvbGwo
V2ViUGFnZVByb3h5KikKIHsKICAgICBpZiAoIW1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9k
cy53ZWJWaWV3RGlkU2Nyb2xsKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V0tSZWxvYWRGcmFtZUVycm9yUmVjb3ZlcnlBdHRlbXB0ZXIubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV0tSZWxvYWRGcmFtZUVycm9yUmVjb3ZlcnlBdHRl
bXB0ZXIubW0JKHJldmlzaW9uIDIyMTkwNykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dLUmVsb2FkRnJhbWVFcnJvclJlY292ZXJ5QXR0ZW1wdGVyLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC02OSw3ICs2OSw3IEBAIC0gKEJPT0wpYXR0ZW1wdFJlY292ZXJ5CiAgICAgaWYgKCF3ZWJG
cmFtZVByb3h5KQogICAgICAgICByZXR1cm4gTk87CiAKLSAgICB3ZWJGcmFtZVByb3h5LT5sb2Fk
VVJMKF91cmxTdHJpbmcpOworICAgIHdlYkZyYW1lUHJveHktPmxvYWRVUkwoV2ViQ29yZTo6VVJM
KFdlYkNvcmU6OlVSTCgpLCBfdXJsU3RyaW5nKSk7CiAgICAgcmV0dXJuIFlFUzsKIH0KIApJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0JKHJldmlz
aW9uIDIyMTkwNykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBs
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNjI0LDcgKzE2MjQsNyBAQCBib29sIFdlYlZpZXdJbXBs
OjpjYW5DaGFuZ2VGcmFtZUxheW91dChXCiAKIE5TUHJpbnRPcGVyYXRpb24gKldlYlZpZXdJbXBs
OjpwcmludE9wZXJhdGlvbldpdGhQcmludEluZm8oTlNQcmludEluZm8gKnByaW50SW5mbywgV2Vi
RnJhbWVQcm94eSYgZnJhbWUpCiB7Ci0gICAgTE9HKFByaW50aW5nLCAiQ3JlYXRpbmcgYW4gTlNQ
cmludE9wZXJhdGlvbiBmb3IgZnJhbWUgJyVzJyIsIGZyYW1lLnVybCgpLnV0ZjgoKS5kYXRhKCkp
OworICAgIExPRyhQcmludGluZywgIkNyZWF0aW5nIGFuIE5TUHJpbnRPcGVyYXRpb24gZm9yIGZy
YW1lICclcyciLCBmcmFtZS51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAogICAgIC8v
IEZJWE1FOiBJZiB0aGUgZnJhbWUgY2Fubm90IGJlIHByaW50ZWQgKGUuZy4gaWYgaXQgY29udGFp
bnMgYW4gZW5jcnlwdGVkIFBERiB0aGF0IGRpc2FsbG93cwogICAgIC8vIHByaW50aW5nKSwgdGhp
cyBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIG5pbC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcAkocmV2aXNpb24gMjIxOTA3KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjc5LDE0ICsyNzksMTMgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
aWRSZQogICAgICAgICByZXR1cm47CiAKICAgICBXZWJEb2N1bWVudExvYWRlciYgZG9jdW1lbnRM
b2FkZXIgPSBzdGF0aWNfY2FzdDxXZWJEb2N1bWVudExvYWRlciY+KCptX2ZyYW1lLT5jb3JlRnJh
bWUoKS0+bG9hZGVyKCkucHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcigpKTsKLSAgICBjb25zdCBT
dHJpbmcmIHVybCA9IGRvY3VtZW50TG9hZGVyLnVybCgpLnN0cmluZygpOwogICAgIFJlZlB0cjxB
UEk6Ok9iamVjdD4gdXNlckRhdGE7CiAKICAgICAvLyBOb3RpZnkgdGhlIGJ1bmRsZSBjbGllbnQu
CiAgICAgd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVMb2FkZXJDbGllbnQoKS5kaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSgqd2ViUGFnZSwgKm1fZnJhbWUs
IHVzZXJEYXRhKTsKIAogICAgIC8vIE5vdGlmeSB0aGUgVUlQcm9jZXNzLgotICAgIHdlYlBhZ2Ut
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9y
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBkb2N1bWVudExvYWRl
ci5uYXZpZ2F0aW9uSUQoKSwgdXJsLCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50
cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKTsKKyAgICB3
ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVTZXJ2ZXJSZWRp
cmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgZG9jdW1l
bnRMb2FkZXIubmF2aWdhdGlvbklEKCksIGRvY3VtZW50TG9hZGVyLnVybCgpLCBVc2VyRGF0YShX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRh
LmdldCgpKS5nZXQoKSkpKTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEaWRDaGFuZ2VQcm92aXNpb25hbFVSTCgpCkBAIC0yOTYsNyArMjk1LDcgQEAgdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaAogICAgICAgICByZXR1cm47CiAKICAgICBX
ZWJEb2N1bWVudExvYWRlciYgZG9jdW1lbnRMb2FkZXIgPSBzdGF0aWNfY2FzdDxXZWJEb2N1bWVu
dExvYWRlciY+KCptX2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkucHJvdmlzaW9uYWxEb2N1
bWVudExvYWRlcigpKTsKLSAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkRpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBkb2N1
bWVudExvYWRlci5uYXZpZ2F0aW9uSUQoKSwgZG9jdW1lbnRMb2FkZXIudXJsKCkuc3RyaW5nKCkp
KTsKKyAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZENoYW5nZVBy
b3Zpc2lvbmFsVVJMRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBkb2N1bWVudExvYWRlci5u
YXZpZ2F0aW9uSUQoKSwgZG9jdW1lbnRMb2FkZXIudXJsKCkpKTsKIH0KIAogdm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDYW5jZWxDbGllbnRSZWRpcmVjdCgpCkBAIC0zMzks
NyArMzM4LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaAogICAg
IHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlTG9hZGVyQ2xpZW50KCkuZGlkU2FtZURvY3VtZW50TmF2
aWdhdGlvbkZvckZyYW1lKCp3ZWJQYWdlLCAqbV9mcmFtZSwgU2FtZURvY3VtZW50TmF2aWdhdGlv
bkFuY2hvck5hdmlnYXRpb24sIHVzZXJEYXRhKTsKIAogICAgIC8vIE5vdGlmeSB0aGUgVUlQcm9j
ZXNzLgotICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkU2FtZURv
Y3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgbmF2aWdhdGlvbklE
LCBTYW1lRG9jdW1lbnROYXZpZ2F0aW9uQW5jaG9yTmF2aWdhdGlvbiwgbV9mcmFtZS0+Y29yZUZy
YW1lKCktPmRvY3VtZW50KCktPnVybCgpLnN0cmluZygpLCBVc2VyRGF0YShXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQo
KSkpKTsKKyAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFNhbWVE
b2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIG5hdmlnYXRpb25J
RCwgU2FtZURvY3VtZW50TmF2aWdhdGlvbkFuY2hvck5hdmlnYXRpb24sIG1fZnJhbWUtPmNvcmVG
cmFtZSgpLT5kb2N1bWVudCgpLT51cmwoKSwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSk7CiB9
CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdlTWFpbkRvY3Vt
ZW50KCkKQEAgLTM2NSw3ICszNjQsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaERpZFB1CiAgICAgd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVMb2FkZXJDbGllbnQoKS5kaWRT
YW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUoKndlYlBhZ2UsICptX2ZyYW1lLCBTYW1lRG9j
dW1lbnROYXZpZ2F0aW9uU2Vzc2lvblN0YXRlUHVzaCwgdXNlckRhdGEpOwogCiAgICAgLy8gTm90
aWZ5IHRoZSBVSVByb2Nlc3MuCi0gICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpEaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgp
LCBuYXZpZ2F0aW9uSUQsIFNhbWVEb2N1bWVudE5hdmlnYXRpb25TZXNzaW9uU3RhdGVQdXNoLCBt
X2ZyYW1lLT5jb3JlRnJhbWUoKS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCksIFVzZXJEYXRh
KFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRh
dGEuZ2V0KCkpLmdldCgpKSkpOworICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6RGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQo
KSwgbmF2aWdhdGlvbklELCBTYW1lRG9jdW1lbnROYXZpZ2F0aW9uU2Vzc2lvblN0YXRlUHVzaCwg
bV9mcmFtZS0+Y29yZUZyYW1lKCktPmRvY3VtZW50KCktPnVybCgpLCBVc2VyRGF0YShXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgp
KS5nZXQoKSkpKTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRS
ZXBsYWNlU3RhdGVXaXRoaW5QYWdlKCkKQEAgLTM4Miw3ICszODEsNyBAQCB2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlCiAgICAgd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVM
b2FkZXJDbGllbnQoKS5kaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUoKndlYlBhZ2Us
ICptX2ZyYW1lLCBTYW1lRG9jdW1lbnROYXZpZ2F0aW9uU2Vzc2lvblN0YXRlUmVwbGFjZSwgdXNl
ckRhdGEpOwogCiAgICAgLy8gTm90aWZ5IHRoZSBVSVByb2Nlc3MuCi0gICAgd2ViUGFnZS0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJh
bWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBuYXZpZ2F0aW9uSUQsIFNhbWVEb2N1bWVudE5hdmlnYXRp
b25TZXNzaW9uU3RhdGVSZXBsYWNlLCBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+ZG9jdW1lbnQoKS0+
dXJsKCkuc3RyaW5nKCksIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9y
bU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpOworICAgIHdlYlBhZ2Ut
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZv
ckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgbmF2aWdhdGlvbklELCBTYW1lRG9jdW1lbnROYXZp
Z2F0aW9uU2Vzc2lvblN0YXRlUmVwbGFjZSwgbV9mcmFtZS0+Y29yZUZyYW1lKCktPmRvY3VtZW50
KCktPnVybCgpLCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmpl
Y3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKTsKIH0KIAogdm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRQb3BTdGF0ZVdpdGhpblBhZ2UoKQpAQCAtMzk5LDcg
KzM5OCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUG8KICAgICB3
ZWJQYWdlLT5pbmplY3RlZEJ1bmRsZUxvYWRlckNsaWVudCgpLmRpZFNhbWVEb2N1bWVudE5hdmln
YXRpb25Gb3JGcmFtZSgqd2ViUGFnZSwgKm1fZnJhbWUsIFNhbWVEb2N1bWVudE5hdmlnYXRpb25T
ZXNzaW9uU3RhdGVQb3AsIHVzZXJEYXRhKTsKIAogICAgIC8vIE5vdGlmeSB0aGUgVUlQcm9jZXNz
LgotICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkU2FtZURvY3Vt
ZW50TmF2aWdhdGlvbkZvckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgbmF2aWdhdGlvbklELCBT
YW1lRG9jdW1lbnROYXZpZ2F0aW9uU2Vzc2lvblN0YXRlUG9wLCBtX2ZyYW1lLT5jb3JlRnJhbWUo
KS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCksIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkp
OworICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkU2FtZURvY3Vt
ZW50TmF2aWdhdGlvbkZvckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgbmF2aWdhdGlvbklELCBT
YW1lRG9jdW1lbnROYXZpZ2F0aW9uU2Vzc2lvblN0YXRlUG9wLCBtX2ZyYW1lLT5jb3JlRnJhbWUo
KS0+ZG9jdW1lbnQoKS0+dXJsKCksIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRy
YW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpOwogfQogCiB2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxDbG9zZSgpCkBAIC00MjMsMTMg
KzQyMiwxMyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFN0CiAgICAg
d2ViUGFnZS0+c2FuZGJveEV4dGVuc2lvblRyYWNrZXIoKS5kaWRTdGFydFByb3Zpc2lvbmFsTG9h
ZChtX2ZyYW1lKTsKIAogICAgIFdlYkRvY3VtZW50TG9hZGVyJiBwcm92aXNpb25hbExvYWRlciA9
IHN0YXRpY19jYXN0PFdlYkRvY3VtZW50TG9hZGVyJj4oKm1fZnJhbWUtPmNvcmVGcmFtZSgpLT5s
b2FkZXIoKS5wcm92aXNpb25hbERvY3VtZW50TG9hZGVyKCkpOwotICAgIGNvbnN0IFN0cmluZyYg
dXJsID0gcHJvdmlzaW9uYWxMb2FkZXIudXJsKCkuc3RyaW5nKCk7CisgICAgYXV0byYgdXJsID0g
cHJvdmlzaW9uYWxMb2FkZXIudXJsKCk7CiAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiB1c2VyRGF0
YTsKIAogICAgIC8vIE5vdGlmeSB0aGUgYnVuZGxlIGNsaWVudC4KICAgICB3ZWJQYWdlLT5pbmpl
Y3RlZEJ1bmRsZUxvYWRlckNsaWVudCgpLmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUo
KndlYlBhZ2UsICptX2ZyYW1lLCB1c2VyRGF0YSk7CiAKLSAgICBTdHJpbmcgdW5yZWFjaGFibGVV
UkwgPSBwcm92aXNpb25hbExvYWRlci51bnJlYWNoYWJsZVVSTCgpLnN0cmluZygpOworICAgIGF1
dG8mIHVucmVhY2hhYmxlVVJMID0gcHJvdmlzaW9uYWxMb2FkZXIudW5yZWFjaGFibGVVUkwoKTsK
IAogICAgIC8vIE5vdGlmeSB0aGUgVUlQcm9jZXNzLgogICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6RGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShtX2ZyYW1l
LT5mcmFtZUlEKCksIHByb3Zpc2lvbmFsTG9hZGVyLm5hdmlnYXRpb25JRCgpLCB1cmwsIHVucmVh
Y2hhYmxlVVJMLCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmpl
Y3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAyMjE5MDcpCisr
KyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTE3NiwxMyArMTE3NiwxMyBAQCB2b2lkIFdlYlBhZ2U6OnNlbmRDbG9zZSgpCiAg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDbG9zZVBhZ2UoZmFsc2UpKTsKIH0KIAot
dm9pZCBXZWJQYWdlOjpsb2FkVVJMSW5GcmFtZShjb25zdCBTdHJpbmcmIHVybCwgdWludDY0X3Qg
ZnJhbWVJRCkKK3ZvaWQgV2ViUGFnZTo6bG9hZFVSTEluRnJhbWUoV2ViQ29yZTo6VVJMJiYgdXJs
LCB1aW50NjRfdCBmcmFtZUlEKQogewogICAgIFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkubG9hZChGcmFtZUxv
YWRSZXF1ZXN0KCpmcmFtZS0+Y29yZUZyYW1lKCksIFJlc291cmNlUmVxdWVzdChVUkwoVVJMKCks
IHVybCkpLCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdykpOwor
ICAgIGZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCkubG9hZChGcmFtZUxvYWRSZXF1ZXN0KCpm
cmFtZS0+Y29yZUZyYW1lKCksIFJlc291cmNlUmVxdWVzdCh1cmwpLCBTaG91bGRPcGVuRXh0ZXJu
YWxVUkxzUG9saWN5OjpTaG91bGROb3RBbGxvdykpOwogfQogCiAjaWYgIVBMQVRGT1JNKENPQ09B
KQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2
aXNpb24gMjIxOTA3KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDk1LDcgKzEwOTUsNyBAQCBwcml2YXRlOgogICAgIHN0
YXRpYyBib29sIHNjcm9sbChXZWJDb3JlOjpQYWdlKiwgV2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9u
LCBXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eSk7CiAgICAgc3RhdGljIGJvb2wgbG9naWNhbFNj
cm9sbChXZWJDb3JlOjpQYWdlKiwgV2ViQ29yZTo6U2Nyb2xsTG9naWNhbERpcmVjdGlvbiwgV2Vi
Q29yZTo6U2Nyb2xsR3JhbnVsYXJpdHkpOwogCi0gICAgdm9pZCBsb2FkVVJMSW5GcmFtZShjb25z
dCBTdHJpbmcmLCB1aW50NjRfdCBmcmFtZUlEKTsKKyAgICB2b2lkIGxvYWRVUkxJbkZyYW1lKFdl
YkNvcmU6OlVSTCYmLCB1aW50NjRfdCBmcmFtZUlEKTsKIAogICAgIGVudW0gY2xhc3MgV2FzUmVz
dG9yZWRCeUFQSVJlcXVlc3QgeyBObywgWWVzIH07CiAgICAgdm9pZCByZXN0b3JlU2Vzc2lvbklu
dGVybmFsKGNvbnN0IFZlY3RvcjxCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGU+JiwgV2FzUmVzdG9y
ZWRCeUFQSVJlcXVlc3QpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyMjE5MDcpCisrKyBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCSh3b3JraW5n
IGNvcHkpCkBAIC0xMzIsNyArMTMyLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNl
aXZlciB7CiAgICAgR29Ub0JhY2tGb3J3YXJkSXRlbSh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVp
bnQ2NF90IGJhY2tGb3J3YXJkSXRlbUlEKQogICAgIFRyeVJlc3RvcmVTY3JvbGxQb3NpdGlvbigp
CiAKLSAgICBMb2FkVVJMSW5GcmFtZShTdHJpbmcgdXJsLCB1aW50NjRfdCBmcmFtZUlEKQorICAg
IExvYWRVUkxJbkZyYW1lKFdlYkNvcmU6OlVSTCB1cmwsIHVpbnQ2NF90IGZyYW1lSUQpCiAgICAg
TG9hZFJlcXVlc3Qoc3RydWN0IFdlYktpdDo6TG9hZFBhcmFtZXRlcnMgbG9hZFBhcmFtZXRlcnMp
CiAgICAgTG9hZERhdGEoc3RydWN0IFdlYktpdDo6TG9hZFBhcmFtZXRlcnMgbG9hZFBhcmFtZXRl
cnMpCiAgICAgTG9hZFN0cmluZyhzdHJ1Y3QgV2ViS2l0OjpMb2FkUGFyYW1ldGVycyBsb2FkUGFy
YW1ldGVycykKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDIyMjAzMCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDIzIEBACisyMDE3LTA5LTE0ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlz
dGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFdLVUlEZWxlZ2F0ZVByaXZhdGUgZXF1
aXZhbGVudCBvZiBXS1BhZ2VVSUNsaWVudCdzIGRyYXdIZWFkZXIsIGRyYXdGb290ZXIsIGhlYWRl
ckhlaWdodCwgYW5kIGZvb3RlckhlaWdodAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTc2ODg5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yOTI3MDAz
NT4KKworICAgICAgICBSZXZpZXdlZCBieSBBbmR5IEVzdGVzLgorCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9VSURlbGVnYXRlLm1tOgorICAgICAgICAoLVtQcmlu
dERlbGVnYXRlIF93ZWJWaWV3OnByaW50RnJhbWU6XSk6CisgICAgICAgICgtW1ByaW50RGVsZWdh
dGUgX3dlYlZpZXdIZWFkZXJIZWlnaHQ6XSk6CisgICAgICAgICgtW1ByaW50RGVsZWdhdGUgX3dl
YlZpZXdGb290ZXJIZWlnaHQ6XSk6CisgICAgICAgICgtW1ByaW50RGVsZWdhdGUgX3dlYlZpZXc6
ZHJhd0hlYWRlckluUmVjdDpmb3JQYWdlV2l0aFRpdGxlOlVSTDpdKToKKyAgICAgICAgKC1bUHJp
bnREZWxlZ2F0ZSBfd2ViVmlldzpkcmF3Rm9vdGVySW5SZWN0OmZvclBhZ2VXaXRoVGl0bGU6VVJM
Ol0pOgorICAgICAgICAoY2FsbGJhY2tzRXF1YWwpOgorICAgICAgICAoVEVTVCk6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lmg6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtUZXN0V0tXZWJWaWV3
IGhvc3RXaW5kb3ddKToKKwogMjAxNy0wOS0xNCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUu
Y29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGZpeCBhIHR5cG8gdGhhdCB3YXMgcHJldmVudGlu
ZyBhIHRlc3QgZnJvbSBydW5uaW5nLgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9VSURlbGVnYXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvVUlEZWxlZ2F0ZS5tbQkocmV2aXNpb24gMjIxOTgyKQorKysg
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9VSURlbGVnYXRlLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MSw2ICs0MSw3IEBACiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJp
dmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L19XS0hpdFRlc3RSZXN1bHQuaD4KICNpbXBvcnQgPHd0
Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4KIAogI2lmIFBMQVRGT1JNKE1B
QykKICNpbXBvcnQgPENhcmJvbi9DYXJib24uaD4KQEAgLTI4Miw2ICsyODMsOTMgQEAgVEVTVChX
ZWJLaXQsIFdpbmRvd0ZyYW1lKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7
CiB9CiAKK2VudW0gY2xhc3MgQ2FsbGJhY2sgeworICAgIEhlYWRlckhlaWdodCwKKyAgICBGb290
ZXJIZWlnaHQsCisgICAgRHJhd0hlYWRlciwKKyAgICBEcmF3Rm9vdGVyLAorfTsKKworc3RhdGlj
IFZlY3RvcjxDYWxsYmFjaz4gY2FsbGJhY2tzOworCitAaW50ZXJmYWNlIFByaW50RGVsZWdhdGUg
OiBOU09iamVjdCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4KK0BlbmQKKworQGltcGxlbWVudGF0aW9u
IFByaW50RGVsZWdhdGUKKworLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBw
cmludEZyYW1lOihfV0tGcmFtZUhhbmRsZSAqKWZyYW1lCit7CisgICAgZG9uZSA9IHRydWU7Cit9
CisKKy0gKENHRmxvYXQpX3dlYlZpZXdIZWFkZXJIZWlnaHQ6KFdLV2ViVmlldyAqKXdlYlZpZXcK
K3sKKyAgICBjYWxsYmFja3MuYXBwZW5kKENhbGxiYWNrOjpIZWFkZXJIZWlnaHQpOworICAgIHJl
dHVybiAzLjE0MTU5OworfQorCistIChDR0Zsb2F0KV93ZWJWaWV3Rm9vdGVySGVpZ2h0OihXS1dl
YlZpZXcgKil3ZWJWaWV3Cit7CisgICAgY2FsbGJhY2tzLmFwcGVuZChDYWxsYmFjazo6Rm9vdGVy
SGVpZ2h0KTsKKyAgICByZXR1cm4gMi43MTgyODsKK30KKworLSAodm9pZClfd2ViVmlldzooV0tX
ZWJWaWV3ICopd2ViVmlldyBkcmF3SGVhZGVySW5SZWN0OihDR1JlY3QpcmVjdCBmb3JQYWdlV2l0
aFRpdGxlOihOU1N0cmluZyAqKXRpdGxlIFVSTDooTlNVUkwgKil1cmwKK3sKKyAgICBFWFBFQ1Rf
RVEocmVjdC5vcmlnaW4ueCwgNzIpOworICAgIEVYUEVDVF9UUlVFKGZhYnMocmVjdC5vcmlnaW4u
eSAtIDY5OC44NTgzOTgpIDwgLjAwMDAxKTsKKyAgICBFWFBFQ1RfVFJVRShmYWJzKHJlY3Quc2l6
ZS5oZWlnaHQgLSAzLjE0MTU5MCkgPCAuMDAwMDEpOworICAgIEVYUEVDVF9FUShyZWN0LnNpemUu
d2lkdGgsIDQ2OC4wMDAwMDApOworICAgIEVYUEVDVF9TVFJFUSh0aXRsZS5VVEY4U3RyaW5nLCAi
dGVzdF90aXRsZSIpOworICAgIEVYUEVDVF9TVFJFUSh1cmwuYWJzb2x1dGVTdHJpbmcuVVRGOFN0
cmluZywgImh0dHA6Ly9leGFtcGxlLmNvbS8iKTsKKyAgICBjYWxsYmFja3MuYXBwZW5kKENhbGxi
YWNrOjpEcmF3SGVhZGVyKTsKK30KKworLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2Vi
VmlldyBkcmF3Rm9vdGVySW5SZWN0OihDR1JlY3QpcmVjdCBmb3JQYWdlV2l0aFRpdGxlOihOU1N0
cmluZyAqKXRpdGxlIFVSTDooTlNVUkwgKil1cmwKK3sKKyAgICBFWFBFQ1RfRVEocmVjdC5vcmln
aW4ueCwgNzIpOworICAgIEVYUEVDVF9FUShyZWN0Lm9yaWdpbi55LCA5MCk7CisgICAgRVhQRUNU
X1RSVUUoZmFicyhyZWN0LnNpemUuaGVpZ2h0IC0gMi43MTgyODApIDwgLjAwMDAxKTsKKyAgICBF
WFBFQ1RfRVEocmVjdC5zaXplLndpZHRoLCA0NjguMDAwMDAwKTsKKyAgICBFWFBFQ1RfU1RSRVEo
dXJsLmFic29sdXRlU3RyaW5nLlVURjhTdHJpbmcsICJodHRwOi8vZXhhbXBsZS5jb20vIik7Cisg
ICAgY2FsbGJhY2tzLmFwcGVuZChDYWxsYmFjazo6RHJhd0Zvb3Rlcik7CisgICAgY29uc3Qgc2l6
ZV90IGV4cGVjdGVkRmluYWxDYWxsYmFja1NpemUgPSAzOTsKKyAgICBpZiAoY2FsbGJhY2tzLnNp
emUoKSA9PSBleHBlY3RlZEZpbmFsQ2FsbGJhY2tTaXplKQorICAgICAgICBkb25lID0gdHJ1ZTsK
K30KKworQGVuZAorCitib29sIGNhbGxiYWNrc0VxdWFsKGNvbnN0IFZlY3RvcjxDYWxsYmFjaz4g
YSwgY29uc3QgVmVjdG9yPENhbGxiYWNrPiBiKQoreworICAgIGlmIChhLnNpemUoKSAhPSBiLnNp
emUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
YS5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAoYVtpXSAhPSBiW2ldKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworVEVTVChXZWJLaXQs
IFByaW50RnJhbWUpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCldKTsKKyAg
ICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1ByaW50RGVsZWdhdGUgYWxsb2NdIGluaXRdKTsK
KyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKyAgICBbd2ViVmll
dyBsb2FkSFRNTFN0cmluZzpAIjxoZWFkPjx0aXRsZT50ZXN0X3RpdGxlPC90aXRsZT48L2hlYWQ+
PGJvZHkgb25sb2FkPSdwcmludCgpJz5oZWxsbyB3b3JsZCE8L2JvZHk+IiBiYXNlVVJMOltOU1VS
TCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2V4YW1wbGUuY29tLyJdXTsKKyAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmRvbmUpOworCisgICAgZG9uZSA9IGZhbHNlOworICAgIE5TUHJpbnRP
cGVyYXRpb24gKm9wZXJhdGlvbiA9IFt3ZWJWaWV3IF9wcmludE9wZXJhdGlvbldpdGhQcmludElu
Zm86W05TUHJpbnRJbmZvIHNoYXJlZFByaW50SW5mb11dOworICAgIEVYUEVDVF9UUlVFKG9wZXJh
dGlvbi5jYW5TcGF3blNlcGFyYXRlVGhyZWFkKTsKKyAgICBFWFBFQ1RfU1RSRVEob3BlcmF0aW9u
LmpvYlRpdGxlLlVURjhTdHJpbmcsICJ0ZXN0X3RpdGxlIik7CisKKyAgICBbb3BlcmF0aW9uIHJ1
bk9wZXJhdGlvbk1vZGFsRm9yV2luZG93Olt3ZWJWaWV3IGhvc3RXaW5kb3ddIGRlbGVnYXRlOm5p
bCBkaWRSdW5TZWxlY3RvcjpuaWwgY29udGV4dEluZm86bmlsXTsKKyAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmRvbmUpOworCisgICAgRVhQRUNUX1RSVUUoY2FsbGJhY2tzRXF1YWwoY2Fs
bGJhY2tzLCB7IENhbGxiYWNrOjpIZWFkZXJIZWlnaHQsIENhbGxiYWNrOjpGb290ZXJIZWlnaHQs
IENhbGxiYWNrOjpIZWFkZXJIZWlnaHQsIENhbGxiYWNrOjpGb290ZXJIZWlnaHQsIENhbGxiYWNr
OjpIZWFkZXJIZWlnaHQsIENhbGxiYWNrOjpGb290ZXJIZWlnaHQsIENhbGxiYWNrOjpIZWFkZXJI
ZWlnaHQsIENhbGxiYWNrOjpGb290ZXJIZWlnaHQsIENhbGxiYWNrOjpIZWFkZXJIZWlnaHQsIENh
bGxiYWNrOjpGb290ZXJIZWlnaHQsIENhbGxiYWNrOjpIZWFkZXJIZWlnaHQsIENhbGxiYWNrOjpG
b290ZXJIZWlnaHQsIENhbGxiYWNrOjpIZWFkZXJIZWlnaHQsIENhbGxiYWNrOjpGb290ZXJIZWln
aHQsIENhbGxiYWNrOjpIZWFkZXJIZWlnaHQsIENhbGxiYWNrOjpGb290ZXJIZWlnaHQsIENhbGxi
YWNrOjpIZWFkZXJIZWlnaHQsIENhbGxiYWNrOjpGb290ZXJIZWlnaHQsIENhbGxiYWNrOjpIZWFk
ZXJIZWlnaHQsIENhbGxiYWNrOjpGb290ZXJIZWlnaHQsIENhbGxiYWNrOjpGb290ZXJIZWlnaHQs
IENhbGxiYWNrOjpGb290ZXJIZWlnaHQsIENhbGxiYWNrOjpIZWFkZXJIZWlnaHQsIENhbGxiYWNr
OjpEcmF3SGVhZGVyLCBDYWxsYmFjazo6RHJhd0Zvb3RlciwgQ2FsbGJhY2s6OkhlYWRlckhlaWdo
dCwgQ2FsbGJhY2s6OkZvb3RlckhlaWdodCwgQ2FsbGJhY2s6OkZvb3RlckhlaWdodCwgQ2FsbGJh
Y2s6OkZvb3RlckhlaWdodCwgQ2FsbGJhY2s6OkhlYWRlckhlaWdodCwgQ2FsbGJhY2s6OkRyYXdI
ZWFkZXIsIENhbGxiYWNrOjpEcmF3Rm9vdGVyLCBDYWxsYmFjazo6SGVhZGVySGVpZ2h0LCBDYWxs
YmFjazo6Rm9vdGVySGVpZ2h0LCBDYWxsYmFjazo6Rm9vdGVySGVpZ2h0LCBDYWxsYmFjazo6Rm9v
dGVySGVpZ2h0LCBDYWxsYmFjazo6SGVhZGVySGVpZ2h0LCBDYWxsYmFjazo6RHJhd0hlYWRlciwg
Q2FsbGJhY2s6OkRyYXdGb290ZXIgfSkpOworfQorCiBAaW50ZXJmYWNlIE5vdGlmaWNhdGlvbkRl
bGVnYXRlIDogTlNPYmplY3QgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+IHsKICAgICBib29sIF9hbGxv
d05vdGlmaWNhdGlvbnM7CiB9CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RX
S1dlYlZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RX
S1dlYlZpZXcuaAkocmV2aXNpb24gMjIxOTA3KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9jb2Nv
YS9UZXN0V0tXZWJWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDYgKzY2LDcgQEAKIC0gKHZv
aWQpbW91c2VNb3ZlVG9Qb2ludDooTlNQb2ludClwb2ludCB3aXRoRmxhZ3M6KE5TRXZlbnRNb2Rp
ZmllckZsYWdzKWZsYWdzOwogLSAodm9pZClzZW5kQ2xpY2tzQXRQb2ludDooTlNQb2ludClwb2lu
dCBudW1iZXJPZkNsaWNrczooTlNVSW50ZWdlciludW1iZXJPZkNsaWNrczsKIC0gKHZvaWQpdHlw
ZUNoYXJhY3RlcjooY2hhciljaGFyYWN0ZXI7CistIChOU1dpbmRvdyAqKWhvc3RXaW5kb3c7CiBA
ZW5kCiAjZW5kaWYKIApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJW
aWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2Vi
Vmlldy5tbQkocmV2aXNpb24gMjIxOTA3KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9U
ZXN0V0tXZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNDksNiArMzQ5LDExIEBAIC0gKHZv
aWQpc2VuZENsaWNrc0F0UG9pbnQ6KE5TUG9pbnQpcG9pbnQKICAgICB9CiB9CiAKKy0gKE5TV2lu
ZG93ICopaG9zdFdpbmRvdworeworICAgIHJldHVybiBfaG9zdFdpbmRvdy5nZXQoKTsKK30KKwog
LSAodm9pZCl0eXBlQ2hhcmFjdGVyOihjaGFyKWNoYXJhY3RlciB7CiAgICAgTlNTdHJpbmcgKmNo
YXJhY3RlckFzU3RyaW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlYyIgLCBjaGFy
YWN0ZXJdOwogICAgIE5TRXZlbnRUeXBlIGtleURvd25FdmVudFR5cGUgPSBOU0V2ZW50VHlwZUtl
eURvd247Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320844</attachid>
            <date>2017-09-14 16:36:00 -0700</date>
            <delta_ts>2017-09-14 16:55:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176889-20170914163559.patch</filename>
            <type>text/plain</type>
            <size>50916</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjIwNTMpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDczIEBACisyMDE3LTA5LTE0ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFdLVUlEZWxl
Z2F0ZVByaXZhdGUgZXF1aXZhbGVudCBvZiBXS1BhZ2VVSUNsaWVudCdzIGRyYXdIZWFkZXIsIGRy
YXdGb290ZXIsIGhlYWRlckhlaWdodCwgYW5kIGZvb3RlckhlaWdodAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2ODg5CisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8yOTI3MDAzNT4KKworICAgICAgICBSZXZpZXdlZCBieSBBbmR5IEVzdGVzLgorCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VMb2Fk
QWx0ZXJuYXRlSFRNTFN0cmluZyk6CisgICAgICAgIChXS1BhZ2VMb2FkQWx0ZXJuYXRlSFRNTFN0
cmluZ1dpdGhVc2VyRGF0YSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dz
aW5nQ29udGV4dENvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLQnJvd3NpbmdDb250ZXh0Q29u
dHJvbGxlciBsb2FkQWx0ZXJuYXRlSFRNTFN0cmluZzpiYXNlVVJMOmZvclVucmVhY2hhYmxlVVJM
Ol0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAo
LVtXS1dlYlZpZXcgX2xvYWRBbHRlcm5hdGVIVE1MU3RyaW5nOmJhc2VVUkw6Zm9yVW5yZWFjaGFi
bGVVUkw6XSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6VUlE
ZWxlZ2F0ZTo6c2V0RGVsZWdhdGUpOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNs
aWVudDo6aGVhZGVySGVpZ2h0KToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGll
bnQ6OmZvb3RlckhlaWdodCk6CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50
OjpkcmF3SGVhZGVyKToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmRy
YXdGb290ZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XS1JlbG9hZEZyYW1lRXJyb3JS
ZWNvdmVyeUF0dGVtcHRlci5tbToKKyAgICAgICAgKC1bV0tSZWxvYWRGcmFtZUVycm9yUmVjb3Zl
cnlBdHRlbXB0ZXIgYXR0ZW1wdFJlY292ZXJ5XSk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L1dlYlZpZXdJbXBsLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cHJpbnRPcGVy
YXRpb25XaXRoUHJpbnRJbmZvKToKKyAgICAgICAgKiBVSVByb2Nlc3MvRnJhbWVMb2FkU3RhdGUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRTdGF0ZTo6ZGlkU3RhcnRQcm92aXNpb25h
bExvYWQpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRTdGF0ZTo6ZGlkUmVjZWl2ZVNlcnZl
clJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2Fk
U3RhdGU6OmRpZEZhaWxQcm92aXNpb25hbExvYWQpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxv
YWRTdGF0ZTo6ZGlkQ29tbWl0TG9hZCk6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZFN0YXRl
OjpkaWRTYW1lRG9jdW1lbnROb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxv
YWRTdGF0ZTo6c2V0VW5yZWFjaGFibGVVUkwpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRT
dGF0ZTo6RnJhbWVMb2FkU3RhdGUpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9GcmFt
ZUxvYWRTdGF0ZS5oOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRTdGF0ZTo6dXJsIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkU3RhdGU6OnByb3Zpc2lvbmFsVVJMIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkU3RhdGU6OnVucmVhY2hhYmxlVVJMIGNvbnN0
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkZyYW1lUHJveHk6OmxvYWRVUkwpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZVBy
b3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1l
UHJveHk6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZyYW1lUHJveHk6OmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZVByb3h5OjpzZXRVbnJlYWNoYWJsZVVSTCk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJh
bWVQcm94eTo6dXJsIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVQcm94eTo6cHJv
dmlzaW9uYWxVUkwgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZVByb3h5Ojp1bnJl
YWNoYWJsZVVSTCBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6bG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVTZXJ2
ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpkaWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1lKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92
aXNpb25hbExvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEaWRDaGFuZ2VQcm92aXNpb25hbFVSTCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFB1c2hTdGF0ZVdp
dGhpblBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEaWRSZXBsYWNlU3RhdGVXaXRoaW5QYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUG9wU3RhdGVXaXRoaW5QYWdlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExv
YWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6bG9hZFVSTEluRnJhbWUpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW46CisKIDIwMTctMDktMTQgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29t
PgogCiAgICAgICAgIFtNYWNdIFVwc3RyZWFtIFNwZWVjaFN5bnRoZXNpcy1yZWxhdGVkIFdlYktp
dFN5c3RlbUludGVyZmFjZSBmdW5jdGlvbnMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0ZyYW1lTG9hZFN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9GcmFtZUxvYWRTdGF0ZS5jcHAJKHJldmlzaW9uIDIyMjA1MykKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0ZyYW1lTG9hZFN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTYgKzI4
LDExIEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1GcmFtZUxvYWRTdGF0ZTo6RnJhbWVMb2Fk
U3RhdGUoKQotICAgIDogbV9zdGF0ZShTdGF0ZTo6RmluaXNoZWQpCi17Ci19Ci0KIEZyYW1lTG9h
ZFN0YXRlOjp+RnJhbWVMb2FkU3RhdGUoKQogewogfQogCi12b2lkIEZyYW1lTG9hZFN0YXRlOjpk
aWRTdGFydFByb3Zpc2lvbmFsTG9hZChjb25zdCBTdHJpbmcmIHVybCkKK3ZvaWQgRnJhbWVMb2Fk
U3RhdGU6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKQog
ewogICAgIEFTU0VSVChtX3Byb3Zpc2lvbmFsVVJMLmlzRW1wdHkoKSk7CiAKQEAgLTQ1LDcgKzQw
LDcgQEAgdm9pZCBGcmFtZUxvYWRTdGF0ZTo6ZGlkU3RhcnRQcm92aXNpb25hbAogICAgIG1fcHJv
dmlzaW9uYWxVUkwgPSB1cmw7CiB9CiAKLXZvaWQgRnJhbWVMb2FkU3RhdGU6OmRpZFJlY2VpdmVT
ZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZChjb25zdCBTdHJpbmcmIHVybCkKK3ZvaWQg
RnJhbWVMb2FkU3RhdGU6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9h
ZChjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKIHsKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0
ZTo6UHJvdmlzaW9uYWwpOwogCkBAIC01Nyw3ICs1Miw3IEBAIHZvaWQgRnJhbWVMb2FkU3RhdGU6
OmRpZEZhaWxQcm92aXNpb25hbEwKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6UHJvdmlz
aW9uYWwpOwogCiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpGaW5pc2hlZDsKLSAgICBtX3Byb3Zpc2lv
bmFsVVJMID0gU3RyaW5nKCk7CisgICAgbV9wcm92aXNpb25hbFVSTCA9IHsgfTsKICAgICBtX3Vu
cmVhY2hhYmxlVVJMID0gbV9sYXN0VW5yZWFjaGFibGVVUkw7CiB9CiAKQEAgLTY3LDcgKzYyLDcg
QEAgdm9pZCBGcmFtZUxvYWRTdGF0ZTo6ZGlkQ29tbWl0TG9hZCgpCiAKICAgICBtX3N0YXRlID0g
U3RhdGU6OkNvbW1pdHRlZDsKICAgICBtX3VybCA9IG1fcHJvdmlzaW9uYWxVUkw7Ci0gICAgbV9w
cm92aXNpb25hbFVSTCA9IFN0cmluZygpOworICAgIG1fcHJvdmlzaW9uYWxVUkwgPSB7IH07CiB9
CiAKIHZvaWQgRnJhbWVMb2FkU3RhdGU6OmRpZEZpbmlzaExvYWQoKQpAQCAtODYsMTIgKzgxLDEy
IEBAIHZvaWQgRnJhbWVMb2FkU3RhdGU6OmRpZEZhaWxMb2FkKCkKICAgICBtX3N0YXRlID0gU3Rh
dGU6OkZpbmlzaGVkOwogfQogCi12b2lkIEZyYW1lTG9hZFN0YXRlOjpkaWRTYW1lRG9jdW1lbnRO
b3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiB1cmwpCit2b2lkIEZyYW1lTG9hZFN0YXRlOjpkaWRT
YW1lRG9jdW1lbnROb3RpZmljYXRpb24oY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpCiB7CiAgICAg
bV91cmwgPSB1cmw7CiB9CiAKLXZvaWQgRnJhbWVMb2FkU3RhdGU6OnNldFVucmVhY2hhYmxlVVJM
KGNvbnN0IFN0cmluZyYgdW5yZWFjaGFibGVVUkwpCit2b2lkIEZyYW1lTG9hZFN0YXRlOjpzZXRV
bnJlYWNoYWJsZVVSTChjb25zdCBXZWJDb3JlOjpVUkwmIHVucmVhY2hhYmxlVVJMKQogewogICAg
IG1fbGFzdFVucmVhY2hhYmxlVVJMID0gbV91bnJlYWNoYWJsZVVSTDsKICAgICBtX3VucmVhY2hh
YmxlVVJMID0gdW5yZWFjaGFibGVVUkw7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9G
cmFtZUxvYWRTdGF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Zy
YW1lTG9hZFN0YXRlLmgJKHJldmlzaW9uIDIyMjA1MykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0ZyYW1lTG9hZFN0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDE2ICsyMywxNCBAQAog
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgRnJhbWVM
b2FkU3RhdGVfaAotI2RlZmluZSBGcmFtZUxvYWRTdGF0ZV9oCisjcHJhZ21hIG9uY2UKIAotI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBGcmFtZUxvYWRTdGF0ZSB7CiBwdWJsaWM6Ci0g
ICAgRnJhbWVMb2FkU3RhdGUoKTsKICAgICB+RnJhbWVMb2FkU3RhdGUoKTsKIAogICAgIGVudW0g
Y2xhc3MgU3RhdGUgewpAQCAtNDEsMzEgKzM5LDI5IEBAIHB1YmxpYzoKICAgICAgICAgRmluaXNo
ZWQKICAgICB9OwogCi0gICAgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZChjb25zdCBTdHJp
bmcmIHVybCk7Ci0gICAgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25h
bExvYWQoY29uc3QgU3RyaW5nJiB1cmwpOworICAgIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExv
YWQoY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJl
Y3RGb3JQcm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6VVJMJik7CiAgICAgdm9pZCBkaWRG
YWlsUHJvdmlzaW9uYWxMb2FkKCk7CiAKICAgICB2b2lkIGRpZENvbW1pdExvYWQoKTsKICAgICB2
b2lkIGRpZEZpbmlzaExvYWQoKTsKICAgICB2b2lkIGRpZEZhaWxMb2FkKCk7CiAKLSAgICB2b2lk
IGRpZFNhbWVEb2N1bWVudE5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGRp
ZFNhbWVEb2N1bWVudE5vdGlmaWNhdGlvbihjb25zdCBXZWJDb3JlOjpVUkwmKTsKIAogICAgIFN0
YXRlIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZTsgfQotICAgIGNvbnN0IFN0cmluZyYg
dXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KLSAgICBjb25zdCBTdHJpbmcmIHByb3Zpc2lv
bmFsVVJMKCkgY29uc3QgeyByZXR1cm4gbV9wcm92aXNpb25hbFVSTDsgfQorICAgIGNvbnN0IFdl
YkNvcmU6OlVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KKyAgICBjb25zdCBXZWJD
b3JlOjpVUkwmIHByb3Zpc2lvbmFsVVJMKCkgY29uc3QgeyByZXR1cm4gbV9wcm92aXNpb25hbFVS
TDsgfQogCi0gICAgdm9pZCBzZXRVbnJlYWNoYWJsZVVSTChjb25zdCBTdHJpbmcmKTsKLSAgICBj
b25zdCBTdHJpbmcmIHVucmVhY2hhYmxlVVJMKCkgY29uc3QgeyByZXR1cm4gbV91bnJlYWNoYWJs
ZVVSTDsgfQorICAgIHZvaWQgc2V0VW5yZWFjaGFibGVVUkwoY29uc3QgV2ViQ29yZTo6VVJMJik7
CisgICAgY29uc3QgV2ViQ29yZTo6VVJMJiB1bnJlYWNoYWJsZVVSTCgpIGNvbnN0IHsgcmV0dXJu
IG1fdW5yZWFjaGFibGVVUkw7IH0KIAogcHJpdmF0ZToKLSAgICBTdGF0ZSBtX3N0YXRlOwotICAg
IFN0cmluZyBtX3VybDsKLSAgICBTdHJpbmcgbV9wcm92aXNpb25hbFVSTDsKLSAgICBTdHJpbmcg
bV91bnJlYWNoYWJsZVVSTDsKLSAgICBTdHJpbmcgbV9sYXN0VW5yZWFjaGFibGVVUkw7CisgICAg
U3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpGaW5pc2hlZCB9OworICAgIFdlYkNvcmU6OlVSTCBtX3Vy
bDsKKyAgICBXZWJDb3JlOjpVUkwgbV9wcm92aXNpb25hbFVSTDsKKyAgICBXZWJDb3JlOjpVUkwg
bV91bnJlYWNoYWJsZVVSTDsKKyAgICBXZWJDb3JlOjpVUkwgbV9sYXN0VW5yZWFjaGFibGVVUkw7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEZyYW1lTG9hZFN0YXRl
X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCShyZXZp
c2lvbiAyMjIwNTMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzYsNyArNzYsNyBAQCBib29sIFdlYkZyYW1lUHJveHk6Omlz
TWFpbkZyYW1lKCkgY29uc3QKICAgICByZXR1cm4gdGhpcyA9PSBtX3BhZ2UtPm1haW5GcmFtZSgp
OwogfQogCi12b2lkIFdlYkZyYW1lUHJveHk6OmxvYWRVUkwoY29uc3QgU3RyaW5nJiB1cmwpCit2
b2lkIFdlYkZyYW1lUHJveHk6OmxvYWRVUkwoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgaWYgKCFt
X3BhZ2UpCiAgICAgICAgIHJldHVybjsKQEAgLTEzMCwxMiArMTMwLDEyIEBAIGJvb2wgV2ViRnJh
bWVQcm94eTo6aXNEaXNwbGF5aW5nUERGRG9jdW0KICAgICByZXR1cm4gTUlNRVR5cGVSZWdpc3Ry
eTo6aXNQREZPclBvc3RTY3JpcHRNSU1FVHlwZShtX01JTUVUeXBlKTsKIH0KIAotdm9pZCBXZWJG
cmFtZVByb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZChjb25zdCBTdHJpbmcmIHVybCkKK3Zv
aWQgV2ViRnJhbWVQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWQoY29uc3QgVVJMJiB1cmwp
CiB7CiAgICAgbV9mcmFtZUxvYWRTdGF0ZS5kaWRTdGFydFByb3Zpc2lvbmFsTG9hZCh1cmwpOwog
fQogCi12b2lkIFdlYkZyYW1lUHJveHk6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zp
c2lvbmFsTG9hZChjb25zdCBTdHJpbmcmIHVybCkKK3ZvaWQgV2ViRnJhbWVQcm94eTo6ZGlkUmVj
ZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFVSTCYgdXJsKQogewog
ICAgIG1fZnJhbWVMb2FkU3RhdGUuZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9u
YWxMb2FkKHVybCk7CiB9CkBAIC0xNjYsNyArMTY2LDcgQEAgdm9pZCBXZWJGcmFtZVByb3h5Ojpk
aWRGYWlsTG9hZCgpCiAgICAgbV9mcmFtZUxvYWRTdGF0ZS5kaWRGYWlsTG9hZCgpOwogfQogCi12
b2lkIFdlYkZyYW1lUHJveHk6OmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb24oY29uc3QgU3RyaW5n
JiB1cmwpCit2b2lkIFdlYkZyYW1lUHJveHk6OmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb24oY29u
c3QgVVJMJiB1cmwpCiB7CiAgICAgbV9mcmFtZUxvYWRTdGF0ZS5kaWRTYW1lRG9jdW1lbnROb3Rp
ZmljYXRpb24odXJsKTsKIH0KQEAgLTE3Niw3ICsxNzYsNyBAQCB2b2lkIFdlYkZyYW1lUHJveHk6
OmRpZENoYW5nZVRpdGxlKGNvbnN0CiAgICAgbV90aXRsZSA9IHRpdGxlOwogfQogCi12b2lkIFdl
YkZyYW1lUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6UG9saWN5QWN0aW9u
IGFjdGlvbiwgdWludDY0X3QgbGlzdGVuZXJJRCwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9u
LCBjb25zdCBXZWJzaXRlUG9saWNpZXMmIHdlYnNpdGVQb2xpY2llcykKK3ZvaWQgV2ViRnJhbWVQ
cm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gYWN0aW9uLCB1aW50NjRf
dCBsaXN0ZW5lcklELCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIGNvbnN0IFdlYnNpdGVQ
b2xpY2llcyYgd2Vic2l0ZVBvbGljaWVzKQogewogICAgIGlmICghbV9wYWdlKQogICAgICAgICBy
ZXR1cm47CkBAIC0yMzIsMTMgKzIzMiwxMyBAQCB2b2lkIFdlYkZyYW1lUHJveHk6OmdldFJlc291
cmNlRGF0YShBUEk6CiAgICAgbV9wYWdlLT5nZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUodGhpcywg
cmVzb3VyY2VVUkwsIFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwogfQogCi12b2lkIFdlYkZy
YW1lUHJveHk6OnNldFVucmVhY2hhYmxlVVJMKGNvbnN0IFN0cmluZyYgdW5yZWFjaGFibGVVUkwp
Cit2b2lkIFdlYkZyYW1lUHJveHk6OnNldFVucmVhY2hhYmxlVVJMKGNvbnN0IFVSTCYgdW5yZWFj
aGFibGVVUkwpCiB7CiAgICAgbV9mcmFtZUxvYWRTdGF0ZS5zZXRVbnJlYWNoYWJsZVVSTCh1bnJl
YWNoYWJsZVVSTCk7CiB9CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCi1ib29sIFdl
YkZyYW1lUHJveHk6OmRpZEhhbmRsZUNvbnRlbnRGaWx0ZXJVbmJsb2NrTmF2aWdhdGlvbihjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCitib29sIFdlYkZyYW1lUHJveHk6
OmRpZEhhbmRsZUNvbnRlbnRGaWx0ZXJVbmJsb2NrTmF2aWdhdGlvbihjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QpCiB7CiAgICAgaWYgKCFtX2NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxl
ci5jYW5IYW5kbGVSZXF1ZXN0KHJlcXVlc3QpKSB7CiAgICAgICAgIG1fY29udGVudEZpbHRlclVu
YmxvY2tIYW5kbGVyID0geyB9OwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJh
bWVQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1l
UHJveHkuaAkocmV2aXNpb24gMjIyMDUzKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
RnJhbWVQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC03NywxNCArNzcsMTQgQEAgcHVibGljOgog
CiAgICAgRnJhbWVMb2FkU3RhdGUmIGZyYW1lTG9hZFN0YXRlKCkgeyByZXR1cm4gbV9mcmFtZUxv
YWRTdGF0ZTsgfQogCi0gICAgdm9pZCBsb2FkVVJMKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQg
bG9hZFVSTChjb25zdCBXZWJDb3JlOjpVUkwmKTsKICAgICB2b2lkIHN0b3BMb2FkaW5nKCkgY29u
c3Q7CiAKLSAgICBjb25zdCBTdHJpbmcmIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVMb2Fk
U3RhdGUudXJsKCk7IH0KLSAgICBjb25zdCBTdHJpbmcmIHByb3Zpc2lvbmFsVVJMKCkgY29uc3Qg
eyByZXR1cm4gbV9mcmFtZUxvYWRTdGF0ZS5wcm92aXNpb25hbFVSTCgpOyB9CisgICAgY29uc3Qg
V2ViQ29yZTo6VVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lTG9hZFN0YXRlLnVybCgp
OyB9CisgICAgY29uc3QgV2ViQ29yZTo6VVJMJiBwcm92aXNpb25hbFVSTCgpIGNvbnN0IHsgcmV0
dXJuIG1fZnJhbWVMb2FkU3RhdGUucHJvdmlzaW9uYWxVUkwoKTsgfQogCi0gICAgdm9pZCBzZXRV
bnJlYWNoYWJsZVVSTChjb25zdCBTdHJpbmcmKTsKLSAgICBjb25zdCBTdHJpbmcmIHVucmVhY2hh
YmxlVVJMKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZUxvYWRTdGF0ZS51bnJlYWNoYWJsZVVSTCgp
OyB9CisgICAgdm9pZCBzZXRVbnJlYWNoYWJsZVVSTChjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAg
ICBjb25zdCBXZWJDb3JlOjpVUkwmIHVucmVhY2hhYmxlVVJMKCkgY29uc3QgeyByZXR1cm4gbV9m
cmFtZUxvYWRTdGF0ZS51bnJlYWNoYWJsZVVSTCgpOyB9CiAKICAgICBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9NSU1FVHlwZTsgfQogICAgIGJvb2wgY29udGFpbnNQ
bHVnaW5Eb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGFpbnNQbHVnaW5Eb2N1bWVudDsg
fQpAQCAtMTA1LDEzICsxMDUsMTMgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0TWFpblJlc291cmNl
RGF0YShGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7
CiAgICAgdm9pZCBnZXRSZXNvdXJjZURhdGEoQVBJOjpVUkwqLCBGdW5jdGlvbjx2b2lkIChBUEk6
OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAKLSAgICB2b2lkIGRpZFN0YXJ0UHJv
dmlzaW9uYWxMb2FkKGNvbnN0IFN0cmluZyYgdXJsKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVTZXJ2
ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZChjb25zdCBTdHJpbmcmIHVybCk7CisgICAgdm9p
ZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB2b2lk
IGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3Jl
OjpVUkwmKTsKICAgICB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWQoKTsKICAgICB2b2lkIGRp
ZENvbW1pdExvYWQoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgV2ViQ2VydGlmaWNhdGVJbmZv
JiwgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50KTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWQo
KTsKICAgICB2b2lkIGRpZEZhaWxMb2FkKCk7Ci0gICAgdm9pZCBkaWRTYW1lRG9jdW1lbnROYXZp
Z2F0aW9uKGNvbnN0IFN0cmluZyYpOyAvLyBlZy4gYW5jaG9yIG5hdmlnYXRpb24sIHNlc3Npb24g
c3RhdGUgY2hhbmdlLgorICAgIHZvaWQgZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbihjb25zdCBX
ZWJDb3JlOjpVUkwmKTsgLy8gZWcuIGFuY2hvciBuYXZpZ2F0aW9uLCBzZXNzaW9uIHN0YXRlIGNo
YW5nZS4KICAgICB2b2lkIGRpZENoYW5nZVRpdGxlKGNvbnN0IFN0cmluZyYpOwogCiAgICAgLy8g
UG9saWN5IG9wZXJhdGlvbnMuCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAJKHJldmlzaW9uIDIyMjA1MykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk2MSw3ICs5NjEsNyBAQCBSZWZQdHI8
QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvCiAgICAgcmV0dXJuIFdURk1vdmUobmF2
aWdhdGlvbik7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkQWx0ZXJuYXRlSFRNTFN0cmlu
Zyhjb25zdCBTdHJpbmcmIGh0bWxTdHJpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgY29uc3Qg
U3RyaW5nJiB1bnJlYWNoYWJsZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQordm9pZCBXZWJQ
YWdlUHJveHk6OmxvYWRBbHRlcm5hdGVIVE1MU3RyaW5nKGNvbnN0IFN0cmluZyYgaHRtbFN0cmlu
ZywgY29uc3QgV2ViQ29yZTo6VVJMJiBiYXNlVVJMLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVucmVh
Y2hhYmxlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCiB7CiAgICAgLy8gV2hlbiB0aGUgVUlQ
cm9jZXNzIGlzIGluIHRoZSBwcm9jZXNzIG9mIGhhbmRsaW5nIGEgZmFpbGluZyBwcm92aXNpb25h
bCBsb2FkLCBkbyBub3QgYXR0ZW1wdCB0bwogICAgIC8vIHN0YXJ0IGEgc2Vjb25kIGFsdGVybmF0
aXZlIEhUTUwgbG9hZCBhcyB0aGlzIHdpbGwgcHJldmVudCB0aGUgcGFnZSBsb2FkIHN0YXRlIGZy
b20gYmVpbmcKQEAgLTMxNDYsNyArMzE0Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWREZXN0
cm95TmF2aWdhdGlvbigKICAgICBtX25hdmlnYXRpb25TdGF0ZS0+ZGlkRGVzdHJveU5hdmlnYXRp
b24obmF2aWdhdGlvbklEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklE
LCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB1bnJlYWNoYWJsZVVSTCwgY29uc3Qg
VXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBXZWJQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9u
YWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBX
ZWJDb3JlOjpVUkwmJiB1cmwsIFdlYkNvcmU6OlVSTCYmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBV
c2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3Io
bV9wYWdlQ2xpZW50KTsKIApAQCAtMzE4MCw3ICszMTgwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRpZFN0YXJ0UHJvdmlzaW9uYWxMbwogICAgICAgICBtX2xvYWRlckNsaWVudC0+ZGlkU3RhcnRQ
cm92aXNpb25hbExvYWRGb3JGcmFtZSgqdGhpcywgKmZyYW1lLCBuYXZpZ2F0aW9uLmdldCgpLCBt
X3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdl
dCgpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZv
clByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKK3Zv
aWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExv
YWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNv
cmU6OlVSTCYmIHVybCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewogICAgIFBhZ2VDbGll
bnRQcm90ZWN0b3IgcHJvdGVjdG9yKG1fcGFnZUNsaWVudCk7CiAKQEAgLTMyMzQsNyArMzIzNCw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDYW5jZWxDbGllbnRSZWRpcmUKICAgICB9CiB9CiAK
LXZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1lKHVpbnQ2
NF90IGZyYW1lSUQsIHVpbnQ2NF90LCBjb25zdCBTdHJpbmcmIHVybCkKK3ZvaWQgV2ViUGFnZVBy
b3h5OjpkaWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQ2NF90LCBXZWJDb3JlOjpVUkwmJiB1cmwpCiB7CiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBw
cm90ZWN0b3IobV9wYWdlQ2xpZW50KTsKIApAQCAtMzQ4Miw3ICszNDgyLDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZEZhaWxMb2FkRm9yRnJhbWUodQogICAgICAgICBtX3BhZ2VDbGllbnQuZGlk
RmFpbExvYWRGb3JNYWluRnJhbWUoKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZFNhbWVE
b2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZp
Z2F0aW9uSUQsIHVpbnQzMl90IG9wYXF1ZVNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLCBjb25z
dCBTdHJpbmcmIHVybCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQordm9pZCBXZWJQYWdlUHJv
eHk6OmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQzMl90IG9wYXF1ZVNhbWVEb2N1bWVudE5hdmlnYXRp
b25UeXBlLCBXZWJDb3JlOjpVUkwmJiB1cmwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsK
ICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihtX3BhZ2VDbGllbnQpOwogCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMjIyMDUzKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTM5NSw3ICszOTUsNyBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4g
bG9hZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlVVJMLCBjb25zdCBTdHJpbmcmIHJlc291cmNlRGly
ZWN0b3J5VVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEgPSBudWxscHRyKTsKICAgICBSZWZQdHI8
QVBJOjpOYXZpZ2F0aW9uPiBsb2FkRGF0YShBUEk6OkRhdGEqLCBjb25zdCBTdHJpbmcmIE1JTUVU
eXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6
T2JqZWN0KiB1c2VyRGF0YSA9IG51bGxwdHIpOwogICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+
IGxvYWRIVE1MU3RyaW5nKGNvbnN0IFN0cmluZyYgaHRtbFN0cmluZywgY29uc3QgU3RyaW5nJiBi
YXNlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEgPSBudWxscHRyKTsKLSAgICB2b2lkIGxvYWRB
bHRlcm5hdGVIVE1MU3RyaW5nKGNvbnN0IFN0cmluZyYgaHRtbFN0cmluZywgY29uc3QgU3RyaW5n
JiBiYXNlVVJMLCBjb25zdCBTdHJpbmcmIHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVjdCogdXNl
ckRhdGEgPSBudWxscHRyKTsKKyAgICB2b2lkIGxvYWRBbHRlcm5hdGVIVE1MU3RyaW5nKGNvbnN0
IFN0cmluZyYgaHRtbFN0cmluZywgY29uc3QgV2ViQ29yZTo6VVJMJiBiYXNlVVJMLCBjb25zdCBX
ZWJDb3JlOjpVUkwmIHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEgPSBudWxs
cHRyKTsKICAgICB2b2lkIGxvYWRQbGFpblRleHRTdHJpbmcoY29uc3QgU3RyaW5nJiwgQVBJOjpP
YmplY3QqIHVzZXJEYXRhID0gbnVsbHB0cik7CiAgICAgdm9pZCBsb2FkV2ViQXJjaGl2ZURhdGEo
QVBJOjpEYXRhKiwgQVBJOjpPYmplY3QqIHVzZXJEYXRhID0gbnVsbHB0cik7CiAgICAgdm9pZCBu
YXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljayhjb25zdCBTdHJpbmcmIHVybCwgV2Vi
Q29yZTo6SW50UG9pbnQgZG9jdW1lbnRQb2ludCwgV2ViQ29yZTo6SW50UG9pbnQgc2NyZWVuUG9p
bnQpOwpAQCAtMTI0OCwxNyArMTI0OCwxNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkQ3JlYXRl
TWFpbkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQpOwogICAgIHZvaWQgZGlkQ3JlYXRlU3ViZnJhbWUo
dWludDY0X3QgZnJhbWVJRCk7CiAKLSAgICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJp
bmcmIHVybCwgY29uc3QgU3RyaW5nJiB1bnJlYWNoYWJsZVVSTCwgY29uc3QgVXNlckRhdGEmKTsK
LSAgICB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5n
JiwgY29uc3QgVXNlckRhdGEmKTsKKyAgICB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpV
UkwmJiwgV2ViQ29yZTo6VVJMJiYgdW5yZWFjaGFibGVVUkwsIGNvbnN0IFVzZXJEYXRhJik7Cisg
ICAgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFt
ZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlVSTCYm
LCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgd2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdEZv
ckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgdXJsLCBkb3VibGUgZGVsYXkp
OwogICAgIHZvaWQgZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSh1aW50NjRfdCBmcmFt
ZUlEKTsKLSAgICB2b2lkIGRpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWUodWludDY0X3Qg
ZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIHVybCk7CisgICAg
dm9pZCBkaWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6VVJMJiYpOwogICAgIHZvaWQgZGlkRmFpbFBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBjb25zdCBTdHJpbmcmIHByb3Zpc2lvbmFsVVJMLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJiwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZENvbW1pdExvYWRGb3JGcmFt
ZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IGZy
YW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYsIGJvb2wgY29udGFp
bnNQbHVnaW5Eb2N1bWVudCwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRl
bnQ+IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lk
IGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRG
b3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFVz
ZXJEYXRhJik7CiAgICAgdm9pZCBkaWRGYWlsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQs
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNv
bnN0IFVzZXJEYXRhJik7Ci0gICAgdm9pZCBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJh
bWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50MzJfdCBzYW1l
RG9jdW1lbnROYXZpZ2F0aW9uVHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgVXNlckRhdGEmKTsK
KyAgICB2b2lkIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSh1aW50NjRfdCBmcmFt
ZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQzMl90IHNhbWVEb2N1bWVudE5hdmlnYXRp
b25UeXBlLCBXZWJDb3JlOjpVUkwmJiwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRpZENo
YW5nZU1haW5Eb2N1bWVudCh1aW50NjRfdCBmcmFtZUlEKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2
ZVRpdGxlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiwgY29uc3QgVXNl
ckRhdGEmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIyMjA1MykKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMTE1LDExICsx
MTUsMTEgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBEaWRDcmVhdGVTdWJmcmFt
ZSh1aW50NjRfdCBmcmFtZUlEKQogCiAgICAgIyBGcmFtZSBsb2FkIG1lc3NhZ2VzCi0gICAgRGlk
U3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIFN0cmluZyB1cmwsIFN0cmluZyB1bnJlYWNoYWJsZVVSTCwgV2ViS2l0OjpV
c2VyRGF0YSB1c2VyRGF0YSkKLSAgICBEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNp
b25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IFN0cmluZyB1cmwsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCisgICAgRGlkU3RhcnRQcm92
aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIFdlYkNvcmU6OlVSTCB1cmwsIFdlYkNvcmU6OlVSTCB1bnJlYWNoYWJsZVVSTCwgV2ViS2l0
OjpVc2VyRGF0YSB1c2VyRGF0YSkKKyAgICBEaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92
aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIFdlYkNvcmU6OlVSTCB1cmwsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgV2ls
bFBlcmZvcm1DbGllbnRSZWRpcmVjdEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyB1
cmwsIGRvdWJsZSBkZWxheSkKICAgICBEaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lKHVp
bnQ2NF90IGZyYW1lSUQpCi0gICAgRGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZSh1aW50
NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFN0cmluZyB1cmwpCisgICAgRGlk
Q2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlVSTCB1cmwpCiAgICAgRGlkRmFpbFByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBTdHJpbmcg
cHJvdmlzaW9uYWxVUkwsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IsIFdlYktpdDo6VXNl
ckRhdGEgdXNlckRhdGEpCiAgICAgRGlkQ29tbWl0TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgU3RyaW5nIG1pbWVUeXBlLCBib29sIGhhc0N1c3Rv
bUNvbnRlbnRQcm92aWRlciwgdWludDMyX3QgbG9hZFR5cGUsIFdlYkNvcmU6OkNlcnRpZmljYXRl
SW5mbyBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJlQ29u
dGVudCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKICAgICBEaWRGYWlsTG9hZEZvckZyYW1l
KHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciBlcnJvciwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKQEAgLTEzMiw3ICsxMzIs
NyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIERpZERpc3BsYXlJbnNlY3VyZUNv
bnRlbnRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRh
KQogICAgIERpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFdl
YktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgRGlkRGV0ZWN0WFNTRm9yRnJhbWUodWludDY0
X3QgZnJhbWVJRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKLSAgICBEaWRTYW1lRG9jdW1l
bnROYXZpZ2F0aW9uRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlv
bklELCB1aW50MzJfdCB0eXBlLCBTdHJpbmcgdXJsLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRh
KQorICAgIERpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlE
LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQzMl90IHR5cGUsIFdlYkNvcmU6OlVSTCB1cmws
IFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgRGlkQ2hhbmdlTWFpbkRvY3VtZW50KHVp
bnQ2NF90IGZyYW1lSUQpOwogICAgIERpZERlc3Ryb3lOYXZpZ2F0aW9uKHVpbnQ2NF90IG5hdmln
YXRpb25JRCkKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3Bw
CShyZXZpc2lvbiAyMjIwNTMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1Bh
Z2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDksMTIgKzIwOSwxMiBAQCB2b2lkIFdLUGFnZUxv
YWRIVE1MU3RyaW5nV2l0aFVzZXJEYXRhKFdLCiAKIHZvaWQgV0tQYWdlTG9hZEFsdGVybmF0ZUhU
TUxTdHJpbmcoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIGh0bWxTdHJpbmdSZWYsIFdL
VVJMUmVmIGJhc2VVUkxSZWYsIFdLVVJMUmVmIHVucmVhY2hhYmxlVVJMUmVmKQogewotICAgIHRv
SW1wbChwYWdlUmVmKS0+bG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcodG9XVEZTdHJpbmcoaHRtbFN0
cmluZ1JlZiksIHRvV1RGU3RyaW5nKGJhc2VVUkxSZWYpLCB0b1dURlN0cmluZyh1bnJlYWNoYWJs
ZVVSTFJlZikpOworICAgIHRvSW1wbChwYWdlUmVmKS0+bG9hZEFsdGVybmF0ZUhUTUxTdHJpbmco
dG9XVEZTdHJpbmcoaHRtbFN0cmluZ1JlZiksIFVSTChVUkwoKSwgdG9XVEZTdHJpbmcoYmFzZVVS
TFJlZikpLCBVUkwoVVJMKCksIHRvV1RGU3RyaW5nKHVucmVhY2hhYmxlVVJMUmVmKSkpOwogfQog
CiB2b2lkIFdLUGFnZUxvYWRBbHRlcm5hdGVIVE1MU3RyaW5nV2l0aFVzZXJEYXRhKFdLUGFnZVJl
ZiBwYWdlUmVmLCBXS1N0cmluZ1JlZiBodG1sU3RyaW5nUmVmLCBXS1VSTFJlZiBiYXNlVVJMUmVm
LCBXS1VSTFJlZiB1bnJlYWNoYWJsZVVSTFJlZiwgV0tUeXBlUmVmIHVzZXJEYXRhUmVmKQogewot
ICAgIHRvSW1wbChwYWdlUmVmKS0+bG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcodG9XVEZTdHJpbmco
aHRtbFN0cmluZ1JlZiksIHRvV1RGU3RyaW5nKGJhc2VVUkxSZWYpLCB0b1dURlN0cmluZyh1bnJl
YWNoYWJsZVVSTFJlZiksIHRvSW1wbCh1c2VyRGF0YVJlZikpOworICAgIHRvSW1wbChwYWdlUmVm
KS0+bG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcodG9XVEZTdHJpbmcoaHRtbFN0cmluZ1JlZiksIFVS
TChVUkwoKSwgdG9XVEZTdHJpbmcoYmFzZVVSTFJlZikpLCBVUkwoVVJMKCksIHRvV1RGU3RyaW5n
KHVucmVhY2hhYmxlVVJMUmVmKSksIHRvSW1wbCh1c2VyRGF0YVJlZikpOwogfQogCiB2b2lkIFdL
UGFnZUxvYWRQbGFpblRleHRTdHJpbmcoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIHBs
YWluVGV4dFN0cmluZ1JlZikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQko
cmV2aXNpb24gMjIyMDUzKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
QnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQkod29ya2luZyBjb3B5KQpAQCAtMTU3LDcgKzE1
Nyw3IEBAIC0gKHZvaWQpbG9hZEhUTUxTdHJpbmc6KE5TU3RyaW5nICopSFRNTFMKIAogLSAodm9p
ZClsb2FkQWx0ZXJuYXRlSFRNTFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgYmFzZVVSTDooTlNV
UkwgKiliYXNlVVJMIGZvclVucmVhY2hhYmxlVVJMOihOU1VSTCAqKXVucmVhY2hhYmxlVVJMCiB7
Ci0gICAgX3BhZ2UtPmxvYWRBbHRlcm5hdGVIVE1MU3RyaW5nKHN0cmluZywgW2Jhc2VVUkwgX3dl
Yl9vcmlnaW5hbERhdGFBc1dURlN0cmluZ10sIFt1bnJlYWNoYWJsZVVSTCBfd2ViX29yaWdpbmFs
RGF0YUFzV1RGU3RyaW5nXSk7CisgICAgX3BhZ2UtPmxvYWRBbHRlcm5hdGVIVE1MU3RyaW5nKHN0
cmluZywgYmFzZVVSTCwgdW5yZWFjaGFibGVVUkwpOwogfQogCiAtICh2b2lkKWxvYWREYXRhOihO
U0RhdGEgKilkYXRhIE1JTUVUeXBlOihOU1N0cmluZyAqKU1JTUVUeXBlIHRleHRFbmNvZGluZ05h
bWU6KE5TU3RyaW5nICopZW5jb2RpbmdOYW1lIGJhc2VVUkw6KE5TVVJMICopYmFzZVVSTApJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURl
bGVnYXRlUHJpdmF0ZS5oCShyZXZpc2lvbiAyMjIwNTMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NjEsNiArMTYxLDEwIEBAIHN0cnVjdCBVSUVkZ2VJbnNldHM7CiAtICh2b2lkKV93ZWJWaWV3OihX
S1dlYlZpZXcgKil3ZWJWaWV3IGRpZENsaWNrQXV0b0ZpbGxCdXR0b25XaXRoVXNlckluZm86KGlk
IDxOU1NlY3VyZUNvZGluZz4pdXNlckluZm8gV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFD
X1RCQSkpOwogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBnZXRUb29sYmFy
c0FyZVZpc2libGVXaXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoQk9PTCkpY29tcGxldGlv
bkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSkpOwogLSAodm9pZClf
d2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBzYXZlRGF0YVRvRmlsZTooTlNEYXRhICopZGF0
YSBzdWdnZXN0ZWRGaWxlbmFtZTooTlNTdHJpbmcgKilzdWdnZXN0ZWRGaWxlbmFtZSBtaW1lVHlw
ZTooTlNTdHJpbmcgKiltaW1lVHlwZSBvcmlnaW5hdGluZ1VSTDooTlNVUkwgKil1cmwgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSkpOworLSAoQ0dGbG9hdClfd2ViVmlld0hlYWRl
ckhlaWdodDooV0tXZWJWaWV3ICopd2ViVmlldyBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19N
QUNfVEJBKSk7CistIChDR0Zsb2F0KV93ZWJWaWV3Rm9vdGVySGVpZ2h0OihXS1dlYlZpZXcgKil3
ZWJWaWV3IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpKTsKKy0gKHZvaWQpX3dl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZHJhd0hlYWRlckluUmVjdDooQ0dSZWN0KXJlY3Qg
Zm9yUGFnZVdpdGhUaXRsZTooTlNTdHJpbmcgKil0aXRsZSBVUkw6KE5TVVJMICopdXJsIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpKTsKKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgZHJhd0Zvb3RlckluUmVjdDooQ0dSZWN0KXJlY3QgZm9yUGFnZVdpdGhU
aXRsZTooTlNTdHJpbmcgKil0aXRsZSBVUkw6KE5TVVJMICopdXJsIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3N4KFdLX01BQ19UQkEpKTsKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZp
ZXcgcmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbjooV0tTZWN1
cml0eU9yaWdpbiAqKXNlY3VyaXR5T3JpZ2luIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoQk9P
TCkpZGVjaXNpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpKTsK
IC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYnZpZXcgbW91c2VEaWRNb3ZlT3ZlckVs
ZW1lbnQ6KF9XS0hpdFRlc3RSZXN1bHQgKiloaXRUZXN0UmVzdWx0IHdpdGhGbGFnczooTlNFdmVu
dE1vZGlmaWVyRmxhZ3MpZmxhZ3MgdXNlckluZm86KGlkIDxOU1NlY3VyZUNvZGluZz4pdXNlcklu
Zm87CiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEV4Y2VlZEJhY2tn
cm91bmRSZXNvdXJjZUxpbWl0V2hpbGVJbkZvcmVncm91bmQ6KF9XS1Jlc291cmNlTGltaXQpbGlt
aXQgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSkpOwpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCShyZXZpc2lvbiAyMjIw
NTMpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0zODM5LDcgKzM4MzksNyBAQCAtIChOU1VSTCAqKV91bnJlYWNoYWJs
ZVVSTAogCiAtICh2b2lkKV9sb2FkQWx0ZXJuYXRlSFRNTFN0cmluZzooTlNTdHJpbmcgKilzdHJp
bmcgYmFzZVVSTDooTlNVUkwgKiliYXNlVVJMIGZvclVucmVhY2hhYmxlVVJMOihOU1VSTCAqKXVu
cmVhY2hhYmxlVVJMCiB7Ci0gICAgX3BhZ2UtPmxvYWRBbHRlcm5hdGVIVE1MU3RyaW5nKHN0cmlu
ZywgW2Jhc2VVUkwgX3dlYl9vcmlnaW5hbERhdGFBc1dURlN0cmluZ10sIFt1bnJlYWNoYWJsZVVS
TCBfd2ViX29yaWdpbmFsRGF0YUFzV1RGU3RyaW5nXSk7CisgICAgX3BhZ2UtPmxvYWRBbHRlcm5h
dGVIVE1MU3RyaW5nKHN0cmluZywgYmFzZVVSTCwgdW5yZWFjaGFibGVVUkwpOwogfQogCiAtIChX
S05hdmlnYXRpb24gKilfbG9hZERhdGE6KE5TRGF0YSAqKWRhdGEgTUlNRVR5cGU6KE5TU3RyaW5n
ICopTUlNRVR5cGUgY2hhcmFjdGVyRW5jb2RpbmdOYW1lOihOU1N0cmluZyAqKWNoYXJhY3RlckVu
Y29kaW5nTmFtZSBiYXNlVVJMOihOU1VSTCAqKWJhc2VVUkwgdXNlckRhdGE6KGlkKXVzZXJEYXRh
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJWaWV3LmNwcAkocmV2aXNpb24gMjIyMDUzKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDYgKzY1LDcg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL0dVbmlxdWVQdHJTb3VwLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9KU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWZQdHJDYWly
by5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+CiAjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIu
aD4KICNpbmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVm
UHRyLmg+CkBAIC0yNDkxLDcgKzI0OTIsNyBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19sb2FkX2Fs
dGVybmF0ZV9odG1sCiAgICAgZ19yZXR1cm5faWZfZmFpbChjb250ZW50KTsKICAgICBnX3JldHVy
bl9pZl9mYWlsKGNvbnRlbnRVUkkpOwogCi0gICAgZ2V0UGFnZSh3ZWJWaWV3KS5sb2FkQWx0ZXJu
YXRlSFRNTFN0cmluZyhTdHJpbmc6OmZyb21VVEY4KGNvbnRlbnQpLCBTdHJpbmc6OmZyb21VVEY4
KGJhc2VVUkkpLCBTdHJpbmc6OmZyb21VVEY4KGNvbnRlbnRVUkkpKTsKKyAgICBnZXRQYWdlKHdl
YlZpZXcpLmxvYWRBbHRlcm5hdGVIVE1MU3RyaW5nKFN0cmluZzo6ZnJvbVVURjgoY29udGVudCks
IFVSTChVUkwoKSwgU3RyaW5nOjpmcm9tVVRGOChiYXNlVVJJKSksIFVSTChVUkwoKSwgU3RyaW5n
Ojpmcm9tVVRGOChjb250ZW50VVJJKSkpOwogfQogCiAvKioKQEAgLTI2MjcsNyArMjYyOCw3IEBA
IHZvaWQgd2Via2l0X3dlYl92aWV3X3JlbG9hZF9ieXBhc3NfY2FjaGUKIHsKICAgICBnX3JldHVy
bl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7CiAKLSAgICBnZXRQYWdlKHdl
YlZpZXcpLnJlbG9hZChXZWJDb3JlOjpSZWxvYWRPcHRpb246OkZyb21PcmlnaW4pOworICAgIGdl
dFBhZ2Uod2ViVmlldykucmVsb2FkKFJlbG9hZE9wdGlvbjo6RnJvbU9yaWdpbik7CiB9CiAKIC8q
KgpAQCAtMzE1NSw3ICszMTU2LDcgQEAgSlNHbG9iYWxDb250ZXh0UmVmIHdlYmtpdF93ZWJfdmll
d19nZXRfagogICAgIHJldHVybiB3ZWJWaWV3LT5wcml2LT5qYXZhc2NyaXB0R2xvYmFsQ29udGV4
dC5nZXQoKTsKIH0KIAotc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld1J1bkphdmFTY3JpcHRDYWxs
YmFjayhBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogd2tTZXJpYWxpemVkU2NyaXB0VmFsdWUs
IGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMmIGV4Y2VwdGlvbkRldGFpbHMsIEdUYXNr
KiB0YXNrKQorc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld1J1bkphdmFTY3JpcHRDYWxsYmFjayhB
UEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogd2tTZXJpYWxpemVkU2NyaXB0VmFsdWUsIGNvbnN0
IEV4Y2VwdGlvbkRldGFpbHMmIGV4Y2VwdGlvbkRldGFpbHMsIEdUYXNrKiB0YXNrKQogewogICAg
IGlmIChnX3Rhc2tfcmV0dXJuX2Vycm9yX2lmX2NhbmNlbGxlZCh0YXNrKSkKICAgICAgICAgcmV0
dXJuOwpAQCAtMzIwNiw3ICszMjA3LDcgQEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfcnVuX2phdmFz
Y3JpcHQoV2ViSwogICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2NyaXB0KTsKIAogICAgIEdUYXNrKiB0
YXNrID0gZ190YXNrX25ldyh3ZWJWaWV3LCBjYW5jZWxsYWJsZSwgY2FsbGJhY2ssIHVzZXJEYXRh
KTsKLSAgICBnZXRQYWdlKHdlYlZpZXcpLnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShTdHJpbmc6
OmZyb21VVEY4KHNjcmlwdCksIHRydWUsIFt0YXNrXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBib29sLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25E
ZXRhaWxzJiBleGNlcHRpb25EZXRhaWxzLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpIHsK
KyAgICBnZXRQYWdlKHdlYlZpZXcpLnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShTdHJpbmc6OmZy
b21VVEY4KHNjcmlwdCksIHRydWUsIFt0YXNrXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSog
c2VyaWFsaXplZFNjcmlwdFZhbHVlLCBib29sLCBjb25zdCBFeGNlcHRpb25EZXRhaWxzJiBleGNl
cHRpb25EZXRhaWxzLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpIHsKICAgICAgICAgd2Vi
a2l0V2ViVmlld1J1bkphdmFTY3JpcHRDYWxsYmFjayhzZXJpYWxpemVkU2NyaXB0VmFsdWUsIGV4
Y2VwdGlvbkRldGFpbHMsIGFkb3B0R1JlZih0YXNrKS5nZXQoKSk7CiAgICAgfSk7CiB9CkBAIC0z
Mjk3LDcgKzMyOTgsNyBAQCBzdGF0aWMgdm9pZCByZXNvdXJjZXNTdHJlYW1SZWFkQ2FsbGJhY2so
CiAgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyhnX3Rhc2tfZ2V0
X3NvdXJjZV9vYmplY3QodGFzay5nZXQoKSkpOwogICAgIGdwb2ludGVyIG91dHB1dFN0cmVhbURh
dGEgPSBnX21lbW9yeV9vdXRwdXRfc3RyZWFtX2dldF9kYXRhKEdfTUVNT1JZX09VVFBVVF9TVFJF
QU0ob2JqZWN0KSk7CiAgICAgZ2V0UGFnZSh3ZWJWaWV3KS5ydW5KYXZhU2NyaXB0SW5NYWluRnJh
bWUoU3RyaW5nOjpmcm9tVVRGOChyZWludGVycHJldF9jYXN0PGNvbnN0IGdjaGFyKj4ob3V0cHV0
U3RyZWFtRGF0YSkpLCB0cnVlLAotICAgICAgICBbdGFza10oQVBJOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWUqIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgYm9vbCwgY29uc3QgV2ViQ29yZTo6RXhjZXB0
aW9uRGV0YWlscyYgZXhjZXB0aW9uRGV0YWlscywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9y
KSB7CisgICAgICAgIFt0YXNrXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLCBib29sLCBjb25zdCBFeGNlcHRpb25EZXRhaWxzJiBleGNlcHRpb25EZXRh
aWxzLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IpIHsKICAgICAgICAgICAgIHdlYmtpdFdl
YlZpZXdSdW5KYXZhU2NyaXB0Q2FsbGJhY2soc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBleGNlcHRp
b25EZXRhaWxzLCB0YXNrLmdldCgpKTsKICAgICAgICAgfSk7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCShyZXZpc2lvbiAyMjIwNTMpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEwNSw2ICsxMDUsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBzZXRXaW5kb3dGcmFt
ZShXZWJQYWdlUHJveHkmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBmaW5hbDsKICAgICAg
ICAgdm9pZCB3aW5kb3dGcmFtZShXZWJQYWdlUHJveHkmLCBGdW5jdGlvbjx2b2lkKFdlYkNvcmU6
OkZsb2F0UmVjdCk+JiYpIGZpbmFsOwogICAgICAgICB2b2lkIGRpZE5vdEhhbmRsZVdoZWVsRXZl
bnQoV2ViUGFnZVByb3h5KiwgY29uc3QgTmF0aXZlV2ViV2hlZWxFdmVudCYpIGZpbmFsOworICAg
ICAgICBmbG9hdCBoZWFkZXJIZWlnaHQoV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSYpIGZp
bmFsOworICAgICAgICBmbG9hdCBmb290ZXJIZWlnaHQoV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQ
cm94eSYpIGZpbmFsOworICAgICAgICB2b2lkIGRyYXdIZWFkZXIoV2ViUGFnZVByb3h5JiwgV2Vi
RnJhbWVQcm94eSYsIFdlYkNvcmU6OkZsb2F0UmVjdCYmKSBmaW5hbDsKKyAgICAgICAgdm9pZCBk
cmF3Rm9vdGVyKFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmLCBXZWJDb3JlOjpGbG9hdFJl
Y3QmJikgZmluYWw7CiAgICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3h5JiwgQVBJOjpTZWN1cml0eU9yaWdpbiYsIEZ1bmN0
aW9uPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwogICAgICAgICB2b2lkIGhhbmRsZUF1dG9wbGF5RXZl
bnQoV2ViUGFnZVByb3h5JiwgV2ViQ29yZTo6QXV0b3BsYXlFdmVudCwgT3B0aW9uU2V0PFdlYkNv
cmU6OkF1dG9wbGF5RXZlbnRGbGFncz4pIGZpbmFsOwogICAgICAgICB2b2lkIHVuYXZhaWxhYmxl
UGx1Z2luQnV0dG9uQ2xpY2tlZChXZWJQYWdlUHJveHkmLCBXS1BsdWdpblVuYXZhaWxhYmlsaXR5
UmVhc29uLCBBUEk6OkRpY3Rpb25hcnkmKSBmaW5hbDsKQEAgLTE2MCwxMiArMTY0LDE2IEBAIHBy
aXZhdGU6CiAgICAgICAgIGJvb2wgd2ViVmlld1J1bk1vZGFsIDogMTsKICAgICAgICAgYm9vbCB3
ZWJWaWV3VGFrZUZvY3VzIDogMTsKICAgICAgICAgYm9vbCB3ZWJWaWV3RGlkU2Nyb2xsIDogMTsK
KyAgICAgICAgYm9vbCB3ZWJWaWV3SGVhZGVySGVpZ2h0IDogMTsKKyAgICAgICAgYm9vbCB3ZWJW
aWV3Rm9vdGVySGVpZ2h0IDogMTsKICAgICAgICAgYm9vbCB3ZWJWaWV3U2V0UmVzaXphYmxlIDog
MTsKICAgICAgICAgYm9vbCB3ZWJWaWV3U2V0V2luZG93RnJhbWUgOiAxOwogICAgICAgICBib29s
IHdlYlZpZXdEaWROb3RIYW5kbGVXaGVlbEV2ZW50IDogMTsKICAgICAgICAgYm9vbCB3ZWJWaWV3
SGFuZGxlQXV0b3BsYXlFdmVudFdpdGhGbGFncyA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld1Vu
YXZhaWxhYmxlUGx1Z0luQnV0dG9uQ2xpY2tlZCA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld0Rp
ZENsaWNrQXV0b0ZpbGxCdXR0b25XaXRoVXNlckluZm8gOiAxOworICAgICAgICBib29sIHdlYlZp
ZXdEcmF3SGVhZGVySW5SZWN0Rm9yUGFnZVdpdGhUaXRsZVVSTCA6IDE7CisgICAgICAgIGJvb2wg
d2ViVmlld0RyYXdGb290ZXJJblJlY3RGb3JQYWdlV2l0aFRpdGxlVVJMIDogMTsKICAgICAgICAg
Ym9vbCB3ZWJWaWV3R2V0V2luZG93RnJhbWVXaXRoQ29tcGxldGlvbkhhbmRsZXIgOiAxOwogICAg
ICAgICBib29sIHdlYlZpZXdNb3VzZURpZE1vdmVPdmVyRWxlbWVudFdpdGhGbGFnc1VzZXJJbmZv
IDogMTsKICAgICAgICAgYm9vbCB3ZWJWaWV3R2V0VG9vbGJhcnNBcmVWaXNpYmxlV2l0aENvbXBs
ZXRpb25IYW5kbGVyIDogMTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJ
RGVsZWdhdGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
VUlEZWxlZ2F0ZS5tbQkocmV2aXNpb24gMjIyMDUzKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTIwLDYgKzEyMCwxMCBA
QCB2b2lkIFVJRGVsZWdhdGU6OnNldERlbGVnYXRlKGlkIDxXS1VJRGVsCiAgICAgbV9kZWxlZ2F0
ZU1ldGhvZHMud2ViVmlld1VuYXZhaWxhYmxlUGx1Z0luQnV0dG9uQ2xpY2tlZCA9IFtkZWxlZ2F0
ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnVuYXZhaWxhYmxlUGx1Z0lu
QnV0dG9uQ2xpY2tlZFdpdGhSZWFzb246cGx1Z0luSW5mbzopXTsKICAgICBtX2RlbGVnYXRlTWV0
aG9kcy53ZWJWaWV3SGFuZGxlQXV0b3BsYXlFdmVudFdpdGhGbGFncyA9IFtkZWxlZ2F0ZSByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmhhbmRsZUF1dG9wbGF5RXZlbnQ6d2l0
aEZsYWdzOildOwogICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWRDbGlja0F1dG9GaWxs
QnV0dG9uV2l0aFVzZXJJbmZvID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3IoX3dlYlZpZXc6ZGlkQ2xpY2tBdXRvRmlsbEJ1dHRvbldpdGhVc2VySW5mbzopXTsKKyAgICBt
X2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RHJhd0hlYWRlckluUmVjdEZvclBhZ2VXaXRoVGl0bGVV
UkwgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpkcmF3
SGVhZGVySW5SZWN0OmZvclBhZ2VXaXRoVGl0bGU6VVJMOildOworICAgIG1fZGVsZWdhdGVNZXRo
b2RzLndlYlZpZXdEcmF3Rm9vdGVySW5SZWN0Rm9yUGFnZVdpdGhUaXRsZVVSTCA9IFtkZWxlZ2F0
ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmRyYXdGb290ZXJJblJlY3Q6
Zm9yUGFnZVdpdGhUaXRsZTpVUkw6KV07CisgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0hl
YWRlckhlaWdodCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJW
aWV3SGVhZGVySGVpZ2h0OildOworICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdGb290ZXJI
ZWlnaHQgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlld0Zv
b3RlckhlaWdodDopXTsKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3TW91c2VEaWRNb3Zl
T3ZlckVsZW1lbnRXaXRoRmxhZ3NVc2VySW5mbyA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKF93ZWJWaWV3Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50OndpdGhGbGFnczp1
c2VySW5mbzopXTsKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkRXhjZWVkQmFja2dy
b3VuZFJlc291cmNlTGltaXRXaGlsZUluRm9yZWdyb3VuZCA9IFtkZWxlZ2F0ZSByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmRpZEV4Y2VlZEJhY2tncm91bmRSZXNvdXJjZUxp
bWl0V2hpbGVJbkZvcmVncm91bmQ6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1Nh
dmVEYXRhVG9GaWxlU3VnZ2VzdGVkRmlsZW5hbWVNaW1lVHlwZU9yaWdpbmF0aW5nVVJMID0gW2Rl
bGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6c2F2ZURhdGFUb0Zp
bGU6c3VnZ2VzdGVkRmlsZW5hbWU6bWltZVR5cGU6b3JpZ2luYXRpbmdVUkw6KV07CkBAIC00MjMs
NiArNDI3LDU0IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bk1vZGFsKFdlYlAKICAg
ICBbKGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPilkZWxlZ2F0ZSBfd2ViVmlld1J1bk1vZGFsOm1f
dWlEZWxlZ2F0ZS5tX3dlYlZpZXddOwogfQogCitmbG9hdCBVSURlbGVnYXRlOjpVSUNsaWVudDo6
aGVhZGVySGVpZ2h0KFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmIHdlYkZyYW1lUHJveHkp
Cit7CisgICAgaWYgKCFtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0hlYWRl
ckhlaWdodCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgYXV0byBkZWxlZ2F0ZSA9IG1f
dWlEZWxlZ2F0ZS5tX2RlbGVnYXRlLmdldCgpOworICAgIGlmICghZGVsZWdhdGUpCisgICAgICAg
IHJldHVybiAwOworICAgIAorICAgIHJldHVybiBbKGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPilk
ZWxlZ2F0ZSBfd2ViVmlld0hlYWRlckhlaWdodDptX3VpRGVsZWdhdGUubV93ZWJWaWV3XTsKK30K
KworZmxvYXQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmZvb3RlckhlaWdodChXZWJQYWdlUHJveHkm
LCBXZWJGcmFtZVByb3h5JikKK3sKKyAgICBpZiAoIW1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0
aG9kcy53ZWJWaWV3Rm9vdGVySGVpZ2h0KQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBh
dXRvIGRlbGVnYXRlID0gbV91aURlbGVnYXRlLm1fZGVsZWdhdGUuZ2V0KCk7CisgICAgaWYgKCFk
ZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgcmV0dXJuIFsoaWQgPFdLVUlE
ZWxlZ2F0ZVByaXZhdGU+KWRlbGVnYXRlIF93ZWJWaWV3Rm9vdGVySGVpZ2h0Om1fdWlEZWxlZ2F0
ZS5tX3dlYlZpZXddOworfQorCit2b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpkcmF3SGVhZGVy
KFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBXZWJDb3JlOjpGbG9hdFJlY3Qm
JiByZWN0KQoreworICAgIGlmICghbV91aURlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLndlYlZp
ZXdEcmF3SGVhZGVySW5SZWN0Rm9yUGFnZVdpdGhUaXRsZVVSTCkKKyAgICAgICAgcmV0dXJuOwor
ICAgIAorICAgIGF1dG8gZGVsZWdhdGUgPSBtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZS5nZXQoKTsK
KyAgICBpZiAoIWRlbGVnYXRlKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgWyhpZCA8V0tV
SURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3dlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmll
dyBkcmF3SGVhZGVySW5SZWN0OnJlY3QgZm9yUGFnZVdpdGhUaXRsZTpmcmFtZS50aXRsZSgpIFVS
TDpmcmFtZS51cmwoKV07Cit9CisKK3ZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmRyYXdGb290
ZXIoV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSYgZnJhbWUsIFdlYkNvcmU6OkZsb2F0UmVj
dCYmIHJlY3QpCit7CisgICAgaWYgKCFtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2Vi
Vmlld0RyYXdGb290ZXJJblJlY3RGb3JQYWdlV2l0aFRpdGxlVVJMKQorICAgICAgICByZXR1cm47
CisgICAgCisgICAgYXV0byBkZWxlZ2F0ZSA9IG1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlLmdldCgp
OworICAgIGlmICghZGVsZWdhdGUpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBbKGlkIDxX
S1VJRGVsZWdhdGVQcml2YXRlPilkZWxlZ2F0ZSBfd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJW
aWV3IGRyYXdGb290ZXJJblJlY3Q6cmVjdCBmb3JQYWdlV2l0aFRpdGxlOmZyYW1lLnRpdGxlKCkg
VVJMOmZyYW1lLnVybCgpXTsKK30KKwogdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cGFnZURp
ZFNjcm9sbChXZWJQYWdlUHJveHkqKQogewogICAgIGlmICghbV91aURlbGVnYXRlLm1fZGVsZWdh
dGVNZXRob2RzLndlYlZpZXdEaWRTY3JvbGwpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XS1JlbG9hZEZyYW1lRXJyb3JSZWNvdmVyeUF0dGVtcHRlci5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XS1JlbG9hZEZyYW1lRXJyb3JSZWNv
dmVyeUF0dGVtcHRlci5tbQkocmV2aXNpb24gMjIyMDUzKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV0tSZWxvYWRGcmFtZUVycm9yUmVjb3ZlcnlBdHRlbXB0ZXIubW0JKHdvcmtp
bmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAgLSAoQk9PTClhdHRlbXB0UmVjb3ZlcnkKICAgICBp
ZiAoIXdlYkZyYW1lUHJveHkpCiAgICAgICAgIHJldHVybiBOTzsKIAotICAgIHdlYkZyYW1lUHJv
eHktPmxvYWRVUkwoX3VybFN0cmluZyk7CisgICAgd2ViRnJhbWVQcm94eS0+bG9hZFVSTChXZWJD
b3JlOjpVUkwoV2ViQ29yZTo6VVJMKCksIF91cmxTdHJpbmcpKTsKICAgICByZXR1cm4gWUVTOwog
fQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5t
bQkocmV2aXNpb24gMjIyMDUzKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwubW0JKHdvcmtpbmcgY29weSkKQEAgLTE2MjQsNyArMTYyNCw3IEBAIGJvb2wgV2Vi
Vmlld0ltcGw6OmNhbkNoYW5nZUZyYW1lTGF5b3V0KFcKIAogTlNQcmludE9wZXJhdGlvbiAqV2Vi
Vmlld0ltcGw6OnByaW50T3BlcmF0aW9uV2l0aFByaW50SW5mbyhOU1ByaW50SW5mbyAqcHJpbnRJ
bmZvLCBXZWJGcmFtZVByb3h5JiBmcmFtZSkKIHsKLSAgICBMT0coUHJpbnRpbmcsICJDcmVhdGlu
ZyBhbiBOU1ByaW50T3BlcmF0aW9uIGZvciBmcmFtZSAnJXMnIiwgZnJhbWUudXJsKCkudXRmOCgp
LmRhdGEoKSk7CisgICAgTE9HKFByaW50aW5nLCAiQ3JlYXRpbmcgYW4gTlNQcmludE9wZXJhdGlv
biBmb3IgZnJhbWUgJyVzJyIsIGZyYW1lLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwog
CiAgICAgLy8gRklYTUU6IElmIHRoZSBmcmFtZSBjYW5ub3QgYmUgcHJpbnRlZCAoZS5nLiBpZiBp
dCBjb250YWlucyBhbiBlbmNyeXB0ZWQgUERGIHRoYXQgZGlzYWxsb3dzCiAgICAgLy8gcHJpbnRp
bmcpLCB0aGlzIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gbmlsLgpJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiAyMjIwNTMpCisrKyBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNzksMTQgKzI3OSwxMyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERpZFJlCiAgICAgICAgIHJldHVybjsKIAogICAgIFdlYkRvY3VtZW50TG9hZGVyJiBk
b2N1bWVudExvYWRlciA9IHN0YXRpY19jYXN0PFdlYkRvY3VtZW50TG9hZGVyJj4oKm1fZnJhbWUt
PmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5wcm92aXNpb25hbERvY3VtZW50TG9hZGVyKCkpOwotICAg
IGNvbnN0IFN0cmluZyYgdXJsID0gZG9jdW1lbnRMb2FkZXIudXJsKCkuc3RyaW5nKCk7CiAgICAg
UmVmUHRyPEFQSTo6T2JqZWN0PiB1c2VyRGF0YTsKIAogICAgIC8vIE5vdGlmeSB0aGUgYnVuZGxl
IGNsaWVudC4KICAgICB3ZWJQYWdlLT5pbmplY3RlZEJ1bmRsZUxvYWRlckNsaWVudCgpLmRpZFJl
Y2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKCp3ZWJQYWdlLCAq
bV9mcmFtZSwgdXNlckRhdGEpOwogCiAgICAgLy8gTm90aWZ5IHRoZSBVSVByb2Nlc3MuCi0gICAg
d2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRSZWNlaXZlU2VydmVyUmVk
aXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIGRvY3Vt
ZW50TG9hZGVyLm5hdmlnYXRpb25JRCgpLCB1cmwsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkp
OworICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUmVjZWl2ZVNl
cnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgp
LCBkb2N1bWVudExvYWRlci5uYXZpZ2F0aW9uSUQoKSwgZG9jdW1lbnRMb2FkZXIudXJsKCksIFVz
ZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXMo
dXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpOwogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERpZENoYW5nZVByb3Zpc2lvbmFsVVJMKCkKQEAgLTI5Niw3ICsyOTUsNyBAQCB2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoCiAgICAgICAgIHJldHVybjsK
IAogICAgIFdlYkRvY3VtZW50TG9hZGVyJiBkb2N1bWVudExvYWRlciA9IHN0YXRpY19jYXN0PFdl
YkRvY3VtZW50TG9hZGVyJj4oKm1fZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5wcm92aXNp
b25hbERvY3VtZW50TG9hZGVyKCkpOwotICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6RGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlE
KCksIGRvY3VtZW50TG9hZGVyLm5hdmlnYXRpb25JRCgpLCBkb2N1bWVudExvYWRlci51cmwoKS5z
dHJpbmcoKSkpOworICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlk
Q2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIGRvY3VtZW50
TG9hZGVyLm5hdmlnYXRpb25JRCgpLCBkb2N1bWVudExvYWRlci51cmwoKSkpOwogfQogCiB2b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENhbmNlbENsaWVudFJlZGlyZWN0KCkK
QEAgLTMzOSw3ICszMzgsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERp
ZENoCiAgICAgd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVMb2FkZXJDbGllbnQoKS5kaWRTYW1lRG9j
dW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUoKndlYlBhZ2UsICptX2ZyYW1lLCBTYW1lRG9jdW1lbnRO
YXZpZ2F0aW9uQW5jaG9yTmF2aWdhdGlvbiwgdXNlckRhdGEpOwogCiAgICAgLy8gTm90aWZ5IHRo
ZSBVSVByb2Nlc3MuCi0gICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpE
aWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBuYXZp
Z2F0aW9uSUQsIFNhbWVEb2N1bWVudE5hdmlnYXRpb25BbmNob3JOYXZpZ2F0aW9uLCBtX2ZyYW1l
LT5jb3JlRnJhbWUoKS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCksIFVzZXJEYXRhKFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0
KCkpLmdldCgpKSkpOworICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
RGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgbmF2
aWdhdGlvbklELCBTYW1lRG9jdW1lbnROYXZpZ2F0aW9uQW5jaG9yTmF2aWdhdGlvbiwgbV9mcmFt
ZS0+Y29yZUZyYW1lKCktPmRvY3VtZW50KCktPnVybCgpLCBVc2VyRGF0YShXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQo
KSkpKTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VN
YWluRG9jdW1lbnQoKQpAQCAtMzY1LDcgKzM2NCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGlkUHUKICAgICB3ZWJQYWdlLT5pbmplY3RlZEJ1bmRsZUxvYWRlckNsaWVu
dCgpLmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSgqd2ViUGFnZSwgKm1fZnJhbWUs
IFNhbWVEb2N1bWVudE5hdmlnYXRpb25TZXNzaW9uU3RhdGVQdXNoLCB1c2VyRGF0YSk7CiAKICAg
ICAvLyBOb3RpZnkgdGhlIFVJUHJvY2Vzcy4KLSAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZShtX2ZyYW1lLT5m
cmFtZUlEKCksIG5hdmlnYXRpb25JRCwgU2FtZURvY3VtZW50TmF2aWdhdGlvblNlc3Npb25TdGF0
ZVB1c2gsIG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKSwg
VXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxl
cyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSk7CisgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpEaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUobV9mcmFtZS0+
ZnJhbWVJRCgpLCBuYXZpZ2F0aW9uSUQsIFNhbWVEb2N1bWVudE5hdmlnYXRpb25TZXNzaW9uU3Rh
dGVQdXNoLCBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+ZG9jdW1lbnQoKS0+dXJsKCksIFVzZXJEYXRh
KFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRh
dGEuZ2V0KCkpLmdldCgpKSkpOwogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaERpZFJlcGxhY2VTdGF0ZVdpdGhpblBhZ2UoKQpAQCAtMzgyLDcgKzM4MSw3IEBAIHZvaWQg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmUKICAgICB3ZWJQYWdlLT5pbmplY3Rl
ZEJ1bmRsZUxvYWRlckNsaWVudCgpLmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSgq
d2ViUGFnZSwgKm1fZnJhbWUsIFNhbWVEb2N1bWVudE5hdmlnYXRpb25TZXNzaW9uU3RhdGVSZXBs
YWNlLCB1c2VyRGF0YSk7CiAKICAgICAvLyBOb3RpZnkgdGhlIFVJUHJvY2Vzcy4KLSAgICB3ZWJQ
YWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFNhbWVEb2N1bWVudE5hdmlnYXRp
b25Gb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIG5hdmlnYXRpb25JRCwgU2FtZURvY3VtZW50
TmF2aWdhdGlvblNlc3Npb25TdGF0ZVJlcGxhY2UsIG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5kb2N1
bWVudCgpLT51cmwoKS5zdHJpbmcoKSwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
dHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSk7CisgICAg
d2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRTYW1lRG9jdW1lbnROYXZp
Z2F0aW9uRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBuYXZpZ2F0aW9uSUQsIFNhbWVEb2N1
bWVudE5hdmlnYXRpb25TZXNzaW9uU3RhdGVSZXBsYWNlLCBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+
ZG9jdW1lbnQoKS0+dXJsKCksIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5z
Zm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpOwogfQogCiB2b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFBvcFN0YXRlV2l0aGluUGFnZSgpCkBA
IC0zOTksNyArMzk4LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRQ
bwogICAgIHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlTG9hZGVyQ2xpZW50KCkuZGlkU2FtZURvY3Vt
ZW50TmF2aWdhdGlvbkZvckZyYW1lKCp3ZWJQYWdlLCAqbV9mcmFtZSwgU2FtZURvY3VtZW50TmF2
aWdhdGlvblNlc3Npb25TdGF0ZVBvcCwgdXNlckRhdGEpOwogCiAgICAgLy8gTm90aWZ5IHRoZSBV
SVByb2Nlc3MuCi0gICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRT
YW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBuYXZpZ2F0
aW9uSUQsIFNhbWVEb2N1bWVudE5hdmlnYXRpb25TZXNzaW9uU3RhdGVQb3AsIG1fZnJhbWUtPmNv
cmVGcmFtZSgpLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKSwgVXNlckRhdGEoV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSku
Z2V0KCkpKSk7CisgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRT
YW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBuYXZpZ2F0
aW9uSUQsIFNhbWVEb2N1bWVudE5hdmlnYXRpb25TZXNzaW9uU3RhdGVQb3AsIG1fZnJhbWUtPmNv
cmVGcmFtZSgpLT5kb2N1bWVudCgpLT51cmwoKSwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSk7
CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbENsb3NlKCkKQEAg
LTQyMywxMyArNDIyLDEzIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlk
U3QKICAgICB3ZWJQYWdlLT5zYW5kYm94RXh0ZW5zaW9uVHJhY2tlcigpLmRpZFN0YXJ0UHJvdmlz
aW9uYWxMb2FkKG1fZnJhbWUpOwogCiAgICAgV2ViRG9jdW1lbnRMb2FkZXImIHByb3Zpc2lvbmFs
TG9hZGVyID0gc3RhdGljX2Nhc3Q8V2ViRG9jdW1lbnRMb2FkZXImPigqbV9mcmFtZS0+Y29yZUZy
YW1lKCktPmxvYWRlcigpLnByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIoKSk7Ci0gICAgY29uc3Qg
U3RyaW5nJiB1cmwgPSBwcm92aXNpb25hbExvYWRlci51cmwoKS5zdHJpbmcoKTsKKyAgICBhdXRv
JiB1cmwgPSBwcm92aXNpb25hbExvYWRlci51cmwoKTsKICAgICBSZWZQdHI8QVBJOjpPYmplY3Q+
IHVzZXJEYXRhOwogCiAgICAgLy8gTm90aWZ5IHRoZSBidW5kbGUgY2xpZW50LgogICAgIHdlYlBh
Z2UtPmluamVjdGVkQnVuZGxlTG9hZGVyQ2xpZW50KCkuZGlkU3RhcnRQcm92aXNpb25hbExvYWRG
b3JGcmFtZSgqd2ViUGFnZSwgKm1fZnJhbWUsIHVzZXJEYXRhKTsKIAotICAgIFN0cmluZyB1bnJl
YWNoYWJsZVVSTCA9IHByb3Zpc2lvbmFsTG9hZGVyLnVucmVhY2hhYmxlVVJMKCkuc3RyaW5nKCk7
CisgICAgYXV0byYgdW5yZWFjaGFibGVVUkwgPSBwcm92aXNpb25hbExvYWRlci51bnJlYWNoYWJs
ZVVSTCgpOwogCiAgICAgLy8gTm90aWZ5IHRoZSBVSVByb2Nlc3MuCiAgICAgd2ViUGFnZS0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1l
KG1fZnJhbWUtPmZyYW1lSUQoKSwgcHJvdmlzaW9uYWxMb2FkZXIubmF2aWdhdGlvbklEKCksIHVy
bCwgdW5yZWFjaGFibGVVUkwsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5z
Zm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSkpOwpJbmRleDogU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDIy
MjA1MykKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTc2LDEzICsxMTc2LDEzIEBAIHZvaWQgV2ViUGFnZTo6c2VuZENs
b3NlKCkKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNsb3NlUGFnZShmYWxzZSkp
OwogfQogCi12b2lkIFdlYlBhZ2U6OmxvYWRVUkxJbkZyYW1lKGNvbnN0IFN0cmluZyYgdXJsLCB1
aW50NjRfdCBmcmFtZUlEKQordm9pZCBXZWJQYWdlOjpsb2FkVVJMSW5GcmFtZShXZWJDb3JlOjpV
UkwmJiB1cmwsIHVpbnQ2NF90IGZyYW1lSUQpCiB7CiAgICAgV2ViRnJhbWUqIGZyYW1lID0gV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgaWYgKCFmcmFtZSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5sb2Fk
KEZyYW1lTG9hZFJlcXVlc3QoKmZyYW1lLT5jb3JlRnJhbWUoKSwgUmVzb3VyY2VSZXF1ZXN0KFVS
TChVUkwoKSwgdXJsKSksIFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFs
bG93KSk7CisgICAgZnJhbWUtPmNvcmVGcmFtZSgpLT5sb2FkZXIoKS5sb2FkKEZyYW1lTG9hZFJl
cXVlc3QoKmZyYW1lLT5jb3JlRnJhbWUoKSwgUmVzb3VyY2VSZXF1ZXN0KHVybCksIFNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3k6OlNob3VsZE5vdEFsbG93KSk7CiB9CiAKICNpZiAhUExBVEZP
Uk0oQ09DT0EpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCShyZXZpc2lvbiAyMjIwNTMpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOTUsNyArMTA5NSw3IEBAIHByaXZhdGU6
CiAgICAgc3RhdGljIGJvb2wgc2Nyb2xsKFdlYkNvcmU6OlBhZ2UqLCBXZWJDb3JlOjpTY3JvbGxE
aXJlY3Rpb24sIFdlYkNvcmU6OlNjcm9sbEdyYW51bGFyaXR5KTsKICAgICBzdGF0aWMgYm9vbCBs
b2dpY2FsU2Nyb2xsKFdlYkNvcmU6OlBhZ2UqLCBXZWJDb3JlOjpTY3JvbGxMb2dpY2FsRGlyZWN0
aW9uLCBXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eSk7CiAKLSAgICB2b2lkIGxvYWRVUkxJbkZy
YW1lKGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90IGZyYW1lSUQpOworICAgIHZvaWQgbG9hZFVSTElu
RnJhbWUoV2ViQ29yZTo6VVJMJiYsIHVpbnQ2NF90IGZyYW1lSUQpOwogCiAgICAgZW51bSBjbGFz
cyBXYXNSZXN0b3JlZEJ5QVBJUmVxdWVzdCB7IE5vLCBZZXMgfTsKICAgICB2b2lkIHJlc3RvcmVT
ZXNzaW9uSW50ZXJuYWwoY29uc3QgVmVjdG9yPEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZT4mLCBX
YXNSZXN0b3JlZEJ5QVBJUmVxdWVzdCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIyMjA1MykK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4J
KHdvcmtpbmcgY29weSkKQEAgLTEzMiw3ICsxMzIsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExl
Z2FjeVJlY2VpdmVyIHsKICAgICBHb1RvQmFja0ZvcndhcmRJdGVtKHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgdWludDY0X3QgYmFja0ZvcndhcmRJdGVtSUQpCiAgICAgVHJ5UmVzdG9yZVNjcm9sbFBv
c2l0aW9uKCkKIAotICAgIExvYWRVUkxJbkZyYW1lKFN0cmluZyB1cmwsIHVpbnQ2NF90IGZyYW1l
SUQpCisgICAgTG9hZFVSTEluRnJhbWUoV2ViQ29yZTo6VVJMIHVybCwgdWludDY0X3QgZnJhbWVJ
RCkKICAgICBMb2FkUmVxdWVzdChzdHJ1Y3QgV2ViS2l0OjpMb2FkUGFyYW1ldGVycyBsb2FkUGFy
YW1ldGVycykKICAgICBMb2FkRGF0YShzdHJ1Y3QgV2ViS2l0OjpMb2FkUGFyYW1ldGVycyBsb2Fk
UGFyYW1ldGVycykKICAgICBMb2FkU3RyaW5nKHN0cnVjdCBXZWJLaXQ6OkxvYWRQYXJhbWV0ZXJz
IGxvYWRQYXJhbWV0ZXJzKQpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjIyMDUzKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTctMDktMTQgIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgV0tVSURlbGVnYXRlUHJp
dmF0ZSBlcXVpdmFsZW50IG9mIFdLUGFnZVVJQ2xpZW50J3MgZHJhd0hlYWRlciwgZHJhd0Zvb3Rl
ciwgaGVhZGVySGVpZ2h0LCBhbmQgZm9vdGVySGVpZ2h0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzY4ODkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzI5MjcwMDM1PgorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHkgRXN0ZXMuCisKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VJRGVsZWdhdGUubW06CisgICAgICAg
ICgtW1ByaW50RGVsZWdhdGUgX3dlYlZpZXc6cHJpbnRGcmFtZTpdKToKKyAgICAgICAgKC1bUHJp
bnREZWxlZ2F0ZSBfd2ViVmlld0hlYWRlckhlaWdodDpdKToKKyAgICAgICAgKC1bUHJpbnREZWxl
Z2F0ZSBfd2ViVmlld0Zvb3RlckhlaWdodDpdKToKKyAgICAgICAgKC1bUHJpbnREZWxlZ2F0ZSBf
d2ViVmlldzpkcmF3SGVhZGVySW5SZWN0OmZvclBhZ2VXaXRoVGl0bGU6VVJMOl0pOgorICAgICAg
ICAoLVtQcmludERlbGVnYXRlIF93ZWJWaWV3OmRyYXdGb290ZXJJblJlY3Q6Zm9yUGFnZVdpdGhU
aXRsZTpVUkw6XSk6CisgICAgICAgIChjYWxsYmFja3NFcXVhbCk6CisgICAgICAgIChURVNUKToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaDoKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW06CisgICAgICAgICgtW1Rlc3RX
S1dlYlZpZXcgaG9zdFdpbmRvd10pOgorCiAyMDE3LTA5LTE0ICBSeWFuIEhhZGRhZCAgPHJ5YW5o
YWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMjIw
MzMuCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VJRGVsZWdh
dGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9VSURlbGVnYXRlLm1tCShyZXZpc2lvbiAyMjIwNTMpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1VJRGVsZWdhdGUubW0JKHdvcmtpbmcgY29weSkKQEAgLTQxLDYg
KzQxLDcgQEAKICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CiAjaW1wb3J0IDxX
ZWJLaXQvX1dLSGl0VGVzdFJlc3VsdC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2lt
cG9ydCA8d3RmL1ZlY3Rvci5oPgogCiAjaWYgUExBVEZPUk0oTUFDKQogI2ltcG9ydCA8Q2FyYm9u
L0NhcmJvbi5oPgpAQCAtMjgyLDYgKzI4Myw3NSBAQCBURVNUKFdlYktpdCwgV2luZG93RnJhbWUp
CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKIH0KIAorc3RhdGljIGJvb2wg
aGVhZGVySGVpZ2h0Q2FsbGVkOworc3RhdGljIGJvb2wgZm9vdGVySGVpZ2h0Q2FsbGVkOworc3Rh
dGljIGJvb2wgZHJhd0hlYWRlckNhbGxlZDsKK3N0YXRpYyBib29sIGRyYXdGb290ZXJDYWxsZWQ7
CisKK0BpbnRlcmZhY2UgUHJpbnREZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS1VJRGVsZWdhdGVQcml2
YXRlPgorQGVuZAorCitAaW1wbGVtZW50YXRpb24gUHJpbnREZWxlZ2F0ZQorCistICh2b2lkKV93
ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHByaW50RnJhbWU6KF9XS0ZyYW1lSGFuZGxlICop
ZnJhbWUKK3sKKyAgICBkb25lID0gdHJ1ZTsKK30KKworLSAoQ0dGbG9hdClfd2ViVmlld0hlYWRl
ckhlaWdodDooV0tXZWJWaWV3ICopd2ViVmlldworeworICAgIGhlYWRlckhlaWdodENhbGxlZCA9
IHRydWU7CisgICAgcmV0dXJuIDMuMTQxNTk7Cit9CisKKy0gKENHRmxvYXQpX3dlYlZpZXdGb290
ZXJIZWlnaHQ6KFdLV2ViVmlldyAqKXdlYlZpZXcKK3sKKyAgICBmb290ZXJIZWlnaHRDYWxsZWQg
PSB0cnVlOworICAgIHJldHVybiAyLjcxODI4OworfQorCistICh2b2lkKV93ZWJWaWV3OihXS1dl
YlZpZXcgKil3ZWJWaWV3IGRyYXdIZWFkZXJJblJlY3Q6KENHUmVjdClyZWN0IGZvclBhZ2VXaXRo
VGl0bGU6KE5TU3RyaW5nICopdGl0bGUgVVJMOihOU1VSTCAqKXVybAoreworICAgIEVYUEVDVF9F
UShyZWN0Lm9yaWdpbi54LCA3Mik7CisgICAgRVhQRUNUX1RSVUUoZmFicyhyZWN0Lm9yaWdpbi55
IC0gNjk4Ljg1ODM5OCkgPCAuMDAwMDEpOworICAgIEVYUEVDVF9UUlVFKGZhYnMocmVjdC5zaXpl
LmhlaWdodCAtIDMuMTQxNTkwKSA8IC4wMDAwMSk7CisgICAgRVhQRUNUX0VRKHJlY3Quc2l6ZS53
aWR0aCwgNDY4LjAwMDAwMCk7CisgICAgRVhQRUNUX1NUUkVRKHRpdGxlLlVURjhTdHJpbmcsICJ0
ZXN0X3RpdGxlIik7CisgICAgRVhQRUNUX1NUUkVRKHVybC5hYnNvbHV0ZVN0cmluZy5VVEY4U3Ry
aW5nLCAiaHR0cDovL2V4YW1wbGUuY29tLyIpOworICAgIGRyYXdIZWFkZXJDYWxsZWQgPSB0cnVl
OworfQorCistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRyYXdGb290ZXJJ
blJlY3Q6KENHUmVjdClyZWN0IGZvclBhZ2VXaXRoVGl0bGU6KE5TU3RyaW5nICopdGl0bGUgVVJM
OihOU1VSTCAqKXVybAoreworICAgIEVYUEVDVF9FUShyZWN0Lm9yaWdpbi54LCA3Mik7CisgICAg
RVhQRUNUX0VRKHJlY3Qub3JpZ2luLnksIDkwKTsKKyAgICBFWFBFQ1RfVFJVRShmYWJzKHJlY3Qu
c2l6ZS5oZWlnaHQgLSAyLjcxODI4MCkgPCAuMDAwMDEpOworICAgIEVYUEVDVF9FUShyZWN0LnNp
emUud2lkdGgsIDQ2OC4wMDAwMDApOworICAgIEVYUEVDVF9TVFJFUSh1cmwuYWJzb2x1dGVTdHJp
bmcuVVRGOFN0cmluZywgImh0dHA6Ly9leGFtcGxlLmNvbS8iKTsKKyAgICBkcmF3Rm9vdGVyQ2Fs
bGVkID0gdHJ1ZTsKK30KKworQGVuZAorCitURVNUKFdlYktpdCwgUHJpbnRGcmFtZSkKK3sKKyAg
ICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBh
ZG9wdE5TKFtbUHJpbnREZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3IHNldFVJ
RGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOkAi
PGhlYWQ+PHRpdGxlPnRlc3RfdGl0bGU8L3RpdGxlPjwvaGVhZD48Ym9keSBvbmxvYWQ9J3ByaW50
KCknPmhlbGxvIHdvcmxkITwvYm9keT4iIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJo
dHRwOi8vZXhhbXBsZS5jb20vIl1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9u
ZSk7CisKKyAgICBOU1ByaW50T3BlcmF0aW9uICpvcGVyYXRpb24gPSBbd2ViVmlldyBfcHJpbnRP
cGVyYXRpb25XaXRoUHJpbnRJbmZvOltOU1ByaW50SW5mbyBzaGFyZWRQcmludEluZm9dXTsKKyAg
ICBFWFBFQ1RfVFJVRShvcGVyYXRpb24uY2FuU3Bhd25TZXBhcmF0ZVRocmVhZCk7CisgICAgRVhQ
RUNUX1NUUkVRKG9wZXJhdGlvbi5qb2JUaXRsZS5VVEY4U3RyaW5nLCAidGVzdF90aXRsZSIpOwor
CisgICAgW29wZXJhdGlvbiBydW5PcGVyYXRpb25Nb2RhbEZvcldpbmRvdzpbd2ViVmlldyBob3N0
V2luZG93XSBkZWxlZ2F0ZTpuaWwgZGlkUnVuU2VsZWN0b3I6bmlsIGNvbnRleHRJbmZvOm5pbF07
CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZoZWFkZXJIZWlnaHRDYWxsZWQpOworICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZm9vdGVySGVpZ2h0Q2FsbGVkKTsKKyAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRyYXdIZWFkZXJDYWxsZWQpOworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmZHJhd0Zvb3RlckNhbGxlZCk7Cit9CisKIEBpbnRlcmZhY2UgTm90aWZp
Y2F0aW9uRGVsZWdhdGUgOiBOU09iamVjdCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4gewogICAgIGJv
b2wgX2FsbG93Tm90aWZpY2F0aW9uczsKIH0KSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29j
b2EvVGVzdFdLV2ViVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29j
b2EvVGVzdFdLV2ViVmlldy5oCShyZXZpc2lvbiAyMjIwNTMpCisrKyBUb29scy9UZXN0V2ViS2l0
QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtNjYsNiArNjYsNyBA
QAogLSAodm9pZCltb3VzZU1vdmVUb1BvaW50OihOU1BvaW50KXBvaW50IHdpdGhGbGFnczooTlNF
dmVudE1vZGlmaWVyRmxhZ3MpZmxhZ3M7CiAtICh2b2lkKXNlbmRDbGlja3NBdFBvaW50OihOU1Bv
aW50KXBvaW50IG51bWJlck9mQ2xpY2tzOihOU1VJbnRlZ2VyKW51bWJlck9mQ2xpY2tzOwogLSAo
dm9pZCl0eXBlQ2hhcmFjdGVyOihjaGFyKWNoYXJhY3RlcjsKKy0gKE5TV2luZG93ICopaG9zdFdp
bmRvdzsKIEBlbmQKICNlbmRpZgogCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rl
c3RXS1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9U
ZXN0V0tXZWJWaWV3Lm1tCShyZXZpc2lvbiAyMjIwNTMpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJ
L2NvY29hL1Rlc3RXS1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTM0OSw2ICszNDksMTEg
QEAgLSAodm9pZClzZW5kQ2xpY2tzQXRQb2ludDooTlNQb2ludClwb2ludAogICAgIH0KIH0KIAor
LSAoTlNXaW5kb3cgKilob3N0V2luZG93Cit7CisgICAgcmV0dXJuIF9ob3N0V2luZG93LmdldCgp
OworfQorCiAtICh2b2lkKXR5cGVDaGFyYWN0ZXI6KGNoYXIpY2hhcmFjdGVyIHsKICAgICBOU1N0
cmluZyAqY2hhcmFjdGVyQXNTdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVj
IiAsIGNoYXJhY3Rlcl07CiAgICAgTlNFdmVudFR5cGUga2V5RG93bkV2ZW50VHlwZSA9IE5TRXZl
bnRUeXBlS2V5RG93bjsK
</data>

          </attachment>
      

    </bug>

</bugzilla>