<?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>170428</bug_id>
          
          <creation_ts>2017-04-03 15:36:28 -0700</creation_ts>
          <short_desc>Data interaction should register type identifiers in order of priority</short_desc>
          <delta_ts>2017-04-15 02:02:28 -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>WebCore Misc.</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="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1293877</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-04-03 15:36:28 -0700</bug_when>
    <thetext>&lt;rdar://problem/30633296&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293895</commentid>
    <comment_count>1</comment_count>
      <attachid>306136</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-04-03 16:15:10 -0700</bug_when>
    <thetext>Created attachment 306136
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293898</commentid>
    <comment_count>2</comment_count>
      <attachid>306138</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-04-03 16:23:50 -0700</bug_when>
    <thetext>Created attachment 306138
Tweaked ChangeLog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293922</commentid>
    <comment_count>3</comment_count>
      <attachid>306146</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-04-03 17:28:45 -0700</bug_when>
    <thetext>Created attachment 306146
Fix Mac build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293951</commentid>
    <comment_count>4</comment_count>
      <attachid>306151</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-04-03 18:28:40 -0700</bug_when>
    <thetext>Created attachment 306151
Fix 32-bit Mac build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293964</commentid>
    <comment_count>5</comment_count>
      <attachid>306155</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-04-03 19:22:06 -0700</bug_when>
    <thetext>Created attachment 306155
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293973</commentid>
    <comment_count>6</comment_count>
      <attachid>306162</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2017-04-03 20:10:35 -0700</bug_when>
    <thetext>Created attachment 306162
Final patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293989</commentid>
    <comment_count>7</comment_count>
      <attachid>306162</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-04-03 21:31:51 -0700</bug_when>
    <thetext>Comment on attachment 306162
Final patch for landing

Clearing flags on attachment: 306162

Committed r214865: &lt;http://trac.webkit.org/changeset/214865&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>306136</attachid>
            <date>2017-04-03 16:15:10 -0700</date>
            <delta_ts>2017-04-03 16:23:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170428-20170403161509.patch</filename>
            <type>text/plain</type>
            <size>40815</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0Njk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzMxODUyMTA1ZGFmZDg0
ZWYwNDE4ZmExZDIzNmEzM2JhOTRlMTI5OS4uMDRmNjA3NjY2YWMzNDMzMGEwYjRlNTQ1ZDFkNzk4
MTM2ODhjZjQ1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDE3LTA0LTAzICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIERhdGEgaW50ZXJh
Y3Rpb24gc2hvdWxkIHJlZ2lzdGVyIHR5cGUgaWRlbnRpZmllcnMgaW4gb3JkZXIgb2YgcHJpb3Jp
dHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDQy
OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzA2MzMyOTY+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3VycmVudGx5LCBkdWUgdG8gdGhlIHNoYXJl
ZCBsb2dpYyBmb3Igd3JpdGluZyB0byBhIFVJUGFzdGVib2FyZCAoaW4gdGhlIGNhc2Ugb2YgY29w
eS9wYXN0ZSkgYW5kIHRoZSBzaGFyZWQKKyAgICAgICAgVUlJdGVtUHJvdmlkZXItYmFzZWQgcGFz
dGVib2FyZCB3cmFwcGVyIChpbiB0aGUgY2FzZSBvZiBkYXRhIGludGVyYWN0aW9uKSwgd2UgZG9u
J3QgZW5mb3JjZSBhbnkgcGFydGljdWxhcgorICAgICAgICBvcmRlcmluZyBpbiB3aGljaCB0eXBl
IGlkZW50aWZpZXJzIGFyZSByZWdpc3RlcmVkIGluIHRoZSBnZW5lcmF0ZWQgaXRlbSBwcm92aWRl
ci4gVGhpcyBpcyBiZWNhdXNlCisgICAgICAgIC1bVUlQYXN0ZWJvYXJkIHNldEl0ZW1zOl0gb25s
eSB0YWtlcyBhbiB1bm9yZGVyZWQgbWFwcGluZyBvZiB0eXBlIGlkZW50aWZpZXJzIHRvIG9iamVj
dHMuCisKKyAgICAgICAgVG8gZml4IHRoaXMsIHdlIGludHJvZHVjZSBhIHNlcGFyYXRlIHdheSB0
byBzZXQgcGFzdGVib2FyZCBkYXRhIHRoYXQgZmlyc3Qgd3JpdGVzIGEgbGlzdCBvZiBvYmplY3QK
KyAgICAgICAgcmVwcmVzZW50YXRpb25zIGluIG9yZGVyIG9mIHByaW9yaXR5ICh3aGljaCBpcyBk
ZXBlbmRlbnQgb24gdGhlIGNvbnRlbnQgYmVpbmcgZHJhZ2dlZCkgYW5kIHRoZW4gcmVnaXN0ZXIK
KyAgICAgICAgaW5kaXZpZHVhbCB0eXBlLWRhdGEgbWFwcGluZ3MgYXQgdGhlIGVuZC4KKworICAg
ICAgICBBdWdtZW50ZWQgZXhpc3RpbmcgQVBJIHRlc3RzIGluIERhdGFJbnRlcmFjdGlvblRlc3Rz
IHRvIGNoZWNrIGZvciB0aGUgZXhpc3RlbmNlIGFuZCBwcmlvcml0eSBvZiB0eXBlIGlkZW50aWZp
ZXJzCisgICAgICAgIGluIHRoZSBVSUl0ZW1Qcm92aWRlcnMgY3JlYXRlZCB1cG9uIHN0YXJ0aW5n
IGRhdGEgaW50ZXJhY3Rpb24uIEFsc28gYWRkcyBhIG5ldyB1bml0IHRlc3Q6CisgICAgICAgIERh
dGFJbnRlcmFjdGlvblRlc3RzLlRleHRBcmVhVG9JbnB1dC4KKworICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0VkaXRv
ckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6YXJjaGl2ZWREYXRhRm9yQXR0cmlidXRlZFN0
cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OndyaXRlU2VsZWN0aW9uVG9QYXN0ZWJv
YXJkKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6d3JpdGVTZWxlY3Rpb24pOgorICAgICAg
ICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJk
V3JpdGVyRGF0YS5oOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2lvcy9BYnN0cmFjdFBhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9pb3MvQWJzdHJhY3RQYXN0ZWJvYXJkLm1tOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvQWJzdHJhY3RQYXN0ZWJvYXJkLmguCisKKyAgICAgICAgSW50cm9k
dWNlIFdlYlBhc3RlYm9hcmRJdGVtRGF0YSwgYSB3cmFwcGVyIGFyb3VuZCBhIGxpc3Qgb2Ygb2Jq
ZWN0cyByZXByZXNlbnRhdGluZyB0aGUgcGFzdGVib2FyZCBkYXRhIGluIG9yZGVyCisgICAgICAg
IG9mIHByaW9yaXR5LCBhbmQgYSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgYWRkaXRpb25hbCBOU0Rh
dGEgYmxvYnMgdGhhdCBjb250YWluIGRhdGEgdXNlZnVsIGZvciBwcml2YXRlIGNsaWVudHMuCisK
KyAgICAgICAgKCtbV2ViUGFzdGVib2FyZEl0ZW1EYXRhIGl0ZW1XaXRoUmVwcmVzZW50aW5nT2Jq
ZWN0czphZGRpdGlvbmFsRGF0YTpdKToKKyAgICAgICAgKC1bV2ViUGFzdGVib2FyZEl0ZW1EYXRh
IGluaXRXaXRoUmVwcmVzZW50aW5nT2JqZWN0czphZGRpdGlvbmFsRGF0YTpdKToKKyAgICAgICAg
KC1bV2ViUGFzdGVib2FyZEl0ZW1EYXRhIHJlcHJlc2VudGluZ09iamVjdHNdKToKKyAgICAgICAg
KC1bV2ViUGFzdGVib2FyZEl0ZW1EYXRhIGFkZGl0aW9uYWxEYXRhXSk6CisgICAgICAgICogcGxh
dGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnJp
Y2hUZXh0UmVwcmVzZW50YXRpb25zRm9yUGFzdGVib2FyZFdlYkNvbnRlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZU9iamVjdFJlcHJlc2VudGF0aW9ucyk6
CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKToKKworICAgICAg
ICBUd2Vha2VkIHRvIGNoZWNrIHdoZXRoZXIgdGhlIHBhc3RlYm9hcmQgcmVzcG9uZHMgdG8gLXNl
dEl0ZW1zRnJvbU9iamVjdFJlcHJlc2VudGF0aW9uczouIElmIHNvLCB1c2VzIHRoZQorICAgICAg
ICBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlT2JqZWN0UmVwcmVzZW50YXRpb25zIGNvZGVwYXRo
IHRvIHdyaXRlIGRhdGEgdG8gdGhlIHBhc3RlYm9hcmQsIHJlc3BlY3RpbmcgdHlwZQorICAgICAg
ICBwcmlvcml0eS4KKworICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0
ZWJvYXJkLm1tOgorICAgICAgICAoLVtXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIHBhc3RlYm9h
cmRUeXBlc10pOgorICAgICAgICAoLVtXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIHNldEl0ZW1Q
cm92aWRlcnM6XSk6CisgICAgICAgICgtW1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQgc2V0SXRl
bXNGcm9tT2JqZWN0UmVwcmVzZW50YXRpb25zOl0pOgorCisgICAgICAgIFJlcGxhY2VzIC1zZXRJ
dGVtczogd2l0aCAtc2V0SXRlbXNGcm9tT2JqZWN0UmVwcmVzZW50YXRpb25zOiwgd2hpY2ggcmVz
cGVjdHMgdGhlIHByaW9yaXR5IG9mIGVhY2ggb2JqZWN0CisgICAgICAgIHJlcHJlc2VudGF0aW9u
IG9mIHRoZSBkYXRhIGluIHRoZSBwYXN0ZWJvYXJkLgorCisgICAgICAgICgtW1dlYkl0ZW1Qcm92
aWRlclBhc3RlYm9hcmQgc2V0SXRlbXM6XSk6IERlbGV0ZWQuCisKIDIwMTctMDMtMzEgIEVyaWMg
Q2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgSW5jb21pbmcgdmlk
ZW8gc291cmNlIGRvZXNuJ3QgcHJvcG9nYXRlIGZyYW1lIHJvdGF0aW9uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXgg
M2ZlYmRkZWRiNmMyMzdkZTQzMGFiYWQzZDliNzg2ZWQxNTYxMGQ4YS4uMDZmZTlmYWMyNGE4ZDdj
YTA3YjU0NWEzMDBlYTI0MWRkNTliNmM5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisy
MDE3LTA0LTAzICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAg
ICAgIERhdGEgaW50ZXJhY3Rpb24gc2hvdWxkIHJlZ2lzdGVyIHR5cGUgaWRlbnRpZmllcnMgaW4g
b3JkZXIgb2YgcHJpb3JpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3MDQyOAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzA2MzMyOTY+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2VyaWFsaXplIFBh
c3RlYm9hcmRXZWJDb250ZW50LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQgd2hlbiBzZW5k
aW5nIG92ZXIgSVBDLiBSZWZlciB0byBXZWJDb3JlIENoYW5nZUxvZworICAgICAgICBmb3IgbW9y
ZSBkZXRhaWxzLgorCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6
CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UGFzdGVib2FyZFdlYkNvbnRlbnQ+OjplbmNv
ZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRXZWJDb250ZW50Pjo6
ZGVjb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKwog
MjAxNy0wMy0zMSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAg
ICAgICBBZGRyZXNzIHBvc3QtcmV2aWV3IGZlZWRiYWNrIGFmdGVyIHIyMTQ2OTIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlMWZj
MTJmOTlhZDA0ZmNlYTEwNmFhZGNkNzdiNmJmNzIxZmU0YmExLi5iZjA5ZjA4NjEzNDNhNWEzMzUw
ZTk5YzNlYTg5NjMyZjNiMzZkOGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02ODI5LDYgKzY4MjksNyBAQAogCQlGNDgyMjMx
MzFFMzg2RTI0MDA2NkZDNzkgLyogQWJzdHJhY3RQYXN0ZWJvYXJkLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDgyMjMxMjFFMzg2RTI0MDA2NkZDNzkg
LyogQWJzdHJhY3RQYXN0ZWJvYXJkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRjRCRkI5ODUxRTFEREY5QjAwODYyQzI0IC8qIER1bXBFZGl0aW5n
SGlzdG9yeS5qcyBpbiBDb3B5IFNjcmlwdHMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjQ4Mzg5ODMxRTFEREYyQjAwNzZCN0VBIC8qIER1bXBFZGl0aW5nSGlzdG9yeS5qcyAq
LzsgfTsKIAkJRjRCRkI5ODYxRTFEREY5QjAwODYyQzI0IC8qIEVkaXRpbmdIaXN0b3J5VXRpbC5q
cyBpbiBDb3B5IFNjcmlwdHMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ4
Mzg5ODQxRTFEREYyQjAwNzZCN0VBIC8qIEVkaXRpbmdIaXN0b3J5VXRpbC5qcyAqLzsgfTsKKwkJ
RjREODMxNjIxRTkwOEMwNzAwOTQxMTc0IC8qIEFic3RyYWN0UGFzdGVib2FyZC5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0RDgzMTYxMUU5MDhDMDcw
MDk0MTE3NCAvKiBBYnN0cmFjdFBhc3RlYm9hcmQubW0gKi87IH07CiAJCUY1MDY2NEY3MTU3RjUy
REMwMEFDMjI2RiAvKiBGb3JtQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTA2NjRGNTE1N0Y1MkRDMDBBQzIyNkYgLyogRm9ybUNv
bnRyb2xsZXIuY3BwICovOyB9OwogCQlGNTA2NjRGODE1N0Y1MkRDMDBBQzIyNkYgLyogRm9ybUNv
bnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEY1MDY2NEY2MTU3RjUyREMwMEFDMjI2RiAvKiBGb3JtQ29udHJvbGxlci5oICovOyB9OwogCQlG
NTEzQTNFQTE1RkY0ODQxMDAxNTI2REIgLyogVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1MTNBM0U5MTVGRjQ4
NDEwMDE1MjZEQiAvKiBWYWxpZGF0aW9uTWVzc2FnZUNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNTMzMCw2ICsxNTMzMSw3IEBACiAJ
CUY0ODIyMzEyMUUzODZFMjQwMDY2RkM3OSAvKiBBYnN0cmFjdFBhc3RlYm9hcmQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWJzdHJhY3RQYXN0ZWJvYXJkLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0ODM4OTgzMUUxRERGMkIwMDc2QjdFQSAvKiBEdW1wRWRp
dGluZ0hpc3RvcnkuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IG5hbWUgPSBE
dW1wRWRpdGluZ0hpc3RvcnkuanM7IHBhdGggPSBTY3JpcHRzL0R1bXBFZGl0aW5nSGlzdG9yeS5q
czsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ4Mzg5ODQxRTFEREYyQjAwNzZCN0VB
IC8qIEVkaXRpbmdIaXN0b3J5VXRpbC5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlw
dDsgbmFtZSA9IEVkaXRpbmdIaXN0b3J5VXRpbC5qczsgcGF0aCA9IFNjcmlwdHMvRWRpdGluZ0hp
c3RvcnlVdGlsLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNEQ4MzE2MTFFOTA4
QzA3MDA5NDExNzQgLyogQWJzdHJhY3RQYXN0ZWJvYXJkLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gQWJzdHJhY3RQYXN0ZWJvYXJkLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGNTA2NjRGNTE1N0Y1MkRDMDBBQzIyNkYgLyogRm9ybUNvbnRyb2xs
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9ybUNvbnRyb2xs
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNTA2NjRGNjE1N0Y1MkRDMDBB
QzIyNkYgLyogRm9ybUNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRm9ybUNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjUxM0Ez
RTkxNUZGNDg0MTAwMTUyNkRCIC8qIFZhbGlkYXRpb25NZXNzYWdlQ2xpZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZhbGlkYXRpb25NZXNzYWdlQ2xpZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDg2MSw2ICsyMDg2Myw3IEBACiAJCQljaGlsZHJl
biA9ICgKIAkJCQlBMTQ4MzI4QjE4N0Y1MDY4MDBEQTYzQTYgLyogd2FrICovLAogCQkJCUY0ODIy
MzEyMUUzODZFMjQwMDY2RkM3OSAvKiBBYnN0cmFjdFBhc3RlYm9hcmQuaCAqLywKKwkJCQlGNEQ4
MzE2MTFFOTA4QzA3MDA5NDExNzQgLyogQWJzdHJhY3RQYXN0ZWJvYXJkLm1tICovLAogCQkJCTI2
NTU0MTRCMTQ4OUFBMkIwMDBERkM1RCAvKiBDdXJzb3JJT1MuY3BwICovLAogCQkJCUExRUQ3NzhB
MUJFMzI5M0YwMERDMTc5MSAvKiBEZXZpY2UuY3BwICovLAogCQkJCUExRUQ3NzhCMUJFMzI5NDAw
MERDMTc5MSAvKiBEZXZpY2UuaCAqLywKQEAgLTMxNjI1LDYgKzMxNjI4LDcgQEAKIAkJCQlBNjE0
OEE3ODEyRTQxRTNCMDA0NEE3ODQgLyogSlNIVE1MS2V5Z2VuRWxlbWVudC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxQUUyQUIyMTBBMUNFNjNCMDBCNDJCMjUgLyogSlNIVE1MTGFiZWxFbGVtZW50
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBRTJBQjIzMEExQ0U2M0IwMEI0MkIyNSAvKiBKU0hU
TUxMZWdlbmRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUY0RDgzMTYyMUU5MDhDMDcw
MDk0MTE3NCAvKiBBYnN0cmFjdFBhc3RlYm9hcmQubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQUUy
QUIyNTBBMUNFNjNCMDBCNDJCMjUgLyogSlNIVE1MTElFbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUE4MEU3QjEwMEExOUQ2MDYwMDdGQjhDNSAvKiBKU0hUTUxMaW5rRWxlbWVudC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxQUUyQUIyNzBBMUNFNjNCMDBCNDJCMjUgLyogSlNIVE1MTWFw
RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29h
L0VkaXRvckNvY29hLm1tCmluZGV4IDQwMjg2ZjQxZDJlNzA0YWE4MzFhODQ1OGI1MDMzNTE1MzM2
ODE0YTkuLjA1Yzg5MDg0NDZhMjY4OGRiZTQ4MDY4ZmU3YTI0NzAzNWRhOTkwZWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRpdG9yQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQpAQCAtMTUyLDYgKzE1Miwx
NCBAQCBGcmFnbWVudEFuZFJlc291cmNlcyBFZGl0b3I6OmNyZWF0ZUZyYWdtZW50KE5TQXR0cmli
dXRlZFN0cmluZyAqc3RyaW5nKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3N0YXRpYyBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiBhcmNoaXZlZERhdGFGb3JBdHRyaWJ1dGVkU3RyaW5nKE5TQXR0cmli
dXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZykKK3sKKyAgICBpZiAoIWF0dHJpYnV0ZWRTdHJp
bmcubGVuZ3RoKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBTaGFyZWRC
dWZmZXI6OndyYXBOU0RhdGEoW05TS2V5ZWRBcmNoaXZlciBhcmNoaXZlZERhdGFXaXRoUm9vdE9i
amVjdDphdHRyaWJ1dGVkU3RyaW5nXSk7Cit9CisKIHZvaWQgRWRpdG9yOjp3cml0ZVNlbGVjdGlv
blRvUGFzdGVib2FyZChQYXN0ZWJvYXJkJiBwYXN0ZWJvYXJkKQogewogICAgIE5TQXR0cmlidXRl
ZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZyA9IGF0dHJpYnV0ZWRTdHJpbmdGcm9tUmFuZ2UoKnNl
bGVjdGVkUmFuZ2UoKSk7CkBAIC0xNjEsNiArMTY5LDcgQEAgdm9pZCBFZGl0b3I6OndyaXRlU2Vs
ZWN0aW9uVG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQmIHBhc3RlYm9hcmQpCiAgICAgY29udGVudC5k
YXRhSW5XZWJBcmNoaXZlRm9ybWF0ID0gc2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCk7CiAg
ICAgY29udGVudC5kYXRhSW5SVEZERm9ybWF0ID0gYXR0cmlidXRlZFN0cmluZy5jb250YWluc0F0
dGFjaG1lbnRzID8gZGF0YUluUlRGREZvcm1hdChhdHRyaWJ1dGVkU3RyaW5nKSA6IG51bGxwdHI7
CiAgICAgY29udGVudC5kYXRhSW5SVEZGb3JtYXQgPSBkYXRhSW5SVEZGb3JtYXQoYXR0cmlidXRl
ZFN0cmluZyk7CisgICAgY29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0ID0gYXJj
aGl2ZWREYXRhRm9yQXR0cmlidXRlZFN0cmluZyhhdHRyaWJ1dGVkU3RyaW5nKTsKICAgICAvLyBG
SVhNRTogV2h5IGRvbid0IHdlIHdhbnQgdGhpcyBvbiBpT1M/CiAjaWYgUExBVEZPUk0oTUFDKQog
ICAgIGNvbnRlbnQuZGF0YUluSFRNTEZvcm1hdCA9IHNlbGVjdGlvbkluSFRNTEZvcm1hdCgpOwpA
QCAtMTgwLDYgKzE4OSw3IEBAIHZvaWQgRWRpdG9yOjp3cml0ZVNlbGVjdGlvbihQYXN0ZWJvYXJk
V3JpdGVyRGF0YSYgcGFzdGVib2FyZFdyaXRlckRhdGEpCiAgICAgd2ViQ29udGVudC5kYXRhSW5X
ZWJBcmNoaXZlRm9ybWF0ID0gc2VsZWN0aW9uSW5XZWJBcmNoaXZlRm9ybWF0KCk7CiAgICAgd2Vi
Q29udGVudC5kYXRhSW5SVEZERm9ybWF0ID0gYXR0cmlidXRlZFN0cmluZy5jb250YWluc0F0dGFj
aG1lbnRzID8gZGF0YUluUlRGREZvcm1hdChhdHRyaWJ1dGVkU3RyaW5nKSA6IG51bGxwdHI7CiAg
ICAgd2ViQ29udGVudC5kYXRhSW5SVEZGb3JtYXQgPSBkYXRhSW5SVEZGb3JtYXQoYXR0cmlidXRl
ZFN0cmluZyk7CisgICAgd2ViQ29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0ID0g
YXJjaGl2ZWREYXRhRm9yQXR0cmlidXRlZFN0cmluZyhhdHRyaWJ1dGVkU3RyaW5nKTsKICAgICAv
LyBGSVhNRTogV2h5IGRvbid0IHdlIHdhbnQgdGhpcyBvbiBpT1M/CiAjaWYgUExBVEZPUk0oTUFD
KQogICAgIHdlYkNvbnRlbnQuZGF0YUluSFRNTEZvcm1hdCA9IHNlbGVjdGlvbkluSFRNTEZvcm1h
dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCmluZGV4IDNkZDAwZDNiMGVjY2Fm
ODBmNGM2NmFmZWRhMmY2YmI2ZmFhYzU5YmQuLmI5NGQ3MGExZjZhNTIwYjAxODFjM2QyMzViZTJm
YmI4YzdkYzhiNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKQEAgLTY5LDYg
KzY5LDcgQEAgc3RydWN0IFBhc3RlYm9hcmRXZWJDb250ZW50IHsKICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9ybWF0OwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGRhdGFJblJURkRGb3JtYXQ7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGRm9y
bWF0OworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3Jt
YXQ7CiAgICAgU3RyaW5nIGRhdGFJbkhUTUxGb3JtYXQ7CiAgICAgU3RyaW5nIGRhdGFJblN0cmlu
Z0Zvcm1hdDsKICAgICBWZWN0b3I8U3RyaW5nPiBjbGllbnRUeXBlczsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oCmluZGV4IDJjNWFkYzJkMjI2YWUz
YzE4Zjk3YmU5YjJhYmQ4MzE3OGQ2YTAzNmYuLjBkMWI0YjczNmQyMjRlZmRmOWMyMGM3NGU4Mzcy
MTMyZDE5NDQ5YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmRXcml0ZXJEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdy
aXRlckRhdGEuaApAQCAtNTQsNiArNTQsNyBAQCBwdWJsaWM6CiAgICAgICAgIFJlZlB0cjxTaGFy
ZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7CiAgICAgICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGRhdGFJblJURkRGb3JtYXQ7CiAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRh
dGFJblJURkZvcm1hdDsKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmli
dXRlZFN0cmluZ0Zvcm1hdDsKICAgICAgICAgLy8gRklYTUU6IFdoeSBkb24ndCB3ZSB3YW50IHRo
aXMgb24gaU9TPwogI2lmIFBMQVRGT1JNKE1BQykKICAgICAgICAgU3RyaW5nIGRhdGFJbkhUTUxG
b3JtYXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3Rl
Ym9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCmlu
ZGV4IGJhNTQyNmY3Y2VkYmJkNWEyM2M2NTI1N2RhYjBhNDEzN2QxNzA5N2QuLjM0MzAxMTgyNzgy
ODg2OWY1YTA1MzRiMTUzZGRiNDkyOGRjMmYxZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCkBAIC04OCw2ICs4OCwxMiBAQCBwdWJsaWM6CiAjZW5k
aWYKIAogcHJpdmF0ZToKKyNpZiBQTEFURk9STShJT1MpCisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCB3cml0ZU9iamVjdFJlcHJlc2VudGF0aW9ucyhjb25zdCBQYXN0ZWJvYXJkV2ViQ29udGVudCYp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGVPYmplY3RSZXByZXNlbnRhdGlvbnMoY29u
c3QgUGFzdGVib2FyZEltYWdlJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZU9iamVj
dFJlcHJlc2VudGF0aW9ucyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJp
bmcmIHRleHQpOworI2VuZGlmCisKICNpZiBQTEFURk9STShNQUMpCiAgICAgUmV0YWluUHRyPE5T
UGFzdGVib2FyZD4gbV9wYXN0ZWJvYXJkOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvQWJzdHJhY3RQYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvQWJzdHJhY3RQYXN0ZWJvYXJkLmgKaW5kZXggYTFmZTA0MDU0ODZlNDYyOGMy
NmMxZDY2ZTdlNDU1MzUwMjA3MThmMC4uZWUyMmM2ODk4NDY5ZTYwNDVmNjA5Nzg3NjVkYThmOGY3
OGNmNWFiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0Fic3RyYWN0
UGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9BYnN0cmFjdFBh
c3RlYm9hcmQuaApAQCAtMjUsMTUgKzI1LDI3IEBACiAKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91
bmRhdGlvbi5oPgogCitXRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNlIFdlYlBhc3RlYm9hcmRJdGVt
RGF0YSA6IE5TT2JqZWN0CisKKysgKGluc3RhbmNldHlwZSlpdGVtV2l0aFJlcHJlc2VudGluZ09i
amVjdHM6KE5TQXJyYXkgKilyZXByZXNlbnRpbmdPYmplY3RzIGFkZGl0aW9uYWxEYXRhOihOU0Rp
Y3Rpb25hcnkgKilhZGRpdGlvbmFsRGF0YTsKKworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRv
bmx5LCBzdHJvbmcpIE5TQXJyYXkgKnJlcHJlc2VudGluZ09iamVjdHM7CitAcHJvcGVydHkgKG5v
bmF0b21pYywgcmVhZG9ubHksIHN0cm9uZykgTlNEaWN0aW9uYXJ5ICphZGRpdGlvbmFsRGF0YTsK
KworQGVuZAorCiBAcHJvdG9jb2wgQWJzdHJhY3RQYXN0ZWJvYXJkIDxOU09iamVjdD4KIEByZXF1
aXJlZAogCiBAcHJvcGVydHkgKHJlYWRvbmx5LCBub25hdG9taWMpIE5TSW50ZWdlciBudW1iZXJP
Zkl0ZW1zOwogCiAtIChOU0FycmF5PE5TU3RyaW5nICo+ICopcGFzdGVib2FyZFR5cGVzOwotLSAo
dm9pZClzZXRJdGVtczooTlNBcnJheSAqKWl0ZW1zOwogLSAoTlNBcnJheSAqKWRhdGFGb3JQYXN0
ZWJvYXJkVHlwZTooTlNTdHJpbmcgKilwYXN0ZWJvYXJkVHlwZSBpbkl0ZW1TZXQ6KE5TSW5kZXhT
ZXQgKilpdGVtU2V0OwogLSAoTlNBcnJheSAqKXZhbHVlc0ZvclBhc3RlYm9hcmRUeXBlOihOU1N0
cmluZyAqKXBhc3RlYm9hcmRUeXBlIGluSXRlbVNldDooTlNJbmRleFNldCAqKWl0ZW1TZXQ7CiAt
IChOU0ludGVnZXIpY2hhbmdlQ291bnQ7CiAKK0BvcHRpb25hbAorLSAodm9pZClzZXRJdGVtc0Zy
b21PYmplY3RSZXByZXNlbnRhdGlvbnM6KE5TQXJyYXk8V2ViUGFzdGVib2FyZEl0ZW1EYXRhICo+
ICopaXRlbURhdGE7CistICh2b2lkKXNldEl0ZW1zOihOU0FycmF5PE5TRGljdGlvbmFyeSAqPiAq
KWl0ZW1zOworCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
QWJzdHJhY3RQYXN0ZWJvYXJkLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0Fic3Ry
YWN0UGFzdGVib2FyZC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNjZiYTNjMjRlYjQ5ZTg3MjFlMTZlYTg2MDU4
ZjE5MDAxNWExODA4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL0Fic3RyYWN0UGFzdGVib2FyZC5tbQpAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFic3RyYWN0UGFzdGVib2FyZC5oIgorCisj
aW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKK0BpbnRlcmZhY2UgV2ViUGFzdGVib2FyZEl0ZW1E
YXRhICgpCit7CisgICAgUmV0YWluUHRyPE5TQXJyYXk+IF9yZXByZXNlbnRpbmdPYmplY3RzOwor
ICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IF9hZGRpdGlvbmFsRGF0YTsKK30KKworLSAoaW5z
dGFuY2V0eXBlKWluaXRXaXRoUmVwcmVzZW50aW5nT2JqZWN0czooTlNBcnJheSAqKXJlcHJlc2Vu
dGluZ09iamVjdHMgYWRkaXRpb25hbERhdGE6KE5TRGljdGlvbmFyeSAqKWFkZGl0aW9uYWxEYXRh
OworCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJQYXN0ZWJvYXJkSXRlbURhdGEKKworKyAo
aW5zdGFuY2V0eXBlKWl0ZW1XaXRoUmVwcmVzZW50aW5nT2JqZWN0czooTlNBcnJheSAqKXJlcHJl
c2VudGluZ09iamVjdHMgYWRkaXRpb25hbERhdGE6KE5TRGljdGlvbmFyeSAqKWFkZGl0aW9uYWxE
YXRhCit7CisgICAgcmV0dXJuIFtbW3NlbGYgYWxsb2NdIGluaXRXaXRoUmVwcmVzZW50aW5nT2Jq
ZWN0czpyZXByZXNlbnRpbmdPYmplY3RzIGFkZGl0aW9uYWxEYXRhOmFkZGl0aW9uYWxEYXRhXSBh
dXRvcmVsZWFzZV07Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFJlcHJlc2VudGluZ09i
amVjdHM6KE5TQXJyYXkgKilyZXByZXNlbnRpbmdPYmplY3RzIGFkZGl0aW9uYWxEYXRhOihOU0Rp
Y3Rpb25hcnkgKilhZGRpdGlvbmFsRGF0YQoreworICAgIGlmIChzZWxmID0gW3N1cGVyIGluaXRd
KSB7CisgICAgICAgIF9yZXByZXNlbnRpbmdPYmplY3RzID0gcmVwcmVzZW50aW5nT2JqZWN0czsK
KyAgICAgICAgX2FkZGl0aW9uYWxEYXRhID0gYWRkaXRpb25hbERhdGE7CisgICAgfQorICAgIHJl
dHVybiBzZWxmOworfQorCistIChOU0FycmF5ICopcmVwcmVzZW50aW5nT2JqZWN0cworeworICAg
IHJldHVybiBfcmVwcmVzZW50aW5nT2JqZWN0cy5nZXQoKTsKK30KKworLSAoTlNEaWN0aW9uYXJ5
ICopYWRkaXRpb25hbERhdGEKK3sKKyAgICByZXR1cm4gX2FkZGl0aW9uYWxEYXRhLmdldCgpOwor
fQorCitAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZv
cm1QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3Jt
UGFzdGVib2FyZElPUy5tbQppbmRleCBlYjZiMGQyYzBiYTdlYWYzMTZmZjYwZTI2ZjM3MzFiZGU5
MTIyYWQxLi41NWM5YzE3MDVmM2FmMmExNTFjZmQxMGU0MDg1ZWM4ZjRmMGZiMmQzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1Mu
bW0KQEAgLTM0LDggKzM0LDEwIEBACiAjaW1wb3J0ICJTb2Z0TGlua2luZy5oIgogI2ltcG9ydCAi
V2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5oIgogI2ltcG9ydCA8TW9iaWxlQ29yZVNlcnZpY2Vz
L01vYmlsZUNvcmVTZXJ2aWNlcy5oPgorI2ltcG9ydCA8VUlLaXQvVUlJbWFnZS5oPgogCiBTT0ZU
X0xJTktfRlJBTUVXT1JLKFVJS2l0KQorU09GVF9MSU5LX0NMQVNTKFVJS2l0LCBVSUltYWdlKQog
U09GVF9MSU5LX0NMQVNTKFVJS2l0LCBVSVBhc3RlYm9hcmQpCiAKIEBpbnRlcmZhY2UgVUlQYXN0
ZWJvYXJkCkBAIC0xNDcsOSArMTQ5LDkgQEAgU3RyaW5nIFBsYXRmb3JtUGFzdGVib2FyZDo6dW5p
cXVlTmFtZSgpCiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi12b2lkIFBsYXRmb3JtUGFzdGVi
b2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZFdlYkNvbnRlbnQmIGNvbnRlbnQpCitzdGF0aWMg
UmV0YWluUHRyPE5TRGljdGlvbmFyeT4gcmljaFRleHRSZXByZXNlbnRhdGlvbnNGb3JQYXN0ZWJv
YXJkV2ViQ29udGVudChjb25zdCBQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29udGVudCkKIHsKLSAg
ICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiByZXByZXNlbnRhdGlvbnMgPSBhZG9wdE5TKFtbTlNN
dXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOworICAgIFJldGFpblB0cjxOU011dGFibGVE
aWN0aW9uYXJ5PiByZXByZXNlbnRhdGlvbnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFy
eSBhbGxvY10gaW5pdF0pOwogCiAgICAgQVNTRVJUKGNvbnRlbnQuY2xpZW50VHlwZXMuc2l6ZSgp
ID09IGNvbnRlbnQuY2xpZW50RGF0YS5zaXplKCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwLCBz
aXplID0gY29udGVudC5jbGllbnRUeXBlcy5zaXplKCk7IGkgPCBzaXplOyArK2kpCkBAIC0xNTgs
NyArMTYwLDcgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9h
cmRXZWJDb250ZW50JiBjb250ZW50KQogICAgIGlmIChjb250ZW50LmRhdGFJbldlYkFyY2hpdmVG
b3JtYXQpIHsKICAgICAgICAgW3JlcHJlc2VudGF0aW9ucyBzZXRWYWx1ZTooTlNEYXRhICopY29u
dGVudC5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JLZXk6
V2ViQXJjaGl2ZVBib2FyZFR5cGVdOwogICAgICAgICAvLyBGbGFnIGZvciBVSUtpdCB0byBrbm93
IHRoYXQgdGhpcyBjb3B5IGNvbnRhaW5zIHJpY2ggY29udGVudC4gVGhpcyB3aWxsIHRyaWdnZXIg
YSB0d28tc3RlcCBwYXN0ZS4KLSAgICAgICAgTlNTdHJpbmcqIHdlYklPU1Bhc3RlUGJvYXJkVHlw
ZSA9IEAiaU9TIHJpY2ggY29udGVudCBwYXN0ZSBwYXN0ZWJvYXJkIHR5cGUiOworICAgICAgICBO
U1N0cmluZyAqd2ViSU9TUGFzdGVQYm9hcmRUeXBlID0gQCJpT1MgcmljaCBjb250ZW50IHBhc3Rl
IHBhc3RlYm9hcmQgdHlwZSI7CiAgICAgICAgIFtyZXByZXNlbnRhdGlvbnMgc2V0VmFsdWU6d2Vi
SU9TUGFzdGVQYm9hcmRUeXBlIGZvcktleTp3ZWJJT1NQYXN0ZVBib2FyZFR5cGVdOwogICAgIH0K
IApAQCAtMTY3LDEzICsxNjksNzAgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNv
bnN0IFBhc3RlYm9hcmRXZWJDb250ZW50JiBjb250ZW50KQogICAgIGlmIChjb250ZW50LmRhdGFJ
blJURkZvcm1hdCkKICAgICAgICAgW3JlcHJlc2VudGF0aW9ucyBzZXRWYWx1ZTpjb250ZW50LmRh
dGFJblJURkZvcm1hdC0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yS2V5OihOU1N0cmluZyAqKWtV
VFR5cGVSVEZdOwogCisgICAgcmV0dXJuIHJlcHJlc2VudGF0aW9uczsKK30KKwordm9pZCBQbGF0
Zm9ybVBhc3RlYm9hcmQ6OndyaXRlT2JqZWN0UmVwcmVzZW50YXRpb25zKGNvbnN0IFBhc3RlYm9h
cmRXZWJDb250ZW50JiBjb250ZW50KQoreworICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4g
b2JqZWN0UmVwcmVzZW50YXRpb25zID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBp
bml0XSk7CisgICAgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gYWRkaXRpb25hbERhdGEgPSByaWNo
VGV4dFJlcHJlc2VudGF0aW9uc0ZvclBhc3RlYm9hcmRXZWJDb250ZW50KGNvbnRlbnQpOworCisg
ICAgaWYgKGNvbnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdCkgeworICAgICAgICBO
U0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcgPSBbTlNLZXllZFVuYXJjaGl2ZXIg
dW5hcmNoaXZlT2JqZWN0V2l0aERhdGE6Y29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9y
bWF0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKV07CisgICAgICAgIGlmIChhdHRyaWJ1dGVkU3RyaW5n
KQorICAgICAgICAgICAgW29iamVjdFJlcHJlc2VudGF0aW9ucyBhZGRPYmplY3Q6YXR0cmlidXRl
ZFN0cmluZ107CisgICAgfQorCisgICAgaWYgKCFjb250ZW50LmRhdGFJblN0cmluZ0Zvcm1hdC5p
c0VtcHR5KCkpCisgICAgICAgIFtvYmplY3RSZXByZXNlbnRhdGlvbnMgYWRkT2JqZWN0OihOU1N0
cmluZyAqKWNvbnRlbnQuZGF0YUluU3RyaW5nRm9ybWF0XTsKKworICAgIFttX3Bhc3RlYm9hcmQg
c2V0SXRlbXNGcm9tT2JqZWN0UmVwcmVzZW50YXRpb25zOkBbW1dlYlBhc3RlYm9hcmRJdGVtRGF0
YSBpdGVtV2l0aFJlcHJlc2VudGluZ09iamVjdHM6b2JqZWN0UmVwcmVzZW50YXRpb25zLmdldCgp
IGFkZGl0aW9uYWxEYXRhOmFkZGl0aW9uYWxEYXRhLmdldCgpXV1dOworfQorCit2b2lkIFBsYXRm
b3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZFdlYkNvbnRlbnQmIGNvbnRlbnQp
Cit7CisgICAgaWYgKFttX3Bhc3RlYm9hcmQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihz
ZXRJdGVtc0Zyb21PYmplY3RSZXByZXNlbnRhdGlvbnM6KV0pIHsKKyAgICAgICAgd3JpdGVPYmpl
Y3RSZXByZXNlbnRhdGlvbnMoY29udGVudCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gcmVwcmVzZW50YXRpb25zID0gYWRvcHRO
UyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKKyAgICBbcmVwcmVzZW50YXRp
b25zIGFkZEVudHJpZXNGcm9tRGljdGlvbmFyeTpyaWNoVGV4dFJlcHJlc2VudGF0aW9uc0ZvclBh
c3RlYm9hcmRXZWJDb250ZW50KGNvbnRlbnQpLmF1dG9yZWxlYXNlKCldOwogICAgIFtyZXByZXNl
bnRhdGlvbnMgc2V0VmFsdWU6Y29udGVudC5kYXRhSW5TdHJpbmdGb3JtYXQgZm9yS2V5OihOU1N0
cmluZyAqKWtVVFR5cGVUZXh0XTsKLSAgICBbcmVwcmVzZW50YXRpb25zIHNldFZhbHVlOlsoTlNT
dHJpbmcgKiljb250ZW50LmRhdGFJblN0cmluZ0Zvcm1hdCBkYXRhVXNpbmdFbmNvZGluZzpOU1VU
RjhTdHJpbmdFbmNvZGluZ10gZm9yS2V5OihOU1N0cmluZyAqKWtVVFR5cGVVVEY4UGxhaW5UZXh0
XTsKKwogICAgIFttX3Bhc3RlYm9hcmQgc2V0SXRlbXM6QFtyZXByZXNlbnRhdGlvbnMuZ2V0KCld
XTsKIH0KIAordm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlT2JqZWN0UmVwcmVzZW50YXRp
b25zKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQoreworICAgIFJldGFp
blB0cjxOU011dGFibGVBcnJheT4gb2JqZWN0UmVwcmVzZW50YXRpb25zID0gYWRvcHROUyhbW05T
TXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CisgICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rp
b25hcnk+IGFkZGl0aW9uYWxEYXRhID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxs
b2NdIGluaXRdKTsKKworICAgIGlmIChhdXRvIG5hdGl2ZUltYWdlID0gcGFzdGVib2FyZEltYWdl
LmltYWdlLT5uYXRpdmVJbWFnZSgpKSB7CisgICAgICAgIFVJSW1hZ2UgKnVpSW1hZ2UgPSAoVUlJ
bWFnZSAqKVtnZXRVSUltYWdlQ2xhc3MoKSBpbWFnZVdpdGhDR0ltYWdlOm5hdGl2ZUltYWdlLmdl
dCgpXTsKKyAgICAgICAgaWYgKHVpSW1hZ2UpCisgICAgICAgICAgICBbb2JqZWN0UmVwcmVzZW50
YXRpb25zIGFkZE9iamVjdDp1aUltYWdlXTsKKyAgICB9CisKKyAgICBpZiAoIXBhc3RlYm9hcmRJ
bWFnZS51cmwudXJsLmlzRW1wdHkoKSkgeworICAgICAgICBOU1VSTCAqbnNVUkwgPSBwYXN0ZWJv
YXJkSW1hZ2UudXJsLnVybDsKKyAgICAgICAgaWYgKG5zVVJMKQorICAgICAgICAgICAgW29iamVj
dFJlcHJlc2VudGF0aW9ucyBhZGRPYmplY3Q6bnNVUkxdOworICAgIH0KKworICAgIGlmICghcGFz
dGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGUuaXNOdWxsKCkpCisgICAgICAgIFthZGRpdGlv
bmFsRGF0YSBzZXRPYmplY3Q6cGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCkgZm9yS2V5OnBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlXTsKKwor
ICAgIFttX3Bhc3RlYm9hcmQgc2V0SXRlbXNGcm9tT2JqZWN0UmVwcmVzZW50YXRpb25zOkBbW1dl
YlBhc3RlYm9hcmRJdGVtRGF0YSBpdGVtV2l0aFJlcHJlc2VudGluZ09iamVjdHM6b2JqZWN0UmVw
cmVzZW50YXRpb25zLmdldCgpIGFkZGl0aW9uYWxEYXRhOmFkZGl0aW9uYWxEYXRhLmdldCgpXV1d
OworfQorCiB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZElt
YWdlJiBwYXN0ZWJvYXJkSW1hZ2UpCiB7CisgICAgaWYgKFttX3Bhc3RlYm9hcmQgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3RvcihzZXRJdGVtc0Zyb21PYmplY3RSZXByZXNlbnRhdGlvbnM6KV0p
IHsKKyAgICAgICAgd3JpdGVPYmplY3RSZXByZXNlbnRhdGlvbnMocGFzdGVib2FyZEltYWdlKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9u
YXJ5PiByZXByZXNlbnRhdGlvbnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxv
Y10gaW5pdF0pOwogICAgIGlmICghcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGUuaXNO
dWxsKCkpIHsKICAgICAgICAgW3JlcHJlc2VudGF0aW9ucyBzZXRPYmplY3Q6cGFzdGVib2FyZElt
YWdlLnJlc291cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yS2V5OnBhc3RlYm9hcmRJ
bWFnZS5yZXNvdXJjZU1JTUVUeXBlXTsKQEAgLTE4Miw4ICsyNDEsMzMgQEAgdm9pZCBQbGF0Zm9y
bVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdl
KQogICAgIFttX3Bhc3RlYm9hcmQgc2V0SXRlbXM6QFtyZXByZXNlbnRhdGlvbnMuZ2V0KCldXTsK
IH0KIAordm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlT2JqZWN0UmVwcmVzZW50YXRpb25z
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dCkKK3sKKyAg
ICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IG9iamVjdFJlcHJlc2VudGF0aW9ucyA9IGFkb3B0
TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworICAgIFJldGFpblB0cjxOU011dGFi
bGVEaWN0aW9uYXJ5PiBhZGRpdGlvbmFsRGF0YSA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9u
YXJ5IGFsbG9jXSBpbml0XSk7CisKKyAgICBOU1N0cmluZyAqcGFzdGVib2FyZFR5cGVBc05TU3Ry
aW5nID0gcGFzdGVib2FyZFR5cGU7CisgICAgTlNTdHJpbmcgKnRleHRBc05TU3RyaW5nID0gdGV4
dDsKKyAgICBpZiAodGV4dEFzTlNTdHJpbmcgJiYgcGFzdGVib2FyZFR5cGVBc05TU3RyaW5nLmxl
bmd0aCkgeworICAgICAgICBpZiAoVVRUeXBlQ29uZm9ybXNUbygoX19icmlkZ2UgQ0ZTdHJpbmdS
ZWYpcGFzdGVib2FyZFR5cGVBc05TU3RyaW5nLCBrVVRUeXBlVVJMKSkKKyAgICAgICAgICAgIFtv
YmplY3RSZXByZXNlbnRhdGlvbnMgYWRkT2JqZWN0OltbW05TVVJMIGFsbG9jXSBpbml0V2l0aFN0
cmluZzp0ZXh0QXNOU1N0cmluZ10gYXV0b3JlbGVhc2VdXTsKKworICAgICAgICBpZiAoVVRUeXBl
Q29uZm9ybXNUbygoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpcGFzdGVib2FyZFR5cGVBc05TU3RyaW5n
LCBrVVRUeXBlVGV4dCkpCisgICAgICAgICAgICBbb2JqZWN0UmVwcmVzZW50YXRpb25zIGFkZE9i
amVjdDp0ZXh0QXNOU1N0cmluZ107CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFthZGRpdGlv
bmFsRGF0YSBzZXRPYmplY3Q6dGV4dEFzTlNTdHJpbmcgZm9yS2V5OnBhc3RlYm9hcmRUeXBlQXNO
U1N0cmluZ107CisgICAgfQorCisgICAgW21fcGFzdGVib2FyZCBzZXRJdGVtc0Zyb21PYmplY3RS
ZXByZXNlbnRhdGlvbnM6QFtbV2ViUGFzdGVib2FyZEl0ZW1EYXRhIGl0ZW1XaXRoUmVwcmVzZW50
aW5nT2JqZWN0czpvYmplY3RSZXByZXNlbnRhdGlvbnMuZ2V0KCkgYWRkaXRpb25hbERhdGE6YWRk
aXRpb25hbERhdGEuZ2V0KCldXV07Cit9CisKIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0
ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHRleHQpCiB7Cisg
ICAgaWYgKFttX3Bhc3RlYm9hcmQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXRJdGVt
c0Zyb21PYmplY3RSZXByZXNlbnRhdGlvbnM6KV0pIHsKKyAgICAgICAgd3JpdGVPYmplY3RSZXBy
ZXNlbnRhdGlvbnMocGFzdGVib2FyZFR5cGUsIHRleHQpOworICAgICAgICByZXR1cm47CisgICAg
fQorCiAgICAgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gcmVwcmVzZW50YXRpb25zID0gYWRvcHRO
UyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKIAogICAgIGlmIChwYXN0ZWJv
YXJkVHlwZSA9PSBTdHJpbmcoa1VUVHlwZVVSTCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0KaW5kZXggYTg5
YWFlZGNlYjNkYjY3NDg2OTMzZGZjNzVhYWFjYjRkZGM3Y2QyMC4uOTIwZmFiMGJjM2QyOWI5Mzc0
ZmQ5YTM1Mjk1NzJkY2JjZTAyODUyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0KQEAgLTgwLDYgKzgwLDcg
QEAgc3RhdGljIEJPT0wgaXNJbWFnZVR5cGUoTlNTdHJpbmcgKnR5cGUpCiAKIEBpbXBsZW1lbnRh
dGlvbiBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIHsKICAgICBSZXRhaW5QdHI8TlNBcnJheT4g
X2l0ZW1Qcm92aWRlcnM7CisgICAgUmV0YWluUHRyPE5TQXJyYXk+IF9jYWNoZWRUeXBlSWRlbnRp
ZmllcnM7CiB9CiAKICsgKGluc3RhbmNldHlwZSlzaGFyZWRJbnN0YW5jZQpAQCAtMTA0LDEwICsx
MDUsMjIgQEAgc3RhdGljIEJPT0wgaXNJbWFnZVR5cGUoTlNTdHJpbmcgKnR5cGUpCiAKIC0gKE5T
QXJyYXk8TlNTdHJpbmcgKj4gKilwYXN0ZWJvYXJkVHlwZXMKIHsKKyAgICBpZiAoX2NhY2hlZFR5
cGVJZGVudGlmaWVycykKKyAgICAgICAgcmV0dXJuIF9jYWNoZWRUeXBlSWRlbnRpZmllcnMuZ2V0
KCk7CisKICAgICBOU011dGFibGVTZXQ8TlNTdHJpbmcgKj4gKmFsbFR5cGVzID0gW05TTXV0YWJs
ZVNldCBzZXRdOwotICAgIGZvciAoVUlJdGVtUHJvdmlkZXIgKnByb3ZpZGVyIGluIF9pdGVtUHJv
dmlkZXJzLmdldCgpKQotICAgICAgICBbYWxsVHlwZXMgYWRkT2JqZWN0c0Zyb21BcnJheTpwcm92
aWRlci5yZWdpc3RlcmVkVHlwZUlkZW50aWZpZXJzXTsKLSAgICByZXR1cm4gYWxsVHlwZXMuYWxs
T2JqZWN0czsKKyAgICBOU011dGFibGVBcnJheTxOU1N0cmluZyAqPiAqYWxsVHlwZXNJbk9yZGVy
ID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKKyAgICBmb3IgKFVJSXRlbVByb3ZpZGVyICpwcm92
aWRlciBpbiBfaXRlbVByb3ZpZGVycy5nZXQoKSkgeworICAgICAgICBmb3IgKE5TU3RyaW5nICp0
eXBlSWRlbnRpZmllciBpbiBwcm92aWRlci5yZWdpc3RlcmVkVHlwZUlkZW50aWZpZXJzKSB7Cisg
ICAgICAgICAgICBpZiAoW2FsbFR5cGVzIGNvbnRhaW5zT2JqZWN0OnR5cGVJZGVudGlmaWVyXSkK
KyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgW2FsbFR5cGVzIGFkZE9i
amVjdDp0eXBlSWRlbnRpZmllcl07CisgICAgICAgICAgICBbYWxsVHlwZXNJbk9yZGVyIGFkZE9i
amVjdDp0eXBlSWRlbnRpZmllcl07CisgICAgICAgIH0KKyAgICB9CisgICAgX2NhY2hlZFR5cGVJ
ZGVudGlmaWVycyA9IGFsbFR5cGVzSW5PcmRlcjsKKyAgICByZXR1cm4gX2NhY2hlZFR5cGVJZGVu
dGlmaWVycy5nZXQoKTsKIH0KIAogLSAoTlNBcnJheTxVSUl0ZW1Qcm92aWRlciAqPiAqKWl0ZW1Q
cm92aWRlcnMKQEAgLTEyMyw2ICsxMzYsNyBAQCBzdGF0aWMgQk9PTCBpc0ltYWdlVHlwZShOU1N0
cmluZyAqdHlwZSkKIAogICAgIF9pdGVtUHJvdmlkZXJzID0gaXRlbVByb3ZpZGVyczsKICAgICBf
Y2hhbmdlQ291bnQrKzsKKyAgICBfY2FjaGVkVHlwZUlkZW50aWZpZXJzID0gbmlsOwogfQogCiAt
IChOU0ludGVnZXIpbnVtYmVyT2ZJdGVtcwpAQCAtMTMwLDQwICsxNDQsMzggQEAgc3RhdGljIEJP
T0wgaXNJbWFnZVR5cGUoTlNTdHJpbmcgKnR5cGUpCiAgICAgcmV0dXJuIFtfaXRlbVByb3ZpZGVy
cyBjb3VudF07CiB9CiAKLS0gKHZvaWQpc2V0SXRlbXM6KE5TQXJyYXkgKilpdGVtcworLSAodm9p
ZClzZXRJdGVtc0Zyb21PYmplY3RSZXByZXNlbnRhdGlvbnM6KE5TQXJyYXk8V2ViUGFzdGVib2Fy
ZEl0ZW1EYXRhICo+ICopaXRlbURhdGEKIHsKICAgICBOU011dGFibGVBcnJheSAqcHJvdmlkZXJz
ID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKLSAgICBmb3IgKE5TRGljdGlvbmFyeSAqaXRlbSBp
biBpdGVtcykgewotICAgICAgICBpZiAoIWl0ZW0uY291bnQpCisgICAgZm9yIChXZWJQYXN0ZWJv
YXJkSXRlbURhdGEgKmRhdGEgaW4gaXRlbURhdGEpIHsKKyAgICAgICAgaWYgKCFkYXRhLnJlcHJl
c2VudGluZ09iamVjdHMuY291bnQgJiYgIWRhdGEuYWRkaXRpb25hbERhdGEuY291bnQpCiAgICAg
ICAgICAgICBjb250aW51ZTsKKwogICAgICAgICBSZXRhaW5QdHI8VUlJdGVtUHJvdmlkZXI+IGl0
ZW1Qcm92aWRlciA9IGFkb3B0TlMoW1tnZXRVSUl0ZW1Qcm92aWRlckNsYXNzKCkgYWxsb2NdIGlu
aXRdKTsKLSAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IGl0ZW1SZXByZXNl
bnRhdGlvbnNDb3B5ID0gYWRvcHROUyhbaXRlbSBtdXRhYmxlQ29weV0pOwotICAgICAgICAvLyBG
aXJzdCwgbGV0IHRoZSBwbGF0Zm9ybSB3cml0ZSBhbGwgdGhlIGRlZmF1bHQgb2JqZWN0IHR5cGVz
IGl0IGNhbiByZWNvZ25pemUsIHN1Y2ggYXMgTlNTdHJpbmcgYW5kIE5TVVJMLgotICAgICAgICBm
b3IgKE5TU3RyaW5nICp0eXBlSWRlbnRpZmllciBpbiBbaXRlbVJlcHJlc2VudGF0aW9uc0NvcHkg
YWxsS2V5c10pIHsKLSAgICAgICAgICAgIGlkIHJlcHJlc2VudGluZ09iamVjdCA9IFtpdGVtUmVw
cmVzZW50YXRpb25zQ29weSBvYmplY3RGb3JLZXk6dHlwZUlkZW50aWZpZXJdOworICAgICAgICAv
LyBGaXJzdCwgcmVnaXN0ZXIgYWxsIHBsYXRmb3JtIG9iamVjdHMsIHByaW9yaXRpemluZyBvYmpl
Y3RzIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGFycmF5LgorICAgICAgICBmb3IgKGlkIHJlcHJl
c2VudGluZ09iamVjdCBpbiBkYXRhLnJlcHJlc2VudGluZ09iamVjdHMpIHsKICAgICAgICAgICAg
IGlmICghW3JlcHJlc2VudGluZ09iamVjdCBjb25mb3Jtc1RvUHJvdG9jb2w6QHByb3RvY29sKFVJ
SXRlbVByb3ZpZGVyV3JpdGluZyldKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAg
ICAgICAgICBpZCA8VUlJdGVtUHJvdmlkZXJXcml0aW5nPiBvYmplY3RUb1dyaXRlID0gKGlkIDxV
SUl0ZW1Qcm92aWRlcldyaXRpbmc+KXJlcHJlc2VudGluZ09iamVjdDsKLSAgICAgICAgICAgIGlm
ICghW29iamVjdFRvV3JpdGUud3JpdGFibGVUeXBlSWRlbnRpZmllcnNGb3JJdGVtUHJvdmlkZXIg
Y29udGFpbnNPYmplY3Q6dHlwZUlkZW50aWZpZXJdKQotICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwotCi0gICAgICAgICAgICBbaXRlbVJlcHJlc2VudGF0aW9uc0NvcHkgcmVtb3ZlT2JqZWN0Rm9y
S2V5OnR5cGVJZGVudGlmaWVyXTsKLSAgICAgICAgICAgIFtpdGVtUHJvdmlkZXIgcmVnaXN0ZXJP
YmplY3Q6b2JqZWN0VG9Xcml0ZSBvcHRpb25zOm5pbF07CisgICAgICAgICAgICBbaXRlbVByb3Zp
ZGVyIHJlZ2lzdGVyT2JqZWN0OihpZCA8VUlJdGVtUHJvdmlkZXJXcml0aW5nPilyZXByZXNlbnRp
bmdPYmplY3Qgb3B0aW9uczpuaWxdOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gU2Vjb25kbHks
IFdlYktpdCB1c2VzIHNvbWUgY3VzdG9tIHR5cGUgcmVwcmVzZW50YXRpb25zIGFuZC9vciB0eXBl
IGlkZW50aWZpZXJzLCBzbyB3ZSBuZWVkIHRvIHdyaXRlIHRoZXNlIGFzIHdlbGwuCi0gICAgICAg
IGZvciAoTlNTdHJpbmcgKnR5cGVJZGVudGlmaWVyIGluIGl0ZW1SZXByZXNlbnRhdGlvbnNDb3B5
LmdldCgpKSB7CisgICAgICAgIC8vIE5leHQsIHJlZ2lzdGVyIG90aGVyIGN1c3RvbSBkYXRhIHJl
cHJlc2VudGF0aW9ucyBmb3IgdHlwZSBpZGVudGlmaWVycy4KKyAgICAgICAgTlNEaWN0aW9uYXJ5
IDxOU1N0cmluZyAqLCBOU0RhdGEgKj4gKmFkZGl0aW9uYWxEYXRhID0gZGF0YS5hZGRpdGlvbmFs
RGF0YTsKKyAgICAgICAgZm9yIChOU1N0cmluZyAqdHlwZUlkZW50aWZpZXIgaW4gYWRkaXRpb25h
bERhdGEpIHsKKyAgICAgICAgICAgIGlmICghW2FkZGl0aW9uYWxEYXRhW3R5cGVJZGVudGlmaWVy
XSBpc0tpbmRPZkNsYXNzOltOU0RhdGEgY2xhc3NdXSkKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKKwogICAgICAgICAgICAgW2l0ZW1Qcm92aWRlciByZWdpc3RlckRhdGFSZXByZXNlbnRhdGlv
bkZvclR5cGVJZGVudGlmaWVyOnR5cGVJZGVudGlmaWVyIG9wdGlvbnM6bmlsIGxvYWRIYW5kbGVy
Ol5OU1Byb2dyZXNzICooVUlJdGVtUHJvdmlkZXJEYXRhTG9hZENvbXBsZXRpb25CbG9jayBjb21w
bGV0aW9uQmxvY2spCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29tcGxldGlvbkJs
b2NrKFtpdGVtUmVwcmVzZW50YXRpb25zQ29weSBvYmplY3RGb3JLZXk6dHlwZUlkZW50aWZpZXJd
LCBuaWwpOworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25CbG9jayhhZGRpdGlvbmFsRGF0YVt0
eXBlSWRlbnRpZmllcl0sIG5pbCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIFtOU1Byb2dyZXNz
IGRpc2NyZXRlUHJvZ3Jlc3NXaXRoVG90YWxVbml0Q291bnQ6MTAwXTsKICAgICAgICAgICAgIH1d
OwogICAgICAgICB9CiAgICAgICAgIFtwcm92aWRlcnMgYWRkT2JqZWN0Oml0ZW1Qcm92aWRlci5n
ZXQoKV07CiAgICAgfQotICAgIF9jaGFuZ2VDb3VudCsrOwotICAgIF9pdGVtUHJvdmlkZXJzID0g
cHJvdmlkZXJzOworCisgICAgc2VsZi5pdGVtUHJvdmlkZXJzID0gcHJvdmlkZXJzOwogfQogCiAt
IChOU0FycmF5ICopZGF0YUZvclBhc3RlYm9hcmRUeXBlOihOU1N0cmluZyAqKXBhc3RlYm9hcmRU
eXBlIGluSXRlbVNldDooTlNJbmRleFNldCAqKWl0ZW1TZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggYTE5Mjk1NTc5MTM3M2Q1NTk1
NGYxMGJhMTY0YjBiYjRhMTU0ZDU2Yi4uNzFlN2U3ZDM4MTIxMDFiYTJmZDQ4NmY4YTM3YjQzOGRj
NTNlMDExMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHAKQEAgLTE0MDQsNiArMTQwNCw3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxQYXN0ZWJv
YXJkV2ViQ29udGVudD46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBQYXN0ZWJvCiAg
ICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGNvbnRlbnQuZGF0YUluV2ViQXJjaGl2ZUZv
cm1hdC5nZXQoKSk7CiAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGNvbnRlbnQuZGF0
YUluUlRGREZvcm1hdC5nZXQoKSk7CiAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGNv
bnRlbnQuZGF0YUluUlRGRm9ybWF0LmdldCgpKTsKKyAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5j
b2RlciwgY29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0LmdldCgpKTsKIAogICAg
IGVuY29kZXIgPDwgY29udGVudC5jbGllbnRUeXBlczsKICAgICBlbmNvZGVyIDw8IHN0YXRpY19j
YXN0PHVpbnQ2NF90Pihjb250ZW50LmNsaWVudERhdGEuc2l6ZSgpKTsKQEAgLTE0MjMsNiArMTQy
NCw4IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkV2ViQ29udGVudD46OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyLCBQYXN0ZWJvYXJkV2ViCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBjb250ZW50LmRhdGFJblJURkZvcm1h
dCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihk
ZWNvZGVyLCBjb250ZW50LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb250ZW50LmNsaWVudFR5cGVz
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHVpbnQ2NF90IGNsaWVudERhdGFTaXplOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRl
eCBjODQyZDhlZDM2ZDVjYWE3NGU5NDdkMzA0YjM4NjU1MmU0NTMwNzVhLi4xMTg3N2NiMzA2YjM5
ZTdkMTdhZDc3YWY3ZTJjZTM0YjE2YzBlMTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtNTM3OCw2ICs1Mzc4LDggQEAgc3RhdGlj
IFdlYkNvcmU6OlVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24gdG9Vc2VySW50ZXJmYWNlTGF5
b3V0RGlyZWN0aW9uKFVJU2UKICAgICBXZWJLaXQ6OlZpZXdTbmFwc2hvdFN0b3JlOjpzaW5nbGV0
b24oKS5zZXREaXNhYmxlU25hcHNob3RWb2xhdGlsaXR5Rm9yVGVzdGluZyh0cnVlKTsKIH0KIAor
I2lmIFBMQVRGT1JNKElPUykKKwogLSAodm9pZClfc2ltdWxhdGVEYXRhSW50ZXJhY3Rpb25FbnRl
cmVkOihpZClpbmZvCiB7CiAjaWYgRU5BQkxFKERBVEFfSU5URVJBQ1RJT04pCkBAIC01NDM2LDYg
KzU0MzgsOCBAQCBzdGF0aWMgV2ViQ29yZTo6VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiB0
b1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24oVUlTZQogI2VuZGlmCiB9CiAKKyNlbmRpZiAv
LyBQTEFURk9STShJT1MpCisKIEBlbmQKIAogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZDMyODRkZmNkY2MzMDZjZDA4ZjBmMGYzNzVkNzdmMDc1
OTUwM2EzMi4uYWRjNjYzZDYwY2EwMjhkZTRiMzI2OGYwMTcwMjM4YzE4M2ZkZTBkYSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0
IEBACisyMDE3LTA0LTAzICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgor
CisgICAgICAgIERhdGEgaW50ZXJhY3Rpb24gc2hvdWxkIHJlZ2lzdGVyIHR5cGUgaWRlbnRpZmll
cnMgaW4gb3JkZXIgb2YgcHJpb3JpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3MDQyOAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzA2MzMyOTY+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXVnbWVu
dHMgZXhpc3RpbmcgdW5pdCB0ZXN0cyB0byBjaGVjayBmb3IgdGhlIGV4aXN0ZW5jZSBhbmQgcHJp
b3JpdHkgb2YgdHlwZSBpZGVudGlmaWVycyBpbiB0aGUgVUlJdGVtUHJvdmlkZXJzCisgICAgICAg
IGNyZWF0ZWQgdXBvbiBzdGFydGluZyBkYXRhIGludGVyYWN0aW9uLiBBbHNvIGZpeGVzIGEgcmFj
ZSBjb25kaXRpb24gaW4gb25lIG9mIHRoZSB1bml0IHRlc3RzIGFuZCBhZGRzIGEgbmV3IHVuaXQK
KyAgICAgICAgdGVzdCBmb3IgZGF0YSBpbnRlcmFjdGlvbiBmcm9tIGEgdGV4dGFyZWEgdG8gYW4g
aW5wdXQuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EYXRhSW50ZXJhY3Rp
b25UZXN0cy5tbToKKyAgICAgICAgKGNoZWNrVHlwZUlkZW50aWZpZXJQcmVjZWRlc090aGVyVHlw
ZUlkZW50aWZpZXIpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9pb3MvRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yLmg6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9pb3MvRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yLm1tOgorICAgICAgICAo
LVtEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgX2FkdmFuY2VQcm9ncmVzc10pOgorICAgICAgICAo
LVtEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3Igc291cmNlSXRlbVByb3ZpZGVyc10pOgorICAgICAg
ICAoLVtEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgX3dlYlZpZXc6c2hvd0N1c3RvbVNoZWV0Rm9y
RWxlbWVudDpdKToKKwogMjAxNy0wMy0zMSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFw
cGxlLmNvbT4KIAogICAgICAgICBNYWlsIGNhbiBnZXQgc3R1Y2sgdW5kZXJuZWF0aCBGaW5kQ29u
dHJvbGxlcjo6ZmluZFN0cmluZ01hdGNoZXMgYWZ0ZXIgc2VhcmNoaW5nIGluIGEgbG9uZyBtZXNz
YWdlCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EYXRhSW50ZXJh
Y3Rpb25UZXN0cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0RhdGFJbnRlcmFj
dGlvblRlc3RzLm1tCmluZGV4IDg4YjVjYWQwNTcwNDNkYzg5OWNjOWMzYmNhZmJhNGJkMWM5MDFh
ZjIuLjhmM2JjZDJjZDRlNDU4ZGRjYjU0ZTJmYTMzN2MwODUyYTgzMzQ3MzcgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0RhdGFJbnRlcmFjdGlvblRlc3RzLm1tCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0RhdGFJbnRlcmFjdGlvblRlc3RzLm1t
CkBAIC02Miw2ICs2MiwxNCBAQCBzdGF0aWMgdm9pZCBjaGVja1NlbGVjdGlvblJlY3RzV2l0aExv
Z2dpbmcoTlNBcnJheSAqZXhwZWN0ZWQsIE5TQXJyYXkgKm9ic2VydmVkKQogICAgIEVYUEVDVF9U
UlVFKFtleHBlY3RlZCBpc0VxdWFsVG9BcnJheTpvYnNlcnZlZF0pOwogfQogCitzdGF0aWMgdm9p
ZCBjaGVja1R5cGVJZGVudGlmaWVyUHJlY2VkZXNPdGhlclR5cGVJZGVudGlmaWVyKERhdGFJbnRl
cmFjdGlvblNpbXVsYXRvciAqc2ltdWxhdG9yLCBOU1N0cmluZyAqZmlyc3RUeXBlLCBOU1N0cmlu
ZyAqc2Vjb25kVHlwZSkKK3sKKyAgICBOU0FycmF5ICpyZWdpc3RlcmVkVHlwZXMgPSBbc2ltdWxh
dG9yLnNvdXJjZUl0ZW1Qcm92aWRlcnMuZmlyc3RPYmplY3QgcmVnaXN0ZXJlZFR5cGVJZGVudGlm
aWVyc107CisgICAgRVhQRUNUX1RSVUUoW3JlZ2lzdGVyZWRUeXBlcyBjb250YWluc09iamVjdDpm
aXJzdFR5cGVdKTsKKyAgICBFWFBFQ1RfVFJVRShbcmVnaXN0ZXJlZFR5cGVzIGNvbnRhaW5zT2Jq
ZWN0OnNlY29uZFR5cGVdKTsKKyAgICBFWFBFQ1RfVFJVRShbcmVnaXN0ZXJlZFR5cGVzIGluZGV4
T2ZPYmplY3Q6Zmlyc3RUeXBlXSA8IFtyZWdpc3RlcmVkVHlwZXMgaW5kZXhPZk9iamVjdDpzZWNv
bmRUeXBlXSk7Cit9CisKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogVEVTVChEYXRhSW50
ZXJhY3Rpb25UZXN0cywgSW1hZ2VUb0NvbnRlbnRFZGl0YWJsZSkKQEAgLTc5LDYgKzg3LDcgQEAg
VEVTVChEYXRhSW50ZXJhY3Rpb25UZXN0cywgSW1hZ2VUb0NvbnRlbnRFZGl0YWJsZSkKICAgICBF
WFBFQ1RfVFJVRShbb2JzZXJ2ZWRFdmVudE5hbWVzIGNvbnRhaW5zT2JqZWN0OkRhdGFJbnRlcmFj
dGlvbk92ZXJFdmVudE5hbWVdKTsKICAgICBFWFBFQ1RfVFJVRShbb2JzZXJ2ZWRFdmVudE5hbWVz
IGNvbnRhaW5zT2JqZWN0OkRhdGFJbnRlcmFjdGlvblBlcmZvcm1PcGVyYXRpb25FdmVudE5hbWVd
KTsKICAgICBjaGVja1NlbGVjdGlvblJlY3RzV2l0aExvZ2dpbmcoQFsgbWFrZUNHUmVjdFZhbHVl
KDEsIDIwMSwgMjE1LCAxNzQpIF0sIFtkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgZmluYWxTZWxl
Y3Rpb25SZWN0c10pOworICAgIGNoZWNrVHlwZUlkZW50aWZpZXJQcmVjZWRlc090aGVyVHlwZUlk
ZW50aWZpZXIoZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yLmdldCgpLCAoTlNTdHJpbmcgKilrVVRU
eXBlUE5HLCAoTlNTdHJpbmcgKilrVVRUeXBlRmlsZVVSTCk7CiB9CiAKIFRFU1QoRGF0YUludGVy
YWN0aW9uVGVzdHMsIEltYWdlVG9UZXh0YXJlYSkKQEAgLTk5LDYgKzEwOCw3IEBAIFRFU1QoRGF0
YUludGVyYWN0aW9uVGVzdHMsIEltYWdlVG9UZXh0YXJlYSkKIAogICAgIE5TQXJyYXkgKmV4cGVj
dGVkU2VsZWN0aW9uUmVjdHMgPSBbTlNBcnJheSBhcnJheVdpdGhPYmplY3RzOm1ha2VDR1JlY3RW
YWx1ZSg2LCAyMDMsIDE4OCwgMTQpLCBtYWtlQ0dSZWN0VmFsdWUoNiwgMjE3LCAxODgsIDE0KSwg
bWFrZUNHUmVjdFZhbHVlKDYsIDIzMSwgNjYsIDE0KSwgbmlsXTsKICAgICBjaGVja1NlbGVjdGlv
blJlY3RzV2l0aExvZ2dpbmcoZXhwZWN0ZWRTZWxlY3Rpb25SZWN0cywgW2RhdGFJbnRlcmFjdGlv
blNpbXVsYXRvciBmaW5hbFNlbGVjdGlvblJlY3RzXSk7CisgICAgY2hlY2tUeXBlSWRlbnRpZmll
clByZWNlZGVzT3RoZXJUeXBlSWRlbnRpZmllcihkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IuZ2V0
KCksIChOU1N0cmluZyAqKWtVVFR5cGVQTkcsIChOU1N0cmluZyAqKWtVVFR5cGVGaWxlVVJMKTsK
IH0KIAogVEVTVChEYXRhSW50ZXJhY3Rpb25UZXN0cywgQ29udGVudEVkaXRhYmxlVG9Db250ZW50
RWRpdGFibGUpCkBAIC0xMTcsNiArMTI3LDcgQEAgVEVTVChEYXRhSW50ZXJhY3Rpb25UZXN0cywg
Q29udGVudEVkaXRhYmxlVG9Db250ZW50RWRpdGFibGUpCiAgICAgRVhQRUNUX1RSVUUoW29ic2Vy
dmVkRXZlbnROYW1lcyBjb250YWluc09iamVjdDpEYXRhSW50ZXJhY3Rpb25PdmVyRXZlbnROYW1l
XSk7CiAgICAgRVhQRUNUX1RSVUUoW29ic2VydmVkRXZlbnROYW1lcyBjb250YWluc09iamVjdDpE
YXRhSW50ZXJhY3Rpb25QZXJmb3JtT3BlcmF0aW9uRXZlbnROYW1lXSk7CiAgICAgY2hlY2tTZWxl
Y3Rpb25SZWN0c1dpdGhMb2dnaW5nKEBbIG1ha2VDR1JlY3RWYWx1ZSgxLCAyMDEsIDk2MSwgMjI3
KSBdLCBbZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIGZpbmFsU2VsZWN0aW9uUmVjdHNdKTsKKyAg
ICBjaGVja1R5cGVJZGVudGlmaWVyUHJlY2VkZXNPdGhlclR5cGVJZGVudGlmaWVyKGRhdGFJbnRl
cmFjdGlvblNpbXVsYXRvci5nZXQoKSwgKE5TU3RyaW5nICopa1VUVHlwZVJURkQsIChOU1N0cmlu
ZyAqKWtVVFR5cGVVVEY4UGxhaW5UZXh0KTsKIH0KIAogVEVTVChEYXRhSW50ZXJhY3Rpb25UZXN0
cywgQ29udGVudEVkaXRhYmxlVG9UZXh0YXJlYSkKQEAgLTEzNSw2ICsxNDYsMjAgQEAgVEVTVChE
YXRhSW50ZXJhY3Rpb25UZXN0cywgQ29udGVudEVkaXRhYmxlVG9UZXh0YXJlYSkKICAgICBFWFBF
Q1RfVFJVRShbb2JzZXJ2ZWRFdmVudE5hbWVzIGNvbnRhaW5zT2JqZWN0OkRhdGFJbnRlcmFjdGlv
bk92ZXJFdmVudE5hbWVdKTsKICAgICBFWFBFQ1RfVFJVRShbb2JzZXJ2ZWRFdmVudE5hbWVzIGNv
bnRhaW5zT2JqZWN0OkRhdGFJbnRlcmFjdGlvblBlcmZvcm1PcGVyYXRpb25FdmVudE5hbWVdKTsK
ICAgICBjaGVja1NlbGVjdGlvblJlY3RzV2l0aExvZ2dpbmcoQFsgbWFrZUNHUmVjdFZhbHVlKDYs
IDIwMywgOTkwLCAyMzIpIF0sIFtkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgZmluYWxTZWxlY3Rp
b25SZWN0c10pOworICAgIGNoZWNrVHlwZUlkZW50aWZpZXJQcmVjZWRlc090aGVyVHlwZUlkZW50
aWZpZXIoZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yLmdldCgpLCAoTlNTdHJpbmcgKilrVVRUeXBl
UlRGRCwgKE5TU3RyaW5nICopa1VUVHlwZVVURjhQbGFpblRleHQpOworfQorCitURVNUKERhdGFJ
bnRlcmFjdGlvblRlc3RzLCBUZXh0QXJlYVRvSW5wdXQpCit7CisgICAgUmV0YWluUHRyPFRlc3RX
S1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKV0pOworICAgIFt3ZWJWaWV3IHN5bmNo
cm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAInRleHRhcmVhLXRvLWlucHV0Il07CisKKyAgICBS
ZXRhaW5QdHI8RGF0YUludGVyYWN0aW9uU2ltdWxhdG9yPiBkYXRhSW50ZXJhY3Rpb25TaW11bGF0
b3IgPSBhZG9wdE5TKFtbRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIGFsbG9jXSBpbml0V2l0aFdl
YlZpZXc6d2ViVmlldy5nZXQoKV0pOworICAgIFtkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgcnVu
RnJvbTpDR1BvaW50TWFrZSgxMDAsIDUwKSB0bzpDR1BvaW50TWFrZSgxMDAsIDMwMCldOworCisg
ICAgRVhQRUNUX0VRKFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJzb3Vy
Y2UudmFsdWUiXS5sZW5ndGgsIDBVTCk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJIZWxsbyB3b3Js
ZCIsIFt3ZWJWaWV3IGVkaXRvclZhbHVlXS5VVEY4U3RyaW5nKTsKKyAgICBjaGVja1NlbGVjdGlv
blJlY3RzV2l0aExvZ2dpbmcoQFsgbWFrZUNHUmVjdFZhbHVlKDEwMSwgMjQxLCA5OTAsIDIzMikg
XSwgW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBmaW5hbFNlbGVjdGlvblJlY3RzXSk7CiB9CiAK
IFRFU1QoRGF0YUludGVyYWN0aW9uVGVzdHMsIExpbmtUb0lucHV0KQpAQCAtMTUyLDYgKzE3Nyw3
IEBAIFRFU1QoRGF0YUludGVyYWN0aW9uVGVzdHMsIExpbmtUb0lucHV0KQogICAgIEVYUEVDVF9U
UlVFKFtvYnNlcnZlZEV2ZW50TmFtZXMgY29udGFpbnNPYmplY3Q6RGF0YUludGVyYWN0aW9uT3Zl
ckV2ZW50TmFtZV0pOwogICAgIEVYUEVDVF9UUlVFKFtvYnNlcnZlZEV2ZW50TmFtZXMgY29udGFp
bnNPYmplY3Q6RGF0YUludGVyYWN0aW9uUGVyZm9ybU9wZXJhdGlvbkV2ZW50TmFtZV0pOwogICAg
IGNoZWNrU2VsZWN0aW9uUmVjdHNXaXRoTG9nZ2luZyhAWyBtYWtlQ0dSZWN0VmFsdWUoMTAxLCAy
NzMsIDIwNTcsIDIzMikgXSwgW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBmaW5hbFNlbGVjdGlv
blJlY3RzXSk7CisgICAgY2hlY2tUeXBlSWRlbnRpZmllclByZWNlZGVzT3RoZXJUeXBlSWRlbnRp
ZmllcihkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IuZ2V0KCksIChOU1N0cmluZyAqKWtVVFR5cGVV
UkwsIChOU1N0cmluZyAqKWtVVFR5cGVVVEY4UGxhaW5UZXh0KTsKIH0KIAogVEVTVChEYXRhSW50
ZXJhY3Rpb25UZXN0cywgQmFja2dyb3VuZEltYWdlTGlua1RvSW5wdXQpCkBAIC0xNjksNiArMTk1
LDcgQEAgVEVTVChEYXRhSW50ZXJhY3Rpb25UZXN0cywgQmFja2dyb3VuZEltYWdlTGlua1RvSW5w
dXQpCiAgICAgRVhQRUNUX1RSVUUoW29ic2VydmVkRXZlbnROYW1lcyBjb250YWluc09iamVjdDpE
YXRhSW50ZXJhY3Rpb25PdmVyRXZlbnROYW1lXSk7CiAgICAgRVhQRUNUX1RSVUUoW29ic2VydmVk
RXZlbnROYW1lcyBjb250YWluc09iamVjdDpEYXRhSW50ZXJhY3Rpb25QZXJmb3JtT3BlcmF0aW9u
RXZlbnROYW1lXSk7CiAgICAgY2hlY2tTZWxlY3Rpb25SZWN0c1dpdGhMb2dnaW5nKEBbIG1ha2VD
R1JlY3RWYWx1ZSgxMDEsIDI0MSwgMjA1NywgMjMyKSBdLCBbZGF0YUludGVyYWN0aW9uU2ltdWxh
dG9yIGZpbmFsU2VsZWN0aW9uUmVjdHNdKTsKKyAgICBjaGVja1R5cGVJZGVudGlmaWVyUHJlY2Vk
ZXNPdGhlclR5cGVJZGVudGlmaWVyKGRhdGFJbnRlcmFjdGlvblNpbXVsYXRvci5nZXQoKSwgKE5T
U3RyaW5nICopa1VUVHlwZVVSTCwgKE5TU3RyaW5nICopa1VUVHlwZVVURjhQbGFpblRleHQpOwog
fQogCiBURVNUKERhdGFJbnRlcmFjdGlvblRlc3RzLCBDYW5QcmV2ZW50U3RhcnQpCkBAIC0yOTgs
NiArMzI1LDcgQEAgVEVTVChEYXRhSW50ZXJhY3Rpb25UZXN0cywgTGFyZ2VJbWFnZVRvVGFyZ2V0
RGl2KQogICAgIFJldGFpblB0cjxEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3I+IGRhdGFJbnRlcmFj
dGlvblNpbXVsYXRvciA9IGFkb3B0TlMoW1tEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgYWxsb2Nd
IGluaXRXaXRoV2ViVmlldzp3ZWJWaWV3LmdldCgpXSk7CiAgICAgW2RhdGFJbnRlcmFjdGlvblNp
bXVsYXRvciBydW5Gcm9tOkNHUG9pbnRNYWtlKDIwMCwgNDAwKSB0bzpDR1BvaW50TWFrZSgyMDAs
IDE1MCldOwogICAgIEVYUEVDVF9XS19TVFJFUSgiUEFTUyIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZh
bHVhdGluZ0phdmFTY3JpcHQ6QCJ0YXJnZXQudGV4dENvbnRlbnQiXS5VVEY4U3RyaW5nKTsKKyAg
ICBjaGVja1R5cGVJZGVudGlmaWVyUHJlY2VkZXNPdGhlclR5cGVJZGVudGlmaWVyKGRhdGFJbnRl
cmFjdGlvblNpbXVsYXRvci5nZXQoKSwgKE5TU3RyaW5nICopa1VUVHlwZVBORywgKE5TU3RyaW5n
ICopa1VUVHlwZUZpbGVVUkwpOwogfQogCiBURVNUKERhdGFJbnRlcmFjdGlvblRlc3RzLCBMaW5r
V2l0aEVtcHR5SFJFRikKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL0RhdGFJ
bnRlcmFjdGlvblNpbXVsYXRvci5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvRGF0YUludGVy
YWN0aW9uU2ltdWxhdG9yLmgKaW5kZXggZmExMTBhNmRmN2U4YjI3MTM5ZGVjNDlkNjFiMGQ0YmM1
MjQ2MjdjYS4uMzM2YmRmZDg5MTU1NmMzMTE3Njg4MzY1NzJiYzA1NWI2ZWMxN2ZlZiAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yLmgK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yLmgK
QEAgLTU1LDYgKzU1LDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgRGF0YUludGVyYWN0
aW9uUGhhc2UpIHsKICAgICBSZXRhaW5QdHI8TW9ja0RhdGFPcGVyYXRpb25TZXNzaW9uPiBfZGF0
YU9wZXJhdGlvblNlc3Npb247CiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBfb2JzZXJ2
ZWRFdmVudE5hbWVzOwogICAgIFJldGFpblB0cjxVSUl0ZW1Qcm92aWRlcj4gX2V4dGVybmFsSXRl
bVByb3ZpZGVyOworICAgIFJldGFpblB0cjxOU0FycmF5ICo+IF9zb3VyY2VJdGVtUHJvdmlkZXJz
OwogICAgIFJldGFpblB0cjxOU0FycmF5ICo+IF9maW5hbFNlbGVjdGlvblJlY3RzOwogICAgIENH
UG9pbnQgX3N0YXJ0TG9jYXRpb247CiAgICAgQ0dQb2ludCBfZW5kTG9jYXRpb247CkBAIC03MSw2
ICs3Miw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIERhdGFJbnRlcmFjdGlvblBoYXNl
KSB7CiBAcHJvcGVydHkgKG5vbmF0b21pYykgQmxvY2tQdHI8Qk9PTChfV0tBY3RpdmF0ZWRFbGVt
ZW50SW5mbyAqKT4gc2hvd0N1c3RvbUFjdGlvblNoZWV0QmxvY2s7CiBAcHJvcGVydHkgKG5vbmF0
b21pYykgQmxvY2tQdHI8TlNBcnJheSAqKE5TQXJyYXkgKik+IGNvbnZlcnRJdGVtUHJvdmlkZXJz
QmxvY2s7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc3Ryb25nKSBVSUl0ZW1Qcm92aWRlciAqZXh0
ZXJuYWxJdGVtUHJvdmlkZXI7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TQXJy
YXkgKnNvdXJjZUl0ZW1Qcm92aWRlcnM7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkp
IE5TQXJyYXkgKm9ic2VydmVkRXZlbnROYW1lczsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFk
b25seSkgTlNBcnJheSAqZmluYWxTZWxlY3Rpb25SZWN0czsKIEBwcm9wZXJ0eSAobm9uYXRvbWlj
LCByZWFkb25seSkgRGF0YUludGVyYWN0aW9uUGhhc2UgcGhhc2U7CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL2lvcy9EYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL2lvcy9EYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IubW0KaW5kZXggMTNmNGEw
YmZhODVmYThkNjYwNTJkYmY4YzE1ZTNhN2ZlMGQxNGUzNS4uYWUxNmM5ZDg4NDY0NjViZDZhNTNh
MDQ4OTAxMjg2MGE0MDcwYmZiOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3Mv
RGF0YUludGVyYWN0aW9uU2ltdWxhdG9yLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9z
L0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvci5tbQpAQCAtMjAyLDEwICsyMDIsMTQgQEAgc3RhdGlj
IE5TQXJyYXkgKmRhdGFJbnRlcmFjdGlvbkV2ZW50TmFtZXMoKQogCiAgICAgICAgIF9kYXRhT3Bl
cmF0aW9uU2Vzc2lvbiA9IGFkb3B0TlMoW1tNb2NrRGF0YU9wZXJhdGlvblNlc3Npb24gYWxsb2Nd
IGluaXRXaXRoUHJvdmlkZXI6aXRlbVByb3ZpZGVycy5maXJzdE9iamVjdCBsb2NhdGlvbjpzZWxm
Ll9jdXJyZW50TG9jYXRpb24gd2luZG93Oltfd2ViVmlldyB3aW5kb3ddXSk7CiAgICAgICAgIFtf
ZGF0YUludGVyYWN0aW9uU2Vzc2lvbiBzZXRJdGVtczppdGVtc107Ci0gICAgICAgIGlmICghc2Vs
Zi5zaG93Q3VzdG9tQWN0aW9uU2hlZXRCbG9jaykgewotICAgICAgICAgICAgW193ZWJWaWV3IF9z
aW11bGF0ZVdpbGxCZWdpbkRhdGFJbnRlcmFjdGlvbldpdGhTZXNzaW9uOl9kYXRhSW50ZXJhY3Rp
b25TZXNzaW9uLmdldCgpXTsKLSAgICAgICAgICAgIF9waGFzZSA9IERhdGFJbnRlcmFjdGlvbkJl
Z2FuOworICAgICAgICBfc291cmNlSXRlbVByb3ZpZGVycyA9IGl0ZW1Qcm92aWRlcnM7CisgICAg
ICAgIGlmIChzZWxmLnNob3dDdXN0b21BY3Rpb25TaGVldEJsb2NrKSB7CisgICAgICAgICAgICAv
LyBEZWZlciBwcm9ncmVzcyB1bnRpbCB0aGUgY3VzdG9tIGFjdGlvbiBzaGVldCBpcyBkaXNtaXNz
ZWQuCisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKworICAgICAgICBbX3dlYlZpZXcg
X3NpbXVsYXRlV2lsbEJlZ2luRGF0YUludGVyYWN0aW9uV2l0aFNlc3Npb246X2RhdGFJbnRlcmFj
dGlvblNlc3Npb24uZ2V0KCldOworICAgICAgICBfcGhhc2UgPSBEYXRhSW50ZXJhY3Rpb25CZWdh
bjsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgRGF0YUludGVyYWN0aW9uQmVnYW46
CkBAIC0yMzUsNiArMjM5LDExIEBAIHN0YXRpYyBOU0FycmF5ICpkYXRhSW50ZXJhY3Rpb25FdmVu
dE5hbWVzKCkKICAgICBbc2VsZiBwZXJmb3JtU2VsZWN0b3I6QHNlbGVjdG9yKF9hZHZhbmNlUHJv
Z3Jlc3MpIHdpdGhPYmplY3Q6bmlsIGFmdGVyRGVsYXk6cHJvZ3Jlc3NUaW1lU3RlcF07CiB9CiAK
Ky0gKE5TQXJyYXkgKilzb3VyY2VJdGVtUHJvdmlkZXJzCit7CisgICAgcmV0dXJuIF9zb3VyY2VJ
dGVtUHJvdmlkZXJzLmdldCgpOworfQorCiAtIChVSUl0ZW1Qcm92aWRlciAqKWV4dGVybmFsSXRl
bVByb3ZpZGVyCiB7CiAgICAgcmV0dXJuIF9leHRlcm5hbEl0ZW1Qcm92aWRlci5nZXQoKTsKQEAg
LTI3NCw2ICsyODMsNyBAQCBzdGF0aWMgTlNBcnJheSAqZGF0YUludGVyYWN0aW9uRXZlbnROYW1l
cygpCiAgICAgICAgIERhdGFJbnRlcmFjdGlvblNpbXVsYXRvciAqd2Vha1NlbGYgPSBzdHJvbmdT
ZWxmLmdldCgpOwogICAgICAgICBbd2Vha1NlbGYtPl93ZWJWaWV3IF9zaW11bGF0ZVdpbGxCZWdp
bkRhdGFJbnRlcmFjdGlvbldpdGhTZXNzaW9uOndlYWtTZWxmLT5fZGF0YUludGVyYWN0aW9uU2Vz
c2lvbi5nZXQoKV07CiAgICAgICAgIHdlYWtTZWxmLT5fcGhhc2UgPSBEYXRhSW50ZXJhY3Rpb25C
ZWdhbjsKKyAgICAgICAgW3dlYWtTZWxmIF9zY2hlZHVsZUFkdmFuY2VQcm9ncmVzc107CiAgICAg
fSk7CiAKICAgICByZXR1cm4gc2VsZi5zaG93Q3VzdG9tQWN0aW9uU2hlZXRCbG9jayhlbGVtZW50
KTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>306138</attachid>
            <date>2017-04-03 16:23:50 -0700</date>
            <delta_ts>2017-04-03 16:37:28 -0700</delta_ts>
            <desc>Tweaked ChangeLog</desc>
            <filename>bug-170428-20170403162349.patch</filename>
            <type>text/plain</type>
            <size>40823</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0Njk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzMxODUyMTA1ZGFmZDg0
ZWYwNDE4ZmExZDIzNmEzM2JhOTRlMTI5OS4uNjc5ODk3ZWVmNzdiYzhlNDJmZWVkMWExNjY4YmI1
M2IzOTVjOWQ2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDE3LTA0LTAzICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIERhdGEgaW50ZXJh
Y3Rpb24gc2hvdWxkIHJlZ2lzdGVyIHR5cGUgaWRlbnRpZmllcnMgaW4gb3JkZXIgb2YgcHJpb3Jp
dHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDQy
OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzA2MzMyOTY+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3VycmVudGx5LCBkdWUgdG8gdGhlIHNoYXJl
ZCBsb2dpYyBmb3Igd3JpdGluZyB0byBhIFVJUGFzdGVib2FyZCAoaW4gdGhlIGNhc2Ugb2YgY29w
eS9wYXN0ZSkgYW5kIHRoZSBzaGFyZWQKKyAgICAgICAgVUlJdGVtUHJvdmlkZXItYmFzZWQgcGFz
dGVib2FyZCB3cmFwcGVyIChpbiB0aGUgY2FzZSBvZiBkYXRhIGludGVyYWN0aW9uKSwgd2UgZG9u
J3QgZW5mb3JjZSBhbnkgcGFydGljdWxhcgorICAgICAgICBvcmRlcmluZyBpbiB3aGljaCB0eXBl
IGlkZW50aWZpZXJzIGFyZSByZWdpc3RlcmVkIGluIHRoZSBnZW5lcmF0ZWQgaXRlbSBwcm92aWRl
ci4gVGhpcyBpcyBiZWNhdXNlCisgICAgICAgIC1bVUlQYXN0ZWJvYXJkIHNldEl0ZW1zOl0gb25s
eSB0YWtlcyBhbiB1bm9yZGVyZWQgbWFwcGluZyBvZiB0eXBlIGlkZW50aWZpZXJzIHRvIG9iamVj
dHMuCisKKyAgICAgICAgVG8gZml4IHRoaXMsIHdlIGludHJvZHVjZSBhIHNlcGFyYXRlIHdheSB0
byBzZXQgcGFzdGVib2FyZCBkYXRhIHRoYXQgZmlyc3Qgd3JpdGVzIGEgbGlzdCBvZiBvYmplY3QK
KyAgICAgICAgcmVwcmVzZW50YXRpb25zIGluIG9yZGVyIG9mIHByaW9yaXR5ICh3aGljaCBpcyBk
ZXBlbmRlbnQgb24gdGhlIGNvbnRlbnQgYmVpbmcgaW50ZXJhY3RlZCB3aXRoKSBhbmQgdGhlbiBy
ZWdpc3RlcgorICAgICAgICBpbmRpdmlkdWFsIHR5cGUtZGF0YSBtYXBwaW5ncyBhdCB0aGUgZW5k
LgorCisgICAgICAgIEF1Z21lbnRlZCBleGlzdGluZyBBUEkgdGVzdHMgaW4gRGF0YUludGVyYWN0
aW9uVGVzdHMgdG8gY2hlY2sgZm9yIHRoZSBleGlzdGVuY2UgYW5kIHByaW9yaXR5IG9mIHR5cGUg
aWRlbnRpZmllcnMKKyAgICAgICAgaW4gdGhlIFVJSXRlbVByb3ZpZGVycyBjcmVhdGVkIHVwb24g
c3RhcnRpbmcgZGF0YSBpbnRlcmFjdGlvbi4gQWxzbyBhZGRzIGEgbmV3IHVuaXQgdGVzdDoKKyAg
ICAgICAgRGF0YUludGVyYWN0aW9uVGVzdHMuVGV4dEFyZWFUb0lucHV0LgorCisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGVkaXRpbmcvY29j
b2EvRWRpdG9yQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjphcmNoaXZlZERhdGFGb3JBdHRy
aWJ1dGVkU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6d3JpdGVTZWxlY3Rpb25U
b1Bhc3RlYm9hcmQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjp3cml0ZVNlbGVjdGlvbik6
CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bh
c3RlYm9hcmRXcml0ZXJEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJv
YXJkLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL0Fic3RyYWN0UGFzdGVib2FyZC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2lvcy9BYnN0cmFjdFBhc3RlYm9hcmQubW06IENvcGllZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9BYnN0cmFjdFBhc3RlYm9hcmQuaC4KKworICAgICAg
ICBJbnRyb2R1Y2UgV2ViUGFzdGVib2FyZEl0ZW1EYXRhLCBhIHdyYXBwZXIgYXJvdW5kIGEgbGlz
dCBvZiBvYmplY3RzIHJlcHJlc2VudGF0aW5nIHRoZSBwYXN0ZWJvYXJkIGRhdGEgaW4gb3JkZXIK
KyAgICAgICAgb2YgcHJpb3JpdHksIGFuZCBhIGRpY3Rpb25hcnkgY29udGFpbmluZyBhZGRpdGlv
bmFsIE5TRGF0YSBibG9icyB0aGF0IGNvbnRhaW4gZGF0YSB1c2VmdWwgZm9yIHByaXZhdGUgY2xp
ZW50cy4KKworICAgICAgICAoK1tXZWJQYXN0ZWJvYXJkSXRlbURhdGEgaXRlbVdpdGhSZXByZXNl
bnRpbmdPYmplY3RzOmFkZGl0aW9uYWxEYXRhOl0pOgorICAgICAgICAoLVtXZWJQYXN0ZWJvYXJk
SXRlbURhdGEgaW5pdFdpdGhSZXByZXNlbnRpbmdPYmplY3RzOmFkZGl0aW9uYWxEYXRhOl0pOgor
ICAgICAgICAoLVtXZWJQYXN0ZWJvYXJkSXRlbURhdGEgcmVwcmVzZW50aW5nT2JqZWN0c10pOgor
ICAgICAgICAoLVtXZWJQYXN0ZWJvYXJkSXRlbURhdGEgYWRkaXRpb25hbERhdGFdKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6cmljaFRleHRSZXByZXNlbnRhdGlvbnNGb3JQYXN0ZWJvYXJkV2ViQ29udGVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlT2JqZWN0UmVwcmVzZW50
YXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUpOgor
CisgICAgICAgIFR3ZWFrZWQgdG8gY2hlY2sgd2hldGhlciB0aGUgcGFzdGVib2FyZCByZXNwb25k
cyB0byAtc2V0SXRlbXNGcm9tT2JqZWN0UmVwcmVzZW50YXRpb25zOi4gSWYgc28sIHVzZXMgdGhl
CisgICAgICAgIFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGVPYmplY3RSZXByZXNlbnRhdGlvbnMg
Y29kZXBhdGggdG8gd3JpdGUgZGF0YSB0byB0aGUgcGFzdGVib2FyZCwgcmVzcGVjdGluZyB0eXBl
CisgICAgICAgIHByaW9yaXR5LgorCisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92
aWRlclBhc3RlYm9hcmQubW06CisgICAgICAgICgtW1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQg
cGFzdGVib2FyZFR5cGVzXSk6CisgICAgICAgICgtW1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQg
c2V0SXRlbVByb3ZpZGVyczpdKToKKyAgICAgICAgKC1bV2ViSXRlbVByb3ZpZGVyUGFzdGVib2Fy
ZCBzZXRJdGVtc0Zyb21PYmplY3RSZXByZXNlbnRhdGlvbnM6XSk6CisKKyAgICAgICAgUmVwbGFj
ZXMgLXNldEl0ZW1zOiB3aXRoIC1zZXRJdGVtc0Zyb21PYmplY3RSZXByZXNlbnRhdGlvbnM6LCB3
aGljaCByZXNwZWN0cyB0aGUgcHJpb3JpdHkgb2YgZWFjaCBvYmplY3QKKyAgICAgICAgcmVwcmVz
ZW50YXRpb24gb2YgdGhlIGRhdGEgaW4gdGhlIHBhc3RlYm9hcmQuCisKKyAgICAgICAgKC1bV2Vi
SXRlbVByb3ZpZGVyUGFzdGVib2FyZCBzZXRJdGVtczpdKTogRGVsZXRlZC4KKwogMjAxNy0wMy0z
MSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBJbmNv
bWluZyB2aWRlbyBzb3VyY2UgZG9lc24ndCBwcm9wb2dhdGUgZnJhbWUgcm90YXRpb24KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwppbmRleCAzZmViZGRlZGI2YzIzN2RlNDMwYWJhZDNkOWI3ODZlZDE1NjEwZDhhLi4wNmZlOWZh
YzI0YThkN2NhMDdiNTQ1YTMwMGVhMjQxZGQ1OWI2Yzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTkgQEAKKzIwMTctMDQtMDMgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+
CisKKyAgICAgICAgRGF0YSBpbnRlcmFjdGlvbiBzaG91bGQgcmVnaXN0ZXIgdHlwZSBpZGVudGlm
aWVycyBpbiBvcmRlciBvZiBwcmlvcml0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTcwNDI4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMDYzMzI5
Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTZXJp
YWxpemUgUGFzdGVib2FyZFdlYkNvbnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdCB3
aGVuIHNlbmRpbmcgb3ZlciBJUEMuIFJlZmVyIHRvIFdlYkNvcmUgQ2hhbmdlTG9nCisgICAgICAg
IGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkV2ViQ29udGVu
dD46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UGFzdGVib2FyZFdlYkNv
bnRlbnQ+OjpkZWNvZGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tOgorCiAyMDE3LTAzLTMxICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29t
PgogCiAgICAgICAgIEFkZHJlc3MgcG9zdC1yZXZpZXcgZmVlZGJhY2sgYWZ0ZXIgcjIxNDY5Mgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGUxZmMxMmY5OWFkMDRmY2VhMTA2YWFkY2Q3N2I2YmY3MjFmZTRiYTEuLmJmMDlmMDg2MTM0
M2E1YTMzNTBlOTljM2VhODk2MzJmM2IzNmQ4ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTY4MjksNiArNjgyOSw3IEBACiAJ
CUY0ODIyMzEzMUUzODZFMjQwMDY2RkM3OSAvKiBBYnN0cmFjdFBhc3RlYm9hcmQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0ODIyMzEyMUUzODZFMjQw
MDY2RkM3OSAvKiBBYnN0cmFjdFBhc3RlYm9hcmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNEJGQjk4NTFFMURERjlCMDA4NjJDMjQgLyogRHVt
cEVkaXRpbmdIaXN0b3J5LmpzIGluIENvcHkgU2NyaXB0cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGNDgzODk4MzFFMURERjJCMDA3NkI3RUEgLyogRHVtcEVkaXRpbmdIaXN0
b3J5LmpzICovOyB9OwogCQlGNEJGQjk4NjFFMURERjlCMDA4NjJDMjQgLyogRWRpdGluZ0hpc3Rv
cnlVdGlsLmpzIGluIENvcHkgU2NyaXB0cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGNDgzODk4NDFFMURERjJCMDA3NkI3RUEgLyogRWRpdGluZ0hpc3RvcnlVdGlsLmpzICov
OyB9OworCQlGNEQ4MzE2MjFFOTA4QzA3MDA5NDExNzQgLyogQWJzdHJhY3RQYXN0ZWJvYXJkLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjREODMxNjEx
RTkwOEMwNzAwOTQxMTc0IC8qIEFic3RyYWN0UGFzdGVib2FyZC5tbSAqLzsgfTsKIAkJRjUwNjY0
RjcxNTdGNTJEQzAwQUMyMjZGIC8qIEZvcm1Db250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1MDY2NEY1MTU3RjUyREMwMEFDMjI2RiAv
KiBGb3JtQ29udHJvbGxlci5jcHAgKi87IH07CiAJCUY1MDY2NEY4MTU3RjUyREMwMEFDMjI2RiAv
KiBGb3JtQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjUwNjY0RjYxNTdGNTJEQzAwQUMyMjZGIC8qIEZvcm1Db250cm9sbGVyLmggKi87
IH07CiAJCUY1MTNBM0VBMTVGRjQ4NDEwMDE1MjZEQiAvKiBWYWxpZGF0aW9uTWVzc2FnZUNsaWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjUxM0Ez
RTkxNUZGNDg0MTAwMTUyNkRCIC8qIFZhbGlkYXRpb25NZXNzYWdlQ2xpZW50LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE1MzMwLDYgKzE1MzMx
LDcgQEAKIAkJRjQ4MjIzMTIxRTM4NkUyNDAwNjZGQzc5IC8qIEFic3RyYWN0UGFzdGVib2FyZC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBYnN0cmFjdFBhc3RlYm9hcmQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ4Mzg5ODMxRTFEREYyQjAwNzZCN0VBIC8q
IER1bXBFZGl0aW5nSGlzdG9yeS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsg
bmFtZSA9IER1bXBFZGl0aW5nSGlzdG9yeS5qczsgcGF0aCA9IFNjcmlwdHMvRHVtcEVkaXRpbmdI
aXN0b3J5LmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDgzODk4NDFFMURERjJC
MDA3NkI3RUEgLyogRWRpdGluZ0hpc3RvcnlVdGlsLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5q
YXZhc2NyaXB0OyBuYW1lID0gRWRpdGluZ0hpc3RvcnlVdGlsLmpzOyBwYXRoID0gU2NyaXB0cy9F
ZGl0aW5nSGlzdG9yeVV0aWwuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0RDgz
MTYxMUU5MDhDMDcwMDk0MTE3NCAvKiBBYnN0cmFjdFBhc3RlYm9hcmQubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBYnN0cmFjdFBhc3RlYm9hcmQubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY1MDY2NEY1MTU3RjUyREMwMEFDMjI2RiAvKiBGb3Jt
Q29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb3Jt
Q29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY1MDY2NEY2MTU3
RjUyREMwMEFDMjI2RiAvKiBGb3JtQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBGb3JtQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGNTEzQTNFOTE1RkY0ODQxMDAxNTI2REIgLyogVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwODYxLDYgKzIwODYzLDcgQEAKIAkJ
CWNoaWxkcmVuID0gKAogCQkJCUExNDgzMjhCMTg3RjUwNjgwMERBNjNBNiAvKiB3YWsgKi8sCiAJ
CQkJRjQ4MjIzMTIxRTM4NkUyNDAwNjZGQzc5IC8qIEFic3RyYWN0UGFzdGVib2FyZC5oICovLAor
CQkJCUY0RDgzMTYxMUU5MDhDMDcwMDk0MTE3NCAvKiBBYnN0cmFjdFBhc3RlYm9hcmQubW0gKi8s
CiAJCQkJMjY1NTQxNEIxNDg5QUEyQjAwMERGQzVEIC8qIEN1cnNvcklPUy5jcHAgKi8sCiAJCQkJ
QTFFRDc3OEExQkUzMjkzRjAwREMxNzkxIC8qIERldmljZS5jcHAgKi8sCiAJCQkJQTFFRDc3OEIx
QkUzMjk0MDAwREMxNzkxIC8qIERldmljZS5oICovLApAQCAtMzE2MjUsNiArMzE2MjgsNyBAQAog
CQkJCUE2MTQ4QTc4MTJFNDFFM0IwMDQ0QTc4NCAvKiBKU0hUTUxLZXlnZW5FbGVtZW50LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTFBRTJBQjIxMEExQ0U2M0IwMEI0MkIyNSAvKiBKU0hUTUxMYWJl
bEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFFMkFCMjMwQTFDRTYzQjAwQjQyQjI1
IC8qIEpTSFRNTExlZ2VuZEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRjREODMxNjIx
RTkwOEMwNzAwOTQxMTc0IC8qIEFic3RyYWN0UGFzdGVib2FyZC5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTFBRTJBQjI1MEExQ0U2M0IwMEI0MkIyNSAvKiBKU0hUTUxMSUVsZW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTgwRTdCMTAwQTE5RDYwNjAwN0ZCOEM1IC8qIEpTSFRNTExpbmtFbGVt
ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBRTJBQjI3MEExQ0U2M0IwMEI0MkIyNSAvKiBK
U0hUTUxNYXBFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvRWRpdG9yQ29jb2EubW0KaW5kZXggNDAyODZmNDFkMmU3MDRhYTgzMWE4NDU4YjUw
MzM1MTUzMzY4MTRhOS4uMDVjODkwODQ0NmEyNjg4ZGJlNDgwNjhmZTdhMjQ3MDM1ZGE5OTBlYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCkBAIC0xNTIs
NiArMTUyLDE0IEBAIEZyYWdtZW50QW5kUmVzb3VyY2VzIEVkaXRvcjo6Y3JlYXRlRnJhZ21lbnQo
TlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorc3Rh
dGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGFyY2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRTdHJpbmco
TlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nKQoreworICAgIGlmICghYXR0cmli
dXRlZFN0cmluZy5sZW5ndGgpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6d3JhcE5TRGF0YShbTlNLZXllZEFyY2hpdmVyIGFyY2hpdmVkRGF0YVdp
dGhSb290T2JqZWN0OmF0dHJpYnV0ZWRTdHJpbmddKTsKK30KKwogdm9pZCBFZGl0b3I6OndyaXRl
U2VsZWN0aW9uVG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQmIHBhc3RlYm9hcmQpCiB7CiAgICAgTlNB
dHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nID0gYXR0cmlidXRlZFN0cmluZ0Zyb21S
YW5nZSgqc2VsZWN0ZWRSYW5nZSgpKTsKQEAgLTE2MSw2ICsxNjksNyBAQCB2b2lkIEVkaXRvcjo6
d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoUGFzdGVib2FyZCYgcGFzdGVib2FyZCkKICAgICBj
b250ZW50LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQgPSBzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3Jt
YXQoKTsKICAgICBjb250ZW50LmRhdGFJblJURkRGb3JtYXQgPSBhdHRyaWJ1dGVkU3RyaW5nLmNv
bnRhaW5zQXR0YWNobWVudHMgPyBkYXRhSW5SVEZERm9ybWF0KGF0dHJpYnV0ZWRTdHJpbmcpIDog
bnVsbHB0cjsKICAgICBjb250ZW50LmRhdGFJblJURkZvcm1hdCA9IGRhdGFJblJURkZvcm1hdChh
dHRyaWJ1dGVkU3RyaW5nKTsKKyAgICBjb250ZW50LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3Jt
YXQgPSBhcmNoaXZlZERhdGFGb3JBdHRyaWJ1dGVkU3RyaW5nKGF0dHJpYnV0ZWRTdHJpbmcpOwog
ICAgIC8vIEZJWE1FOiBXaHkgZG9uJ3Qgd2Ugd2FudCB0aGlzIG9uIGlPUz8KICNpZiBQTEFURk9S
TShNQUMpCiAgICAgY29udGVudC5kYXRhSW5IVE1MRm9ybWF0ID0gc2VsZWN0aW9uSW5IVE1MRm9y
bWF0KCk7CkBAIC0xODAsNiArMTg5LDcgQEAgdm9pZCBFZGl0b3I6OndyaXRlU2VsZWN0aW9uKFBh
c3RlYm9hcmRXcml0ZXJEYXRhJiBwYXN0ZWJvYXJkV3JpdGVyRGF0YSkKICAgICB3ZWJDb250ZW50
LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQgPSBzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQoKTsK
ICAgICB3ZWJDb250ZW50LmRhdGFJblJURkRGb3JtYXQgPSBhdHRyaWJ1dGVkU3RyaW5nLmNvbnRh
aW5zQXR0YWNobWVudHMgPyBkYXRhSW5SVEZERm9ybWF0KGF0dHJpYnV0ZWRTdHJpbmcpIDogbnVs
bHB0cjsKICAgICB3ZWJDb250ZW50LmRhdGFJblJURkZvcm1hdCA9IGRhdGFJblJURkZvcm1hdChh
dHRyaWJ1dGVkU3RyaW5nKTsKKyAgICB3ZWJDb250ZW50LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdG
b3JtYXQgPSBhcmNoaXZlZERhdGFGb3JBdHRyaWJ1dGVkU3RyaW5nKGF0dHJpYnV0ZWRTdHJpbmcp
OwogICAgIC8vIEZJWE1FOiBXaHkgZG9uJ3Qgd2Ugd2FudCB0aGlzIG9uIGlPUz8KICNpZiBQTEFU
Rk9STShNQUMpCiAgICAgd2ViQ29udGVudC5kYXRhSW5IVE1MRm9ybWF0ID0gc2VsZWN0aW9uSW5I
VE1MRm9ybWF0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXggM2RkMDBk
M2IwZWNjYWY4MGY0YzY2YWZlZGEyZjZiYjZmYWFjNTliZC4uYjk0ZDcwYTFmNmE1MjBiMDE4MWMz
ZDIzNWJlMmZiYjhjN2RjOGI2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaApA
QCAtNjksNiArNjksNyBAQCBzdHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRlbnQgewogICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7CiAgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRh
SW5SVEZGb3JtYXQ7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0
cmluZ0Zvcm1hdDsKICAgICBTdHJpbmcgZGF0YUluSFRNTEZvcm1hdDsKICAgICBTdHJpbmcgZGF0
YUluU3RyaW5nRm9ybWF0OwogICAgIFZlY3RvcjxTdHJpbmc+IGNsaWVudFR5cGVzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgKaW5kZXggMmM1YWRj
MmQyMjZhZTNjMThmOTdiZTliMmFiZDgzMTc4ZDZhMDM2Zi4uMGQxYjRiNzM2ZDIyNGVmZGY5YzIw
Yzc0ZTgzNzIxMzJkMTk0NDljOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZFdyaXRlckRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkV3JpdGVyRGF0YS5oCkBAIC01NCw2ICs1NCw3IEBAIHB1YmxpYzoKICAgICAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKICAgICAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZGF0YUluUlRGRm9ybWF0OworICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRh
SW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OwogICAgICAgICAvLyBGSVhNRTogV2h5IGRvbid0IHdl
IHdhbnQgdGhpcyBvbiBpT1M/CiAjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICBTdHJpbmcgZGF0
YUluSFRNTEZvcm1hdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJv
YXJkLmgKaW5kZXggYmE1NDI2ZjdjZWRiYmQ1YTIzYzY1MjU3ZGFiMGE0MTM3ZDE3MDk3ZC4uMzQz
MDExODI3ODI4ODY5ZjVhMDUzNGIxNTNkZGI0OTI4ZGMyZjFmMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKQEAgLTg4LDYgKzg4LDEyIEBAIHB1Ymxp
YzoKICNlbmRpZgogCiBwcml2YXRlOgorI2lmIFBMQVRGT1JNKElPUykKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHdyaXRlT2JqZWN0UmVwcmVzZW50YXRpb25zKGNvbnN0IFBhc3RlYm9hcmRXZWJD
b250ZW50Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZU9iamVjdFJlcHJlc2VudGF0
aW9ucyhjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdy
aXRlT2JqZWN0UmVwcmVzZW50YXRpb25zKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgdGV4dCk7CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKE1BQykKICAgICBSZXRh
aW5QdHI8TlNQYXN0ZWJvYXJkPiBtX3Bhc3RlYm9hcmQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9BYnN0cmFjdFBhc3RlYm9hcmQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9BYnN0cmFjdFBhc3RlYm9hcmQuaAppbmRleCBhMWZlMDQwNTQ4
NmU0NjI4YzI2YzFkNjZlN2U0NTUzNTAyMDcxOGYwLi5lZTIyYzY4OTg0NjllNjA0NWY2MDk3ODc2
NWRhOGY4Zjc4Y2Y1YWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
QWJzdHJhY3RQYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0Fi
c3RyYWN0UGFzdGVib2FyZC5oCkBAIC0yNSwxNSArMjUsMjcgQEAKIAogI2ltcG9ydCA8Rm91bmRh
dGlvbi9Gb3VuZGF0aW9uLmg+CiAKK1dFQkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgV2ViUGFzdGVi
b2FyZEl0ZW1EYXRhIDogTlNPYmplY3QKKworKyAoaW5zdGFuY2V0eXBlKWl0ZW1XaXRoUmVwcmVz
ZW50aW5nT2JqZWN0czooTlNBcnJheSAqKXJlcHJlc2VudGluZ09iamVjdHMgYWRkaXRpb25hbERh
dGE6KE5TRGljdGlvbmFyeSAqKWFkZGl0aW9uYWxEYXRhOworCitAcHJvcGVydHkgKG5vbmF0b21p
YywgcmVhZG9ubHksIHN0cm9uZykgTlNBcnJheSAqcmVwcmVzZW50aW5nT2JqZWN0czsKK0Bwcm9w
ZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgc3Ryb25nKSBOU0RpY3Rpb25hcnkgKmFkZGl0aW9u
YWxEYXRhOworCitAZW5kCisKIEBwcm90b2NvbCBBYnN0cmFjdFBhc3RlYm9hcmQgPE5TT2JqZWN0
PgogQHJlcXVpcmVkCiAKIEBwcm9wZXJ0eSAocmVhZG9ubHksIG5vbmF0b21pYykgTlNJbnRlZ2Vy
IG51bWJlck9mSXRlbXM7CiAKIC0gKE5TQXJyYXk8TlNTdHJpbmcgKj4gKilwYXN0ZWJvYXJkVHlw
ZXM7Ci0tICh2b2lkKXNldEl0ZW1zOihOU0FycmF5ICopaXRlbXM7CiAtIChOU0FycmF5ICopZGF0
YUZvclBhc3RlYm9hcmRUeXBlOihOU1N0cmluZyAqKXBhc3RlYm9hcmRUeXBlIGluSXRlbVNldDoo
TlNJbmRleFNldCAqKWl0ZW1TZXQ7CiAtIChOU0FycmF5ICopdmFsdWVzRm9yUGFzdGVib2FyZFR5
cGU6KE5TU3RyaW5nICopcGFzdGVib2FyZFR5cGUgaW5JdGVtU2V0OihOU0luZGV4U2V0ICopaXRl
bVNldDsKIC0gKE5TSW50ZWdlciljaGFuZ2VDb3VudDsKIAorQG9wdGlvbmFsCistICh2b2lkKXNl
dEl0ZW1zRnJvbU9iamVjdFJlcHJlc2VudGF0aW9uczooTlNBcnJheTxXZWJQYXN0ZWJvYXJkSXRl
bURhdGEgKj4gKilpdGVtRGF0YTsKKy0gKHZvaWQpc2V0SXRlbXM6KE5TQXJyYXk8TlNEaWN0aW9u
YXJ5ICo+ICopaXRlbXM7CisKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9BYnN0cmFjdFBhc3RlYm9hcmQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvQWJzdHJhY3RQYXN0ZWJvYXJkLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2NmJhM2MyNGViNDllODcyMWUx
NmVhODYwNThmMTkwMDE1YTE4MDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvQWJzdHJhY3RQYXN0ZWJvYXJkLm1tCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQWJzdHJhY3RQYXN0ZWJvYXJk
LmgiCisKKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworQGludGVyZmFjZSBXZWJQYXN0ZWJv
YXJkSXRlbURhdGEgKCkKK3sKKyAgICBSZXRhaW5QdHI8TlNBcnJheT4gX3JlcHJlc2VudGluZ09i
amVjdHM7CisgICAgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gX2FkZGl0aW9uYWxEYXRhOworfQor
CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhSZXByZXNlbnRpbmdPYmplY3RzOihOU0FycmF5ICop
cmVwcmVzZW50aW5nT2JqZWN0cyBhZGRpdGlvbmFsRGF0YTooTlNEaWN0aW9uYXJ5ICopYWRkaXRp
b25hbERhdGE7CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdlYlBhc3RlYm9hcmRJdGVtRGF0
YQorCisrIChpbnN0YW5jZXR5cGUpaXRlbVdpdGhSZXByZXNlbnRpbmdPYmplY3RzOihOU0FycmF5
ICopcmVwcmVzZW50aW5nT2JqZWN0cyBhZGRpdGlvbmFsRGF0YTooTlNEaWN0aW9uYXJ5ICopYWRk
aXRpb25hbERhdGEKK3sKKyAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10gaW5pdFdpdGhSZXByZXNl
bnRpbmdPYmplY3RzOnJlcHJlc2VudGluZ09iamVjdHMgYWRkaXRpb25hbERhdGE6YWRkaXRpb25h
bERhdGFdIGF1dG9yZWxlYXNlXTsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUmVwcmVz
ZW50aW5nT2JqZWN0czooTlNBcnJheSAqKXJlcHJlc2VudGluZ09iamVjdHMgYWRkaXRpb25hbERh
dGE6KE5TRGljdGlvbmFyeSAqKWFkZGl0aW9uYWxEYXRhCit7CisgICAgaWYgKHNlbGYgPSBbc3Vw
ZXIgaW5pdF0pIHsKKyAgICAgICAgX3JlcHJlc2VudGluZ09iamVjdHMgPSByZXByZXNlbnRpbmdP
YmplY3RzOworICAgICAgICBfYWRkaXRpb25hbERhdGEgPSBhZGRpdGlvbmFsRGF0YTsKKyAgICB9
CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKE5TQXJyYXkgKilyZXByZXNlbnRpbmdPYmplY3Rz
Cit7CisgICAgcmV0dXJuIF9yZXByZXNlbnRpbmdPYmplY3RzLmdldCgpOworfQorCistIChOU0Rp
Y3Rpb25hcnkgKilhZGRpdGlvbmFsRGF0YQoreworICAgIHJldHVybiBfYWRkaXRpb25hbERhdGEu
Z2V0KCk7Cit9CisKK0BlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
UGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IGViNmIwZDJjMGJhN2VhZjMxNmZmNjBlMjZm
MzczMWJkZTkxMjJhZDEuLjU1YzljMTcwNWYzYWYyYTE1MWNmZDEwZTQwODVlYzhmNGYwZmIyZDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9h
cmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVi
b2FyZElPUy5tbQpAQCAtMzQsOCArMzQsMTAgQEAKICNpbXBvcnQgIlNvZnRMaW5raW5nLmgiCiAj
aW1wb3J0ICJXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLmgiCiAjaW1wb3J0IDxNb2JpbGVDb3Jl
U2VydmljZXMvTW9iaWxlQ29yZVNlcnZpY2VzLmg+CisjaW1wb3J0IDxVSUtpdC9VSUltYWdlLmg+
CiAKIFNPRlRfTElOS19GUkFNRVdPUksoVUlLaXQpCitTT0ZUX0xJTktfQ0xBU1MoVUlLaXQsIFVJ
SW1hZ2UpCiBTT0ZUX0xJTktfQ0xBU1MoVUlLaXQsIFVJUGFzdGVib2FyZCkKIAogQGludGVyZmFj
ZSBVSVBhc3RlYm9hcmQKQEAgLTE0Nyw5ICsxNDksOSBAQCBTdHJpbmcgUGxhdGZvcm1QYXN0ZWJv
YXJkOjp1bmlxdWVOYW1lKCkKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLXZvaWQgUGxhdGZv
cm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29udGVudCkK
K3N0YXRpYyBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiByaWNoVGV4dFJlcHJlc2VudGF0aW9uc0Zv
clBhc3RlYm9hcmRXZWJDb250ZW50KGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50JiBjb250ZW50
KQogewotICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IHJlcHJlc2VudGF0aW9ucyA9IGFkb3B0
TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CisgICAgUmV0YWluUHRyPE5T
TXV0YWJsZURpY3Rpb25hcnk+IHJlcHJlc2VudGF0aW9ucyA9IGFkb3B0TlMoW1tOU011dGFibGVE
aWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CiAKICAgICBBU1NFUlQoY29udGVudC5jbGllbnRUeXBl
cy5zaXplKCkgPT0gY29udGVudC5jbGllbnREYXRhLnNpemUoKSk7CiAgICAgZm9yIChzaXplX3Qg
aSA9IDAsIHNpemUgPSBjb250ZW50LmNsaWVudFR5cGVzLnNpemUoKTsgaSA8IHNpemU7ICsraSkK
QEAgLTE1OCw3ICsxNjAsNyBAQCB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3Qg
UGFzdGVib2FyZFdlYkNvbnRlbnQmIGNvbnRlbnQpCiAgICAgaWYgKGNvbnRlbnQuZGF0YUluV2Vi
QXJjaGl2ZUZvcm1hdCkgewogICAgICAgICBbcmVwcmVzZW50YXRpb25zIHNldFZhbHVlOihOU0Rh
dGEgKiljb250ZW50LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpLmdldCgp
IGZvcktleTpXZWJBcmNoaXZlUGJvYXJkVHlwZV07CiAgICAgICAgIC8vIEZsYWcgZm9yIFVJS2l0
IHRvIGtub3cgdGhhdCB0aGlzIGNvcHkgY29udGFpbnMgcmljaCBjb250ZW50LiBUaGlzIHdpbGwg
dHJpZ2dlciBhIHR3by1zdGVwIHBhc3RlLgotICAgICAgICBOU1N0cmluZyogd2ViSU9TUGFzdGVQ
Ym9hcmRUeXBlID0gQCJpT1MgcmljaCBjb250ZW50IHBhc3RlIHBhc3RlYm9hcmQgdHlwZSI7Cisg
ICAgICAgIE5TU3RyaW5nICp3ZWJJT1NQYXN0ZVBib2FyZFR5cGUgPSBAImlPUyByaWNoIGNvbnRl
bnQgcGFzdGUgcGFzdGVib2FyZCB0eXBlIjsKICAgICAgICAgW3JlcHJlc2VudGF0aW9ucyBzZXRW
YWx1ZTp3ZWJJT1NQYXN0ZVBib2FyZFR5cGUgZm9yS2V5OndlYklPU1Bhc3RlUGJvYXJkVHlwZV07
CiAgICAgfQogCkBAIC0xNjcsMTMgKzE2OSw3MCBAQCB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6
d3JpdGUoY29uc3QgUGFzdGVib2FyZFdlYkNvbnRlbnQmIGNvbnRlbnQpCiAgICAgaWYgKGNvbnRl
bnQuZGF0YUluUlRGRm9ybWF0KQogICAgICAgICBbcmVwcmVzZW50YXRpb25zIHNldFZhbHVlOmNv
bnRlbnQuZGF0YUluUlRGRm9ybWF0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JLZXk6KE5TU3Ry
aW5nICopa1VUVHlwZVJURl07CiAKKyAgICByZXR1cm4gcmVwcmVzZW50YXRpb25zOworfQorCit2
b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGVPYmplY3RSZXByZXNlbnRhdGlvbnMoY29uc3Qg
UGFzdGVib2FyZFdlYkNvbnRlbnQmIGNvbnRlbnQpCit7CisgICAgUmV0YWluUHRyPE5TTXV0YWJs
ZUFycmF5PiBvYmplY3RSZXByZXNlbnRhdGlvbnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkg
YWxsb2NdIGluaXRdKTsKKyAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBhZGRpdGlvbmFsRGF0
YSA9IHJpY2hUZXh0UmVwcmVzZW50YXRpb25zRm9yUGFzdGVib2FyZFdlYkNvbnRlbnQoY29udGVu
dCk7CisKKyAgICBpZiAoY29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0KSB7Cisg
ICAgICAgIE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZyA9IFtOU0tleWVkVW5h
cmNoaXZlciB1bmFyY2hpdmVPYmplY3RXaXRoRGF0YTpjb250ZW50LmRhdGFJbkF0dHJpYnV0ZWRT
dHJpbmdGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpXTsKKyAgICAgICAgaWYgKGF0dHJpYnV0
ZWRTdHJpbmcpCisgICAgICAgICAgICBbb2JqZWN0UmVwcmVzZW50YXRpb25zIGFkZE9iamVjdDph
dHRyaWJ1dGVkU3RyaW5nXTsKKyAgICB9CisKKyAgICBpZiAoIWNvbnRlbnQuZGF0YUluU3RyaW5n
Rm9ybWF0LmlzRW1wdHkoKSkKKyAgICAgICAgW29iamVjdFJlcHJlc2VudGF0aW9ucyBhZGRPYmpl
Y3Q6KE5TU3RyaW5nICopY29udGVudC5kYXRhSW5TdHJpbmdGb3JtYXRdOworCisgICAgW21fcGFz
dGVib2FyZCBzZXRJdGVtc0Zyb21PYmplY3RSZXByZXNlbnRhdGlvbnM6QFtbV2ViUGFzdGVib2Fy
ZEl0ZW1EYXRhIGl0ZW1XaXRoUmVwcmVzZW50aW5nT2JqZWN0czpvYmplY3RSZXByZXNlbnRhdGlv
bnMuZ2V0KCkgYWRkaXRpb25hbERhdGE6YWRkaXRpb25hbERhdGEuZ2V0KCldXV07Cit9CisKK3Zv
aWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkV2ViQ29udGVudCYg
Y29udGVudCkKK3sKKyAgICBpZiAoW21fcGFzdGVib2FyZCByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKHNldEl0ZW1zRnJvbU9iamVjdFJlcHJlc2VudGF0aW9uczopXSkgeworICAgICAgICB3
cml0ZU9iamVjdFJlcHJlc2VudGF0aW9ucyhjb250ZW50KTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiByZXByZXNlbnRhdGlvbnMg
PSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOworICAgIFtyZXBy
ZXNlbnRhdGlvbnMgYWRkRW50cmllc0Zyb21EaWN0aW9uYXJ5OnJpY2hUZXh0UmVwcmVzZW50YXRp
b25zRm9yUGFzdGVib2FyZFdlYkNvbnRlbnQoY29udGVudCkuYXV0b3JlbGVhc2UoKV07CiAgICAg
W3JlcHJlc2VudGF0aW9ucyBzZXRWYWx1ZTpjb250ZW50LmRhdGFJblN0cmluZ0Zvcm1hdCBmb3JL
ZXk6KE5TU3RyaW5nICopa1VUVHlwZVRleHRdOwotICAgIFtyZXByZXNlbnRhdGlvbnMgc2V0VmFs
dWU6WyhOU1N0cmluZyAqKWNvbnRlbnQuZGF0YUluU3RyaW5nRm9ybWF0IGRhdGFVc2luZ0VuY29k
aW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSBmb3JLZXk6KE5TU3RyaW5nICopa1VUVHlwZVVURjhQ
bGFpblRleHRdOworCiAgICAgW21fcGFzdGVib2FyZCBzZXRJdGVtczpAW3JlcHJlc2VudGF0aW9u
cy5nZXQoKV1dOwogfQogCit2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGVPYmplY3RSZXBy
ZXNlbnRhdGlvbnMoY29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0ZWJvYXJkSW1hZ2UpCit7Cisg
ICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBvYmplY3RSZXByZXNlbnRhdGlvbnMgPSBhZG9w
dE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICBSZXRhaW5QdHI8TlNNdXRh
YmxlRGljdGlvbmFyeT4gYWRkaXRpb25hbERhdGEgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlv
bmFyeSBhbGxvY10gaW5pdF0pOworCisgICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2UgPSBwYXN0ZWJv
YXJkSW1hZ2UuaW1hZ2UtPm5hdGl2ZUltYWdlKCkpIHsKKyAgICAgICAgVUlJbWFnZSAqdWlJbWFn
ZSA9IChVSUltYWdlICopW2dldFVJSW1hZ2VDbGFzcygpIGltYWdlV2l0aENHSW1hZ2U6bmF0aXZl
SW1hZ2UuZ2V0KCldOworICAgICAgICBpZiAodWlJbWFnZSkKKyAgICAgICAgICAgIFtvYmplY3RS
ZXByZXNlbnRhdGlvbnMgYWRkT2JqZWN0OnVpSW1hZ2VdOworICAgIH0KKworICAgIGlmICghcGFz
dGVib2FyZEltYWdlLnVybC51cmwuaXNFbXB0eSgpKSB7CisgICAgICAgIE5TVVJMICpuc1VSTCA9
IHBhc3RlYm9hcmRJbWFnZS51cmwudXJsOworICAgICAgICBpZiAobnNVUkwpCisgICAgICAgICAg
ICBbb2JqZWN0UmVwcmVzZW50YXRpb25zIGFkZE9iamVjdDpuc1VSTF07CisgICAgfQorCisgICAg
aWYgKCFwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZS5pc051bGwoKSkKKyAgICAgICAg
W2FkZGl0aW9uYWxEYXRhIHNldE9iamVjdDpwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5j
cmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JLZXk6cGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5
cGVdOworCisgICAgW21fcGFzdGVib2FyZCBzZXRJdGVtc0Zyb21PYmplY3RSZXByZXNlbnRhdGlv
bnM6QFtbV2ViUGFzdGVib2FyZEl0ZW1EYXRhIGl0ZW1XaXRoUmVwcmVzZW50aW5nT2JqZWN0czpv
YmplY3RSZXByZXNlbnRhdGlvbnMuZ2V0KCkgYWRkaXRpb25hbERhdGE6YWRkaXRpb25hbERhdGEu
Z2V0KCldXV07Cit9CisKIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0
ZWJvYXJkSW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSkKIHsKKyAgICBpZiAoW21fcGFzdGVib2FyZCBy
ZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldEl0ZW1zRnJvbU9iamVjdFJlcHJlc2VudGF0
aW9uczopXSkgeworICAgICAgICB3cml0ZU9iamVjdFJlcHJlc2VudGF0aW9ucyhwYXN0ZWJvYXJk
SW1hZ2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgUmV0YWluUHRyPE5TTXV0YWJs
ZURpY3Rpb25hcnk+IHJlcHJlc2VudGF0aW9ucyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9u
YXJ5IGFsbG9jXSBpbml0XSk7CiAgICAgaWYgKCFwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1F
VHlwZS5pc051bGwoKSkgewogICAgICAgICBbcmVwcmVzZW50YXRpb25zIHNldE9iamVjdDpwYXN0
ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JLZXk6cGFz
dGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGVdOwpAQCAtMTgyLDggKzI0MSwzMyBAQCB2b2lk
IFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0ZWJv
YXJkSW1hZ2UpCiAgICAgW21fcGFzdGVib2FyZCBzZXRJdGVtczpAW3JlcHJlc2VudGF0aW9ucy5n
ZXQoKV1dOwogfQogCit2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGVPYmplY3RSZXByZXNl
bnRhdGlvbnMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0
KQoreworICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gb2JqZWN0UmVwcmVzZW50YXRpb25z
ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CisgICAgUmV0YWluUHRy
PE5TTXV0YWJsZURpY3Rpb25hcnk+IGFkZGl0aW9uYWxEYXRhID0gYWRvcHROUyhbW05TTXV0YWJs
ZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKKworICAgIE5TU3RyaW5nICpwYXN0ZWJvYXJkVHlw
ZUFzTlNTdHJpbmcgPSBwYXN0ZWJvYXJkVHlwZTsKKyAgICBOU1N0cmluZyAqdGV4dEFzTlNTdHJp
bmcgPSB0ZXh0OworICAgIGlmICh0ZXh0QXNOU1N0cmluZyAmJiBwYXN0ZWJvYXJkVHlwZUFzTlNT
dHJpbmcubGVuZ3RoKSB7CisgICAgICAgIGlmIChVVFR5cGVDb25mb3Jtc1RvKChfX2JyaWRnZSBD
RlN0cmluZ1JlZilwYXN0ZWJvYXJkVHlwZUFzTlNTdHJpbmcsIGtVVFR5cGVVUkwpKQorICAgICAg
ICAgICAgW29iamVjdFJlcHJlc2VudGF0aW9ucyBhZGRPYmplY3Q6W1tbTlNVUkwgYWxsb2NdIGlu
aXRXaXRoU3RyaW5nOnRleHRBc05TU3RyaW5nXSBhdXRvcmVsZWFzZV1dOworCisgICAgICAgIGlm
IChVVFR5cGVDb25mb3Jtc1RvKChfX2JyaWRnZSBDRlN0cmluZ1JlZilwYXN0ZWJvYXJkVHlwZUFz
TlNTdHJpbmcsIGtVVFR5cGVUZXh0KSkKKyAgICAgICAgICAgIFtvYmplY3RSZXByZXNlbnRhdGlv
bnMgYWRkT2JqZWN0OnRleHRBc05TU3RyaW5nXTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
W2FkZGl0aW9uYWxEYXRhIHNldE9iamVjdDp0ZXh0QXNOU1N0cmluZyBmb3JLZXk6cGFzdGVib2Fy
ZFR5cGVBc05TU3RyaW5nXTsKKyAgICB9CisKKyAgICBbbV9wYXN0ZWJvYXJkIHNldEl0ZW1zRnJv
bU9iamVjdFJlcHJlc2VudGF0aW9uczpAW1tXZWJQYXN0ZWJvYXJkSXRlbURhdGEgaXRlbVdpdGhS
ZXByZXNlbnRpbmdPYmplY3RzOm9iamVjdFJlcHJlc2VudGF0aW9ucy5nZXQoKSBhZGRpdGlvbmFs
RGF0YTphZGRpdGlvbmFsRGF0YS5nZXQoKV1dXTsKK30KKwogdm9pZCBQbGF0Zm9ybVBhc3RlYm9h
cmQ6OndyaXRlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgdGV4
dCkKIHsKKyAgICBpZiAoW21fcGFzdGVib2FyZCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KHNldEl0ZW1zRnJvbU9iamVjdFJlcHJlc2VudGF0aW9uczopXSkgeworICAgICAgICB3cml0ZU9i
amVjdFJlcHJlc2VudGF0aW9ucyhwYXN0ZWJvYXJkVHlwZSwgdGV4dCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKICAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiByZXByZXNlbnRhdGlvbnMg
PSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOwogCiAgICAgaWYg
KHBhc3RlYm9hcmRUeXBlID09IFN0cmluZyhrVVRUeXBlVVJMKSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbQpp
bmRleCBhODlhYWVkY2ViM2RiNjc0ODY5MzNkZmM3NWFhYWNiNGRkYzdjZDIwLi45MjBmYWIwYmMz
ZDI5YjkzNzRmZDlhMzUyOTU3MmRjYmNlMDI4NTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbQpAQCAtODAs
NiArODAsNyBAQCBzdGF0aWMgQk9PTCBpc0ltYWdlVHlwZShOU1N0cmluZyAqdHlwZSkKIAogQGlt
cGxlbWVudGF0aW9uIFdlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQgewogICAgIFJldGFpblB0cjxO
U0FycmF5PiBfaXRlbVByb3ZpZGVyczsKKyAgICBSZXRhaW5QdHI8TlNBcnJheT4gX2NhY2hlZFR5
cGVJZGVudGlmaWVyczsKIH0KIAogKyAoaW5zdGFuY2V0eXBlKXNoYXJlZEluc3RhbmNlCkBAIC0x
MDQsMTAgKzEwNSwyMiBAQCBzdGF0aWMgQk9PTCBpc0ltYWdlVHlwZShOU1N0cmluZyAqdHlwZSkK
IAogLSAoTlNBcnJheTxOU1N0cmluZyAqPiAqKXBhc3RlYm9hcmRUeXBlcwogeworICAgIGlmIChf
Y2FjaGVkVHlwZUlkZW50aWZpZXJzKQorICAgICAgICByZXR1cm4gX2NhY2hlZFR5cGVJZGVudGlm
aWVycy5nZXQoKTsKKwogICAgIE5TTXV0YWJsZVNldDxOU1N0cmluZyAqPiAqYWxsVHlwZXMgPSBb
TlNNdXRhYmxlU2V0IHNldF07Ci0gICAgZm9yIChVSUl0ZW1Qcm92aWRlciAqcHJvdmlkZXIgaW4g
X2l0ZW1Qcm92aWRlcnMuZ2V0KCkpCi0gICAgICAgIFthbGxUeXBlcyBhZGRPYmplY3RzRnJvbUFy
cmF5OnByb3ZpZGVyLnJlZ2lzdGVyZWRUeXBlSWRlbnRpZmllcnNdOwotICAgIHJldHVybiBhbGxU
eXBlcy5hbGxPYmplY3RzOworICAgIE5TTXV0YWJsZUFycmF5PE5TU3RyaW5nICo+ICphbGxUeXBl
c0luT3JkZXIgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOworICAgIGZvciAoVUlJdGVtUHJvdmlk
ZXIgKnByb3ZpZGVyIGluIF9pdGVtUHJvdmlkZXJzLmdldCgpKSB7CisgICAgICAgIGZvciAoTlNT
dHJpbmcgKnR5cGVJZGVudGlmaWVyIGluIHByb3ZpZGVyLnJlZ2lzdGVyZWRUeXBlSWRlbnRpZmll
cnMpIHsKKyAgICAgICAgICAgIGlmIChbYWxsVHlwZXMgY29udGFpbnNPYmplY3Q6dHlwZUlkZW50
aWZpZXJdKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBbYWxsVHlw
ZXMgYWRkT2JqZWN0OnR5cGVJZGVudGlmaWVyXTsKKyAgICAgICAgICAgIFthbGxUeXBlc0luT3Jk
ZXIgYWRkT2JqZWN0OnR5cGVJZGVudGlmaWVyXTsKKyAgICAgICAgfQorICAgIH0KKyAgICBfY2Fj
aGVkVHlwZUlkZW50aWZpZXJzID0gYWxsVHlwZXNJbk9yZGVyOworICAgIHJldHVybiBfY2FjaGVk
VHlwZUlkZW50aWZpZXJzLmdldCgpOwogfQogCiAtIChOU0FycmF5PFVJSXRlbVByb3ZpZGVyICo+
ICopaXRlbVByb3ZpZGVycwpAQCAtMTIzLDYgKzEzNiw3IEBAIHN0YXRpYyBCT09MIGlzSW1hZ2VU
eXBlKE5TU3RyaW5nICp0eXBlKQogCiAgICAgX2l0ZW1Qcm92aWRlcnMgPSBpdGVtUHJvdmlkZXJz
OwogICAgIF9jaGFuZ2VDb3VudCsrOworICAgIF9jYWNoZWRUeXBlSWRlbnRpZmllcnMgPSBuaWw7
CiB9CiAKIC0gKE5TSW50ZWdlciludW1iZXJPZkl0ZW1zCkBAIC0xMzAsNDAgKzE0NCwzOCBAQCBz
dGF0aWMgQk9PTCBpc0ltYWdlVHlwZShOU1N0cmluZyAqdHlwZSkKICAgICByZXR1cm4gW19pdGVt
UHJvdmlkZXJzIGNvdW50XTsKIH0KIAotLSAodm9pZClzZXRJdGVtczooTlNBcnJheSAqKWl0ZW1z
CistICh2b2lkKXNldEl0ZW1zRnJvbU9iamVjdFJlcHJlc2VudGF0aW9uczooTlNBcnJheTxXZWJQ
YXN0ZWJvYXJkSXRlbURhdGEgKj4gKilpdGVtRGF0YQogewogICAgIE5TTXV0YWJsZUFycmF5ICpw
cm92aWRlcnMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOwotICAgIGZvciAoTlNEaWN0aW9uYXJ5
ICppdGVtIGluIGl0ZW1zKSB7Ci0gICAgICAgIGlmICghaXRlbS5jb3VudCkKKyAgICBmb3IgKFdl
YlBhc3RlYm9hcmRJdGVtRGF0YSAqZGF0YSBpbiBpdGVtRGF0YSkgeworICAgICAgICBpZiAoIWRh
dGEucmVwcmVzZW50aW5nT2JqZWN0cy5jb3VudCAmJiAhZGF0YS5hZGRpdGlvbmFsRGF0YS5jb3Vu
dCkKICAgICAgICAgICAgIGNvbnRpbnVlOworCiAgICAgICAgIFJldGFpblB0cjxVSUl0ZW1Qcm92
aWRlcj4gaXRlbVByb3ZpZGVyID0gYWRvcHROUyhbW2dldFVJSXRlbVByb3ZpZGVyQ2xhc3MoKSBh
bGxvY10gaW5pdF0pOwotICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gaXRl
bVJlcHJlc2VudGF0aW9uc0NvcHkgPSBhZG9wdE5TKFtpdGVtIG11dGFibGVDb3B5XSk7Ci0gICAg
ICAgIC8vIEZpcnN0LCBsZXQgdGhlIHBsYXRmb3JtIHdyaXRlIGFsbCB0aGUgZGVmYXVsdCBvYmpl
Y3QgdHlwZXMgaXQgY2FuIHJlY29nbml6ZSwgc3VjaCBhcyBOU1N0cmluZyBhbmQgTlNVUkwuCi0g
ICAgICAgIGZvciAoTlNTdHJpbmcgKnR5cGVJZGVudGlmaWVyIGluIFtpdGVtUmVwcmVzZW50YXRp
b25zQ29weSBhbGxLZXlzXSkgewotICAgICAgICAgICAgaWQgcmVwcmVzZW50aW5nT2JqZWN0ID0g
W2l0ZW1SZXByZXNlbnRhdGlvbnNDb3B5IG9iamVjdEZvcktleTp0eXBlSWRlbnRpZmllcl07Cisg
ICAgICAgIC8vIEZpcnN0LCByZWdpc3RlciBhbGwgcGxhdGZvcm0gb2JqZWN0cywgcHJpb3JpdGl6
aW5nIG9iamVjdHMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgYXJyYXkuCisgICAgICAgIGZvciAo
aWQgcmVwcmVzZW50aW5nT2JqZWN0IGluIGRhdGEucmVwcmVzZW50aW5nT2JqZWN0cykgewogICAg
ICAgICAgICAgaWYgKCFbcmVwcmVzZW50aW5nT2JqZWN0IGNvbmZvcm1zVG9Qcm90b2NvbDpAcHJv
dG9jb2woVUlJdGVtUHJvdmlkZXJXcml0aW5nKV0pCiAgICAgICAgICAgICAgICAgY29udGludWU7
CiAKLSAgICAgICAgICAgIGlkIDxVSUl0ZW1Qcm92aWRlcldyaXRpbmc+IG9iamVjdFRvV3JpdGUg
PSAoaWQgPFVJSXRlbVByb3ZpZGVyV3JpdGluZz4pcmVwcmVzZW50aW5nT2JqZWN0OwotICAgICAg
ICAgICAgaWYgKCFbb2JqZWN0VG9Xcml0ZS53cml0YWJsZVR5cGVJZGVudGlmaWVyc0Zvckl0ZW1Q
cm92aWRlciBjb250YWluc09iamVjdDp0eXBlSWRlbnRpZmllcl0pCi0gICAgICAgICAgICAgICAg
Y29udGludWU7Ci0KLSAgICAgICAgICAgIFtpdGVtUmVwcmVzZW50YXRpb25zQ29weSByZW1vdmVP
YmplY3RGb3JLZXk6dHlwZUlkZW50aWZpZXJdOwotICAgICAgICAgICAgW2l0ZW1Qcm92aWRlciBy
ZWdpc3Rlck9iamVjdDpvYmplY3RUb1dyaXRlIG9wdGlvbnM6bmlsXTsKKyAgICAgICAgICAgIFtp
dGVtUHJvdmlkZXIgcmVnaXN0ZXJPYmplY3Q6KGlkIDxVSUl0ZW1Qcm92aWRlcldyaXRpbmc+KXJl
cHJlc2VudGluZ09iamVjdCBvcHRpb25zOm5pbF07CiAgICAgICAgIH0KIAotICAgICAgICAvLyBT
ZWNvbmRseSwgV2ViS2l0IHVzZXMgc29tZSBjdXN0b20gdHlwZSByZXByZXNlbnRhdGlvbnMgYW5k
L29yIHR5cGUgaWRlbnRpZmllcnMsIHNvIHdlIG5lZWQgdG8gd3JpdGUgdGhlc2UgYXMgd2VsbC4K
LSAgICAgICAgZm9yIChOU1N0cmluZyAqdHlwZUlkZW50aWZpZXIgaW4gaXRlbVJlcHJlc2VudGF0
aW9uc0NvcHkuZ2V0KCkpIHsKKyAgICAgICAgLy8gTmV4dCwgcmVnaXN0ZXIgb3RoZXIgY3VzdG9t
IGRhdGEgcmVwcmVzZW50YXRpb25zIGZvciB0eXBlIGlkZW50aWZpZXJzLgorICAgICAgICBOU0Rp
Y3Rpb25hcnkgPE5TU3RyaW5nICosIE5TRGF0YSAqPiAqYWRkaXRpb25hbERhdGEgPSBkYXRhLmFk
ZGl0aW9uYWxEYXRhOworICAgICAgICBmb3IgKE5TU3RyaW5nICp0eXBlSWRlbnRpZmllciBpbiBh
ZGRpdGlvbmFsRGF0YSkgeworICAgICAgICAgICAgaWYgKCFbYWRkaXRpb25hbERhdGFbdHlwZUlk
ZW50aWZpZXJdIGlzS2luZE9mQ2xhc3M6W05TRGF0YSBjbGFzc11dKQorICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworCiAgICAgICAgICAgICBbaXRlbVByb3ZpZGVyIHJlZ2lzdGVyRGF0YVJlcHJl
c2VudGF0aW9uRm9yVHlwZUlkZW50aWZpZXI6dHlwZUlkZW50aWZpZXIgb3B0aW9uczpuaWwgbG9h
ZEhhbmRsZXI6Xk5TUHJvZ3Jlc3MgKihVSUl0ZW1Qcm92aWRlckRhdGFMb2FkQ29tcGxldGlvbkJs
b2NrIGNvbXBsZXRpb25CbG9jaykKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb21w
bGV0aW9uQmxvY2soW2l0ZW1SZXByZXNlbnRhdGlvbnNDb3B5IG9iamVjdEZvcktleTp0eXBlSWRl
bnRpZmllcl0sIG5pbCk7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkJsb2NrKGFkZGl0aW9u
YWxEYXRhW3R5cGVJZGVudGlmaWVyXSwgbmlsKTsKICAgICAgICAgICAgICAgICByZXR1cm4gW05T
UHJvZ3Jlc3MgZGlzY3JldGVQcm9ncmVzc1dpdGhUb3RhbFVuaXRDb3VudDoxMDBdOwogICAgICAg
ICAgICAgfV07CiAgICAgICAgIH0KICAgICAgICAgW3Byb3ZpZGVycyBhZGRPYmplY3Q6aXRlbVBy
b3ZpZGVyLmdldCgpXTsKICAgICB9Ci0gICAgX2NoYW5nZUNvdW50Kys7Ci0gICAgX2l0ZW1Qcm92
aWRlcnMgPSBwcm92aWRlcnM7CisKKyAgICBzZWxmLml0ZW1Qcm92aWRlcnMgPSBwcm92aWRlcnM7
CiB9CiAKIC0gKE5TQXJyYXkgKilkYXRhRm9yUGFzdGVib2FyZFR5cGU6KE5TU3RyaW5nICopcGFz
dGVib2FyZFR5cGUgaW5JdGVtU2V0OihOU0luZGV4U2V0ICopaXRlbVNldApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCBhMTkyOTU1Nzkx
MzczZDU1OTU0ZjEwYmExNjRiMGJiNGExNTRkNTZiLi43MWU3ZTdkMzgxMjEwMWJhMmZkNDg2Zjhh
MzdiNDM4ZGM1M2UwMTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmNwcApAQCAtMTQwNCw2ICsxNDA0LDcgQEAgdm9pZCBBcmd1bWVudENvZGVy
PFBhc3RlYm9hcmRXZWJDb250ZW50Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFBh
c3RlYm8KICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgY29udGVudC5kYXRhSW5XZWJB
cmNoaXZlRm9ybWF0LmdldCgpKTsKICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgY29u
dGVudC5kYXRhSW5SVEZERm9ybWF0LmdldCgpKTsKICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5j
b2RlciwgY29udGVudC5kYXRhSW5SVEZGb3JtYXQuZ2V0KCkpOworICAgIGVuY29kZVNoYXJlZEJ1
ZmZlcihlbmNvZGVyLCBjb250ZW50LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQuZ2V0KCkp
OwogCiAgICAgZW5jb2RlciA8PCBjb250ZW50LmNsaWVudFR5cGVzOwogICAgIGVuY29kZXIgPDwg
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KGNvbnRlbnQuY2xpZW50RGF0YS5zaXplKCkpOwpAQCAtMTQy
Myw2ICsxNDI0LDggQEAgYm9vbCBBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRXZWJDb250ZW50Pjo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFBhc3RlYm9hcmRXZWIKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGNvbnRlbnQuZGF0YUlu
UlRGRm9ybWF0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2RlU2hhcmVk
QnVmZmVyKGRlY29kZXIsIGNvbnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvbnRlbnQuY2xp
ZW50VHlwZXMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgdWludDY0X3QgY2xpZW50RGF0
YVNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tCmluZGV4IGM4NDJkOGVkMzZkNWNhYTc0ZTk0N2QzMDRiMzg2NTUyZTQ1MzA3NWEuLjExODc3
Y2IzMDZiMzllN2QxN2FkNzdhZjdlMmNlMzRiMTZjMGUxMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC01Mzc4LDYgKzUzNzgsOCBA
QCBzdGF0aWMgV2ViQ29yZTo6VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiB0b1VzZXJJbnRl
cmZhY2VMYXlvdXREaXJlY3Rpb24oVUlTZQogICAgIFdlYktpdDo6Vmlld1NuYXBzaG90U3RvcmU6
OnNpbmdsZXRvbigpLnNldERpc2FibGVTbmFwc2hvdFZvbGF0aWxpdHlGb3JUZXN0aW5nKHRydWUp
OwogfQogCisjaWYgUExBVEZPUk0oSU9TKQorCiAtICh2b2lkKV9zaW11bGF0ZURhdGFJbnRlcmFj
dGlvbkVudGVyZWQ6KGlkKWluZm8KIHsKICNpZiBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikKQEAg
LTU0MzYsNiArNTQzOCw4IEBAIHN0YXRpYyBXZWJDb3JlOjpVc2VySW50ZXJmYWNlTGF5b3V0RGly
ZWN0aW9uIHRvVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbihVSVNlCiAjZW5kaWYKIH0KIAor
I2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKwogQGVuZAogCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkMzI4NGRmY2RjYzMwNmNkMDhmMGYwZjM3
NWQ3N2YwNzU5NTAzYTMyLi5hZGM2NjNkNjBjYTAyOGRlNGIzMjY4ZjAxNzAyMzhjMTgzZmRlMGRh
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjQgQEAKKzIwMTctMDQtMDMgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBs
ZS5jb20+CisKKyAgICAgICAgRGF0YSBpbnRlcmFjdGlvbiBzaG91bGQgcmVnaXN0ZXIgdHlwZSBp
ZGVudGlmaWVycyBpbiBvcmRlciBvZiBwcmlvcml0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwNDI4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8z
MDYzMzI5Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBdWdtZW50cyBleGlzdGluZyB1bml0IHRlc3RzIHRvIGNoZWNrIGZvciB0aGUgZXhpc3RlbmNl
IGFuZCBwcmlvcml0eSBvZiB0eXBlIGlkZW50aWZpZXJzIGluIHRoZSBVSUl0ZW1Qcm92aWRlcnMK
KyAgICAgICAgY3JlYXRlZCB1cG9uIHN0YXJ0aW5nIGRhdGEgaW50ZXJhY3Rpb24uIEFsc28gZml4
ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiBvbmUgb2YgdGhlIHVuaXQgdGVzdHMgYW5kIGFkZHMgYSBu
ZXcgdW5pdAorICAgICAgICB0ZXN0IGZvciBkYXRhIGludGVyYWN0aW9uIGZyb20gYSB0ZXh0YXJl
YSB0byBhbiBpbnB1dC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0RhdGFJ
bnRlcmFjdGlvblRlc3RzLm1tOgorICAgICAgICAoY2hlY2tUeXBlSWRlbnRpZmllclByZWNlZGVz
T3RoZXJUeXBlSWRlbnRpZmllcik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL2lvcy9EYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IuaDoKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL2lvcy9EYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IubW06Cisg
ICAgICAgICgtW0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBfYWR2YW5jZVByb2dyZXNzXSk6Cisg
ICAgICAgICgtW0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBzb3VyY2VJdGVtUHJvdmlkZXJzXSk6
CisgICAgICAgICgtW0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBfd2ViVmlldzpzaG93Q3VzdG9t
U2hlZXRGb3JFbGVtZW50Ol0pOgorCiAyMDE3LTAzLTMxICBUaW0gSG9ydG9uICA8dGltb3RoeV9o
b3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIE1haWwgY2FuIGdldCBzdHVjayB1bmRlcm5lYXRo
IEZpbmRDb250cm9sbGVyOjpmaW5kU3RyaW5nTWF0Y2hlcyBhZnRlciBzZWFyY2hpbmcgaW4gYSBs
b25nIG1lc3NhZ2UKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0Rh
dGFJbnRlcmFjdGlvblRlc3RzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRGF0
YUludGVyYWN0aW9uVGVzdHMubW0KaW5kZXggODhiNWNhZDA1NzA0M2RjODk5Y2M5YzNiY2FmYmE0
YmQxYzkwMWFmMi4uOGYzYmNkMmNkNGU0NThkZGNiNTRlMmZhMzM3YzA4NTJhODMzNDczNyAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRGF0YUludGVyYWN0aW9uVGVz
dHMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRGF0YUludGVyYWN0aW9u
VGVzdHMubW0KQEAgLTYyLDYgKzYyLDE0IEBAIHN0YXRpYyB2b2lkIGNoZWNrU2VsZWN0aW9uUmVj
dHNXaXRoTG9nZ2luZyhOU0FycmF5ICpleHBlY3RlZCwgTlNBcnJheSAqb2JzZXJ2ZWQpCiAgICAg
RVhQRUNUX1RSVUUoW2V4cGVjdGVkIGlzRXF1YWxUb0FycmF5Om9ic2VydmVkXSk7CiB9CiAKK3N0
YXRpYyB2b2lkIGNoZWNrVHlwZUlkZW50aWZpZXJQcmVjZWRlc090aGVyVHlwZUlkZW50aWZpZXIo
RGF0YUludGVyYWN0aW9uU2ltdWxhdG9yICpzaW11bGF0b3IsIE5TU3RyaW5nICpmaXJzdFR5cGUs
IE5TU3RyaW5nICpzZWNvbmRUeXBlKQoreworICAgIE5TQXJyYXkgKnJlZ2lzdGVyZWRUeXBlcyA9
IFtzaW11bGF0b3Iuc291cmNlSXRlbVByb3ZpZGVycy5maXJzdE9iamVjdCByZWdpc3RlcmVkVHlw
ZUlkZW50aWZpZXJzXTsKKyAgICBFWFBFQ1RfVFJVRShbcmVnaXN0ZXJlZFR5cGVzIGNvbnRhaW5z
T2JqZWN0OmZpcnN0VHlwZV0pOworICAgIEVYUEVDVF9UUlVFKFtyZWdpc3RlcmVkVHlwZXMgY29u
dGFpbnNPYmplY3Q6c2Vjb25kVHlwZV0pOworICAgIEVYUEVDVF9UUlVFKFtyZWdpc3RlcmVkVHlw
ZXMgaW5kZXhPZk9iamVjdDpmaXJzdFR5cGVdIDwgW3JlZ2lzdGVyZWRUeXBlcyBpbmRleE9mT2Jq
ZWN0OnNlY29uZFR5cGVdKTsKK30KKwogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBURVNU
KERhdGFJbnRlcmFjdGlvblRlc3RzLCBJbWFnZVRvQ29udGVudEVkaXRhYmxlKQpAQCAtNzksNiAr
ODcsNyBAQCBURVNUKERhdGFJbnRlcmFjdGlvblRlc3RzLCBJbWFnZVRvQ29udGVudEVkaXRhYmxl
KQogICAgIEVYUEVDVF9UUlVFKFtvYnNlcnZlZEV2ZW50TmFtZXMgY29udGFpbnNPYmplY3Q6RGF0
YUludGVyYWN0aW9uT3ZlckV2ZW50TmFtZV0pOwogICAgIEVYUEVDVF9UUlVFKFtvYnNlcnZlZEV2
ZW50TmFtZXMgY29udGFpbnNPYmplY3Q6RGF0YUludGVyYWN0aW9uUGVyZm9ybU9wZXJhdGlvbkV2
ZW50TmFtZV0pOwogICAgIGNoZWNrU2VsZWN0aW9uUmVjdHNXaXRoTG9nZ2luZyhAWyBtYWtlQ0dS
ZWN0VmFsdWUoMSwgMjAxLCAyMTUsIDE3NCkgXSwgW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBm
aW5hbFNlbGVjdGlvblJlY3RzXSk7CisgICAgY2hlY2tUeXBlSWRlbnRpZmllclByZWNlZGVzT3Ro
ZXJUeXBlSWRlbnRpZmllcihkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IuZ2V0KCksIChOU1N0cmlu
ZyAqKWtVVFR5cGVQTkcsIChOU1N0cmluZyAqKWtVVFR5cGVGaWxlVVJMKTsKIH0KIAogVEVTVChE
YXRhSW50ZXJhY3Rpb25UZXN0cywgSW1hZ2VUb1RleHRhcmVhKQpAQCAtOTksNiArMTA4LDcgQEAg
VEVTVChEYXRhSW50ZXJhY3Rpb25UZXN0cywgSW1hZ2VUb1RleHRhcmVhKQogCiAgICAgTlNBcnJh
eSAqZXhwZWN0ZWRTZWxlY3Rpb25SZWN0cyA9IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6bWFr
ZUNHUmVjdFZhbHVlKDYsIDIwMywgMTg4LCAxNCksIG1ha2VDR1JlY3RWYWx1ZSg2LCAyMTcsIDE4
OCwgMTQpLCBtYWtlQ0dSZWN0VmFsdWUoNiwgMjMxLCA2NiwgMTQpLCBuaWxdOwogICAgIGNoZWNr
U2VsZWN0aW9uUmVjdHNXaXRoTG9nZ2luZyhleHBlY3RlZFNlbGVjdGlvblJlY3RzLCBbZGF0YUlu
dGVyYWN0aW9uU2ltdWxhdG9yIGZpbmFsU2VsZWN0aW9uUmVjdHNdKTsKKyAgICBjaGVja1R5cGVJ
ZGVudGlmaWVyUHJlY2VkZXNPdGhlclR5cGVJZGVudGlmaWVyKGRhdGFJbnRlcmFjdGlvblNpbXVs
YXRvci5nZXQoKSwgKE5TU3RyaW5nICopa1VUVHlwZVBORywgKE5TU3RyaW5nICopa1VUVHlwZUZp
bGVVUkwpOwogfQogCiBURVNUKERhdGFJbnRlcmFjdGlvblRlc3RzLCBDb250ZW50RWRpdGFibGVU
b0NvbnRlbnRFZGl0YWJsZSkKQEAgLTExNyw2ICsxMjcsNyBAQCBURVNUKERhdGFJbnRlcmFjdGlv
blRlc3RzLCBDb250ZW50RWRpdGFibGVUb0NvbnRlbnRFZGl0YWJsZSkKICAgICBFWFBFQ1RfVFJV
RShbb2JzZXJ2ZWRFdmVudE5hbWVzIGNvbnRhaW5zT2JqZWN0OkRhdGFJbnRlcmFjdGlvbk92ZXJF
dmVudE5hbWVdKTsKICAgICBFWFBFQ1RfVFJVRShbb2JzZXJ2ZWRFdmVudE5hbWVzIGNvbnRhaW5z
T2JqZWN0OkRhdGFJbnRlcmFjdGlvblBlcmZvcm1PcGVyYXRpb25FdmVudE5hbWVdKTsKICAgICBj
aGVja1NlbGVjdGlvblJlY3RzV2l0aExvZ2dpbmcoQFsgbWFrZUNHUmVjdFZhbHVlKDEsIDIwMSwg
OTYxLCAyMjcpIF0sIFtkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgZmluYWxTZWxlY3Rpb25SZWN0
c10pOworICAgIGNoZWNrVHlwZUlkZW50aWZpZXJQcmVjZWRlc090aGVyVHlwZUlkZW50aWZpZXIo
ZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yLmdldCgpLCAoTlNTdHJpbmcgKilrVVRUeXBlUlRGRCwg
KE5TU3RyaW5nICopa1VUVHlwZVVURjhQbGFpblRleHQpOwogfQogCiBURVNUKERhdGFJbnRlcmFj
dGlvblRlc3RzLCBDb250ZW50RWRpdGFibGVUb1RleHRhcmVhKQpAQCAtMTM1LDYgKzE0NiwyMCBA
QCBURVNUKERhdGFJbnRlcmFjdGlvblRlc3RzLCBDb250ZW50RWRpdGFibGVUb1RleHRhcmVhKQog
ICAgIEVYUEVDVF9UUlVFKFtvYnNlcnZlZEV2ZW50TmFtZXMgY29udGFpbnNPYmplY3Q6RGF0YUlu
dGVyYWN0aW9uT3ZlckV2ZW50TmFtZV0pOwogICAgIEVYUEVDVF9UUlVFKFtvYnNlcnZlZEV2ZW50
TmFtZXMgY29udGFpbnNPYmplY3Q6RGF0YUludGVyYWN0aW9uUGVyZm9ybU9wZXJhdGlvbkV2ZW50
TmFtZV0pOwogICAgIGNoZWNrU2VsZWN0aW9uUmVjdHNXaXRoTG9nZ2luZyhAWyBtYWtlQ0dSZWN0
VmFsdWUoNiwgMjAzLCA5OTAsIDIzMikgXSwgW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBmaW5h
bFNlbGVjdGlvblJlY3RzXSk7CisgICAgY2hlY2tUeXBlSWRlbnRpZmllclByZWNlZGVzT3RoZXJU
eXBlSWRlbnRpZmllcihkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IuZ2V0KCksIChOU1N0cmluZyAq
KWtVVFR5cGVSVEZELCAoTlNTdHJpbmcgKilrVVRUeXBlVVRGOFBsYWluVGV4dCk7Cit9CisKK1RF
U1QoRGF0YUludGVyYWN0aW9uVGVzdHMsIFRleHRBcmVhVG9JbnB1dCkKK3sKKyAgICBSZXRhaW5Q
dHI8VGVzdFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7CisgICAgW3dlYlZp
ZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAidGV4dGFyZWEtdG8taW5wdXQiXTsK
KworICAgIFJldGFpblB0cjxEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3I+IGRhdGFJbnRlcmFjdGlv
blNpbXVsYXRvciA9IGFkb3B0TlMoW1tEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgYWxsb2NdIGlu
aXRXaXRoV2ViVmlldzp3ZWJWaWV3LmdldCgpXSk7CisgICAgW2RhdGFJbnRlcmFjdGlvblNpbXVs
YXRvciBydW5Gcm9tOkNHUG9pbnRNYWtlKDEwMCwgNTApIHRvOkNHUG9pbnRNYWtlKDEwMCwgMzAw
KV07CisKKyAgICBFWFBFQ1RfRVEoW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlw
dDpAInNvdXJjZS52YWx1ZSJdLmxlbmd0aCwgMFVMKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIkhl
bGxvIHdvcmxkIiwgW3dlYlZpZXcgZWRpdG9yVmFsdWVdLlVURjhTdHJpbmcpOworICAgIGNoZWNr
U2VsZWN0aW9uUmVjdHNXaXRoTG9nZ2luZyhAWyBtYWtlQ0dSZWN0VmFsdWUoMTAxLCAyNDEsIDk5
MCwgMjMyKSBdLCBbZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIGZpbmFsU2VsZWN0aW9uUmVjdHNd
KTsKIH0KIAogVEVTVChEYXRhSW50ZXJhY3Rpb25UZXN0cywgTGlua1RvSW5wdXQpCkBAIC0xNTIs
NiArMTc3LDcgQEAgVEVTVChEYXRhSW50ZXJhY3Rpb25UZXN0cywgTGlua1RvSW5wdXQpCiAgICAg
RVhQRUNUX1RSVUUoW29ic2VydmVkRXZlbnROYW1lcyBjb250YWluc09iamVjdDpEYXRhSW50ZXJh
Y3Rpb25PdmVyRXZlbnROYW1lXSk7CiAgICAgRVhQRUNUX1RSVUUoW29ic2VydmVkRXZlbnROYW1l
cyBjb250YWluc09iamVjdDpEYXRhSW50ZXJhY3Rpb25QZXJmb3JtT3BlcmF0aW9uRXZlbnROYW1l
XSk7CiAgICAgY2hlY2tTZWxlY3Rpb25SZWN0c1dpdGhMb2dnaW5nKEBbIG1ha2VDR1JlY3RWYWx1
ZSgxMDEsIDI3MywgMjA1NywgMjMyKSBdLCBbZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIGZpbmFs
U2VsZWN0aW9uUmVjdHNdKTsKKyAgICBjaGVja1R5cGVJZGVudGlmaWVyUHJlY2VkZXNPdGhlclR5
cGVJZGVudGlmaWVyKGRhdGFJbnRlcmFjdGlvblNpbXVsYXRvci5nZXQoKSwgKE5TU3RyaW5nICop
a1VUVHlwZVVSTCwgKE5TU3RyaW5nICopa1VUVHlwZVVURjhQbGFpblRleHQpOwogfQogCiBURVNU
KERhdGFJbnRlcmFjdGlvblRlc3RzLCBCYWNrZ3JvdW5kSW1hZ2VMaW5rVG9JbnB1dCkKQEAgLTE2
OSw2ICsxOTUsNyBAQCBURVNUKERhdGFJbnRlcmFjdGlvblRlc3RzLCBCYWNrZ3JvdW5kSW1hZ2VM
aW5rVG9JbnB1dCkKICAgICBFWFBFQ1RfVFJVRShbb2JzZXJ2ZWRFdmVudE5hbWVzIGNvbnRhaW5z
T2JqZWN0OkRhdGFJbnRlcmFjdGlvbk92ZXJFdmVudE5hbWVdKTsKICAgICBFWFBFQ1RfVFJVRShb
b2JzZXJ2ZWRFdmVudE5hbWVzIGNvbnRhaW5zT2JqZWN0OkRhdGFJbnRlcmFjdGlvblBlcmZvcm1P
cGVyYXRpb25FdmVudE5hbWVdKTsKICAgICBjaGVja1NlbGVjdGlvblJlY3RzV2l0aExvZ2dpbmco
QFsgbWFrZUNHUmVjdFZhbHVlKDEwMSwgMjQxLCAyMDU3LCAyMzIpIF0sIFtkYXRhSW50ZXJhY3Rp
b25TaW11bGF0b3IgZmluYWxTZWxlY3Rpb25SZWN0c10pOworICAgIGNoZWNrVHlwZUlkZW50aWZp
ZXJQcmVjZWRlc090aGVyVHlwZUlkZW50aWZpZXIoZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yLmdl
dCgpLCAoTlNTdHJpbmcgKilrVVRUeXBlVVJMLCAoTlNTdHJpbmcgKilrVVRUeXBlVVRGOFBsYWlu
VGV4dCk7CiB9CiAKIFRFU1QoRGF0YUludGVyYWN0aW9uVGVzdHMsIENhblByZXZlbnRTdGFydCkK
QEAgLTI5OCw2ICszMjUsNyBAQCBURVNUKERhdGFJbnRlcmFjdGlvblRlc3RzLCBMYXJnZUltYWdl
VG9UYXJnZXREaXYpCiAgICAgUmV0YWluUHRyPERhdGFJbnRlcmFjdGlvblNpbXVsYXRvcj4gZGF0
YUludGVyYWN0aW9uU2ltdWxhdG9yID0gYWRvcHROUyhbW0RhdGFJbnRlcmFjdGlvblNpbXVsYXRv
ciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3OndlYlZpZXcuZ2V0KCldKTsKICAgICBbZGF0YUludGVy
YWN0aW9uU2ltdWxhdG9yIHJ1bkZyb206Q0dQb2ludE1ha2UoMjAwLCA0MDApIHRvOkNHUG9pbnRN
YWtlKDIwMCwgMTUwKV07CiAgICAgRVhQRUNUX1dLX1NUUkVRKCJQQVNTIiwgW3dlYlZpZXcgc3Ry
aW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInRhcmdldC50ZXh0Q29udGVudCJdLlVURjhTdHJp
bmcpOworICAgIGNoZWNrVHlwZUlkZW50aWZpZXJQcmVjZWRlc090aGVyVHlwZUlkZW50aWZpZXIo
ZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yLmdldCgpLCAoTlNTdHJpbmcgKilrVVRUeXBlUE5HLCAo
TlNTdHJpbmcgKilrVVRUeXBlRmlsZVVSTCk7CiB9CiAKIFRFU1QoRGF0YUludGVyYWN0aW9uVGVz
dHMsIExpbmtXaXRoRW1wdHlIUkVGKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9p
b3MvRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9E
YXRhSW50ZXJhY3Rpb25TaW11bGF0b3IuaAppbmRleCBmYTExMGE2ZGY3ZThiMjcxMzlkZWM0OWQ2
MWIwZDRiYzUyNDYyN2NhLi4zMzZiZGZkODkxNTU2YzMxMTc2ODgzNjU3MmJjMDU1YjZlYzE3ZmVm
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9EYXRhSW50ZXJhY3Rpb25TaW11
bGF0b3IuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9EYXRhSW50ZXJhY3Rpb25TaW11
bGF0b3IuaApAQCAtNTUsNiArNTUsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBEYXRh
SW50ZXJhY3Rpb25QaGFzZSkgewogICAgIFJldGFpblB0cjxNb2NrRGF0YU9wZXJhdGlvblNlc3Np
b24+IF9kYXRhT3BlcmF0aW9uU2Vzc2lvbjsKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+
IF9vYnNlcnZlZEV2ZW50TmFtZXM7CiAgICAgUmV0YWluUHRyPFVJSXRlbVByb3ZpZGVyPiBfZXh0
ZXJuYWxJdGVtUHJvdmlkZXI7CisgICAgUmV0YWluUHRyPE5TQXJyYXkgKj4gX3NvdXJjZUl0ZW1Q
cm92aWRlcnM7CiAgICAgUmV0YWluUHRyPE5TQXJyYXkgKj4gX2ZpbmFsU2VsZWN0aW9uUmVjdHM7
CiAgICAgQ0dQb2ludCBfc3RhcnRMb2NhdGlvbjsKICAgICBDR1BvaW50IF9lbmRMb2NhdGlvbjsK
QEAgLTcxLDYgKzcyLDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgRGF0YUludGVyYWN0
aW9uUGhhc2UpIHsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCbG9ja1B0cjxCT09MKF9XS0FjdGl2
YXRlZEVsZW1lbnRJbmZvICopPiBzaG93Q3VzdG9tQWN0aW9uU2hlZXRCbG9jazsKIEBwcm9wZXJ0
eSAobm9uYXRvbWljKSBCbG9ja1B0cjxOU0FycmF5ICooTlNBcnJheSAqKT4gY29udmVydEl0ZW1Q
cm92aWRlcnNCbG9jazsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzdHJvbmcpIFVJSXRlbVByb3Zp
ZGVyICpleHRlcm5hbEl0ZW1Qcm92aWRlcjsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25s
eSkgTlNBcnJheSAqc291cmNlSXRlbVByb3ZpZGVyczsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBy
ZWFkb25seSkgTlNBcnJheSAqb2JzZXJ2ZWRFdmVudE5hbWVzOwogQHByb3BlcnR5IChub25hdG9t
aWMsIHJlYWRvbmx5KSBOU0FycmF5ICpmaW5hbFNlbGVjdGlvblJlY3RzOwogQHByb3BlcnR5IChu
b25hdG9taWMsIHJlYWRvbmx5KSBEYXRhSW50ZXJhY3Rpb25QaGFzZSBwaGFzZTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvci5tbSBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvci5tbQppbmRl
eCAxM2Y0YTBiZmE4NWZhOGQ2NjA1MmRiZjhjMTVlM2E3ZmUwZDE0ZTM1Li5hZTE2YzlkODg0NjQ2
NWJkNmE1M2EwNDg5MDEyODYwYTQwNzBiZmI4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL2lvcy9EYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IubW0KKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9pb3MvRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yLm1tCkBAIC0yMDIsMTAgKzIwMiwxNCBA
QCBzdGF0aWMgTlNBcnJheSAqZGF0YUludGVyYWN0aW9uRXZlbnROYW1lcygpCiAKICAgICAgICAg
X2RhdGFPcGVyYXRpb25TZXNzaW9uID0gYWRvcHROUyhbW01vY2tEYXRhT3BlcmF0aW9uU2Vzc2lv
biBhbGxvY10gaW5pdFdpdGhQcm92aWRlcjppdGVtUHJvdmlkZXJzLmZpcnN0T2JqZWN0IGxvY2F0
aW9uOnNlbGYuX2N1cnJlbnRMb2NhdGlvbiB3aW5kb3c6W193ZWJWaWV3IHdpbmRvd11dKTsKICAg
ICAgICAgW19kYXRhSW50ZXJhY3Rpb25TZXNzaW9uIHNldEl0ZW1zOml0ZW1zXTsKLSAgICAgICAg
aWYgKCFzZWxmLnNob3dDdXN0b21BY3Rpb25TaGVldEJsb2NrKSB7Ci0gICAgICAgICAgICBbX3dl
YlZpZXcgX3NpbXVsYXRlV2lsbEJlZ2luRGF0YUludGVyYWN0aW9uV2l0aFNlc3Npb246X2RhdGFJ
bnRlcmFjdGlvblNlc3Npb24uZ2V0KCldOwotICAgICAgICAgICAgX3BoYXNlID0gRGF0YUludGVy
YWN0aW9uQmVnYW47CisgICAgICAgIF9zb3VyY2VJdGVtUHJvdmlkZXJzID0gaXRlbVByb3ZpZGVy
czsKKyAgICAgICAgaWYgKHNlbGYuc2hvd0N1c3RvbUFjdGlvblNoZWV0QmxvY2spIHsKKyAgICAg
ICAgICAgIC8vIERlZmVyIHByb2dyZXNzIHVudGlsIHRoZSBjdXN0b20gYWN0aW9uIHNoZWV0IGlz
IGRpc21pc3NlZC4KKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorCisgICAgICAgIFtf
d2ViVmlldyBfc2ltdWxhdGVXaWxsQmVnaW5EYXRhSW50ZXJhY3Rpb25XaXRoU2Vzc2lvbjpfZGF0
YUludGVyYWN0aW9uU2Vzc2lvbi5nZXQoKV07CisgICAgICAgIF9waGFzZSA9IERhdGFJbnRlcmFj
dGlvbkJlZ2FuOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBEYXRhSW50ZXJhY3Rp
b25CZWdhbjoKQEAgLTIzNSw2ICsyMzksMTEgQEAgc3RhdGljIE5TQXJyYXkgKmRhdGFJbnRlcmFj
dGlvbkV2ZW50TmFtZXMoKQogICAgIFtzZWxmIHBlcmZvcm1TZWxlY3RvcjpAc2VsZWN0b3IoX2Fk
dmFuY2VQcm9ncmVzcykgd2l0aE9iamVjdDpuaWwgYWZ0ZXJEZWxheTpwcm9ncmVzc1RpbWVTdGVw
XTsKIH0KIAorLSAoTlNBcnJheSAqKXNvdXJjZUl0ZW1Qcm92aWRlcnMKK3sKKyAgICByZXR1cm4g
X3NvdXJjZUl0ZW1Qcm92aWRlcnMuZ2V0KCk7Cit9CisKIC0gKFVJSXRlbVByb3ZpZGVyICopZXh0
ZXJuYWxJdGVtUHJvdmlkZXIKIHsKICAgICByZXR1cm4gX2V4dGVybmFsSXRlbVByb3ZpZGVyLmdl
dCgpOwpAQCAtMjc0LDYgKzI4Myw3IEBAIHN0YXRpYyBOU0FycmF5ICpkYXRhSW50ZXJhY3Rpb25F
dmVudE5hbWVzKCkKICAgICAgICAgRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yICp3ZWFrU2VsZiA9
IHN0cm9uZ1NlbGYuZ2V0KCk7CiAgICAgICAgIFt3ZWFrU2VsZi0+X3dlYlZpZXcgX3NpbXVsYXRl
V2lsbEJlZ2luRGF0YUludGVyYWN0aW9uV2l0aFNlc3Npb246d2Vha1NlbGYtPl9kYXRhSW50ZXJh
Y3Rpb25TZXNzaW9uLmdldCgpXTsKICAgICAgICAgd2Vha1NlbGYtPl9waGFzZSA9IERhdGFJbnRl
cmFjdGlvbkJlZ2FuOworICAgICAgICBbd2Vha1NlbGYgX3NjaGVkdWxlQWR2YW5jZVByb2dyZXNz
XTsKICAgICB9KTsKIAogICAgIHJldHVybiBzZWxmLnNob3dDdXN0b21BY3Rpb25TaGVldEJsb2Nr
KGVsZW1lbnQpOwo=
</data>
<flag name="review"
          id="327513"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>306146</attachid>
            <date>2017-04-03 17:28:45 -0700</date>
            <delta_ts>2017-04-03 18:28:54 -0700</delta_ts>
            <desc>Fix Mac build</desc>
            <filename>bug-170428-20170403172844.patch</filename>
            <type>text/plain</type>
            <size>40601</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0Njk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzMxODUyMTA1ZGFmZDg0
ZWYwNDE4ZmExZDIzNmEzM2JhOTRlMTI5OS4uNjc5ODk3ZWVmNzdiYzhlNDJmZWVkMWExNjY4YmI1
M2IzOTVjOWQ2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDE3LTA0LTAzICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIERhdGEgaW50ZXJh
Y3Rpb24gc2hvdWxkIHJlZ2lzdGVyIHR5cGUgaWRlbnRpZmllcnMgaW4gb3JkZXIgb2YgcHJpb3Jp
dHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDQy
OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzA2MzMyOTY+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3VycmVudGx5LCBkdWUgdG8gdGhlIHNoYXJl
ZCBsb2dpYyBmb3Igd3JpdGluZyB0byBhIFVJUGFzdGVib2FyZCAoaW4gdGhlIGNhc2Ugb2YgY29w
eS9wYXN0ZSkgYW5kIHRoZSBzaGFyZWQKKyAgICAgICAgVUlJdGVtUHJvdmlkZXItYmFzZWQgcGFz
dGVib2FyZCB3cmFwcGVyIChpbiB0aGUgY2FzZSBvZiBkYXRhIGludGVyYWN0aW9uKSwgd2UgZG9u
J3QgZW5mb3JjZSBhbnkgcGFydGljdWxhcgorICAgICAgICBvcmRlcmluZyBpbiB3aGljaCB0eXBl
IGlkZW50aWZpZXJzIGFyZSByZWdpc3RlcmVkIGluIHRoZSBnZW5lcmF0ZWQgaXRlbSBwcm92aWRl
ci4gVGhpcyBpcyBiZWNhdXNlCisgICAgICAgIC1bVUlQYXN0ZWJvYXJkIHNldEl0ZW1zOl0gb25s
eSB0YWtlcyBhbiB1bm9yZGVyZWQgbWFwcGluZyBvZiB0eXBlIGlkZW50aWZpZXJzIHRvIG9iamVj
dHMuCisKKyAgICAgICAgVG8gZml4IHRoaXMsIHdlIGludHJvZHVjZSBhIHNlcGFyYXRlIHdheSB0
byBzZXQgcGFzdGVib2FyZCBkYXRhIHRoYXQgZmlyc3Qgd3JpdGVzIGEgbGlzdCBvZiBvYmplY3QK
KyAgICAgICAgcmVwcmVzZW50YXRpb25zIGluIG9yZGVyIG9mIHByaW9yaXR5ICh3aGljaCBpcyBk
ZXBlbmRlbnQgb24gdGhlIGNvbnRlbnQgYmVpbmcgaW50ZXJhY3RlZCB3aXRoKSBhbmQgdGhlbiBy
ZWdpc3RlcgorICAgICAgICBpbmRpdmlkdWFsIHR5cGUtZGF0YSBtYXBwaW5ncyBhdCB0aGUgZW5k
LgorCisgICAgICAgIEF1Z21lbnRlZCBleGlzdGluZyBBUEkgdGVzdHMgaW4gRGF0YUludGVyYWN0
aW9uVGVzdHMgdG8gY2hlY2sgZm9yIHRoZSBleGlzdGVuY2UgYW5kIHByaW9yaXR5IG9mIHR5cGUg
aWRlbnRpZmllcnMKKyAgICAgICAgaW4gdGhlIFVJSXRlbVByb3ZpZGVycyBjcmVhdGVkIHVwb24g
c3RhcnRpbmcgZGF0YSBpbnRlcmFjdGlvbi4gQWxzbyBhZGRzIGEgbmV3IHVuaXQgdGVzdDoKKyAg
ICAgICAgRGF0YUludGVyYWN0aW9uVGVzdHMuVGV4dEFyZWFUb0lucHV0LgorCisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGVkaXRpbmcvY29j
b2EvRWRpdG9yQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjphcmNoaXZlZERhdGFGb3JBdHRy
aWJ1dGVkU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6d3JpdGVTZWxlY3Rpb25U
b1Bhc3RlYm9hcmQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjp3cml0ZVNlbGVjdGlvbik6
CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bh
c3RlYm9hcmRXcml0ZXJEYXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJv
YXJkLmg6CisgICAgICAgICogcGxhdGZvcm0vaW9zL0Fic3RyYWN0UGFzdGVib2FyZC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2lvcy9BYnN0cmFjdFBhc3RlYm9hcmQubW06IENvcGllZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9BYnN0cmFjdFBhc3RlYm9hcmQuaC4KKworICAgICAg
ICBJbnRyb2R1Y2UgV2ViUGFzdGVib2FyZEl0ZW1EYXRhLCBhIHdyYXBwZXIgYXJvdW5kIGEgbGlz
dCBvZiBvYmplY3RzIHJlcHJlc2VudGF0aW5nIHRoZSBwYXN0ZWJvYXJkIGRhdGEgaW4gb3JkZXIK
KyAgICAgICAgb2YgcHJpb3JpdHksIGFuZCBhIGRpY3Rpb25hcnkgY29udGFpbmluZyBhZGRpdGlv
bmFsIE5TRGF0YSBibG9icyB0aGF0IGNvbnRhaW4gZGF0YSB1c2VmdWwgZm9yIHByaXZhdGUgY2xp
ZW50cy4KKworICAgICAgICAoK1tXZWJQYXN0ZWJvYXJkSXRlbURhdGEgaXRlbVdpdGhSZXByZXNl
bnRpbmdPYmplY3RzOmFkZGl0aW9uYWxEYXRhOl0pOgorICAgICAgICAoLVtXZWJQYXN0ZWJvYXJk
SXRlbURhdGEgaW5pdFdpdGhSZXByZXNlbnRpbmdPYmplY3RzOmFkZGl0aW9uYWxEYXRhOl0pOgor
ICAgICAgICAoLVtXZWJQYXN0ZWJvYXJkSXRlbURhdGEgcmVwcmVzZW50aW5nT2JqZWN0c10pOgor
ICAgICAgICAoLVtXZWJQYXN0ZWJvYXJkSXRlbURhdGEgYWRkaXRpb25hbERhdGFdKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6cmljaFRleHRSZXByZXNlbnRhdGlvbnNGb3JQYXN0ZWJvYXJkV2ViQ29udGVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlT2JqZWN0UmVwcmVzZW50
YXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUpOgor
CisgICAgICAgIFR3ZWFrZWQgdG8gY2hlY2sgd2hldGhlciB0aGUgcGFzdGVib2FyZCByZXNwb25k
cyB0byAtc2V0SXRlbXNGcm9tT2JqZWN0UmVwcmVzZW50YXRpb25zOi4gSWYgc28sIHVzZXMgdGhl
CisgICAgICAgIFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGVPYmplY3RSZXByZXNlbnRhdGlvbnMg
Y29kZXBhdGggdG8gd3JpdGUgZGF0YSB0byB0aGUgcGFzdGVib2FyZCwgcmVzcGVjdGluZyB0eXBl
CisgICAgICAgIHByaW9yaXR5LgorCisgICAgICAgICogcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92
aWRlclBhc3RlYm9hcmQubW06CisgICAgICAgICgtW1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQg
cGFzdGVib2FyZFR5cGVzXSk6CisgICAgICAgICgtW1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQg
c2V0SXRlbVByb3ZpZGVyczpdKToKKyAgICAgICAgKC1bV2ViSXRlbVByb3ZpZGVyUGFzdGVib2Fy
ZCBzZXRJdGVtc0Zyb21PYmplY3RSZXByZXNlbnRhdGlvbnM6XSk6CisKKyAgICAgICAgUmVwbGFj
ZXMgLXNldEl0ZW1zOiB3aXRoIC1zZXRJdGVtc0Zyb21PYmplY3RSZXByZXNlbnRhdGlvbnM6LCB3
aGljaCByZXNwZWN0cyB0aGUgcHJpb3JpdHkgb2YgZWFjaCBvYmplY3QKKyAgICAgICAgcmVwcmVz
ZW50YXRpb24gb2YgdGhlIGRhdGEgaW4gdGhlIHBhc3RlYm9hcmQuCisKKyAgICAgICAgKC1bV2Vi
SXRlbVByb3ZpZGVyUGFzdGVib2FyZCBzZXRJdGVtczpdKTogRGVsZXRlZC4KKwogMjAxNy0wMy0z
MSAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBJbmNv
bWluZyB2aWRlbyBzb3VyY2UgZG9lc24ndCBwcm9wb2dhdGUgZnJhbWUgcm90YXRpb24KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwppbmRleCAzZmViZGRlZGI2YzIzN2RlNDMwYWJhZDNkOWI3ODZlZDE1NjEwZDhhLi4wNmZlOWZh
YzI0YThkN2NhMDdiNTQ1YTMwMGVhMjQxZGQ1OWI2Yzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTkgQEAKKzIwMTctMDQtMDMgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+
CisKKyAgICAgICAgRGF0YSBpbnRlcmFjdGlvbiBzaG91bGQgcmVnaXN0ZXIgdHlwZSBpZGVudGlm
aWVycyBpbiBvcmRlciBvZiBwcmlvcml0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTcwNDI4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMDYzMzI5
Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTZXJp
YWxpemUgUGFzdGVib2FyZFdlYkNvbnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdCB3
aGVuIHNlbmRpbmcgb3ZlciBJUEMuIFJlZmVyIHRvIFdlYkNvcmUgQ2hhbmdlTG9nCisgICAgICAg
IGZvciBtb3JlIGRldGFpbHMuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkV2ViQ29udGVu
dD46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UGFzdGVib2FyZFdlYkNv
bnRlbnQ+OjpkZWNvZGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tOgorCiAyMDE3LTAzLTMxICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29t
PgogCiAgICAgICAgIEFkZHJlc3MgcG9zdC1yZXZpZXcgZmVlZGJhY2sgYWZ0ZXIgcjIxNDY5Mgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGUxZmMxMmY5OWFkMDRmY2VhMTA2YWFkY2Q3N2I2YmY3MjFmZTRiYTEuLmJmMDlmMDg2MTM0
M2E1YTMzNTBlOTljM2VhODk2MzJmM2IzNmQ4ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTY4MjksNiArNjgyOSw3IEBACiAJ
CUY0ODIyMzEzMUUzODZFMjQwMDY2RkM3OSAvKiBBYnN0cmFjdFBhc3RlYm9hcmQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0ODIyMzEyMUUzODZFMjQw
MDY2RkM3OSAvKiBBYnN0cmFjdFBhc3RlYm9hcmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlGNEJGQjk4NTFFMURERjlCMDA4NjJDMjQgLyogRHVt
cEVkaXRpbmdIaXN0b3J5LmpzIGluIENvcHkgU2NyaXB0cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGNDgzODk4MzFFMURERjJCMDA3NkI3RUEgLyogRHVtcEVkaXRpbmdIaXN0
b3J5LmpzICovOyB9OwogCQlGNEJGQjk4NjFFMURERjlCMDA4NjJDMjQgLyogRWRpdGluZ0hpc3Rv
cnlVdGlsLmpzIGluIENvcHkgU2NyaXB0cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGNDgzODk4NDFFMURERjJCMDA3NkI3RUEgLyogRWRpdGluZ0hpc3RvcnlVdGlsLmpzICov
OyB9OworCQlGNEQ4MzE2MjFFOTA4QzA3MDA5NDExNzQgLyogQWJzdHJhY3RQYXN0ZWJvYXJkLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjREODMxNjEx
RTkwOEMwNzAwOTQxMTc0IC8qIEFic3RyYWN0UGFzdGVib2FyZC5tbSAqLzsgfTsKIAkJRjUwNjY0
RjcxNTdGNTJEQzAwQUMyMjZGIC8qIEZvcm1Db250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1MDY2NEY1MTU3RjUyREMwMEFDMjI2RiAv
KiBGb3JtQ29udHJvbGxlci5jcHAgKi87IH07CiAJCUY1MDY2NEY4MTU3RjUyREMwMEFDMjI2RiAv
KiBGb3JtQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjUwNjY0RjYxNTdGNTJEQzAwQUMyMjZGIC8qIEZvcm1Db250cm9sbGVyLmggKi87
IH07CiAJCUY1MTNBM0VBMTVGRjQ4NDEwMDE1MjZEQiAvKiBWYWxpZGF0aW9uTWVzc2FnZUNsaWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjUxM0Ez
RTkxNUZGNDg0MTAwMTUyNkRCIC8qIFZhbGlkYXRpb25NZXNzYWdlQ2xpZW50LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE1MzMwLDYgKzE1MzMx
LDcgQEAKIAkJRjQ4MjIzMTIxRTM4NkUyNDAwNjZGQzc5IC8qIEFic3RyYWN0UGFzdGVib2FyZC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBYnN0cmFjdFBhc3RlYm9hcmQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ4Mzg5ODMxRTFEREYyQjAwNzZCN0VBIC8q
IER1bXBFZGl0aW5nSGlzdG9yeS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsg
bmFtZSA9IER1bXBFZGl0aW5nSGlzdG9yeS5qczsgcGF0aCA9IFNjcmlwdHMvRHVtcEVkaXRpbmdI
aXN0b3J5LmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDgzODk4NDFFMURERjJC
MDA3NkI3RUEgLyogRWRpdGluZ0hpc3RvcnlVdGlsLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5q
YXZhc2NyaXB0OyBuYW1lID0gRWRpdGluZ0hpc3RvcnlVdGlsLmpzOyBwYXRoID0gU2NyaXB0cy9F
ZGl0aW5nSGlzdG9yeVV0aWwuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0RDgz
MTYxMUU5MDhDMDcwMDk0MTE3NCAvKiBBYnN0cmFjdFBhc3RlYm9hcmQubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBYnN0cmFjdFBhc3RlYm9hcmQubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY1MDY2NEY1MTU3RjUyREMwMEFDMjI2RiAvKiBGb3Jt
Q29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb3Jt
Q29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY1MDY2NEY2MTU3
RjUyREMwMEFDMjI2RiAvKiBGb3JtQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBGb3JtQ29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGNTEzQTNFOTE1RkY0ODQxMDAxNTI2REIgLyogVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwODYxLDYgKzIwODYzLDcgQEAKIAkJ
CWNoaWxkcmVuID0gKAogCQkJCUExNDgzMjhCMTg3RjUwNjgwMERBNjNBNiAvKiB3YWsgKi8sCiAJ
CQkJRjQ4MjIzMTIxRTM4NkUyNDAwNjZGQzc5IC8qIEFic3RyYWN0UGFzdGVib2FyZC5oICovLAor
CQkJCUY0RDgzMTYxMUU5MDhDMDcwMDk0MTE3NCAvKiBBYnN0cmFjdFBhc3RlYm9hcmQubW0gKi8s
CiAJCQkJMjY1NTQxNEIxNDg5QUEyQjAwMERGQzVEIC8qIEN1cnNvcklPUy5jcHAgKi8sCiAJCQkJ
QTFFRDc3OEExQkUzMjkzRjAwREMxNzkxIC8qIERldmljZS5jcHAgKi8sCiAJCQkJQTFFRDc3OEIx
QkUzMjk0MDAwREMxNzkxIC8qIERldmljZS5oICovLApAQCAtMzE2MjUsNiArMzE2MjgsNyBAQAog
CQkJCUE2MTQ4QTc4MTJFNDFFM0IwMDQ0QTc4NCAvKiBKU0hUTUxLZXlnZW5FbGVtZW50LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTFBRTJBQjIxMEExQ0U2M0IwMEI0MkIyNSAvKiBKU0hUTUxMYWJl
bEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFFMkFCMjMwQTFDRTYzQjAwQjQyQjI1
IC8qIEpTSFRNTExlZ2VuZEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRjREODMxNjIx
RTkwOEMwNzAwOTQxMTc0IC8qIEFic3RyYWN0UGFzdGVib2FyZC5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTFBRTJBQjI1MEExQ0U2M0IwMEI0MkIyNSAvKiBKU0hUTUxMSUVsZW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTgwRTdCMTAwQTE5RDYwNjAwN0ZCOEM1IC8qIEpTSFRNTExpbmtFbGVt
ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBRTJBQjI3MEExQ0U2M0IwMEI0MkIyNSAvKiBK
U0hUTUxNYXBFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvY29jb2EvRWRpdG9yQ29jb2EubW0KaW5kZXggNDAyODZmNDFkMmU3MDRhYTgzMWE4NDU4YjUw
MzM1MTUzMzY4MTRhOS4uMDVjODkwODQ0NmEyNjg4ZGJlNDgwNjhmZTdhMjQ3MDM1ZGE5OTBlYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tCkBAIC0xNTIs
NiArMTUyLDE0IEBAIEZyYWdtZW50QW5kUmVzb3VyY2VzIEVkaXRvcjo6Y3JlYXRlRnJhZ21lbnQo
TlNBdHRyaWJ1dGVkU3RyaW5nICpzdHJpbmcpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorc3Rh
dGljIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGFyY2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRTdHJpbmco
TlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nKQoreworICAgIGlmICghYXR0cmli
dXRlZFN0cmluZy5sZW5ndGgpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJu
IFNoYXJlZEJ1ZmZlcjo6d3JhcE5TRGF0YShbTlNLZXllZEFyY2hpdmVyIGFyY2hpdmVkRGF0YVdp
dGhSb290T2JqZWN0OmF0dHJpYnV0ZWRTdHJpbmddKTsKK30KKwogdm9pZCBFZGl0b3I6OndyaXRl
U2VsZWN0aW9uVG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQmIHBhc3RlYm9hcmQpCiB7CiAgICAgTlNB
dHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nID0gYXR0cmlidXRlZFN0cmluZ0Zyb21S
YW5nZSgqc2VsZWN0ZWRSYW5nZSgpKTsKQEAgLTE2MSw2ICsxNjksNyBAQCB2b2lkIEVkaXRvcjo6
d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoUGFzdGVib2FyZCYgcGFzdGVib2FyZCkKICAgICBj
b250ZW50LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQgPSBzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3Jt
YXQoKTsKICAgICBjb250ZW50LmRhdGFJblJURkRGb3JtYXQgPSBhdHRyaWJ1dGVkU3RyaW5nLmNv
bnRhaW5zQXR0YWNobWVudHMgPyBkYXRhSW5SVEZERm9ybWF0KGF0dHJpYnV0ZWRTdHJpbmcpIDog
bnVsbHB0cjsKICAgICBjb250ZW50LmRhdGFJblJURkZvcm1hdCA9IGRhdGFJblJURkZvcm1hdChh
dHRyaWJ1dGVkU3RyaW5nKTsKKyAgICBjb250ZW50LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3Jt
YXQgPSBhcmNoaXZlZERhdGFGb3JBdHRyaWJ1dGVkU3RyaW5nKGF0dHJpYnV0ZWRTdHJpbmcpOwog
ICAgIC8vIEZJWE1FOiBXaHkgZG9uJ3Qgd2Ugd2FudCB0aGlzIG9uIGlPUz8KICNpZiBQTEFURk9S
TShNQUMpCiAgICAgY29udGVudC5kYXRhSW5IVE1MRm9ybWF0ID0gc2VsZWN0aW9uSW5IVE1MRm9y
bWF0KCk7CkBAIC0xODAsNiArMTg5LDcgQEAgdm9pZCBFZGl0b3I6OndyaXRlU2VsZWN0aW9uKFBh
c3RlYm9hcmRXcml0ZXJEYXRhJiBwYXN0ZWJvYXJkV3JpdGVyRGF0YSkKICAgICB3ZWJDb250ZW50
LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQgPSBzZWxlY3Rpb25JbldlYkFyY2hpdmVGb3JtYXQoKTsK
ICAgICB3ZWJDb250ZW50LmRhdGFJblJURkRGb3JtYXQgPSBhdHRyaWJ1dGVkU3RyaW5nLmNvbnRh
aW5zQXR0YWNobWVudHMgPyBkYXRhSW5SVEZERm9ybWF0KGF0dHJpYnV0ZWRTdHJpbmcpIDogbnVs
bHB0cjsKICAgICB3ZWJDb250ZW50LmRhdGFJblJURkZvcm1hdCA9IGRhdGFJblJURkZvcm1hdChh
dHRyaWJ1dGVkU3RyaW5nKTsKKyAgICB3ZWJDb250ZW50LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdG
b3JtYXQgPSBhcmNoaXZlZERhdGFGb3JBdHRyaWJ1dGVkU3RyaW5nKGF0dHJpYnV0ZWRTdHJpbmcp
OwogICAgIC8vIEZJWE1FOiBXaHkgZG9uJ3Qgd2Ugd2FudCB0aGlzIG9uIGlPUz8KICNpZiBQTEFU
Rk9STShNQUMpCiAgICAgd2ViQ29udGVudC5kYXRhSW5IVE1MRm9ybWF0ID0gc2VsZWN0aW9uSW5I
VE1MRm9ybWF0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXggM2RkMDBk
M2IwZWNjYWY4MGY0YzY2YWZlZGEyZjZiYjZmYWFjNTliZC4uYjk0ZDcwYTFmNmE1MjBiMDE4MWMz
ZDIzNWJlMmZiYjhjN2RjOGI2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaApA
QCAtNjksNiArNjksNyBAQCBzdHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRlbnQgewogICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGRhdGFJbldlYkFyY2hpdmVGb3JtYXQ7CiAgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRh
SW5SVEZGb3JtYXQ7CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluQXR0cmlidXRlZFN0
cmluZ0Zvcm1hdDsKICAgICBTdHJpbmcgZGF0YUluSFRNTEZvcm1hdDsKICAgICBTdHJpbmcgZGF0
YUluU3RyaW5nRm9ybWF0OwogICAgIFZlY3RvcjxTdHJpbmc+IGNsaWVudFR5cGVzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRlckRhdGEuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgKaW5kZXggMmM1YWRj
MmQyMjZhZTNjMThmOTdiZTliMmFiZDgzMTc4ZDZhMDM2Zi4uMGQxYjRiNzM2ZDIyNGVmZGY5YzIw
Yzc0ZTgzNzIxMzJkMTk0NDljOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZFdyaXRlckRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0
ZWJvYXJkV3JpdGVyRGF0YS5oCkBAIC01NCw2ICs1NCw3IEBAIHB1YmxpYzoKICAgICAgICAgUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1hdDsKICAgICAgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gZGF0YUluUlRGREZvcm1hdDsKICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gZGF0YUluUlRGRm9ybWF0OworICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRh
SW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OwogICAgICAgICAvLyBGSVhNRTogV2h5IGRvbid0IHdl
IHdhbnQgdGhpcyBvbiBpT1M/CiAjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICBTdHJpbmcgZGF0
YUluSFRNTEZvcm1hdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJv
YXJkLmgKaW5kZXggYmE1NDI2ZjdjZWRiYmQ1YTIzYzY1MjU3ZGFiMGE0MTM3ZDE3MDk3ZC4uMzQz
MDExODI3ODI4ODY5ZjVhMDUzNGIxNTNkZGI0OTI4ZGMyZjFmMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmgKQEAgLTg4LDYgKzg4LDEyIEBAIHB1Ymxp
YzoKICNlbmRpZgogCiBwcml2YXRlOgorI2lmIFBMQVRGT1JNKElPUykKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHdyaXRlT2JqZWN0UmVwcmVzZW50YXRpb25zKGNvbnN0IFBhc3RlYm9hcmRXZWJD
b250ZW50Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZU9iamVjdFJlcHJlc2VudGF0
aW9ucyhjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdy
aXRlT2JqZWN0UmVwcmVzZW50YXRpb25zKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNv
bnN0IFN0cmluZyYgdGV4dCk7CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKE1BQykKICAgICBSZXRh
aW5QdHI8TlNQYXN0ZWJvYXJkPiBtX3Bhc3RlYm9hcmQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9BYnN0cmFjdFBhc3RlYm9hcmQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9BYnN0cmFjdFBhc3RlYm9hcmQuaAppbmRleCBhMWZlMDQwNTQ4
NmU0NjI4YzI2YzFkNjZlN2U0NTUzNTAyMDcxOGYwLi5lZTIyYzY4OTg0NjllNjA0NWY2MDk3ODc2
NWRhOGY4Zjc4Y2Y1YWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
QWJzdHJhY3RQYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0Fi
c3RyYWN0UGFzdGVib2FyZC5oCkBAIC0yNSwxNSArMjUsMjcgQEAKIAogI2ltcG9ydCA8Rm91bmRh
dGlvbi9Gb3VuZGF0aW9uLmg+CiAKK1dFQkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgV2ViUGFzdGVi
b2FyZEl0ZW1EYXRhIDogTlNPYmplY3QKKworKyAoaW5zdGFuY2V0eXBlKWl0ZW1XaXRoUmVwcmVz
ZW50aW5nT2JqZWN0czooTlNBcnJheSAqKXJlcHJlc2VudGluZ09iamVjdHMgYWRkaXRpb25hbERh
dGE6KE5TRGljdGlvbmFyeSAqKWFkZGl0aW9uYWxEYXRhOworCitAcHJvcGVydHkgKG5vbmF0b21p
YywgcmVhZG9ubHksIHN0cm9uZykgTlNBcnJheSAqcmVwcmVzZW50aW5nT2JqZWN0czsKK0Bwcm9w
ZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgc3Ryb25nKSBOU0RpY3Rpb25hcnkgKmFkZGl0aW9u
YWxEYXRhOworCitAZW5kCisKIEBwcm90b2NvbCBBYnN0cmFjdFBhc3RlYm9hcmQgPE5TT2JqZWN0
PgogQHJlcXVpcmVkCiAKIEBwcm9wZXJ0eSAocmVhZG9ubHksIG5vbmF0b21pYykgTlNJbnRlZ2Vy
IG51bWJlck9mSXRlbXM7CiAKIC0gKE5TQXJyYXk8TlNTdHJpbmcgKj4gKilwYXN0ZWJvYXJkVHlw
ZXM7Ci0tICh2b2lkKXNldEl0ZW1zOihOU0FycmF5ICopaXRlbXM7CiAtIChOU0FycmF5ICopZGF0
YUZvclBhc3RlYm9hcmRUeXBlOihOU1N0cmluZyAqKXBhc3RlYm9hcmRUeXBlIGluSXRlbVNldDoo
TlNJbmRleFNldCAqKWl0ZW1TZXQ7CiAtIChOU0FycmF5ICopdmFsdWVzRm9yUGFzdGVib2FyZFR5
cGU6KE5TU3RyaW5nICopcGFzdGVib2FyZFR5cGUgaW5JdGVtU2V0OihOU0luZGV4U2V0ICopaXRl
bVNldDsKIC0gKE5TSW50ZWdlciljaGFuZ2VDb3VudDsKIAorQG9wdGlvbmFsCistICh2b2lkKXNl
dEl0ZW1zRnJvbU9iamVjdFJlcHJlc2VudGF0aW9uczooTlNBcnJheTxXZWJQYXN0ZWJvYXJkSXRl
bURhdGEgKj4gKilpdGVtRGF0YTsKKy0gKHZvaWQpc2V0SXRlbXM6KE5TQXJyYXk8TlNEaWN0aW9u
YXJ5ICo+ICopaXRlbXM7CisKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9BYnN0cmFjdFBhc3RlYm9hcmQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvQWJzdHJhY3RQYXN0ZWJvYXJkLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQwYmNhMWYyMzA0YmNkZmI1Njk4
MTc5NjU2ZGIyMWIxOWE4ZGE1OWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvQWJzdHJhY3RQYXN0ZWJvYXJkLm1tCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQWJzdHJhY3RQYXN0ZWJvYXJk
LmgiCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJQYXN0ZWJvYXJkSXRlbURhdGEKKworQHN5bnRoZXNp
emUgcmVwcmVzZW50aW5nT2JqZWN0cz1fcmVwcmVzZW50aW5nT2JqZWN0czsKK0BzeW50aGVzaXpl
IGFkZGl0aW9uYWxEYXRhPV9hZGRpdGlvbmFsRGF0YTsKKworKyAoaW5zdGFuY2V0eXBlKWl0ZW1X
aXRoUmVwcmVzZW50aW5nT2JqZWN0czooTlNBcnJheSAqKXJlcHJlc2VudGluZ09iamVjdHMgYWRk
aXRpb25hbERhdGE6KE5TRGljdGlvbmFyeSAqKWFkZGl0aW9uYWxEYXRhCit7CisgICAgcmV0dXJu
IFtbW3NlbGYgYWxsb2NdIGluaXRXaXRoUmVwcmVzZW50aW5nT2JqZWN0czpyZXByZXNlbnRpbmdP
YmplY3RzIGFkZGl0aW9uYWxEYXRhOmFkZGl0aW9uYWxEYXRhXSBhdXRvcmVsZWFzZV07Cit9CisK
Ky0gKGluc3RhbmNldHlwZSlpbml0V2l0aFJlcHJlc2VudGluZ09iamVjdHM6KE5TQXJyYXkgKily
ZXByZXNlbnRpbmdPYmplY3RzIGFkZGl0aW9uYWxEYXRhOihOU0RpY3Rpb25hcnkgKilhZGRpdGlv
bmFsRGF0YQoreworICAgIGlmIChzZWxmID0gW3N1cGVyIGluaXRdKSB7CisgICAgICAgIF9yZXBy
ZXNlbnRpbmdPYmplY3RzID0gW3JlcHJlc2VudGluZ09iamVjdHMgcmV0YWluXTsKKyAgICAgICAg
X2FkZGl0aW9uYWxEYXRhID0gW2FkZGl0aW9uYWxEYXRhIHJldGFpbl07CisgICAgfQorICAgIHJl
dHVybiBzZWxmOworfQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBbX3JlcHJlc2VudGluZ09i
amVjdHMgcmVsZWFzZV07CisgICAgW19hZGRpdGlvbmFsRGF0YSByZWxlYXNlXTsKKyAgICBbc3Vw
ZXIgZGVhbGxvY107Cit9CisKK0BlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IGViNmIwZDJjMGJhN2VhZjMxNmZm
NjBlMjZmMzczMWJkZTkxMjJhZDEuLjU1YzljMTcwNWYzYWYyYTE1MWNmZDEwZTQwODVlYzhmNGYw
ZmIyZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBh
c3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3Jt
UGFzdGVib2FyZElPUy5tbQpAQCAtMzQsOCArMzQsMTAgQEAKICNpbXBvcnQgIlNvZnRMaW5raW5n
LmgiCiAjaW1wb3J0ICJXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLmgiCiAjaW1wb3J0IDxNb2Jp
bGVDb3JlU2VydmljZXMvTW9iaWxlQ29yZVNlcnZpY2VzLmg+CisjaW1wb3J0IDxVSUtpdC9VSUlt
YWdlLmg+CiAKIFNPRlRfTElOS19GUkFNRVdPUksoVUlLaXQpCitTT0ZUX0xJTktfQ0xBU1MoVUlL
aXQsIFVJSW1hZ2UpCiBTT0ZUX0xJTktfQ0xBU1MoVUlLaXQsIFVJUGFzdGVib2FyZCkKIAogQGlu
dGVyZmFjZSBVSVBhc3RlYm9hcmQKQEAgLTE0Nyw5ICsxNDksOSBAQCBTdHJpbmcgUGxhdGZvcm1Q
YXN0ZWJvYXJkOjp1bmlxdWVOYW1lKCkKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLXZvaWQg
UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29u
dGVudCkKK3N0YXRpYyBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiByaWNoVGV4dFJlcHJlc2VudGF0
aW9uc0ZvclBhc3RlYm9hcmRXZWJDb250ZW50KGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50JiBj
b250ZW50KQogewotICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IHJlcHJlc2VudGF0aW9ucyA9
IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CisgICAgUmV0YWlu
UHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IHJlcHJlc2VudGF0aW9ucyA9IGFkb3B0TlMoW1tOU011
dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CiAKICAgICBBU1NFUlQoY29udGVudC5jbGll
bnRUeXBlcy5zaXplKCkgPT0gY29udGVudC5jbGllbnREYXRhLnNpemUoKSk7CiAgICAgZm9yIChz
aXplX3QgaSA9IDAsIHNpemUgPSBjb250ZW50LmNsaWVudFR5cGVzLnNpemUoKTsgaSA8IHNpemU7
ICsraSkKQEAgLTE1OCw3ICsxNjAsNyBAQCB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUo
Y29uc3QgUGFzdGVib2FyZFdlYkNvbnRlbnQmIGNvbnRlbnQpCiAgICAgaWYgKGNvbnRlbnQuZGF0
YUluV2ViQXJjaGl2ZUZvcm1hdCkgewogICAgICAgICBbcmVwcmVzZW50YXRpb25zIHNldFZhbHVl
OihOU0RhdGEgKiljb250ZW50LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQtPmNyZWF0ZU5TRGF0YSgp
LmdldCgpIGZvcktleTpXZWJBcmNoaXZlUGJvYXJkVHlwZV07CiAgICAgICAgIC8vIEZsYWcgZm9y
IFVJS2l0IHRvIGtub3cgdGhhdCB0aGlzIGNvcHkgY29udGFpbnMgcmljaCBjb250ZW50LiBUaGlz
IHdpbGwgdHJpZ2dlciBhIHR3by1zdGVwIHBhc3RlLgotICAgICAgICBOU1N0cmluZyogd2ViSU9T
UGFzdGVQYm9hcmRUeXBlID0gQCJpT1MgcmljaCBjb250ZW50IHBhc3RlIHBhc3RlYm9hcmQgdHlw
ZSI7CisgICAgICAgIE5TU3RyaW5nICp3ZWJJT1NQYXN0ZVBib2FyZFR5cGUgPSBAImlPUyByaWNo
IGNvbnRlbnQgcGFzdGUgcGFzdGVib2FyZCB0eXBlIjsKICAgICAgICAgW3JlcHJlc2VudGF0aW9u
cyBzZXRWYWx1ZTp3ZWJJT1NQYXN0ZVBib2FyZFR5cGUgZm9yS2V5OndlYklPU1Bhc3RlUGJvYXJk
VHlwZV07CiAgICAgfQogCkBAIC0xNjcsMTMgKzE2OSw3MCBAQCB2b2lkIFBsYXRmb3JtUGFzdGVi
b2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZFdlYkNvbnRlbnQmIGNvbnRlbnQpCiAgICAgaWYg
KGNvbnRlbnQuZGF0YUluUlRGRm9ybWF0KQogICAgICAgICBbcmVwcmVzZW50YXRpb25zIHNldFZh
bHVlOmNvbnRlbnQuZGF0YUluUlRGRm9ybWF0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JLZXk6
KE5TU3RyaW5nICopa1VUVHlwZVJURl07CiAKKyAgICByZXR1cm4gcmVwcmVzZW50YXRpb25zOwor
fQorCit2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGVPYmplY3RSZXByZXNlbnRhdGlvbnMo
Y29uc3QgUGFzdGVib2FyZFdlYkNvbnRlbnQmIGNvbnRlbnQpCit7CisgICAgUmV0YWluUHRyPE5T
TXV0YWJsZUFycmF5PiBvYmplY3RSZXByZXNlbnRhdGlvbnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxl
QXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBhZGRpdGlv
bmFsRGF0YSA9IHJpY2hUZXh0UmVwcmVzZW50YXRpb25zRm9yUGFzdGVib2FyZFdlYkNvbnRlbnQo
Y29udGVudCk7CisKKyAgICBpZiAoY29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0
KSB7CisgICAgICAgIE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZyA9IFtOU0tl
eWVkVW5hcmNoaXZlciB1bmFyY2hpdmVPYmplY3RXaXRoRGF0YTpjb250ZW50LmRhdGFJbkF0dHJp
YnV0ZWRTdHJpbmdGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpXTsKKyAgICAgICAgaWYgKGF0
dHJpYnV0ZWRTdHJpbmcpCisgICAgICAgICAgICBbb2JqZWN0UmVwcmVzZW50YXRpb25zIGFkZE9i
amVjdDphdHRyaWJ1dGVkU3RyaW5nXTsKKyAgICB9CisKKyAgICBpZiAoIWNvbnRlbnQuZGF0YUlu
U3RyaW5nRm9ybWF0LmlzRW1wdHkoKSkKKyAgICAgICAgW29iamVjdFJlcHJlc2VudGF0aW9ucyBh
ZGRPYmplY3Q6KE5TU3RyaW5nICopY29udGVudC5kYXRhSW5TdHJpbmdGb3JtYXRdOworCisgICAg
W21fcGFzdGVib2FyZCBzZXRJdGVtc0Zyb21PYmplY3RSZXByZXNlbnRhdGlvbnM6QFtbV2ViUGFz
dGVib2FyZEl0ZW1EYXRhIGl0ZW1XaXRoUmVwcmVzZW50aW5nT2JqZWN0czpvYmplY3RSZXByZXNl
bnRhdGlvbnMuZ2V0KCkgYWRkaXRpb25hbERhdGE6YWRkaXRpb25hbERhdGEuZ2V0KCldXV07Cit9
CisKK3ZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkV2ViQ29u
dGVudCYgY29udGVudCkKK3sKKyAgICBpZiAoW21fcGFzdGVib2FyZCByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKHNldEl0ZW1zRnJvbU9iamVjdFJlcHJlc2VudGF0aW9uczopXSkgeworICAg
ICAgICB3cml0ZU9iamVjdFJlcHJlc2VudGF0aW9ucyhjb250ZW50KTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiByZXByZXNlbnRh
dGlvbnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOworICAg
IFtyZXByZXNlbnRhdGlvbnMgYWRkRW50cmllc0Zyb21EaWN0aW9uYXJ5OnJpY2hUZXh0UmVwcmVz
ZW50YXRpb25zRm9yUGFzdGVib2FyZFdlYkNvbnRlbnQoY29udGVudCkuYXV0b3JlbGVhc2UoKV07
CiAgICAgW3JlcHJlc2VudGF0aW9ucyBzZXRWYWx1ZTpjb250ZW50LmRhdGFJblN0cmluZ0Zvcm1h
dCBmb3JLZXk6KE5TU3RyaW5nICopa1VUVHlwZVRleHRdOwotICAgIFtyZXByZXNlbnRhdGlvbnMg
c2V0VmFsdWU6WyhOU1N0cmluZyAqKWNvbnRlbnQuZGF0YUluU3RyaW5nRm9ybWF0IGRhdGFVc2lu
Z0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSBmb3JLZXk6KE5TU3RyaW5nICopa1VUVHlw
ZVVURjhQbGFpblRleHRdOworCiAgICAgW21fcGFzdGVib2FyZCBzZXRJdGVtczpAW3JlcHJlc2Vu
dGF0aW9ucy5nZXQoKV1dOwogfQogCit2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGVPYmpl
Y3RSZXByZXNlbnRhdGlvbnMoY29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0ZWJvYXJkSW1hZ2Up
Cit7CisgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBvYmplY3RSZXByZXNlbnRhdGlvbnMg
PSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICBSZXRhaW5QdHI8
TlNNdXRhYmxlRGljdGlvbmFyeT4gYWRkaXRpb25hbERhdGEgPSBhZG9wdE5TKFtbTlNNdXRhYmxl
RGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOworCisgICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2UgPSBw
YXN0ZWJvYXJkSW1hZ2UuaW1hZ2UtPm5hdGl2ZUltYWdlKCkpIHsKKyAgICAgICAgVUlJbWFnZSAq
dWlJbWFnZSA9IChVSUltYWdlICopW2dldFVJSW1hZ2VDbGFzcygpIGltYWdlV2l0aENHSW1hZ2U6
bmF0aXZlSW1hZ2UuZ2V0KCldOworICAgICAgICBpZiAodWlJbWFnZSkKKyAgICAgICAgICAgIFtv
YmplY3RSZXByZXNlbnRhdGlvbnMgYWRkT2JqZWN0OnVpSW1hZ2VdOworICAgIH0KKworICAgIGlm
ICghcGFzdGVib2FyZEltYWdlLnVybC51cmwuaXNFbXB0eSgpKSB7CisgICAgICAgIE5TVVJMICpu
c1VSTCA9IHBhc3RlYm9hcmRJbWFnZS51cmwudXJsOworICAgICAgICBpZiAobnNVUkwpCisgICAg
ICAgICAgICBbb2JqZWN0UmVwcmVzZW50YXRpb25zIGFkZE9iamVjdDpuc1VSTF07CisgICAgfQor
CisgICAgaWYgKCFwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZS5pc051bGwoKSkKKyAg
ICAgICAgW2FkZGl0aW9uYWxEYXRhIHNldE9iamVjdDpwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VE
YXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JLZXk6cGFzdGVib2FyZEltYWdlLnJlc291cmNl
TUlNRVR5cGVdOworCisgICAgW21fcGFzdGVib2FyZCBzZXRJdGVtc0Zyb21PYmplY3RSZXByZXNl
bnRhdGlvbnM6QFtbV2ViUGFzdGVib2FyZEl0ZW1EYXRhIGl0ZW1XaXRoUmVwcmVzZW50aW5nT2Jq
ZWN0czpvYmplY3RSZXByZXNlbnRhdGlvbnMuZ2V0KCkgYWRkaXRpb25hbERhdGE6YWRkaXRpb25h
bERhdGEuZ2V0KCldXV07Cit9CisKIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25z
dCBQYXN0ZWJvYXJkSW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSkKIHsKKyAgICBpZiAoW21fcGFzdGVi
b2FyZCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldEl0ZW1zRnJvbU9iamVjdFJlcHJl
c2VudGF0aW9uczopXSkgeworICAgICAgICB3cml0ZU9iamVjdFJlcHJlc2VudGF0aW9ucyhwYXN0
ZWJvYXJkSW1hZ2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgUmV0YWluUHRyPE5T
TXV0YWJsZURpY3Rpb25hcnk+IHJlcHJlc2VudGF0aW9ucyA9IGFkb3B0TlMoW1tOU011dGFibGVE
aWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CiAgICAgaWYgKCFwYXN0ZWJvYXJkSW1hZ2UucmVzb3Vy
Y2VNSU1FVHlwZS5pc051bGwoKSkgewogICAgICAgICBbcmVwcmVzZW50YXRpb25zIHNldE9iamVj
dDpwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JL
ZXk6cGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGVdOwpAQCAtMTgyLDggKzI0MSwzMyBA
QCB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEltYWdlJiBw
YXN0ZWJvYXJkSW1hZ2UpCiAgICAgW21fcGFzdGVib2FyZCBzZXRJdGVtczpAW3JlcHJlc2VudGF0
aW9ucy5nZXQoKV1dOwogfQogCit2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGVPYmplY3RS
ZXByZXNlbnRhdGlvbnMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5n
JiB0ZXh0KQoreworICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gb2JqZWN0UmVwcmVzZW50
YXRpb25zID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CisgICAgUmV0
YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IGFkZGl0aW9uYWxEYXRhID0gYWRvcHROUyhbW05T
TXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKKworICAgIE5TU3RyaW5nICpwYXN0ZWJv
YXJkVHlwZUFzTlNTdHJpbmcgPSBwYXN0ZWJvYXJkVHlwZTsKKyAgICBOU1N0cmluZyAqdGV4dEFz
TlNTdHJpbmcgPSB0ZXh0OworICAgIGlmICh0ZXh0QXNOU1N0cmluZyAmJiBwYXN0ZWJvYXJkVHlw
ZUFzTlNTdHJpbmcubGVuZ3RoKSB7CisgICAgICAgIGlmIChVVFR5cGVDb25mb3Jtc1RvKChfX2Jy
aWRnZSBDRlN0cmluZ1JlZilwYXN0ZWJvYXJkVHlwZUFzTlNTdHJpbmcsIGtVVFR5cGVVUkwpKQor
ICAgICAgICAgICAgW29iamVjdFJlcHJlc2VudGF0aW9ucyBhZGRPYmplY3Q6W1tbTlNVUkwgYWxs
b2NdIGluaXRXaXRoU3RyaW5nOnRleHRBc05TU3RyaW5nXSBhdXRvcmVsZWFzZV1dOworCisgICAg
ICAgIGlmIChVVFR5cGVDb25mb3Jtc1RvKChfX2JyaWRnZSBDRlN0cmluZ1JlZilwYXN0ZWJvYXJk
VHlwZUFzTlNTdHJpbmcsIGtVVFR5cGVUZXh0KSkKKyAgICAgICAgICAgIFtvYmplY3RSZXByZXNl
bnRhdGlvbnMgYWRkT2JqZWN0OnRleHRBc05TU3RyaW5nXTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgW2FkZGl0aW9uYWxEYXRhIHNldE9iamVjdDp0ZXh0QXNOU1N0cmluZyBmb3JLZXk6cGFz
dGVib2FyZFR5cGVBc05TU3RyaW5nXTsKKyAgICB9CisKKyAgICBbbV9wYXN0ZWJvYXJkIHNldEl0
ZW1zRnJvbU9iamVjdFJlcHJlc2VudGF0aW9uczpAW1tXZWJQYXN0ZWJvYXJkSXRlbURhdGEgaXRl
bVdpdGhSZXByZXNlbnRpbmdPYmplY3RzOm9iamVjdFJlcHJlc2VudGF0aW9ucy5nZXQoKSBhZGRp
dGlvbmFsRGF0YTphZGRpdGlvbmFsRGF0YS5nZXQoKV1dXTsKK30KKwogdm9pZCBQbGF0Zm9ybVBh
c3RlYm9hcmQ6OndyaXRlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmlu
ZyYgdGV4dCkKIHsKKyAgICBpZiAoW21fcGFzdGVib2FyZCByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKHNldEl0ZW1zRnJvbU9iamVjdFJlcHJlc2VudGF0aW9uczopXSkgeworICAgICAgICB3
cml0ZU9iamVjdFJlcHJlc2VudGF0aW9ucyhwYXN0ZWJvYXJkVHlwZSwgdGV4dCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKICAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiByZXByZXNlbnRh
dGlvbnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOwogCiAg
ICAgaWYgKHBhc3RlYm9hcmRUeXBlID09IFN0cmluZyhrVVRUeXBlVVJMKSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2Fy
ZC5tbQppbmRleCBhODlhYWVkY2ViM2RiNjc0ODY5MzNkZmM3NWFhYWNiNGRkYzdjZDIwLi45MjBm
YWIwYmMzZDI5YjkzNzRmZDlhMzUyOTU3MmRjYmNlMDI4NTJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbQpA
QCAtODAsNiArODAsNyBAQCBzdGF0aWMgQk9PTCBpc0ltYWdlVHlwZShOU1N0cmluZyAqdHlwZSkK
IAogQGltcGxlbWVudGF0aW9uIFdlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQgewogICAgIFJldGFp
blB0cjxOU0FycmF5PiBfaXRlbVByb3ZpZGVyczsKKyAgICBSZXRhaW5QdHI8TlNBcnJheT4gX2Nh
Y2hlZFR5cGVJZGVudGlmaWVyczsKIH0KIAogKyAoaW5zdGFuY2V0eXBlKXNoYXJlZEluc3RhbmNl
CkBAIC0xMDQsMTAgKzEwNSwyMiBAQCBzdGF0aWMgQk9PTCBpc0ltYWdlVHlwZShOU1N0cmluZyAq
dHlwZSkKIAogLSAoTlNBcnJheTxOU1N0cmluZyAqPiAqKXBhc3RlYm9hcmRUeXBlcwogeworICAg
IGlmIChfY2FjaGVkVHlwZUlkZW50aWZpZXJzKQorICAgICAgICByZXR1cm4gX2NhY2hlZFR5cGVJ
ZGVudGlmaWVycy5nZXQoKTsKKwogICAgIE5TTXV0YWJsZVNldDxOU1N0cmluZyAqPiAqYWxsVHlw
ZXMgPSBbTlNNdXRhYmxlU2V0IHNldF07Ci0gICAgZm9yIChVSUl0ZW1Qcm92aWRlciAqcHJvdmlk
ZXIgaW4gX2l0ZW1Qcm92aWRlcnMuZ2V0KCkpCi0gICAgICAgIFthbGxUeXBlcyBhZGRPYmplY3Rz
RnJvbUFycmF5OnByb3ZpZGVyLnJlZ2lzdGVyZWRUeXBlSWRlbnRpZmllcnNdOwotICAgIHJldHVy
biBhbGxUeXBlcy5hbGxPYmplY3RzOworICAgIE5TTXV0YWJsZUFycmF5PE5TU3RyaW5nICo+ICph
bGxUeXBlc0luT3JkZXIgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOworICAgIGZvciAoVUlJdGVt
UHJvdmlkZXIgKnByb3ZpZGVyIGluIF9pdGVtUHJvdmlkZXJzLmdldCgpKSB7CisgICAgICAgIGZv
ciAoTlNTdHJpbmcgKnR5cGVJZGVudGlmaWVyIGluIHByb3ZpZGVyLnJlZ2lzdGVyZWRUeXBlSWRl
bnRpZmllcnMpIHsKKyAgICAgICAgICAgIGlmIChbYWxsVHlwZXMgY29udGFpbnNPYmplY3Q6dHlw
ZUlkZW50aWZpZXJdKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBb
YWxsVHlwZXMgYWRkT2JqZWN0OnR5cGVJZGVudGlmaWVyXTsKKyAgICAgICAgICAgIFthbGxUeXBl
c0luT3JkZXIgYWRkT2JqZWN0OnR5cGVJZGVudGlmaWVyXTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICBfY2FjaGVkVHlwZUlkZW50aWZpZXJzID0gYWxsVHlwZXNJbk9yZGVyOworICAgIHJldHVybiBf
Y2FjaGVkVHlwZUlkZW50aWZpZXJzLmdldCgpOwogfQogCiAtIChOU0FycmF5PFVJSXRlbVByb3Zp
ZGVyICo+ICopaXRlbVByb3ZpZGVycwpAQCAtMTIzLDYgKzEzNiw3IEBAIHN0YXRpYyBCT09MIGlz
SW1hZ2VUeXBlKE5TU3RyaW5nICp0eXBlKQogCiAgICAgX2l0ZW1Qcm92aWRlcnMgPSBpdGVtUHJv
dmlkZXJzOwogICAgIF9jaGFuZ2VDb3VudCsrOworICAgIF9jYWNoZWRUeXBlSWRlbnRpZmllcnMg
PSBuaWw7CiB9CiAKIC0gKE5TSW50ZWdlciludW1iZXJPZkl0ZW1zCkBAIC0xMzAsNDAgKzE0NCwz
OCBAQCBzdGF0aWMgQk9PTCBpc0ltYWdlVHlwZShOU1N0cmluZyAqdHlwZSkKICAgICByZXR1cm4g
W19pdGVtUHJvdmlkZXJzIGNvdW50XTsKIH0KIAotLSAodm9pZClzZXRJdGVtczooTlNBcnJheSAq
KWl0ZW1zCistICh2b2lkKXNldEl0ZW1zRnJvbU9iamVjdFJlcHJlc2VudGF0aW9uczooTlNBcnJh
eTxXZWJQYXN0ZWJvYXJkSXRlbURhdGEgKj4gKilpdGVtRGF0YQogewogICAgIE5TTXV0YWJsZUFy
cmF5ICpwcm92aWRlcnMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOwotICAgIGZvciAoTlNEaWN0
aW9uYXJ5ICppdGVtIGluIGl0ZW1zKSB7Ci0gICAgICAgIGlmICghaXRlbS5jb3VudCkKKyAgICBm
b3IgKFdlYlBhc3RlYm9hcmRJdGVtRGF0YSAqZGF0YSBpbiBpdGVtRGF0YSkgeworICAgICAgICBp
ZiAoIWRhdGEucmVwcmVzZW50aW5nT2JqZWN0cy5jb3VudCAmJiAhZGF0YS5hZGRpdGlvbmFsRGF0
YS5jb3VudCkKICAgICAgICAgICAgIGNvbnRpbnVlOworCiAgICAgICAgIFJldGFpblB0cjxVSUl0
ZW1Qcm92aWRlcj4gaXRlbVByb3ZpZGVyID0gYWRvcHROUyhbW2dldFVJSXRlbVByb3ZpZGVyQ2xh
c3MoKSBhbGxvY10gaW5pdF0pOwotICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFy
eT4gaXRlbVJlcHJlc2VudGF0aW9uc0NvcHkgPSBhZG9wdE5TKFtpdGVtIG11dGFibGVDb3B5XSk7
Ci0gICAgICAgIC8vIEZpcnN0LCBsZXQgdGhlIHBsYXRmb3JtIHdyaXRlIGFsbCB0aGUgZGVmYXVs
dCBvYmplY3QgdHlwZXMgaXQgY2FuIHJlY29nbml6ZSwgc3VjaCBhcyBOU1N0cmluZyBhbmQgTlNV
UkwuCi0gICAgICAgIGZvciAoTlNTdHJpbmcgKnR5cGVJZGVudGlmaWVyIGluIFtpdGVtUmVwcmVz
ZW50YXRpb25zQ29weSBhbGxLZXlzXSkgewotICAgICAgICAgICAgaWQgcmVwcmVzZW50aW5nT2Jq
ZWN0ID0gW2l0ZW1SZXByZXNlbnRhdGlvbnNDb3B5IG9iamVjdEZvcktleTp0eXBlSWRlbnRpZmll
cl07CisgICAgICAgIC8vIEZpcnN0LCByZWdpc3RlciBhbGwgcGxhdGZvcm0gb2JqZWN0cywgcHJp
b3JpdGl6aW5nIG9iamVjdHMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgYXJyYXkuCisgICAgICAg
IGZvciAoaWQgcmVwcmVzZW50aW5nT2JqZWN0IGluIGRhdGEucmVwcmVzZW50aW5nT2JqZWN0cykg
ewogICAgICAgICAgICAgaWYgKCFbcmVwcmVzZW50aW5nT2JqZWN0IGNvbmZvcm1zVG9Qcm90b2Nv
bDpAcHJvdG9jb2woVUlJdGVtUHJvdmlkZXJXcml0aW5nKV0pCiAgICAgICAgICAgICAgICAgY29u
dGludWU7CiAKLSAgICAgICAgICAgIGlkIDxVSUl0ZW1Qcm92aWRlcldyaXRpbmc+IG9iamVjdFRv
V3JpdGUgPSAoaWQgPFVJSXRlbVByb3ZpZGVyV3JpdGluZz4pcmVwcmVzZW50aW5nT2JqZWN0Owot
ICAgICAgICAgICAgaWYgKCFbb2JqZWN0VG9Xcml0ZS53cml0YWJsZVR5cGVJZGVudGlmaWVyc0Zv
ckl0ZW1Qcm92aWRlciBjb250YWluc09iamVjdDp0eXBlSWRlbnRpZmllcl0pCi0gICAgICAgICAg
ICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIFtpdGVtUmVwcmVzZW50YXRpb25zQ29weSBy
ZW1vdmVPYmplY3RGb3JLZXk6dHlwZUlkZW50aWZpZXJdOwotICAgICAgICAgICAgW2l0ZW1Qcm92
aWRlciByZWdpc3Rlck9iamVjdDpvYmplY3RUb1dyaXRlIG9wdGlvbnM6bmlsXTsKKyAgICAgICAg
ICAgIFtpdGVtUHJvdmlkZXIgcmVnaXN0ZXJPYmplY3Q6KGlkIDxVSUl0ZW1Qcm92aWRlcldyaXRp
bmc+KXJlcHJlc2VudGluZ09iamVjdCBvcHRpb25zOm5pbF07CiAgICAgICAgIH0KIAotICAgICAg
ICAvLyBTZWNvbmRseSwgV2ViS2l0IHVzZXMgc29tZSBjdXN0b20gdHlwZSByZXByZXNlbnRhdGlv
bnMgYW5kL29yIHR5cGUgaWRlbnRpZmllcnMsIHNvIHdlIG5lZWQgdG8gd3JpdGUgdGhlc2UgYXMg
d2VsbC4KLSAgICAgICAgZm9yIChOU1N0cmluZyAqdHlwZUlkZW50aWZpZXIgaW4gaXRlbVJlcHJl
c2VudGF0aW9uc0NvcHkuZ2V0KCkpIHsKKyAgICAgICAgLy8gTmV4dCwgcmVnaXN0ZXIgb3RoZXIg
Y3VzdG9tIGRhdGEgcmVwcmVzZW50YXRpb25zIGZvciB0eXBlIGlkZW50aWZpZXJzLgorICAgICAg
ICBOU0RpY3Rpb25hcnkgPE5TU3RyaW5nICosIE5TRGF0YSAqPiAqYWRkaXRpb25hbERhdGEgPSBk
YXRhLmFkZGl0aW9uYWxEYXRhOworICAgICAgICBmb3IgKE5TU3RyaW5nICp0eXBlSWRlbnRpZmll
ciBpbiBhZGRpdGlvbmFsRGF0YSkgeworICAgICAgICAgICAgaWYgKCFbYWRkaXRpb25hbERhdGFb
dHlwZUlkZW50aWZpZXJdIGlzS2luZE9mQ2xhc3M6W05TRGF0YSBjbGFzc11dKQorICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworCiAgICAgICAgICAgICBbaXRlbVByb3ZpZGVyIHJlZ2lzdGVyRGF0
YVJlcHJlc2VudGF0aW9uRm9yVHlwZUlkZW50aWZpZXI6dHlwZUlkZW50aWZpZXIgb3B0aW9uczpu
aWwgbG9hZEhhbmRsZXI6Xk5TUHJvZ3Jlc3MgKihVSUl0ZW1Qcm92aWRlckRhdGFMb2FkQ29tcGxl
dGlvbkJsb2NrIGNvbXBsZXRpb25CbG9jaykKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBjb21wbGV0aW9uQmxvY2soW2l0ZW1SZXByZXNlbnRhdGlvbnNDb3B5IG9iamVjdEZvcktleTp0
eXBlSWRlbnRpZmllcl0sIG5pbCk7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkJsb2NrKGFk
ZGl0aW9uYWxEYXRhW3R5cGVJZGVudGlmaWVyXSwgbmlsKTsKICAgICAgICAgICAgICAgICByZXR1
cm4gW05TUHJvZ3Jlc3MgZGlzY3JldGVQcm9ncmVzc1dpdGhUb3RhbFVuaXRDb3VudDoxMDBdOwog
ICAgICAgICAgICAgfV07CiAgICAgICAgIH0KICAgICAgICAgW3Byb3ZpZGVycyBhZGRPYmplY3Q6
aXRlbVByb3ZpZGVyLmdldCgpXTsKICAgICB9Ci0gICAgX2NoYW5nZUNvdW50Kys7Ci0gICAgX2l0
ZW1Qcm92aWRlcnMgPSBwcm92aWRlcnM7CisKKyAgICBzZWxmLml0ZW1Qcm92aWRlcnMgPSBwcm92
aWRlcnM7CiB9CiAKIC0gKE5TQXJyYXkgKilkYXRhRm9yUGFzdGVib2FyZFR5cGU6KE5TU3RyaW5n
ICopcGFzdGVib2FyZFR5cGUgaW5JdGVtU2V0OihOU0luZGV4U2V0ICopaXRlbVNldApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCBhMTky
OTU1NzkxMzczZDU1OTU0ZjEwYmExNjRiMGJiNGExNTRkNTZiLi43MWU3ZTdkMzgxMjEwMWJhMmZk
NDg2ZjhhMzdiNDM4ZGM1M2UwMTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMTQwNCw2ICsxNDA0LDcgQEAgdm9pZCBBcmd1bWVu
dENvZGVyPFBhc3RlYm9hcmRXZWJDb250ZW50Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNv
bnN0IFBhc3RlYm8KICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgY29udGVudC5kYXRh
SW5XZWJBcmNoaXZlRm9ybWF0LmdldCgpKTsKICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2Rl
ciwgY29udGVudC5kYXRhSW5SVEZERm9ybWF0LmdldCgpKTsKICAgICBlbmNvZGVTaGFyZWRCdWZm
ZXIoZW5jb2RlciwgY29udGVudC5kYXRhSW5SVEZGb3JtYXQuZ2V0KCkpOworICAgIGVuY29kZVNo
YXJlZEJ1ZmZlcihlbmNvZGVyLCBjb250ZW50LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQu
Z2V0KCkpOwogCiAgICAgZW5jb2RlciA8PCBjb250ZW50LmNsaWVudFR5cGVzOwogICAgIGVuY29k
ZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGNvbnRlbnQuY2xpZW50RGF0YS5zaXplKCkpOwpA
QCAtMTQyMyw2ICsxNDI0LDggQEAgYm9vbCBBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRXZWJDb250
ZW50Pjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFBhc3RlYm9hcmRXZWIKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGNvbnRlbnQu
ZGF0YUluUlRGRm9ybWF0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rl
U2hhcmVkQnVmZmVyKGRlY29kZXIsIGNvbnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1h
dCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvbnRl
bnQuY2xpZW50VHlwZXMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgdWludDY0X3QgY2xp
ZW50RGF0YVNpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tCmluZGV4IGM4NDJkOGVkMzZkNWNhYTc0ZTk0N2QzMDRiMzg2NTUyZTQ1MzA3NWEu
LjExODc3Y2IzMDZiMzllN2QxN2FkNzdhZjdlMmNlMzRiMTZjMGUxMDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC01Mzc4LDYgKzUz
NzgsOCBAQCBzdGF0aWMgV2ViQ29yZTo6VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiB0b1Vz
ZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24oVUlTZQogICAgIFdlYktpdDo6Vmlld1NuYXBzaG90
U3RvcmU6OnNpbmdsZXRvbigpLnNldERpc2FibGVTbmFwc2hvdFZvbGF0aWxpdHlGb3JUZXN0aW5n
KHRydWUpOwogfQogCisjaWYgUExBVEZPUk0oSU9TKQorCiAtICh2b2lkKV9zaW11bGF0ZURhdGFJ
bnRlcmFjdGlvbkVudGVyZWQ6KGlkKWluZm8KIHsKICNpZiBFTkFCTEUoREFUQV9JTlRFUkFDVElP
TikKQEAgLTU0MzYsNiArNTQzOCw4IEBAIHN0YXRpYyBXZWJDb3JlOjpVc2VySW50ZXJmYWNlTGF5
b3V0RGlyZWN0aW9uIHRvVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbihVSVNlCiAjZW5kaWYK
IH0KIAorI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKKwogQGVuZAogCiAKZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkMzI4NGRmY2RjYzMwNmNkMDhm
MGYwZjM3NWQ3N2YwNzU5NTAzYTMyLi5hZGM2NjNkNjBjYTAyOGRlNGIzMjY4ZjAxNzAyMzhjMTgz
ZmRlMGRhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjQgQEAKKzIwMTctMDQtMDMgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2ll
aEBhcHBsZS5jb20+CisKKyAgICAgICAgRGF0YSBpbnRlcmFjdGlvbiBzaG91bGQgcmVnaXN0ZXIg
dHlwZSBpZGVudGlmaWVycyBpbiBvcmRlciBvZiBwcmlvcml0eQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwNDI4CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8zMDYzMzI5Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBdWdtZW50cyBleGlzdGluZyB1bml0IHRlc3RzIHRvIGNoZWNrIGZvciB0aGUgZXhp
c3RlbmNlIGFuZCBwcmlvcml0eSBvZiB0eXBlIGlkZW50aWZpZXJzIGluIHRoZSBVSUl0ZW1Qcm92
aWRlcnMKKyAgICAgICAgY3JlYXRlZCB1cG9uIHN0YXJ0aW5nIGRhdGEgaW50ZXJhY3Rpb24uIEFs
c28gZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiBvbmUgb2YgdGhlIHVuaXQgdGVzdHMgYW5kIGFk
ZHMgYSBuZXcgdW5pdAorICAgICAgICB0ZXN0IGZvciBkYXRhIGludGVyYWN0aW9uIGZyb20gYSB0
ZXh0YXJlYSB0byBhbiBpbnB1dC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvaW9z
L0RhdGFJbnRlcmFjdGlvblRlc3RzLm1tOgorICAgICAgICAoY2hlY2tUeXBlSWRlbnRpZmllclBy
ZWNlZGVzT3RoZXJUeXBlSWRlbnRpZmllcik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNU
KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2lvcy9EYXRhSW50ZXJhY3Rpb25TaW11bGF0b3Iu
aDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2lvcy9EYXRhSW50ZXJhY3Rpb25TaW11bGF0b3Iu
bW06CisgICAgICAgICgtW0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBfYWR2YW5jZVByb2dyZXNz
XSk6CisgICAgICAgICgtW0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBzb3VyY2VJdGVtUHJvdmlk
ZXJzXSk6CisgICAgICAgICgtW0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBfd2ViVmlldzpzaG93
Q3VzdG9tU2hlZXRGb3JFbGVtZW50Ol0pOgorCiAyMDE3LTAzLTMxICBUaW0gSG9ydG9uICA8dGlt
b3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIE1haWwgY2FuIGdldCBzdHVjayB1bmRl
cm5lYXRoIEZpbmRDb250cm9sbGVyOjpmaW5kU3RyaW5nTWF0Y2hlcyBhZnRlciBzZWFyY2hpbmcg
aW4gYSBsb25nIG1lc3NhZ2UKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
aW9zL0RhdGFJbnRlcmFjdGlvblRlc3RzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9p
b3MvRGF0YUludGVyYWN0aW9uVGVzdHMubW0KaW5kZXggODhiNWNhZDA1NzA0M2RjODk5Y2M5YzNi
Y2FmYmE0YmQxYzkwMWFmMi4uOGYzYmNkMmNkNGU0NThkZGNiNTRlMmZhMzM3YzA4NTJhODMzNDcz
NyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRGF0YUludGVyYWN0
aW9uVGVzdHMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRGF0YUludGVy
YWN0aW9uVGVzdHMubW0KQEAgLTYyLDYgKzYyLDE0IEBAIHN0YXRpYyB2b2lkIGNoZWNrU2VsZWN0
aW9uUmVjdHNXaXRoTG9nZ2luZyhOU0FycmF5ICpleHBlY3RlZCwgTlNBcnJheSAqb2JzZXJ2ZWQp
CiAgICAgRVhQRUNUX1RSVUUoW2V4cGVjdGVkIGlzRXF1YWxUb0FycmF5Om9ic2VydmVkXSk7CiB9
CiAKK3N0YXRpYyB2b2lkIGNoZWNrVHlwZUlkZW50aWZpZXJQcmVjZWRlc090aGVyVHlwZUlkZW50
aWZpZXIoRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yICpzaW11bGF0b3IsIE5TU3RyaW5nICpmaXJz
dFR5cGUsIE5TU3RyaW5nICpzZWNvbmRUeXBlKQoreworICAgIE5TQXJyYXkgKnJlZ2lzdGVyZWRU
eXBlcyA9IFtzaW11bGF0b3Iuc291cmNlSXRlbVByb3ZpZGVycy5maXJzdE9iamVjdCByZWdpc3Rl
cmVkVHlwZUlkZW50aWZpZXJzXTsKKyAgICBFWFBFQ1RfVFJVRShbcmVnaXN0ZXJlZFR5cGVzIGNv
bnRhaW5zT2JqZWN0OmZpcnN0VHlwZV0pOworICAgIEVYUEVDVF9UUlVFKFtyZWdpc3RlcmVkVHlw
ZXMgY29udGFpbnNPYmplY3Q6c2Vjb25kVHlwZV0pOworICAgIEVYUEVDVF9UUlVFKFtyZWdpc3Rl
cmVkVHlwZXMgaW5kZXhPZk9iamVjdDpmaXJzdFR5cGVdIDwgW3JlZ2lzdGVyZWRUeXBlcyBpbmRl
eE9mT2JqZWN0OnNlY29uZFR5cGVdKTsKK30KKwogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewog
CiBURVNUKERhdGFJbnRlcmFjdGlvblRlc3RzLCBJbWFnZVRvQ29udGVudEVkaXRhYmxlKQpAQCAt
NzksNiArODcsNyBAQCBURVNUKERhdGFJbnRlcmFjdGlvblRlc3RzLCBJbWFnZVRvQ29udGVudEVk
aXRhYmxlKQogICAgIEVYUEVDVF9UUlVFKFtvYnNlcnZlZEV2ZW50TmFtZXMgY29udGFpbnNPYmpl
Y3Q6RGF0YUludGVyYWN0aW9uT3ZlckV2ZW50TmFtZV0pOwogICAgIEVYUEVDVF9UUlVFKFtvYnNl
cnZlZEV2ZW50TmFtZXMgY29udGFpbnNPYmplY3Q6RGF0YUludGVyYWN0aW9uUGVyZm9ybU9wZXJh
dGlvbkV2ZW50TmFtZV0pOwogICAgIGNoZWNrU2VsZWN0aW9uUmVjdHNXaXRoTG9nZ2luZyhAWyBt
YWtlQ0dSZWN0VmFsdWUoMSwgMjAxLCAyMTUsIDE3NCkgXSwgW2RhdGFJbnRlcmFjdGlvblNpbXVs
YXRvciBmaW5hbFNlbGVjdGlvblJlY3RzXSk7CisgICAgY2hlY2tUeXBlSWRlbnRpZmllclByZWNl
ZGVzT3RoZXJUeXBlSWRlbnRpZmllcihkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IuZ2V0KCksIChO
U1N0cmluZyAqKWtVVFR5cGVQTkcsIChOU1N0cmluZyAqKWtVVFR5cGVGaWxlVVJMKTsKIH0KIAog
VEVTVChEYXRhSW50ZXJhY3Rpb25UZXN0cywgSW1hZ2VUb1RleHRhcmVhKQpAQCAtOTksNiArMTA4
LDcgQEAgVEVTVChEYXRhSW50ZXJhY3Rpb25UZXN0cywgSW1hZ2VUb1RleHRhcmVhKQogCiAgICAg
TlNBcnJheSAqZXhwZWN0ZWRTZWxlY3Rpb25SZWN0cyA9IFtOU0FycmF5IGFycmF5V2l0aE9iamVj
dHM6bWFrZUNHUmVjdFZhbHVlKDYsIDIwMywgMTg4LCAxNCksIG1ha2VDR1JlY3RWYWx1ZSg2LCAy
MTcsIDE4OCwgMTQpLCBtYWtlQ0dSZWN0VmFsdWUoNiwgMjMxLCA2NiwgMTQpLCBuaWxdOwogICAg
IGNoZWNrU2VsZWN0aW9uUmVjdHNXaXRoTG9nZ2luZyhleHBlY3RlZFNlbGVjdGlvblJlY3RzLCBb
ZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIGZpbmFsU2VsZWN0aW9uUmVjdHNdKTsKKyAgICBjaGVj
a1R5cGVJZGVudGlmaWVyUHJlY2VkZXNPdGhlclR5cGVJZGVudGlmaWVyKGRhdGFJbnRlcmFjdGlv
blNpbXVsYXRvci5nZXQoKSwgKE5TU3RyaW5nICopa1VUVHlwZVBORywgKE5TU3RyaW5nICopa1VU
VHlwZUZpbGVVUkwpOwogfQogCiBURVNUKERhdGFJbnRlcmFjdGlvblRlc3RzLCBDb250ZW50RWRp
dGFibGVUb0NvbnRlbnRFZGl0YWJsZSkKQEAgLTExNyw2ICsxMjcsNyBAQCBURVNUKERhdGFJbnRl
cmFjdGlvblRlc3RzLCBDb250ZW50RWRpdGFibGVUb0NvbnRlbnRFZGl0YWJsZSkKICAgICBFWFBF
Q1RfVFJVRShbb2JzZXJ2ZWRFdmVudE5hbWVzIGNvbnRhaW5zT2JqZWN0OkRhdGFJbnRlcmFjdGlv
bk92ZXJFdmVudE5hbWVdKTsKICAgICBFWFBFQ1RfVFJVRShbb2JzZXJ2ZWRFdmVudE5hbWVzIGNv
bnRhaW5zT2JqZWN0OkRhdGFJbnRlcmFjdGlvblBlcmZvcm1PcGVyYXRpb25FdmVudE5hbWVdKTsK
ICAgICBjaGVja1NlbGVjdGlvblJlY3RzV2l0aExvZ2dpbmcoQFsgbWFrZUNHUmVjdFZhbHVlKDEs
IDIwMSwgOTYxLCAyMjcpIF0sIFtkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgZmluYWxTZWxlY3Rp
b25SZWN0c10pOworICAgIGNoZWNrVHlwZUlkZW50aWZpZXJQcmVjZWRlc090aGVyVHlwZUlkZW50
aWZpZXIoZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yLmdldCgpLCAoTlNTdHJpbmcgKilrVVRUeXBl
UlRGRCwgKE5TU3RyaW5nICopa1VUVHlwZVVURjhQbGFpblRleHQpOwogfQogCiBURVNUKERhdGFJ
bnRlcmFjdGlvblRlc3RzLCBDb250ZW50RWRpdGFibGVUb1RleHRhcmVhKQpAQCAtMTM1LDYgKzE0
NiwyMCBAQCBURVNUKERhdGFJbnRlcmFjdGlvblRlc3RzLCBDb250ZW50RWRpdGFibGVUb1RleHRh
cmVhKQogICAgIEVYUEVDVF9UUlVFKFtvYnNlcnZlZEV2ZW50TmFtZXMgY29udGFpbnNPYmplY3Q6
RGF0YUludGVyYWN0aW9uT3ZlckV2ZW50TmFtZV0pOwogICAgIEVYUEVDVF9UUlVFKFtvYnNlcnZl
ZEV2ZW50TmFtZXMgY29udGFpbnNPYmplY3Q6RGF0YUludGVyYWN0aW9uUGVyZm9ybU9wZXJhdGlv
bkV2ZW50TmFtZV0pOwogICAgIGNoZWNrU2VsZWN0aW9uUmVjdHNXaXRoTG9nZ2luZyhAWyBtYWtl
Q0dSZWN0VmFsdWUoNiwgMjAzLCA5OTAsIDIzMikgXSwgW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRv
ciBmaW5hbFNlbGVjdGlvblJlY3RzXSk7CisgICAgY2hlY2tUeXBlSWRlbnRpZmllclByZWNlZGVz
T3RoZXJUeXBlSWRlbnRpZmllcihkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IuZ2V0KCksIChOU1N0
cmluZyAqKWtVVFR5cGVSVEZELCAoTlNTdHJpbmcgKilrVVRUeXBlVVRGOFBsYWluVGV4dCk7Cit9
CisKK1RFU1QoRGF0YUludGVyYWN0aW9uVGVzdHMsIFRleHRBcmVhVG9JbnB1dCkKK3sKKyAgICBS
ZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7CisgICAg
W3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAidGV4dGFyZWEtdG8taW5w
dXQiXTsKKworICAgIFJldGFpblB0cjxEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3I+IGRhdGFJbnRl
cmFjdGlvblNpbXVsYXRvciA9IGFkb3B0TlMoW1tEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgYWxs
b2NdIGluaXRXaXRoV2ViVmlldzp3ZWJWaWV3LmdldCgpXSk7CisgICAgW2RhdGFJbnRlcmFjdGlv
blNpbXVsYXRvciBydW5Gcm9tOkNHUG9pbnRNYWtlKDEwMCwgNTApIHRvOkNHUG9pbnRNYWtlKDEw
MCwgMzAwKV07CisKKyAgICBFWFBFQ1RfRVEoW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2
YVNjcmlwdDpAInNvdXJjZS52YWx1ZSJdLmxlbmd0aCwgMFVMKTsKKyAgICBFWFBFQ1RfV0tfU1RS
RVEoIkhlbGxvIHdvcmxkIiwgW3dlYlZpZXcgZWRpdG9yVmFsdWVdLlVURjhTdHJpbmcpOworICAg
IGNoZWNrU2VsZWN0aW9uUmVjdHNXaXRoTG9nZ2luZyhAWyBtYWtlQ0dSZWN0VmFsdWUoMTAxLCAy
NDEsIDk5MCwgMjMyKSBdLCBbZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIGZpbmFsU2VsZWN0aW9u
UmVjdHNdKTsKIH0KIAogVEVTVChEYXRhSW50ZXJhY3Rpb25UZXN0cywgTGlua1RvSW5wdXQpCkBA
IC0xNTIsNiArMTc3LDcgQEAgVEVTVChEYXRhSW50ZXJhY3Rpb25UZXN0cywgTGlua1RvSW5wdXQp
CiAgICAgRVhQRUNUX1RSVUUoW29ic2VydmVkRXZlbnROYW1lcyBjb250YWluc09iamVjdDpEYXRh
SW50ZXJhY3Rpb25PdmVyRXZlbnROYW1lXSk7CiAgICAgRVhQRUNUX1RSVUUoW29ic2VydmVkRXZl
bnROYW1lcyBjb250YWluc09iamVjdDpEYXRhSW50ZXJhY3Rpb25QZXJmb3JtT3BlcmF0aW9uRXZl
bnROYW1lXSk7CiAgICAgY2hlY2tTZWxlY3Rpb25SZWN0c1dpdGhMb2dnaW5nKEBbIG1ha2VDR1Jl
Y3RWYWx1ZSgxMDEsIDI3MywgMjA1NywgMjMyKSBdLCBbZGF0YUludGVyYWN0aW9uU2ltdWxhdG9y
IGZpbmFsU2VsZWN0aW9uUmVjdHNdKTsKKyAgICBjaGVja1R5cGVJZGVudGlmaWVyUHJlY2VkZXNP
dGhlclR5cGVJZGVudGlmaWVyKGRhdGFJbnRlcmFjdGlvblNpbXVsYXRvci5nZXQoKSwgKE5TU3Ry
aW5nICopa1VUVHlwZVVSTCwgKE5TU3RyaW5nICopa1VUVHlwZVVURjhQbGFpblRleHQpOwogfQog
CiBURVNUKERhdGFJbnRlcmFjdGlvblRlc3RzLCBCYWNrZ3JvdW5kSW1hZ2VMaW5rVG9JbnB1dCkK
QEAgLTE2OSw2ICsxOTUsNyBAQCBURVNUKERhdGFJbnRlcmFjdGlvblRlc3RzLCBCYWNrZ3JvdW5k
SW1hZ2VMaW5rVG9JbnB1dCkKICAgICBFWFBFQ1RfVFJVRShbb2JzZXJ2ZWRFdmVudE5hbWVzIGNv
bnRhaW5zT2JqZWN0OkRhdGFJbnRlcmFjdGlvbk92ZXJFdmVudE5hbWVdKTsKICAgICBFWFBFQ1Rf
VFJVRShbb2JzZXJ2ZWRFdmVudE5hbWVzIGNvbnRhaW5zT2JqZWN0OkRhdGFJbnRlcmFjdGlvblBl
cmZvcm1PcGVyYXRpb25FdmVudE5hbWVdKTsKICAgICBjaGVja1NlbGVjdGlvblJlY3RzV2l0aExv
Z2dpbmcoQFsgbWFrZUNHUmVjdFZhbHVlKDEwMSwgMjQxLCAyMDU3LCAyMzIpIF0sIFtkYXRhSW50
ZXJhY3Rpb25TaW11bGF0b3IgZmluYWxTZWxlY3Rpb25SZWN0c10pOworICAgIGNoZWNrVHlwZUlk
ZW50aWZpZXJQcmVjZWRlc090aGVyVHlwZUlkZW50aWZpZXIoZGF0YUludGVyYWN0aW9uU2ltdWxh
dG9yLmdldCgpLCAoTlNTdHJpbmcgKilrVVRUeXBlVVJMLCAoTlNTdHJpbmcgKilrVVRUeXBlVVRG
OFBsYWluVGV4dCk7CiB9CiAKIFRFU1QoRGF0YUludGVyYWN0aW9uVGVzdHMsIENhblByZXZlbnRT
dGFydCkKQEAgLTI5OCw2ICszMjUsNyBAQCBURVNUKERhdGFJbnRlcmFjdGlvblRlc3RzLCBMYXJn
ZUltYWdlVG9UYXJnZXREaXYpCiAgICAgUmV0YWluUHRyPERhdGFJbnRlcmFjdGlvblNpbXVsYXRv
cj4gZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yID0gYWRvcHROUyhbW0RhdGFJbnRlcmFjdGlvblNp
bXVsYXRvciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3OndlYlZpZXcuZ2V0KCldKTsKICAgICBbZGF0
YUludGVyYWN0aW9uU2ltdWxhdG9yIHJ1bkZyb206Q0dQb2ludE1ha2UoMjAwLCA0MDApIHRvOkNH
UG9pbnRNYWtlKDIwMCwgMTUwKV07CiAgICAgRVhQRUNUX1dLX1NUUkVRKCJQQVNTIiwgW3dlYlZp
ZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInRhcmdldC50ZXh0Q29udGVudCJdLlVU
RjhTdHJpbmcpOworICAgIGNoZWNrVHlwZUlkZW50aWZpZXJQcmVjZWRlc090aGVyVHlwZUlkZW50
aWZpZXIoZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yLmdldCgpLCAoTlNTdHJpbmcgKilrVVRUeXBl
UE5HLCAoTlNTdHJpbmcgKilrVVRUeXBlRmlsZVVSTCk7CiB9CiAKIFRFU1QoRGF0YUludGVyYWN0
aW9uVGVzdHMsIExpbmtXaXRoRW1wdHlIUkVGKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9pb3MvRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L2lvcy9EYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IuaAppbmRleCBmYTExMGE2ZGY3ZThiMjcxMzlk
ZWM0OWQ2MWIwZDRiYzUyNDYyN2NhLi4zMzZiZGZkODkxNTU2YzMxMTc2ODgzNjU3MmJjMDU1YjZl
YzE3ZmVmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9EYXRhSW50ZXJhY3Rp
b25TaW11bGF0b3IuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9EYXRhSW50ZXJhY3Rp
b25TaW11bGF0b3IuaApAQCAtNTUsNiArNTUsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2Vy
LCBEYXRhSW50ZXJhY3Rpb25QaGFzZSkgewogICAgIFJldGFpblB0cjxNb2NrRGF0YU9wZXJhdGlv
blNlc3Npb24+IF9kYXRhT3BlcmF0aW9uU2Vzc2lvbjsKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxl
QXJyYXk+IF9vYnNlcnZlZEV2ZW50TmFtZXM7CiAgICAgUmV0YWluUHRyPFVJSXRlbVByb3ZpZGVy
PiBfZXh0ZXJuYWxJdGVtUHJvdmlkZXI7CisgICAgUmV0YWluUHRyPE5TQXJyYXkgKj4gX3NvdXJj
ZUl0ZW1Qcm92aWRlcnM7CiAgICAgUmV0YWluUHRyPE5TQXJyYXkgKj4gX2ZpbmFsU2VsZWN0aW9u
UmVjdHM7CiAgICAgQ0dQb2ludCBfc3RhcnRMb2NhdGlvbjsKICAgICBDR1BvaW50IF9lbmRMb2Nh
dGlvbjsKQEAgLTcxLDYgKzcyLDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgRGF0YUlu
dGVyYWN0aW9uUGhhc2UpIHsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCbG9ja1B0cjxCT09MKF9X
S0FjdGl2YXRlZEVsZW1lbnRJbmZvICopPiBzaG93Q3VzdG9tQWN0aW9uU2hlZXRCbG9jazsKIEBw
cm9wZXJ0eSAobm9uYXRvbWljKSBCbG9ja1B0cjxOU0FycmF5ICooTlNBcnJheSAqKT4gY29udmVy
dEl0ZW1Qcm92aWRlcnNCbG9jazsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzdHJvbmcpIFVJSXRl
bVByb3ZpZGVyICpleHRlcm5hbEl0ZW1Qcm92aWRlcjsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBy
ZWFkb25seSkgTlNBcnJheSAqc291cmNlSXRlbVByb3ZpZGVyczsKIEBwcm9wZXJ0eSAobm9uYXRv
bWljLCByZWFkb25seSkgTlNBcnJheSAqb2JzZXJ2ZWRFdmVudE5hbWVzOwogQHByb3BlcnR5IChu
b25hdG9taWMsIHJlYWRvbmx5KSBOU0FycmF5ICpmaW5hbFNlbGVjdGlvblJlY3RzOwogQHByb3Bl
cnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBEYXRhSW50ZXJhY3Rpb25QaGFzZSBwaGFzZTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL0RhdGFJbnRlcmFjdGlvblNpbXVsYXRv
ci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvci5t
bQppbmRleCAxM2Y0YTBiZmE4NWZhOGQ2NjA1MmRiZjhjMTVlM2E3ZmUwZDE0ZTM1Li5hZTE2Yzlk
ODg0NjQ2NWJkNmE1M2EwNDg5MDEyODYwYTQwNzBiZmI4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL2lvcy9EYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IubW0KKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9pb3MvRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yLm1tCkBAIC0yMDIsMTAgKzIw
MiwxNCBAQCBzdGF0aWMgTlNBcnJheSAqZGF0YUludGVyYWN0aW9uRXZlbnROYW1lcygpCiAKICAg
ICAgICAgX2RhdGFPcGVyYXRpb25TZXNzaW9uID0gYWRvcHROUyhbW01vY2tEYXRhT3BlcmF0aW9u
U2Vzc2lvbiBhbGxvY10gaW5pdFdpdGhQcm92aWRlcjppdGVtUHJvdmlkZXJzLmZpcnN0T2JqZWN0
IGxvY2F0aW9uOnNlbGYuX2N1cnJlbnRMb2NhdGlvbiB3aW5kb3c6W193ZWJWaWV3IHdpbmRvd11d
KTsKICAgICAgICAgW19kYXRhSW50ZXJhY3Rpb25TZXNzaW9uIHNldEl0ZW1zOml0ZW1zXTsKLSAg
ICAgICAgaWYgKCFzZWxmLnNob3dDdXN0b21BY3Rpb25TaGVldEJsb2NrKSB7Ci0gICAgICAgICAg
ICBbX3dlYlZpZXcgX3NpbXVsYXRlV2lsbEJlZ2luRGF0YUludGVyYWN0aW9uV2l0aFNlc3Npb246
X2RhdGFJbnRlcmFjdGlvblNlc3Npb24uZ2V0KCldOwotICAgICAgICAgICAgX3BoYXNlID0gRGF0
YUludGVyYWN0aW9uQmVnYW47CisgICAgICAgIF9zb3VyY2VJdGVtUHJvdmlkZXJzID0gaXRlbVBy
b3ZpZGVyczsKKyAgICAgICAgaWYgKHNlbGYuc2hvd0N1c3RvbUFjdGlvblNoZWV0QmxvY2spIHsK
KyAgICAgICAgICAgIC8vIERlZmVyIHByb2dyZXNzIHVudGlsIHRoZSBjdXN0b20gYWN0aW9uIHNo
ZWV0IGlzIGRpc21pc3NlZC4KKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorCisgICAg
ICAgIFtfd2ViVmlldyBfc2ltdWxhdGVXaWxsQmVnaW5EYXRhSW50ZXJhY3Rpb25XaXRoU2Vzc2lv
bjpfZGF0YUludGVyYWN0aW9uU2Vzc2lvbi5nZXQoKV07CisgICAgICAgIF9waGFzZSA9IERhdGFJ
bnRlcmFjdGlvbkJlZ2FuOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBEYXRhSW50
ZXJhY3Rpb25CZWdhbjoKQEAgLTIzNSw2ICsyMzksMTEgQEAgc3RhdGljIE5TQXJyYXkgKmRhdGFJ
bnRlcmFjdGlvbkV2ZW50TmFtZXMoKQogICAgIFtzZWxmIHBlcmZvcm1TZWxlY3RvcjpAc2VsZWN0
b3IoX2FkdmFuY2VQcm9ncmVzcykgd2l0aE9iamVjdDpuaWwgYWZ0ZXJEZWxheTpwcm9ncmVzc1Rp
bWVTdGVwXTsKIH0KIAorLSAoTlNBcnJheSAqKXNvdXJjZUl0ZW1Qcm92aWRlcnMKK3sKKyAgICBy
ZXR1cm4gX3NvdXJjZUl0ZW1Qcm92aWRlcnMuZ2V0KCk7Cit9CisKIC0gKFVJSXRlbVByb3ZpZGVy
ICopZXh0ZXJuYWxJdGVtUHJvdmlkZXIKIHsKICAgICByZXR1cm4gX2V4dGVybmFsSXRlbVByb3Zp
ZGVyLmdldCgpOwpAQCAtMjc0LDYgKzI4Myw3IEBAIHN0YXRpYyBOU0FycmF5ICpkYXRhSW50ZXJh
Y3Rpb25FdmVudE5hbWVzKCkKICAgICAgICAgRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yICp3ZWFr
U2VsZiA9IHN0cm9uZ1NlbGYuZ2V0KCk7CiAgICAgICAgIFt3ZWFrU2VsZi0+X3dlYlZpZXcgX3Np
bXVsYXRlV2lsbEJlZ2luRGF0YUludGVyYWN0aW9uV2l0aFNlc3Npb246d2Vha1NlbGYtPl9kYXRh
SW50ZXJhY3Rpb25TZXNzaW9uLmdldCgpXTsKICAgICAgICAgd2Vha1NlbGYtPl9waGFzZSA9IERh
dGFJbnRlcmFjdGlvbkJlZ2FuOworICAgICAgICBbd2Vha1NlbGYgX3NjaGVkdWxlQWR2YW5jZVBy
b2dyZXNzXTsKICAgICB9KTsKIAogICAgIHJldHVybiBzZWxmLnNob3dDdXN0b21BY3Rpb25TaGVl
dEJsb2NrKGVsZW1lbnQpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>306151</attachid>
            <date>2017-04-03 18:28:40 -0700</date>
            <delta_ts>2017-04-03 19:22:20 -0700</delta_ts>
            <desc>Fix 32-bit Mac build</desc>
            <filename>bug-170428-20170403182839.patch</filename>
            <type>text/plain</type>
            <size>40568</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0ODU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQ2NWMwMzYzMzE2YjBj
YzIyMzQ5MTgzMmRjMWZmMzI0OTg2OTEzNi4uZWZlMDM2ODhmYzUzZjBlODNhYmMyNWUxYzQ2MDNh
OTZjNDUyYWZkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDE3LTA0LTAzICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIERhdGEgaW50ZXJh
Y3Rpb24gc2hvdWxkIHJlZ2lzdGVyIHR5cGUgaWRlbnRpZmllcnMgaW4gb3JkZXIgb2YgcHJpb3Jp
dHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDQy
OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzA2MzMyOTY+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgVGltIEhvcnRvbi4KKworICAgICAgICBDdXJyZW50bHksIGR1ZSB0byB0aGUgc2hhcmVkIGxv
Z2ljIGZvciB3cml0aW5nIHRvIGEgVUlQYXN0ZWJvYXJkIChpbiB0aGUgY2FzZSBvZiBjb3B5L3Bh
c3RlKSBhbmQgdGhlIHNoYXJlZAorICAgICAgICBVSUl0ZW1Qcm92aWRlci1iYXNlZCBwYXN0ZWJv
YXJkIHdyYXBwZXIgKGluIHRoZSBjYXNlIG9mIGRhdGEgaW50ZXJhY3Rpb24pLCB3ZSBkb24ndCBl
bmZvcmNlIGFueSBwYXJ0aWN1bGFyCisgICAgICAgIG9yZGVyaW5nIGluIHdoaWNoIHR5cGUgaWRl
bnRpZmllcnMgYXJlIHJlZ2lzdGVyZWQgaW4gdGhlIGdlbmVyYXRlZCBpdGVtIHByb3ZpZGVyLiBU
aGlzIGlzIGJlY2F1c2UKKyAgICAgICAgLVtVSVBhc3RlYm9hcmQgc2V0SXRlbXM6XSBvbmx5IHRh
a2VzIGFuIHVub3JkZXJlZCBtYXBwaW5nIG9mIHR5cGUgaWRlbnRpZmllcnMgdG8gb2JqZWN0cy4K
KworICAgICAgICBUbyBmaXggdGhpcywgd2UgaW50cm9kdWNlIGEgc2VwYXJhdGUgd2F5IHRvIHNl
dCBwYXN0ZWJvYXJkIGRhdGEgdGhhdCBmaXJzdCB3cml0ZXMgYSBsaXN0IG9mIG9iamVjdAorICAg
ICAgICByZXByZXNlbnRhdGlvbnMgaW4gb3JkZXIgb2YgcHJpb3JpdHkgKHdoaWNoIGlzIGRlcGVu
ZGVudCBvbiB0aGUgY29udGVudCBiZWluZyBpbnRlcmFjdGVkIHdpdGgpIGFuZCB0aGVuIHJlZ2lz
dGVyCisgICAgICAgIGluZGl2aWR1YWwgdHlwZS1kYXRhIG1hcHBpbmdzIGF0IHRoZSBlbmQuCisK
KyAgICAgICAgQXVnbWVudGVkIGV4aXN0aW5nIEFQSSB0ZXN0cyBpbiBEYXRhSW50ZXJhY3Rpb25U
ZXN0cyB0byBjaGVjayBmb3IgdGhlIGV4aXN0ZW5jZSBhbmQgcHJpb3JpdHkgb2YgdHlwZSBpZGVu
dGlmaWVycworICAgICAgICBpbiB0aGUgVUlJdGVtUHJvdmlkZXJzIGNyZWF0ZWQgdXBvbiBzdGFy
dGluZyBkYXRhIGludGVyYWN0aW9uLiBBbHNvIGFkZHMgYSBuZXcgdW5pdCB0ZXN0OgorICAgICAg
ICBEYXRhSW50ZXJhY3Rpb25UZXN0cy5UZXh0QXJlYVRvSW5wdXQuCisKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9F
ZGl0b3JDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmFyY2hpdmVkRGF0YUZvckF0dHJpYnV0
ZWRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjp3cml0ZVNlbGVjdGlvblRvUGFz
dGVib2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OndyaXRlU2VsZWN0aW9uKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVi
b2FyZFdyaXRlckRhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvQWJzdHJhY3RQYXN0ZWJvYXJkLmg6CisgICAgICAg
ICogcGxhdGZvcm0vaW9zL0Fic3RyYWN0UGFzdGVib2FyZC5tbTogQ29waWVkIGZyb20gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL0Fic3RyYWN0UGFzdGVib2FyZC5oLgorCisgICAgICAgIElu
dHJvZHVjZSBXZWJQYXN0ZWJvYXJkSXRlbURhdGEsIGEgd3JhcHBlciBhcm91bmQgYSBsaXN0IG9m
IG9iamVjdHMgcmVwcmVzZW50YXRpbmcgdGhlIHBhc3RlYm9hcmQgZGF0YSBpbiBvcmRlcgorICAg
ICAgICBvZiBwcmlvcml0eSwgYW5kIGEgZGljdGlvbmFyeSBjb250YWluaW5nIGFkZGl0aW9uYWwg
TlNEYXRhIGJsb2JzIHRoYXQgY29udGFpbiBkYXRhIHVzZWZ1bCBmb3IgcHJpdmF0ZSBjbGllbnRz
LgorCisgICAgICAgICgrW1dlYlBhc3RlYm9hcmRJdGVtRGF0YSBpdGVtV2l0aFJlcHJlc2VudGlu
Z09iamVjdHM6YWRkaXRpb25hbERhdGE6XSk6CisgICAgICAgICgtW1dlYlBhc3RlYm9hcmRJdGVt
RGF0YSBpbml0V2l0aFJlcHJlc2VudGluZ09iamVjdHM6YWRkaXRpb25hbERhdGE6XSk6CisgICAg
ICAgICgtW1dlYlBhc3RlYm9hcmRJdGVtRGF0YSByZXByZXNlbnRpbmdPYmplY3RzXSk6CisgICAg
ICAgICgtW1dlYlBhc3RlYm9hcmRJdGVtRGF0YSBhZGRpdGlvbmFsRGF0YV0pOgorICAgICAgICAq
IHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3Jl
OjpyaWNoVGV4dFJlcHJlc2VudGF0aW9uc0ZvclBhc3RlYm9hcmRXZWJDb250ZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGVPYmplY3RSZXByZXNlbnRhdGlv
bnMpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZSk6CisKKyAg
ICAgICAgVHdlYWtlZCB0byBjaGVjayB3aGV0aGVyIHRoZSBwYXN0ZWJvYXJkIHJlc3BvbmRzIHRv
IC1zZXRJdGVtc0Zyb21PYmplY3RSZXByZXNlbnRhdGlvbnM6LiBJZiBzbywgdXNlcyB0aGUKKyAg
ICAgICAgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZU9iamVjdFJlcHJlc2VudGF0aW9ucyBjb2Rl
cGF0aCB0byB3cml0ZSBkYXRhIHRvIHRoZSBwYXN0ZWJvYXJkLCByZXNwZWN0aW5nIHR5cGUKKyAg
ICAgICAgcHJpb3JpdHkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVy
UGFzdGVib2FyZC5tbToKKyAgICAgICAgKC1bV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZCBwYXN0
ZWJvYXJkVHlwZXNdKToKKyAgICAgICAgKC1bV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZCBzZXRJ
dGVtUHJvdmlkZXJzOl0pOgorICAgICAgICAoLVtXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIHNl
dEl0ZW1zRnJvbU9iamVjdFJlcHJlc2VudGF0aW9uczpdKToKKworICAgICAgICBSZXBsYWNlcyAt
c2V0SXRlbXM6IHdpdGggLXNldEl0ZW1zRnJvbU9iamVjdFJlcHJlc2VudGF0aW9uczosIHdoaWNo
IHJlc3BlY3RzIHRoZSBwcmlvcml0eSBvZiBlYWNoIG9iamVjdAorICAgICAgICByZXByZXNlbnRh
dGlvbiBvZiB0aGUgZGF0YSBpbiB0aGUgcGFzdGVib2FyZC4KKworICAgICAgICAoLVtXZWJJdGVt
UHJvdmlkZXJQYXN0ZWJvYXJkIHNldEl0ZW1zOl0pOiBEZWxldGVkLgorCiAyMDE3LTA0LTAzICBK
YXZpZXIgRmVybmFuZGV6ICA8amZlcm5hbmRlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtjc3Mt
YWxpZ25dIEFkYXB0IHBsYWNlLWNvbnRlbnQgYWxpZ25tZW50IHNob3J0aGFuZCB0byB0aGUgbmV3
IGJhc2VsaW5lIHN5bnRheApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDgwOThlZWY2N2ZmZDkyNDBkMThhYWQzNDk3
YThmOWFmNzU4YzgwZGMuLjk2NmM2MjM5ZGM1YmM4YWRiYTgxMDU0ZTliZjM0ZDgxYmZjN2Y5OTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxNy0wNC0wMyAgV2Vuc29uIEhzaWVoICA8
d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBEYXRhIGludGVyYWN0aW9uIHNob3Vs
ZCByZWdpc3RlciB0eXBlIGlkZW50aWZpZXJzIGluIG9yZGVyIG9mIHByaW9yaXR5CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzA0MjgKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzMwNjMzMjk2PgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0
b24uCisKKyAgICAgICAgU2VyaWFsaXplIFBhc3RlYm9hcmRXZWJDb250ZW50LmRhdGFJbkF0dHJp
YnV0ZWRTdHJpbmdGb3JtYXQgd2hlbiBzZW5kaW5nIG92ZXIgSVBDLiBSZWZlciB0byBXZWJDb3Jl
IENoYW5nZUxvZworICAgICAgICBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAgICogU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
UGFzdGVib2FyZFdlYkNvbnRlbnQ+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENv
ZGVyPFBhc3RlYm9hcmRXZWJDb250ZW50Pjo6ZGVjb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbToKKwogMjAxNy0wNC0wMyAgSm9zZXBoIFBlY29yYXJvICA8
cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBubyBsb25nZXIgbmVlZGVkIGZv
cndhcmQgZGVjbGFyYXRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggYjEzZDM5M2ExMGM3ZTJjY2ViZmZiMWNkYzMwMmM2ZTFj
YjYxOTlhOC4uNzk0ODVhMjc2YTc5ZTVmYTMyMTUzNmE1YWRkZjRkMTVlM2ZkMTZjMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
NjgzMCw2ICs2ODMwLDcgQEAKIAkJRjQ4MjIzMTMxRTM4NkUyNDAwNjZGQzc5IC8qIEFic3RyYWN0
UGFzdGVib2FyZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjQ4MjIzMTIxRTM4NkUyNDAwNjZGQzc5IC8qIEFic3RyYWN0UGFzdGVib2FyZC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUY0QkZCOTg1MUUx
RERGOUIwMDg2MkMyNCAvKiBEdW1wRWRpdGluZ0hpc3RvcnkuanMgaW4gQ29weSBTY3JpcHRzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0ODM4OTgzMUUxRERGMkIwMDc2QjdF
QSAvKiBEdW1wRWRpdGluZ0hpc3RvcnkuanMgKi87IH07CiAJCUY0QkZCOTg2MUUxRERGOUIwMDg2
MkMyNCAvKiBFZGl0aW5nSGlzdG9yeVV0aWwuanMgaW4gQ29weSBTY3JpcHRzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0ODM4OTg0MUUxRERGMkIwMDc2QjdFQSAvKiBFZGl0
aW5nSGlzdG9yeVV0aWwuanMgKi87IH07CisJCUY0RDgzMTYyMUU5MDhDMDcwMDk0MTE3NCAvKiBB
YnN0cmFjdFBhc3RlYm9hcmQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGNEQ4MzE2MTFFOTA4QzA3MDA5NDExNzQgLyogQWJzdHJhY3RQYXN0ZWJvYXJk
Lm1tICovOyB9OwogCQlGNTA2NjRGNzE1N0Y1MkRDMDBBQzIyNkYgLyogRm9ybUNvbnRyb2xsZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjUwNjY0
RjUxNTdGNTJEQzAwQUMyMjZGIC8qIEZvcm1Db250cm9sbGVyLmNwcCAqLzsgfTsKIAkJRjUwNjY0
RjgxNTdGNTJEQzAwQUMyMjZGIC8qIEZvcm1Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTA2NjRGNjE1N0Y1MkRDMDBBQzIyNkYgLyog
Rm9ybUNvbnRyb2xsZXIuaCAqLzsgfTsKIAkJRjUxM0EzRUExNUZGNDg0MTAwMTUyNkRCIC8qIFZh
bGlkYXRpb25NZXNzYWdlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGNTEzQTNFOTE1RkY0ODQxMDAxNTI2REIgLyogVmFsaWRhdGlvbk1lc3Nh
Z2VDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtMTUzMzIsNiArMTUzMzMsNyBAQAogCQlGNDgyMjMxMjFFMzg2RTI0MDA2NkZDNzkgLyog
QWJzdHJhY3RQYXN0ZWJvYXJkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFi
c3RyYWN0UGFzdGVib2FyZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDgzODk4
MzFFMURERjJCMDA3NkI3RUEgLyogRHVtcEVkaXRpbmdIaXN0b3J5LmpzICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5qYXZhc2NyaXB0OyBuYW1lID0gRHVtcEVkaXRpbmdIaXN0b3J5LmpzOyBwYXRoID0g
U2NyaXB0cy9EdW1wRWRpdGluZ0hpc3RvcnkuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUY0ODM4OTg0MUUxRERGMkIwMDc2QjdFQSAvKiBFZGl0aW5nSGlzdG9yeVV0aWwuanMgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IG5hbWUgPSBFZGl0aW5nSGlzdG9yeVV0aWwu
anM7IHBhdGggPSBTY3JpcHRzL0VkaXRpbmdIaXN0b3J5VXRpbC5qczsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRjREODMxNjExRTkwOEMwNzAwOTQxMTc0IC8qIEFic3RyYWN0UGFzdGVi
b2FyZC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFic3RyYWN0
UGFzdGVib2FyZC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjUwNjY0RjUxNTdG
NTJEQzAwQUMyMjZGIC8qIEZvcm1Db250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEZvcm1Db250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRjUwNjY0RjYxNTdGNTJEQzAwQUMyMjZGIC8qIEZvcm1Db250cm9sbGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvcm1Db250cm9sbGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY1MTNBM0U5MTVGRjQ4NDEwMDE1MjZEQiAvKiBWYWxpZGF0
aW9uTWVzc2FnZUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWYWxp
ZGF0aW9uTWVzc2FnZUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjA4
NjMsNiArMjA4NjUsNyBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJQTE0ODMyOEIxODdGNTA2ODAw
REE2M0E2IC8qIHdhayAqLywKIAkJCQlGNDgyMjMxMjFFMzg2RTI0MDA2NkZDNzkgLyogQWJzdHJh
Y3RQYXN0ZWJvYXJkLmggKi8sCisJCQkJRjREODMxNjExRTkwOEMwNzAwOTQxMTc0IC8qIEFic3Ry
YWN0UGFzdGVib2FyZC5tbSAqLywKIAkJCQkyNjU1NDE0QjE0ODlBQTJCMDAwREZDNUQgLyogQ3Vy
c29ySU9TLmNwcCAqLywKIAkJCQlBMUVENzc4QTFCRTMyOTNGMDBEQzE3OTEgLyogRGV2aWNlLmNw
cCAqLywKIAkJCQlBMUVENzc4QjFCRTMyOTQwMDBEQzE3OTEgLyogRGV2aWNlLmggKi8sCkBAIC0z
MTYyOSw2ICszMTYzMiw3IEBACiAJCQkJQTYxNDhBNzgxMkU0MUUzQjAwNDRBNzg0IC8qIEpTSFRN
TEtleWdlbkVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFFMkFCMjEwQTFDRTYzQjAw
QjQyQjI1IC8qIEpTSFRNTExhYmVsRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUUy
QUIyMzBBMUNFNjNCMDBCNDJCMjUgLyogSlNIVE1MTGVnZW5kRWxlbWVudC5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlGNEQ4MzE2MjFFOTA4QzA3MDA5NDExNzQgLyogQWJzdHJhY3RQYXN0ZWJvYXJk
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFFMkFCMjUwQTFDRTYzQjAwQjQyQjI1IC8qIEpTSFRN
TExJRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODBFN0IxMDBBMTlENjA2MDA3RkI4
QzUgLyogSlNIVE1MTGlua0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFFMkFCMjcw
QTFDRTYzQjAwQjQyQjI1IC8qIEpTSFRNTE1hcEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQppbmRleCA0MDI4NmY0
MWQyZTcwNGFhODMxYTg0NThiNTAzMzUxNTMzNjgxNGE5Li4wNWM4OTA4NDQ2YTI2ODhkYmU0ODA2
OGZlN2EyNDcwMzVkYTk5MGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0VkaXRvckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRp
dG9yQ29jb2EubW0KQEAgLTE1Miw2ICsxNTIsMTQgQEAgRnJhZ21lbnRBbmRSZXNvdXJjZXMgRWRp
dG9yOjpjcmVhdGVGcmFnbWVudChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCitzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZWREYXRh
Rm9yQXR0cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcp
Cit7CisgICAgaWYgKCFhdHRyaWJ1dGVkU3RyaW5nLmxlbmd0aCkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjp3cmFwTlNEYXRhKFtOU0tleWVkQXJj
aGl2ZXIgYXJjaGl2ZWREYXRhV2l0aFJvb3RPYmplY3Q6YXR0cmlidXRlZFN0cmluZ10pOworfQor
CiB2b2lkIEVkaXRvcjo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoUGFzdGVib2FyZCYgcGFz
dGVib2FyZCkKIHsKICAgICBOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcgPSBh
dHRyaWJ1dGVkU3RyaW5nRnJvbVJhbmdlKCpzZWxlY3RlZFJhbmdlKCkpOwpAQCAtMTYxLDYgKzE2
OSw3IEBAIHZvaWQgRWRpdG9yOjp3cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChQYXN0ZWJvYXJk
JiBwYXN0ZWJvYXJkKQogICAgIGNvbnRlbnQuZGF0YUluV2ViQXJjaGl2ZUZvcm1hdCA9IHNlbGVj
dGlvbkluV2ViQXJjaGl2ZUZvcm1hdCgpOwogICAgIGNvbnRlbnQuZGF0YUluUlRGREZvcm1hdCA9
IGF0dHJpYnV0ZWRTdHJpbmcuY29udGFpbnNBdHRhY2htZW50cyA/IGRhdGFJblJURkRGb3JtYXQo
YXR0cmlidXRlZFN0cmluZykgOiBudWxscHRyOwogICAgIGNvbnRlbnQuZGF0YUluUlRGRm9ybWF0
ID0gZGF0YUluUlRGRm9ybWF0KGF0dHJpYnV0ZWRTdHJpbmcpOworICAgIGNvbnRlbnQuZGF0YUlu
QXR0cmlidXRlZFN0cmluZ0Zvcm1hdCA9IGFyY2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRTdHJpbmco
YXR0cmlidXRlZFN0cmluZyk7CiAgICAgLy8gRklYTUU6IFdoeSBkb24ndCB3ZSB3YW50IHRoaXMg
b24gaU9TPwogI2lmIFBMQVRGT1JNKE1BQykKICAgICBjb250ZW50LmRhdGFJbkhUTUxGb3JtYXQg
PSBzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKTsKQEAgLTE4MCw2ICsxODksNyBAQCB2b2lkIEVkaXRv
cjo6d3JpdGVTZWxlY3Rpb24oUGFzdGVib2FyZFdyaXRlckRhdGEmIHBhc3RlYm9hcmRXcml0ZXJE
YXRhKQogICAgIHdlYkNvbnRlbnQuZGF0YUluV2ViQXJjaGl2ZUZvcm1hdCA9IHNlbGVjdGlvbklu
V2ViQXJjaGl2ZUZvcm1hdCgpOwogICAgIHdlYkNvbnRlbnQuZGF0YUluUlRGREZvcm1hdCA9IGF0
dHJpYnV0ZWRTdHJpbmcuY29udGFpbnNBdHRhY2htZW50cyA/IGRhdGFJblJURkRGb3JtYXQoYXR0
cmlidXRlZFN0cmluZykgOiBudWxscHRyOwogICAgIHdlYkNvbnRlbnQuZGF0YUluUlRGRm9ybWF0
ID0gZGF0YUluUlRGRm9ybWF0KGF0dHJpYnV0ZWRTdHJpbmcpOworICAgIHdlYkNvbnRlbnQuZGF0
YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdCA9IGFyY2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRTdHJp
bmcoYXR0cmlidXRlZFN0cmluZyk7CiAgICAgLy8gRklYTUU6IFdoeSBkb24ndCB3ZSB3YW50IHRo
aXMgb24gaU9TPwogI2lmIFBMQVRGT1JNKE1BQykKICAgICB3ZWJDb250ZW50LmRhdGFJbkhUTUxG
b3JtYXQgPSBzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmQuaAppbmRleCAzZGQwMGQzYjBlY2NhZjgwZjRjNjZhZmVkYTJmNmJiNmZhYWM1OWJkLi5i
OTRkNzBhMWY2YTUyMGIwMTgxYzNkMjM1YmUyZmJiOGM3ZGM4YjY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZC5oCkBAIC02OSw2ICs2OSw3IEBAIHN0cnVjdCBQYXN0ZWJvYXJkV2Vi
Q29udGVudCB7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1h
dDsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0OwogICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdDsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OwogICAgIFN0cmluZyBkYXRhSW5IVE1MRm9y
bWF0OwogICAgIFN0cmluZyBkYXRhSW5TdHJpbmdGb3JtYXQ7CiAgICAgVmVjdG9yPFN0cmluZz4g
Y2xpZW50VHlwZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkV3JpdGVyRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRl
ckRhdGEuaAppbmRleCAyYzVhZGMyZDIyNmFlM2MxOGY5N2JlOWIyYWJkODMxNzhkNmEwMzZmLi4w
ZDFiNGI3MzZkMjI0ZWZkZjljMjBjNzRlODM3MjEzMmQxOTQ0OWM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgKQEAgLTU0LDYgKzU0LDcgQEAg
cHVibGljOgogICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9y
bWF0OwogICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0OwogICAg
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7CisgICAgICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CiAgICAgICAgIC8v
IEZJWE1FOiBXaHkgZG9uJ3Qgd2Ugd2FudCB0aGlzIG9uIGlPUz8KICNpZiBQTEFURk9STShNQUMp
CiAgICAgICAgIFN0cmluZyBkYXRhSW5IVE1MRm9ybWF0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAppbmRleCBiYTU0MjZmN2NlZGJiZDVhMjNjNjUyNTdk
YWIwYTQxMzdkMTcwOTdkLi4zNDMwMTE4Mjc4Mjg4NjlmNWEwNTM0YjE1M2RkYjQ5MjhkYzJmMWYx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaApAQCAt
ODgsNiArODgsMTIgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6CisjaWYgUExBVEZPUk0o
SU9TKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGVPYmplY3RSZXByZXNlbnRhdGlvbnMo
Y29uc3QgUGFzdGVib2FyZFdlYkNvbnRlbnQmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdy
aXRlT2JqZWN0UmVwcmVzZW50YXRpb25zKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgd3JpdGVPYmplY3RSZXByZXNlbnRhdGlvbnMoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0KTsKKyNlbmRpZgorCiAjaWYgUExB
VEZPUk0oTUFDKQogICAgIFJldGFpblB0cjxOU1Bhc3RlYm9hcmQ+IG1fcGFzdGVib2FyZDsKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0Fic3RyYWN0UGFz
dGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0Fic3RyYWN0UGFzdGVib2Fy
ZC5oCmluZGV4IGExZmUwNDA1NDg2ZTQ2MjhjMjZjMWQ2NmU3ZTQ1NTM1MDIwNzE4ZjAuLjllYTZm
ZTA3ZWQ5YjY2MzFhMWY4ZjAzMjlhNmJlYzQ5NWY0MTJmYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9BYnN0cmFjdFBhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvQWJzdHJhY3RQYXN0ZWJvYXJkLmgKQEAgLTI1LDE1ICsyNSwzMSBA
QAogCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KIAorV0VCQ09SRV9FWFBPUlQg
QGludGVyZmFjZSBXZWJQYXN0ZWJvYXJkSXRlbURhdGEgOiBOU09iamVjdCB7CitAcHJpdmF0ZQor
ICAgIE5TQXJyYXkgKl9yZXByZXNlbnRpbmdPYmplY3RzOworICAgIE5TRGljdGlvbmFyeSAqX2Fk
ZGl0aW9uYWxEYXRhOworfQorCisrIChpbnN0YW5jZXR5cGUpaXRlbVdpdGhSZXByZXNlbnRpbmdP
YmplY3RzOihOU0FycmF5ICopcmVwcmVzZW50aW5nT2JqZWN0cyBhZGRpdGlvbmFsRGF0YTooTlNE
aWN0aW9uYXJ5ICopYWRkaXRpb25hbERhdGE7CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFk
b25seSwgc3Ryb25nKSBOU0FycmF5ICpyZXByZXNlbnRpbmdPYmplY3RzOworQHByb3BlcnR5IChu
b25hdG9taWMsIHJlYWRvbmx5LCBzdHJvbmcpIE5TRGljdGlvbmFyeSAqYWRkaXRpb25hbERhdGE7
CisKK0BlbmQKKwogQHByb3RvY29sIEFic3RyYWN0UGFzdGVib2FyZCA8TlNPYmplY3Q+CiBAcmVx
dWlyZWQKIAogQHByb3BlcnR5IChyZWFkb25seSwgbm9uYXRvbWljKSBOU0ludGVnZXIgbnVtYmVy
T2ZJdGVtczsKIAogLSAoTlNBcnJheTxOU1N0cmluZyAqPiAqKXBhc3RlYm9hcmRUeXBlczsKLS0g
KHZvaWQpc2V0SXRlbXM6KE5TQXJyYXkgKilpdGVtczsKIC0gKE5TQXJyYXkgKilkYXRhRm9yUGFz
dGVib2FyZFR5cGU6KE5TU3RyaW5nICopcGFzdGVib2FyZFR5cGUgaW5JdGVtU2V0OihOU0luZGV4
U2V0ICopaXRlbVNldDsKIC0gKE5TQXJyYXkgKil2YWx1ZXNGb3JQYXN0ZWJvYXJkVHlwZTooTlNT
dHJpbmcgKilwYXN0ZWJvYXJkVHlwZSBpbkl0ZW1TZXQ6KE5TSW5kZXhTZXQgKilpdGVtU2V0Owog
LSAoTlNJbnRlZ2VyKWNoYW5nZUNvdW50OwogCitAb3B0aW9uYWwKKy0gKHZvaWQpc2V0SXRlbXNG
cm9tT2JqZWN0UmVwcmVzZW50YXRpb25zOihOU0FycmF5PFdlYlBhc3RlYm9hcmRJdGVtRGF0YSAq
PiAqKWl0ZW1EYXRhOworLSAodm9pZClzZXRJdGVtczooTlNBcnJheTxOU0RpY3Rpb25hcnkgKj4g
KilpdGVtczsKKwogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L0Fic3RyYWN0UGFzdGVib2FyZC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9BYnN0
cmFjdFBhc3RlYm9hcmQubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjVhZTg5NWIwMmVjZWE3NjY5MzNiMGFiNDAy
Y2QzYzcwYTA1MjNjZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9BYnN0cmFjdFBhc3RlYm9hcmQubW0KQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBYnN0cmFjdFBhc3RlYm9hcmQuaCIKKwor
QGltcGxlbWVudGF0aW9uIFdlYlBhc3RlYm9hcmRJdGVtRGF0YQorCisrIChpbnN0YW5jZXR5cGUp
aXRlbVdpdGhSZXByZXNlbnRpbmdPYmplY3RzOihOU0FycmF5ICopcmVwcmVzZW50aW5nT2JqZWN0
cyBhZGRpdGlvbmFsRGF0YTooTlNEaWN0aW9uYXJ5ICopYWRkaXRpb25hbERhdGEKK3sKKyAgICBy
ZXR1cm4gW1tbc2VsZiBhbGxvY10gaW5pdFdpdGhSZXByZXNlbnRpbmdPYmplY3RzOnJlcHJlc2Vu
dGluZ09iamVjdHMgYWRkaXRpb25hbERhdGE6YWRkaXRpb25hbERhdGFdIGF1dG9yZWxlYXNlXTsK
K30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUmVwcmVzZW50aW5nT2JqZWN0czooTlNBcnJh
eSAqKXJlcHJlc2VudGluZ09iamVjdHMgYWRkaXRpb25hbERhdGE6KE5TRGljdGlvbmFyeSAqKWFk
ZGl0aW9uYWxEYXRhCit7CisgICAgaWYgKHNlbGYgPSBbc3VwZXIgaW5pdF0pIHsKKyAgICAgICAg
X3JlcHJlc2VudGluZ09iamVjdHMgPSBbcmVwcmVzZW50aW5nT2JqZWN0cyByZXRhaW5dOworICAg
ICAgICBfYWRkaXRpb25hbERhdGEgPSBbYWRkaXRpb25hbERhdGEgcmV0YWluXTsKKyAgICB9Cisg
ICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpZGVhbGxvYworeworICAgIFtfcmVwcmVzZW50
aW5nT2JqZWN0cyByZWxlYXNlXTsKKyAgICBbX2FkZGl0aW9uYWxEYXRhIHJlbGVhc2VdOworICAg
IFtzdXBlciBkZWFsbG9jXTsKK30KKworQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0KaW5kZXggZWI2YjBkMmMwYmE3ZWFm
MzE2ZmY2MGUyNmYzNzMxYmRlOTEyMmFkMS4uNTVjOWMxNzA1ZjNhZjJhMTUxY2ZkMTBlNDA4NWVj
OGY0ZjBmYjJkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRm
b3JtUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxh
dGZvcm1QYXN0ZWJvYXJkSU9TLm1tCkBAIC0zNCw4ICszNCwxMCBAQAogI2ltcG9ydCAiU29mdExp
bmtpbmcuaCIKICNpbXBvcnQgIldlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQuaCIKICNpbXBvcnQg
PE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2VydmljZXMuaD4KKyNpbXBvcnQgPFVJS2l0
L1VJSW1hZ2UuaD4KIAogU09GVF9MSU5LX0ZSQU1FV09SSyhVSUtpdCkKK1NPRlRfTElOS19DTEFT
UyhVSUtpdCwgVUlJbWFnZSkKIFNPRlRfTElOS19DTEFTUyhVSUtpdCwgVUlQYXN0ZWJvYXJkKQog
CiBAaW50ZXJmYWNlIFVJUGFzdGVib2FyZApAQCAtMTQ3LDkgKzE0OSw5IEBAIFN0cmluZyBQbGF0
Zm9ybVBhc3RlYm9hcmQ6OnVuaXF1ZU5hbWUoKQogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAot
dm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50
JiBjb250ZW50KQorc3RhdGljIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IHJpY2hUZXh0UmVwcmVz
ZW50YXRpb25zRm9yUGFzdGVib2FyZFdlYkNvbnRlbnQoY29uc3QgUGFzdGVib2FyZFdlYkNvbnRl
bnQmIGNvbnRlbnQpCiB7Ci0gICAgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gcmVwcmVzZW50YXRp
b25zID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKKyAgICBS
ZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gcmVwcmVzZW50YXRpb25zID0gYWRvcHROUyhb
W05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKIAogICAgIEFTU0VSVChjb250ZW50
LmNsaWVudFR5cGVzLnNpemUoKSA9PSBjb250ZW50LmNsaWVudERhdGEuc2l6ZSgpKTsKICAgICBm
b3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IGNvbnRlbnQuY2xpZW50VHlwZXMuc2l6ZSgpOyBpIDwg
c2l6ZTsgKytpKQpAQCAtMTU4LDcgKzE2MCw3IEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3
cml0ZShjb25zdCBQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29udGVudCkKICAgICBpZiAoY29udGVu
dC5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0KSB7CiAgICAgICAgIFtyZXByZXNlbnRhdGlvbnMgc2V0
VmFsdWU6KE5TRGF0YSAqKWNvbnRlbnQuZGF0YUluV2ViQXJjaGl2ZUZvcm1hdC0+Y3JlYXRlTlNE
YXRhKCkuZ2V0KCkgZm9yS2V5OldlYkFyY2hpdmVQYm9hcmRUeXBlXTsKICAgICAgICAgLy8gRmxh
ZyBmb3IgVUlLaXQgdG8ga25vdyB0aGF0IHRoaXMgY29weSBjb250YWlucyByaWNoIGNvbnRlbnQu
IFRoaXMgd2lsbCB0cmlnZ2VyIGEgdHdvLXN0ZXAgcGFzdGUuCi0gICAgICAgIE5TU3RyaW5nKiB3
ZWJJT1NQYXN0ZVBib2FyZFR5cGUgPSBAImlPUyByaWNoIGNvbnRlbnQgcGFzdGUgcGFzdGVib2Fy
ZCB0eXBlIjsKKyAgICAgICAgTlNTdHJpbmcgKndlYklPU1Bhc3RlUGJvYXJkVHlwZSA9IEAiaU9T
IHJpY2ggY29udGVudCBwYXN0ZSBwYXN0ZWJvYXJkIHR5cGUiOwogICAgICAgICBbcmVwcmVzZW50
YXRpb25zIHNldFZhbHVlOndlYklPU1Bhc3RlUGJvYXJkVHlwZSBmb3JLZXk6d2ViSU9TUGFzdGVQ
Ym9hcmRUeXBlXTsKICAgICB9CiAKQEAgLTE2NywxMyArMTY5LDcwIEBAIHZvaWQgUGxhdGZvcm1Q
YXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29udGVudCkKICAg
ICBpZiAoY29udGVudC5kYXRhSW5SVEZGb3JtYXQpCiAgICAgICAgIFtyZXByZXNlbnRhdGlvbnMg
c2V0VmFsdWU6Y29udGVudC5kYXRhSW5SVEZGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZv
cktleTooTlNTdHJpbmcgKilrVVRUeXBlUlRGXTsKIAorICAgIHJldHVybiByZXByZXNlbnRhdGlv
bnM7Cit9CisKK3ZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZU9iamVjdFJlcHJlc2VudGF0
aW9ucyhjb25zdCBQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29udGVudCkKK3sKKyAgICBSZXRhaW5Q
dHI8TlNNdXRhYmxlQXJyYXk+IG9iamVjdFJlcHJlc2VudGF0aW9ucyA9IGFkb3B0TlMoW1tOU011
dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IGFk
ZGl0aW9uYWxEYXRhID0gcmljaFRleHRSZXByZXNlbnRhdGlvbnNGb3JQYXN0ZWJvYXJkV2ViQ29u
dGVudChjb250ZW50KTsKKworICAgIGlmIChjb250ZW50LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdG
b3JtYXQpIHsKKyAgICAgICAgTlNBdHRyaWJ1dGVkU3RyaW5nICphdHRyaWJ1dGVkU3RyaW5nID0g
W05TS2V5ZWRVbmFyY2hpdmVyIHVuYXJjaGl2ZU9iamVjdFdpdGhEYXRhOmNvbnRlbnQuZGF0YUlu
QXR0cmlidXRlZFN0cmluZ0Zvcm1hdC0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCldOworICAgICAgICBp
ZiAoYXR0cmlidXRlZFN0cmluZykKKyAgICAgICAgICAgIFtvYmplY3RSZXByZXNlbnRhdGlvbnMg
YWRkT2JqZWN0OmF0dHJpYnV0ZWRTdHJpbmddOworICAgIH0KKworICAgIGlmICghY29udGVudC5k
YXRhSW5TdHJpbmdGb3JtYXQuaXNFbXB0eSgpKQorICAgICAgICBbb2JqZWN0UmVwcmVzZW50YXRp
b25zIGFkZE9iamVjdDooTlNTdHJpbmcgKiljb250ZW50LmRhdGFJblN0cmluZ0Zvcm1hdF07CisK
KyAgICBbbV9wYXN0ZWJvYXJkIHNldEl0ZW1zRnJvbU9iamVjdFJlcHJlc2VudGF0aW9uczpAW1tX
ZWJQYXN0ZWJvYXJkSXRlbURhdGEgaXRlbVdpdGhSZXByZXNlbnRpbmdPYmplY3RzOm9iamVjdFJl
cHJlc2VudGF0aW9ucy5nZXQoKSBhZGRpdGlvbmFsRGF0YTphZGRpdGlvbmFsRGF0YS5nZXQoKV1d
XTsKK30KKwordm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRX
ZWJDb250ZW50JiBjb250ZW50KQoreworICAgIGlmIChbbV9wYXN0ZWJvYXJkIHJlc3BvbmRzVG9T
ZWxlY3RvcjpAc2VsZWN0b3Ioc2V0SXRlbXNGcm9tT2JqZWN0UmVwcmVzZW50YXRpb25zOildKSB7
CisgICAgICAgIHdyaXRlT2JqZWN0UmVwcmVzZW50YXRpb25zKGNvbnRlbnQpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IHJlcHJl
c2VudGF0aW9ucyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7
CisgICAgW3JlcHJlc2VudGF0aW9ucyBhZGRFbnRyaWVzRnJvbURpY3Rpb25hcnk6cmljaFRleHRS
ZXByZXNlbnRhdGlvbnNGb3JQYXN0ZWJvYXJkV2ViQ29udGVudChjb250ZW50KS5hdXRvcmVsZWFz
ZSgpXTsKICAgICBbcmVwcmVzZW50YXRpb25zIHNldFZhbHVlOmNvbnRlbnQuZGF0YUluU3RyaW5n
Rm9ybWF0IGZvcktleTooTlNTdHJpbmcgKilrVVRUeXBlVGV4dF07Ci0gICAgW3JlcHJlc2VudGF0
aW9ucyBzZXRWYWx1ZTpbKE5TU3RyaW5nICopY29udGVudC5kYXRhSW5TdHJpbmdGb3JtYXQgZGF0
YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddIGZvcktleTooTlNTdHJpbmcgKilr
VVRUeXBlVVRGOFBsYWluVGV4dF07CisKICAgICBbbV9wYXN0ZWJvYXJkIHNldEl0ZW1zOkBbcmVw
cmVzZW50YXRpb25zLmdldCgpXV07CiB9CiAKK3ZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0
ZU9iamVjdFJlcHJlc2VudGF0aW9ucyhjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmIHBhc3RlYm9hcmRJ
bWFnZSkKK3sKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IG9iamVjdFJlcHJlc2VudGF0
aW9ucyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworICAgIFJldGFp
blB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiBhZGRpdGlvbmFsRGF0YSA9IGFkb3B0TlMoW1tOU011
dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CisKKyAgICBpZiAoYXV0byBuYXRpdmVJbWFn
ZSA9IHBhc3RlYm9hcmRJbWFnZS5pbWFnZS0+bmF0aXZlSW1hZ2UoKSkgeworICAgICAgICBVSUlt
YWdlICp1aUltYWdlID0gKFVJSW1hZ2UgKilbZ2V0VUlJbWFnZUNsYXNzKCkgaW1hZ2VXaXRoQ0dJ
bWFnZTpuYXRpdmVJbWFnZS5nZXQoKV07CisgICAgICAgIGlmICh1aUltYWdlKQorICAgICAgICAg
ICAgW29iamVjdFJlcHJlc2VudGF0aW9ucyBhZGRPYmplY3Q6dWlJbWFnZV07CisgICAgfQorCisg
ICAgaWYgKCFwYXN0ZWJvYXJkSW1hZ2UudXJsLnVybC5pc0VtcHR5KCkpIHsKKyAgICAgICAgTlNV
UkwgKm5zVVJMID0gcGFzdGVib2FyZEltYWdlLnVybC51cmw7CisgICAgICAgIGlmIChuc1VSTCkK
KyAgICAgICAgICAgIFtvYmplY3RSZXByZXNlbnRhdGlvbnMgYWRkT2JqZWN0Om5zVVJMXTsKKyAg
ICB9CisKKyAgICBpZiAoIXBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlLmlzTnVsbCgp
KQorICAgICAgICBbYWRkaXRpb25hbERhdGEgc2V0T2JqZWN0OnBhc3RlYm9hcmRJbWFnZS5yZXNv
dXJjZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZvcktleTpwYXN0ZWJvYXJkSW1hZ2UucmVz
b3VyY2VNSU1FVHlwZV07CisKKyAgICBbbV9wYXN0ZWJvYXJkIHNldEl0ZW1zRnJvbU9iamVjdFJl
cHJlc2VudGF0aW9uczpAW1tXZWJQYXN0ZWJvYXJkSXRlbURhdGEgaXRlbVdpdGhSZXByZXNlbnRp
bmdPYmplY3RzOm9iamVjdFJlcHJlc2VudGF0aW9ucy5nZXQoKSBhZGRpdGlvbmFsRGF0YTphZGRp
dGlvbmFsRGF0YS5nZXQoKV1dXTsKK30KKwogdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRl
KGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZEltYWdlKQogeworICAgIGlmIChbbV9w
YXN0ZWJvYXJkIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0SXRlbXNGcm9tT2JqZWN0
UmVwcmVzZW50YXRpb25zOildKSB7CisgICAgICAgIHdyaXRlT2JqZWN0UmVwcmVzZW50YXRpb25z
KHBhc3RlYm9hcmRJbWFnZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBSZXRhaW5Q
dHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gcmVwcmVzZW50YXRpb25zID0gYWRvcHROUyhbW05TTXV0
YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKICAgICBpZiAoIXBhc3RlYm9hcmRJbWFnZS5y
ZXNvdXJjZU1JTUVUeXBlLmlzTnVsbCgpKSB7CiAgICAgICAgIFtyZXByZXNlbnRhdGlvbnMgc2V0
T2JqZWN0OnBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZURhdGEtPmNyZWF0ZU5TRGF0YSgpLmdldCgp
IGZvcktleTpwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZV07CkBAIC0xODIsOCArMjQx
LDMzIEBAIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1h
Z2UmIHBhc3RlYm9hcmRJbWFnZSkKICAgICBbbV9wYXN0ZWJvYXJkIHNldEl0ZW1zOkBbcmVwcmVz
ZW50YXRpb25zLmdldCgpXV07CiB9CiAKK3ZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZU9i
amVjdFJlcHJlc2VudGF0aW9ucyhjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHRleHQpCit7CisgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBvYmplY3RSZXBy
ZXNlbnRhdGlvbnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKKyAg
ICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gYWRkaXRpb25hbERhdGEgPSBhZG9wdE5T
KFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOworCisgICAgTlNTdHJpbmcgKnBh
c3RlYm9hcmRUeXBlQXNOU1N0cmluZyA9IHBhc3RlYm9hcmRUeXBlOworICAgIE5TU3RyaW5nICp0
ZXh0QXNOU1N0cmluZyA9IHRleHQ7CisgICAgaWYgKHRleHRBc05TU3RyaW5nICYmIHBhc3RlYm9h
cmRUeXBlQXNOU1N0cmluZy5sZW5ndGgpIHsKKyAgICAgICAgaWYgKFVUVHlwZUNvbmZvcm1zVG8o
KF9fYnJpZGdlIENGU3RyaW5nUmVmKXBhc3RlYm9hcmRUeXBlQXNOU1N0cmluZywga1VUVHlwZVVS
TCkpCisgICAgICAgICAgICBbb2JqZWN0UmVwcmVzZW50YXRpb25zIGFkZE9iamVjdDpbW1tOU1VS
TCBhbGxvY10gaW5pdFdpdGhTdHJpbmc6dGV4dEFzTlNTdHJpbmddIGF1dG9yZWxlYXNlXV07CisK
KyAgICAgICAgaWYgKFVUVHlwZUNvbmZvcm1zVG8oKF9fYnJpZGdlIENGU3RyaW5nUmVmKXBhc3Rl
Ym9hcmRUeXBlQXNOU1N0cmluZywga1VUVHlwZVRleHQpKQorICAgICAgICAgICAgW29iamVjdFJl
cHJlc2VudGF0aW9ucyBhZGRPYmplY3Q6dGV4dEFzTlNTdHJpbmddOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBbYWRkaXRpb25hbERhdGEgc2V0T2JqZWN0OnRleHRBc05TU3RyaW5nIGZvcktl
eTpwYXN0ZWJvYXJkVHlwZUFzTlNTdHJpbmddOworICAgIH0KKworICAgIFttX3Bhc3RlYm9hcmQg
c2V0SXRlbXNGcm9tT2JqZWN0UmVwcmVzZW50YXRpb25zOkBbW1dlYlBhc3RlYm9hcmRJdGVtRGF0
YSBpdGVtV2l0aFJlcHJlc2VudGluZ09iamVjdHM6b2JqZWN0UmVwcmVzZW50YXRpb25zLmdldCgp
IGFkZGl0aW9uYWxEYXRhOmFkZGl0aW9uYWxEYXRhLmdldCgpXV1dOworfQorCiB2b2lkIFBsYXRm
b3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3Qg
U3RyaW5nJiB0ZXh0KQogeworICAgIGlmIChbbV9wYXN0ZWJvYXJkIHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3Ioc2V0SXRlbXNGcm9tT2JqZWN0UmVwcmVzZW50YXRpb25zOildKSB7CisgICAg
ICAgIHdyaXRlT2JqZWN0UmVwcmVzZW50YXRpb25zKHBhc3RlYm9hcmRUeXBlLCB0ZXh0KTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IHJlcHJl
c2VudGF0aW9ucyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7
CiAKICAgICBpZiAocGFzdGVib2FyZFR5cGUgPT0gU3RyaW5nKGtVVFR5cGVVUkwpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVi
b2FyZC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0
ZWJvYXJkLm1tCmluZGV4IGE4OWFhZWRjZWIzZGI2NzQ4NjkzM2RmYzc1YWFhY2I0ZGRjN2NkMjAu
LjkyMGZhYjBiYzNkMjliOTM3NGZkOWEzNTI5NTcyZGNiY2UwMjg1MmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJk
Lm1tCkBAIC04MCw2ICs4MCw3IEBAIHN0YXRpYyBCT09MIGlzSW1hZ2VUeXBlKE5TU3RyaW5nICp0
eXBlKQogCiBAaW1wbGVtZW50YXRpb24gV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZCB7CiAgICAg
UmV0YWluUHRyPE5TQXJyYXk+IF9pdGVtUHJvdmlkZXJzOworICAgIFJldGFpblB0cjxOU0FycmF5
PiBfY2FjaGVkVHlwZUlkZW50aWZpZXJzOwogfQogCiArIChpbnN0YW5jZXR5cGUpc2hhcmVkSW5z
dGFuY2UKQEAgLTEwNCwxMCArMTA1LDIyIEBAIHN0YXRpYyBCT09MIGlzSW1hZ2VUeXBlKE5TU3Ry
aW5nICp0eXBlKQogCiAtIChOU0FycmF5PE5TU3RyaW5nICo+ICopcGFzdGVib2FyZFR5cGVzCiB7
CisgICAgaWYgKF9jYWNoZWRUeXBlSWRlbnRpZmllcnMpCisgICAgICAgIHJldHVybiBfY2FjaGVk
VHlwZUlkZW50aWZpZXJzLmdldCgpOworCiAgICAgTlNNdXRhYmxlU2V0PE5TU3RyaW5nICo+ICph
bGxUeXBlcyA9IFtOU011dGFibGVTZXQgc2V0XTsKLSAgICBmb3IgKFVJSXRlbVByb3ZpZGVyICpw
cm92aWRlciBpbiBfaXRlbVByb3ZpZGVycy5nZXQoKSkKLSAgICAgICAgW2FsbFR5cGVzIGFkZE9i
amVjdHNGcm9tQXJyYXk6cHJvdmlkZXIucmVnaXN0ZXJlZFR5cGVJZGVudGlmaWVyc107Ci0gICAg
cmV0dXJuIGFsbFR5cGVzLmFsbE9iamVjdHM7CisgICAgTlNNdXRhYmxlQXJyYXk8TlNTdHJpbmcg
Kj4gKmFsbFR5cGVzSW5PcmRlciA9IFtOU011dGFibGVBcnJheSBhcnJheV07CisgICAgZm9yIChV
SUl0ZW1Qcm92aWRlciAqcHJvdmlkZXIgaW4gX2l0ZW1Qcm92aWRlcnMuZ2V0KCkpIHsKKyAgICAg
ICAgZm9yIChOU1N0cmluZyAqdHlwZUlkZW50aWZpZXIgaW4gcHJvdmlkZXIucmVnaXN0ZXJlZFR5
cGVJZGVudGlmaWVycykgeworICAgICAgICAgICAgaWYgKFthbGxUeXBlcyBjb250YWluc09iamVj
dDp0eXBlSWRlbnRpZmllcl0pCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAg
ICAgIFthbGxUeXBlcyBhZGRPYmplY3Q6dHlwZUlkZW50aWZpZXJdOworICAgICAgICAgICAgW2Fs
bFR5cGVzSW5PcmRlciBhZGRPYmplY3Q6dHlwZUlkZW50aWZpZXJdOworICAgICAgICB9CisgICAg
fQorICAgIF9jYWNoZWRUeXBlSWRlbnRpZmllcnMgPSBhbGxUeXBlc0luT3JkZXI7CisgICAgcmV0
dXJuIF9jYWNoZWRUeXBlSWRlbnRpZmllcnMuZ2V0KCk7CiB9CiAKIC0gKE5TQXJyYXk8VUlJdGVt
UHJvdmlkZXIgKj4gKilpdGVtUHJvdmlkZXJzCkBAIC0xMjMsNiArMTM2LDcgQEAgc3RhdGljIEJP
T0wgaXNJbWFnZVR5cGUoTlNTdHJpbmcgKnR5cGUpCiAKICAgICBfaXRlbVByb3ZpZGVycyA9IGl0
ZW1Qcm92aWRlcnM7CiAgICAgX2NoYW5nZUNvdW50Kys7CisgICAgX2NhY2hlZFR5cGVJZGVudGlm
aWVycyA9IG5pbDsKIH0KIAogLSAoTlNJbnRlZ2VyKW51bWJlck9mSXRlbXMKQEAgLTEzMCw0MCAr
MTQ0LDM4IEBAIHN0YXRpYyBCT09MIGlzSW1hZ2VUeXBlKE5TU3RyaW5nICp0eXBlKQogICAgIHJl
dHVybiBbX2l0ZW1Qcm92aWRlcnMgY291bnRdOwogfQogCi0tICh2b2lkKXNldEl0ZW1zOihOU0Fy
cmF5ICopaXRlbXMKKy0gKHZvaWQpc2V0SXRlbXNGcm9tT2JqZWN0UmVwcmVzZW50YXRpb25zOihO
U0FycmF5PFdlYlBhc3RlYm9hcmRJdGVtRGF0YSAqPiAqKWl0ZW1EYXRhCiB7CiAgICAgTlNNdXRh
YmxlQXJyYXkgKnByb3ZpZGVycyA9IFtOU011dGFibGVBcnJheSBhcnJheV07Ci0gICAgZm9yIChO
U0RpY3Rpb25hcnkgKml0ZW0gaW4gaXRlbXMpIHsKLSAgICAgICAgaWYgKCFpdGVtLmNvdW50KQor
ICAgIGZvciAoV2ViUGFzdGVib2FyZEl0ZW1EYXRhICpkYXRhIGluIGl0ZW1EYXRhKSB7CisgICAg
ICAgIGlmICghZGF0YS5yZXByZXNlbnRpbmdPYmplY3RzLmNvdW50ICYmICFkYXRhLmFkZGl0aW9u
YWxEYXRhLmNvdW50KQogICAgICAgICAgICAgY29udGludWU7CisKICAgICAgICAgUmV0YWluUHRy
PFVJSXRlbVByb3ZpZGVyPiBpdGVtUHJvdmlkZXIgPSBhZG9wdE5TKFtbZ2V0VUlJdGVtUHJvdmlk
ZXJDbGFzcygpIGFsbG9jXSBpbml0XSk7Ci0gICAgICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0
aW9uYXJ5PiBpdGVtUmVwcmVzZW50YXRpb25zQ29weSA9IGFkb3B0TlMoW2l0ZW0gbXV0YWJsZUNv
cHldKTsKLSAgICAgICAgLy8gRmlyc3QsIGxldCB0aGUgcGxhdGZvcm0gd3JpdGUgYWxsIHRoZSBk
ZWZhdWx0IG9iamVjdCB0eXBlcyBpdCBjYW4gcmVjb2duaXplLCBzdWNoIGFzIE5TU3RyaW5nIGFu
ZCBOU1VSTC4KLSAgICAgICAgZm9yIChOU1N0cmluZyAqdHlwZUlkZW50aWZpZXIgaW4gW2l0ZW1S
ZXByZXNlbnRhdGlvbnNDb3B5IGFsbEtleXNdKSB7Ci0gICAgICAgICAgICBpZCByZXByZXNlbnRp
bmdPYmplY3QgPSBbaXRlbVJlcHJlc2VudGF0aW9uc0NvcHkgb2JqZWN0Rm9yS2V5OnR5cGVJZGVu
dGlmaWVyXTsKKyAgICAgICAgLy8gRmlyc3QsIHJlZ2lzdGVyIGFsbCBwbGF0Zm9ybSBvYmplY3Rz
LCBwcmlvcml0aXppbmcgb2JqZWN0cyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBhcnJheS4KKyAg
ICAgICAgZm9yIChpZCByZXByZXNlbnRpbmdPYmplY3QgaW4gZGF0YS5yZXByZXNlbnRpbmdPYmpl
Y3RzKSB7CiAgICAgICAgICAgICBpZiAoIVtyZXByZXNlbnRpbmdPYmplY3QgY29uZm9ybXNUb1By
b3RvY29sOkBwcm90b2NvbChVSUl0ZW1Qcm92aWRlcldyaXRpbmcpXSkKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKIAotICAgICAgICAgICAgaWQgPFVJSXRlbVByb3ZpZGVyV3JpdGluZz4gb2Jq
ZWN0VG9Xcml0ZSA9IChpZCA8VUlJdGVtUHJvdmlkZXJXcml0aW5nPilyZXByZXNlbnRpbmdPYmpl
Y3Q7Ci0gICAgICAgICAgICBpZiAoIVtvYmplY3RUb1dyaXRlLndyaXRhYmxlVHlwZUlkZW50aWZp
ZXJzRm9ySXRlbVByb3ZpZGVyIGNvbnRhaW5zT2JqZWN0OnR5cGVJZGVudGlmaWVyXSkKLSAgICAg
ICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgW2l0ZW1SZXByZXNlbnRhdGlvbnND
b3B5IHJlbW92ZU9iamVjdEZvcktleTp0eXBlSWRlbnRpZmllcl07Ci0gICAgICAgICAgICBbaXRl
bVByb3ZpZGVyIHJlZ2lzdGVyT2JqZWN0Om9iamVjdFRvV3JpdGUgb3B0aW9uczpuaWxdOworICAg
ICAgICAgICAgW2l0ZW1Qcm92aWRlciByZWdpc3Rlck9iamVjdDooaWQgPFVJSXRlbVByb3ZpZGVy
V3JpdGluZz4pcmVwcmVzZW50aW5nT2JqZWN0IG9wdGlvbnM6bmlsXTsKICAgICAgICAgfQogCi0g
ICAgICAgIC8vIFNlY29uZGx5LCBXZWJLaXQgdXNlcyBzb21lIGN1c3RvbSB0eXBlIHJlcHJlc2Vu
dGF0aW9ucyBhbmQvb3IgdHlwZSBpZGVudGlmaWVycywgc28gd2UgbmVlZCB0byB3cml0ZSB0aGVz
ZSBhcyB3ZWxsLgotICAgICAgICBmb3IgKE5TU3RyaW5nICp0eXBlSWRlbnRpZmllciBpbiBpdGVt
UmVwcmVzZW50YXRpb25zQ29weS5nZXQoKSkgeworICAgICAgICAvLyBOZXh0LCByZWdpc3RlciBv
dGhlciBjdXN0b20gZGF0YSByZXByZXNlbnRhdGlvbnMgZm9yIHR5cGUgaWRlbnRpZmllcnMuCisg
ICAgICAgIE5TRGljdGlvbmFyeSA8TlNTdHJpbmcgKiwgTlNEYXRhICo+ICphZGRpdGlvbmFsRGF0
YSA9IGRhdGEuYWRkaXRpb25hbERhdGE7CisgICAgICAgIGZvciAoTlNTdHJpbmcgKnR5cGVJZGVu
dGlmaWVyIGluIGFkZGl0aW9uYWxEYXRhKSB7CisgICAgICAgICAgICBpZiAoIVthZGRpdGlvbmFs
RGF0YVt0eXBlSWRlbnRpZmllcl0gaXNLaW5kT2ZDbGFzczpbTlNEYXRhIGNsYXNzXV0pCisgICAg
ICAgICAgICAgICAgY29udGludWU7CisKICAgICAgICAgICAgIFtpdGVtUHJvdmlkZXIgcmVnaXN0
ZXJEYXRhUmVwcmVzZW50YXRpb25Gb3JUeXBlSWRlbnRpZmllcjp0eXBlSWRlbnRpZmllciBvcHRp
b25zOm5pbCBsb2FkSGFuZGxlcjpeTlNQcm9ncmVzcyAqKFVJSXRlbVByb3ZpZGVyRGF0YUxvYWRD
b21wbGV0aW9uQmxvY2sgY29tcGxldGlvbkJsb2NrKQogICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIGNvbXBsZXRpb25CbG9jayhbaXRlbVJlcHJlc2VudGF0aW9uc0NvcHkgb2JqZWN0Rm9y
S2V5OnR5cGVJZGVudGlmaWVyXSwgbmlsKTsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uQmxv
Y2soYWRkaXRpb25hbERhdGFbdHlwZUlkZW50aWZpZXJdLCBuaWwpOwogICAgICAgICAgICAgICAg
IHJldHVybiBbTlNQcm9ncmVzcyBkaXNjcmV0ZVByb2dyZXNzV2l0aFRvdGFsVW5pdENvdW50OjEw
MF07CiAgICAgICAgICAgICB9XTsKICAgICAgICAgfQogICAgICAgICBbcHJvdmlkZXJzIGFkZE9i
amVjdDppdGVtUHJvdmlkZXIuZ2V0KCldOwogICAgIH0KLSAgICBfY2hhbmdlQ291bnQrKzsKLSAg
ICBfaXRlbVByb3ZpZGVycyA9IHByb3ZpZGVyczsKKworICAgIHNlbGYuaXRlbVByb3ZpZGVycyA9
IHByb3ZpZGVyczsKIH0KIAogLSAoTlNBcnJheSAqKWRhdGFGb3JQYXN0ZWJvYXJkVHlwZTooTlNT
dHJpbmcgKilwYXN0ZWJvYXJkVHlwZSBpbkl0ZW1TZXQ6KE5TSW5kZXhTZXQgKilpdGVtU2V0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4
IGExOTI5NTU3OTEzNzNkNTU5NTRmMTBiYTE2NGIwYmI0YTE1NGQ1NmIuLjcxZTdlN2QzODEyMTAx
YmEyZmQ0ODZmOGEzN2I0MzhkYzUzZTAxMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0xNDA0LDYgKzE0MDQsNyBAQCB2b2lkIEFy
Z3VtZW50Q29kZXI8UGFzdGVib2FyZFdlYkNvbnRlbnQ+OjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
ciwgY29uc3QgUGFzdGVibwogICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihlbmNvZGVyLCBjb250ZW50
LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQuZ2V0KCkpOwogICAgIGVuY29kZVNoYXJlZEJ1ZmZlcihl
bmNvZGVyLCBjb250ZW50LmRhdGFJblJURkRGb3JtYXQuZ2V0KCkpOwogICAgIGVuY29kZVNoYXJl
ZEJ1ZmZlcihlbmNvZGVyLCBjb250ZW50LmRhdGFJblJURkZvcm1hdC5nZXQoKSk7CisgICAgZW5j
b2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGNvbnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zv
cm1hdC5nZXQoKSk7CiAKICAgICBlbmNvZGVyIDw8IGNvbnRlbnQuY2xpZW50VHlwZXM7CiAgICAg
ZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oY29udGVudC5jbGllbnREYXRhLnNpemUo
KSk7CkBAIC0xNDIzLDYgKzE0MjQsOCBAQCBib29sIEFyZ3VtZW50Q29kZXI8UGFzdGVib2FyZFdl
YkNvbnRlbnQ+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUGFzdGVib2FyZFdlYgogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgY29u
dGVudC5kYXRhSW5SVEZGb3JtYXQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFk
ZWNvZGVTaGFyZWRCdWZmZXIoZGVjb2RlciwgY29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3RyaW5n
Rm9ybWF0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
Y29udGVudC5jbGllbnRUeXBlcykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB1aW50NjRf
dCBjbGllbnREYXRhU2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW0KaW5kZXggYzg0MmQ4ZWQzNmQ1Y2FhNzRlOTQ3ZDMwNGIzODY1NTJlNDUz
MDc1YS4uMTE4NzdjYjMwNmIzOWU3ZDE3YWQ3N2FmN2UyY2UzNGIxNmMwZTEwNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTUzNzgs
NiArNTM3OCw4IEBAIHN0YXRpYyBXZWJDb3JlOjpVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9u
IHRvVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbihVSVNlCiAgICAgV2ViS2l0OjpWaWV3U25h
cHNob3RTdG9yZTo6c2luZ2xldG9uKCkuc2V0RGlzYWJsZVNuYXBzaG90Vm9sYXRpbGl0eUZvclRl
c3RpbmcodHJ1ZSk7CiB9CiAKKyNpZiBQTEFURk9STShJT1MpCisKIC0gKHZvaWQpX3NpbXVsYXRl
RGF0YUludGVyYWN0aW9uRW50ZXJlZDooaWQpaW5mbwogewogI2lmIEVOQUJMRShEQVRBX0lOVEVS
QUNUSU9OKQpAQCAtNTQzNiw2ICs1NDM4LDggQEAgc3RhdGljIFdlYkNvcmU6OlVzZXJJbnRlcmZh
Y2VMYXlvdXREaXJlY3Rpb24gdG9Vc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKFVJU2UKICNl
bmRpZgogfQogCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQorCiBAZW5kCiAKIApkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDFkMThmNjkxNjM1YzBi
Nzk0Yjg4YTA3ZmI0YzcyMzYyZjg0MjRjODAuLjA0MWE2Y2Q0NjgxYjJkYjVmOWU1YzY5M2JmOWIz
YjcyMjIzYzU4MzEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxNy0wNC0wMyAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBEYXRhIGludGVyYWN0aW9uIHNob3VsZCByZWdp
c3RlciB0eXBlIGlkZW50aWZpZXJzIGluIG9yZGVyIG9mIHByaW9yaXR5CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzA0MjgKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzMwNjMzMjk2PgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisK
KyAgICAgICAgQXVnbWVudHMgZXhpc3RpbmcgdW5pdCB0ZXN0cyB0byBjaGVjayBmb3IgdGhlIGV4
aXN0ZW5jZSBhbmQgcHJpb3JpdHkgb2YgdHlwZSBpZGVudGlmaWVycyBpbiB0aGUgVUlJdGVtUHJv
dmlkZXJzCisgICAgICAgIGNyZWF0ZWQgdXBvbiBzdGFydGluZyBkYXRhIGludGVyYWN0aW9uLiBB
bHNvIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gb25lIG9mIHRoZSB1bml0IHRlc3RzIGFuZCBh
ZGRzIGEgbmV3IHVuaXQKKyAgICAgICAgdGVzdCBmb3IgZGF0YSBpbnRlcmFjdGlvbiBmcm9tIGEg
dGV4dGFyZWEgdG8gYW4gaW5wdXQuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL2lv
cy9EYXRhSW50ZXJhY3Rpb25UZXN0cy5tbToKKyAgICAgICAgKGNoZWNrVHlwZUlkZW50aWZpZXJQ
cmVjZWRlc090aGVyVHlwZUlkZW50aWZpZXIpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVT
VCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9pb3MvRGF0YUludGVyYWN0aW9uU2ltdWxhdG9y
Lmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9pb3MvRGF0YUludGVyYWN0aW9uU2ltdWxhdG9y
Lm1tOgorICAgICAgICAoLVtEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgX2FkdmFuY2VQcm9ncmVz
c10pOgorICAgICAgICAoLVtEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3Igc291cmNlSXRlbVByb3Zp
ZGVyc10pOgorICAgICAgICAoLVtEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgX3dlYlZpZXc6c2hv
d0N1c3RvbVNoZWV0Rm9yRWxlbWVudDpdKToKKwogMjAxNy0wNC0wMyAgQ2FybG9zIEFsYmVydG8g
TG9wZXogUGVyZXogIDxjbG9wZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVtKSEJ1aWxk
XSBVcGRhdGUgbWVzYSByZXBvc2l0b3J5IHVybCBmb3IgdGFyYmFsbHMKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0RhdGFJbnRlcmFjdGlvblRlc3RzLm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRGF0YUludGVyYWN0aW9uVGVzdHMubW0KaW5kZXgg
ODhiNWNhZDA1NzA0M2RjODk5Y2M5YzNiY2FmYmE0YmQxYzkwMWFmMi4uOGYzYmNkMmNkNGU0NThk
ZGNiNTRlMmZhMzM3YzA4NTJhODMzNDczNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9pb3MvRGF0YUludGVyYWN0aW9uVGVzdHMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9pb3MvRGF0YUludGVyYWN0aW9uVGVzdHMubW0KQEAgLTYyLDYgKzYyLDE0IEBA
IHN0YXRpYyB2b2lkIGNoZWNrU2VsZWN0aW9uUmVjdHNXaXRoTG9nZ2luZyhOU0FycmF5ICpleHBl
Y3RlZCwgTlNBcnJheSAqb2JzZXJ2ZWQpCiAgICAgRVhQRUNUX1RSVUUoW2V4cGVjdGVkIGlzRXF1
YWxUb0FycmF5Om9ic2VydmVkXSk7CiB9CiAKK3N0YXRpYyB2b2lkIGNoZWNrVHlwZUlkZW50aWZp
ZXJQcmVjZWRlc090aGVyVHlwZUlkZW50aWZpZXIoRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yICpz
aW11bGF0b3IsIE5TU3RyaW5nICpmaXJzdFR5cGUsIE5TU3RyaW5nICpzZWNvbmRUeXBlKQorewor
ICAgIE5TQXJyYXkgKnJlZ2lzdGVyZWRUeXBlcyA9IFtzaW11bGF0b3Iuc291cmNlSXRlbVByb3Zp
ZGVycy5maXJzdE9iamVjdCByZWdpc3RlcmVkVHlwZUlkZW50aWZpZXJzXTsKKyAgICBFWFBFQ1Rf
VFJVRShbcmVnaXN0ZXJlZFR5cGVzIGNvbnRhaW5zT2JqZWN0OmZpcnN0VHlwZV0pOworICAgIEVY
UEVDVF9UUlVFKFtyZWdpc3RlcmVkVHlwZXMgY29udGFpbnNPYmplY3Q6c2Vjb25kVHlwZV0pOwor
ICAgIEVYUEVDVF9UUlVFKFtyZWdpc3RlcmVkVHlwZXMgaW5kZXhPZk9iamVjdDpmaXJzdFR5cGVd
IDwgW3JlZ2lzdGVyZWRUeXBlcyBpbmRleE9mT2JqZWN0OnNlY29uZFR5cGVdKTsKK30KKwogbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBURVNUKERhdGFJbnRlcmFjdGlvblRlc3RzLCBJbWFn
ZVRvQ29udGVudEVkaXRhYmxlKQpAQCAtNzksNiArODcsNyBAQCBURVNUKERhdGFJbnRlcmFjdGlv
blRlc3RzLCBJbWFnZVRvQ29udGVudEVkaXRhYmxlKQogICAgIEVYUEVDVF9UUlVFKFtvYnNlcnZl
ZEV2ZW50TmFtZXMgY29udGFpbnNPYmplY3Q6RGF0YUludGVyYWN0aW9uT3ZlckV2ZW50TmFtZV0p
OwogICAgIEVYUEVDVF9UUlVFKFtvYnNlcnZlZEV2ZW50TmFtZXMgY29udGFpbnNPYmplY3Q6RGF0
YUludGVyYWN0aW9uUGVyZm9ybU9wZXJhdGlvbkV2ZW50TmFtZV0pOwogICAgIGNoZWNrU2VsZWN0
aW9uUmVjdHNXaXRoTG9nZ2luZyhAWyBtYWtlQ0dSZWN0VmFsdWUoMSwgMjAxLCAyMTUsIDE3NCkg
XSwgW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBmaW5hbFNlbGVjdGlvblJlY3RzXSk7CisgICAg
Y2hlY2tUeXBlSWRlbnRpZmllclByZWNlZGVzT3RoZXJUeXBlSWRlbnRpZmllcihkYXRhSW50ZXJh
Y3Rpb25TaW11bGF0b3IuZ2V0KCksIChOU1N0cmluZyAqKWtVVFR5cGVQTkcsIChOU1N0cmluZyAq
KWtVVFR5cGVGaWxlVVJMKTsKIH0KIAogVEVTVChEYXRhSW50ZXJhY3Rpb25UZXN0cywgSW1hZ2VU
b1RleHRhcmVhKQpAQCAtOTksNiArMTA4LDcgQEAgVEVTVChEYXRhSW50ZXJhY3Rpb25UZXN0cywg
SW1hZ2VUb1RleHRhcmVhKQogCiAgICAgTlNBcnJheSAqZXhwZWN0ZWRTZWxlY3Rpb25SZWN0cyA9
IFtOU0FycmF5IGFycmF5V2l0aE9iamVjdHM6bWFrZUNHUmVjdFZhbHVlKDYsIDIwMywgMTg4LCAx
NCksIG1ha2VDR1JlY3RWYWx1ZSg2LCAyMTcsIDE4OCwgMTQpLCBtYWtlQ0dSZWN0VmFsdWUoNiwg
MjMxLCA2NiwgMTQpLCBuaWxdOwogICAgIGNoZWNrU2VsZWN0aW9uUmVjdHNXaXRoTG9nZ2luZyhl
eHBlY3RlZFNlbGVjdGlvblJlY3RzLCBbZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIGZpbmFsU2Vs
ZWN0aW9uUmVjdHNdKTsKKyAgICBjaGVja1R5cGVJZGVudGlmaWVyUHJlY2VkZXNPdGhlclR5cGVJ
ZGVudGlmaWVyKGRhdGFJbnRlcmFjdGlvblNpbXVsYXRvci5nZXQoKSwgKE5TU3RyaW5nICopa1VU
VHlwZVBORywgKE5TU3RyaW5nICopa1VUVHlwZUZpbGVVUkwpOwogfQogCiBURVNUKERhdGFJbnRl
cmFjdGlvblRlc3RzLCBDb250ZW50RWRpdGFibGVUb0NvbnRlbnRFZGl0YWJsZSkKQEAgLTExNyw2
ICsxMjcsNyBAQCBURVNUKERhdGFJbnRlcmFjdGlvblRlc3RzLCBDb250ZW50RWRpdGFibGVUb0Nv
bnRlbnRFZGl0YWJsZSkKICAgICBFWFBFQ1RfVFJVRShbb2JzZXJ2ZWRFdmVudE5hbWVzIGNvbnRh
aW5zT2JqZWN0OkRhdGFJbnRlcmFjdGlvbk92ZXJFdmVudE5hbWVdKTsKICAgICBFWFBFQ1RfVFJV
RShbb2JzZXJ2ZWRFdmVudE5hbWVzIGNvbnRhaW5zT2JqZWN0OkRhdGFJbnRlcmFjdGlvblBlcmZv
cm1PcGVyYXRpb25FdmVudE5hbWVdKTsKICAgICBjaGVja1NlbGVjdGlvblJlY3RzV2l0aExvZ2dp
bmcoQFsgbWFrZUNHUmVjdFZhbHVlKDEsIDIwMSwgOTYxLCAyMjcpIF0sIFtkYXRhSW50ZXJhY3Rp
b25TaW11bGF0b3IgZmluYWxTZWxlY3Rpb25SZWN0c10pOworICAgIGNoZWNrVHlwZUlkZW50aWZp
ZXJQcmVjZWRlc090aGVyVHlwZUlkZW50aWZpZXIoZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yLmdl
dCgpLCAoTlNTdHJpbmcgKilrVVRUeXBlUlRGRCwgKE5TU3RyaW5nICopa1VUVHlwZVVURjhQbGFp
blRleHQpOwogfQogCiBURVNUKERhdGFJbnRlcmFjdGlvblRlc3RzLCBDb250ZW50RWRpdGFibGVU
b1RleHRhcmVhKQpAQCAtMTM1LDYgKzE0NiwyMCBAQCBURVNUKERhdGFJbnRlcmFjdGlvblRlc3Rz
LCBDb250ZW50RWRpdGFibGVUb1RleHRhcmVhKQogICAgIEVYUEVDVF9UUlVFKFtvYnNlcnZlZEV2
ZW50TmFtZXMgY29udGFpbnNPYmplY3Q6RGF0YUludGVyYWN0aW9uT3ZlckV2ZW50TmFtZV0pOwog
ICAgIEVYUEVDVF9UUlVFKFtvYnNlcnZlZEV2ZW50TmFtZXMgY29udGFpbnNPYmplY3Q6RGF0YUlu
dGVyYWN0aW9uUGVyZm9ybU9wZXJhdGlvbkV2ZW50TmFtZV0pOwogICAgIGNoZWNrU2VsZWN0aW9u
UmVjdHNXaXRoTG9nZ2luZyhAWyBtYWtlQ0dSZWN0VmFsdWUoNiwgMjAzLCA5OTAsIDIzMikgXSwg
W2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBmaW5hbFNlbGVjdGlvblJlY3RzXSk7CisgICAgY2hl
Y2tUeXBlSWRlbnRpZmllclByZWNlZGVzT3RoZXJUeXBlSWRlbnRpZmllcihkYXRhSW50ZXJhY3Rp
b25TaW11bGF0b3IuZ2V0KCksIChOU1N0cmluZyAqKWtVVFR5cGVSVEZELCAoTlNTdHJpbmcgKilr
VVRUeXBlVVRGOFBsYWluVGV4dCk7Cit9CisKK1RFU1QoRGF0YUludGVyYWN0aW9uVGVzdHMsIFRl
eHRBcmVhVG9JbnB1dCkKK3sKKyAgICBSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4gd2ViVmlldyA9
IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2Uo
MCwgMCwgMzIwLCA1MDApXSk7CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFn
ZU5hbWVkOkAidGV4dGFyZWEtdG8taW5wdXQiXTsKKworICAgIFJldGFpblB0cjxEYXRhSW50ZXJh
Y3Rpb25TaW11bGF0b3I+IGRhdGFJbnRlcmFjdGlvblNpbXVsYXRvciA9IGFkb3B0TlMoW1tEYXRh
SW50ZXJhY3Rpb25TaW11bGF0b3IgYWxsb2NdIGluaXRXaXRoV2ViVmlldzp3ZWJWaWV3LmdldCgp
XSk7CisgICAgW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBydW5Gcm9tOkNHUG9pbnRNYWtlKDEw
MCwgNTApIHRvOkNHUG9pbnRNYWtlKDEwMCwgMzAwKV07CisKKyAgICBFWFBFQ1RfRVEoW3dlYlZp
ZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInNvdXJjZS52YWx1ZSJdLmxlbmd0aCwg
MFVMKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIkhlbGxvIHdvcmxkIiwgW3dlYlZpZXcgZWRpdG9y
VmFsdWVdLlVURjhTdHJpbmcpOworICAgIGNoZWNrU2VsZWN0aW9uUmVjdHNXaXRoTG9nZ2luZyhA
WyBtYWtlQ0dSZWN0VmFsdWUoMTAxLCAyNDEsIDk5MCwgMjMyKSBdLCBbZGF0YUludGVyYWN0aW9u
U2ltdWxhdG9yIGZpbmFsU2VsZWN0aW9uUmVjdHNdKTsKIH0KIAogVEVTVChEYXRhSW50ZXJhY3Rp
b25UZXN0cywgTGlua1RvSW5wdXQpCkBAIC0xNTIsNiArMTc3LDcgQEAgVEVTVChEYXRhSW50ZXJh
Y3Rpb25UZXN0cywgTGlua1RvSW5wdXQpCiAgICAgRVhQRUNUX1RSVUUoW29ic2VydmVkRXZlbnRO
YW1lcyBjb250YWluc09iamVjdDpEYXRhSW50ZXJhY3Rpb25PdmVyRXZlbnROYW1lXSk7CiAgICAg
RVhQRUNUX1RSVUUoW29ic2VydmVkRXZlbnROYW1lcyBjb250YWluc09iamVjdDpEYXRhSW50ZXJh
Y3Rpb25QZXJmb3JtT3BlcmF0aW9uRXZlbnROYW1lXSk7CiAgICAgY2hlY2tTZWxlY3Rpb25SZWN0
c1dpdGhMb2dnaW5nKEBbIG1ha2VDR1JlY3RWYWx1ZSgxMDEsIDI3MywgMjA1NywgMjMyKSBdLCBb
ZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIGZpbmFsU2VsZWN0aW9uUmVjdHNdKTsKKyAgICBjaGVj
a1R5cGVJZGVudGlmaWVyUHJlY2VkZXNPdGhlclR5cGVJZGVudGlmaWVyKGRhdGFJbnRlcmFjdGlv
blNpbXVsYXRvci5nZXQoKSwgKE5TU3RyaW5nICopa1VUVHlwZVVSTCwgKE5TU3RyaW5nICopa1VU
VHlwZVVURjhQbGFpblRleHQpOwogfQogCiBURVNUKERhdGFJbnRlcmFjdGlvblRlc3RzLCBCYWNr
Z3JvdW5kSW1hZ2VMaW5rVG9JbnB1dCkKQEAgLTE2OSw2ICsxOTUsNyBAQCBURVNUKERhdGFJbnRl
cmFjdGlvblRlc3RzLCBCYWNrZ3JvdW5kSW1hZ2VMaW5rVG9JbnB1dCkKICAgICBFWFBFQ1RfVFJV
RShbb2JzZXJ2ZWRFdmVudE5hbWVzIGNvbnRhaW5zT2JqZWN0OkRhdGFJbnRlcmFjdGlvbk92ZXJF
dmVudE5hbWVdKTsKICAgICBFWFBFQ1RfVFJVRShbb2JzZXJ2ZWRFdmVudE5hbWVzIGNvbnRhaW5z
T2JqZWN0OkRhdGFJbnRlcmFjdGlvblBlcmZvcm1PcGVyYXRpb25FdmVudE5hbWVdKTsKICAgICBj
aGVja1NlbGVjdGlvblJlY3RzV2l0aExvZ2dpbmcoQFsgbWFrZUNHUmVjdFZhbHVlKDEwMSwgMjQx
LCAyMDU3LCAyMzIpIF0sIFtkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgZmluYWxTZWxlY3Rpb25S
ZWN0c10pOworICAgIGNoZWNrVHlwZUlkZW50aWZpZXJQcmVjZWRlc090aGVyVHlwZUlkZW50aWZp
ZXIoZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yLmdldCgpLCAoTlNTdHJpbmcgKilrVVRUeXBlVVJM
LCAoTlNTdHJpbmcgKilrVVRUeXBlVVRGOFBsYWluVGV4dCk7CiB9CiAKIFRFU1QoRGF0YUludGVy
YWN0aW9uVGVzdHMsIENhblByZXZlbnRTdGFydCkKQEAgLTI5OCw2ICszMjUsNyBAQCBURVNUKERh
dGFJbnRlcmFjdGlvblRlc3RzLCBMYXJnZUltYWdlVG9UYXJnZXREaXYpCiAgICAgUmV0YWluUHRy
PERhdGFJbnRlcmFjdGlvblNpbXVsYXRvcj4gZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yID0gYWRv
cHROUyhbW0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3Ondl
YlZpZXcuZ2V0KCldKTsKICAgICBbZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIHJ1bkZyb206Q0dQ
b2ludE1ha2UoMjAwLCA0MDApIHRvOkNHUG9pbnRNYWtlKDIwMCwgMTUwKV07CiAgICAgRVhQRUNU
X1dLX1NUUkVRKCJQQVNTIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpA
InRhcmdldC50ZXh0Q29udGVudCJdLlVURjhTdHJpbmcpOworICAgIGNoZWNrVHlwZUlkZW50aWZp
ZXJQcmVjZWRlc090aGVyVHlwZUlkZW50aWZpZXIoZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yLmdl
dCgpLCAoTlNTdHJpbmcgKilrVVRUeXBlUE5HLCAoTlNTdHJpbmcgKilrVVRUeXBlRmlsZVVSTCk7
CiB9CiAKIFRFU1QoRGF0YUludGVyYWN0aW9uVGVzdHMsIExpbmtXaXRoRW1wdHlIUkVGKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvRGF0YUludGVyYWN0aW9uU2ltdWxhdG9y
LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9EYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IuaApp
bmRleCBmYTExMGE2ZGY3ZThiMjcxMzlkZWM0OWQ2MWIwZDRiYzUyNDYyN2NhLi4zMzZiZGZkODkx
NTU2YzMxMTc2ODgzNjU3MmJjMDU1YjZlYzE3ZmVmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL2lvcy9EYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IuaAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL2lvcy9EYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IuaApAQCAtNTUsNiArNTUsNyBAQCB0
eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBEYXRhSW50ZXJhY3Rpb25QaGFzZSkgewogICAgIFJl
dGFpblB0cjxNb2NrRGF0YU9wZXJhdGlvblNlc3Npb24+IF9kYXRhT3BlcmF0aW9uU2Vzc2lvbjsK
ICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IF9vYnNlcnZlZEV2ZW50TmFtZXM7CiAgICAg
UmV0YWluUHRyPFVJSXRlbVByb3ZpZGVyPiBfZXh0ZXJuYWxJdGVtUHJvdmlkZXI7CisgICAgUmV0
YWluUHRyPE5TQXJyYXkgKj4gX3NvdXJjZUl0ZW1Qcm92aWRlcnM7CiAgICAgUmV0YWluUHRyPE5T
QXJyYXkgKj4gX2ZpbmFsU2VsZWN0aW9uUmVjdHM7CiAgICAgQ0dQb2ludCBfc3RhcnRMb2NhdGlv
bjsKICAgICBDR1BvaW50IF9lbmRMb2NhdGlvbjsKQEAgLTcxLDYgKzcyLDcgQEAgdHlwZWRlZiBO
U19FTlVNKE5TSW50ZWdlciwgRGF0YUludGVyYWN0aW9uUGhhc2UpIHsKIEBwcm9wZXJ0eSAobm9u
YXRvbWljKSBCbG9ja1B0cjxCT09MKF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvICopPiBzaG93Q3Vz
dG9tQWN0aW9uU2hlZXRCbG9jazsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBCbG9ja1B0cjxOU0Fy
cmF5ICooTlNBcnJheSAqKT4gY29udmVydEl0ZW1Qcm92aWRlcnNCbG9jazsKIEBwcm9wZXJ0eSAo
bm9uYXRvbWljLCBzdHJvbmcpIFVJSXRlbVByb3ZpZGVyICpleHRlcm5hbEl0ZW1Qcm92aWRlcjsK
K0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNBcnJheSAqc291cmNlSXRlbVByb3Zp
ZGVyczsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNBcnJheSAqb2JzZXJ2ZWRF
dmVudE5hbWVzOwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU0FycmF5ICpmaW5h
bFNlbGVjdGlvblJlY3RzOwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBEYXRhSW50
ZXJhY3Rpb25QaGFzZSBwaGFzZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9z
L0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL0Rh
dGFJbnRlcmFjdGlvblNpbXVsYXRvci5tbQppbmRleCAxM2Y0YTBiZmE4NWZhOGQ2NjA1MmRiZjhj
MTVlM2E3ZmUwZDE0ZTM1Li5hZTE2YzlkODg0NjQ2NWJkNmE1M2EwNDg5MDEyODYwYTQwNzBiZmI4
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9EYXRhSW50ZXJhY3Rpb25TaW11
bGF0b3IubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvRGF0YUludGVyYWN0aW9uU2lt
dWxhdG9yLm1tCkBAIC0yMDIsMTAgKzIwMiwxNCBAQCBzdGF0aWMgTlNBcnJheSAqZGF0YUludGVy
YWN0aW9uRXZlbnROYW1lcygpCiAKICAgICAgICAgX2RhdGFPcGVyYXRpb25TZXNzaW9uID0gYWRv
cHROUyhbW01vY2tEYXRhT3BlcmF0aW9uU2Vzc2lvbiBhbGxvY10gaW5pdFdpdGhQcm92aWRlcjpp
dGVtUHJvdmlkZXJzLmZpcnN0T2JqZWN0IGxvY2F0aW9uOnNlbGYuX2N1cnJlbnRMb2NhdGlvbiB3
aW5kb3c6W193ZWJWaWV3IHdpbmRvd11dKTsKICAgICAgICAgW19kYXRhSW50ZXJhY3Rpb25TZXNz
aW9uIHNldEl0ZW1zOml0ZW1zXTsKLSAgICAgICAgaWYgKCFzZWxmLnNob3dDdXN0b21BY3Rpb25T
aGVldEJsb2NrKSB7Ci0gICAgICAgICAgICBbX3dlYlZpZXcgX3NpbXVsYXRlV2lsbEJlZ2luRGF0
YUludGVyYWN0aW9uV2l0aFNlc3Npb246X2RhdGFJbnRlcmFjdGlvblNlc3Npb24uZ2V0KCldOwot
ICAgICAgICAgICAgX3BoYXNlID0gRGF0YUludGVyYWN0aW9uQmVnYW47CisgICAgICAgIF9zb3Vy
Y2VJdGVtUHJvdmlkZXJzID0gaXRlbVByb3ZpZGVyczsKKyAgICAgICAgaWYgKHNlbGYuc2hvd0N1
c3RvbUFjdGlvblNoZWV0QmxvY2spIHsKKyAgICAgICAgICAgIC8vIERlZmVyIHByb2dyZXNzIHVu
dGlsIHRoZSBjdXN0b20gYWN0aW9uIHNoZWV0IGlzIGRpc21pc3NlZC4KKyAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQorCisgICAgICAgIFtfd2ViVmlldyBfc2ltdWxhdGVXaWxsQmVnaW5E
YXRhSW50ZXJhY3Rpb25XaXRoU2Vzc2lvbjpfZGF0YUludGVyYWN0aW9uU2Vzc2lvbi5nZXQoKV07
CisgICAgICAgIF9waGFzZSA9IERhdGFJbnRlcmFjdGlvbkJlZ2FuOwogICAgICAgICBicmVhazsK
ICAgICB9CiAgICAgY2FzZSBEYXRhSW50ZXJhY3Rpb25CZWdhbjoKQEAgLTIzNSw2ICsyMzksMTEg
QEAgc3RhdGljIE5TQXJyYXkgKmRhdGFJbnRlcmFjdGlvbkV2ZW50TmFtZXMoKQogICAgIFtzZWxm
IHBlcmZvcm1TZWxlY3RvcjpAc2VsZWN0b3IoX2FkdmFuY2VQcm9ncmVzcykgd2l0aE9iamVjdDpu
aWwgYWZ0ZXJEZWxheTpwcm9ncmVzc1RpbWVTdGVwXTsKIH0KIAorLSAoTlNBcnJheSAqKXNvdXJj
ZUl0ZW1Qcm92aWRlcnMKK3sKKyAgICByZXR1cm4gX3NvdXJjZUl0ZW1Qcm92aWRlcnMuZ2V0KCk7
Cit9CisKIC0gKFVJSXRlbVByb3ZpZGVyICopZXh0ZXJuYWxJdGVtUHJvdmlkZXIKIHsKICAgICBy
ZXR1cm4gX2V4dGVybmFsSXRlbVByb3ZpZGVyLmdldCgpOwpAQCAtMjc0LDYgKzI4Myw3IEBAIHN0
YXRpYyBOU0FycmF5ICpkYXRhSW50ZXJhY3Rpb25FdmVudE5hbWVzKCkKICAgICAgICAgRGF0YUlu
dGVyYWN0aW9uU2ltdWxhdG9yICp3ZWFrU2VsZiA9IHN0cm9uZ1NlbGYuZ2V0KCk7CiAgICAgICAg
IFt3ZWFrU2VsZi0+X3dlYlZpZXcgX3NpbXVsYXRlV2lsbEJlZ2luRGF0YUludGVyYWN0aW9uV2l0
aFNlc3Npb246d2Vha1NlbGYtPl9kYXRhSW50ZXJhY3Rpb25TZXNzaW9uLmdldCgpXTsKICAgICAg
ICAgd2Vha1NlbGYtPl9waGFzZSA9IERhdGFJbnRlcmFjdGlvbkJlZ2FuOworICAgICAgICBbd2Vh
a1NlbGYgX3NjaGVkdWxlQWR2YW5jZVByb2dyZXNzXTsKICAgICB9KTsKIAogICAgIHJldHVybiBz
ZWxmLnNob3dDdXN0b21BY3Rpb25TaGVldEJsb2NrKGVsZW1lbnQpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>306155</attachid>
            <date>2017-04-03 19:22:06 -0700</date>
            <delta_ts>2017-04-03 20:10:50 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-170428-20170403192205.patch</filename>
            <type>text/plain</type>
            <size>40966</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0ODU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQ2NWMwMzYzMzE2YjBj
YzIyMzQ5MTgzMmRjMWZmMzI0OTg2OTEzNi4uZWZlMDM2ODhmYzUzZjBlODNhYmMyNWUxYzQ2MDNh
OTZjNDUyYWZkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDE3LTA0LTAzICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIERhdGEgaW50ZXJh
Y3Rpb24gc2hvdWxkIHJlZ2lzdGVyIHR5cGUgaWRlbnRpZmllcnMgaW4gb3JkZXIgb2YgcHJpb3Jp
dHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDQy
OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzA2MzMyOTY+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgVGltIEhvcnRvbi4KKworICAgICAgICBDdXJyZW50bHksIGR1ZSB0byB0aGUgc2hhcmVkIGxv
Z2ljIGZvciB3cml0aW5nIHRvIGEgVUlQYXN0ZWJvYXJkIChpbiB0aGUgY2FzZSBvZiBjb3B5L3Bh
c3RlKSBhbmQgdGhlIHNoYXJlZAorICAgICAgICBVSUl0ZW1Qcm92aWRlci1iYXNlZCBwYXN0ZWJv
YXJkIHdyYXBwZXIgKGluIHRoZSBjYXNlIG9mIGRhdGEgaW50ZXJhY3Rpb24pLCB3ZSBkb24ndCBl
bmZvcmNlIGFueSBwYXJ0aWN1bGFyCisgICAgICAgIG9yZGVyaW5nIGluIHdoaWNoIHR5cGUgaWRl
bnRpZmllcnMgYXJlIHJlZ2lzdGVyZWQgaW4gdGhlIGdlbmVyYXRlZCBpdGVtIHByb3ZpZGVyLiBU
aGlzIGlzIGJlY2F1c2UKKyAgICAgICAgLVtVSVBhc3RlYm9hcmQgc2V0SXRlbXM6XSBvbmx5IHRh
a2VzIGFuIHVub3JkZXJlZCBtYXBwaW5nIG9mIHR5cGUgaWRlbnRpZmllcnMgdG8gb2JqZWN0cy4K
KworICAgICAgICBUbyBmaXggdGhpcywgd2UgaW50cm9kdWNlIGEgc2VwYXJhdGUgd2F5IHRvIHNl
dCBwYXN0ZWJvYXJkIGRhdGEgdGhhdCBmaXJzdCB3cml0ZXMgYSBsaXN0IG9mIG9iamVjdAorICAg
ICAgICByZXByZXNlbnRhdGlvbnMgaW4gb3JkZXIgb2YgcHJpb3JpdHkgKHdoaWNoIGlzIGRlcGVu
ZGVudCBvbiB0aGUgY29udGVudCBiZWluZyBpbnRlcmFjdGVkIHdpdGgpIGFuZCB0aGVuIHJlZ2lz
dGVyCisgICAgICAgIGluZGl2aWR1YWwgdHlwZS1kYXRhIG1hcHBpbmdzIGF0IHRoZSBlbmQuCisK
KyAgICAgICAgQXVnbWVudGVkIGV4aXN0aW5nIEFQSSB0ZXN0cyBpbiBEYXRhSW50ZXJhY3Rpb25U
ZXN0cyB0byBjaGVjayBmb3IgdGhlIGV4aXN0ZW5jZSBhbmQgcHJpb3JpdHkgb2YgdHlwZSBpZGVu
dGlmaWVycworICAgICAgICBpbiB0aGUgVUlJdGVtUHJvdmlkZXJzIGNyZWF0ZWQgdXBvbiBzdGFy
dGluZyBkYXRhIGludGVyYWN0aW9uLiBBbHNvIGFkZHMgYSBuZXcgdW5pdCB0ZXN0OgorICAgICAg
ICBEYXRhSW50ZXJhY3Rpb25UZXN0cy5UZXh0QXJlYVRvSW5wdXQuCisKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9F
ZGl0b3JDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmFyY2hpdmVkRGF0YUZvckF0dHJpYnV0
ZWRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjp3cml0ZVNlbGVjdGlvblRvUGFz
dGVib2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OndyaXRlU2VsZWN0aW9uKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVi
b2FyZFdyaXRlckRhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvQWJzdHJhY3RQYXN0ZWJvYXJkLmg6CisgICAgICAg
ICogcGxhdGZvcm0vaW9zL0Fic3RyYWN0UGFzdGVib2FyZC5tbTogQ29waWVkIGZyb20gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL0Fic3RyYWN0UGFzdGVib2FyZC5oLgorCisgICAgICAgIElu
dHJvZHVjZSBXZWJQYXN0ZWJvYXJkSXRlbURhdGEsIGEgd3JhcHBlciBhcm91bmQgYSBsaXN0IG9m
IG9iamVjdHMgcmVwcmVzZW50YXRpbmcgdGhlIHBhc3RlYm9hcmQgZGF0YSBpbiBvcmRlcgorICAg
ICAgICBvZiBwcmlvcml0eSwgYW5kIGEgZGljdGlvbmFyeSBjb250YWluaW5nIGFkZGl0aW9uYWwg
TlNEYXRhIGJsb2JzIHRoYXQgY29udGFpbiBkYXRhIHVzZWZ1bCBmb3IgcHJpdmF0ZSBjbGllbnRz
LgorCisgICAgICAgICgrW1dlYlBhc3RlYm9hcmRJdGVtRGF0YSBpdGVtV2l0aFJlcHJlc2VudGlu
Z09iamVjdHM6YWRkaXRpb25hbERhdGE6XSk6CisgICAgICAgICgtW1dlYlBhc3RlYm9hcmRJdGVt
RGF0YSBpbml0V2l0aFJlcHJlc2VudGluZ09iamVjdHM6YWRkaXRpb25hbERhdGE6XSk6CisgICAg
ICAgICgtW1dlYlBhc3RlYm9hcmRJdGVtRGF0YSByZXByZXNlbnRpbmdPYmplY3RzXSk6CisgICAg
ICAgICgtW1dlYlBhc3RlYm9hcmRJdGVtRGF0YSBhZGRpdGlvbmFsRGF0YV0pOgorICAgICAgICAq
IHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3Jl
OjpyaWNoVGV4dFJlcHJlc2VudGF0aW9uc0ZvclBhc3RlYm9hcmRXZWJDb250ZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGVPYmplY3RSZXByZXNlbnRhdGlv
bnMpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZSk6CisKKyAg
ICAgICAgVHdlYWtlZCB0byBjaGVjayB3aGV0aGVyIHRoZSBwYXN0ZWJvYXJkIHJlc3BvbmRzIHRv
IC1zZXRJdGVtc0Zyb21PYmplY3RSZXByZXNlbnRhdGlvbnM6LiBJZiBzbywgdXNlcyB0aGUKKyAg
ICAgICAgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZU9iamVjdFJlcHJlc2VudGF0aW9ucyBjb2Rl
cGF0aCB0byB3cml0ZSBkYXRhIHRvIHRoZSBwYXN0ZWJvYXJkLCByZXNwZWN0aW5nIHR5cGUKKyAg
ICAgICAgcHJpb3JpdHkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVy
UGFzdGVib2FyZC5tbToKKyAgICAgICAgKC1bV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZCBwYXN0
ZWJvYXJkVHlwZXNdKToKKyAgICAgICAgKC1bV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZCBzZXRJ
dGVtUHJvdmlkZXJzOl0pOgorICAgICAgICAoLVtXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIHNl
dEl0ZW1zRnJvbU9iamVjdFJlcHJlc2VudGF0aW9uczpdKToKKworICAgICAgICBSZXBsYWNlcyAt
c2V0SXRlbXM6IHdpdGggLXNldEl0ZW1zRnJvbU9iamVjdFJlcHJlc2VudGF0aW9uczosIHdoaWNo
IHJlc3BlY3RzIHRoZSBwcmlvcml0eSBvZiBlYWNoIG9iamVjdAorICAgICAgICByZXByZXNlbnRh
dGlvbiBvZiB0aGUgZGF0YSBpbiB0aGUgcGFzdGVib2FyZC4KKworICAgICAgICAoLVtXZWJJdGVt
UHJvdmlkZXJQYXN0ZWJvYXJkIHNldEl0ZW1zOl0pOiBEZWxldGVkLgorCiAyMDE3LTA0LTAzICBK
YXZpZXIgRmVybmFuZGV6ICA8amZlcm5hbmRlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtjc3Mt
YWxpZ25dIEFkYXB0IHBsYWNlLWNvbnRlbnQgYWxpZ25tZW50IHNob3J0aGFuZCB0byB0aGUgbmV3
IGJhc2VsaW5lIHN5bnRheApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDgwOThlZWY2N2ZmZDkyNDBkMThhYWQzNDk3
YThmOWFmNzU4YzgwZGMuLjk2NmM2MjM5ZGM1YmM4YWRiYTgxMDU0ZTliZjM0ZDgxYmZjN2Y5OTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxNy0wNC0wMyAgV2Vuc29uIEhzaWVoICA8
d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBEYXRhIGludGVyYWN0aW9uIHNob3Vs
ZCByZWdpc3RlciB0eXBlIGlkZW50aWZpZXJzIGluIG9yZGVyIG9mIHByaW9yaXR5CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzA0MjgKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzMwNjMzMjk2PgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0
b24uCisKKyAgICAgICAgU2VyaWFsaXplIFBhc3RlYm9hcmRXZWJDb250ZW50LmRhdGFJbkF0dHJp
YnV0ZWRTdHJpbmdGb3JtYXQgd2hlbiBzZW5kaW5nIG92ZXIgSVBDLiBSZWZlciB0byBXZWJDb3Jl
IENoYW5nZUxvZworICAgICAgICBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAgICogU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
UGFzdGVib2FyZFdlYkNvbnRlbnQ+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENv
ZGVyPFBhc3RlYm9hcmRXZWJDb250ZW50Pjo6ZGVjb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbToKKwogMjAxNy0wNC0wMyAgSm9zZXBoIFBlY29yYXJvICA8
cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBubyBsb25nZXIgbmVlZGVkIGZv
cndhcmQgZGVjbGFyYXRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggYjEzZDM5M2ExMGM3ZTJjY2ViZmZiMWNkYzMwMmM2ZTFj
YjYxOTlhOC4uNzk0ODVhMjc2YTc5ZTVmYTMyMTUzNmE1YWRkZjRkMTVlM2ZkMTZjMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
NjgzMCw2ICs2ODMwLDcgQEAKIAkJRjQ4MjIzMTMxRTM4NkUyNDAwNjZGQzc5IC8qIEFic3RyYWN0
UGFzdGVib2FyZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjQ4MjIzMTIxRTM4NkUyNDAwNjZGQzc5IC8qIEFic3RyYWN0UGFzdGVib2FyZC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUY0QkZCOTg1MUUx
RERGOUIwMDg2MkMyNCAvKiBEdW1wRWRpdGluZ0hpc3RvcnkuanMgaW4gQ29weSBTY3JpcHRzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0ODM4OTgzMUUxRERGMkIwMDc2QjdF
QSAvKiBEdW1wRWRpdGluZ0hpc3RvcnkuanMgKi87IH07CiAJCUY0QkZCOTg2MUUxRERGOUIwMDg2
MkMyNCAvKiBFZGl0aW5nSGlzdG9yeVV0aWwuanMgaW4gQ29weSBTY3JpcHRzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0ODM4OTg0MUUxRERGMkIwMDc2QjdFQSAvKiBFZGl0
aW5nSGlzdG9yeVV0aWwuanMgKi87IH07CisJCUY0RDgzMTYyMUU5MDhDMDcwMDk0MTE3NCAvKiBB
YnN0cmFjdFBhc3RlYm9hcmQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGNEQ4MzE2MTFFOTA4QzA3MDA5NDExNzQgLyogQWJzdHJhY3RQYXN0ZWJvYXJk
Lm1tICovOyB9OwogCQlGNTA2NjRGNzE1N0Y1MkRDMDBBQzIyNkYgLyogRm9ybUNvbnRyb2xsZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjUwNjY0
RjUxNTdGNTJEQzAwQUMyMjZGIC8qIEZvcm1Db250cm9sbGVyLmNwcCAqLzsgfTsKIAkJRjUwNjY0
RjgxNTdGNTJEQzAwQUMyMjZGIC8qIEZvcm1Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTA2NjRGNjE1N0Y1MkRDMDBBQzIyNkYgLyog
Rm9ybUNvbnRyb2xsZXIuaCAqLzsgfTsKIAkJRjUxM0EzRUExNUZGNDg0MTAwMTUyNkRCIC8qIFZh
bGlkYXRpb25NZXNzYWdlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGNTEzQTNFOTE1RkY0ODQxMDAxNTI2REIgLyogVmFsaWRhdGlvbk1lc3Nh
Z2VDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtMTUzMzIsNiArMTUzMzMsNyBAQAogCQlGNDgyMjMxMjFFMzg2RTI0MDA2NkZDNzkgLyog
QWJzdHJhY3RQYXN0ZWJvYXJkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFi
c3RyYWN0UGFzdGVib2FyZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDgzODk4
MzFFMURERjJCMDA3NkI3RUEgLyogRHVtcEVkaXRpbmdIaXN0b3J5LmpzICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5qYXZhc2NyaXB0OyBuYW1lID0gRHVtcEVkaXRpbmdIaXN0b3J5LmpzOyBwYXRoID0g
U2NyaXB0cy9EdW1wRWRpdGluZ0hpc3RvcnkuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUY0ODM4OTg0MUUxRERGMkIwMDc2QjdFQSAvKiBFZGl0aW5nSGlzdG9yeVV0aWwuanMgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IG5hbWUgPSBFZGl0aW5nSGlzdG9yeVV0aWwu
anM7IHBhdGggPSBTY3JpcHRzL0VkaXRpbmdIaXN0b3J5VXRpbC5qczsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRjREODMxNjExRTkwOEMwNzAwOTQxMTc0IC8qIEFic3RyYWN0UGFzdGVi
b2FyZC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFic3RyYWN0
UGFzdGVib2FyZC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjUwNjY0RjUxNTdG
NTJEQzAwQUMyMjZGIC8qIEZvcm1Db250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEZvcm1Db250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRjUwNjY0RjYxNTdGNTJEQzAwQUMyMjZGIC8qIEZvcm1Db250cm9sbGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvcm1Db250cm9sbGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY1MTNBM0U5MTVGRjQ4NDEwMDE1MjZEQiAvKiBWYWxpZGF0
aW9uTWVzc2FnZUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWYWxp
ZGF0aW9uTWVzc2FnZUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjA4
NjMsNiArMjA4NjUsNyBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJQTE0ODMyOEIxODdGNTA2ODAw
REE2M0E2IC8qIHdhayAqLywKIAkJCQlGNDgyMjMxMjFFMzg2RTI0MDA2NkZDNzkgLyogQWJzdHJh
Y3RQYXN0ZWJvYXJkLmggKi8sCisJCQkJRjREODMxNjExRTkwOEMwNzAwOTQxMTc0IC8qIEFic3Ry
YWN0UGFzdGVib2FyZC5tbSAqLywKIAkJCQkyNjU1NDE0QjE0ODlBQTJCMDAwREZDNUQgLyogQ3Vy
c29ySU9TLmNwcCAqLywKIAkJCQlBMUVENzc4QTFCRTMyOTNGMDBEQzE3OTEgLyogRGV2aWNlLmNw
cCAqLywKIAkJCQlBMUVENzc4QjFCRTMyOTQwMDBEQzE3OTEgLyogRGV2aWNlLmggKi8sCkBAIC0z
MTYyOSw2ICszMTYzMiw3IEBACiAJCQkJQTYxNDhBNzgxMkU0MUUzQjAwNDRBNzg0IC8qIEpTSFRN
TEtleWdlbkVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFFMkFCMjEwQTFDRTYzQjAw
QjQyQjI1IC8qIEpTSFRNTExhYmVsRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUUy
QUIyMzBBMUNFNjNCMDBCNDJCMjUgLyogSlNIVE1MTGVnZW5kRWxlbWVudC5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlGNEQ4MzE2MjFFOTA4QzA3MDA5NDExNzQgLyogQWJzdHJhY3RQYXN0ZWJvYXJk
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFFMkFCMjUwQTFDRTYzQjAwQjQyQjI1IC8qIEpTSFRN
TExJRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODBFN0IxMDBBMTlENjA2MDA3RkI4
QzUgLyogSlNIVE1MTGlua0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFFMkFCMjcw
QTFDRTYzQjAwQjQyQjI1IC8qIEpTSFRNTE1hcEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQppbmRleCA0MDI4NmY0
MWQyZTcwNGFhODMxYTg0NThiNTAzMzUxNTMzNjgxNGE5Li4wNWM4OTA4NDQ2YTI2ODhkYmU0ODA2
OGZlN2EyNDcwMzVkYTk5MGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0VkaXRvckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRp
dG9yQ29jb2EubW0KQEAgLTE1Miw2ICsxNTIsMTQgQEAgRnJhZ21lbnRBbmRSZXNvdXJjZXMgRWRp
dG9yOjpjcmVhdGVGcmFnbWVudChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCitzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZWREYXRh
Rm9yQXR0cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcp
Cit7CisgICAgaWYgKCFhdHRyaWJ1dGVkU3RyaW5nLmxlbmd0aCkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjp3cmFwTlNEYXRhKFtOU0tleWVkQXJj
aGl2ZXIgYXJjaGl2ZWREYXRhV2l0aFJvb3RPYmplY3Q6YXR0cmlidXRlZFN0cmluZ10pOworfQor
CiB2b2lkIEVkaXRvcjo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoUGFzdGVib2FyZCYgcGFz
dGVib2FyZCkKIHsKICAgICBOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcgPSBh
dHRyaWJ1dGVkU3RyaW5nRnJvbVJhbmdlKCpzZWxlY3RlZFJhbmdlKCkpOwpAQCAtMTYxLDYgKzE2
OSw3IEBAIHZvaWQgRWRpdG9yOjp3cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChQYXN0ZWJvYXJk
JiBwYXN0ZWJvYXJkKQogICAgIGNvbnRlbnQuZGF0YUluV2ViQXJjaGl2ZUZvcm1hdCA9IHNlbGVj
dGlvbkluV2ViQXJjaGl2ZUZvcm1hdCgpOwogICAgIGNvbnRlbnQuZGF0YUluUlRGREZvcm1hdCA9
IGF0dHJpYnV0ZWRTdHJpbmcuY29udGFpbnNBdHRhY2htZW50cyA/IGRhdGFJblJURkRGb3JtYXQo
YXR0cmlidXRlZFN0cmluZykgOiBudWxscHRyOwogICAgIGNvbnRlbnQuZGF0YUluUlRGRm9ybWF0
ID0gZGF0YUluUlRGRm9ybWF0KGF0dHJpYnV0ZWRTdHJpbmcpOworICAgIGNvbnRlbnQuZGF0YUlu
QXR0cmlidXRlZFN0cmluZ0Zvcm1hdCA9IGFyY2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRTdHJpbmco
YXR0cmlidXRlZFN0cmluZyk7CiAgICAgLy8gRklYTUU6IFdoeSBkb24ndCB3ZSB3YW50IHRoaXMg
b24gaU9TPwogI2lmIFBMQVRGT1JNKE1BQykKICAgICBjb250ZW50LmRhdGFJbkhUTUxGb3JtYXQg
PSBzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKTsKQEAgLTE4MCw2ICsxODksNyBAQCB2b2lkIEVkaXRv
cjo6d3JpdGVTZWxlY3Rpb24oUGFzdGVib2FyZFdyaXRlckRhdGEmIHBhc3RlYm9hcmRXcml0ZXJE
YXRhKQogICAgIHdlYkNvbnRlbnQuZGF0YUluV2ViQXJjaGl2ZUZvcm1hdCA9IHNlbGVjdGlvbklu
V2ViQXJjaGl2ZUZvcm1hdCgpOwogICAgIHdlYkNvbnRlbnQuZGF0YUluUlRGREZvcm1hdCA9IGF0
dHJpYnV0ZWRTdHJpbmcuY29udGFpbnNBdHRhY2htZW50cyA/IGRhdGFJblJURkRGb3JtYXQoYXR0
cmlidXRlZFN0cmluZykgOiBudWxscHRyOwogICAgIHdlYkNvbnRlbnQuZGF0YUluUlRGRm9ybWF0
ID0gZGF0YUluUlRGRm9ybWF0KGF0dHJpYnV0ZWRTdHJpbmcpOworICAgIHdlYkNvbnRlbnQuZGF0
YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdCA9IGFyY2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRTdHJp
bmcoYXR0cmlidXRlZFN0cmluZyk7CiAgICAgLy8gRklYTUU6IFdoeSBkb24ndCB3ZSB3YW50IHRo
aXMgb24gaU9TPwogI2lmIFBMQVRGT1JNKE1BQykKICAgICB3ZWJDb250ZW50LmRhdGFJbkhUTUxG
b3JtYXQgPSBzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmQuaAppbmRleCAzZGQwMGQzYjBlY2NhZjgwZjRjNjZhZmVkYTJmNmJiNmZhYWM1OWJkLi5i
OTRkNzBhMWY2YTUyMGIwMTgxYzNkMjM1YmUyZmJiOGM3ZGM4YjY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZC5oCkBAIC02OSw2ICs2OSw3IEBAIHN0cnVjdCBQYXN0ZWJvYXJkV2Vi
Q29udGVudCB7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1h
dDsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0OwogICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdDsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OwogICAgIFN0cmluZyBkYXRhSW5IVE1MRm9y
bWF0OwogICAgIFN0cmluZyBkYXRhSW5TdHJpbmdGb3JtYXQ7CiAgICAgVmVjdG9yPFN0cmluZz4g
Y2xpZW50VHlwZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkV3JpdGVyRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRl
ckRhdGEuaAppbmRleCAyYzVhZGMyZDIyNmFlM2MxOGY5N2JlOWIyYWJkODMxNzhkNmEwMzZmLi4w
ZDFiNGI3MzZkMjI0ZWZkZjljMjBjNzRlODM3MjEzMmQxOTQ0OWM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgKQEAgLTU0LDYgKzU0LDcgQEAg
cHVibGljOgogICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9y
bWF0OwogICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0OwogICAg
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7CisgICAgICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CiAgICAgICAgIC8v
IEZJWE1FOiBXaHkgZG9uJ3Qgd2Ugd2FudCB0aGlzIG9uIGlPUz8KICNpZiBQTEFURk9STShNQUMp
CiAgICAgICAgIFN0cmluZyBkYXRhSW5IVE1MRm9ybWF0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAppbmRleCBiYTU0MjZmN2NlZGJiZDVhMjNjNjUyNTdk
YWIwYTQxMzdkMTcwOTdkLi4zNDMwMTE4Mjc4Mjg4NjlmNWEwNTM0YjE1M2RkYjQ5MjhkYzJmMWYx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaApAQCAt
ODgsNiArODgsMTIgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6CisjaWYgUExBVEZPUk0o
SU9TKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGVPYmplY3RSZXByZXNlbnRhdGlvbnMo
Y29uc3QgUGFzdGVib2FyZFdlYkNvbnRlbnQmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdy
aXRlT2JqZWN0UmVwcmVzZW50YXRpb25zKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgd3JpdGVPYmplY3RSZXByZXNlbnRhdGlvbnMoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0KTsKKyNlbmRpZgorCiAjaWYgUExB
VEZPUk0oTUFDKQogICAgIFJldGFpblB0cjxOU1Bhc3RlYm9hcmQ+IG1fcGFzdGVib2FyZDsKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0Fic3RyYWN0UGFz
dGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0Fic3RyYWN0UGFzdGVib2Fy
ZC5oCmluZGV4IGExZmUwNDA1NDg2ZTQ2MjhjMjZjMWQ2NmU3ZTQ1NTM1MDIwNzE4ZjAuLjg0MWE3
MDJiMGRkYjBjZjRjZmE2ZDhhZWIwMzRlMWUzYzY2MzFiYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9BYnN0cmFjdFBhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvQWJzdHJhY3RQYXN0ZWJvYXJkLmgKQEAgLTI1LDE1ICsyNSwzMSBA
QAogCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KIAorI2lmIFRBUkdFVF9PU19J
UEhPTkUgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCisKK1dF
QkNPUkVfRVhQT1JUIEBpbnRlcmZhY2UgV2ViUGFzdGVib2FyZEl0ZW1EYXRhIDogTlNPYmplY3QK
KworKyAoaW5zdGFuY2V0eXBlKWl0ZW1XaXRoUmVwcmVzZW50aW5nT2JqZWN0czooTlNBcnJheSAq
KXJlcHJlc2VudGluZ09iamVjdHMgYWRkaXRpb25hbERhdGE6KE5TRGljdGlvbmFyeSAqKWFkZGl0
aW9uYWxEYXRhOworCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIHN0cm9uZykgTlNB
cnJheSAqcmVwcmVzZW50aW5nT2JqZWN0czsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25s
eSwgc3Ryb25nKSBOU0RpY3Rpb25hcnkgKmFkZGl0aW9uYWxEYXRhOworCitAZW5kCisKIEBwcm90
b2NvbCBBYnN0cmFjdFBhc3RlYm9hcmQgPE5TT2JqZWN0PgogQHJlcXVpcmVkCiAKIEBwcm9wZXJ0
eSAocmVhZG9ubHksIG5vbmF0b21pYykgTlNJbnRlZ2VyIG51bWJlck9mSXRlbXM7CiAKIC0gKE5T
QXJyYXk8TlNTdHJpbmcgKj4gKilwYXN0ZWJvYXJkVHlwZXM7Ci0tICh2b2lkKXNldEl0ZW1zOihO
U0FycmF5ICopaXRlbXM7CiAtIChOU0FycmF5ICopZGF0YUZvclBhc3RlYm9hcmRUeXBlOihOU1N0
cmluZyAqKXBhc3RlYm9hcmRUeXBlIGluSXRlbVNldDooTlNJbmRleFNldCAqKWl0ZW1TZXQ7CiAt
IChOU0FycmF5ICopdmFsdWVzRm9yUGFzdGVib2FyZFR5cGU6KE5TU3RyaW5nICopcGFzdGVib2Fy
ZFR5cGUgaW5JdGVtU2V0OihOU0luZGV4U2V0ICopaXRlbVNldDsKIC0gKE5TSW50ZWdlciljaGFu
Z2VDb3VudDsKIAorQG9wdGlvbmFsCistICh2b2lkKXNldEl0ZW1zRnJvbU9iamVjdFJlcHJlc2Vu
dGF0aW9uczooTlNBcnJheTxXZWJQYXN0ZWJvYXJkSXRlbURhdGEgKj4gKilpdGVtRGF0YTsKKy0g
KHZvaWQpc2V0SXRlbXM6KE5TQXJyYXk8TlNEaWN0aW9uYXJ5ICo+ICopaXRlbXM7CisKIEBlbmQK
KworI2VuZGlmIC8vIFRBUkdFVF9PU19JUEhPTkUgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5f
UkVRVUlSRUQgPj0gMTEwMDAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvQWJzdHJhY3RQYXN0ZWJvYXJkLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0Fi
c3RyYWN0UGFzdGVib2FyZC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MWJkMDViNzU1ZDgwNDI2NzBmMjRjYWQ3
N2FkZGE4ZjY3ZDU1NDc4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL0Fic3RyYWN0UGFzdGVib2FyZC5tbQpAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFic3RyYWN0UGFzdGVib2FyZC5oIgor
CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKKyNpZiBQTEFURk9STShJT1MpICYmIF9fSVBI
T05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDAwMAorCitAaW50ZXJmYWNlIFdlYlBh
c3RlYm9hcmRJdGVtRGF0YSAoKQoreworICAgIFJldGFpblB0cjxOU0FycmF5PiBfcmVwcmVzZW50
aW5nT2JqZWN0czsKKyAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBfYWRkaXRpb25hbERhdGE7
Cit9CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdlYlBhc3RlYm9hcmRJdGVtRGF0YQorCisr
IChpbnN0YW5jZXR5cGUpaXRlbVdpdGhSZXByZXNlbnRpbmdPYmplY3RzOihOU0FycmF5ICopcmVw
cmVzZW50aW5nT2JqZWN0cyBhZGRpdGlvbmFsRGF0YTooTlNEaWN0aW9uYXJ5ICopYWRkaXRpb25h
bERhdGEKK3sKKyAgICByZXR1cm4gW1tbc2VsZiBhbGxvY10gaW5pdFdpdGhSZXByZXNlbnRpbmdP
YmplY3RzOnJlcHJlc2VudGluZ09iamVjdHMgYWRkaXRpb25hbERhdGE6YWRkaXRpb25hbERhdGFd
IGF1dG9yZWxlYXNlXTsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUmVwcmVzZW50aW5n
T2JqZWN0czooTlNBcnJheSAqKXJlcHJlc2VudGluZ09iamVjdHMgYWRkaXRpb25hbERhdGE6KE5T
RGljdGlvbmFyeSAqKWFkZGl0aW9uYWxEYXRhCit7CisgICAgaWYgKHNlbGYgPSBbc3VwZXIgaW5p
dF0pIHsKKyAgICAgICAgX3JlcHJlc2VudGluZ09iamVjdHMgPSByZXByZXNlbnRpbmdPYmplY3Rz
OworICAgICAgICBfYWRkaXRpb25hbERhdGEgPSBhZGRpdGlvbmFsRGF0YTsKKyAgICB9CisgICAg
cmV0dXJuIHNlbGY7Cit9CisKKy0gKE5TQXJyYXkgKilyZXByZXNlbnRpbmdPYmplY3RzCit7Cisg
ICAgcmV0dXJuIF9yZXByZXNlbnRpbmdPYmplY3RzLmdldCgpOworfQorCistIChOU0RpY3Rpb25h
cnkgKilhZGRpdGlvbmFsRGF0YQoreworICAgIHJldHVybiBfYWRkaXRpb25hbERhdGEuZ2V0KCk7
Cit9CisKK0BlbmQKKworI2VuZGlmIC8vIFBMQVRGT1JNKElPUykgJiYgX19JUEhPTkVfT1NfVkVS
U0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEwMDAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUGxhdGZvcm1QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2FyZElPUy5tbQppbmRleCBlYjZiMGQyYzBiYTdlYWYz
MTZmZjYwZTI2ZjM3MzFiZGU5MTIyYWQxLi41NWM5YzE3MDVmM2FmMmExNTFjZmQxMGU0MDg1ZWM4
ZjRmMGZiMmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxhdGZv
cm1QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0
Zm9ybVBhc3RlYm9hcmRJT1MubW0KQEAgLTM0LDggKzM0LDEwIEBACiAjaW1wb3J0ICJTb2Z0TGlu
a2luZy5oIgogI2ltcG9ydCAiV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5oIgogI2ltcG9ydCA8
TW9iaWxlQ29yZVNlcnZpY2VzL01vYmlsZUNvcmVTZXJ2aWNlcy5oPgorI2ltcG9ydCA8VUlLaXQv
VUlJbWFnZS5oPgogCiBTT0ZUX0xJTktfRlJBTUVXT1JLKFVJS2l0KQorU09GVF9MSU5LX0NMQVNT
KFVJS2l0LCBVSUltYWdlKQogU09GVF9MSU5LX0NMQVNTKFVJS2l0LCBVSVBhc3RlYm9hcmQpCiAK
IEBpbnRlcmZhY2UgVUlQYXN0ZWJvYXJkCkBAIC0xNDcsOSArMTQ5LDkgQEAgU3RyaW5nIFBsYXRm
b3JtUGFzdGVib2FyZDo6dW5pcXVlTmFtZSgpCiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi12
b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZFdlYkNvbnRlbnQm
IGNvbnRlbnQpCitzdGF0aWMgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gcmljaFRleHRSZXByZXNl
bnRhdGlvbnNGb3JQYXN0ZWJvYXJkV2ViQ29udGVudChjb25zdCBQYXN0ZWJvYXJkV2ViQ29udGVu
dCYgY29udGVudCkKIHsKLSAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiByZXByZXNlbnRhdGlv
bnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOworICAgIFJl
dGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiByZXByZXNlbnRhdGlvbnMgPSBhZG9wdE5TKFtb
TlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOwogCiAgICAgQVNTRVJUKGNvbnRlbnQu
Y2xpZW50VHlwZXMuc2l6ZSgpID09IGNvbnRlbnQuY2xpZW50RGF0YS5zaXplKCkpOwogICAgIGZv
ciAoc2l6ZV90IGkgPSAwLCBzaXplID0gY29udGVudC5jbGllbnRUeXBlcy5zaXplKCk7IGkgPCBz
aXplOyArK2kpCkBAIC0xNTgsNyArMTYwLDcgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6Ondy
aXRlKGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50JiBjb250ZW50KQogICAgIGlmIChjb250ZW50
LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQpIHsKICAgICAgICAgW3JlcHJlc2VudGF0aW9ucyBzZXRW
YWx1ZTooTlNEYXRhICopY29udGVudC5kYXRhSW5XZWJBcmNoaXZlRm9ybWF0LT5jcmVhdGVOU0Rh
dGEoKS5nZXQoKSBmb3JLZXk6V2ViQXJjaGl2ZVBib2FyZFR5cGVdOwogICAgICAgICAvLyBGbGFn
IGZvciBVSUtpdCB0byBrbm93IHRoYXQgdGhpcyBjb3B5IGNvbnRhaW5zIHJpY2ggY29udGVudC4g
VGhpcyB3aWxsIHRyaWdnZXIgYSB0d28tc3RlcCBwYXN0ZS4KLSAgICAgICAgTlNTdHJpbmcqIHdl
YklPU1Bhc3RlUGJvYXJkVHlwZSA9IEAiaU9TIHJpY2ggY29udGVudCBwYXN0ZSBwYXN0ZWJvYXJk
IHR5cGUiOworICAgICAgICBOU1N0cmluZyAqd2ViSU9TUGFzdGVQYm9hcmRUeXBlID0gQCJpT1Mg
cmljaCBjb250ZW50IHBhc3RlIHBhc3RlYm9hcmQgdHlwZSI7CiAgICAgICAgIFtyZXByZXNlbnRh
dGlvbnMgc2V0VmFsdWU6d2ViSU9TUGFzdGVQYm9hcmRUeXBlIGZvcktleTp3ZWJJT1NQYXN0ZVBi
b2FyZFR5cGVdOwogICAgIH0KIApAQCAtMTY3LDEzICsxNjksNzAgQEAgdm9pZCBQbGF0Zm9ybVBh
c3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50JiBjb250ZW50KQogICAg
IGlmIChjb250ZW50LmRhdGFJblJURkZvcm1hdCkKICAgICAgICAgW3JlcHJlc2VudGF0aW9ucyBz
ZXRWYWx1ZTpjb250ZW50LmRhdGFJblJURkZvcm1hdC0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9y
S2V5OihOU1N0cmluZyAqKWtVVFR5cGVSVEZdOwogCisgICAgcmV0dXJuIHJlcHJlc2VudGF0aW9u
czsKK30KKwordm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlT2JqZWN0UmVwcmVzZW50YXRp
b25zKGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50JiBjb250ZW50KQoreworICAgIFJldGFpblB0
cjxOU011dGFibGVBcnJheT4gb2JqZWN0UmVwcmVzZW50YXRpb25zID0gYWRvcHROUyhbW05TTXV0
YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CisgICAgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gYWRk
aXRpb25hbERhdGEgPSByaWNoVGV4dFJlcHJlc2VudGF0aW9uc0ZvclBhc3RlYm9hcmRXZWJDb250
ZW50KGNvbnRlbnQpOworCisgICAgaWYgKGNvbnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zv
cm1hdCkgeworICAgICAgICBOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcgPSBb
TlNLZXllZFVuYXJjaGl2ZXIgdW5hcmNoaXZlT2JqZWN0V2l0aERhdGE6Y29udGVudC5kYXRhSW5B
dHRyaWJ1dGVkU3RyaW5nRm9ybWF0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKV07CisgICAgICAgIGlm
IChhdHRyaWJ1dGVkU3RyaW5nKQorICAgICAgICAgICAgW29iamVjdFJlcHJlc2VudGF0aW9ucyBh
ZGRPYmplY3Q6YXR0cmlidXRlZFN0cmluZ107CisgICAgfQorCisgICAgaWYgKCFjb250ZW50LmRh
dGFJblN0cmluZ0Zvcm1hdC5pc0VtcHR5KCkpCisgICAgICAgIFtvYmplY3RSZXByZXNlbnRhdGlv
bnMgYWRkT2JqZWN0OihOU1N0cmluZyAqKWNvbnRlbnQuZGF0YUluU3RyaW5nRm9ybWF0XTsKKwor
ICAgIFttX3Bhc3RlYm9hcmQgc2V0SXRlbXNGcm9tT2JqZWN0UmVwcmVzZW50YXRpb25zOkBbW1dl
YlBhc3RlYm9hcmRJdGVtRGF0YSBpdGVtV2l0aFJlcHJlc2VudGluZ09iamVjdHM6b2JqZWN0UmVw
cmVzZW50YXRpb25zLmdldCgpIGFkZGl0aW9uYWxEYXRhOmFkZGl0aW9uYWxEYXRhLmdldCgpXV1d
OworfQorCit2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZFdl
YkNvbnRlbnQmIGNvbnRlbnQpCit7CisgICAgaWYgKFttX3Bhc3RlYm9hcmQgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3RvcihzZXRJdGVtc0Zyb21PYmplY3RSZXByZXNlbnRhdGlvbnM6KV0pIHsK
KyAgICAgICAgd3JpdGVPYmplY3RSZXByZXNlbnRhdGlvbnMoY29udGVudCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gcmVwcmVz
ZW50YXRpb25zID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsK
KyAgICBbcmVwcmVzZW50YXRpb25zIGFkZEVudHJpZXNGcm9tRGljdGlvbmFyeTpyaWNoVGV4dFJl
cHJlc2VudGF0aW9uc0ZvclBhc3RlYm9hcmRXZWJDb250ZW50KGNvbnRlbnQpLmF1dG9yZWxlYXNl
KCldOwogICAgIFtyZXByZXNlbnRhdGlvbnMgc2V0VmFsdWU6Y29udGVudC5kYXRhSW5TdHJpbmdG
b3JtYXQgZm9yS2V5OihOU1N0cmluZyAqKWtVVFR5cGVUZXh0XTsKLSAgICBbcmVwcmVzZW50YXRp
b25zIHNldFZhbHVlOlsoTlNTdHJpbmcgKiljb250ZW50LmRhdGFJblN0cmluZ0Zvcm1hdCBkYXRh
VXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10gZm9yS2V5OihOU1N0cmluZyAqKWtV
VFR5cGVVVEY4UGxhaW5UZXh0XTsKKwogICAgIFttX3Bhc3RlYm9hcmQgc2V0SXRlbXM6QFtyZXBy
ZXNlbnRhdGlvbnMuZ2V0KCldXTsKIH0KIAordm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRl
T2JqZWN0UmVwcmVzZW50YXRpb25zKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYgcGFzdGVib2FyZElt
YWdlKQoreworICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gb2JqZWN0UmVwcmVzZW50YXRp
b25zID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CisgICAgUmV0YWlu
UHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IGFkZGl0aW9uYWxEYXRhID0gYWRvcHROUyhbW05TTXV0
YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKKworICAgIGlmIChhdXRvIG5hdGl2ZUltYWdl
ID0gcGFzdGVib2FyZEltYWdlLmltYWdlLT5uYXRpdmVJbWFnZSgpKSB7CisgICAgICAgIFVJSW1h
Z2UgKnVpSW1hZ2UgPSAoVUlJbWFnZSAqKVtnZXRVSUltYWdlQ2xhc3MoKSBpbWFnZVdpdGhDR0lt
YWdlOm5hdGl2ZUltYWdlLmdldCgpXTsKKyAgICAgICAgaWYgKHVpSW1hZ2UpCisgICAgICAgICAg
ICBbb2JqZWN0UmVwcmVzZW50YXRpb25zIGFkZE9iamVjdDp1aUltYWdlXTsKKyAgICB9CisKKyAg
ICBpZiAoIXBhc3RlYm9hcmRJbWFnZS51cmwudXJsLmlzRW1wdHkoKSkgeworICAgICAgICBOU1VS
TCAqbnNVUkwgPSBwYXN0ZWJvYXJkSW1hZ2UudXJsLnVybDsKKyAgICAgICAgaWYgKG5zVVJMKQor
ICAgICAgICAgICAgW29iamVjdFJlcHJlc2VudGF0aW9ucyBhZGRPYmplY3Q6bnNVUkxdOworICAg
IH0KKworICAgIGlmICghcGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGUuaXNOdWxsKCkp
CisgICAgICAgIFthZGRpdGlvbmFsRGF0YSBzZXRPYmplY3Q6cGFzdGVib2FyZEltYWdlLnJlc291
cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkgZm9yS2V5OnBhc3RlYm9hcmRJbWFnZS5yZXNv
dXJjZU1JTUVUeXBlXTsKKworICAgIFttX3Bhc3RlYm9hcmQgc2V0SXRlbXNGcm9tT2JqZWN0UmVw
cmVzZW50YXRpb25zOkBbW1dlYlBhc3RlYm9hcmRJdGVtRGF0YSBpdGVtV2l0aFJlcHJlc2VudGlu
Z09iamVjdHM6b2JqZWN0UmVwcmVzZW50YXRpb25zLmdldCgpIGFkZGl0aW9uYWxEYXRhOmFkZGl0
aW9uYWxEYXRhLmdldCgpXV1dOworfQorCiB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUo
Y29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0ZWJvYXJkSW1hZ2UpCiB7CisgICAgaWYgKFttX3Bh
c3RlYm9hcmQgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzZXRJdGVtc0Zyb21PYmplY3RS
ZXByZXNlbnRhdGlvbnM6KV0pIHsKKyAgICAgICAgd3JpdGVPYmplY3RSZXByZXNlbnRhdGlvbnMo
cGFzdGVib2FyZEltYWdlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIFJldGFpblB0
cjxOU011dGFibGVEaWN0aW9uYXJ5PiByZXByZXNlbnRhdGlvbnMgPSBhZG9wdE5TKFtbTlNNdXRh
YmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOwogICAgIGlmICghcGFzdGVib2FyZEltYWdlLnJl
c291cmNlTUlNRVR5cGUuaXNOdWxsKCkpIHsKICAgICAgICAgW3JlcHJlc2VudGF0aW9ucyBzZXRP
YmplY3Q6cGFzdGVib2FyZEltYWdlLnJlc291cmNlRGF0YS0+Y3JlYXRlTlNEYXRhKCkuZ2V0KCkg
Zm9yS2V5OnBhc3RlYm9hcmRJbWFnZS5yZXNvdXJjZU1JTUVUeXBlXTsKQEAgLTE4Miw4ICsyNDEs
MzMgQEAgdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFn
ZSYgcGFzdGVib2FyZEltYWdlKQogICAgIFttX3Bhc3RlYm9hcmQgc2V0SXRlbXM6QFtyZXByZXNl
bnRhdGlvbnMuZ2V0KCldXTsKIH0KIAordm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlT2Jq
ZWN0UmVwcmVzZW50YXRpb25zKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0
cmluZyYgdGV4dCkKK3sKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IG9iamVjdFJlcHJl
c2VudGF0aW9ucyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworICAg
IFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiBhZGRpdGlvbmFsRGF0YSA9IGFkb3B0TlMo
W1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CisKKyAgICBOU1N0cmluZyAqcGFz
dGVib2FyZFR5cGVBc05TU3RyaW5nID0gcGFzdGVib2FyZFR5cGU7CisgICAgTlNTdHJpbmcgKnRl
eHRBc05TU3RyaW5nID0gdGV4dDsKKyAgICBpZiAodGV4dEFzTlNTdHJpbmcgJiYgcGFzdGVib2Fy
ZFR5cGVBc05TU3RyaW5nLmxlbmd0aCkgeworICAgICAgICBpZiAoVVRUeXBlQ29uZm9ybXNUbygo
X19icmlkZ2UgQ0ZTdHJpbmdSZWYpcGFzdGVib2FyZFR5cGVBc05TU3RyaW5nLCBrVVRUeXBlVVJM
KSkKKyAgICAgICAgICAgIFtvYmplY3RSZXByZXNlbnRhdGlvbnMgYWRkT2JqZWN0OltbW05TVVJM
IGFsbG9jXSBpbml0V2l0aFN0cmluZzp0ZXh0QXNOU1N0cmluZ10gYXV0b3JlbGVhc2VdXTsKKwor
ICAgICAgICBpZiAoVVRUeXBlQ29uZm9ybXNUbygoX19icmlkZ2UgQ0ZTdHJpbmdSZWYpcGFzdGVi
b2FyZFR5cGVBc05TU3RyaW5nLCBrVVRUeXBlVGV4dCkpCisgICAgICAgICAgICBbb2JqZWN0UmVw
cmVzZW50YXRpb25zIGFkZE9iamVjdDp0ZXh0QXNOU1N0cmluZ107CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIFthZGRpdGlvbmFsRGF0YSBzZXRPYmplY3Q6dGV4dEFzTlNTdHJpbmcgZm9yS2V5
OnBhc3RlYm9hcmRUeXBlQXNOU1N0cmluZ107CisgICAgfQorCisgICAgW21fcGFzdGVib2FyZCBz
ZXRJdGVtc0Zyb21PYmplY3RSZXByZXNlbnRhdGlvbnM6QFtbV2ViUGFzdGVib2FyZEl0ZW1EYXRh
IGl0ZW1XaXRoUmVwcmVzZW50aW5nT2JqZWN0czpvYmplY3RSZXByZXNlbnRhdGlvbnMuZ2V0KCkg
YWRkaXRpb25hbERhdGE6YWRkaXRpb25hbERhdGEuZ2V0KCldXV07Cit9CisKIHZvaWQgUGxhdGZv
cm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBT
dHJpbmcmIHRleHQpCiB7CisgICAgaWYgKFttX3Bhc3RlYm9hcmQgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3RvcihzZXRJdGVtc0Zyb21PYmplY3RSZXByZXNlbnRhdGlvbnM6KV0pIHsKKyAgICAg
ICAgd3JpdGVPYmplY3RSZXByZXNlbnRhdGlvbnMocGFzdGVib2FyZFR5cGUsIHRleHQpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCiAgICAgUmV0YWluUHRyPE5TRGljdGlvbmFyeT4gcmVwcmVz
ZW50YXRpb25zID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsK
IAogICAgIGlmIChwYXN0ZWJvYXJkVHlwZSA9PSBTdHJpbmcoa1VUVHlwZVVSTCkpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJJdGVtUHJvdmlkZXJQYXN0ZWJv
YXJkLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3Rl
Ym9hcmQubW0KaW5kZXggYTg5YWFlZGNlYjNkYjY3NDg2OTMzZGZjNzVhYWFjYjRkZGM3Y2QyMC4u
OTIwZmFiMGJjM2QyOWI5Mzc0ZmQ5YTM1Mjk1NzJkY2JjZTAyODUyYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQu
bW0KQEAgLTgwLDYgKzgwLDcgQEAgc3RhdGljIEJPT0wgaXNJbWFnZVR5cGUoTlNTdHJpbmcgKnR5
cGUpCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIHsKICAgICBS
ZXRhaW5QdHI8TlNBcnJheT4gX2l0ZW1Qcm92aWRlcnM7CisgICAgUmV0YWluUHRyPE5TQXJyYXk+
IF9jYWNoZWRUeXBlSWRlbnRpZmllcnM7CiB9CiAKICsgKGluc3RhbmNldHlwZSlzaGFyZWRJbnN0
YW5jZQpAQCAtMTA0LDEwICsxMDUsMjIgQEAgc3RhdGljIEJPT0wgaXNJbWFnZVR5cGUoTlNTdHJp
bmcgKnR5cGUpCiAKIC0gKE5TQXJyYXk8TlNTdHJpbmcgKj4gKilwYXN0ZWJvYXJkVHlwZXMKIHsK
KyAgICBpZiAoX2NhY2hlZFR5cGVJZGVudGlmaWVycykKKyAgICAgICAgcmV0dXJuIF9jYWNoZWRU
eXBlSWRlbnRpZmllcnMuZ2V0KCk7CisKICAgICBOU011dGFibGVTZXQ8TlNTdHJpbmcgKj4gKmFs
bFR5cGVzID0gW05TTXV0YWJsZVNldCBzZXRdOwotICAgIGZvciAoVUlJdGVtUHJvdmlkZXIgKnBy
b3ZpZGVyIGluIF9pdGVtUHJvdmlkZXJzLmdldCgpKQotICAgICAgICBbYWxsVHlwZXMgYWRkT2Jq
ZWN0c0Zyb21BcnJheTpwcm92aWRlci5yZWdpc3RlcmVkVHlwZUlkZW50aWZpZXJzXTsKLSAgICBy
ZXR1cm4gYWxsVHlwZXMuYWxsT2JqZWN0czsKKyAgICBOU011dGFibGVBcnJheTxOU1N0cmluZyAq
PiAqYWxsVHlwZXNJbk9yZGVyID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKKyAgICBmb3IgKFVJ
SXRlbVByb3ZpZGVyICpwcm92aWRlciBpbiBfaXRlbVByb3ZpZGVycy5nZXQoKSkgeworICAgICAg
ICBmb3IgKE5TU3RyaW5nICp0eXBlSWRlbnRpZmllciBpbiBwcm92aWRlci5yZWdpc3RlcmVkVHlw
ZUlkZW50aWZpZXJzKSB7CisgICAgICAgICAgICBpZiAoW2FsbFR5cGVzIGNvbnRhaW5zT2JqZWN0
OnR5cGVJZGVudGlmaWVyXSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAg
ICAgW2FsbFR5cGVzIGFkZE9iamVjdDp0eXBlSWRlbnRpZmllcl07CisgICAgICAgICAgICBbYWxs
VHlwZXNJbk9yZGVyIGFkZE9iamVjdDp0eXBlSWRlbnRpZmllcl07CisgICAgICAgIH0KKyAgICB9
CisgICAgX2NhY2hlZFR5cGVJZGVudGlmaWVycyA9IGFsbFR5cGVzSW5PcmRlcjsKKyAgICByZXR1
cm4gX2NhY2hlZFR5cGVJZGVudGlmaWVycy5nZXQoKTsKIH0KIAogLSAoTlNBcnJheTxVSUl0ZW1Q
cm92aWRlciAqPiAqKWl0ZW1Qcm92aWRlcnMKQEAgLTEyMyw2ICsxMzYsNyBAQCBzdGF0aWMgQk9P
TCBpc0ltYWdlVHlwZShOU1N0cmluZyAqdHlwZSkKIAogICAgIF9pdGVtUHJvdmlkZXJzID0gaXRl
bVByb3ZpZGVyczsKICAgICBfY2hhbmdlQ291bnQrKzsKKyAgICBfY2FjaGVkVHlwZUlkZW50aWZp
ZXJzID0gbmlsOwogfQogCiAtIChOU0ludGVnZXIpbnVtYmVyT2ZJdGVtcwpAQCAtMTMwLDQwICsx
NDQsMzggQEAgc3RhdGljIEJPT0wgaXNJbWFnZVR5cGUoTlNTdHJpbmcgKnR5cGUpCiAgICAgcmV0
dXJuIFtfaXRlbVByb3ZpZGVycyBjb3VudF07CiB9CiAKLS0gKHZvaWQpc2V0SXRlbXM6KE5TQXJy
YXkgKilpdGVtcworLSAodm9pZClzZXRJdGVtc0Zyb21PYmplY3RSZXByZXNlbnRhdGlvbnM6KE5T
QXJyYXk8V2ViUGFzdGVib2FyZEl0ZW1EYXRhICo+ICopaXRlbURhdGEKIHsKICAgICBOU011dGFi
bGVBcnJheSAqcHJvdmlkZXJzID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKLSAgICBmb3IgKE5T
RGljdGlvbmFyeSAqaXRlbSBpbiBpdGVtcykgewotICAgICAgICBpZiAoIWl0ZW0uY291bnQpCisg
ICAgZm9yIChXZWJQYXN0ZWJvYXJkSXRlbURhdGEgKmRhdGEgaW4gaXRlbURhdGEpIHsKKyAgICAg
ICAgaWYgKCFkYXRhLnJlcHJlc2VudGluZ09iamVjdHMuY291bnQgJiYgIWRhdGEuYWRkaXRpb25h
bERhdGEuY291bnQpCiAgICAgICAgICAgICBjb250aW51ZTsKKwogICAgICAgICBSZXRhaW5QdHI8
VUlJdGVtUHJvdmlkZXI+IGl0ZW1Qcm92aWRlciA9IGFkb3B0TlMoW1tnZXRVSUl0ZW1Qcm92aWRl
ckNsYXNzKCkgYWxsb2NdIGluaXRdKTsKLSAgICAgICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rp
b25hcnk+IGl0ZW1SZXByZXNlbnRhdGlvbnNDb3B5ID0gYWRvcHROUyhbaXRlbSBtdXRhYmxlQ29w
eV0pOwotICAgICAgICAvLyBGaXJzdCwgbGV0IHRoZSBwbGF0Zm9ybSB3cml0ZSBhbGwgdGhlIGRl
ZmF1bHQgb2JqZWN0IHR5cGVzIGl0IGNhbiByZWNvZ25pemUsIHN1Y2ggYXMgTlNTdHJpbmcgYW5k
IE5TVVJMLgotICAgICAgICBmb3IgKE5TU3RyaW5nICp0eXBlSWRlbnRpZmllciBpbiBbaXRlbVJl
cHJlc2VudGF0aW9uc0NvcHkgYWxsS2V5c10pIHsKLSAgICAgICAgICAgIGlkIHJlcHJlc2VudGlu
Z09iamVjdCA9IFtpdGVtUmVwcmVzZW50YXRpb25zQ29weSBvYmplY3RGb3JLZXk6dHlwZUlkZW50
aWZpZXJdOworICAgICAgICAvLyBGaXJzdCwgcmVnaXN0ZXIgYWxsIHBsYXRmb3JtIG9iamVjdHMs
IHByaW9yaXRpemluZyBvYmplY3RzIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGFycmF5LgorICAg
ICAgICBmb3IgKGlkIHJlcHJlc2VudGluZ09iamVjdCBpbiBkYXRhLnJlcHJlc2VudGluZ09iamVj
dHMpIHsKICAgICAgICAgICAgIGlmICghW3JlcHJlc2VudGluZ09iamVjdCBjb25mb3Jtc1RvUHJv
dG9jb2w6QHByb3RvY29sKFVJSXRlbVByb3ZpZGVyV3JpdGluZyldKQogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogCi0gICAgICAgICAgICBpZCA8VUlJdGVtUHJvdmlkZXJXcml0aW5nPiBvYmpl
Y3RUb1dyaXRlID0gKGlkIDxVSUl0ZW1Qcm92aWRlcldyaXRpbmc+KXJlcHJlc2VudGluZ09iamVj
dDsKLSAgICAgICAgICAgIGlmICghW29iamVjdFRvV3JpdGUud3JpdGFibGVUeXBlSWRlbnRpZmll
cnNGb3JJdGVtUHJvdmlkZXIgY29udGFpbnNPYmplY3Q6dHlwZUlkZW50aWZpZXJdKQotICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICBbaXRlbVJlcHJlc2VudGF0aW9uc0Nv
cHkgcmVtb3ZlT2JqZWN0Rm9yS2V5OnR5cGVJZGVudGlmaWVyXTsKLSAgICAgICAgICAgIFtpdGVt
UHJvdmlkZXIgcmVnaXN0ZXJPYmplY3Q6b2JqZWN0VG9Xcml0ZSBvcHRpb25zOm5pbF07CisgICAg
ICAgICAgICBbaXRlbVByb3ZpZGVyIHJlZ2lzdGVyT2JqZWN0OihpZCA8VUlJdGVtUHJvdmlkZXJX
cml0aW5nPilyZXByZXNlbnRpbmdPYmplY3Qgb3B0aW9uczpuaWxdOwogICAgICAgICB9CiAKLSAg
ICAgICAgLy8gU2Vjb25kbHksIFdlYktpdCB1c2VzIHNvbWUgY3VzdG9tIHR5cGUgcmVwcmVzZW50
YXRpb25zIGFuZC9vciB0eXBlIGlkZW50aWZpZXJzLCBzbyB3ZSBuZWVkIHRvIHdyaXRlIHRoZXNl
IGFzIHdlbGwuCi0gICAgICAgIGZvciAoTlNTdHJpbmcgKnR5cGVJZGVudGlmaWVyIGluIGl0ZW1S
ZXByZXNlbnRhdGlvbnNDb3B5LmdldCgpKSB7CisgICAgICAgIC8vIE5leHQsIHJlZ2lzdGVyIG90
aGVyIGN1c3RvbSBkYXRhIHJlcHJlc2VudGF0aW9ucyBmb3IgdHlwZSBpZGVudGlmaWVycy4KKyAg
ICAgICAgTlNEaWN0aW9uYXJ5IDxOU1N0cmluZyAqLCBOU0RhdGEgKj4gKmFkZGl0aW9uYWxEYXRh
ID0gZGF0YS5hZGRpdGlvbmFsRGF0YTsKKyAgICAgICAgZm9yIChOU1N0cmluZyAqdHlwZUlkZW50
aWZpZXIgaW4gYWRkaXRpb25hbERhdGEpIHsKKyAgICAgICAgICAgIGlmICghW2FkZGl0aW9uYWxE
YXRhW3R5cGVJZGVudGlmaWVyXSBpc0tpbmRPZkNsYXNzOltOU0RhdGEgY2xhc3NdXSkKKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKwogICAgICAgICAgICAgW2l0ZW1Qcm92aWRlciByZWdpc3Rl
ckRhdGFSZXByZXNlbnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOnR5cGVJZGVudGlmaWVyIG9wdGlv
bnM6bmlsIGxvYWRIYW5kbGVyOl5OU1Byb2dyZXNzICooVUlJdGVtUHJvdmlkZXJEYXRhTG9hZENv
bXBsZXRpb25CbG9jayBjb21wbGV0aW9uQmxvY2spCiAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgY29tcGxldGlvbkJsb2NrKFtpdGVtUmVwcmVzZW50YXRpb25zQ29weSBvYmplY3RGb3JL
ZXk6dHlwZUlkZW50aWZpZXJdLCBuaWwpOworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25CbG9j
ayhhZGRpdGlvbmFsRGF0YVt0eXBlSWRlbnRpZmllcl0sIG5pbCk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIFtOU1Byb2dyZXNzIGRpc2NyZXRlUHJvZ3Jlc3NXaXRoVG90YWxVbml0Q291bnQ6MTAw
XTsKICAgICAgICAgICAgIH1dOwogICAgICAgICB9CiAgICAgICAgIFtwcm92aWRlcnMgYWRkT2Jq
ZWN0Oml0ZW1Qcm92aWRlci5nZXQoKV07CiAgICAgfQotICAgIF9jaGFuZ2VDb3VudCsrOwotICAg
IF9pdGVtUHJvdmlkZXJzID0gcHJvdmlkZXJzOworCisgICAgc2VsZi5pdGVtUHJvdmlkZXJzID0g
cHJvdmlkZXJzOwogfQogCiAtIChOU0FycmF5ICopZGF0YUZvclBhc3RlYm9hcmRUeXBlOihOU1N0
cmluZyAqKXBhc3RlYm9hcmRUeXBlIGluSXRlbVNldDooTlNJbmRleFNldCAqKWl0ZW1TZXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXgg
YTE5Mjk1NTc5MTM3M2Q1NTk1NGYxMGJhMTY0YjBiYjRhMTU0ZDU2Yi4uNzFlN2U3ZDM4MTIxMDFi
YTJmZDQ4NmY4YTM3YjQzOGRjNTNlMDExMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTE0MDQsNiArMTQwNCw3IEBAIHZvaWQgQXJn
dW1lbnRDb2RlcjxQYXN0ZWJvYXJkV2ViQ29udGVudD46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
LCBjb25zdCBQYXN0ZWJvCiAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVuY29kZXIsIGNvbnRlbnQu
ZGF0YUluV2ViQXJjaGl2ZUZvcm1hdC5nZXQoKSk7CiAgICAgZW5jb2RlU2hhcmVkQnVmZmVyKGVu
Y29kZXIsIGNvbnRlbnQuZGF0YUluUlRGREZvcm1hdC5nZXQoKSk7CiAgICAgZW5jb2RlU2hhcmVk
QnVmZmVyKGVuY29kZXIsIGNvbnRlbnQuZGF0YUluUlRGRm9ybWF0LmdldCgpKTsKKyAgICBlbmNv
ZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgY29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9y
bWF0LmdldCgpKTsKIAogICAgIGVuY29kZXIgPDwgY29udGVudC5jbGllbnRUeXBlczsKICAgICBl
bmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90Pihjb250ZW50LmNsaWVudERhdGEuc2l6ZSgp
KTsKQEAgLTE0MjMsNiArMTQyNCw4IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxQYXN0ZWJvYXJkV2Vi
Q29udGVudD46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBQYXN0ZWJvYXJkV2ViCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBjb250
ZW50LmRhdGFJblJURkZvcm1hdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRl
Y29kZVNoYXJlZEJ1ZmZlcihkZWNvZGVyLCBjb250ZW50LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdG
b3JtYXQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShj
b250ZW50LmNsaWVudFR5cGVzKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHVpbnQ2NF90
IGNsaWVudERhdGFTaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQppbmRleCBjODQyZDhlZDM2ZDVjYWE3NGU5NDdkMzA0YjM4NjU1MmU0NTMw
NzVhLi4xMTg3N2NiMzA2YjM5ZTdkMTdhZDc3YWY3ZTJjZTM0YjE2YzBlMTA1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtNTM3OCw2
ICs1Mzc4LDggQEAgc3RhdGljIFdlYkNvcmU6OlVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24g
dG9Vc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKFVJU2UKICAgICBXZWJLaXQ6OlZpZXdTbmFw
c2hvdFN0b3JlOjpzaW5nbGV0b24oKS5zZXREaXNhYmxlU25hcHNob3RWb2xhdGlsaXR5Rm9yVGVz
dGluZyh0cnVlKTsKIH0KIAorI2lmIFBMQVRGT1JNKElPUykKKwogLSAodm9pZClfc2ltdWxhdGVE
YXRhSW50ZXJhY3Rpb25FbnRlcmVkOihpZClpbmZvCiB7CiAjaWYgRU5BQkxFKERBVEFfSU5URVJB
Q1RJT04pCkBAIC01NDM2LDYgKzU0MzgsOCBAQCBzdGF0aWMgV2ViQ29yZTo6VXNlckludGVyZmFj
ZUxheW91dERpcmVjdGlvbiB0b1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24oVUlTZQogI2Vu
ZGlmCiB9CiAKKyNlbmRpZiAvLyBQTEFURk9STShJT1MpCisKIEBlbmQKIAogCmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMWQxOGY2OTE2MzVjMGI3
OTRiODhhMDdmYjRjNzIzNjJmODQyNGM4MC4uMDQxYTZjZDQ2ODFiMmRiNWY5ZTVjNjkzYmY5YjNi
NzIyMjNjNTgzMSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE3LTA0LTAzICBXZW5zb24gSHNpZWggIDx3ZW5zb25f
aHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIERhdGEgaW50ZXJhY3Rpb24gc2hvdWxkIHJlZ2lz
dGVyIHR5cGUgaWRlbnRpZmllcnMgaW4gb3JkZXIgb2YgcHJpb3JpdHkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDQyOAorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMzA2MzMyOTY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKwor
ICAgICAgICBBdWdtZW50cyBleGlzdGluZyB1bml0IHRlc3RzIHRvIGNoZWNrIGZvciB0aGUgZXhp
c3RlbmNlIGFuZCBwcmlvcml0eSBvZiB0eXBlIGlkZW50aWZpZXJzIGluIHRoZSBVSUl0ZW1Qcm92
aWRlcnMKKyAgICAgICAgY3JlYXRlZCB1cG9uIHN0YXJ0aW5nIGRhdGEgaW50ZXJhY3Rpb24uIEFs
c28gZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiBvbmUgb2YgdGhlIHVuaXQgdGVzdHMgYW5kIGFk
ZHMgYSBuZXcgdW5pdAorICAgICAgICB0ZXN0IGZvciBkYXRhIGludGVyYWN0aW9uIGZyb20gYSB0
ZXh0YXJlYSB0byBhbiBpbnB1dC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvaW9z
L0RhdGFJbnRlcmFjdGlvblRlc3RzLm1tOgorICAgICAgICAoY2hlY2tUeXBlSWRlbnRpZmllclBy
ZWNlZGVzT3RoZXJUeXBlSWRlbnRpZmllcik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNU
KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2lvcy9EYXRhSW50ZXJhY3Rpb25TaW11bGF0b3Iu
aDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2lvcy9EYXRhSW50ZXJhY3Rpb25TaW11bGF0b3Iu
bW06CisgICAgICAgICgtW0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBfYWR2YW5jZVByb2dyZXNz
XSk6CisgICAgICAgICgtW0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBzb3VyY2VJdGVtUHJvdmlk
ZXJzXSk6CisgICAgICAgICgtW0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBfd2ViVmlldzpzaG93
Q3VzdG9tU2hlZXRGb3JFbGVtZW50Ol0pOgorCiAyMDE3LTA0LTAzICBDYXJsb3MgQWxiZXJ0byBM
b3BleiBQZXJleiAgPGNsb3BlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdW0pIQnVpbGRd
IFVwZGF0ZSBtZXNhIHJlcG9zaXRvcnkgdXJsIGZvciB0YXJiYWxscwpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRGF0YUludGVyYWN0aW9uVGVzdHMubW0gYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EYXRhSW50ZXJhY3Rpb25UZXN0cy5tbQppbmRleCA4
OGI1Y2FkMDU3MDQzZGM4OTljYzljM2JjYWZiYTRiZDFjOTAxYWYyLi44ZjNiY2QyY2Q0ZTQ1OGRk
Y2I1NGUyZmEzMzdjMDg1MmE4MzM0NzM3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL2lvcy9EYXRhSW50ZXJhY3Rpb25UZXN0cy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL2lvcy9EYXRhSW50ZXJhY3Rpb25UZXN0cy5tbQpAQCAtNjIsNiArNjIsMTQgQEAg
c3RhdGljIHZvaWQgY2hlY2tTZWxlY3Rpb25SZWN0c1dpdGhMb2dnaW5nKE5TQXJyYXkgKmV4cGVj
dGVkLCBOU0FycmF5ICpvYnNlcnZlZCkKICAgICBFWFBFQ1RfVFJVRShbZXhwZWN0ZWQgaXNFcXVh
bFRvQXJyYXk6b2JzZXJ2ZWRdKTsKIH0KIAorc3RhdGljIHZvaWQgY2hlY2tUeXBlSWRlbnRpZmll
clByZWNlZGVzT3RoZXJUeXBlSWRlbnRpZmllcihEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgKnNp
bXVsYXRvciwgTlNTdHJpbmcgKmZpcnN0VHlwZSwgTlNTdHJpbmcgKnNlY29uZFR5cGUpCit7Cisg
ICAgTlNBcnJheSAqcmVnaXN0ZXJlZFR5cGVzID0gW3NpbXVsYXRvci5zb3VyY2VJdGVtUHJvdmlk
ZXJzLmZpcnN0T2JqZWN0IHJlZ2lzdGVyZWRUeXBlSWRlbnRpZmllcnNdOworICAgIEVYUEVDVF9U
UlVFKFtyZWdpc3RlcmVkVHlwZXMgY29udGFpbnNPYmplY3Q6Zmlyc3RUeXBlXSk7CisgICAgRVhQ
RUNUX1RSVUUoW3JlZ2lzdGVyZWRUeXBlcyBjb250YWluc09iamVjdDpzZWNvbmRUeXBlXSk7Cisg
ICAgRVhQRUNUX1RSVUUoW3JlZ2lzdGVyZWRUeXBlcyBpbmRleE9mT2JqZWN0OmZpcnN0VHlwZV0g
PCBbcmVnaXN0ZXJlZFR5cGVzIGluZGV4T2ZPYmplY3Q6c2Vjb25kVHlwZV0pOworfQorCiBuYW1l
c3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKIFRFU1QoRGF0YUludGVyYWN0aW9uVGVzdHMsIEltYWdl
VG9Db250ZW50RWRpdGFibGUpCkBAIC03OSw2ICs4Nyw3IEBAIFRFU1QoRGF0YUludGVyYWN0aW9u
VGVzdHMsIEltYWdlVG9Db250ZW50RWRpdGFibGUpCiAgICAgRVhQRUNUX1RSVUUoW29ic2VydmVk
RXZlbnROYW1lcyBjb250YWluc09iamVjdDpEYXRhSW50ZXJhY3Rpb25PdmVyRXZlbnROYW1lXSk7
CiAgICAgRVhQRUNUX1RSVUUoW29ic2VydmVkRXZlbnROYW1lcyBjb250YWluc09iamVjdDpEYXRh
SW50ZXJhY3Rpb25QZXJmb3JtT3BlcmF0aW9uRXZlbnROYW1lXSk7CiAgICAgY2hlY2tTZWxlY3Rp
b25SZWN0c1dpdGhMb2dnaW5nKEBbIG1ha2VDR1JlY3RWYWx1ZSgxLCAyMDEsIDIxNSwgMTc0KSBd
LCBbZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIGZpbmFsU2VsZWN0aW9uUmVjdHNdKTsKKyAgICBj
aGVja1R5cGVJZGVudGlmaWVyUHJlY2VkZXNPdGhlclR5cGVJZGVudGlmaWVyKGRhdGFJbnRlcmFj
dGlvblNpbXVsYXRvci5nZXQoKSwgKE5TU3RyaW5nICopa1VUVHlwZVBORywgKE5TU3RyaW5nICop
a1VUVHlwZUZpbGVVUkwpOwogfQogCiBURVNUKERhdGFJbnRlcmFjdGlvblRlc3RzLCBJbWFnZVRv
VGV4dGFyZWEpCkBAIC05OSw2ICsxMDgsNyBAQCBURVNUKERhdGFJbnRlcmFjdGlvblRlc3RzLCBJ
bWFnZVRvVGV4dGFyZWEpCiAKICAgICBOU0FycmF5ICpleHBlY3RlZFNlbGVjdGlvblJlY3RzID0g
W05TQXJyYXkgYXJyYXlXaXRoT2JqZWN0czptYWtlQ0dSZWN0VmFsdWUoNiwgMjAzLCAxODgsIDE0
KSwgbWFrZUNHUmVjdFZhbHVlKDYsIDIxNywgMTg4LCAxNCksIG1ha2VDR1JlY3RWYWx1ZSg2LCAy
MzEsIDY2LCAxNCksIG5pbF07CiAgICAgY2hlY2tTZWxlY3Rpb25SZWN0c1dpdGhMb2dnaW5nKGV4
cGVjdGVkU2VsZWN0aW9uUmVjdHMsIFtkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgZmluYWxTZWxl
Y3Rpb25SZWN0c10pOworICAgIGNoZWNrVHlwZUlkZW50aWZpZXJQcmVjZWRlc090aGVyVHlwZUlk
ZW50aWZpZXIoZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yLmdldCgpLCAoTlNTdHJpbmcgKilrVVRU
eXBlUE5HLCAoTlNTdHJpbmcgKilrVVRUeXBlRmlsZVVSTCk7CiB9CiAKIFRFU1QoRGF0YUludGVy
YWN0aW9uVGVzdHMsIENvbnRlbnRFZGl0YWJsZVRvQ29udGVudEVkaXRhYmxlKQpAQCAtMTE3LDYg
KzEyNyw3IEBAIFRFU1QoRGF0YUludGVyYWN0aW9uVGVzdHMsIENvbnRlbnRFZGl0YWJsZVRvQ29u
dGVudEVkaXRhYmxlKQogICAgIEVYUEVDVF9UUlVFKFtvYnNlcnZlZEV2ZW50TmFtZXMgY29udGFp
bnNPYmplY3Q6RGF0YUludGVyYWN0aW9uT3ZlckV2ZW50TmFtZV0pOwogICAgIEVYUEVDVF9UUlVF
KFtvYnNlcnZlZEV2ZW50TmFtZXMgY29udGFpbnNPYmplY3Q6RGF0YUludGVyYWN0aW9uUGVyZm9y
bU9wZXJhdGlvbkV2ZW50TmFtZV0pOwogICAgIGNoZWNrU2VsZWN0aW9uUmVjdHNXaXRoTG9nZ2lu
ZyhAWyBtYWtlQ0dSZWN0VmFsdWUoMSwgMjAxLCA5NjEsIDIyNykgXSwgW2RhdGFJbnRlcmFjdGlv
blNpbXVsYXRvciBmaW5hbFNlbGVjdGlvblJlY3RzXSk7CisgICAgY2hlY2tUeXBlSWRlbnRpZmll
clByZWNlZGVzT3RoZXJUeXBlSWRlbnRpZmllcihkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IuZ2V0
KCksIChOU1N0cmluZyAqKWtVVFR5cGVSVEZELCAoTlNTdHJpbmcgKilrVVRUeXBlVVRGOFBsYWlu
VGV4dCk7CiB9CiAKIFRFU1QoRGF0YUludGVyYWN0aW9uVGVzdHMsIENvbnRlbnRFZGl0YWJsZVRv
VGV4dGFyZWEpCkBAIC0xMzUsNiArMTQ2LDIwIEBAIFRFU1QoRGF0YUludGVyYWN0aW9uVGVzdHMs
IENvbnRlbnRFZGl0YWJsZVRvVGV4dGFyZWEpCiAgICAgRVhQRUNUX1RSVUUoW29ic2VydmVkRXZl
bnROYW1lcyBjb250YWluc09iamVjdDpEYXRhSW50ZXJhY3Rpb25PdmVyRXZlbnROYW1lXSk7CiAg
ICAgRVhQRUNUX1RSVUUoW29ic2VydmVkRXZlbnROYW1lcyBjb250YWluc09iamVjdDpEYXRhSW50
ZXJhY3Rpb25QZXJmb3JtT3BlcmF0aW9uRXZlbnROYW1lXSk7CiAgICAgY2hlY2tTZWxlY3Rpb25S
ZWN0c1dpdGhMb2dnaW5nKEBbIG1ha2VDR1JlY3RWYWx1ZSg2LCAyMDMsIDk5MCwgMjMyKSBdLCBb
ZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIGZpbmFsU2VsZWN0aW9uUmVjdHNdKTsKKyAgICBjaGVj
a1R5cGVJZGVudGlmaWVyUHJlY2VkZXNPdGhlclR5cGVJZGVudGlmaWVyKGRhdGFJbnRlcmFjdGlv
blNpbXVsYXRvci5nZXQoKSwgKE5TU3RyaW5nICopa1VUVHlwZVJURkQsIChOU1N0cmluZyAqKWtV
VFR5cGVVVEY4UGxhaW5UZXh0KTsKK30KKworVEVTVChEYXRhSW50ZXJhY3Rpb25UZXN0cywgVGV4
dEFyZWFUb0lucHV0KQoreworICAgIFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiB3ZWJWaWV3ID0g
YWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgw
LCAwLCAzMjAsIDUwMCldKTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdl
TmFtZWQ6QCJ0ZXh0YXJlYS10by1pbnB1dCJdOworCisgICAgUmV0YWluUHRyPERhdGFJbnRlcmFj
dGlvblNpbXVsYXRvcj4gZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yID0gYWRvcHROUyhbW0RhdGFJ
bnRlcmFjdGlvblNpbXVsYXRvciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3OndlYlZpZXcuZ2V0KCld
KTsKKyAgICBbZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIHJ1bkZyb206Q0dQb2ludE1ha2UoMTAw
LCA1MCkgdG86Q0dQb2ludE1ha2UoMTAwLCAzMDApXTsKKworICAgIEVYUEVDVF9FUShbd2ViVmll
dyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAic291cmNlLnZhbHVlIl0ubGVuZ3RoLCAw
VUwpOworICAgIEVYUEVDVF9XS19TVFJFUSgiSGVsbG8gd29ybGQiLCBbd2ViVmlldyBlZGl0b3JW
YWx1ZV0uVVRGOFN0cmluZyk7CisgICAgY2hlY2tTZWxlY3Rpb25SZWN0c1dpdGhMb2dnaW5nKEBb
IG1ha2VDR1JlY3RWYWx1ZSgxMDEsIDI0MSwgOTkwLCAyMzIpIF0sIFtkYXRhSW50ZXJhY3Rpb25T
aW11bGF0b3IgZmluYWxTZWxlY3Rpb25SZWN0c10pOwogfQogCiBURVNUKERhdGFJbnRlcmFjdGlv
blRlc3RzLCBMaW5rVG9JbnB1dCkKQEAgLTE1Miw2ICsxNzcsNyBAQCBURVNUKERhdGFJbnRlcmFj
dGlvblRlc3RzLCBMaW5rVG9JbnB1dCkKICAgICBFWFBFQ1RfVFJVRShbb2JzZXJ2ZWRFdmVudE5h
bWVzIGNvbnRhaW5zT2JqZWN0OkRhdGFJbnRlcmFjdGlvbk92ZXJFdmVudE5hbWVdKTsKICAgICBF
WFBFQ1RfVFJVRShbb2JzZXJ2ZWRFdmVudE5hbWVzIGNvbnRhaW5zT2JqZWN0OkRhdGFJbnRlcmFj
dGlvblBlcmZvcm1PcGVyYXRpb25FdmVudE5hbWVdKTsKICAgICBjaGVja1NlbGVjdGlvblJlY3Rz
V2l0aExvZ2dpbmcoQFsgbWFrZUNHUmVjdFZhbHVlKDEwMSwgMjczLCAyMDU3LCAyMzIpIF0sIFtk
YXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgZmluYWxTZWxlY3Rpb25SZWN0c10pOworICAgIGNoZWNr
VHlwZUlkZW50aWZpZXJQcmVjZWRlc090aGVyVHlwZUlkZW50aWZpZXIoZGF0YUludGVyYWN0aW9u
U2ltdWxhdG9yLmdldCgpLCAoTlNTdHJpbmcgKilrVVRUeXBlVVJMLCAoTlNTdHJpbmcgKilrVVRU
eXBlVVRGOFBsYWluVGV4dCk7CiB9CiAKIFRFU1QoRGF0YUludGVyYWN0aW9uVGVzdHMsIEJhY2tn
cm91bmRJbWFnZUxpbmtUb0lucHV0KQpAQCAtMTY5LDYgKzE5NSw3IEBAIFRFU1QoRGF0YUludGVy
YWN0aW9uVGVzdHMsIEJhY2tncm91bmRJbWFnZUxpbmtUb0lucHV0KQogICAgIEVYUEVDVF9UUlVF
KFtvYnNlcnZlZEV2ZW50TmFtZXMgY29udGFpbnNPYmplY3Q6RGF0YUludGVyYWN0aW9uT3ZlckV2
ZW50TmFtZV0pOwogICAgIEVYUEVDVF9UUlVFKFtvYnNlcnZlZEV2ZW50TmFtZXMgY29udGFpbnNP
YmplY3Q6RGF0YUludGVyYWN0aW9uUGVyZm9ybU9wZXJhdGlvbkV2ZW50TmFtZV0pOwogICAgIGNo
ZWNrU2VsZWN0aW9uUmVjdHNXaXRoTG9nZ2luZyhAWyBtYWtlQ0dSZWN0VmFsdWUoMTAxLCAyNDEs
IDIwNTcsIDIzMikgXSwgW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBmaW5hbFNlbGVjdGlvblJl
Y3RzXSk7CisgICAgY2hlY2tUeXBlSWRlbnRpZmllclByZWNlZGVzT3RoZXJUeXBlSWRlbnRpZmll
cihkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IuZ2V0KCksIChOU1N0cmluZyAqKWtVVFR5cGVVUkws
IChOU1N0cmluZyAqKWtVVFR5cGVVVEY4UGxhaW5UZXh0KTsKIH0KIAogVEVTVChEYXRhSW50ZXJh
Y3Rpb25UZXN0cywgQ2FuUHJldmVudFN0YXJ0KQpAQCAtMjk4LDYgKzMyNSw3IEBAIFRFU1QoRGF0
YUludGVyYWN0aW9uVGVzdHMsIExhcmdlSW1hZ2VUb1RhcmdldERpdikKICAgICBSZXRhaW5QdHI8
RGF0YUludGVyYWN0aW9uU2ltdWxhdG9yPiBkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgPSBhZG9w
dE5TKFtbRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIGFsbG9jXSBpbml0V2l0aFdlYlZpZXc6d2Vi
Vmlldy5nZXQoKV0pOwogICAgIFtkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgcnVuRnJvbTpDR1Bv
aW50TWFrZSgyMDAsIDQwMCkgdG86Q0dQb2ludE1ha2UoMjAwLCAxNTApXTsKICAgICBFWFBFQ1Rf
V0tfU1RSRVEoIlBBU1MiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAi
dGFyZ2V0LnRleHRDb250ZW50Il0uVVRGOFN0cmluZyk7CisgICAgY2hlY2tUeXBlSWRlbnRpZmll
clByZWNlZGVzT3RoZXJUeXBlSWRlbnRpZmllcihkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IuZ2V0
KCksIChOU1N0cmluZyAqKWtVVFR5cGVQTkcsIChOU1N0cmluZyAqKWtVVFR5cGVGaWxlVVJMKTsK
IH0KIAogVEVTVChEYXRhSW50ZXJhY3Rpb25UZXN0cywgTGlua1dpdGhFbXB0eUhSRUYpCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9EYXRhSW50ZXJhY3Rpb25TaW11bGF0b3Iu
aCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvci5oCmlu
ZGV4IGZhMTEwYTZkZjdlOGIyNzEzOWRlYzQ5ZDYxYjBkNGJjNTI0NjI3Y2EuLjMzNmJkZmQ4OTE1
NTZjMzExNzY4ODM2NTcyYmMwNTViNmVjMTdmZWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvaW9zL0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvci5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvaW9zL0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvci5oCkBAIC01NSw2ICs1NSw3IEBAIHR5
cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIERhdGFJbnRlcmFjdGlvblBoYXNlKSB7CiAgICAgUmV0
YWluUHRyPE1vY2tEYXRhT3BlcmF0aW9uU2Vzc2lvbj4gX2RhdGFPcGVyYXRpb25TZXNzaW9uOwog
ICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gX29ic2VydmVkRXZlbnROYW1lczsKICAgICBS
ZXRhaW5QdHI8VUlJdGVtUHJvdmlkZXI+IF9leHRlcm5hbEl0ZW1Qcm92aWRlcjsKKyAgICBSZXRh
aW5QdHI8TlNBcnJheSAqPiBfc291cmNlSXRlbVByb3ZpZGVyczsKICAgICBSZXRhaW5QdHI8TlNB
cnJheSAqPiBfZmluYWxTZWxlY3Rpb25SZWN0czsKICAgICBDR1BvaW50IF9zdGFydExvY2F0aW9u
OwogICAgIENHUG9pbnQgX2VuZExvY2F0aW9uOwpAQCAtNzEsNiArNzIsNyBAQCB0eXBlZGVmIE5T
X0VOVU0oTlNJbnRlZ2VyLCBEYXRhSW50ZXJhY3Rpb25QaGFzZSkgewogQHByb3BlcnR5IChub25h
dG9taWMpIEJsb2NrUHRyPEJPT0woX1dLQWN0aXZhdGVkRWxlbWVudEluZm8gKik+IHNob3dDdXN0
b21BY3Rpb25TaGVldEJsb2NrOwogQHByb3BlcnR5IChub25hdG9taWMpIEJsb2NrUHRyPE5TQXJy
YXkgKihOU0FycmF5ICopPiBjb252ZXJ0SXRlbVByb3ZpZGVyc0Jsb2NrOwogQHByb3BlcnR5IChu
b25hdG9taWMsIHN0cm9uZykgVUlJdGVtUHJvdmlkZXIgKmV4dGVybmFsSXRlbVByb3ZpZGVyOwor
QHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU0FycmF5ICpzb3VyY2VJdGVtUHJvdmlk
ZXJzOwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU0FycmF5ICpvYnNlcnZlZEV2
ZW50TmFtZXM7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TQXJyYXkgKmZpbmFs
U2VsZWN0aW9uUmVjdHM7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIERhdGFJbnRl
cmFjdGlvblBoYXNlIHBoYXNlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3Mv
RGF0YUludGVyYWN0aW9uU2ltdWxhdG9yLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvRGF0
YUludGVyYWN0aW9uU2ltdWxhdG9yLm1tCmluZGV4IDEzZjRhMGJmYTg1ZmE4ZDY2MDUyZGJmOGMx
NWUzYTdmZTBkMTRlMzUuLmFlMTZjOWQ4ODQ2NDY1YmQ2YTUzYTA0ODkwMTI4NjBhNDA3MGJmYjgg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL0RhdGFJbnRlcmFjdGlvblNpbXVs
YXRvci5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9EYXRhSW50ZXJhY3Rpb25TaW11
bGF0b3IubW0KQEAgLTIwMiwxMCArMjAyLDE0IEBAIHN0YXRpYyBOU0FycmF5ICpkYXRhSW50ZXJh
Y3Rpb25FdmVudE5hbWVzKCkKIAogICAgICAgICBfZGF0YU9wZXJhdGlvblNlc3Npb24gPSBhZG9w
dE5TKFtbTW9ja0RhdGFPcGVyYXRpb25TZXNzaW9uIGFsbG9jXSBpbml0V2l0aFByb3ZpZGVyOml0
ZW1Qcm92aWRlcnMuZmlyc3RPYmplY3QgbG9jYXRpb246c2VsZi5fY3VycmVudExvY2F0aW9uIHdp
bmRvdzpbX3dlYlZpZXcgd2luZG93XV0pOwogICAgICAgICBbX2RhdGFJbnRlcmFjdGlvblNlc3Np
b24gc2V0SXRlbXM6aXRlbXNdOwotICAgICAgICBpZiAoIXNlbGYuc2hvd0N1c3RvbUFjdGlvblNo
ZWV0QmxvY2spIHsKLSAgICAgICAgICAgIFtfd2ViVmlldyBfc2ltdWxhdGVXaWxsQmVnaW5EYXRh
SW50ZXJhY3Rpb25XaXRoU2Vzc2lvbjpfZGF0YUludGVyYWN0aW9uU2Vzc2lvbi5nZXQoKV07Ci0g
ICAgICAgICAgICBfcGhhc2UgPSBEYXRhSW50ZXJhY3Rpb25CZWdhbjsKKyAgICAgICAgX3NvdXJj
ZUl0ZW1Qcm92aWRlcnMgPSBpdGVtUHJvdmlkZXJzOworICAgICAgICBpZiAoc2VsZi5zaG93Q3Vz
dG9tQWN0aW9uU2hlZXRCbG9jaykgeworICAgICAgICAgICAgLy8gRGVmZXIgcHJvZ3Jlc3MgdW50
aWwgdGhlIGN1c3RvbSBhY3Rpb24gc2hlZXQgaXMgZGlzbWlzc2VkLgorICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CisKKyAgICAgICAgW193ZWJWaWV3IF9zaW11bGF0ZVdpbGxCZWdpbkRh
dGFJbnRlcmFjdGlvbldpdGhTZXNzaW9uOl9kYXRhSW50ZXJhY3Rpb25TZXNzaW9uLmdldCgpXTsK
KyAgICAgICAgX3BoYXNlID0gRGF0YUludGVyYWN0aW9uQmVnYW47CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KICAgICBjYXNlIERhdGFJbnRlcmFjdGlvbkJlZ2FuOgpAQCAtMjM1LDYgKzIzOSwxMSBA
QCBzdGF0aWMgTlNBcnJheSAqZGF0YUludGVyYWN0aW9uRXZlbnROYW1lcygpCiAgICAgW3NlbGYg
cGVyZm9ybVNlbGVjdG9yOkBzZWxlY3RvcihfYWR2YW5jZVByb2dyZXNzKSB3aXRoT2JqZWN0Om5p
bCBhZnRlckRlbGF5OnByb2dyZXNzVGltZVN0ZXBdOwogfQogCistIChOU0FycmF5ICopc291cmNl
SXRlbVByb3ZpZGVycworeworICAgIHJldHVybiBfc291cmNlSXRlbVByb3ZpZGVycy5nZXQoKTsK
K30KKwogLSAoVUlJdGVtUHJvdmlkZXIgKilleHRlcm5hbEl0ZW1Qcm92aWRlcgogewogICAgIHJl
dHVybiBfZXh0ZXJuYWxJdGVtUHJvdmlkZXIuZ2V0KCk7CkBAIC0yNzQsNiArMjgzLDcgQEAgc3Rh
dGljIE5TQXJyYXkgKmRhdGFJbnRlcmFjdGlvbkV2ZW50TmFtZXMoKQogICAgICAgICBEYXRhSW50
ZXJhY3Rpb25TaW11bGF0b3IgKndlYWtTZWxmID0gc3Ryb25nU2VsZi5nZXQoKTsKICAgICAgICAg
W3dlYWtTZWxmLT5fd2ViVmlldyBfc2ltdWxhdGVXaWxsQmVnaW5EYXRhSW50ZXJhY3Rpb25XaXRo
U2Vzc2lvbjp3ZWFrU2VsZi0+X2RhdGFJbnRlcmFjdGlvblNlc3Npb24uZ2V0KCldOwogICAgICAg
ICB3ZWFrU2VsZi0+X3BoYXNlID0gRGF0YUludGVyYWN0aW9uQmVnYW47CisgICAgICAgIFt3ZWFr
U2VsZiBfc2NoZWR1bGVBZHZhbmNlUHJvZ3Jlc3NdOwogICAgIH0pOwogCiAgICAgcmV0dXJuIHNl
bGYuc2hvd0N1c3RvbUFjdGlvblNoZWV0QmxvY2soZWxlbWVudCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>306162</attachid>
            <date>2017-04-03 20:10:35 -0700</date>
            <delta_ts>2017-04-03 21:31:51 -0700</delta_ts>
            <desc>Final patch for landing</desc>
            <filename>bug-170428-20170403201034.patch</filename>
            <type>text/plain</type>
            <size>40782</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0ODU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQ2NWMwMzYzMzE2YjBj
YzIyMzQ5MTgzMmRjMWZmMzI0OTg2OTEzNi4uZWZlMDM2ODhmYzUzZjBlODNhYmMyNWUxYzQ2MDNh
OTZjNDUyYWZkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDE3LTA0LTAzICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIERhdGEgaW50ZXJh
Y3Rpb24gc2hvdWxkIHJlZ2lzdGVyIHR5cGUgaWRlbnRpZmllcnMgaW4gb3JkZXIgb2YgcHJpb3Jp
dHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDQy
OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzA2MzMyOTY+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgVGltIEhvcnRvbi4KKworICAgICAgICBDdXJyZW50bHksIGR1ZSB0byB0aGUgc2hhcmVkIGxv
Z2ljIGZvciB3cml0aW5nIHRvIGEgVUlQYXN0ZWJvYXJkIChpbiB0aGUgY2FzZSBvZiBjb3B5L3Bh
c3RlKSBhbmQgdGhlIHNoYXJlZAorICAgICAgICBVSUl0ZW1Qcm92aWRlci1iYXNlZCBwYXN0ZWJv
YXJkIHdyYXBwZXIgKGluIHRoZSBjYXNlIG9mIGRhdGEgaW50ZXJhY3Rpb24pLCB3ZSBkb24ndCBl
bmZvcmNlIGFueSBwYXJ0aWN1bGFyCisgICAgICAgIG9yZGVyaW5nIGluIHdoaWNoIHR5cGUgaWRl
bnRpZmllcnMgYXJlIHJlZ2lzdGVyZWQgaW4gdGhlIGdlbmVyYXRlZCBpdGVtIHByb3ZpZGVyLiBU
aGlzIGlzIGJlY2F1c2UKKyAgICAgICAgLVtVSVBhc3RlYm9hcmQgc2V0SXRlbXM6XSBvbmx5IHRh
a2VzIGFuIHVub3JkZXJlZCBtYXBwaW5nIG9mIHR5cGUgaWRlbnRpZmllcnMgdG8gb2JqZWN0cy4K
KworICAgICAgICBUbyBmaXggdGhpcywgd2UgaW50cm9kdWNlIGEgc2VwYXJhdGUgd2F5IHRvIHNl
dCBwYXN0ZWJvYXJkIGRhdGEgdGhhdCBmaXJzdCB3cml0ZXMgYSBsaXN0IG9mIG9iamVjdAorICAg
ICAgICByZXByZXNlbnRhdGlvbnMgaW4gb3JkZXIgb2YgcHJpb3JpdHkgKHdoaWNoIGlzIGRlcGVu
ZGVudCBvbiB0aGUgY29udGVudCBiZWluZyBpbnRlcmFjdGVkIHdpdGgpIGFuZCB0aGVuIHJlZ2lz
dGVyCisgICAgICAgIGluZGl2aWR1YWwgdHlwZS1kYXRhIG1hcHBpbmdzIGF0IHRoZSBlbmQuCisK
KyAgICAgICAgQXVnbWVudGVkIGV4aXN0aW5nIEFQSSB0ZXN0cyBpbiBEYXRhSW50ZXJhY3Rpb25U
ZXN0cyB0byBjaGVjayBmb3IgdGhlIGV4aXN0ZW5jZSBhbmQgcHJpb3JpdHkgb2YgdHlwZSBpZGVu
dGlmaWVycworICAgICAgICBpbiB0aGUgVUlJdGVtUHJvdmlkZXJzIGNyZWF0ZWQgdXBvbiBzdGFy
dGluZyBkYXRhIGludGVyYWN0aW9uLiBBbHNvIGFkZHMgYSBuZXcgdW5pdCB0ZXN0OgorICAgICAg
ICBEYXRhSW50ZXJhY3Rpb25UZXN0cy5UZXh0QXJlYVRvSW5wdXQuCisKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9F
ZGl0b3JDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmFyY2hpdmVkRGF0YUZvckF0dHJpYnV0
ZWRTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjp3cml0ZVNlbGVjdGlvblRvUGFz
dGVib2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OndyaXRlU2VsZWN0aW9uKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVi
b2FyZFdyaXRlckRhdGEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvQWJzdHJhY3RQYXN0ZWJvYXJkLmg6CisgICAgICAg
ICogcGxhdGZvcm0vaW9zL0Fic3RyYWN0UGFzdGVib2FyZC5tbTogQ29waWVkIGZyb20gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL0Fic3RyYWN0UGFzdGVib2FyZC5oLgorCisgICAgICAgIElu
dHJvZHVjZSBXZWJQYXN0ZWJvYXJkSXRlbURhdGEsIGEgd3JhcHBlciBhcm91bmQgYSBsaXN0IG9m
IG9iamVjdHMgcmVwcmVzZW50YXRpbmcgdGhlIHBhc3RlYm9hcmQgZGF0YSBpbiBvcmRlcgorICAg
ICAgICBvZiBwcmlvcml0eSwgYW5kIGEgZGljdGlvbmFyeSBjb250YWluaW5nIGFkZGl0aW9uYWwg
TlNEYXRhIGJsb2JzIHRoYXQgY29udGFpbiBkYXRhIHVzZWZ1bCBmb3IgcHJpdmF0ZSBjbGllbnRz
LgorCisgICAgICAgICgrW1dlYlBhc3RlYm9hcmRJdGVtRGF0YSBpdGVtV2l0aFJlcHJlc2VudGlu
Z09iamVjdHM6YWRkaXRpb25hbERhdGE6XSk6CisgICAgICAgICgtW1dlYlBhc3RlYm9hcmRJdGVt
RGF0YSBpbml0V2l0aFJlcHJlc2VudGluZ09iamVjdHM6YWRkaXRpb25hbERhdGE6XSk6CisgICAg
ICAgICgtW1dlYlBhc3RlYm9hcmRJdGVtRGF0YSByZXByZXNlbnRpbmdPYmplY3RzXSk6CisgICAg
ICAgICgtW1dlYlBhc3RlYm9hcmRJdGVtRGF0YSBhZGRpdGlvbmFsRGF0YV0pOgorICAgICAgICAq
IHBsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJT1MubW06CisgICAgICAgIChXZWJDb3Jl
OjpyaWNoVGV4dFJlcHJlc2VudGF0aW9uc0ZvclBhc3RlYm9hcmRXZWJDb250ZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGVPYmplY3RSZXByZXNlbnRhdGlv
bnMpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZSk6CisKKyAg
ICAgICAgVHdlYWtlZCB0byBjaGVjayB3aGV0aGVyIHRoZSBwYXN0ZWJvYXJkIHJlc3BvbmRzIHRv
IC1zZXRJdGVtc0Zyb21PYmplY3RSZXByZXNlbnRhdGlvbnM6LiBJZiBzbywgdXNlcyB0aGUKKyAg
ICAgICAgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZU9iamVjdFJlcHJlc2VudGF0aW9ucyBjb2Rl
cGF0aCB0byB3cml0ZSBkYXRhIHRvIHRoZSBwYXN0ZWJvYXJkLCByZXNwZWN0aW5nIHR5cGUKKyAg
ICAgICAgcHJpb3JpdHkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVy
UGFzdGVib2FyZC5tbToKKyAgICAgICAgKC1bV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZCBwYXN0
ZWJvYXJkVHlwZXNdKToKKyAgICAgICAgKC1bV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZCBzZXRJ
dGVtUHJvdmlkZXJzOl0pOgorICAgICAgICAoLVtXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkIHNl
dEl0ZW1zRnJvbU9iamVjdFJlcHJlc2VudGF0aW9uczpdKToKKworICAgICAgICBSZXBsYWNlcyAt
c2V0SXRlbXM6IHdpdGggLXNldEl0ZW1zRnJvbU9iamVjdFJlcHJlc2VudGF0aW9uczosIHdoaWNo
IHJlc3BlY3RzIHRoZSBwcmlvcml0eSBvZiBlYWNoIG9iamVjdAorICAgICAgICByZXByZXNlbnRh
dGlvbiBvZiB0aGUgZGF0YSBpbiB0aGUgcGFzdGVib2FyZC4KKworICAgICAgICAoLVtXZWJJdGVt
UHJvdmlkZXJQYXN0ZWJvYXJkIHNldEl0ZW1zOl0pOiBEZWxldGVkLgorCiAyMDE3LTA0LTAzICBK
YXZpZXIgRmVybmFuZGV6ICA8amZlcm5hbmRlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtjc3Mt
YWxpZ25dIEFkYXB0IHBsYWNlLWNvbnRlbnQgYWxpZ25tZW50IHNob3J0aGFuZCB0byB0aGUgbmV3
IGJhc2VsaW5lIHN5bnRheApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDgwOThlZWY2N2ZmZDkyNDBkMThhYWQzNDk3
YThmOWFmNzU4YzgwZGMuLjk2NmM2MjM5ZGM1YmM4YWRiYTgxMDU0ZTliZjM0ZDgxYmZjN2Y5OTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxNy0wNC0wMyAgV2Vuc29uIEhzaWVoICA8
d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBEYXRhIGludGVyYWN0aW9uIHNob3Vs
ZCByZWdpc3RlciB0eXBlIGlkZW50aWZpZXJzIGluIG9yZGVyIG9mIHByaW9yaXR5CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzA0MjgKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzMwNjMzMjk2PgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0
b24uCisKKyAgICAgICAgU2VyaWFsaXplIFBhc3RlYm9hcmRXZWJDb250ZW50LmRhdGFJbkF0dHJp
YnV0ZWRTdHJpbmdGb3JtYXQgd2hlbiBzZW5kaW5nIG92ZXIgSVBDLiBSZWZlciB0byBXZWJDb3Jl
IENoYW5nZUxvZworICAgICAgICBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAgICogU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8
UGFzdGVib2FyZFdlYkNvbnRlbnQ+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENv
ZGVyPFBhc3RlYm9hcmRXZWJDb250ZW50Pjo6ZGVjb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbToKKwogMjAxNy0wNC0wMyAgSm9zZXBoIFBlY29yYXJvICA8
cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBubyBsb25nZXIgbmVlZGVkIGZv
cndhcmQgZGVjbGFyYXRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggYjEzZDM5M2ExMGM3ZTJjY2ViZmZiMWNkYzMwMmM2ZTFj
YjYxOTlhOC4uNzk0ODVhMjc2YTc5ZTVmYTMyMTUzNmE1YWRkZjRkMTVlM2ZkMTZjMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
NjgzMCw2ICs2ODMwLDcgQEAKIAkJRjQ4MjIzMTMxRTM4NkUyNDAwNjZGQzc5IC8qIEFic3RyYWN0
UGFzdGVib2FyZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjQ4MjIzMTIxRTM4NkUyNDAwNjZGQzc5IC8qIEFic3RyYWN0UGFzdGVib2FyZC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUY0QkZCOTg1MUUx
RERGOUIwMDg2MkMyNCAvKiBEdW1wRWRpdGluZ0hpc3RvcnkuanMgaW4gQ29weSBTY3JpcHRzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0ODM4OTgzMUUxRERGMkIwMDc2QjdF
QSAvKiBEdW1wRWRpdGluZ0hpc3RvcnkuanMgKi87IH07CiAJCUY0QkZCOTg2MUUxRERGOUIwMDg2
MkMyNCAvKiBFZGl0aW5nSGlzdG9yeVV0aWwuanMgaW4gQ29weSBTY3JpcHRzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0ODM4OTg0MUUxRERGMkIwMDc2QjdFQSAvKiBFZGl0
aW5nSGlzdG9yeVV0aWwuanMgKi87IH07CisJCUY0RDgzMTYyMUU5MDhDMDcwMDk0MTE3NCAvKiBB
YnN0cmFjdFBhc3RlYm9hcmQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGNEQ4MzE2MTFFOTA4QzA3MDA5NDExNzQgLyogQWJzdHJhY3RQYXN0ZWJvYXJk
Lm1tICovOyB9OwogCQlGNTA2NjRGNzE1N0Y1MkRDMDBBQzIyNkYgLyogRm9ybUNvbnRyb2xsZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjUwNjY0
RjUxNTdGNTJEQzAwQUMyMjZGIC8qIEZvcm1Db250cm9sbGVyLmNwcCAqLzsgfTsKIAkJRjUwNjY0
RjgxNTdGNTJEQzAwQUMyMjZGIC8qIEZvcm1Db250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTA2NjRGNjE1N0Y1MkRDMDBBQzIyNkYgLyog
Rm9ybUNvbnRyb2xsZXIuaCAqLzsgfTsKIAkJRjUxM0EzRUExNUZGNDg0MTAwMTUyNkRCIC8qIFZh
bGlkYXRpb25NZXNzYWdlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGNTEzQTNFOTE1RkY0ODQxMDAxNTI2REIgLyogVmFsaWRhdGlvbk1lc3Nh
Z2VDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtMTUzMzIsNiArMTUzMzMsNyBAQAogCQlGNDgyMjMxMjFFMzg2RTI0MDA2NkZDNzkgLyog
QWJzdHJhY3RQYXN0ZWJvYXJkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFi
c3RyYWN0UGFzdGVib2FyZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDgzODk4
MzFFMURERjJCMDA3NkI3RUEgLyogRHVtcEVkaXRpbmdIaXN0b3J5LmpzICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5qYXZhc2NyaXB0OyBuYW1lID0gRHVtcEVkaXRpbmdIaXN0b3J5LmpzOyBwYXRoID0g
U2NyaXB0cy9EdW1wRWRpdGluZ0hpc3RvcnkuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUY0ODM4OTg0MUUxRERGMkIwMDc2QjdFQSAvKiBFZGl0aW5nSGlzdG9yeVV0aWwuanMgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IG5hbWUgPSBFZGl0aW5nSGlzdG9yeVV0aWwu
anM7IHBhdGggPSBTY3JpcHRzL0VkaXRpbmdIaXN0b3J5VXRpbC5qczsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRjREODMxNjExRTkwOEMwNzAwOTQxMTc0IC8qIEFic3RyYWN0UGFzdGVi
b2FyZC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFic3RyYWN0
UGFzdGVib2FyZC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjUwNjY0RjUxNTdG
NTJEQzAwQUMyMjZGIC8qIEZvcm1Db250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEZvcm1Db250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRjUwNjY0RjYxNTdGNTJEQzAwQUMyMjZGIC8qIEZvcm1Db250cm9sbGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvcm1Db250cm9sbGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY1MTNBM0U5MTVGRjQ4NDEwMDE1MjZEQiAvKiBWYWxpZGF0
aW9uTWVzc2FnZUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWYWxp
ZGF0aW9uTWVzc2FnZUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjA4
NjMsNiArMjA4NjUsNyBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJQTE0ODMyOEIxODdGNTA2ODAw
REE2M0E2IC8qIHdhayAqLywKIAkJCQlGNDgyMjMxMjFFMzg2RTI0MDA2NkZDNzkgLyogQWJzdHJh
Y3RQYXN0ZWJvYXJkLmggKi8sCisJCQkJRjREODMxNjExRTkwOEMwNzAwOTQxMTc0IC8qIEFic3Ry
YWN0UGFzdGVib2FyZC5tbSAqLywKIAkJCQkyNjU1NDE0QjE0ODlBQTJCMDAwREZDNUQgLyogQ3Vy
c29ySU9TLmNwcCAqLywKIAkJCQlBMUVENzc4QTFCRTMyOTNGMDBEQzE3OTEgLyogRGV2aWNlLmNw
cCAqLywKIAkJCQlBMUVENzc4QjFCRTMyOTQwMDBEQzE3OTEgLyogRGV2aWNlLmggKi8sCkBAIC0z
MTYyOSw2ICszMTYzMiw3IEBACiAJCQkJQTYxNDhBNzgxMkU0MUUzQjAwNDRBNzg0IC8qIEpTSFRN
TEtleWdlbkVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFFMkFCMjEwQTFDRTYzQjAw
QjQyQjI1IC8qIEpTSFRNTExhYmVsRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUUy
QUIyMzBBMUNFNjNCMDBCNDJCMjUgLyogSlNIVE1MTGVnZW5kRWxlbWVudC5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlGNEQ4MzE2MjFFOTA4QzA3MDA5NDExNzQgLyogQWJzdHJhY3RQYXN0ZWJvYXJk
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFFMkFCMjUwQTFDRTYzQjAwQjQyQjI1IC8qIEpTSFRN
TExJRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODBFN0IxMDBBMTlENjA2MDA3RkI4
QzUgLyogSlNIVE1MTGlua0VsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFFMkFCMjcw
QTFDRTYzQjAwQjQyQjI1IC8qIEpTSFRNTE1hcEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0VkaXRvckNvY29hLm1tIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9FZGl0b3JDb2NvYS5tbQppbmRleCA0MDI4NmY0
MWQyZTcwNGFhODMxYTg0NThiNTAzMzUxNTMzNjgxNGE5Li4wNWM4OTA4NDQ2YTI2ODhkYmU0ODA2
OGZlN2EyNDcwMzVkYTk5MGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL0VkaXRvckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRWRp
dG9yQ29jb2EubW0KQEAgLTE1Miw2ICsxNTIsMTQgQEAgRnJhZ21lbnRBbmRSZXNvdXJjZXMgRWRp
dG9yOjpjcmVhdGVGcmFnbWVudChOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCitzdGF0aWMgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZWREYXRh
Rm9yQXR0cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcp
Cit7CisgICAgaWYgKCFhdHRyaWJ1dGVkU3RyaW5nLmxlbmd0aCkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjp3cmFwTlNEYXRhKFtOU0tleWVkQXJj
aGl2ZXIgYXJjaGl2ZWREYXRhV2l0aFJvb3RPYmplY3Q6YXR0cmlidXRlZFN0cmluZ10pOworfQor
CiB2b2lkIEVkaXRvcjo6d3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoUGFzdGVib2FyZCYgcGFz
dGVib2FyZCkKIHsKICAgICBOU0F0dHJpYnV0ZWRTdHJpbmcgKmF0dHJpYnV0ZWRTdHJpbmcgPSBh
dHRyaWJ1dGVkU3RyaW5nRnJvbVJhbmdlKCpzZWxlY3RlZFJhbmdlKCkpOwpAQCAtMTYxLDYgKzE2
OSw3IEBAIHZvaWQgRWRpdG9yOjp3cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChQYXN0ZWJvYXJk
JiBwYXN0ZWJvYXJkKQogICAgIGNvbnRlbnQuZGF0YUluV2ViQXJjaGl2ZUZvcm1hdCA9IHNlbGVj
dGlvbkluV2ViQXJjaGl2ZUZvcm1hdCgpOwogICAgIGNvbnRlbnQuZGF0YUluUlRGREZvcm1hdCA9
IGF0dHJpYnV0ZWRTdHJpbmcuY29udGFpbnNBdHRhY2htZW50cyA/IGRhdGFJblJURkRGb3JtYXQo
YXR0cmlidXRlZFN0cmluZykgOiBudWxscHRyOwogICAgIGNvbnRlbnQuZGF0YUluUlRGRm9ybWF0
ID0gZGF0YUluUlRGRm9ybWF0KGF0dHJpYnV0ZWRTdHJpbmcpOworICAgIGNvbnRlbnQuZGF0YUlu
QXR0cmlidXRlZFN0cmluZ0Zvcm1hdCA9IGFyY2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRTdHJpbmco
YXR0cmlidXRlZFN0cmluZyk7CiAgICAgLy8gRklYTUU6IFdoeSBkb24ndCB3ZSB3YW50IHRoaXMg
b24gaU9TPwogI2lmIFBMQVRGT1JNKE1BQykKICAgICBjb250ZW50LmRhdGFJbkhUTUxGb3JtYXQg
PSBzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKTsKQEAgLTE4MCw2ICsxODksNyBAQCB2b2lkIEVkaXRv
cjo6d3JpdGVTZWxlY3Rpb24oUGFzdGVib2FyZFdyaXRlckRhdGEmIHBhc3RlYm9hcmRXcml0ZXJE
YXRhKQogICAgIHdlYkNvbnRlbnQuZGF0YUluV2ViQXJjaGl2ZUZvcm1hdCA9IHNlbGVjdGlvbklu
V2ViQXJjaGl2ZUZvcm1hdCgpOwogICAgIHdlYkNvbnRlbnQuZGF0YUluUlRGREZvcm1hdCA9IGF0
dHJpYnV0ZWRTdHJpbmcuY29udGFpbnNBdHRhY2htZW50cyA/IGRhdGFJblJURkRGb3JtYXQoYXR0
cmlidXRlZFN0cmluZykgOiBudWxscHRyOwogICAgIHdlYkNvbnRlbnQuZGF0YUluUlRGRm9ybWF0
ID0gZGF0YUluUlRGRm9ybWF0KGF0dHJpYnV0ZWRTdHJpbmcpOworICAgIHdlYkNvbnRlbnQuZGF0
YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdCA9IGFyY2hpdmVkRGF0YUZvckF0dHJpYnV0ZWRTdHJp
bmcoYXR0cmlidXRlZFN0cmluZyk7CiAgICAgLy8gRklYTUU6IFdoeSBkb24ndCB3ZSB3YW50IHRo
aXMgb24gaU9TPwogI2lmIFBMQVRGT1JNKE1BQykKICAgICB3ZWJDb250ZW50LmRhdGFJbkhUTUxG
b3JtYXQgPSBzZWxlY3Rpb25JbkhUTUxGb3JtYXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3Rl
Ym9hcmQuaAppbmRleCAzZGQwMGQzYjBlY2NhZjgwZjRjNjZhZmVkYTJmNmJiNmZhYWM1OWJkLi5i
OTRkNzBhMWY2YTUyMGIwMTgxYzNkMjM1YmUyZmJiOGM3ZGM4YjY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZC5oCkBAIC02OSw2ICs2OSw3IEBAIHN0cnVjdCBQYXN0ZWJvYXJkV2Vi
Q29udGVudCB7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YUluV2ViQXJjaGl2ZUZvcm1h
dDsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0OwogICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGRhdGFJblJURkZvcm1hdDsKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBkYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0OwogICAgIFN0cmluZyBkYXRhSW5IVE1MRm9y
bWF0OwogICAgIFN0cmluZyBkYXRhSW5TdHJpbmdGb3JtYXQ7CiAgICAgVmVjdG9yPFN0cmluZz4g
Y2xpZW50VHlwZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkV3JpdGVyRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZFdyaXRl
ckRhdGEuaAppbmRleCAyYzVhZGMyZDIyNmFlM2MxOGY5N2JlOWIyYWJkODMxNzhkNmEwMzZmLi4w
ZDFiNGI3MzZkMjI0ZWZkZjljMjBjNzRlODM3MjEzMmQxOTQ0OWM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkV3JpdGVyRGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRXcml0ZXJEYXRhLmgKQEAgLTU0LDYgKzU0LDcgQEAg
cHVibGljOgogICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5XZWJBcmNoaXZlRm9y
bWF0OwogICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZERm9ybWF0OwogICAg
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhSW5SVEZGb3JtYXQ7CisgICAgICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IGRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQ7CiAgICAgICAgIC8v
IEZJWE1FOiBXaHkgZG9uJ3Qgd2Ugd2FudCB0aGlzIG9uIGlPUz8KICNpZiBQTEFURk9STShNQUMp
CiAgICAgICAgIFN0cmluZyBkYXRhSW5IVE1MRm9ybWF0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1QYXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaAppbmRleCBiYTU0MjZmN2NlZGJiZDVhMjNjNjUyNTdk
YWIwYTQxMzdkMTcwOTdkLi4zNDMwMTE4Mjc4Mjg4NjlmNWEwNTM0YjE1M2RkYjQ5MjhkYzJmMWYx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQuaApAQCAt
ODgsNiArODgsMTIgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6CisjaWYgUExBVEZPUk0o
SU9TKQorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3JpdGVPYmplY3RSZXByZXNlbnRhdGlvbnMo
Y29uc3QgUGFzdGVib2FyZFdlYkNvbnRlbnQmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdy
aXRlT2JqZWN0UmVwcmVzZW50YXRpb25zKGNvbnN0IFBhc3RlYm9hcmRJbWFnZSYpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgd3JpdGVPYmplY3RSZXByZXNlbnRhdGlvbnMoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0KTsKKyNlbmRpZgorCiAjaWYgUExB
VEZPUk0oTUFDKQogICAgIFJldGFpblB0cjxOU1Bhc3RlYm9hcmQ+IG1fcGFzdGVib2FyZDsKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0Fic3RyYWN0UGFz
dGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0Fic3RyYWN0UGFzdGVib2Fy
ZC5oCmluZGV4IGExZmUwNDA1NDg2ZTQ2MjhjMjZjMWQ2NmU3ZTQ1NTM1MDIwNzE4ZjAuLjZlNjlm
Yzg0ODcxNDcyY2I5ODQyMzMwOWQ1MDNkYWIzOWFjMjYwNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9BYnN0cmFjdFBhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvQWJzdHJhY3RQYXN0ZWJvYXJkLmgKQEAgLTI1LDE1ICsyNSwzMSBA
QAogCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KIAorI2lmIFRBUkdFVF9PU19J
UEhPTkUKKworV0VCQ09SRV9FWFBPUlQgQGludGVyZmFjZSBXZWJQYXN0ZWJvYXJkSXRlbURhdGEg
OiBOU09iamVjdAorCisrIChpbnN0YW5jZXR5cGUpaXRlbVdpdGhSZXByZXNlbnRpbmdPYmplY3Rz
OihOU0FycmF5ICopcmVwcmVzZW50aW5nT2JqZWN0cyBhZGRpdGlvbmFsRGF0YTooTlNEaWN0aW9u
YXJ5ICopYWRkaXRpb25hbERhdGE7CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwg
c3Ryb25nKSBOU0FycmF5ICpyZXByZXNlbnRpbmdPYmplY3RzOworQHByb3BlcnR5IChub25hdG9t
aWMsIHJlYWRvbmx5LCBzdHJvbmcpIE5TRGljdGlvbmFyeSAqYWRkaXRpb25hbERhdGE7CisKK0Bl
bmQKKwogQHByb3RvY29sIEFic3RyYWN0UGFzdGVib2FyZCA8TlNPYmplY3Q+CiBAcmVxdWlyZWQK
IAogQHByb3BlcnR5IChyZWFkb25seSwgbm9uYXRvbWljKSBOU0ludGVnZXIgbnVtYmVyT2ZJdGVt
czsKIAogLSAoTlNBcnJheTxOU1N0cmluZyAqPiAqKXBhc3RlYm9hcmRUeXBlczsKLS0gKHZvaWQp
c2V0SXRlbXM6KE5TQXJyYXkgKilpdGVtczsKIC0gKE5TQXJyYXkgKilkYXRhRm9yUGFzdGVib2Fy
ZFR5cGU6KE5TU3RyaW5nICopcGFzdGVib2FyZFR5cGUgaW5JdGVtU2V0OihOU0luZGV4U2V0ICop
aXRlbVNldDsKIC0gKE5TQXJyYXkgKil2YWx1ZXNGb3JQYXN0ZWJvYXJkVHlwZTooTlNTdHJpbmcg
KilwYXN0ZWJvYXJkVHlwZSBpbkl0ZW1TZXQ6KE5TSW5kZXhTZXQgKilpdGVtU2V0OwogLSAoTlNJ
bnRlZ2VyKWNoYW5nZUNvdW50OwogCitAb3B0aW9uYWwKKy0gKHZvaWQpc2V0SXRlbXNGcm9tT2Jq
ZWN0UmVwcmVzZW50YXRpb25zOihOU0FycmF5PFdlYlBhc3RlYm9hcmRJdGVtRGF0YSAqPiAqKWl0
ZW1EYXRhOworLSAodm9pZClzZXRJdGVtczooTlNBcnJheTxOU0RpY3Rpb25hcnkgKj4gKilpdGVt
czsKKwogQGVuZAorCisjZW5kaWYgLy8gVEFSR0VUX09TX0lQSE9ORQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL0Fic3RyYWN0UGFzdGVib2FyZC5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy9BYnN0cmFjdFBhc3RlYm9hcmQubW0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjdh
MmE1N2E1NzFhZDEyNjczMDQxOTJhMTI5NTc0OTg2ZjQ3ZmMwYgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9BYnN0cmFjdFBhc3RlYm9hcmQubW0KQEAgLTAs
MCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJB
YnN0cmFjdFBhc3RlYm9hcmQuaCIKKworI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCisjaWYg
UExBVEZPUk0oSU9TKQorCitAaW50ZXJmYWNlIFdlYlBhc3RlYm9hcmRJdGVtRGF0YSAoKQorewor
ICAgIFJldGFpblB0cjxOU0FycmF5PiBfcmVwcmVzZW50aW5nT2JqZWN0czsKKyAgICBSZXRhaW5Q
dHI8TlNEaWN0aW9uYXJ5PiBfYWRkaXRpb25hbERhdGE7Cit9CisKK0BlbmQKKworQGltcGxlbWVu
dGF0aW9uIFdlYlBhc3RlYm9hcmRJdGVtRGF0YQorCisrIChpbnN0YW5jZXR5cGUpaXRlbVdpdGhS
ZXByZXNlbnRpbmdPYmplY3RzOihOU0FycmF5ICopcmVwcmVzZW50aW5nT2JqZWN0cyBhZGRpdGlv
bmFsRGF0YTooTlNEaWN0aW9uYXJ5ICopYWRkaXRpb25hbERhdGEKK3sKKyAgICByZXR1cm4gW1tb
c2VsZiBhbGxvY10gaW5pdFdpdGhSZXByZXNlbnRpbmdPYmplY3RzOnJlcHJlc2VudGluZ09iamVj
dHMgYWRkaXRpb25hbERhdGE6YWRkaXRpb25hbERhdGFdIGF1dG9yZWxlYXNlXTsKK30KKworLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoUmVwcmVzZW50aW5nT2JqZWN0czooTlNBcnJheSAqKXJlcHJl
c2VudGluZ09iamVjdHMgYWRkaXRpb25hbERhdGE6KE5TRGljdGlvbmFyeSAqKWFkZGl0aW9uYWxE
YXRhCit7CisgICAgaWYgKHNlbGYgPSBbc3VwZXIgaW5pdF0pIHsKKyAgICAgICAgX3JlcHJlc2Vu
dGluZ09iamVjdHMgPSByZXByZXNlbnRpbmdPYmplY3RzOworICAgICAgICBfYWRkaXRpb25hbERh
dGEgPSBhZGRpdGlvbmFsRGF0YTsKKyAgICB9CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKE5T
QXJyYXkgKilyZXByZXNlbnRpbmdPYmplY3RzCit7CisgICAgcmV0dXJuIF9yZXByZXNlbnRpbmdP
YmplY3RzLmdldCgpOworfQorCistIChOU0RpY3Rpb25hcnkgKilhZGRpdGlvbmFsRGF0YQorewor
ICAgIHJldHVybiBfYWRkaXRpb25hbERhdGEuZ2V0KCk7Cit9CisKK0BlbmQKKworI2VuZGlmIC8v
IFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Q
bGF0Zm9ybVBhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGxh
dGZvcm1QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IGViNmIwZDJjMGJhN2VhZjMxNmZmNjBlMjZmMzcz
MWJkZTkxMjJhZDEuLjU1YzljMTcwNWYzYWYyYTE1MWNmZDEwZTQwODVlYzhmNGYwZmIyZDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QbGF0Zm9ybVBhc3RlYm9hcmRJ
T1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1BsYXRmb3JtUGFzdGVib2Fy
ZElPUy5tbQpAQCAtMzQsOCArMzQsMTAgQEAKICNpbXBvcnQgIlNvZnRMaW5raW5nLmgiCiAjaW1w
b3J0ICJXZWJJdGVtUHJvdmlkZXJQYXN0ZWJvYXJkLmgiCiAjaW1wb3J0IDxNb2JpbGVDb3JlU2Vy
dmljZXMvTW9iaWxlQ29yZVNlcnZpY2VzLmg+CisjaW1wb3J0IDxVSUtpdC9VSUltYWdlLmg+CiAK
IFNPRlRfTElOS19GUkFNRVdPUksoVUlLaXQpCitTT0ZUX0xJTktfQ0xBU1MoVUlLaXQsIFVJSW1h
Z2UpCiBTT0ZUX0xJTktfQ0xBU1MoVUlLaXQsIFVJUGFzdGVib2FyZCkKIAogQGludGVyZmFjZSBV
SVBhc3RlYm9hcmQKQEAgLTE0Nyw5ICsxNDksOSBAQCBTdHJpbmcgUGxhdGZvcm1QYXN0ZWJvYXJk
Ojp1bmlxdWVOYW1lKCkKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLXZvaWQgUGxhdGZvcm1Q
YXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29udGVudCkKK3N0
YXRpYyBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiByaWNoVGV4dFJlcHJlc2VudGF0aW9uc0ZvclBh
c3RlYm9hcmRXZWJDb250ZW50KGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50JiBjb250ZW50KQog
ewotICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk+IHJlcHJlc2VudGF0aW9ucyA9IGFkb3B0TlMo
W1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CisgICAgUmV0YWluUHRyPE5TTXV0
YWJsZURpY3Rpb25hcnk+IHJlcHJlc2VudGF0aW9ucyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0
aW9uYXJ5IGFsbG9jXSBpbml0XSk7CiAKICAgICBBU1NFUlQoY29udGVudC5jbGllbnRUeXBlcy5z
aXplKCkgPT0gY29udGVudC5jbGllbnREYXRhLnNpemUoKSk7CiAgICAgZm9yIChzaXplX3QgaSA9
IDAsIHNpemUgPSBjb250ZW50LmNsaWVudFR5cGVzLnNpemUoKTsgaSA8IHNpemU7ICsraSkKQEAg
LTE1OCw3ICsxNjAsNyBAQCB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFz
dGVib2FyZFdlYkNvbnRlbnQmIGNvbnRlbnQpCiAgICAgaWYgKGNvbnRlbnQuZGF0YUluV2ViQXJj
aGl2ZUZvcm1hdCkgewogICAgICAgICBbcmVwcmVzZW50YXRpb25zIHNldFZhbHVlOihOU0RhdGEg
Kiljb250ZW50LmRhdGFJbldlYkFyY2hpdmVGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpIGZv
cktleTpXZWJBcmNoaXZlUGJvYXJkVHlwZV07CiAgICAgICAgIC8vIEZsYWcgZm9yIFVJS2l0IHRv
IGtub3cgdGhhdCB0aGlzIGNvcHkgY29udGFpbnMgcmljaCBjb250ZW50LiBUaGlzIHdpbGwgdHJp
Z2dlciBhIHR3by1zdGVwIHBhc3RlLgotICAgICAgICBOU1N0cmluZyogd2ViSU9TUGFzdGVQYm9h
cmRUeXBlID0gQCJpT1MgcmljaCBjb250ZW50IHBhc3RlIHBhc3RlYm9hcmQgdHlwZSI7CisgICAg
ICAgIE5TU3RyaW5nICp3ZWJJT1NQYXN0ZVBib2FyZFR5cGUgPSBAImlPUyByaWNoIGNvbnRlbnQg
cGFzdGUgcGFzdGVib2FyZCB0eXBlIjsKICAgICAgICAgW3JlcHJlc2VudGF0aW9ucyBzZXRWYWx1
ZTp3ZWJJT1NQYXN0ZVBib2FyZFR5cGUgZm9yS2V5OndlYklPU1Bhc3RlUGJvYXJkVHlwZV07CiAg
ICAgfQogCkBAIC0xNjcsMTMgKzE2OSw3MCBAQCB2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6d3Jp
dGUoY29uc3QgUGFzdGVib2FyZFdlYkNvbnRlbnQmIGNvbnRlbnQpCiAgICAgaWYgKGNvbnRlbnQu
ZGF0YUluUlRGRm9ybWF0KQogICAgICAgICBbcmVwcmVzZW50YXRpb25zIHNldFZhbHVlOmNvbnRl
bnQuZGF0YUluUlRGRm9ybWF0LT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JLZXk6KE5TU3RyaW5n
ICopa1VUVHlwZVJURl07CiAKKyAgICByZXR1cm4gcmVwcmVzZW50YXRpb25zOworfQorCit2b2lk
IFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGVPYmplY3RSZXByZXNlbnRhdGlvbnMoY29uc3QgUGFz
dGVib2FyZFdlYkNvbnRlbnQmIGNvbnRlbnQpCit7CisgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFy
cmF5PiBvYmplY3RSZXByZXNlbnRhdGlvbnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxs
b2NdIGluaXRdKTsKKyAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiBhZGRpdGlvbmFsRGF0YSA9
IHJpY2hUZXh0UmVwcmVzZW50YXRpb25zRm9yUGFzdGVib2FyZFdlYkNvbnRlbnQoY29udGVudCk7
CisKKyAgICBpZiAoY29udGVudC5kYXRhSW5BdHRyaWJ1dGVkU3RyaW5nRm9ybWF0KSB7CisgICAg
ICAgIE5TQXR0cmlidXRlZFN0cmluZyAqYXR0cmlidXRlZFN0cmluZyA9IFtOU0tleWVkVW5hcmNo
aXZlciB1bmFyY2hpdmVPYmplY3RXaXRoRGF0YTpjb250ZW50LmRhdGFJbkF0dHJpYnV0ZWRTdHJp
bmdGb3JtYXQtPmNyZWF0ZU5TRGF0YSgpLmdldCgpXTsKKyAgICAgICAgaWYgKGF0dHJpYnV0ZWRT
dHJpbmcpCisgICAgICAgICAgICBbb2JqZWN0UmVwcmVzZW50YXRpb25zIGFkZE9iamVjdDphdHRy
aWJ1dGVkU3RyaW5nXTsKKyAgICB9CisKKyAgICBpZiAoIWNvbnRlbnQuZGF0YUluU3RyaW5nRm9y
bWF0LmlzRW1wdHkoKSkKKyAgICAgICAgW29iamVjdFJlcHJlc2VudGF0aW9ucyBhZGRPYmplY3Q6
KE5TU3RyaW5nICopY29udGVudC5kYXRhSW5TdHJpbmdGb3JtYXRdOworCisgICAgW21fcGFzdGVi
b2FyZCBzZXRJdGVtc0Zyb21PYmplY3RSZXByZXNlbnRhdGlvbnM6QFtbV2ViUGFzdGVib2FyZEl0
ZW1EYXRhIGl0ZW1XaXRoUmVwcmVzZW50aW5nT2JqZWN0czpvYmplY3RSZXByZXNlbnRhdGlvbnMu
Z2V0KCkgYWRkaXRpb25hbERhdGE6YWRkaXRpb25hbERhdGEuZ2V0KCldXV07Cit9CisKK3ZvaWQg
UGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkV2ViQ29udGVudCYgY29u
dGVudCkKK3sKKyAgICBpZiAoW21fcGFzdGVib2FyZCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKHNldEl0ZW1zRnJvbU9iamVjdFJlcHJlc2VudGF0aW9uczopXSkgeworICAgICAgICB3cml0
ZU9iamVjdFJlcHJlc2VudGF0aW9ucyhjb250ZW50KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIFJldGFpblB0cjxOU011dGFibGVEaWN0aW9uYXJ5PiByZXByZXNlbnRhdGlvbnMgPSBh
ZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOworICAgIFtyZXByZXNl
bnRhdGlvbnMgYWRkRW50cmllc0Zyb21EaWN0aW9uYXJ5OnJpY2hUZXh0UmVwcmVzZW50YXRpb25z
Rm9yUGFzdGVib2FyZFdlYkNvbnRlbnQoY29udGVudCkuYXV0b3JlbGVhc2UoKV07CiAgICAgW3Jl
cHJlc2VudGF0aW9ucyBzZXRWYWx1ZTpjb250ZW50LmRhdGFJblN0cmluZ0Zvcm1hdCBmb3JLZXk6
KE5TU3RyaW5nICopa1VUVHlwZVRleHRdOwotICAgIFtyZXByZXNlbnRhdGlvbnMgc2V0VmFsdWU6
WyhOU1N0cmluZyAqKWNvbnRlbnQuZGF0YUluU3RyaW5nRm9ybWF0IGRhdGFVc2luZ0VuY29kaW5n
Ok5TVVRGOFN0cmluZ0VuY29kaW5nXSBmb3JLZXk6KE5TU3RyaW5nICopa1VUVHlwZVVURjhQbGFp
blRleHRdOworCiAgICAgW21fcGFzdGVib2FyZCBzZXRJdGVtczpAW3JlcHJlc2VudGF0aW9ucy5n
ZXQoKV1dOwogfQogCit2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGVPYmplY3RSZXByZXNl
bnRhdGlvbnMoY29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0ZWJvYXJkSW1hZ2UpCit7CisgICAg
UmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiBvYmplY3RSZXByZXNlbnRhdGlvbnMgPSBhZG9wdE5T
KFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICBSZXRhaW5QdHI8TlNNdXRhYmxl
RGljdGlvbmFyeT4gYWRkaXRpb25hbERhdGEgPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFy
eSBhbGxvY10gaW5pdF0pOworCisgICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2UgPSBwYXN0ZWJvYXJk
SW1hZ2UuaW1hZ2UtPm5hdGl2ZUltYWdlKCkpIHsKKyAgICAgICAgVUlJbWFnZSAqdWlJbWFnZSA9
IChVSUltYWdlICopW2dldFVJSW1hZ2VDbGFzcygpIGltYWdlV2l0aENHSW1hZ2U6bmF0aXZlSW1h
Z2UuZ2V0KCldOworICAgICAgICBpZiAodWlJbWFnZSkKKyAgICAgICAgICAgIFtvYmplY3RSZXBy
ZXNlbnRhdGlvbnMgYWRkT2JqZWN0OnVpSW1hZ2VdOworICAgIH0KKworICAgIGlmICghcGFzdGVi
b2FyZEltYWdlLnVybC51cmwuaXNFbXB0eSgpKSB7CisgICAgICAgIE5TVVJMICpuc1VSTCA9IHBh
c3RlYm9hcmRJbWFnZS51cmwudXJsOworICAgICAgICBpZiAobnNVUkwpCisgICAgICAgICAgICBb
b2JqZWN0UmVwcmVzZW50YXRpb25zIGFkZE9iamVjdDpuc1VSTF07CisgICAgfQorCisgICAgaWYg
KCFwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlwZS5pc051bGwoKSkKKyAgICAgICAgW2Fk
ZGl0aW9uYWxEYXRhIHNldE9iamVjdDpwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5jcmVh
dGVOU0RhdGEoKS5nZXQoKSBmb3JLZXk6cGFzdGVib2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGVd
OworCisgICAgW21fcGFzdGVib2FyZCBzZXRJdGVtc0Zyb21PYmplY3RSZXByZXNlbnRhdGlvbnM6
QFtbV2ViUGFzdGVib2FyZEl0ZW1EYXRhIGl0ZW1XaXRoUmVwcmVzZW50aW5nT2JqZWN0czpvYmpl
Y3RSZXByZXNlbnRhdGlvbnMuZ2V0KCkgYWRkaXRpb25hbERhdGE6YWRkaXRpb25hbERhdGEuZ2V0
KCldXV07Cit9CisKIHZvaWQgUGxhdGZvcm1QYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJv
YXJkSW1hZ2UmIHBhc3RlYm9hcmRJbWFnZSkKIHsKKyAgICBpZiAoW21fcGFzdGVib2FyZCByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldEl0ZW1zRnJvbU9iamVjdFJlcHJlc2VudGF0aW9u
czopXSkgeworICAgICAgICB3cml0ZU9iamVjdFJlcHJlc2VudGF0aW9ucyhwYXN0ZWJvYXJkSW1h
Z2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZURp
Y3Rpb25hcnk+IHJlcHJlc2VudGF0aW9ucyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5
IGFsbG9jXSBpbml0XSk7CiAgICAgaWYgKCFwYXN0ZWJvYXJkSW1hZ2UucmVzb3VyY2VNSU1FVHlw
ZS5pc051bGwoKSkgewogICAgICAgICBbcmVwcmVzZW50YXRpb25zIHNldE9iamVjdDpwYXN0ZWJv
YXJkSW1hZ2UucmVzb3VyY2VEYXRhLT5jcmVhdGVOU0RhdGEoKS5nZXQoKSBmb3JLZXk6cGFzdGVi
b2FyZEltYWdlLnJlc291cmNlTUlNRVR5cGVdOwpAQCAtMTgyLDggKzI0MSwzMyBAQCB2b2lkIFBs
YXRmb3JtUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZEltYWdlJiBwYXN0ZWJvYXJk
SW1hZ2UpCiAgICAgW21fcGFzdGVib2FyZCBzZXRJdGVtczpAW3JlcHJlc2VudGF0aW9ucy5nZXQo
KV1dOwogfQogCit2b2lkIFBsYXRmb3JtUGFzdGVib2FyZDo6d3JpdGVPYmplY3RSZXByZXNlbnRh
dGlvbnMoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0KQor
eworICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gb2JqZWN0UmVwcmVzZW50YXRpb25zID0g
YWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CisgICAgUmV0YWluUHRyPE5T
TXV0YWJsZURpY3Rpb25hcnk+IGFkZGl0aW9uYWxEYXRhID0gYWRvcHROUyhbW05TTXV0YWJsZURp
Y3Rpb25hcnkgYWxsb2NdIGluaXRdKTsKKworICAgIE5TU3RyaW5nICpwYXN0ZWJvYXJkVHlwZUFz
TlNTdHJpbmcgPSBwYXN0ZWJvYXJkVHlwZTsKKyAgICBOU1N0cmluZyAqdGV4dEFzTlNTdHJpbmcg
PSB0ZXh0OworICAgIGlmICh0ZXh0QXNOU1N0cmluZyAmJiBwYXN0ZWJvYXJkVHlwZUFzTlNTdHJp
bmcubGVuZ3RoKSB7CisgICAgICAgIGlmIChVVFR5cGVDb25mb3Jtc1RvKChfX2JyaWRnZSBDRlN0
cmluZ1JlZilwYXN0ZWJvYXJkVHlwZUFzTlNTdHJpbmcsIGtVVFR5cGVVUkwpKQorICAgICAgICAg
ICAgW29iamVjdFJlcHJlc2VudGF0aW9ucyBhZGRPYmplY3Q6W1tbTlNVUkwgYWxsb2NdIGluaXRX
aXRoU3RyaW5nOnRleHRBc05TU3RyaW5nXSBhdXRvcmVsZWFzZV1dOworCisgICAgICAgIGlmIChV
VFR5cGVDb25mb3Jtc1RvKChfX2JyaWRnZSBDRlN0cmluZ1JlZilwYXN0ZWJvYXJkVHlwZUFzTlNT
dHJpbmcsIGtVVFR5cGVUZXh0KSkKKyAgICAgICAgICAgIFtvYmplY3RSZXByZXNlbnRhdGlvbnMg
YWRkT2JqZWN0OnRleHRBc05TU3RyaW5nXTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgW2Fk
ZGl0aW9uYWxEYXRhIHNldE9iamVjdDp0ZXh0QXNOU1N0cmluZyBmb3JLZXk6cGFzdGVib2FyZFR5
cGVBc05TU3RyaW5nXTsKKyAgICB9CisKKyAgICBbbV9wYXN0ZWJvYXJkIHNldEl0ZW1zRnJvbU9i
amVjdFJlcHJlc2VudGF0aW9uczpAW1tXZWJQYXN0ZWJvYXJkSXRlbURhdGEgaXRlbVdpdGhSZXBy
ZXNlbnRpbmdPYmplY3RzOm9iamVjdFJlcHJlc2VudGF0aW9ucy5nZXQoKSBhZGRpdGlvbmFsRGF0
YTphZGRpdGlvbmFsRGF0YS5nZXQoKV1dXTsKK30KKwogdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6
OndyaXRlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dCkK
IHsKKyAgICBpZiAoW21fcGFzdGVib2FyZCByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNl
dEl0ZW1zRnJvbU9iamVjdFJlcHJlc2VudGF0aW9uczopXSkgeworICAgICAgICB3cml0ZU9iamVj
dFJlcHJlc2VudGF0aW9ucyhwYXN0ZWJvYXJkVHlwZSwgdGV4dCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKICAgICBSZXRhaW5QdHI8TlNEaWN0aW9uYXJ5PiByZXByZXNlbnRhdGlvbnMgPSBh
ZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdF0pOwogCiAgICAgaWYgKHBh
c3RlYm9hcmRUeXBlID09IFN0cmluZyhrVVRUeXBlVVJMKSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbQppbmRl
eCBhODlhYWVkY2ViM2RiNjc0ODY5MzNkZmM3NWFhYWNiNGRkYzdjZDIwLi45MjBmYWIwYmMzZDI5
YjkzNzRmZDlhMzUyOTU3MmRjYmNlMDI4NTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3MvV2ViSXRlbVByb3ZpZGVyUGFzdGVib2FyZC5tbQpAQCAtODAsNiAr
ODAsNyBAQCBzdGF0aWMgQk9PTCBpc0ltYWdlVHlwZShOU1N0cmluZyAqdHlwZSkKIAogQGltcGxl
bWVudGF0aW9uIFdlYkl0ZW1Qcm92aWRlclBhc3RlYm9hcmQgewogICAgIFJldGFpblB0cjxOU0Fy
cmF5PiBfaXRlbVByb3ZpZGVyczsKKyAgICBSZXRhaW5QdHI8TlNBcnJheT4gX2NhY2hlZFR5cGVJ
ZGVudGlmaWVyczsKIH0KIAogKyAoaW5zdGFuY2V0eXBlKXNoYXJlZEluc3RhbmNlCkBAIC0xMDQs
MTAgKzEwNSwyMiBAQCBzdGF0aWMgQk9PTCBpc0ltYWdlVHlwZShOU1N0cmluZyAqdHlwZSkKIAog
LSAoTlNBcnJheTxOU1N0cmluZyAqPiAqKXBhc3RlYm9hcmRUeXBlcwogeworICAgIGlmIChfY2Fj
aGVkVHlwZUlkZW50aWZpZXJzKQorICAgICAgICByZXR1cm4gX2NhY2hlZFR5cGVJZGVudGlmaWVy
cy5nZXQoKTsKKwogICAgIE5TTXV0YWJsZVNldDxOU1N0cmluZyAqPiAqYWxsVHlwZXMgPSBbTlNN
dXRhYmxlU2V0IHNldF07Ci0gICAgZm9yIChVSUl0ZW1Qcm92aWRlciAqcHJvdmlkZXIgaW4gX2l0
ZW1Qcm92aWRlcnMuZ2V0KCkpCi0gICAgICAgIFthbGxUeXBlcyBhZGRPYmplY3RzRnJvbUFycmF5
OnByb3ZpZGVyLnJlZ2lzdGVyZWRUeXBlSWRlbnRpZmllcnNdOwotICAgIHJldHVybiBhbGxUeXBl
cy5hbGxPYmplY3RzOworICAgIE5TTXV0YWJsZUFycmF5PE5TU3RyaW5nICo+ICphbGxUeXBlc0lu
T3JkZXIgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOworICAgIGZvciAoVUlJdGVtUHJvdmlkZXIg
KnByb3ZpZGVyIGluIF9pdGVtUHJvdmlkZXJzLmdldCgpKSB7CisgICAgICAgIGZvciAoTlNTdHJp
bmcgKnR5cGVJZGVudGlmaWVyIGluIHByb3ZpZGVyLnJlZ2lzdGVyZWRUeXBlSWRlbnRpZmllcnMp
IHsKKyAgICAgICAgICAgIGlmIChbYWxsVHlwZXMgY29udGFpbnNPYmplY3Q6dHlwZUlkZW50aWZp
ZXJdKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBbYWxsVHlwZXMg
YWRkT2JqZWN0OnR5cGVJZGVudGlmaWVyXTsKKyAgICAgICAgICAgIFthbGxUeXBlc0luT3JkZXIg
YWRkT2JqZWN0OnR5cGVJZGVudGlmaWVyXTsKKyAgICAgICAgfQorICAgIH0KKyAgICBfY2FjaGVk
VHlwZUlkZW50aWZpZXJzID0gYWxsVHlwZXNJbk9yZGVyOworICAgIHJldHVybiBfY2FjaGVkVHlw
ZUlkZW50aWZpZXJzLmdldCgpOwogfQogCiAtIChOU0FycmF5PFVJSXRlbVByb3ZpZGVyICo+ICop
aXRlbVByb3ZpZGVycwpAQCAtMTIzLDYgKzEzNiw3IEBAIHN0YXRpYyBCT09MIGlzSW1hZ2VUeXBl
KE5TU3RyaW5nICp0eXBlKQogCiAgICAgX2l0ZW1Qcm92aWRlcnMgPSBpdGVtUHJvdmlkZXJzOwog
ICAgIF9jaGFuZ2VDb3VudCsrOworICAgIF9jYWNoZWRUeXBlSWRlbnRpZmllcnMgPSBuaWw7CiB9
CiAKIC0gKE5TSW50ZWdlciludW1iZXJPZkl0ZW1zCkBAIC0xMzAsNDAgKzE0NCwzOCBAQCBzdGF0
aWMgQk9PTCBpc0ltYWdlVHlwZShOU1N0cmluZyAqdHlwZSkKICAgICByZXR1cm4gW19pdGVtUHJv
dmlkZXJzIGNvdW50XTsKIH0KIAotLSAodm9pZClzZXRJdGVtczooTlNBcnJheSAqKWl0ZW1zCist
ICh2b2lkKXNldEl0ZW1zRnJvbU9iamVjdFJlcHJlc2VudGF0aW9uczooTlNBcnJheTxXZWJQYXN0
ZWJvYXJkSXRlbURhdGEgKj4gKilpdGVtRGF0YQogewogICAgIE5TTXV0YWJsZUFycmF5ICpwcm92
aWRlcnMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOwotICAgIGZvciAoTlNEaWN0aW9uYXJ5ICpp
dGVtIGluIGl0ZW1zKSB7Ci0gICAgICAgIGlmICghaXRlbS5jb3VudCkKKyAgICBmb3IgKFdlYlBh
c3RlYm9hcmRJdGVtRGF0YSAqZGF0YSBpbiBpdGVtRGF0YSkgeworICAgICAgICBpZiAoIWRhdGEu
cmVwcmVzZW50aW5nT2JqZWN0cy5jb3VudCAmJiAhZGF0YS5hZGRpdGlvbmFsRGF0YS5jb3VudCkK
ICAgICAgICAgICAgIGNvbnRpbnVlOworCiAgICAgICAgIFJldGFpblB0cjxVSUl0ZW1Qcm92aWRl
cj4gaXRlbVByb3ZpZGVyID0gYWRvcHROUyhbW2dldFVJSXRlbVByb3ZpZGVyQ2xhc3MoKSBhbGxv
Y10gaW5pdF0pOwotICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlvbmFyeT4gaXRlbVJl
cHJlc2VudGF0aW9uc0NvcHkgPSBhZG9wdE5TKFtpdGVtIG11dGFibGVDb3B5XSk7Ci0gICAgICAg
IC8vIEZpcnN0LCBsZXQgdGhlIHBsYXRmb3JtIHdyaXRlIGFsbCB0aGUgZGVmYXVsdCBvYmplY3Qg
dHlwZXMgaXQgY2FuIHJlY29nbml6ZSwgc3VjaCBhcyBOU1N0cmluZyBhbmQgTlNVUkwuCi0gICAg
ICAgIGZvciAoTlNTdHJpbmcgKnR5cGVJZGVudGlmaWVyIGluIFtpdGVtUmVwcmVzZW50YXRpb25z
Q29weSBhbGxLZXlzXSkgewotICAgICAgICAgICAgaWQgcmVwcmVzZW50aW5nT2JqZWN0ID0gW2l0
ZW1SZXByZXNlbnRhdGlvbnNDb3B5IG9iamVjdEZvcktleTp0eXBlSWRlbnRpZmllcl07CisgICAg
ICAgIC8vIEZpcnN0LCByZWdpc3RlciBhbGwgcGxhdGZvcm0gb2JqZWN0cywgcHJpb3JpdGl6aW5n
IG9iamVjdHMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgYXJyYXkuCisgICAgICAgIGZvciAoaWQg
cmVwcmVzZW50aW5nT2JqZWN0IGluIGRhdGEucmVwcmVzZW50aW5nT2JqZWN0cykgewogICAgICAg
ICAgICAgaWYgKCFbcmVwcmVzZW50aW5nT2JqZWN0IGNvbmZvcm1zVG9Qcm90b2NvbDpAcHJvdG9j
b2woVUlJdGVtUHJvdmlkZXJXcml0aW5nKV0pCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAK
LSAgICAgICAgICAgIGlkIDxVSUl0ZW1Qcm92aWRlcldyaXRpbmc+IG9iamVjdFRvV3JpdGUgPSAo
aWQgPFVJSXRlbVByb3ZpZGVyV3JpdGluZz4pcmVwcmVzZW50aW5nT2JqZWN0OwotICAgICAgICAg
ICAgaWYgKCFbb2JqZWN0VG9Xcml0ZS53cml0YWJsZVR5cGVJZGVudGlmaWVyc0Zvckl0ZW1Qcm92
aWRlciBjb250YWluc09iamVjdDp0eXBlSWRlbnRpZmllcl0pCi0gICAgICAgICAgICAgICAgY29u
dGludWU7Ci0KLSAgICAgICAgICAgIFtpdGVtUmVwcmVzZW50YXRpb25zQ29weSByZW1vdmVPYmpl
Y3RGb3JLZXk6dHlwZUlkZW50aWZpZXJdOwotICAgICAgICAgICAgW2l0ZW1Qcm92aWRlciByZWdp
c3Rlck9iamVjdDpvYmplY3RUb1dyaXRlIG9wdGlvbnM6bmlsXTsKKyAgICAgICAgICAgIFtpdGVt
UHJvdmlkZXIgcmVnaXN0ZXJPYmplY3Q6KGlkIDxVSUl0ZW1Qcm92aWRlcldyaXRpbmc+KXJlcHJl
c2VudGluZ09iamVjdCBvcHRpb25zOm5pbF07CiAgICAgICAgIH0KIAotICAgICAgICAvLyBTZWNv
bmRseSwgV2ViS2l0IHVzZXMgc29tZSBjdXN0b20gdHlwZSByZXByZXNlbnRhdGlvbnMgYW5kL29y
IHR5cGUgaWRlbnRpZmllcnMsIHNvIHdlIG5lZWQgdG8gd3JpdGUgdGhlc2UgYXMgd2VsbC4KLSAg
ICAgICAgZm9yIChOU1N0cmluZyAqdHlwZUlkZW50aWZpZXIgaW4gaXRlbVJlcHJlc2VudGF0aW9u
c0NvcHkuZ2V0KCkpIHsKKyAgICAgICAgLy8gTmV4dCwgcmVnaXN0ZXIgb3RoZXIgY3VzdG9tIGRh
dGEgcmVwcmVzZW50YXRpb25zIGZvciB0eXBlIGlkZW50aWZpZXJzLgorICAgICAgICBOU0RpY3Rp
b25hcnkgPE5TU3RyaW5nICosIE5TRGF0YSAqPiAqYWRkaXRpb25hbERhdGEgPSBkYXRhLmFkZGl0
aW9uYWxEYXRhOworICAgICAgICBmb3IgKE5TU3RyaW5nICp0eXBlSWRlbnRpZmllciBpbiBhZGRp
dGlvbmFsRGF0YSkgeworICAgICAgICAgICAgaWYgKCFbYWRkaXRpb25hbERhdGFbdHlwZUlkZW50
aWZpZXJdIGlzS2luZE9mQ2xhc3M6W05TRGF0YSBjbGFzc11dKQorICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworCiAgICAgICAgICAgICBbaXRlbVByb3ZpZGVyIHJlZ2lzdGVyRGF0YVJlcHJlc2Vu
dGF0aW9uRm9yVHlwZUlkZW50aWZpZXI6dHlwZUlkZW50aWZpZXIgb3B0aW9uczpuaWwgbG9hZEhh
bmRsZXI6Xk5TUHJvZ3Jlc3MgKihVSUl0ZW1Qcm92aWRlckRhdGFMb2FkQ29tcGxldGlvbkJsb2Nr
IGNvbXBsZXRpb25CbG9jaykKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb21wbGV0
aW9uQmxvY2soW2l0ZW1SZXByZXNlbnRhdGlvbnNDb3B5IG9iamVjdEZvcktleTp0eXBlSWRlbnRp
Zmllcl0sIG5pbCk7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkJsb2NrKGFkZGl0aW9uYWxE
YXRhW3R5cGVJZGVudGlmaWVyXSwgbmlsKTsKICAgICAgICAgICAgICAgICByZXR1cm4gW05TUHJv
Z3Jlc3MgZGlzY3JldGVQcm9ncmVzc1dpdGhUb3RhbFVuaXRDb3VudDoxMDBdOwogICAgICAgICAg
ICAgfV07CiAgICAgICAgIH0KICAgICAgICAgW3Byb3ZpZGVycyBhZGRPYmplY3Q6aXRlbVByb3Zp
ZGVyLmdldCgpXTsKICAgICB9Ci0gICAgX2NoYW5nZUNvdW50Kys7Ci0gICAgX2l0ZW1Qcm92aWRl
cnMgPSBwcm92aWRlcnM7CisKKyAgICBzZWxmLml0ZW1Qcm92aWRlcnMgPSBwcm92aWRlcnM7CiB9
CiAKIC0gKE5TQXJyYXkgKilkYXRhRm9yUGFzdGVib2FyZFR5cGU6KE5TU3RyaW5nICopcGFzdGVi
b2FyZFR5cGUgaW5JdGVtU2V0OihOU0luZGV4U2V0ICopaXRlbVNldApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCBhMTkyOTU1NzkxMzcz
ZDU1OTU0ZjEwYmExNjRiMGJiNGExNTRkNTZiLi43MWU3ZTdkMzgxMjEwMWJhMmZkNDg2ZjhhMzdi
NDM4ZGM1M2UwMTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmNwcApAQCAtMTQwNCw2ICsxNDA0LDcgQEAgdm9pZCBBcmd1bWVudENvZGVyPFBh
c3RlYm9hcmRXZWJDb250ZW50Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFBhc3Rl
Ym8KICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgY29udGVudC5kYXRhSW5XZWJBcmNo
aXZlRm9ybWF0LmdldCgpKTsKICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2RlciwgY29udGVu
dC5kYXRhSW5SVEZERm9ybWF0LmdldCgpKTsKICAgICBlbmNvZGVTaGFyZWRCdWZmZXIoZW5jb2Rl
ciwgY29udGVudC5kYXRhSW5SVEZGb3JtYXQuZ2V0KCkpOworICAgIGVuY29kZVNoYXJlZEJ1ZmZl
cihlbmNvZGVyLCBjb250ZW50LmRhdGFJbkF0dHJpYnV0ZWRTdHJpbmdGb3JtYXQuZ2V0KCkpOwog
CiAgICAgZW5jb2RlciA8PCBjb250ZW50LmNsaWVudFR5cGVzOwogICAgIGVuY29kZXIgPDwgc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KGNvbnRlbnQuY2xpZW50RGF0YS5zaXplKCkpOwpAQCAtMTQyMyw2
ICsxNDI0LDggQEAgYm9vbCBBcmd1bWVudENvZGVyPFBhc3RlYm9hcmRXZWJDb250ZW50Pjo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIsIFBhc3RlYm9hcmRXZWIKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIGlmICghZGVjb2RlU2hhcmVkQnVmZmVyKGRlY29kZXIsIGNvbnRlbnQuZGF0YUluUlRG
Rm9ybWF0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2RlU2hhcmVkQnVm
ZmVyKGRlY29kZXIsIGNvbnRlbnQuZGF0YUluQXR0cmlidXRlZFN0cmluZ0Zvcm1hdCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvbnRlbnQuY2xpZW50
VHlwZXMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgdWludDY0X3QgY2xpZW50RGF0YVNp
emU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
CmluZGV4IGM4NDJkOGVkMzZkNWNhYTc0ZTk0N2QzMDRiMzg2NTUyZTQ1MzA3NWEuLjExODc3Y2Iz
MDZiMzllN2QxN2FkNzdhZjdlMmNlMzRiMTZjMGUxMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC01Mzc4LDYgKzUzNzgsOCBAQCBz
dGF0aWMgV2ViQ29yZTo6VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiB0b1VzZXJJbnRlcmZh
Y2VMYXlvdXREaXJlY3Rpb24oVUlTZQogICAgIFdlYktpdDo6Vmlld1NuYXBzaG90U3RvcmU6OnNp
bmdsZXRvbigpLnNldERpc2FibGVTbmFwc2hvdFZvbGF0aWxpdHlGb3JUZXN0aW5nKHRydWUpOwog
fQogCisjaWYgUExBVEZPUk0oSU9TKQorCiAtICh2b2lkKV9zaW11bGF0ZURhdGFJbnRlcmFjdGlv
bkVudGVyZWQ6KGlkKWluZm8KIHsKICNpZiBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikKQEAgLTU0
MzYsNiArNTQzOCw4IEBAIHN0YXRpYyBXZWJDb3JlOjpVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0
aW9uIHRvVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbihVSVNlCiAjZW5kaWYKIH0KIAorI2Vu
ZGlmIC8vIFBMQVRGT1JNKElPUykKKwogQGVuZAogCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxZDE4ZjY5MTYzNWMwYjc5NGI4OGEwN2ZiNGM3
MjM2MmY4NDI0YzgwLi4wNDFhNmNkNDY4MWIyZGI1ZjllNWM2OTNiZjliM2I3MjIyM2M1ODMxIDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjQgQEAKKzIwMTctMDQtMDMgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5j
b20+CisKKyAgICAgICAgRGF0YSBpbnRlcmFjdGlvbiBzaG91bGQgcmVnaXN0ZXIgdHlwZSBpZGVu
dGlmaWVycyBpbiBvcmRlciBvZiBwcmlvcml0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwNDI4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMDYz
MzI5Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAgIEF1Z21l
bnRzIGV4aXN0aW5nIHVuaXQgdGVzdHMgdG8gY2hlY2sgZm9yIHRoZSBleGlzdGVuY2UgYW5kIHBy
aW9yaXR5IG9mIHR5cGUgaWRlbnRpZmllcnMgaW4gdGhlIFVJSXRlbVByb3ZpZGVycworICAgICAg
ICBjcmVhdGVkIHVwb24gc3RhcnRpbmcgZGF0YSBpbnRlcmFjdGlvbi4gQWxzbyBmaXhlcyBhIHJh
Y2UgY29uZGl0aW9uIGluIG9uZSBvZiB0aGUgdW5pdCB0ZXN0cyBhbmQgYWRkcyBhIG5ldyB1bml0
CisgICAgICAgIHRlc3QgZm9yIGRhdGEgaW50ZXJhY3Rpb24gZnJvbSBhIHRleHRhcmVhIHRvIGFu
IGlucHV0LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRGF0YUludGVyYWN0
aW9uVGVzdHMubW06CisgICAgICAgIChjaGVja1R5cGVJZGVudGlmaWVyUHJlY2VkZXNPdGhlclR5
cGVJZGVudGlmaWVyKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvaW9zL0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvci5oOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvaW9zL0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvci5tbToKKyAgICAgICAg
KC1bRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIF9hZHZhbmNlUHJvZ3Jlc3NdKToKKyAgICAgICAg
KC1bRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIHNvdXJjZUl0ZW1Qcm92aWRlcnNdKToKKyAgICAg
ICAgKC1bRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIF93ZWJWaWV3OnNob3dDdXN0b21TaGVldEZv
ckVsZW1lbnQ6XSk6CisKIDIwMTctMDQtMDMgIENhcmxvcyBBbGJlcnRvIExvcGV6IFBlcmV6ICA8
Y2xvcGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bSkhCdWlsZF0gVXBkYXRlIG1lc2Eg
cmVwb3NpdG9yeSB1cmwgZm9yIHRhcmJhbGxzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL2lvcy9EYXRhSW50ZXJhY3Rpb25UZXN0cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvaW9zL0RhdGFJbnRlcmFjdGlvblRlc3RzLm1tCmluZGV4IDg4YjVjYWQwNTcwNDNk
Yzg5OWNjOWMzYmNhZmJhNGJkMWM5MDFhZjIuLjhmM2JjZDJjZDRlNDU4ZGRjYjU0ZTJmYTMzN2Mw
ODUyYTgzMzQ3MzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0Rh
dGFJbnRlcmFjdGlvblRlc3RzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9z
L0RhdGFJbnRlcmFjdGlvblRlc3RzLm1tCkBAIC02Miw2ICs2MiwxNCBAQCBzdGF0aWMgdm9pZCBj
aGVja1NlbGVjdGlvblJlY3RzV2l0aExvZ2dpbmcoTlNBcnJheSAqZXhwZWN0ZWQsIE5TQXJyYXkg
Km9ic2VydmVkKQogICAgIEVYUEVDVF9UUlVFKFtleHBlY3RlZCBpc0VxdWFsVG9BcnJheTpvYnNl
cnZlZF0pOwogfQogCitzdGF0aWMgdm9pZCBjaGVja1R5cGVJZGVudGlmaWVyUHJlY2VkZXNPdGhl
clR5cGVJZGVudGlmaWVyKERhdGFJbnRlcmFjdGlvblNpbXVsYXRvciAqc2ltdWxhdG9yLCBOU1N0
cmluZyAqZmlyc3RUeXBlLCBOU1N0cmluZyAqc2Vjb25kVHlwZSkKK3sKKyAgICBOU0FycmF5ICpy
ZWdpc3RlcmVkVHlwZXMgPSBbc2ltdWxhdG9yLnNvdXJjZUl0ZW1Qcm92aWRlcnMuZmlyc3RPYmpl
Y3QgcmVnaXN0ZXJlZFR5cGVJZGVudGlmaWVyc107CisgICAgRVhQRUNUX1RSVUUoW3JlZ2lzdGVy
ZWRUeXBlcyBjb250YWluc09iamVjdDpmaXJzdFR5cGVdKTsKKyAgICBFWFBFQ1RfVFJVRShbcmVn
aXN0ZXJlZFR5cGVzIGNvbnRhaW5zT2JqZWN0OnNlY29uZFR5cGVdKTsKKyAgICBFWFBFQ1RfVFJV
RShbcmVnaXN0ZXJlZFR5cGVzIGluZGV4T2ZPYmplY3Q6Zmlyc3RUeXBlXSA8IFtyZWdpc3RlcmVk
VHlwZXMgaW5kZXhPZk9iamVjdDpzZWNvbmRUeXBlXSk7Cit9CisKIG5hbWVzcGFjZSBUZXN0V2Vi
S2l0QVBJIHsKIAogVEVTVChEYXRhSW50ZXJhY3Rpb25UZXN0cywgSW1hZ2VUb0NvbnRlbnRFZGl0
YWJsZSkKQEAgLTc5LDYgKzg3LDcgQEAgVEVTVChEYXRhSW50ZXJhY3Rpb25UZXN0cywgSW1hZ2VU
b0NvbnRlbnRFZGl0YWJsZSkKICAgICBFWFBFQ1RfVFJVRShbb2JzZXJ2ZWRFdmVudE5hbWVzIGNv
bnRhaW5zT2JqZWN0OkRhdGFJbnRlcmFjdGlvbk92ZXJFdmVudE5hbWVdKTsKICAgICBFWFBFQ1Rf
VFJVRShbb2JzZXJ2ZWRFdmVudE5hbWVzIGNvbnRhaW5zT2JqZWN0OkRhdGFJbnRlcmFjdGlvblBl
cmZvcm1PcGVyYXRpb25FdmVudE5hbWVdKTsKICAgICBjaGVja1NlbGVjdGlvblJlY3RzV2l0aExv
Z2dpbmcoQFsgbWFrZUNHUmVjdFZhbHVlKDEsIDIwMSwgMjE1LCAxNzQpIF0sIFtkYXRhSW50ZXJh
Y3Rpb25TaW11bGF0b3IgZmluYWxTZWxlY3Rpb25SZWN0c10pOworICAgIGNoZWNrVHlwZUlkZW50
aWZpZXJQcmVjZWRlc090aGVyVHlwZUlkZW50aWZpZXIoZGF0YUludGVyYWN0aW9uU2ltdWxhdG9y
LmdldCgpLCAoTlNTdHJpbmcgKilrVVRUeXBlUE5HLCAoTlNTdHJpbmcgKilrVVRUeXBlRmlsZVVS
TCk7CiB9CiAKIFRFU1QoRGF0YUludGVyYWN0aW9uVGVzdHMsIEltYWdlVG9UZXh0YXJlYSkKQEAg
LTk5LDYgKzEwOCw3IEBAIFRFU1QoRGF0YUludGVyYWN0aW9uVGVzdHMsIEltYWdlVG9UZXh0YXJl
YSkKIAogICAgIE5TQXJyYXkgKmV4cGVjdGVkU2VsZWN0aW9uUmVjdHMgPSBbTlNBcnJheSBhcnJh
eVdpdGhPYmplY3RzOm1ha2VDR1JlY3RWYWx1ZSg2LCAyMDMsIDE4OCwgMTQpLCBtYWtlQ0dSZWN0
VmFsdWUoNiwgMjE3LCAxODgsIDE0KSwgbWFrZUNHUmVjdFZhbHVlKDYsIDIzMSwgNjYsIDE0KSwg
bmlsXTsKICAgICBjaGVja1NlbGVjdGlvblJlY3RzV2l0aExvZ2dpbmcoZXhwZWN0ZWRTZWxlY3Rp
b25SZWN0cywgW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBmaW5hbFNlbGVjdGlvblJlY3RzXSk7
CisgICAgY2hlY2tUeXBlSWRlbnRpZmllclByZWNlZGVzT3RoZXJUeXBlSWRlbnRpZmllcihkYXRh
SW50ZXJhY3Rpb25TaW11bGF0b3IuZ2V0KCksIChOU1N0cmluZyAqKWtVVFR5cGVQTkcsIChOU1N0
cmluZyAqKWtVVFR5cGVGaWxlVVJMKTsKIH0KIAogVEVTVChEYXRhSW50ZXJhY3Rpb25UZXN0cywg
Q29udGVudEVkaXRhYmxlVG9Db250ZW50RWRpdGFibGUpCkBAIC0xMTcsNiArMTI3LDcgQEAgVEVT
VChEYXRhSW50ZXJhY3Rpb25UZXN0cywgQ29udGVudEVkaXRhYmxlVG9Db250ZW50RWRpdGFibGUp
CiAgICAgRVhQRUNUX1RSVUUoW29ic2VydmVkRXZlbnROYW1lcyBjb250YWluc09iamVjdDpEYXRh
SW50ZXJhY3Rpb25PdmVyRXZlbnROYW1lXSk7CiAgICAgRVhQRUNUX1RSVUUoW29ic2VydmVkRXZl
bnROYW1lcyBjb250YWluc09iamVjdDpEYXRhSW50ZXJhY3Rpb25QZXJmb3JtT3BlcmF0aW9uRXZl
bnROYW1lXSk7CiAgICAgY2hlY2tTZWxlY3Rpb25SZWN0c1dpdGhMb2dnaW5nKEBbIG1ha2VDR1Jl
Y3RWYWx1ZSgxLCAyMDEsIDk2MSwgMjI3KSBdLCBbZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIGZp
bmFsU2VsZWN0aW9uUmVjdHNdKTsKKyAgICBjaGVja1R5cGVJZGVudGlmaWVyUHJlY2VkZXNPdGhl
clR5cGVJZGVudGlmaWVyKGRhdGFJbnRlcmFjdGlvblNpbXVsYXRvci5nZXQoKSwgKE5TU3RyaW5n
ICopa1VUVHlwZVJURkQsIChOU1N0cmluZyAqKWtVVFR5cGVVVEY4UGxhaW5UZXh0KTsKIH0KIAog
VEVTVChEYXRhSW50ZXJhY3Rpb25UZXN0cywgQ29udGVudEVkaXRhYmxlVG9UZXh0YXJlYSkKQEAg
LTEzNSw2ICsxNDYsMjAgQEAgVEVTVChEYXRhSW50ZXJhY3Rpb25UZXN0cywgQ29udGVudEVkaXRh
YmxlVG9UZXh0YXJlYSkKICAgICBFWFBFQ1RfVFJVRShbb2JzZXJ2ZWRFdmVudE5hbWVzIGNvbnRh
aW5zT2JqZWN0OkRhdGFJbnRlcmFjdGlvbk92ZXJFdmVudE5hbWVdKTsKICAgICBFWFBFQ1RfVFJV
RShbb2JzZXJ2ZWRFdmVudE5hbWVzIGNvbnRhaW5zT2JqZWN0OkRhdGFJbnRlcmFjdGlvblBlcmZv
cm1PcGVyYXRpb25FdmVudE5hbWVdKTsKICAgICBjaGVja1NlbGVjdGlvblJlY3RzV2l0aExvZ2dp
bmcoQFsgbWFrZUNHUmVjdFZhbHVlKDYsIDIwMywgOTkwLCAyMzIpIF0sIFtkYXRhSW50ZXJhY3Rp
b25TaW11bGF0b3IgZmluYWxTZWxlY3Rpb25SZWN0c10pOworICAgIGNoZWNrVHlwZUlkZW50aWZp
ZXJQcmVjZWRlc090aGVyVHlwZUlkZW50aWZpZXIoZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yLmdl
dCgpLCAoTlNTdHJpbmcgKilrVVRUeXBlUlRGRCwgKE5TU3RyaW5nICopa1VUVHlwZVVURjhQbGFp
blRleHQpOworfQorCitURVNUKERhdGFJbnRlcmFjdGlvblRlc3RzLCBUZXh0QXJlYVRvSW5wdXQp
Cit7CisgICAgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVz
dFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAw
KV0pOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAInRleHRh
cmVhLXRvLWlucHV0Il07CisKKyAgICBSZXRhaW5QdHI8RGF0YUludGVyYWN0aW9uU2ltdWxhdG9y
PiBkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgPSBhZG9wdE5TKFtbRGF0YUludGVyYWN0aW9uU2lt
dWxhdG9yIGFsbG9jXSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldy5nZXQoKV0pOworICAgIFtkYXRh
SW50ZXJhY3Rpb25TaW11bGF0b3IgcnVuRnJvbTpDR1BvaW50TWFrZSgxMDAsIDUwKSB0bzpDR1Bv
aW50TWFrZSgxMDAsIDMwMCldOworCisgICAgRVhQRUNUX0VRKFt3ZWJWaWV3IHN0cmluZ0J5RXZh
bHVhdGluZ0phdmFTY3JpcHQ6QCJzb3VyY2UudmFsdWUiXS5sZW5ndGgsIDBVTCk7CisgICAgRVhQ
RUNUX1dLX1NUUkVRKCJIZWxsbyB3b3JsZCIsIFt3ZWJWaWV3IGVkaXRvclZhbHVlXS5VVEY4U3Ry
aW5nKTsKKyAgICBjaGVja1NlbGVjdGlvblJlY3RzV2l0aExvZ2dpbmcoQFsgbWFrZUNHUmVjdFZh
bHVlKDEwMSwgMjQxLCA5OTAsIDIzMikgXSwgW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBmaW5h
bFNlbGVjdGlvblJlY3RzXSk7CiB9CiAKIFRFU1QoRGF0YUludGVyYWN0aW9uVGVzdHMsIExpbmtU
b0lucHV0KQpAQCAtMTUyLDYgKzE3Nyw3IEBAIFRFU1QoRGF0YUludGVyYWN0aW9uVGVzdHMsIExp
bmtUb0lucHV0KQogICAgIEVYUEVDVF9UUlVFKFtvYnNlcnZlZEV2ZW50TmFtZXMgY29udGFpbnNP
YmplY3Q6RGF0YUludGVyYWN0aW9uT3ZlckV2ZW50TmFtZV0pOwogICAgIEVYUEVDVF9UUlVFKFtv
YnNlcnZlZEV2ZW50TmFtZXMgY29udGFpbnNPYmplY3Q6RGF0YUludGVyYWN0aW9uUGVyZm9ybU9w
ZXJhdGlvbkV2ZW50TmFtZV0pOwogICAgIGNoZWNrU2VsZWN0aW9uUmVjdHNXaXRoTG9nZ2luZyhA
WyBtYWtlQ0dSZWN0VmFsdWUoMTAxLCAyNzMsIDIwNTcsIDIzMikgXSwgW2RhdGFJbnRlcmFjdGlv
blNpbXVsYXRvciBmaW5hbFNlbGVjdGlvblJlY3RzXSk7CisgICAgY2hlY2tUeXBlSWRlbnRpZmll
clByZWNlZGVzT3RoZXJUeXBlSWRlbnRpZmllcihkYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IuZ2V0
KCksIChOU1N0cmluZyAqKWtVVFR5cGVVUkwsIChOU1N0cmluZyAqKWtVVFR5cGVVVEY4UGxhaW5U
ZXh0KTsKIH0KIAogVEVTVChEYXRhSW50ZXJhY3Rpb25UZXN0cywgQmFja2dyb3VuZEltYWdlTGlu
a1RvSW5wdXQpCkBAIC0xNjksNiArMTk1LDcgQEAgVEVTVChEYXRhSW50ZXJhY3Rpb25UZXN0cywg
QmFja2dyb3VuZEltYWdlTGlua1RvSW5wdXQpCiAgICAgRVhQRUNUX1RSVUUoW29ic2VydmVkRXZl
bnROYW1lcyBjb250YWluc09iamVjdDpEYXRhSW50ZXJhY3Rpb25PdmVyRXZlbnROYW1lXSk7CiAg
ICAgRVhQRUNUX1RSVUUoW29ic2VydmVkRXZlbnROYW1lcyBjb250YWluc09iamVjdDpEYXRhSW50
ZXJhY3Rpb25QZXJmb3JtT3BlcmF0aW9uRXZlbnROYW1lXSk7CiAgICAgY2hlY2tTZWxlY3Rpb25S
ZWN0c1dpdGhMb2dnaW5nKEBbIG1ha2VDR1JlY3RWYWx1ZSgxMDEsIDI0MSwgMjA1NywgMjMyKSBd
LCBbZGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIGZpbmFsU2VsZWN0aW9uUmVjdHNdKTsKKyAgICBj
aGVja1R5cGVJZGVudGlmaWVyUHJlY2VkZXNPdGhlclR5cGVJZGVudGlmaWVyKGRhdGFJbnRlcmFj
dGlvblNpbXVsYXRvci5nZXQoKSwgKE5TU3RyaW5nICopa1VUVHlwZVVSTCwgKE5TU3RyaW5nICop
a1VUVHlwZVVURjhQbGFpblRleHQpOwogfQogCiBURVNUKERhdGFJbnRlcmFjdGlvblRlc3RzLCBD
YW5QcmV2ZW50U3RhcnQpCkBAIC0yOTgsNiArMzI1LDcgQEAgVEVTVChEYXRhSW50ZXJhY3Rpb25U
ZXN0cywgTGFyZ2VJbWFnZVRvVGFyZ2V0RGl2KQogICAgIFJldGFpblB0cjxEYXRhSW50ZXJhY3Rp
b25TaW11bGF0b3I+IGRhdGFJbnRlcmFjdGlvblNpbXVsYXRvciA9IGFkb3B0TlMoW1tEYXRhSW50
ZXJhY3Rpb25TaW11bGF0b3IgYWxsb2NdIGluaXRXaXRoV2ViVmlldzp3ZWJWaWV3LmdldCgpXSk7
CiAgICAgW2RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBydW5Gcm9tOkNHUG9pbnRNYWtlKDIwMCwg
NDAwKSB0bzpDR1BvaW50TWFrZSgyMDAsIDE1MCldOwogICAgIEVYUEVDVF9XS19TVFJFUSgiUEFT
UyIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ0YXJnZXQudGV4dENv
bnRlbnQiXS5VVEY4U3RyaW5nKTsKKyAgICBjaGVja1R5cGVJZGVudGlmaWVyUHJlY2VkZXNPdGhl
clR5cGVJZGVudGlmaWVyKGRhdGFJbnRlcmFjdGlvblNpbXVsYXRvci5nZXQoKSwgKE5TU3RyaW5n
ICopa1VUVHlwZVBORywgKE5TU3RyaW5nICopa1VUVHlwZUZpbGVVUkwpOwogfQogCiBURVNUKERh
dGFJbnRlcmFjdGlvblRlc3RzLCBMaW5rV2l0aEVtcHR5SFJFRikKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvaW9zL0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvci5oIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9pb3MvRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yLmgKaW5kZXggZmExMTBhNmRm
N2U4YjI3MTM5ZGVjNDlkNjFiMGQ0YmM1MjQ2MjdjYS4uMzM2YmRmZDg5MTU1NmMzMTE3Njg4MzY1
NzJiYzA1NWI2ZWMxN2ZlZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvRGF0
YUludGVyYWN0aW9uU2ltdWxhdG9yLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvRGF0
YUludGVyYWN0aW9uU2ltdWxhdG9yLmgKQEAgLTU1LDYgKzU1LDcgQEAgdHlwZWRlZiBOU19FTlVN
KE5TSW50ZWdlciwgRGF0YUludGVyYWN0aW9uUGhhc2UpIHsKICAgICBSZXRhaW5QdHI8TW9ja0Rh
dGFPcGVyYXRpb25TZXNzaW9uPiBfZGF0YU9wZXJhdGlvblNlc3Npb247CiAgICAgUmV0YWluUHRy
PE5TTXV0YWJsZUFycmF5PiBfb2JzZXJ2ZWRFdmVudE5hbWVzOwogICAgIFJldGFpblB0cjxVSUl0
ZW1Qcm92aWRlcj4gX2V4dGVybmFsSXRlbVByb3ZpZGVyOworICAgIFJldGFpblB0cjxOU0FycmF5
ICo+IF9zb3VyY2VJdGVtUHJvdmlkZXJzOwogICAgIFJldGFpblB0cjxOU0FycmF5ICo+IF9maW5h
bFNlbGVjdGlvblJlY3RzOwogICAgIENHUG9pbnQgX3N0YXJ0TG9jYXRpb247CiAgICAgQ0dQb2lu
dCBfZW5kTG9jYXRpb247CkBAIC03MSw2ICs3Miw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVn
ZXIsIERhdGFJbnRlcmFjdGlvblBoYXNlKSB7CiBAcHJvcGVydHkgKG5vbmF0b21pYykgQmxvY2tQ
dHI8Qk9PTChfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbyAqKT4gc2hvd0N1c3RvbUFjdGlvblNoZWV0
QmxvY2s7CiBAcHJvcGVydHkgKG5vbmF0b21pYykgQmxvY2tQdHI8TlNBcnJheSAqKE5TQXJyYXkg
Kik+IGNvbnZlcnRJdGVtUHJvdmlkZXJzQmxvY2s7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc3Ry
b25nKSBVSUl0ZW1Qcm92aWRlciAqZXh0ZXJuYWxJdGVtUHJvdmlkZXI7CitAcHJvcGVydHkgKG5v
bmF0b21pYywgcmVhZG9ubHkpIE5TQXJyYXkgKnNvdXJjZUl0ZW1Qcm92aWRlcnM7CiBAcHJvcGVy
dHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TQXJyYXkgKm9ic2VydmVkRXZlbnROYW1lczsKIEBw
cm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNBcnJheSAqZmluYWxTZWxlY3Rpb25SZWN0
czsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgRGF0YUludGVyYWN0aW9uUGhhc2Ug
cGhhc2U7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9EYXRhSW50ZXJhY3Rp
b25TaW11bGF0b3IubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9EYXRhSW50ZXJhY3Rpb25T
aW11bGF0b3IubW0KaW5kZXggMTNmNGEwYmZhODVmYThkNjYwNTJkYmY4YzE1ZTNhN2ZlMGQxNGUz
NS4uYWUxNmM5ZDg4NDY0NjViZDZhNTNhMDQ4OTAxMjg2MGE0MDcwYmZiOCAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9pb3MvRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yLm1tCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvci5tbQpAQCAt
MjAyLDEwICsyMDIsMTQgQEAgc3RhdGljIE5TQXJyYXkgKmRhdGFJbnRlcmFjdGlvbkV2ZW50TmFt
ZXMoKQogCiAgICAgICAgIF9kYXRhT3BlcmF0aW9uU2Vzc2lvbiA9IGFkb3B0TlMoW1tNb2NrRGF0
YU9wZXJhdGlvblNlc3Npb24gYWxsb2NdIGluaXRXaXRoUHJvdmlkZXI6aXRlbVByb3ZpZGVycy5m
aXJzdE9iamVjdCBsb2NhdGlvbjpzZWxmLl9jdXJyZW50TG9jYXRpb24gd2luZG93Oltfd2ViVmll
dyB3aW5kb3ddXSk7CiAgICAgICAgIFtfZGF0YUludGVyYWN0aW9uU2Vzc2lvbiBzZXRJdGVtczpp
dGVtc107Ci0gICAgICAgIGlmICghc2VsZi5zaG93Q3VzdG9tQWN0aW9uU2hlZXRCbG9jaykgewot
ICAgICAgICAgICAgW193ZWJWaWV3IF9zaW11bGF0ZVdpbGxCZWdpbkRhdGFJbnRlcmFjdGlvbldp
dGhTZXNzaW9uOl9kYXRhSW50ZXJhY3Rpb25TZXNzaW9uLmdldCgpXTsKLSAgICAgICAgICAgIF9w
aGFzZSA9IERhdGFJbnRlcmFjdGlvbkJlZ2FuOworICAgICAgICBfc291cmNlSXRlbVByb3ZpZGVy
cyA9IGl0ZW1Qcm92aWRlcnM7CisgICAgICAgIGlmIChzZWxmLnNob3dDdXN0b21BY3Rpb25TaGVl
dEJsb2NrKSB7CisgICAgICAgICAgICAvLyBEZWZlciBwcm9ncmVzcyB1bnRpbCB0aGUgY3VzdG9t
IGFjdGlvbiBzaGVldCBpcyBkaXNtaXNzZWQuCisgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KKworICAgICAgICBbX3dlYlZpZXcgX3NpbXVsYXRlV2lsbEJlZ2luRGF0YUludGVyYWN0aW9u
V2l0aFNlc3Npb246X2RhdGFJbnRlcmFjdGlvblNlc3Npb24uZ2V0KCldOworICAgICAgICBfcGhh
c2UgPSBEYXRhSW50ZXJhY3Rpb25CZWdhbjsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNh
c2UgRGF0YUludGVyYWN0aW9uQmVnYW46CkBAIC0yMzUsNiArMjM5LDExIEBAIHN0YXRpYyBOU0Fy
cmF5ICpkYXRhSW50ZXJhY3Rpb25FdmVudE5hbWVzKCkKICAgICBbc2VsZiBwZXJmb3JtU2VsZWN0
b3I6QHNlbGVjdG9yKF9hZHZhbmNlUHJvZ3Jlc3MpIHdpdGhPYmplY3Q6bmlsIGFmdGVyRGVsYXk6
cHJvZ3Jlc3NUaW1lU3RlcF07CiB9CiAKKy0gKE5TQXJyYXkgKilzb3VyY2VJdGVtUHJvdmlkZXJz
Cit7CisgICAgcmV0dXJuIF9zb3VyY2VJdGVtUHJvdmlkZXJzLmdldCgpOworfQorCiAtIChVSUl0
ZW1Qcm92aWRlciAqKWV4dGVybmFsSXRlbVByb3ZpZGVyCiB7CiAgICAgcmV0dXJuIF9leHRlcm5h
bEl0ZW1Qcm92aWRlci5nZXQoKTsKQEAgLTI3NCw2ICsyODMsNyBAQCBzdGF0aWMgTlNBcnJheSAq
ZGF0YUludGVyYWN0aW9uRXZlbnROYW1lcygpCiAgICAgICAgIERhdGFJbnRlcmFjdGlvblNpbXVs
YXRvciAqd2Vha1NlbGYgPSBzdHJvbmdTZWxmLmdldCgpOwogICAgICAgICBbd2Vha1NlbGYtPl93
ZWJWaWV3IF9zaW11bGF0ZVdpbGxCZWdpbkRhdGFJbnRlcmFjdGlvbldpdGhTZXNzaW9uOndlYWtT
ZWxmLT5fZGF0YUludGVyYWN0aW9uU2Vzc2lvbi5nZXQoKV07CiAgICAgICAgIHdlYWtTZWxmLT5f
cGhhc2UgPSBEYXRhSW50ZXJhY3Rpb25CZWdhbjsKKyAgICAgICAgW3dlYWtTZWxmIF9zY2hlZHVs
ZUFkdmFuY2VQcm9ncmVzc107CiAgICAgfSk7CiAKICAgICByZXR1cm4gc2VsZi5zaG93Q3VzdG9t
QWN0aW9uU2hlZXRCbG9jayhlbGVtZW50KTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>