<?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>202018</bug_id>
          
          <creation_ts>2019-09-19 19:04:04 -0700</creation_ts>
          <short_desc>[Apple Pay] Clean up handling of summary items and payment method updates</short_desc>
          <delta_ts>2019-09-20 23:37:40 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andy Estes">aestes</reporter>
          <assigned_to name="Andy Estes">aestes</assigned_to>
          <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1572586</commentid>
    <comment_count>0</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2019-09-19 19:04:04 -0700</bug_when>
    <thetext>[Apple Pay] Clean up handling of summary items and payment method updates</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572592</commentid>
    <comment_count>1</comment_count>
      <attachid>379188</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2019-09-19 19:22:06 -0700</bug_when>
    <thetext>Created attachment 379188
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572593</commentid>
    <comment_count>2</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2019-09-19 19:22:08 -0700</bug_when>
    <thetext>&lt;rdar://problem/55470632&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572819</commentid>
    <comment_count>3</comment_count>
      <attachid>379257</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2019-09-20 12:45:24 -0700</bug_when>
    <thetext>Created attachment 379257
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572827</commentid>
    <comment_count>4</comment_count>
      <attachid>379261</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2019-09-20 13:09:41 -0700</bug_when>
    <thetext>Created attachment 379261
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572864</commentid>
    <comment_count>5</comment_count>
      <attachid>379266</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2019-09-20 13:41:27 -0700</bug_when>
    <thetext>Created attachment 379266
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573044</commentid>
    <comment_count>6</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2019-09-20 23:37:40 -0700</bug_when>
    <thetext>Committed r250179: &lt;https://trac.webkit.org/changeset/250179&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379188</attachid>
            <date>2019-09-19 19:22:06 -0700</date>
            <delta_ts>2019-09-20 12:45:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202018-20190919192205.patch</filename>
            <type>text/plain</type>
            <size>51692</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwMTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGFlMjU4YWNlMTc5Njhh
N2I4YjIzOWIxYTgyODY4ZTY1ZWYxZDlhNy4uZjU3ZmQwYjVhOTFlNWEwOGQwYjkyMWE3ZGFlNDQy
NjdlZWY4MjI2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE5LTA5LTE5ICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQXBwbGUgUGF5XSBDbGVhbiB1
cCBoYW5kbGluZyBvZiBzdW1tYXJ5IGl0ZW1zIGFuZCBwYXltZW50IG1ldGhvZCB1cGRhdGVzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDIwMTgKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU1NDcwNjMyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcGxhY2VkIHRoZSBQYXltZW50TWV0aG9kVXBkYXRl
IHN0cnVjdCB3aXRoIGEgY2xhc3MgdGhhdCBrbm93cyBob3cgdG8gY29udmVydCBmcm9tCisgICAg
ICAgIEFwcGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZSBzdHJ1Y3RzIHRvIFBLUGF5bWVudFJlcXVl
c3RQYXltZW50TWV0aG9kVXBkYXRlIGluc3RhbmNlcy4KKworICAgICAgICBNb3ZlZCBzb21lIHNj
YXR0ZXJlZC1hcm91bmQgZnJlZSBmdW5jdGlvbnMgZm9yIGNvbnZlcnRpbmcgcGF5bWVudCBzdW1t
YXJ5IGl0ZW1zIGludG8KKyAgICAgICAgUGF5bWVudFN1bW1hcnlJdGVtc3suaCxDb2NvYS5tbX0u
CisKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0
ZS5oOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmZpbmlzaENvbnZlcnRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Y29u
dmVydEFuZFZhbGlkYXRlVG90YWwpOgorICAgICAgICAoV2ViQ29yZTo6Y29udmVydEFuZFZhbGlk
YXRlKToKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvblBheW1lbnRS
ZXF1ZXN0Lmg6CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3Iu
aDoKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvckNsaWVudC5o
OgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudEhlYWRlcnMuaDoKKyAgICAgICAg
KiBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRNZXRob2RVcGRhdGUuaDogQWRkZWQuCisgICAgICAg
ICogTW9kdWxlcy9hcHBsZXBheS9QYXltZW50U3VtbWFyeUl0ZW1zLmg6IEFkZGVkLgorICAgICAg
ICAqIE1vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1ldGhvZFVwZGF0ZUNvY29hLm1tOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBheW1lbnRNZXRob2RVcGRhdGU6OlBheW1lbnRNZXRo
b2RVcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudE1ldGhvZFVwZGF0ZTo6dG90YWxB
bmRMaW5lSXRlbXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudE1ldGhvZFVwZGF0
ZTo6cGxhdGZvcm1VcGRhdGUgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvY29j
b2EvUGF5bWVudFN1bW1hcnlJdGVtc0NvY29hLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OnRvRGVjaW1hbE51bWJlcik6CisgICAgICAgIChXZWJDb3JlOjp0b1BLUGF5bWVudFN1bW1hcnlJ
dGVtVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjp0b1BLUGF5bWVudFN1bW1hcnlJdGVtKToKKyAg
ICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtU3VtbWFyeUl0ZW1zKToKKyAgICAgICAgKiBNb2R1bGVz
L2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbGVQYXlQYXltZW50SGFuZGxlcjo6cGF5bWVudE1ldGhvZFVwZGF0
ZWQpOgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHRlc3RpbmcvTW9ja1BheW1lbnRDb29y
ZGluYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUGF5bWVudENvb3JkaW5hdG9yOjpj
b21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24pOgorCiAyMDE5LTA5LTE5ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgV29ya2VyR2xvYmFsU2NvcGUgZG9lcyBu
b3QgbmVlZCBhIFNlc3Npb25JRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBhMzUzNjJiNjgwOTY1YjRhNzYyOWVhYzdh
NjkxOGU4YWU5YjEzOTZjLi5jNWJhNGZlY2Q0YjkzZWVjNWY3NTRjOTU5NWFhZmM5YzMzZjQzMGE0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDE5LTA5LTE5ICBBbmR5IEVzdGVzICA8YWVz
dGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQXBwbGUgUGF5XSBDbGVhbiB1cCBoYW5kbGluZyBv
ZiBzdW1tYXJ5IGl0ZW1zIGFuZCBwYXltZW50IG1ldGhvZCB1cGRhdGVzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDIwMTgKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzU1NDcwNjMyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE5vdyB0aGF0IFBheW1lbnRNZXRob2RVcGRhdGUga25vd3MgaG93IHRvIGNv
bnZlcnQgaXRzZWxmIHRvIGEKKyAgICAgICAgUEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RV
cGRhdGUsIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyIGNhbiBtZXJlbHkgcGFzcyB0aGUK
KyAgICAgICAgY29udmVydGVkIHVwZGF0ZSBkaXJlY3RseSB0byB0aGUgcGxhdGZvcm0gZGVsZWdh
dGUgcmF0aGVyIHRoYW4gcGFzc2luZyB0aGUgaW5kaXZpZHVhbAorICAgICAgICBjb21wb25lbnRz
IGFuZCByZWx5aW5nIG9uIHRoZSBkZWxlZ2F0ZSB0byBpbnN0YW50aWF0ZSB0aGUgcGxhdGZvcm0g
dXBkYXRlIGl0c2VsZi4gQWRkZWQKKyAgICAgICAgRklYTUVzIGZvciBhcHBseWluZyBhIHNpbWls
YXIgdHJlYXRtZW50IHRvIFNoaXBwaW5nQ29udGFjdFVwZGF0ZSBhbmQgU2hpcHBpbmdNZXRob2RV
cGRhdGUuCisKKyAgICAgICAgKiBQbGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlvblBy
ZXNlbnRlci5oOgorICAgICAgICAqIFBsYXRmb3JtL2NvY29hL1BheW1lbnRBdXRob3JpemF0aW9u
UHJlc2VudGVyLm1tOgorICAgICAgICAoV2ViS2l0OjpQYXltZW50QXV0aG9yaXphdGlvblByZXNl
bnRlcjo6Y29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
UGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXI6OmNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2Vs
ZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXI6
OmNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24pOgorICAgICAgICAqIFBsYXRmb3JtL2Nv
Y29hL1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5oOgorICAgICAgICAqIFBsYXRmb3Jt
L2NvY29hL1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bV0tQ
YXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlIGNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlv
bjpdKToKKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlIGNvbXBsZXRl
U2hpcHBpbmdDb250YWN0U2VsZWN0aW9uOl0pOgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3Jp
emF0aW9uRGVsZWdhdGUgY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbjpdKToKKyAgICAg
ICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlIF9kaWRTZWxlY3RQYXltZW50TWV0
aG9kOmNvbXBsZXRpb246XSk6CisgICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxl
Z2F0ZSBfZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0OmNvbXBsZXRpb246XSk6CisgICAgICAgICgt
W1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZSBfZGlkU2VsZWN0U2hpcHBpbmdNZXRob2Q6
Y29tcGxldGlvbjpdKToKKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRl
IGNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uOnN1bW1hcnlJdGVtczpzaGlwcGluZ01l
dGhvZHM6ZXJyb3JzOl0pOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9BcHBsZVBheS9XZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eS5oOgorICAgICAgICAqIFNoYXJlZC9BcHBsZVBheS9jb2Nv
YS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLmg6CisgICAgICAgICogU2hhcmVkL0Fw
cGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybVBheW1lbnRSZXF1
ZXN0KToKKyAgICAgICAgKFdlYktpdDo6dG9QS1BheW1lbnRTdW1tYXJ5SXRlbVR5cGUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0Ojp0b1BLUGF5bWVudFN1bW1hcnlJdGVtKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6dG9QS1BheW1lbnRTdW1tYXJ5SXRlbXMpOiBEZWxldGVkLgorICAg
ICAgICAqIFNoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbToKKyAgICAg
ICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50TWV0aG9kVXBkYXRlPjo6ZW5j
b2RlKToKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50TWV0aG9k
VXBkYXRlPjo6ZGVjb2RlKToKKwogMjAxOS0wOS0xOSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9y
dG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBtYWNDYXRhbHlzdCBhcHBzIGNyYXNoIHVuZGVyIFRl
eHRDaGVja2luZ0NvbnRyb2xsZXJQcm94eTo6cmVwbGFjZVJlbGF0aXZlVG9TZWxlY3Rpb24gd2hl
biBzcGVsbCBjaGVja2luZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBs
ZXBheS9BcHBsZVBheVBheW1lbnRNZXRob2RVcGRhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlLmgKaW5kZXggYTczMjIxMjRi
NWViNmY2OWUxZDQwY2RiNWM4MDI2MzAxYmRiNDE0Mi4uNWI2NzNkM2RlNGIxYzZhNjQyM2QxZWRh
NTllYjE0OWQyMTgwY2E4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBs
ZXBheS9BcHBsZVBheVBheW1lbnRNZXRob2RVcGRhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZS5oCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5LDExICsyOSwy
MCBAQAogCiAjaW5jbHVkZSAiQXBwbGVQYXlMaW5lSXRlbS5oIgogCisjaWYgVVNFKEFQUExFX0lO
VEVSTkFMX1NESykKKyNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMvQXBwbGVQYXlQYXltZW50TWV0
aG9kVXBkYXRlQWRkaXRpb25zLmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBz
dHJ1Y3QgQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlIHsKICAgICBBcHBsZVBheUxpbmVJdGVt
IG5ld1RvdGFsOwogICAgIFZlY3RvcjxBcHBsZVBheUxpbmVJdGVtPiBuZXdMaW5lSXRlbXM7CisK
KyNpZiBkZWZpbmVkKEFQUExFUEFZUEFZTUVOVE1FVEhPRFVQREFURV9BRERJVElPTlMpCitBUFBM
RVBBWVBBWU1FTlRNRVRIT0RVUERBVEVfQURESVRJT05TCisjdW5kZWYgQVBQTEVQQVlQQVlNRU5U
TUVUSE9EVVBEQVRFX0FERElUSU9OUworI2VuZGlmCiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvbi5jcHAKaW5kZXggODVhMDJi
ZWUyMGEwOGI1ZGVhYmQwM2E0M2E3MjY3YmMwZTk0ZjFjYy4uNjlmOGUzMmQ2MDgyZDJmM2EzYTVl
MDUwYzM3MjQ5OGRhZmMzMDA1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9BcHBsZVBheVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uLmNwcApAQCAtNTcsMTIgKzU3LDIxIEBACiAjaW5jbHVk
ZSAiUGF5bWVudENvb3JkaW5hdG9yLmgiCiAjaW5jbHVkZSAiUGF5bWVudE1lcmNoYW50U2Vzc2lv
bi5oIgogI2luY2x1ZGUgIlBheW1lbnRNZXRob2QuaCIKKyNpbmNsdWRlICJQYXltZW50TWV0aG9k
VXBkYXRlLmgiCiAjaW5jbHVkZSAiUGF5bWVudFJlcXVlc3RWYWxpZGF0b3IuaCIKICNpbmNsdWRl
ICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiVXNl
ckdlc3R1cmVJbmRpY2F0b3IuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgog
CisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKyNpbmNsdWRlIDxXZWJLaXRBZGRpdGlvbnMv
QXBwbGVQYXlTZXNzaW9uQWRkaXRpb25zLmNwcD4KKyNlbHNlCituYW1lc3BhY2UgV2ViQ29yZSB7
CitzdGF0aWMgdm9pZCBmaW5pc2hDb252ZXJ0aW5nKFBheW1lbnRNZXRob2RVcGRhdGUmLCBBcHBs
ZVBheVBheW1lbnRNZXRob2RVcGRhdGUmJikgeyB9Cit9CisjZW5kaWYKKwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoQXBwbGVQYXlTZXNzaW9uKTsK
QEAgLTEzOSwxMiArMTQ4LDEzIEBAIHN0YXRpYyBFeGNlcHRpb25PcjxBcHBsZVBheVNlc3Npb25Q
YXltZW50UmVxdWVzdDo6TGluZUl0ZW0+IGNvbnZlcnRBbmRWYWxpZGF0ZVRvCiAgICAgaWYgKCF2
YWxpZGF0ZUFtb3VudChsaW5lSXRlbS5hbW91bnQpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgVHlwZUVycm9yLCBtYWtlU3RyaW5nKCJcIiIgKyBsaW5lSXRlbS5hbW91bnQsICJcIiBpcyBu
b3QgYSB2YWxpZCBhbW91bnQuIikgfTsKIAotICAgIEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1
ZXN0OjpMaW5lSXRlbSByZXN1bHQ7Ci0gICAgcmVzdWx0LmFtb3VudCA9IGxpbmVJdGVtLmFtb3Vu
dDsKLSAgICByZXN1bHQudHlwZSA9IGxpbmVJdGVtLnR5cGU7Ci0gICAgcmVzdWx0LmxhYmVsID0g
bGluZUl0ZW0ubGFiZWw7CisgICAgQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJ
dGVtIHRvdGFsIHsgbGluZUl0ZW0udHlwZSwgbGluZUl0ZW0uYW1vdW50LCBsaW5lSXRlbS5sYWJl
bCB9OwogCi0gICAgcmV0dXJuIFdURk1vdmUocmVzdWx0KTsKKyAgICBhdXRvIHZhbGlkYXRlZFRv
dGFsID0gUGF5bWVudFJlcXVlc3RWYWxpZGF0b3I6OnZhbGlkYXRlVG90YWwodG90YWwpOworICAg
IGlmICh2YWxpZGF0ZWRUb3RhbC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIHZhbGlk
YXRlZFRvdGFsLnJlbGVhc2VFeGNlcHRpb24oKTsKKworICAgIHJldHVybiBXVEZNb3ZlKHRvdGFs
KTsKIH0KIAogc3RhdGljIEV4Y2VwdGlvbk9yPEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0
OjpMaW5lSXRlbT4gY29udmVydEFuZFZhbGlkYXRlKEFwcGxlUGF5TGluZUl0ZW0mJiBsaW5lSXRl
bSkKQEAgLTMxOCwyMyArMzI4LDE2IEBAIHN0YXRpYyBFeGNlcHRpb25PcjxQYXltZW50QXV0aG9y
aXphdGlvblJlc3VsdD4gY29udmVydEFuZFZhbGlkYXRlKEFwcGxlUGF5UGF5bWVuCiAKIHN0YXRp
YyBFeGNlcHRpb25PcjxQYXltZW50TWV0aG9kVXBkYXRlPiBjb252ZXJ0QW5kVmFsaWRhdGUoQXBw
bGVQYXlQYXltZW50TWV0aG9kVXBkYXRlJiYgdXBkYXRlKQogewotICAgIFBheW1lbnRNZXRob2RV
cGRhdGUgY29udmVydGVkVXBkYXRlOwotCiAgICAgYXV0byBjb252ZXJ0ZWROZXdUb3RhbCA9IGNv
bnZlcnRBbmRWYWxpZGF0ZVRvdGFsKFdURk1vdmUodXBkYXRlLm5ld1RvdGFsKSk7CiAgICAgaWYg
KGNvbnZlcnRlZE5ld1RvdGFsLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gY29udmVy
dGVkTmV3VG90YWwucmVsZWFzZUV4Y2VwdGlvbigpOwotICAgIGNvbnZlcnRlZFVwZGF0ZS5uZXdU
b3RhbEFuZExpbmVJdGVtcy50b3RhbCA9IGNvbnZlcnRlZE5ld1RvdGFsLnJlbGVhc2VSZXR1cm5W
YWx1ZSgpOwotCi0gICAgLy8gRklYTUU6IE1lcmdlIHRoaXMgdmFsaWRhdGlvbiBpbnRvIHRoZSB2
YWxpZGF0aW9uIHdlIGFyZSBkb2luZyBhYm92ZS4KLSAgICBhdXRvIHZhbGlkYXRlZFRvdGFsID0g
UGF5bWVudFJlcXVlc3RWYWxpZGF0b3I6OnZhbGlkYXRlVG90YWwoY29udmVydGVkVXBkYXRlLm5l
d1RvdGFsQW5kTGluZUl0ZW1zLnRvdGFsKTsKLSAgICBpZiAodmFsaWRhdGVkVG90YWwuaGFzRXhj
ZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiB2YWxpZGF0ZWRUb3RhbC5yZWxlYXNlRXhjZXB0aW9u
KCk7CiAKICAgICBhdXRvIGNvbnZlcnRlZE5ld0xpbmVJdGVtcyA9IGNvbnZlcnRBbmRWYWxpZGF0
ZShXVEZNb3ZlKHVwZGF0ZS5uZXdMaW5lSXRlbXMpKTsKICAgICBpZiAoY29udmVydGVkTmV3TGlu
ZUl0ZW1zLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gY29udmVydGVkTmV3TGluZUl0
ZW1zLnJlbGVhc2VFeGNlcHRpb24oKTsKIAotICAgIGNvbnZlcnRlZFVwZGF0ZS5uZXdUb3RhbEFu
ZExpbmVJdGVtcy5saW5lSXRlbXMgPSBjb252ZXJ0ZWROZXdMaW5lSXRlbXMucmVsZWFzZVJldHVy
blZhbHVlKCk7CisgICAgUGF5bWVudE1ldGhvZFVwZGF0ZSBjb252ZXJ0ZWRVcGRhdGUgeyBjb252
ZXJ0ZWROZXdUb3RhbC5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgY29udmVydGVkTmV3TGluZUl0ZW1z
LnJlbGVhc2VSZXR1cm5WYWx1ZSgpIH07CisgICAgZmluaXNoQ29udmVydGluZyhjb252ZXJ0ZWRV
cGRhdGUsIFdURk1vdmUodXBkYXRlKSk7CiAKICAgICByZXR1cm4gV1RGTW92ZShjb252ZXJ0ZWRV
cGRhdGUpOwogfQpAQCAtMzU1LDExICszNTgsNiBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8U2hpcHBp
bmdDb250YWN0VXBkYXRlPiBjb252ZXJ0QW5kVmFsaWRhdGUoQXBwbGVQYXlTaGlwcGluZ0Nvbgog
ICAgICAgICByZXR1cm4gY29udmVydGVkTmV3VG90YWwucmVsZWFzZUV4Y2VwdGlvbigpOwogICAg
IGNvbnZlcnRlZFVwZGF0ZS5uZXdUb3RhbEFuZExpbmVJdGVtcy50b3RhbCA9IGNvbnZlcnRlZE5l
d1RvdGFsLnJlbGVhc2VSZXR1cm5WYWx1ZSgpOwogCi0gICAgLy8gRklYTUU6IE1lcmdlIHRoaXMg
dmFsaWRhdGlvbiBpbnRvIHRoZSB2YWxpZGF0aW9uIHdlIGFyZSBkb2luZyBhYm92ZS4KLSAgICBh
dXRvIHZhbGlkYXRlZFRvdGFsID0gUGF5bWVudFJlcXVlc3RWYWxpZGF0b3I6OnZhbGlkYXRlVG90
YWwoY29udmVydGVkVXBkYXRlLm5ld1RvdGFsQW5kTGluZUl0ZW1zLnRvdGFsKTsKLSAgICBpZiAo
dmFsaWRhdGVkVG90YWwuaGFzRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiB2YWxpZGF0ZWRU
b3RhbC5yZWxlYXNlRXhjZXB0aW9uKCk7Ci0KICAgICBhdXRvIGNvbnZlcnRlZE5ld0xpbmVJdGVt
cyA9IGNvbnZlcnRBbmRWYWxpZGF0ZShXVEZNb3ZlKHVwZGF0ZS5uZXdMaW5lSXRlbXMpKTsKICAg
ICBpZiAoY29udmVydGVkTmV3TGluZUl0ZW1zLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICByZXR1
cm4gY29udmVydGVkTmV3TGluZUl0ZW1zLnJlbGVhc2VFeGNlcHRpb24oKTsKQEAgLTM3OCwxMSAr
Mzc2LDYgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPFNoaXBwaW5nTWV0aG9kVXBkYXRlPiBjb252ZXJ0
QW5kVmFsaWRhdGUoQXBwbGVQYXlTaGlwcGluZ01ldGgKIAogICAgIGNvbnZlcnRlZFVwZGF0ZS5u
ZXdUb3RhbEFuZExpbmVJdGVtcy50b3RhbCA9IGNvbnZlcnRlZE5ld1RvdGFsLnJlbGVhc2VSZXR1
cm5WYWx1ZSgpOwogCi0gICAgLy8gRklYTUU6IE1lcmdlIHRoaXMgdmFsaWRhdGlvbiBpbnRvIHRo
ZSB2YWxpZGF0aW9uIHdlIGFyZSBkb2luZyBhYm92ZS4KLSAgICBhdXRvIHZhbGlkYXRlZFRvdGFs
ID0gUGF5bWVudFJlcXVlc3RWYWxpZGF0b3I6OnZhbGlkYXRlVG90YWwoY29udmVydGVkVXBkYXRl
Lm5ld1RvdGFsQW5kTGluZUl0ZW1zLnRvdGFsKTsKLSAgICBpZiAodmFsaWRhdGVkVG90YWwuaGFz
RXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiB2YWxpZGF0ZWRUb3RhbC5yZWxlYXNlRXhjZXB0
aW9uKCk7Ci0KICAgICBhdXRvIGNvbnZlcnRlZE5ld0xpbmVJdGVtcyA9IGNvbnZlcnRBbmRWYWxp
ZGF0ZShXVEZNb3ZlKHVwZGF0ZS5uZXdMaW5lSXRlbXMpKTsKICAgICBpZiAoY29udmVydGVkTmV3
TGluZUl0ZW1zLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gY29udmVydGVkTmV3TGlu
ZUl0ZW1zLnJlbGVhc2VFeGNlcHRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QuaApp
bmRleCBmNTc1YTU0MTU5MWZmY2I2NTkyZDI1NWMxYWU3NDNlYzJmMGZiZjgxLi44YTY1YzQ5MGIx
MDIxM2UzZTVhMDQwOWFiMjE3NWU2NmNkN2I1MzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb25QYXltZW50UmVx
dWVzdC5oCkBAIC0yMTIsMTAgKzIxMiw2IEBAIHN0cnVjdCBQYXltZW50QXV0aG9yaXphdGlvblJl
c3VsdCB7CiAgICAgVmVjdG9yPFBheW1lbnRFcnJvcj4gZXJyb3JzOwogfTsKIAotc3RydWN0IFBh
eW1lbnRNZXRob2RVcGRhdGUgewotICAgIEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpU
b3RhbEFuZExpbmVJdGVtcyBuZXdUb3RhbEFuZExpbmVJdGVtczsKLX07Ci0KIHN0cnVjdCBTaGlw
cGluZ0NvbnRhY3RVcGRhdGUgewogICAgIFZlY3RvcjxQYXltZW50RXJyb3I+IGVycm9yczsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRp
bmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5h
dG9yLmgKaW5kZXggMWE0YWYzYmU5MzEzZTUzYjllMTczNzQwYjUyZGU1OWNmZmE2YTMzYi4uNGEw
Zjk2ZTc5MGJlMDFhMTdkODBiNGNkOTYxYTVlOGM3MjFjY2RiYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvci5oCkBAIC0zOSwx
MSArMzksMTEgQEAgY2xhc3MgUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50OwogY2xhc3MgUGF5bWVu
dENvbnRhY3Q7CiBjbGFzcyBQYXltZW50TWVyY2hhbnRTZXNzaW9uOwogY2xhc3MgUGF5bWVudE1l
dGhvZDsKK2NsYXNzIFBheW1lbnRNZXRob2RVcGRhdGU7CiBjbGFzcyBQYXltZW50U2Vzc2lvbjsK
IGNsYXNzIFBheW1lbnRTZXNzaW9uRXJyb3I7CiBlbnVtIGNsYXNzIFBheW1lbnRBdXRob3JpemF0
aW9uU3RhdHVzOwogc3RydWN0IFBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0Owotc3RydWN0IFBh
eW1lbnRNZXRob2RVcGRhdGU7CiBzdHJ1Y3QgU2hpcHBpbmdDb250YWN0VXBkYXRlOwogc3RydWN0
IFNoaXBwaW5nTWV0aG9kVXBkYXRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3JDbGllbnQuaAppbmRleCA4ZDUyM2Mw
ZTIyZWI2NTQzZDdmZDZiMWFjMWEyNDU3ZjI4MjQ3ZmIyLi4wM2Y1YjI4OTA5MzRmOWJiMjZjODcx
MWJhY2E1OTZkMmJjNzBkZDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L1BheW1lbnRDb29yZGluYXRvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmgKQEAgLTM5LDggKzM5LDgg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIFBheW1lbnRN
ZXJjaGFudFNlc3Npb247CitjbGFzcyBQYXltZW50TWV0aG9kVXBkYXRlOwogc3RydWN0IFBheW1l
bnRBdXRob3JpemF0aW9uUmVzdWx0Owotc3RydWN0IFBheW1lbnRNZXRob2RVcGRhdGU7CiBzdHJ1
Y3QgU2hpcHBpbmdDb250YWN0VXBkYXRlOwogc3RydWN0IFNoaXBwaW5nTWV0aG9kVXBkYXRlOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRIZWFk
ZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRIZWFkZXJzLmgK
aW5kZXggM2YxYjA0ZWRiYmZlNjY0ODEzYWQyZGQ0NzAwNmE1NmVmMWE0Zjg1Zi4uYzU1NTExNzll
ZDFmMGQyNDUwOGUyYTQ0ZWJjNTM3MmU3OWJmYzUxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50SGVhZGVycy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudEhlYWRlcnMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMCw0ICszMCw2IEBACiAjaW5jbHVk
ZSAiUGF5bWVudENvbnRhY3QuaCIKICNpbmNsdWRlICJQYXltZW50TWVyY2hhbnRTZXNzaW9uLmgi
CiAjaW5jbHVkZSAiUGF5bWVudE1ldGhvZC5oIgorI2luY2x1ZGUgIlBheW1lbnRNZXRob2RVcGRh
dGUuaCIKICNpbmNsdWRlICJQYXltZW50U2Vzc2lvbkVycm9yLmgiCisjaW5jbHVkZSAiUGF5bWVu
dFN1bW1hcnlJdGVtcy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBs
ZXBheS9QYXltZW50TWV0aG9kVXBkYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L1BheW1lbnRNZXRob2RVcGRhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMTgxM2NkZGVlOWU3NGQwZDY3
MWFjZDE3OWE2OTU5ZDU1ZTNiMmYxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9QYXltZW50TWV0aG9kVXBkYXRlLmgKQEAgLTAsMCArMSw2NSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEFQUExFX1BBWSkKKworI2lu
Y2x1ZGUgIkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0LmgiCisjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgorCisjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKyNpbmNsdWRlIDxXZWJL
aXRBZGRpdGlvbnMvUGF5bWVudE1ldGhvZFVwZGF0ZUFkZGl0aW9ucy5oPgorI2VuZGlmCisKK09C
SkNfQ0xBU1MgUEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RVcGRhdGU7CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgV0VCQ09SRV9FWFBPUlQgUGF5bWVudE1ldGhvZFVwZGF0ZSB7
CitwdWJsaWM6CisgICAgdXNpbmcgTGluZUl0ZW0gPSBBcHBsZVBheVNlc3Npb25QYXltZW50UmVx
dWVzdDo6TGluZUl0ZW07CisgICAgdXNpbmcgVG90YWxBbmRMaW5lSXRlbXMgPSBBcHBsZVBheVNl
c3Npb25QYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM7CisKKyAgICBQYXltZW50TWV0
aG9kVXBkYXRlKExpbmVJdGVtJiYgdG90YWwsIFZlY3RvcjxMaW5lSXRlbT4mJik7CisgICAgZXhw
bGljaXQgUGF5bWVudE1ldGhvZFVwZGF0ZShSZXRhaW5QdHI8UEtQYXltZW50UmVxdWVzdFBheW1l
bnRNZXRob2RVcGRhdGU+JiYpOworICAgIGV4cGxpY2l0IFBheW1lbnRNZXRob2RVcGRhdGUoVG90
YWxBbmRMaW5lSXRlbXMmJik7CisKKyAgICBjb25zdCBUb3RhbEFuZExpbmVJdGVtcyYgdG90YWxB
bmRMaW5lSXRlbXMoKSBjb25zdDsKKyAgICBQS1BheW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhvZFVw
ZGF0ZSAqcGxhdGZvcm1VcGRhdGUoKSBjb25zdDsKKworI2lmIGRlZmluZWQoUEFZTUVOVE1FVEhP
RFVQREFURV9QVUJMSUNfQURESVRJT05TKQorUEFZTUVOVE1FVEhPRFVQREFURV9QVUJMSUNfQURE
SVRJT05TCisjdW5kZWYgUEFZTUVOVE1FVEhPRFVQREFURV9QVUJMSUNfQURESVRJT05TCisjZW5k
aWYKKyAgICAKK3ByaXZhdGU6CisgICAgT3B0aW9uYWw8VG90YWxBbmRMaW5lSXRlbXM+IG1fdG90
YWxBbmRMaW5lSXRlbXM7CisgICAgUmV0YWluUHRyPFBLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0
aG9kVXBkYXRlPiBtX3BsYXRmb3JtVXBkYXRlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gRU5BQkxFKEFQUExFX1BBWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudFN1bW1hcnlJdGVtcy5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50U3VtbWFyeUl0ZW1zLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWU5
NTE2YTA4ZmU2YjUxOGYxNjI5YmEwMWNlM2I3NjQ4OGQ2YmY0YQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudFN1bW1hcnlJdGVtcy5oCkBA
IC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShB
UFBMRV9QQVkpCisKKyNpbmNsdWRlICJBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oIgor
CitPQkpDX0NMQVNTIE5TQXJyYXk7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV0VCQ09SRV9F
WFBPUlQgTlNBcnJheSAqcGxhdGZvcm1TdW1tYXJ5SXRlbXMoY29uc3QgQXBwbGVQYXlTZXNzaW9u
UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zJik7CitXRUJDT1JFX0VYUE9SVCBOU0Fy
cmF5ICpwbGF0Zm9ybVN1bW1hcnlJdGVtcyhjb25zdCBBcHBsZVBheVNlc3Npb25QYXltZW50UmVx
dWVzdDo6TGluZUl0ZW0mIHRvdGFsLCBjb25zdCBWZWN0b3I8QXBwbGVQYXlTZXNzaW9uUGF5bWVu
dFJlcXVlc3Q6OkxpbmVJdGVtPiYpOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBFTkFCTEUoQVBQTEVfUEFZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9jb2NvYS9QYXltZW50TWV0aG9kVXBkYXRlQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXRob2RVcGRhdGVDb2NvYS5tbQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43ZDIzNWI5ZGU3OWM2Y2NkZTdhNjQyMmJmZWMzYzZhYzU2ODg5YWQxCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXlt
ZW50TWV0aG9kVXBkYXRlQ29jb2EubW0KQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUGF5bWVudE1ldGhvZFVwZGF0ZS5oIgorCisjaWYg
RU5BQkxFKEFQUExFX1BBWSkKKworI2ltcG9ydCAiUGF5bWVudFN1bW1hcnlJdGVtcy5oIgorI2lt
cG9ydCA8cGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK1BheW1lbnRNZXRob2RVcGRhdGU6OlBheW1lbnRNZXRob2RVcGRhdGUoTGluZUl0ZW0mJiB0
b3RhbCwgVmVjdG9yPExpbmVJdGVtPiYmIGxpbmVJdGVtcykKKyAgICA6IG1fdG90YWxBbmRMaW5l
SXRlbXMgeyB7IFdURk1vdmUodG90YWwpLCBXVEZNb3ZlKGxpbmVJdGVtcykgfSB9CisgICAgLCBt
X3BsYXRmb3JtVXBkYXRlIHsgYWRvcHROUyhbUEFMOjphbGxvY1BLUGF5bWVudFJlcXVlc3RQYXlt
ZW50TWV0aG9kVXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0aFBheW1lbnRTdW1tYXJ5SXRlbXM6cGxh
dGZvcm1TdW1tYXJ5SXRlbXMoKm1fdG90YWxBbmRMaW5lSXRlbXMpXSkgfQoreworfQorCitQYXlt
ZW50TWV0aG9kVXBkYXRlOjpQYXltZW50TWV0aG9kVXBkYXRlKFJldGFpblB0cjxQS1BheW1lbnRS
ZXF1ZXN0UGF5bWVudE1ldGhvZFVwZGF0ZT4mJiBwbGF0Zm9ybVVwZGF0ZSkKKyAgICA6IG1fcGxh
dGZvcm1VcGRhdGUgeyBXVEZNb3ZlKHBsYXRmb3JtVXBkYXRlKSB9Cit7Cit9CisKK1BheW1lbnRN
ZXRob2RVcGRhdGU6OlBheW1lbnRNZXRob2RVcGRhdGUoVG90YWxBbmRMaW5lSXRlbXMmJiB0b3Rh
bEFuZExpbmVJdGVtcykKKyAgICA6IFBheW1lbnRNZXRob2RVcGRhdGUgeyBXVEZNb3ZlKHRvdGFs
QW5kTGluZUl0ZW1zLnRvdGFsKSwgV1RGTW92ZSh0b3RhbEFuZExpbmVJdGVtcy5saW5lSXRlbXMp
IH0KK3sKK30KKworY29uc3QgVG90YWxBbmRMaW5lSXRlbXMmIFBheW1lbnRNZXRob2RVcGRhdGU6
OnRvdGFsQW5kTGluZUl0ZW1zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gKm1fdG90YWxBbmRMaW5l
SXRlbXM7Cit9CisKK1BLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRlICpQYXltZW50
TWV0aG9kVXBkYXRlOjpwbGF0Zm9ybVVwZGF0ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGxh
dGZvcm1VcGRhdGUuZ2V0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShBUFBMRV9QQVkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FwcGxlcGF5L2NvY29hL1BheW1lbnRTdW1tYXJ5SXRlbXNDb2NvYS5tbSBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudFN1bW1hcnlJdGVtc0NvY29hLm1tCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjhhODcyNGE3NjQ4NTBkNmYwNzVmMDQ5ZDljMThlNmEwZjVhZjYxZjcKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1l
bnRTdW1tYXJ5SXRlbXNDb2NvYS5tbQpAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlBheW1lbnRTdW1tYXJ5SXRlbXMuaCIKKwor
I2lmIEVOQUJMRShBUFBMRV9QQVkpCisKKyNpbXBvcnQgPHBhbC9jb2NvYS9QYXNzS2l0U29mdExp
bmsuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgTlNEZWNpbWFsTnVtYmVyICp0
b0RlY2ltYWxOdW1iZXIoY29uc3QgU3RyaW5nJiBhbW91bnQpCit7CisgICAgaWYgKCFhbW91bnQp
CisgICAgICAgIHJldHVybiBbTlNEZWNpbWFsTnVtYmVyIHplcm9dOworICAgIHJldHVybiBbTlNE
ZWNpbWFsTnVtYmVyIGRlY2ltYWxOdW1iZXJXaXRoU3RyaW5nOmFtb3VudCBsb2NhbGU6QHsgTlNM
b2NhbGVEZWNpbWFsU2VwYXJhdG9yIDogQCIuIiB9XTsKK30KKworc3RhdGljIFBLUGF5bWVudFN1
bW1hcnlJdGVtVHlwZSB0b1BLUGF5bWVudFN1bW1hcnlJdGVtVHlwZShBcHBsZVBheVNlc3Npb25Q
YXltZW50UmVxdWVzdDo6TGluZUl0ZW06OlR5cGUgdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUp
IHsKKyAgICBjYXNlIEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbTo6VHlw
ZTo6RmluYWw6CisgICAgICAgIHJldHVybiBQS1BheW1lbnRTdW1tYXJ5SXRlbVR5cGVGaW5hbDsK
KyAgICBjYXNlIEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbTo6VHlwZTo6
UGVuZGluZzoKKyAgICAgICAgcmV0dXJuIFBLUGF5bWVudFN1bW1hcnlJdGVtVHlwZVBlbmRpbmc7
CisgICAgfQorfQorCitzdGF0aWMgUEtQYXltZW50U3VtbWFyeUl0ZW0gKnRvUEtQYXltZW50U3Vt
bWFyeUl0ZW0oY29uc3QgQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtJiBs
aW5lSXRlbSkKK3sKKyAgICByZXR1cm4gW1BBTDo6Z2V0UEtQYXltZW50U3VtbWFyeUl0ZW1DbGFz
cygpIHN1bW1hcnlJdGVtV2l0aExhYmVsOmxpbmVJdGVtLmxhYmVsIGFtb3VudDp0b0RlY2ltYWxO
dW1iZXIobGluZUl0ZW0uYW1vdW50KSB0eXBlOnRvUEtQYXltZW50U3VtbWFyeUl0ZW1UeXBlKGxp
bmVJdGVtLnR5cGUpXTsKK30KKworTlNBcnJheSAqcGxhdGZvcm1TdW1tYXJ5SXRlbXMoY29uc3Qg
QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zJiB0b3RhbEFu
ZExpbmVJdGVtcykKK3sKKyAgICByZXR1cm4gcGxhdGZvcm1TdW1tYXJ5SXRlbXModG90YWxBbmRM
aW5lSXRlbXMudG90YWwsIHRvdGFsQW5kTGluZUl0ZW1zLmxpbmVJdGVtcyk7Cit9CisKK05TQXJy
YXkgKnBsYXRmb3JtU3VtbWFyeUl0ZW1zKGNvbnN0IEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1
ZXN0OjpMaW5lSXRlbSYgdG90YWwsIGNvbnN0IFZlY3RvcjxBcHBsZVBheVNlc3Npb25QYXltZW50
UmVxdWVzdDo6TGluZUl0ZW0+JiBsaW5lSXRlbXMpCit7CisgICAgTlNNdXRhYmxlQXJyYXkgKnBh
eW1lbnRTdW1tYXJ5SXRlbXMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6bGlu
ZUl0ZW1zLnNpemUoKSArIDFdOworICAgIGZvciAoYXV0byYgbGluZUl0ZW0gOiBsaW5lSXRlbXMp
IHsKKyAgICAgICAgaWYgKFBLUGF5bWVudFN1bW1hcnlJdGVtICpzdW1tYXJ5SXRlbSA9IHRvUEtQ
YXltZW50U3VtbWFyeUl0ZW0obGluZUl0ZW0pKQorICAgICAgICAgICAgW3BheW1lbnRTdW1tYXJ5
SXRlbXMgYWRkT2JqZWN0OnN1bW1hcnlJdGVtXTsKKyAgICB9CisKKyAgICBpZiAoUEtQYXltZW50
U3VtbWFyeUl0ZW0gKnRvdGFsSXRlbSA9IHRvUEtQYXltZW50U3VtbWFyeUl0ZW0odG90YWwpKQor
ICAgICAgICBbcGF5bWVudFN1bW1hcnlJdGVtcyBhZGRPYmplY3Q6dG90YWxJdGVtXTsKKworICAg
IHJldHVybiBhZG9wdE5TKFtwYXltZW50U3VtbWFyeUl0ZW1zIGNvcHldKS5hdXRvcmVsZWFzZSgp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJiQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEFQUExF
X1BBWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5bWVu
dHJlcXVlc3QvQXBwbGVQYXlQYXltZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuY3BwCmlu
ZGV4IGQzNGQ3Y2RlOGJhOTRiMzFmM2IyNmVjNWI0M2I5Yzk2ZjdlZmU4YzAuLjBmN2UzYmEyYTIz
MzVlOTBmNzdhMWRmYTY5YzY2NTc0ZGY1NDNkZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQYXltZW50SGFuZGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9B
cHBsZVBheVBheW1lbnRIYW5kbGVyLmNwcApAQCAtNTEsNiArNTEsNyBAQAogI2luY2x1ZGUgIlBh
eW1lbnRDb29yZGluYXRvci5oIgogI2luY2x1ZGUgIlBheW1lbnRNZXJjaGFudFNlc3Npb24uaCIK
ICNpbmNsdWRlICJQYXltZW50TWV0aG9kLmgiCisjaW5jbHVkZSAiUGF5bWVudE1ldGhvZFVwZGF0
ZS5oIgogI2luY2x1ZGUgIlBheW1lbnRSZXF1ZXN0VmFsaWRhdG9yLmgiCiAjaW5jbHVkZSAiUGF5
bWVudFJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiUGF5bWVudFZhbGlkYXRpb25FcnJvcnMuaCIKQEAg
LTQ3MywxNCArNDc0LDExIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEFwcGxlUGF5UGF5bWVudEhhbmRs
ZXI6OnBheW1lbnRNZXRob2RVcGRhdGVkKCkKICAgICBBU1NFUlQobV9pc1VwZGF0aW5nKTsKICAg
ICBtX2lzVXBkYXRpbmcgPSBmYWxzZTsKIAotICAgIFBheW1lbnRNZXRob2RVcGRhdGUgdXBkYXRl
OwotCiAgICAgYXV0byBuZXdUb3RhbEFuZExpbmVJdGVtcyA9IGNvbXB1dGVUb3RhbEFuZExpbmVJ
dGVtcygpOwogICAgIGlmIChuZXdUb3RhbEFuZExpbmVJdGVtcy5oYXNFeGNlcHRpb24oKSkKICAg
ICAgICAgcmV0dXJuIG5ld1RvdGFsQW5kTGluZUl0ZW1zLnJlbGVhc2VFeGNlcHRpb24oKTsKLSAg
ICB1cGRhdGUubmV3VG90YWxBbmRMaW5lSXRlbXMgPSBuZXdUb3RhbEFuZExpbmVJdGVtcy5yZWxl
YXNlUmV0dXJuVmFsdWUoKTsKIAotICAgIHBheW1lbnRDb29yZGluYXRvcigpLmNvbXBsZXRlUGF5
bWVudE1ldGhvZFNlbGVjdGlvbihXVEZNb3ZlKHVwZGF0ZSkpOworICAgIHBheW1lbnRDb29yZGlu
YXRvcigpLmNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihQYXltZW50TWV0aG9kVXBkYXRl
IHsgbmV3VG90YWxBbmRMaW5lSXRlbXMucmVsZWFzZVJldHVyblZhbHVlKCkgfSk7CiAgICAgcmV0
dXJuIHsgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4
dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggNTI1YmFmYzU3YWRmNmU0
NTYyYjIxYWM0NmYyN2Y2MTZiZGM0ZjcxNC4uYTA2OTJhOGY3YjdkMTgyMDYzZTUzNzBkYjM4OWI3
MmQ3OWJhOGM5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC01OTIsNyArNTkyLDkgQEAg
V0hMU0xTdGFuZGFyZExpYnJhcnlGdW5jdGlvbk1hcC5jcHAKICAgICBNb2R1bGVzL2FwcGxlcGF5
L2NvY29hL1BheW1lbnRDb250YWN0Q29jb2EubW0KICAgICBNb2R1bGVzL2FwcGxlcGF5L2NvY29h
L1BheW1lbnRNZXJjaGFudFNlc3Npb25Db2NvYS5tbQogICAgIE1vZHVsZXMvYXBwbGVwYXkvY29j
b2EvUGF5bWVudE1ldGhvZENvY29hLm1tCisgICAgTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXlt
ZW50TWV0aG9kVXBkYXRlQ29jb2EubW0KICAgICBNb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1l
bnRTZXNzaW9uRXJyb3JDb2NvYS5tbQorICAgIE1vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVu
dFN1bW1hcnlJdGVtc0NvY29hLm1tCiAKICAgICBNb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1
ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5ZWYzMGNlZWQ3NGE0MDBmY2Iz
ZTE4ZTJlYjYzMjAyMTkwZWRjNWE2Li42ZmRhMDA2NTk0ZDFiZDYwMGI2OWMyZWRkMDVlNjMzMzk4
ODdiMDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0zMDAzLDYgKzMwMDMsOCBAQAogCQlBMURGNUFBNjFGN0Y2NEJCMDA1OEE0
NzcgLyogUGF5bWVudEhhbmRsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEExREY1QUE0MUY3RjY0QkIwMDU4QTQ3NyAvKiBQYXltZW50SGFuZGxlci5o
ICovOyB9OwogCQlBMURGNUFBRDFGODA3NUYwMDA1OEE0NzcgLyogQXBwbGVQYXlSZXF1ZXN0QmFz
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFERjVB
QUExRjgwNzVGMDAwNThBNDc3IC8qIEFwcGxlUGF5UmVxdWVzdEJhc2UuaCAqLzsgfTsKIAkJQTFE
RjVBQjMxRjgwNzc1MzAwNThBNDc3IC8qIEpTQXBwbGVQYXlSZXF1ZXN0QmFzZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFERjVBQjExRjgwNzc1MjAw
NThBNDc3IC8qIEpTQXBwbGVQYXlSZXF1ZXN0QmFzZS5oICovOyB9OworCQlBMURGRDUyNTIzMzQ1
OTNGMDA0MkZDREIgLyogUGF5bWVudE1ldGhvZFVwZGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFERkQ1MjQyMzM0NTkzQTAwNDJGQ0RCIC8qIFBh
eW1lbnRNZXRob2RVcGRhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQlBMURGRDUyNjIzMzQ1OTQ4MDA0MkZDREIgLyogUGF5bWVudFN1bW1hcnlJ
dGVtcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFE
RkQ1MjIyMzM0NTkzQTAwNDJGQ0RCIC8qIFBheW1lbnRTdW1tYXJ5SXRlbXMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUVENzc4RDFCRTMyOTQw
MDBEQzE3OTEgLyogRGV2aWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBMUVENzc4QjFCRTMyOTQwMDBEQzE3OTEgLyogRGV2aWNlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTFGNjAwNDQxRjQ3NTdB
OTAwNzdFODNGIC8qIFBheW1lbnRSZXF1ZXN0VXBkYXRlRXZlbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRjYwMDQxMUY0NzU3QTkwMDc3RTgzRiAv
KiBQYXltZW50UmVxdWVzdFVwZGF0ZUV2ZW50LmggKi87IH07CiAJCUExRjYwMDQ5MUY0NzU5NEUw
MDc3RTgzRiAvKiBQYXltZW50RGV0YWlsc1VwZGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFGNjAwNDcxRjQ3NTk0RTAwNzdFODNGIC8qIFBheW1l
bnREZXRhaWxzVXBkYXRlLmggKi87IH07CkBAIC0xMTMwNSw2ICsxMTMwNywxMCBAQAogCQlBMURG
NUFCMDFGODA3NzUyMDA1OEE0NzcgLyogSlNBcHBsZVBheVJlcXVlc3RCYXNlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQXBwbGVQYXlSZXF1ZXN0QmFzZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExREY1QUIxMUY4MDc3NTIwMDU4QTQ3NyAv
KiBKU0FwcGxlUGF5UmVxdWVzdEJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNBcHBsZVBheVJlcXVlc3RCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUExREY1QUI0MUY4MDc4RjMwMDU4QTQ3NyAvKiBBcHBsZVBheUNvbnRhY3RGaWVsZC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBBcHBsZVBheUNvbnRhY3RGaWVsZC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUExREZENTIyMjMzNDU5M0EwMDQyRkNEQiAvKiBQYXltZW50U3VtbWFy
eUl0ZW1zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBheW1lbnRTdW1tYXJ5SXRlbXMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTFERkQ1MjQyMzM0NTkzQTAwNDJGQ0RCIC8qIFBheW1lbnRN
ZXRob2RVcGRhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGF5bWVudE1ldGhvZFVwZGF0ZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMURGRDUyNzIzMzQ1OTczMDA0MkZDREIgLyogUGF5
bWVudFN1bW1hcnlJdGVtc0NvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGF5bWVudFN1
bW1hcnlJdGVtc0NvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMURGRDUy
ODIzMzQ1OTc0MDA0MkZDREIgLyogUGF5bWVudE1ldGhvZFVwZGF0ZUNvY29hLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gUGF5bWVudE1ldGhvZFVwZGF0ZUNvY29hLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBMUUxMTU0MzEzMDE1QzNEMDA1NEFDOEMgLyogRGlzdGFudExpZ2h0
U291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpc3RhbnRM
aWdodFNvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExRTExNTQ1MTMw
MTVDNEUwMDU0QUM4QyAvKiBQb2ludExpZ2h0U291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFBvaW50TGlnaHRTb3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBMUUxMTU0NzEzMDE1QzVEMDA1NEFDOEMgLyogU3BvdExpZ2h0U291cmNl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNwb3RMaWdodFNvdXJj
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjc3OCwxMSArMTY3ODQsMTMg
QEAKIAkJCQk3Q0Y5MzBFNjFFMDFGOUFEMDBCQUZGQkUgLyogUGF5bWVudEhlYWRlcnMuaCAqLywK
IAkJCQkxQUU5NkE4NzFEMUEwQ0VCMDBCODY3NjggLyogUGF5bWVudE1lcmNoYW50U2Vzc2lvbi5o
ICovLAogCQkJCTFBOEE2NDM5MUQxOUZDNTMwMEQwRTAwRiAvKiBQYXltZW50TWV0aG9kLmggKi8s
CisJCQkJQTFERkQ1MjQyMzM0NTkzQTAwNDJGQ0RCIC8qIFBheW1lbnRNZXRob2RVcGRhdGUuaCAq
LywKIAkJCQkxQThBNjQ2NjFEMTlGREZGMDBEMEUwMEYgLyogUGF5bWVudFJlcXVlc3RWYWxpZGF0
b3IuaCAqLywKIAkJCQkxQThBNjQ2NTFEMTlGREZGMDBEMEUwMEYgLyogUGF5bWVudFJlcXVlc3RW
YWxpZGF0b3IubW0gKi8sCiAJCQkJQTFDMkM1NzUxRkEyODUxNjAwQkE0NkZBIC8qIFBheW1lbnRT
ZXNzaW9uLmNwcCAqLywKIAkJCQlBMTQ5MURBMjFGODU5RDg3MDA5NUY1RDQgLyogUGF5bWVudFNl
c3Npb24uaCAqLywKIAkJCQlBMTEzRTAyNzIzMzE4MjkzMDA5QzMzQTAgLyogUGF5bWVudFNlc3Np
b25FcnJvci5oICovLAorCQkJCUExREZENTIyMjMzNDU5M0EwMDQyRkNEQiAvKiBQYXltZW50U3Vt
bWFyeUl0ZW1zLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGFwcGxlcGF5OwogCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKQEAgLTE2Nzk0LDcgKzE2ODAyLDkgQEAKIAkJCQkxQThBNjQ2QTFEMTlG
Rjg3MDBEMEUwMEYgLyogUGF5bWVudENvbnRhY3RDb2NvYS5tbSAqLywKIAkJCQkxQURBNEExQjFE
MjJGMkMwMDA1QTlBMTUgLyogUGF5bWVudE1lcmNoYW50U2Vzc2lvbkNvY29hLm1tICovLAogCQkJ
CTFBOEE2NDZCMUQxOUZGODcwMEQwRTAwRiAvKiBQYXltZW50TWV0aG9kQ29jb2EubW0gKi8sCisJ
CQkJQTFERkQ1MjgyMzM0NTk3NDAwNDJGQ0RCIC8qIFBheW1lbnRNZXRob2RVcGRhdGVDb2NvYS5t
bSAqLywKIAkJCQlBMTEzRTAyQTIzMzE4RUJDMDA5QzMzQTAgLyogUGF5bWVudFNlc3Npb25FcnJv
ckNvY29hLm1tICovLAorCQkJCUExREZENTI3MjMzNDU5NzMwMDQyRkNEQiAvKiBQYXltZW50U3Vt
bWFyeUl0ZW1zQ29jb2EubW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IGNvY29hOwogCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTMxMDc3LDYgKzMxMDg3LDcgQEAKIAkJCQkxQThBNjQzQzFE
MTlGQzUzMDBEMEUwMEYgLyogUGF5bWVudE1ldGhvZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE2
NEEyNDcyMTM0QkM3MTAwNTA5MTU2IC8qIFBheW1lbnRNZXRob2RDaGFuZ2VFdmVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTFGNzZCMTkxRjQ0QzM5MDAwMTRDMzE4IC8qIFBheW1lbnRNZXRob2RE
YXRhLmggaW4gSGVhZGVycyAqLywKKwkJCQlBMURGRDUyNTIzMzQ1OTNGMDA0MkZDREIgLyogUGF5
bWVudE1ldGhvZFVwZGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFGNzZCMkIxRjQ0QzRFRjAw
MTRDMzE4IC8qIFBheW1lbnRPcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMUY3NkIxMzFG
NDRDMjQ1MDAxNEMzMTggLyogUGF5bWVudFJlcXVlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUEx
RjYwMDQ0MUY0NzU3QTkwMDc3RTgzRiAvKiBQYXltZW50UmVxdWVzdFVwZGF0ZUV2ZW50LmggaW4g
SGVhZGVycyAqLywKQEAgLTMxMDg4LDYgKzMxMDk5LDcgQEAKIAkJCQlBMTEzRTAyODIzMzE4Mjkz
MDA5QzMzQTAgLyogUGF5bWVudFNlc3Npb25FcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFG
NzZCNTUxRjQ0RDJDNzAwMTRDMzE4IC8qIFBheW1lbnRTaGlwcGluZ09wdGlvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTFGNzZCNDkxRjQ0RDA3QTAwMTRDMzE4IC8qIFBheW1lbnRTaGlwcGluZ1R5
cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUExREZENTI2MjMzNDU5NDgwMDQyRkNEQiAvKiBQYXlt
ZW50U3VtbWFyeUl0ZW1zLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTY3N0RGRDIxM0UwMDY2MDBB
MDhDMzQgLyogUGF5bWVudFZhbGlkYXRpb25FcnJvcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUIy
NzUzNTY1MEIwNTM4MTQwMDJDRTY0RiAvKiBQREZEb2N1bWVudEltYWdlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1RTJDNDM1MTFCQ0VFMkY2MDAwMUUyQkMgLyogUGVlckNvbm5lY3Rpb25CYWNrZW5k
LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9j
a1BheW1lbnRDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYXlt
ZW50Q29vcmRpbmF0b3IuY3BwCmluZGV4IDAzNjA1ZDU1NjRmMjhmNDE0MDVkNGNmZDE3N2NmOTY1
YTgwZjBmNGUuLmZkN2ZkZGQ1Njc3NjBiYjA1OTZjNWJmY2E4MjU0YjgxYTk2MGY2ODkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRDb29yZGluYXRvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcApA
QCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIk1vY2tQYXltZW50TWV0aG9kLmgiCiAjaW5jbHVk
ZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBheW1lbnRDb29yZGluYXRvci5oIgorI2luY2x1ZGUgIlBh
eW1lbnRNZXRob2RVcGRhdGUuaCIKICNpbmNsdWRlICJQYXltZW50U2Vzc2lvbkVycm9yLmgiCiAj
aW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3Au
aD4KQEAgLTE2MCw3ICsxNjEsNyBAQCB2b2lkIE1vY2tQYXltZW50Q29vcmRpbmF0b3I6OmNvbXBs
ZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKE9wdGlvbmFsPFNoaXBwaW5nQwogdm9pZCBNb2Nr
UGF5bWVudENvb3JkaW5hdG9yOjpjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oT3B0aW9u
YWw8UGF5bWVudE1ldGhvZFVwZGF0ZT4mJiBwYXltZW50TWV0aG9kVXBkYXRlKQogewogICAgIGlm
IChwYXltZW50TWV0aG9kVXBkYXRlKQotICAgICAgICB1cGRhdGVUb3RhbEFuZExpbmVJdGVtcyhw
YXltZW50TWV0aG9kVXBkYXRlLT5uZXdUb3RhbEFuZExpbmVJdGVtcyk7CisgICAgICAgIHVwZGF0
ZVRvdGFsQW5kTGluZUl0ZW1zKHBheW1lbnRNZXRob2RVcGRhdGUtPnRvdGFsQW5kTGluZUl0ZW1z
KCkpOwogfQogCiB2b2lkIE1vY2tQYXltZW50Q29vcmRpbmF0b3I6OmNoYW5nZVNoaXBwaW5nT3B0
aW9uKFN0cmluZyYmIHNoaXBwaW5nT3B0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlci5oIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlci5oCmluZGV4
IGNiNjRhZjkyYmUwYmMxNWIxZGRkNGEyYTQxY2E0NzU0Mzk3MjI5NDQuLmQwNjI3ODQ1MDlmMWJk
OGJlMjkwNzk1MzkwNmIwYTVjZmIzM2NhOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL2NvY29hL1BheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyLmgKQEAg
LTQxLDYgKzQxLDcgQEAgY2xhc3MgUGF5bWVudDsKIGNsYXNzIFBheW1lbnRDb250YWN0OwogY2xh
c3MgUGF5bWVudE1lcmNoYW50U2Vzc2lvbjsKIGNsYXNzIFBheW1lbnRNZXRob2Q7CitjbGFzcyBQ
YXltZW50TWV0aG9kVXBkYXRlOwogY2xhc3MgUGF5bWVudFNlc3Npb25FcnJvcjsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlv
blByZXNlbnRlci5tbSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhv
cml6YXRpb25QcmVzZW50ZXIubW0KaW5kZXggMTJlYWIxNWRhMTg2MGZkYTY5NGM4N2ViM2U2ODli
YThiNTM0NjMyYy4uOGU4ZjVmNzM0MjI0ZDRjNjlkYmFmM2NmNGIyYjMyYjVkOGEyNWZlZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlv
blByZXNlbnRlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1BheW1lbnRB
dXRob3JpemF0aW9uUHJlc2VudGVyLm1tCkBAIC0zMiw2ICszMiw4IEBACiAjaW1wb3J0ICJXZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLmgiCiAjaW1wb3J0IDxXZWJDb3JlL1BheW1lbnRB
dXRob3JpemF0aW9uU3RhdHVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BheW1lbnRNZXJjaGFudFNl
c3Npb24uaD4KKyNpbXBvcnQgPFdlYkNvcmUvUGF5bWVudE1ldGhvZFVwZGF0ZS5oPgorI2ltcG9y
dCA8V2ViQ29yZS9QYXltZW50U3VtbWFyeUl0ZW1zLmg+CiAjaW1wb3J0IDxwYWwvY29jb2EvUGFz
c0tpdFNvZnRMaW5rLmg+CiAKIFNPRlRfTElOS19GUkFNRVdPUksoQ29udGFjdHMpOwpAQCAtMTg1
LDggKzE4NywxMiBAQCB2b2lkIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyOjpjb21wbGV0
ZU1lcmNoYW50VmFsaWRhdGlvbihjb25zdCBXZWJDb3JlOjpQYQogdm9pZCBQYXltZW50QXV0aG9y
aXphdGlvblByZXNlbnRlcjo6Y29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKGNvbnN0IE9w
dGlvbmFsPFdlYkNvcmU6OlBheW1lbnRNZXRob2RVcGRhdGU+JiB1cGRhdGUpCiB7CiAgICAgQVNT
RVJUKHBsYXRmb3JtRGVsZWdhdGUoKSk7Ci0gICAgTlNBcnJheSAqc3VtbWFyeUl0ZW1zID0gdXBk
YXRlID8gdG9QS1BheW1lbnRTdW1tYXJ5SXRlbXModXBkYXRlLT5uZXdUb3RhbEFuZExpbmVJdGVt
cykgOiBwbGF0Zm9ybURlbGVnYXRlKCkuc3VtbWFyeUl0ZW1zOwotICAgIFtwbGF0Zm9ybURlbGVn
YXRlKCkgY29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uOnN1bW1hcnlJdGVtc107CisgICAg
aWYgKCF1cGRhdGUpIHsKKyAgICAgICAgW3BsYXRmb3JtRGVsZWdhdGUoKSBjb21wbGV0ZVBheW1l
bnRNZXRob2RTZWxlY3Rpb246bmlsXTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFtw
bGF0Zm9ybURlbGVnYXRlKCkgY29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uOnVwZGF0ZS0+
cGxhdGZvcm1VcGRhdGUoKV07CiB9CiAKIHZvaWQgUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50
ZXI6OmNvbXBsZXRlUGF5bWVudFNlc3Npb24oY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVu
dEF1dGhvcml6YXRpb25SZXN1bHQ+JiByZXN1bHQpCkBAIC0yMDAsMTggKzIwNiwyNyBAQCB2b2lk
IFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyOjpjb21wbGV0ZVBheW1lbnRTZXNzaW9uKGNv
bnN0IE9wdGlvbmFsPFdlYkNvcgogdm9pZCBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcjo6
Y29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6
U2hpcHBpbmdDb250YWN0VXBkYXRlPiYgdXBkYXRlKQogewogICAgIEFTU0VSVChwbGF0Zm9ybURl
bGVnYXRlKCkpOwotICAgIE5TQXJyYXkgKnNoaXBwaW5nTWV0aG9kcyA9IHVwZGF0ZSA/IHRvUEtT
aGlwcGluZ01ldGhvZHModXBkYXRlLT5uZXdTaGlwcGluZ01ldGhvZHMpIDogcGxhdGZvcm1EZWxl
Z2F0ZSgpLnNoaXBwaW5nTWV0aG9kczsKLSAgICBOU0FycmF5ICpzdW1tYXJ5SXRlbXMgPSB1cGRh
dGUgPyB0b1BLUGF5bWVudFN1bW1hcnlJdGVtcyh1cGRhdGUtPm5ld1RvdGFsQW5kTGluZUl0ZW1z
KSA6IHBsYXRmb3JtRGVsZWdhdGUoKS5zdW1tYXJ5SXRlbXM7Ci0gICAgTlNBcnJheSAqZXJyb3Jz
ID0gdXBkYXRlID8gdG9OU0Vycm9ycyh1cGRhdGUtPmVycm9ycykgOiBAWyBdOwotICAgIGF1dG8g
c3RhdHVzID0gUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c1N1Y2Nlc3M7Ci0gICAgW3BsYXRm
b3JtRGVsZWdhdGUoKSBjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbjpzdGF0dXMgc3Vt
bWFyeUl0ZW1zOnN1bW1hcnlJdGVtcyBzaGlwcGluZ01ldGhvZHM6c2hpcHBpbmdNZXRob2RzIGVy
cm9yczplcnJvcnNdOworICAgIGlmICghdXBkYXRlKSB7CisgICAgICAgIFtwbGF0Zm9ybURlbGVn
YXRlKCkgY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb246bmlsXTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIC8vIEZJWE1FOiBXZWJDb3JlOjpTaGlwcGluZ0NvbnRhY3RVcGRh
dGUgc2hvdWxkIGtub3cgaG93IHRvIGNvbnZlcnQgaXRzZWxmIHRvIGEgUEtQYXltZW50UmVxdWVz
dFNoaXBwaW5nQ29udGFjdFVwZGF0ZS4KKyAgICBhdXRvIHNoaXBwaW5nQ29udGFjdFVwZGF0ZSA9
IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdDb250YWN0VXBkYXRl
SW5zdGFuY2UoKSBpbml0V2l0aEVycm9yczp0b05TRXJyb3JzKHVwZGF0ZS0+ZXJyb3JzKSBwYXlt
ZW50U3VtbWFyeUl0ZW1zOldlYkNvcmU6OnBsYXRmb3JtU3VtbWFyeUl0ZW1zKHVwZGF0ZS0+bmV3
VG90YWxBbmRMaW5lSXRlbXMpIHNoaXBwaW5nTWV0aG9kczp0b1BLU2hpcHBpbmdNZXRob2RzKHVw
ZGF0ZS0+bmV3U2hpcHBpbmdNZXRob2RzKV0pOworICAgIFtwbGF0Zm9ybURlbGVnYXRlKCkgY29t
cGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb246c2hpcHBpbmdDb250YWN0VXBkYXRlLmdldCgp
XTsKIH0KIAogdm9pZCBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcjo6Y29tcGxldGVTaGlw
cGluZ01ldGhvZFNlbGVjdGlvbihjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpTaGlwcGluZ01ldGhv
ZFVwZGF0ZT4mIHVwZGF0ZSkKIHsKICAgICBBU1NFUlQocGxhdGZvcm1EZWxlZ2F0ZSgpKTsKLSAg
ICBOU0FycmF5ICpzdW1tYXJ5SXRlbXMgPSB1cGRhdGUgPyB0b1BLUGF5bWVudFN1bW1hcnlJdGVt
cyh1cGRhdGUtPm5ld1RvdGFsQW5kTGluZUl0ZW1zKSA6IHBsYXRmb3JtRGVsZWdhdGUoKS5zdW1t
YXJ5SXRlbXM7Ci0gICAgW3BsYXRmb3JtRGVsZWdhdGUoKSBjb21wbGV0ZVNoaXBwaW5nTWV0aG9k
U2VsZWN0aW9uOnN1bW1hcnlJdGVtc107CisgICAgaWYgKCF1cGRhdGUpIHsKKyAgICAgICAgW3Bs
YXRmb3JtRGVsZWdhdGUoKSBjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uOm5pbF07Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBGSVhNRTogV2ViQ29yZTo6U2hpcHBpbmdN
ZXRob2RVcGRhdGUgc2hvdWxkIGtub3cgaG93IHRvIGNvbnZlcnQgaXRzZWxmIHRvIGEgUEtQYXlt
ZW50UmVxdWVzdFNoaXBwaW5nTWV0aG9kVXBkYXRlLgorICAgIGF1dG8gc2hpcHBpbmdNZXRob2RV
cGRhdGUgPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nTWV0aG9k
VXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0aFBheW1lbnRTdW1tYXJ5SXRlbXM6V2ViQ29yZTo6cGxh
dGZvcm1TdW1tYXJ5SXRlbXModXBkYXRlLT5uZXdUb3RhbEFuZExpbmVJdGVtcyldKTsKKyAgICBb
cGxhdGZvcm1EZWxlZ2F0ZSgpIGNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb246c2hpcHBp
bmdNZXRob2RVcGRhdGUuZ2V0KCldOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvV0tQYXltZW50QXV0aG9yaXphdGlv
bkRlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1dLUGF5bWVudEF1dGhv
cml6YXRpb25EZWxlZ2F0ZS5oCmluZGV4IDQwMzNhM2NkNmRkNGI4ZmRkZjQyZGNkZTExOTAyNjQ5
NzU1MDQyZWEuLmM5MzVmMjc2ZDhmMWFjMWYxYjk2MGFiZTNhODk1NmRhYTBkMWM2OTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvV0tQYXltZW50QXV0aG9yaXphdGlv
bkRlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9XS1BheW1lbnRB
dXRob3JpemF0aW9uRGVsZWdhdGUuaApAQCAtNTIsMTUgKzUyLDExIEBAIHVzaW5nIERpZFNlbGVj
dFNoaXBwaW5nTWV0aG9kQ29tcGxldGlvbiA9IEJsb2NrUHRyPHZvaWQoUEtQYXltZW50UmVxdWVz
dFNoaXBwaW5nCiAKIC0gKGluc3RhbmNldHlwZSlpbml0IE5TX1VOQVZBSUxBQkxFOwogCi1AcHJv
cGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgZGlkUmVhY2hGaW5hbFN0YXRlOwotQHBy
b3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU0FycmF5PFBLUGF5bWVudFN1bW1hcnlJdGVt
ICo+ICpzdW1tYXJ5SXRlbXM7Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TQXJy
YXk8UEtTaGlwcGluZ01ldGhvZCAqPiAqc2hpcHBpbmdNZXRob2RzOwotCiAtICh2b2lkKWNvbXBs
ZXRlTWVyY2hhbnRWYWxpZGF0aW9uOihQS1BheW1lbnRNZXJjaGFudFNlc3Npb24gKilzZXNzaW9u
IGVycm9yOihOU0Vycm9yICopZXJyb3I7Ci0tICh2b2lkKWNvbXBsZXRlUGF5bWVudE1ldGhvZFNl
bGVjdGlvbjooTlNBcnJheTxQS1BheW1lbnRTdW1tYXJ5SXRlbSAqPiAqKXN1bW1hcnlJdGVtczsK
Ky0gKHZvaWQpY29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uOihQS1BheW1lbnRSZXF1ZXN0
UGF5bWVudE1ldGhvZFVwZGF0ZSAqKXBheW1lbnRNZXRob2RVcGRhdGU7CiAtICh2b2lkKWNvbXBs
ZXRlUGF5bWVudFNlc3Npb246KFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMpc3RhdHVzIGVy
cm9yczooTlNBcnJheTxOU0Vycm9yICo+ICopZXJyb3JzIGRpZFJlYWNoRmluYWxTdGF0ZTooQk9P
TClkaWRSZWFjaEZpbmFsU3RhdGU7Ci0tICh2b2lkKWNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2Vs
ZWN0aW9uOihQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzKXN0YXR1cyBzdW1tYXJ5SXRlbXM6
KE5TQXJyYXk8UEtQYXltZW50U3VtbWFyeUl0ZW0gKj4gKilzdW1tYXJ5SXRlbXMgc2hpcHBpbmdN
ZXRob2RzOihOU0FycmF5PFBLU2hpcHBpbmdNZXRob2QgKj4gKilzaGlwcGluZ01ldGhvZHMgZXJy
b3JzOihOU0FycmF5PE5TRXJyb3IgKj4gKillcnJvcnM7Ci0tICh2b2lkKWNvbXBsZXRlU2hpcHBp
bmdNZXRob2RTZWxlY3Rpb246KE5TQXJyYXk8UEtQYXltZW50U3VtbWFyeUl0ZW0gKj4gKilzdW1t
YXJ5SXRlbXM7CistICh2b2lkKWNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uOihQS1Bh
eW1lbnRSZXF1ZXN0U2hpcHBpbmdDb250YWN0VXBkYXRlICopc2hpcHBpbmdDb250YWN0VXBkYXRl
OworLSAodm9pZCljb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uOihQS1BheW1lbnRSZXF1
ZXN0U2hpcHBpbmdNZXRob2RVcGRhdGUgKilzaGlwcGluZ01ldGhvZFVwZGF0ZTsKIC0gKHZvaWQp
aW52YWxpZGF0ZTsKIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9j
b2NvYS9XS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL2NvY29hL1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5tbQppbmRleCBmYTNl
OGJiNTIyNTczOTk2MzllZjQ4MDA5MTBlOWM2M2I2MzQ4NDdlLi5jOTBmZmY3Mzc0NmRlMTUxZmVm
YjcwNDViMjRmNmM5YzhjZDNlYTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L2NvY29hL1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL2NvY29hL1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5tbQpAQCAt
MzMsNiArMzMsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9QYXltZW50U2Vzc2lvbkVycm9yLmg+CiAK
IEBpbXBsZW1lbnRhdGlvbiBXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUgeworICAgIEJP
T0wgX2RpZFJlYWNoRmluYWxTdGF0ZTsKICAgICBSZXRhaW5QdHI8TlNBcnJheTxQS1BheW1lbnRT
dW1tYXJ5SXRlbSAqPj4gX3N1bW1hcnlJdGVtczsKICAgICBSZXRhaW5QdHI8TlNBcnJheTxQS1No
aXBwaW5nTWV0aG9kICo+PiBfc2hpcHBpbmdNZXRob2RzOwogICAgIFJldGFpblB0cjxOU0Vycm9y
PiBfc2Vzc2lvbkVycm9yOwpAQCAtNTksMTEgKzYwLDExIEBAIC0gKHZvaWQpY29tcGxldGVNZXJj
aGFudFZhbGlkYXRpb246KFBLUGF5bWVudE1lcmNoYW50U2Vzc2lvbiAqKXNlc3Npb24gZXJyb3I6
KE5TCiAgICAgc3RkOjpleGNoYW5nZShfZGlkUmVxdWVzdE1lcmNoYW50U2Vzc2lvbkNvbXBsZXRp
b24sIG5pbCkoc2Vzc2lvbiwgZXJyb3IpOwogfQogCi0tICh2b2lkKWNvbXBsZXRlUGF5bWVudE1l
dGhvZFNlbGVjdGlvbjooTlNBcnJheTxQS1BheW1lbnRTdW1tYXJ5SXRlbSAqPiAqKXN1bW1hcnlJ
dGVtcworLSAodm9pZCljb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb246KFBLUGF5bWVudFJl
cXVlc3RQYXltZW50TWV0aG9kVXBkYXRlICopcGF5bWVudE1ldGhvZFVwZGF0ZQogewotICAgIF9z
dW1tYXJ5SXRlbXMgPSBzdW1tYXJ5SXRlbXM7Ci0gICAgYXV0byB1cGRhdGUgPSBhZG9wdE5TKFtQ
QUw6OmFsbG9jUEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RVcGRhdGVJbnN0YW5jZSgpIGlu
aXRXaXRoUGF5bWVudFN1bW1hcnlJdGVtczpfc3VtbWFyeUl0ZW1zLmdldCgpXSk7Ci0gICAgc3Rk
OjpleGNoYW5nZShfZGlkU2VsZWN0UGF5bWVudE1ldGhvZENvbXBsZXRpb24sIG5pbCkodXBkYXRl
LmdldCgpKTsKKyAgICBQS1BheW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhvZFVwZGF0ZSAqdXBkYXRl
ID0gcGF5bWVudE1ldGhvZFVwZGF0ZSA/OiBbW1BBTDo6YWxsb2NQS1BheW1lbnRSZXF1ZXN0UGF5
bWVudE1ldGhvZFVwZGF0ZUluc3RhbmNlKCkgaW5pdFdpdGhQYXltZW50U3VtbWFyeUl0ZW1zOl9z
dW1tYXJ5SXRlbXMuZ2V0KCldIGF1dG9yZWxlYXNlXTsKKyAgICBfc3VtbWFyeUl0ZW1zID0gYWRv
cHROUyhbdXBkYXRlLnBheW1lbnRTdW1tYXJ5SXRlbXMgY29weV0pOworICAgIHN0ZDo6ZXhjaGFu
Z2UoX2RpZFNlbGVjdFBheW1lbnRNZXRob2RDb21wbGV0aW9uLCBuaWwpKHVwZGF0ZSk7CiB9CiAK
IC0gKHZvaWQpY29tcGxldGVQYXltZW50U2Vzc2lvbjooUEtQYXltZW50QXV0aG9yaXphdGlvblN0
YXR1cylzdGF0dXMgZXJyb3JzOihOU0FycmF5PE5TRXJyb3IgKj4gKillcnJvcnMgZGlkUmVhY2hG
aW5hbFN0YXRlOihCT09MKWRpZFJlYWNoRmluYWxTdGF0ZQpAQCAtNzIsMjEgKzczLDE5IEBAIC0g
KHZvaWQpY29tcGxldGVQYXltZW50U2Vzc2lvbjooUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1
cylzdGF0dXMgZXJyb3JzOihOU0FyCiAgICAgYXV0byByZXN1bHQgPSBhZG9wdE5TKFtQQUw6OmFs
bG9jUEtQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdEluc3RhbmNlKCkgaW5pdFdpdGhTdGF0dXM6
c3RhdHVzIGVycm9yczplcnJvcnNdKTsKICAgICBzdGQ6OmV4Y2hhbmdlKF9kaWRBdXRob3JpemVQ
YXltZW50Q29tcGxldGlvbiwgbmlsKShyZXN1bHQuZ2V0KCkpOwogfQotCi0tICh2b2lkKWNvbXBs
ZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uOihQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVz
KXN0YXR1cyBzdW1tYXJ5SXRlbXM6KE5TQXJyYXk8UEtQYXltZW50U3VtbWFyeUl0ZW0gKj4gKilz
dW1tYXJ5SXRlbXMgc2hpcHBpbmdNZXRob2RzOihOU0FycmF5PFBLU2hpcHBpbmdNZXRob2QgKj4g
KilzaGlwcGluZ01ldGhvZHMgZXJyb3JzOihOU0FycmF5PE5TRXJyb3IgKj4gKillcnJvcnMKKy0g
KHZvaWQpY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb246KFBLUGF5bWVudFJlcXVlc3RT
aGlwcGluZ0NvbnRhY3RVcGRhdGUgKilzaGlwcGluZ0NvbnRhY3RVcGRhdGUKIHsKLSAgICBfc3Vt
bWFyeUl0ZW1zID0gc3VtbWFyeUl0ZW1zOwotICAgIF9zaGlwcGluZ01ldGhvZHMgPSBzaGlwcGlu
Z01ldGhvZHM7Ci0gICAgQVNTRVJUKHN0YXR1cyA9PSBQS1BheW1lbnRBdXRob3JpemF0aW9uU3Rh
dHVzU3VjY2Vzcyk7Ci0gICAgYXV0byB1cGRhdGUgPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXlt
ZW50UmVxdWVzdFNoaXBwaW5nQ29udGFjdFVwZGF0ZUluc3RhbmNlKCkgaW5pdFdpdGhFcnJvcnM6
ZXJyb3JzIHBheW1lbnRTdW1tYXJ5SXRlbXM6X3N1bW1hcnlJdGVtcy5nZXQoKSBzaGlwcGluZ01l
dGhvZHM6X3NoaXBwaW5nTWV0aG9kcy5nZXQoKV0pOwotICAgIHN0ZDo6ZXhjaGFuZ2UoX2RpZFNl
bGVjdFNoaXBwaW5nQ29udGFjdENvbXBsZXRpb24sIG5pbCkodXBkYXRlLmdldCgpKTsKKyAgICBQ
S1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdDb250YWN0VXBkYXRlICp1cGRhdGUgPSBzaGlwcGluZ0Nv
bnRhY3RVcGRhdGUgPzogW1tQQUw6OmFsbG9jUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nQ29udGFj
dFVwZGF0ZUluc3RhbmNlKCkgaW5pdFdpdGhFcnJvcnM6QFtdIHBheW1lbnRTdW1tYXJ5SXRlbXM6
X3N1bW1hcnlJdGVtcy5nZXQoKSBzaGlwcGluZ01ldGhvZHM6X3NoaXBwaW5nTWV0aG9kcy5nZXQo
KV0gYXV0b3JlbGVhc2VdOworICAgIF9zdW1tYXJ5SXRlbXMgPSBhZG9wdE5TKFt1cGRhdGUucGF5
bWVudFN1bW1hcnlJdGVtcyBjb3B5XSk7CisgICAgX3NoaXBwaW5nTWV0aG9kcyA9IGFkb3B0TlMo
W3VwZGF0ZS5zaGlwcGluZ01ldGhvZHMgY29weV0pOworICAgIHN0ZDo6ZXhjaGFuZ2UoX2RpZFNl
bGVjdFNoaXBwaW5nQ29udGFjdENvbXBsZXRpb24sIG5pbCkodXBkYXRlKTsKIH0KIAotLSAodm9p
ZCljb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uOihOU0FycmF5PFBLUGF5bWVudFN1bW1h
cnlJdGVtICo+ICopc3VtbWFyeUl0ZW1zCistICh2b2lkKWNvbXBsZXRlU2hpcHBpbmdNZXRob2RT
ZWxlY3Rpb246KFBLUGF5bWVudFJlcXVlc3RTaGlwcGluZ01ldGhvZFVwZGF0ZSAqKXNoaXBwaW5n
TWV0aG9kVXBkYXRlCiB7Ci0gICAgX3N1bW1hcnlJdGVtcyA9IHN1bW1hcnlJdGVtczsKLSAgICBh
dXRvIHVwZGF0ZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdN
ZXRob2RVcGRhdGVJbnN0YW5jZSgpIGluaXRXaXRoUGF5bWVudFN1bW1hcnlJdGVtczpfc3VtbWFy
eUl0ZW1zLmdldCgpXSk7Ci0gICAgc3RkOjpleGNoYW5nZShfZGlkU2VsZWN0U2hpcHBpbmdNZXRo
b2RDb21wbGV0aW9uLCBuaWwpKHVwZGF0ZS5nZXQoKSk7CisgICAgUEtQYXltZW50UmVxdWVzdFNo
aXBwaW5nTWV0aG9kVXBkYXRlICp1cGRhdGUgPSBzaGlwcGluZ01ldGhvZFVwZGF0ZSA/OiBbW1BB
TDo6YWxsb2NQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdNZXRob2RVcGRhdGVJbnN0YW5jZSgpIGlu
aXRXaXRoUGF5bWVudFN1bW1hcnlJdGVtczpfc3VtbWFyeUl0ZW1zLmdldCgpXSBhdXRvcmVsZWFz
ZV07CisgICAgX3N1bW1hcnlJdGVtcyA9IGFkb3B0TlMoW3VwZGF0ZS5wYXltZW50U3VtbWFyeUl0
ZW1zIGNvcHldKTsKKyAgICBzdGQ6OmV4Y2hhbmdlKF9kaWRTZWxlY3RTaGlwcGluZ01ldGhvZENv
bXBsZXRpb24sIG5pbCkodXBkYXRlKTsKIH0KIAogLSAodm9pZClpbnZhbGlkYXRlCkBAIC0xNTks
NyArMTU4LDcgQEAgLSAodm9pZClfZGlkU2VsZWN0UGF5bWVudE1ldGhvZDooUEtQYXltZW50TWV0
aG9kICopcGF5bWVudE1ldGhvZCBjb21wbGV0aW9uOihXZWIKIAogICAgIGF1dG8gcHJlc2VudGVy
ID0gX3ByZXNlbnRlci5nZXQoKTsKICAgICBpZiAoIXByZXNlbnRlcikKLSAgICAgICAgcmV0dXJu
IFtzZWxmIGNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbjpAWyBdXTsKKyAgICAgICAgcmV0
dXJuIFtzZWxmIGNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbjpuaWxdOwogCiAgICAgcHJl
c2VudGVyLT5jbGllbnQoKS5wcmVzZW50ZXJEaWRTZWxlY3RQYXltZW50TWV0aG9kKCpwcmVzZW50
ZXIsIFdlYkNvcmU6OlBheW1lbnRNZXRob2QocGF5bWVudE1ldGhvZCkpOwogfQpAQCAtMTcxLDcg
KzE3MCw3IEBAIC0gKHZvaWQpX2RpZFNlbGVjdFNoaXBwaW5nQ29udGFjdDooUEtDb250YWN0ICop
Y29udGFjdCBjb21wbGV0aW9uOihXZWJLaXQ6OkRpZFNlCiAKICAgICBhdXRvIHByZXNlbnRlciA9
IF9wcmVzZW50ZXIuZ2V0KCk7CiAgICAgaWYgKCFwcmVzZW50ZXIpCi0gICAgICAgIHJldHVybiBb
c2VsZiBjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbjpQS1BheW1lbnRBdXRob3JpemF0
aW9uU3RhdHVzRmFpbHVyZSBzdW1tYXJ5SXRlbXM6QFsgXSBzaGlwcGluZ01ldGhvZHM6QFsgXSBl
cnJvcnM6QFsgXV07CisgICAgICAgIHJldHVybiBbc2VsZiBjb21wbGV0ZVNoaXBwaW5nQ29udGFj
dFNlbGVjdGlvbjpuaWxdOwogCiAgICAgcHJlc2VudGVyLT5jbGllbnQoKS5wcmVzZW50ZXJEaWRT
ZWxlY3RTaGlwcGluZ0NvbnRhY3QoKnByZXNlbnRlciwgV2ViQ29yZTo6UGF5bWVudENvbnRhY3Qo
Y29udGFjdCkpOwogfQpAQCAtMTk2LDcgKzE5NSw3IEBAIC0gKHZvaWQpX2RpZFNlbGVjdFNoaXBw
aW5nTWV0aG9kOihQS1NoaXBwaW5nTWV0aG9kICopc2hpcHBpbmdNZXRob2QgY29tcGxldGlvbjoo
CiAKICAgICBhdXRvIHByZXNlbnRlciA9IF9wcmVzZW50ZXIuZ2V0KCk7CiAgICAgaWYgKCFwcmVz
ZW50ZXIpCi0gICAgICAgIHJldHVybiBbc2VsZiBjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0
aW9uOkBbIF1dOworICAgICAgICByZXR1cm4gW3NlbGYgY29tcGxldGVTaGlwcGluZ01ldGhvZFNl
bGVjdGlvbjpuaWxdOwogCiAgICAgcHJlc2VudGVyLT5jbGllbnQoKS5wcmVzZW50ZXJEaWRTZWxl
Y3RTaGlwcGluZ01ldGhvZCgqcHJlc2VudGVyLCB0b1NoaXBwaW5nTWV0aG9kKHNoaXBwaW5nTWV0
aG9kKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkv
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaAppbmRleCA2YjM2NzczZmVkNDI1YTllNDRjNzdk
ODExY2I3MWVhZjBmOWQ4Y2FjLi40NjdjYWU0ZTNkMDIyZTFiMjRiNjRmNWVhNmMyNzliODBkM2Mx
OWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5LmgKQEAgLTU1LDYgKzU1LDcgQEAgY2xhc3MgUGF5bWVu
dDsKIGNsYXNzIFBheW1lbnRDb250YWN0OwogY2xhc3MgUGF5bWVudE1lcmNoYW50U2Vzc2lvbjsK
IGNsYXNzIFBheW1lbnRNZXRob2Q7CitjbGFzcyBQYXltZW50TWV0aG9kVXBkYXRlOwogfQogCiBP
QkpDX0NMQVNTIE5TT2JqZWN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBw
bGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2Nv
YS5oCmluZGV4IDRlOTQyYjk2OGE0MzllNjM0YmY4YWU3YjkyNjNjYTYyNGIzODY4MWMuLjJkNjQw
OGJlZjZmOTViOWY2ZDFiMTAzZDk0NWU5OWRmZWFhMzliYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29j
b2EuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eUNvY29hLmgKQEAgLTMzLDEwICszMyw3IEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogCiAvLyBGSVhNRTogUmF0aGVyIHRoYW4gaGF2aW5nIHRoZXNlIGZyZWUgZnVuY3Rpb25z
IHNjYXR0ZXJlZCBhYm91dCwgQXBwbGUgUGF5IGRhdGEgdHlwZXMgc2hvdWxkIGtub3cKIC8vIGhv
dyB0byBjb252ZXJ0IHRoZW1zZWx2ZXMgdG8gYW5kIGZyb20gdGhlaXIgcGxhdGZvcm0gcmVwcmVz
ZW50YXRpb25zLgotTlNBcnJheSAqdG9QS1BheW1lbnRTdW1tYXJ5SXRlbXMoY29uc3QgV2ViQ29y
ZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zJik7CiBO
U0RlY2ltYWxOdW1iZXIgKnRvRGVjaW1hbE51bWJlcihjb25zdCBTdHJpbmcmIGFtb3VudCk7Ci1Q
S1BheW1lbnRTdW1tYXJ5SXRlbSAqdG9QS1BheW1lbnRTdW1tYXJ5SXRlbShjb25zdCBXZWJDb3Jl
OjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGluZUl0ZW0mKTsKLVBLUGF5bWVudFN1
bW1hcnlJdGVtVHlwZSB0b1BLUGF5bWVudFN1bW1hcnlJdGVtVHlwZShXZWJDb3JlOjpBcHBsZVBh
eVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGluZUl0ZW06OlR5cGUpOwogUEtTaGlwcGluZ01ldGhv
ZCAqdG9QS1NoaXBwaW5nTWV0aG9kKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1l
bnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZCYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRD
b29yZGluYXRvclByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9j
b2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCmluZGV4IDg3NWMzNDkyNDI3
MTgxNTQ3ZDBkY2RhYTFjNDlmZWIyZmFlNGQ2MDkuLjU5MTU2OTgzODZkOTllM2JjM2Y3N2U4MDhk
ZWU2Mzg4ZGZhODRhOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5
L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2Nv
YS5tbQpAQCAtMTA5LDE3ICsxMDksNiBAQCBzdGF0aWMgUmV0YWluUHRyPE5TU2V0PiB0b1BLQ29u
dGFjdEZpZWxkcyhjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UgogICAgIHJl
dHVybiBhZG9wdE5TKFtbTlNTZXQgYWxsb2NdIGluaXRXaXRoT2JqZWN0czpyZXN1bHQuZGF0YSgp
IGNvdW50OnJlc3VsdC5zaXplKCldKTsKIH0KIAotUEtQYXltZW50U3VtbWFyeUl0ZW1UeXBlIHRv
UEtQYXltZW50U3VtbWFyeUl0ZW1UeXBlKFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRS
ZXF1ZXN0OjpMaW5lSXRlbTo6VHlwZSB0eXBlKQotewotICAgIHN3aXRjaCAodHlwZSkgewotICAg
IGNhc2UgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtOjpU
eXBlOjpGaW5hbDoKLSAgICAgICAgcmV0dXJuIFBLUGF5bWVudFN1bW1hcnlJdGVtVHlwZUZpbmFs
OwotCi0gICAgY2FzZSBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGlu
ZUl0ZW06OlR5cGU6OlBlbmRpbmc6Ci0gICAgICAgIHJldHVybiBQS1BheW1lbnRTdW1tYXJ5SXRl
bVR5cGVQZW5kaW5nOwotICAgIH0KLX0KLQogTlNEZWNpbWFsTnVtYmVyICp0b0RlY2ltYWxOdW1i
ZXIoY29uc3QgU3RyaW5nJiBhbW91bnQpCiB7CiAgICAgaWYgKCFhbW91bnQpCkBAIC0xMjcsMjUg
KzExNiw2IEBAIE5TRGVjaW1hbE51bWJlciAqdG9EZWNpbWFsTnVtYmVyKGNvbnN0IFN0cmluZyYg
YW1vdW50KQogICAgIHJldHVybiBbTlNEZWNpbWFsTnVtYmVyIGRlY2ltYWxOdW1iZXJXaXRoU3Ry
aW5nOmFtb3VudCBsb2NhbGU6QHsgTlNMb2NhbGVEZWNpbWFsU2VwYXJhdG9yIDogQCIuIiB9XTsK
IH0KIAotUEtQYXltZW50U3VtbWFyeUl0ZW0gKnRvUEtQYXltZW50U3VtbWFyeUl0ZW0oY29uc3Qg
V2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtJiBsaW5lSXRl
bSkKLXsKLSAgICByZXR1cm4gW1BBTDo6Z2V0UEtQYXltZW50U3VtbWFyeUl0ZW1DbGFzcygpIHN1
bW1hcnlJdGVtV2l0aExhYmVsOmxpbmVJdGVtLmxhYmVsIGFtb3VudDp0b0RlY2ltYWxOdW1iZXIo
bGluZUl0ZW0uYW1vdW50KSB0eXBlOnRvUEtQYXltZW50U3VtbWFyeUl0ZW1UeXBlKGxpbmVJdGVt
LnR5cGUpXTsKLX0KLQotTlNBcnJheSAqdG9QS1BheW1lbnRTdW1tYXJ5SXRlbXMoY29uc3QgV2Vi
Q29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zJiB0
b3RhbEFuZExpbmVJdGVtcykKLXsKLSAgICBOU011dGFibGVBcnJheSAqcGF5bWVudFN1bW1hcnlJ
dGVtcyA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTp0b3RhbEFuZExpbmVJdGVt
cy5saW5lSXRlbXMuc2l6ZSgpICsgMV07Ci0gICAgZm9yIChhdXRvJiBsaW5lSXRlbSA6IHRvdGFs
QW5kTGluZUl0ZW1zLmxpbmVJdGVtcykgewotICAgICAgICBpZiAoUEtQYXltZW50U3VtbWFyeUl0
ZW0gKnN1bW1hcnlJdGVtID0gdG9QS1BheW1lbnRTdW1tYXJ5SXRlbShsaW5lSXRlbSkpCi0gICAg
ICAgICAgICBbcGF5bWVudFN1bW1hcnlJdGVtcyBhZGRPYmplY3Q6c3VtbWFyeUl0ZW1dOwotICAg
IH0KLQotICAgIGlmIChQS1BheW1lbnRTdW1tYXJ5SXRlbSAqdG90YWxJdGVtID0gdG9QS1BheW1l
bnRTdW1tYXJ5SXRlbSh0b3RhbEFuZExpbmVJdGVtcy50b3RhbCkpCi0gICAgICAgIFtwYXltZW50
U3VtbWFyeUl0ZW1zIGFkZE9iamVjdDp0b3RhbEl0ZW1dOwotCi0gICAgcmV0dXJuIHBheW1lbnRT
dW1tYXJ5SXRlbXM7Ci19Ci0KIHN0YXRpYyBQS01lcmNoYW50Q2FwYWJpbGl0eSB0b1BLTWVyY2hh
bnRDYXBhYmlsaXRpZXMoY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVl
c3Q6Ok1lcmNoYW50Q2FwYWJpbGl0aWVzJiBtZXJjaGFudENhcGFiaWxpdGllcykKIHsKICAgICBQ
S01lcmNoYW50Q2FwYWJpbGl0eSByZXN1bHQgPSAwOwpAQCAtMjU2LDE2ICsyMjYsNyBAQCBSZXRh
aW5QdHI8UEtQYXltZW50UmVxdWVzdD4gV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRm
b3JtUGF5bWVudFJlcXVlc3QoYwogICAgICAgICBbc2hpcHBpbmdNZXRob2RzIGFkZE9iamVjdDp0
b1BLU2hpcHBpbmdNZXRob2Qoc2hpcHBpbmdNZXRob2QpXTsKICAgICBbcmVzdWx0IHNldFNoaXBw
aW5nTWV0aG9kczpzaGlwcGluZ01ldGhvZHMuZ2V0KCldOwogCi0gICAgYXV0byBwYXltZW50U3Vt
bWFyeUl0ZW1zID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7Ci0gICAg
Zm9yIChhdXRvJiBsaW5lSXRlbSA6IHBheW1lbnRSZXF1ZXN0LmxpbmVJdGVtcygpKSB7Ci0gICAg
ICAgIGlmIChQS1BheW1lbnRTdW1tYXJ5SXRlbSAqc3VtbWFyeUl0ZW0gPSB0b1BLUGF5bWVudFN1
bW1hcnlJdGVtKGxpbmVJdGVtKSkKLSAgICAgICAgICAgIFtwYXltZW50U3VtbWFyeUl0ZW1zIGFk
ZE9iamVjdDpzdW1tYXJ5SXRlbV07Ci0gICAgfQotCi0gICAgaWYgKFBLUGF5bWVudFN1bW1hcnlJ
dGVtICp0b3RhbEl0ZW0gPSB0b1BLUGF5bWVudFN1bW1hcnlJdGVtKHBheW1lbnRSZXF1ZXN0LnRv
dGFsKCkpKQotICAgICAgICBbcGF5bWVudFN1bW1hcnlJdGVtcyBhZGRPYmplY3Q6dG90YWxJdGVt
XTsKLQotICAgIFtyZXN1bHQgc2V0UGF5bWVudFN1bW1hcnlJdGVtczpwYXltZW50U3VtbWFyeUl0
ZW1zLmdldCgpXTsKKyAgICBbcmVzdWx0IHNldFBheW1lbnRTdW1tYXJ5SXRlbXM6V2ViQ29yZTo6
cGxhdGZvcm1TdW1tYXJ5SXRlbXMocGF5bWVudFJlcXVlc3QudG90YWwoKSwgcGF5bWVudFJlcXVl
c3QubGluZUl0ZW1zKCkpXTsKIAogICAgIFtyZXN1bHQgc2V0RXhwZWN0c01lcmNoYW50U2Vzc2lv
bjpZRVNdOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3Jl
QXJndW1lbnRDb2RlcnNDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNv
cmVBcmd1bWVudENvZGVyc0NvY29hLm1tCmluZGV4IGVlMDAzNzc3ZjM5YzE2NTllYWUyNGJiMWQ5
OGI1OWJlNDk3OTYyMmQuLjMyYmY4MGNkYTMzYTE3MmFjYmE3OTlkYzE4YzdkYzg3MjU2ZGUzYTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENv
ZGVyc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1
bWVudENvZGVyc0NvY29hLm1tCkBAIC0xNjEsMTYgKzE2MSwxNiBAQCBPcHRpb25hbDxXZWJDb3Jl
OjpQYXltZW50TWV0aG9kPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRNZXRob2Q+Ojpk
ZWNvZGUoRAogCiB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudE1ldGhvZFVwZGF0
ZT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpQYXltZW50TWV0aG9k
VXBkYXRlJiB1cGRhdGUpCiB7Ci0gICAgZW5jb2RlciA8PCB1cGRhdGUubmV3VG90YWxBbmRMaW5l
SXRlbXM7CisgICAgZW5jb2RlciA8PCB1cGRhdGUucGxhdGZvcm1VcGRhdGUoKTsKIH0KIAogT3B0
aW9uYWw8V2ViQ29yZTo6UGF5bWVudE1ldGhvZFVwZGF0ZT4gQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpQYXltZW50TWV0aG9kVXBkYXRlPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAg
T3B0aW9uYWw8QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1z
PiBuZXdUb3RhbEFuZExpbmVJdGVtczsKLSAgICBkZWNvZGVyID4+IG5ld1RvdGFsQW5kTGluZUl0
ZW1zOwotICAgIGlmICghbmV3VG90YWxBbmRMaW5lSXRlbXMpCisgICAgYXV0byB1cGRhdGUgPSBJ
UEM6OmRlY29kZTxQS1BheW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhvZFVwZGF0ZT4oZGVjb2Rlciwg
UEFMOjpnZXRQS1BheW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhvZFVwZGF0ZUNsYXNzKCkpOworICAg
IGlmICghdXBkYXRlKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIHJldHVybiB7
eyBXVEZNb3ZlKCpuZXdUb3RhbEFuZExpbmVJdGVtcykgfX07CisKKyAgICByZXR1cm4gUGF5bWVu
dE1ldGhvZFVwZGF0ZSB7IFdURk1vdmUoKnVwZGF0ZSkgfTsKIH0KIAogdm9pZCBBcmd1bWVudENv
ZGVyPEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIsIGNvbnN0IEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiByZXF1ZXN0KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379257</attachid>
            <date>2019-09-20 12:45:24 -0700</date>
            <delta_ts>2019-09-20 13:09:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202018-20190920124523.patch</filename>
            <type>text/plain</type>
            <size>51705</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwMTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGFlMjU4YWNlMTc5Njhh
N2I4YjIzOWIxYTgyODY4ZTY1ZWYxZDlhNy4uZDQ5YjYxZGQyMzE2N2Q1MTNmMmViNWJjMTJjZTY4
MzM0OGM0OWVjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE5LTA5LTE5ICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQXBwbGUgUGF5XSBDbGVhbiB1
cCBoYW5kbGluZyBvZiBzdW1tYXJ5IGl0ZW1zIGFuZCBwYXltZW50IG1ldGhvZCB1cGRhdGVzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDIwMTgKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU1NDcwNjMyPgorCisgICAgICAgIFJldmlld2VkIGJ5IFRp
bSBIb3J0b24uCisKKyAgICAgICAgUmVwbGFjZWQgdGhlIFBheW1lbnRNZXRob2RVcGRhdGUgc3Ry
dWN0IHdpdGggYSBjbGFzcyB0aGF0IGtub3dzIGhvdyB0byBjb252ZXJ0IGZyb20KKyAgICAgICAg
QXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlIHN0cnVjdHMgdG8gUEtQYXltZW50UmVxdWVzdFBh
eW1lbnRNZXRob2RVcGRhdGUgaW5zdGFuY2VzLgorCisgICAgICAgIE1vdmVkIHNvbWUgc2NhdHRl
cmVkLWFyb3VuZCBmcmVlIGZ1bmN0aW9ucyBmb3IgY29udmVydGluZyBwYXltZW50IHN1bW1hcnkg
aXRlbXMgaW50bworICAgICAgICBQYXltZW50U3VtbWFyeUl0ZW1zey5oLENvY29hLm1tfS4KKwor
ICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlLmg6
CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6ZmluaXNoQ29udmVydGluZyk6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0
QW5kVmFsaWRhdGVUb3RhbCk6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0QW5kVmFsaWRhdGUp
OgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVl
c3QuaDoKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvci5oOgor
ICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Lmg6Cisg
ICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9QYXltZW50SGVhZGVycy5oOgorICAgICAgICAqIE1v
ZHVsZXMvYXBwbGVwYXkvUGF5bWVudE1ldGhvZFVwZGF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBN
b2R1bGVzL2FwcGxlcGF5L1BheW1lbnRTdW1tYXJ5SXRlbXMuaDogQWRkZWQuCisgICAgICAgICog
TW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50TWV0aG9kVXBkYXRlQ29jb2EubW06IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudE1ldGhvZFVwZGF0ZTo6UGF5bWVudE1ldGhvZFVw
ZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXltZW50TWV0aG9kVXBkYXRlOjp0b3RhbEFuZExp
bmVJdGVtcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYXltZW50TWV0aG9kVXBkYXRlOjpw
bGF0Zm9ybVVwZGF0ZSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9Q
YXltZW50U3VtbWFyeUl0ZW1zQ29jb2EubW06IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6dG9E
ZWNpbWFsTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OnRvUEtQYXltZW50U3VtbWFyeUl0ZW1U
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvUEtQYXltZW50U3VtbWFyeUl0ZW0pOgorICAgICAg
ICAoV2ViQ29yZTo6cGxhdGZvcm1TdW1tYXJ5SXRlbXMpOgorICAgICAgICAqIE1vZHVsZXMvYXBw
bGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQYXltZW50SGFuZGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpwYXltZW50TWV0aG9kVXBkYXRlZCk6
CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogdGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5h
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tQYXltZW50Q29vcmRpbmF0b3I6OmNvbXBs
ZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbik6CisKIDIwMTktMDktMTkgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBXb3JrZXJHbG9iYWxTY29wZSBkb2VzIG5vdCBu
ZWVkIGEgU2Vzc2lvbklECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGEzNTM2MmI2ODA5NjViNGE3NjI5ZWFjN2E2OTE4
ZThhZTliMTM5NmMuLmE2ZDllNDlmMzcxNjFjZTU2MTE2Nzc1ZjM4OTA2NDY5NjZkZTVjMzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTktMDktMTkgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNA
YXBwbGUuY29tPgorCisgICAgICAgIFtBcHBsZSBQYXldIENsZWFuIHVwIGhhbmRsaW5nIG9mIHN1
bW1hcnkgaXRlbXMgYW5kIHBheW1lbnQgbWV0aG9kIHVwZGF0ZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjAxOAorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNTU0NzA2MzI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAg
ICAgICBOb3cgdGhhdCBQYXltZW50TWV0aG9kVXBkYXRlIGtub3dzIGhvdyB0byBjb252ZXJ0IGl0
c2VsZiB0byBhCisgICAgICAgIFBLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRlLCBQ
YXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlciBjYW4gbWVyZWx5IHBhc3MgdGhlCisgICAgICAg
IGNvbnZlcnRlZCB1cGRhdGUgZGlyZWN0bHkgdG8gdGhlIHBsYXRmb3JtIGRlbGVnYXRlIHJhdGhl
ciB0aGFuIHBhc3NpbmcgdGhlIGluZGl2aWR1YWwKKyAgICAgICAgY29tcG9uZW50cyBhbmQgcmVs
eWluZyBvbiB0aGUgZGVsZWdhdGUgdG8gaW5zdGFudGlhdGUgdGhlIHBsYXRmb3JtIHVwZGF0ZSBp
dHNlbGYuIEFkZGVkCisgICAgICAgIEZJWE1FcyBmb3IgYXBwbHlpbmcgYSBzaW1pbGFyIHRyZWF0
bWVudCB0byBTaGlwcGluZ0NvbnRhY3RVcGRhdGUgYW5kIFNoaXBwaW5nTWV0aG9kVXBkYXRlLgor
CisgICAgICAgICogUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIu
aDoKKyAgICAgICAgKiBQbGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRl
ci5tbToKKyAgICAgICAgKFdlYktpdDo6UGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXI6OmNv
bXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlBheW1lbnRB
dXRob3JpemF0aW9uUHJlc2VudGVyOjpjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OlBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyOjpjb21wbGV0
ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKToKKyAgICAgICAgKiBQbGF0Zm9ybS9jb2NvYS9XS1Bh
eW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9jb2NvYS9X
S1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUubW06CisgICAgICAgICgtW1dLUGF5bWVudEF1
dGhvcml6YXRpb25EZWxlZ2F0ZSBjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb246XSk6Cisg
ICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZSBjb21wbGV0ZVNoaXBwaW5n
Q29udGFjdFNlbGVjdGlvbjpdKToKKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvbkRl
bGVnYXRlIGNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb246XSk6CisgICAgICAgICgtW1dL
UGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZSBfZGlkU2VsZWN0UGF5bWVudE1ldGhvZDpjb21w
bGV0aW9uOl0pOgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUgX2Rp
ZFNlbGVjdFNoaXBwaW5nQ29udGFjdDpjb21wbGV0aW9uOl0pOgorICAgICAgICAoLVtXS1BheW1l
bnRBdXRob3JpemF0aW9uRGVsZWdhdGUgX2RpZFNlbGVjdFNoaXBwaW5nTWV0aG9kOmNvbXBsZXRp
b246XSk6CisgICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZSBjb21wbGV0
ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbjpzdW1tYXJ5SXRlbXM6c2hpcHBpbmdNZXRob2RzOmVy
cm9yczpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHkuaDoKKyAgICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvY29jb2EvV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oOgorICAgICAgICAqIFNoYXJlZC9BcHBsZVBheS9j
b2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1QYXltZW50UmVxdWVzdCk6Cisg
ICAgICAgIChXZWJLaXQ6OnRvUEtQYXltZW50U3VtbWFyeUl0ZW1UeXBlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6dG9QS1BheW1lbnRTdW1tYXJ5SXRlbSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OnRvUEtQYXltZW50U3VtbWFyeUl0ZW1zKTogRGVsZXRlZC4KKyAgICAgICAgKiBT
aGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW06CisgICAgICAgIChJUEM6
OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudE1ldGhvZFVwZGF0ZT46OmVuY29kZSk6Cisg
ICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudE1ldGhvZFVwZGF0ZT46
OmRlY29kZSk6CisKIDIwMTktMDktMTkgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgbWFjQ2F0YWx5c3QgYXBwcyBjcmFzaCB1bmRlciBUZXh0Q2hlY2tp
bmdDb250cm9sbGVyUHJveHk6OnJlcGxhY2VSZWxhdGl2ZVRvU2VsZWN0aW9uIHdoZW4gc3BlbGwg
Y2hlY2tpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBw
bGVQYXlQYXltZW50TWV0aG9kVXBkYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L0FwcGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZS5oCmluZGV4IGE3MzIyMTI0YjVlYjZmNjll
MWQ0MGNkYjVjODAyNjMwMWJkYjQxNDIuLjViNjczZDNkZTRiMWM2YTY0MjNkMWVkYTU5ZWIxNDlk
MjE4MGNhODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBw
bGVQYXlQYXltZW50TWV0aG9kVXBkYXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9BcHBsZVBheVBheW1lbnRNZXRob2RVcGRhdGUuaApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSwxMSArMjksMjAgQEAKIAog
I2luY2x1ZGUgIkFwcGxlUGF5TGluZUl0ZW0uaCIKIAorI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9T
REspCisjaW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL0FwcGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0
ZUFkZGl0aW9ucy5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IEFw
cGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZSB7CiAgICAgQXBwbGVQYXlMaW5lSXRlbSBuZXdUb3Rh
bDsKICAgICBWZWN0b3I8QXBwbGVQYXlMaW5lSXRlbT4gbmV3TGluZUl0ZW1zOworCisjaWYgZGVm
aW5lZChBUFBMRVBBWVBBWU1FTlRNRVRIT0RVUERBVEVfQURESVRJT05TKQorQVBQTEVQQVlQQVlN
RU5UTUVUSE9EVVBEQVRFX0FERElUSU9OUworI3VuZGVmIEFQUExFUEFZUEFZTUVOVE1FVEhPRFVQ
REFURV9BRERJVElPTlMKKyNlbmRpZgogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uY3BwCmluZGV4IDg1YTAyYmVlMjBhMDhi
NWRlYWJkMDNhNDNhNzI2N2JjMGU5NGYxY2MuLjY5ZjhlMzJkNjA4MmQyZjNhM2E1ZTA1MGMzNzI0
OThkYWZjMzAwNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkv
QXBwbGVQYXlTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5U2Vzc2lvbi5jcHAKQEAgLTU3LDEyICs1NywyMSBAQAogI2luY2x1ZGUgIlBheW1l
bnRDb29yZGluYXRvci5oIgogI2luY2x1ZGUgIlBheW1lbnRNZXJjaGFudFNlc3Npb24uaCIKICNp
bmNsdWRlICJQYXltZW50TWV0aG9kLmgiCisjaW5jbHVkZSAiUGF5bWVudE1ldGhvZFVwZGF0ZS5o
IgogI2luY2x1ZGUgIlBheW1lbnRSZXF1ZXN0VmFsaWRhdG9yLmgiCiAjaW5jbHVkZSAiU2VjdXJp
dHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJl
SW5kaWNhdG9yLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIAorI2lmIFVT
RShBUFBMRV9JTlRFUk5BTF9TREspCisjaW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL0FwcGxlUGF5
U2Vzc2lvbkFkZGl0aW9ucy5jcHA+CisjZWxzZQorbmFtZXNwYWNlIFdlYkNvcmUgeworc3RhdGlj
IHZvaWQgZmluaXNoQ29udmVydGluZyhQYXltZW50TWV0aG9kVXBkYXRlJiwgQXBwbGVQYXlQYXlt
ZW50TWV0aG9kVXBkYXRlJiYpIHsgfQorfQorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEFwcGxlUGF5U2Vzc2lvbik7CkBAIC0xMzks
MTIgKzE0OCwxMyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJl
cXVlc3Q6OkxpbmVJdGVtPiBjb252ZXJ0QW5kVmFsaWRhdGVUbwogICAgIGlmICghdmFsaWRhdGVB
bW91bnQobGluZUl0ZW0uYW1vdW50KSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVF
cnJvciwgbWFrZVN0cmluZygiXCIiICsgbGluZUl0ZW0uYW1vdW50LCAiXCIgaXMgbm90IGEgdmFs
aWQgYW1vdW50LiIpIH07CiAKLSAgICBBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGlu
ZUl0ZW0gcmVzdWx0OwotICAgIHJlc3VsdC5hbW91bnQgPSBsaW5lSXRlbS5hbW91bnQ7Ci0gICAg
cmVzdWx0LnR5cGUgPSBsaW5lSXRlbS50eXBlOwotICAgIHJlc3VsdC5sYWJlbCA9IGxpbmVJdGVt
LmxhYmVsOworICAgIEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbSB0b3Rh
bCB7IGxpbmVJdGVtLnR5cGUsIGxpbmVJdGVtLmFtb3VudCwgbGluZUl0ZW0ubGFiZWwgfTsKIAot
ICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdCk7CisgICAgYXV0byB2YWxpZGF0ZWRUb3RhbCA9IFBh
eW1lbnRSZXF1ZXN0VmFsaWRhdG9yOjp2YWxpZGF0ZVRvdGFsKHRvdGFsKTsKKyAgICBpZiAodmFs
aWRhdGVkVG90YWwuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiB2YWxpZGF0ZWRUb3Rh
bC5yZWxlYXNlRXhjZXB0aW9uKCk7CisKKyAgICByZXR1cm4gV1RGTW92ZSh0b3RhbCk7CiB9CiAK
IHN0YXRpYyBFeGNlcHRpb25PcjxBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGluZUl0
ZW0+IGNvbnZlcnRBbmRWYWxpZGF0ZShBcHBsZVBheUxpbmVJdGVtJiYgbGluZUl0ZW0pCkBAIC0z
MTgsMjMgKzMyOCwxNiBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8UGF5bWVudEF1dGhvcml6YXRpb25S
ZXN1bHQ+IGNvbnZlcnRBbmRWYWxpZGF0ZShBcHBsZVBheVBheW1lbgogCiBzdGF0aWMgRXhjZXB0
aW9uT3I8UGF5bWVudE1ldGhvZFVwZGF0ZT4gY29udmVydEFuZFZhbGlkYXRlKEFwcGxlUGF5UGF5
bWVudE1ldGhvZFVwZGF0ZSYmIHVwZGF0ZSkKIHsKLSAgICBQYXltZW50TWV0aG9kVXBkYXRlIGNv
bnZlcnRlZFVwZGF0ZTsKLQogICAgIGF1dG8gY29udmVydGVkTmV3VG90YWwgPSBjb252ZXJ0QW5k
VmFsaWRhdGVUb3RhbChXVEZNb3ZlKHVwZGF0ZS5uZXdUb3RhbCkpOwogICAgIGlmIChjb252ZXJ0
ZWROZXdUb3RhbC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGNvbnZlcnRlZE5ld1Rv
dGFsLnJlbGVhc2VFeGNlcHRpb24oKTsKLSAgICBjb252ZXJ0ZWRVcGRhdGUubmV3VG90YWxBbmRM
aW5lSXRlbXMudG90YWwgPSBjb252ZXJ0ZWROZXdUb3RhbC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsK
LQotICAgIC8vIEZJWE1FOiBNZXJnZSB0aGlzIHZhbGlkYXRpb24gaW50byB0aGUgdmFsaWRhdGlv
biB3ZSBhcmUgZG9pbmcgYWJvdmUuCi0gICAgYXV0byB2YWxpZGF0ZWRUb3RhbCA9IFBheW1lbnRS
ZXF1ZXN0VmFsaWRhdG9yOjp2YWxpZGF0ZVRvdGFsKGNvbnZlcnRlZFVwZGF0ZS5uZXdUb3RhbEFu
ZExpbmVJdGVtcy50b3RhbCk7Ci0gICAgaWYgKHZhbGlkYXRlZFRvdGFsLmhhc0V4Y2VwdGlvbigp
KQotICAgICAgICByZXR1cm4gdmFsaWRhdGVkVG90YWwucmVsZWFzZUV4Y2VwdGlvbigpOwogCiAg
ICAgYXV0byBjb252ZXJ0ZWROZXdMaW5lSXRlbXMgPSBjb252ZXJ0QW5kVmFsaWRhdGUoV1RGTW92
ZSh1cGRhdGUubmV3TGluZUl0ZW1zKSk7CiAgICAgaWYgKGNvbnZlcnRlZE5ld0xpbmVJdGVtcy5o
YXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGNvbnZlcnRlZE5ld0xpbmVJdGVtcy5yZWxl
YXNlRXhjZXB0aW9uKCk7CiAKLSAgICBjb252ZXJ0ZWRVcGRhdGUubmV3VG90YWxBbmRMaW5lSXRl
bXMubGluZUl0ZW1zID0gY29udmVydGVkTmV3TGluZUl0ZW1zLnJlbGVhc2VSZXR1cm5WYWx1ZSgp
OworICAgIFBheW1lbnRNZXRob2RVcGRhdGUgY29udmVydGVkVXBkYXRlIHsgY29udmVydGVkTmV3
VG90YWwucmVsZWFzZVJldHVyblZhbHVlKCksIGNvbnZlcnRlZE5ld0xpbmVJdGVtcy5yZWxlYXNl
UmV0dXJuVmFsdWUoKSB9OworICAgIGZpbmlzaENvbnZlcnRpbmcoY29udmVydGVkVXBkYXRlLCBX
VEZNb3ZlKHVwZGF0ZSkpOwogCiAgICAgcmV0dXJuIFdURk1vdmUoY29udmVydGVkVXBkYXRlKTsK
IH0KQEAgLTM1NSwxMSArMzU4LDYgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPFNoaXBwaW5nQ29udGFj
dFVwZGF0ZT4gY29udmVydEFuZFZhbGlkYXRlKEFwcGxlUGF5U2hpcHBpbmdDb24KICAgICAgICAg
cmV0dXJuIGNvbnZlcnRlZE5ld1RvdGFsLnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICBjb252ZXJ0
ZWRVcGRhdGUubmV3VG90YWxBbmRMaW5lSXRlbXMudG90YWwgPSBjb252ZXJ0ZWROZXdUb3RhbC5y
ZWxlYXNlUmV0dXJuVmFsdWUoKTsKIAotICAgIC8vIEZJWE1FOiBNZXJnZSB0aGlzIHZhbGlkYXRp
b24gaW50byB0aGUgdmFsaWRhdGlvbiB3ZSBhcmUgZG9pbmcgYWJvdmUuCi0gICAgYXV0byB2YWxp
ZGF0ZWRUb3RhbCA9IFBheW1lbnRSZXF1ZXN0VmFsaWRhdG9yOjp2YWxpZGF0ZVRvdGFsKGNvbnZl
cnRlZFVwZGF0ZS5uZXdUb3RhbEFuZExpbmVJdGVtcy50b3RhbCk7Ci0gICAgaWYgKHZhbGlkYXRl
ZFRvdGFsLmhhc0V4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4gdmFsaWRhdGVkVG90YWwucmVs
ZWFzZUV4Y2VwdGlvbigpOwotCiAgICAgYXV0byBjb252ZXJ0ZWROZXdMaW5lSXRlbXMgPSBjb252
ZXJ0QW5kVmFsaWRhdGUoV1RGTW92ZSh1cGRhdGUubmV3TGluZUl0ZW1zKSk7CiAgICAgaWYgKGNv
bnZlcnRlZE5ld0xpbmVJdGVtcy5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGNvbnZl
cnRlZE5ld0xpbmVJdGVtcy5yZWxlYXNlRXhjZXB0aW9uKCk7CkBAIC0zNzgsMTEgKzM3Niw2IEBA
IHN0YXRpYyBFeGNlcHRpb25PcjxTaGlwcGluZ01ldGhvZFVwZGF0ZT4gY29udmVydEFuZFZhbGlk
YXRlKEFwcGxlUGF5U2hpcHBpbmdNZXRoCiAKICAgICBjb252ZXJ0ZWRVcGRhdGUubmV3VG90YWxB
bmRMaW5lSXRlbXMudG90YWwgPSBjb252ZXJ0ZWROZXdUb3RhbC5yZWxlYXNlUmV0dXJuVmFsdWUo
KTsKIAotICAgIC8vIEZJWE1FOiBNZXJnZSB0aGlzIHZhbGlkYXRpb24gaW50byB0aGUgdmFsaWRh
dGlvbiB3ZSBhcmUgZG9pbmcgYWJvdmUuCi0gICAgYXV0byB2YWxpZGF0ZWRUb3RhbCA9IFBheW1l
bnRSZXF1ZXN0VmFsaWRhdG9yOjp2YWxpZGF0ZVRvdGFsKGNvbnZlcnRlZFVwZGF0ZS5uZXdUb3Rh
bEFuZExpbmVJdGVtcy50b3RhbCk7Ci0gICAgaWYgKHZhbGlkYXRlZFRvdGFsLmhhc0V4Y2VwdGlv
bigpKQotICAgICAgICByZXR1cm4gdmFsaWRhdGVkVG90YWwucmVsZWFzZUV4Y2VwdGlvbigpOwot
CiAgICAgYXV0byBjb252ZXJ0ZWROZXdMaW5lSXRlbXMgPSBjb252ZXJ0QW5kVmFsaWRhdGUoV1RG
TW92ZSh1cGRhdGUubmV3TGluZUl0ZW1zKSk7CiAgICAgaWYgKGNvbnZlcnRlZE5ld0xpbmVJdGVt
cy5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGNvbnZlcnRlZE5ld0xpbmVJdGVtcy5y
ZWxlYXNlRXhjZXB0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L0FwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0LmgKaW5kZXggZjU3
NWE1NDE1OTFmZmNiNjU5MmQyNTVjMWFlNzQzZWMyZjBmYmY4MS4uOGE2NWM0OTBiMTAyMTNlM2U1
YTA0MDlhYjIxNzVlNjZjZDdiNTM3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QuaApA
QCAtMjEyLDEwICsyMTIsNiBAQCBzdHJ1Y3QgUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQgewog
ICAgIFZlY3RvcjxQYXltZW50RXJyb3I+IGVycm9yczsKIH07CiAKLXN0cnVjdCBQYXltZW50TWV0
aG9kVXBkYXRlIHsKLSAgICBBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6VG90YWxBbmRM
aW5lSXRlbXMgbmV3VG90YWxBbmRMaW5lSXRlbXM7Ci19OwotCiBzdHJ1Y3QgU2hpcHBpbmdDb250
YWN0VXBkYXRlIHsKICAgICBWZWN0b3I8UGF5bWVudEVycm9yPiBlcnJvcnM7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvci5oCmlu
ZGV4IDFhNGFmM2JlOTMxM2U1M2I5ZTE3Mzc0MGI1MmRlNTljZmZhNmEzM2IuLjRhMGY5NmU3OTBi
ZTAxYTE3ZDgwYjRjZDk2MWE1ZThjNzIxY2NkYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuaApAQCAtMzksMTEgKzM5LDEx
IEBAIGNsYXNzIFBheW1lbnRDb29yZGluYXRvckNsaWVudDsKIGNsYXNzIFBheW1lbnRDb250YWN0
OwogY2xhc3MgUGF5bWVudE1lcmNoYW50U2Vzc2lvbjsKIGNsYXNzIFBheW1lbnRNZXRob2Q7Citj
bGFzcyBQYXltZW50TWV0aG9kVXBkYXRlOwogY2xhc3MgUGF5bWVudFNlc3Npb247CiBjbGFzcyBQ
YXltZW50U2Vzc2lvbkVycm9yOwogZW51bSBjbGFzcyBQYXltZW50QXV0aG9yaXphdGlvblN0YXR1
czsKIHN0cnVjdCBQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdDsKLXN0cnVjdCBQYXltZW50TWV0
aG9kVXBkYXRlOwogc3RydWN0IFNoaXBwaW5nQ29udGFjdFVwZGF0ZTsKIHN0cnVjdCBTaGlwcGlu
Z01ldGhvZFVwZGF0ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBs
ZXBheS9QYXltZW50Q29vcmRpbmF0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmgKaW5kZXggOGQ1MjNjMGUyMmViNjU0
M2Q3ZmQ2YjFhYzFhMjQ1N2YyODI0N2ZiMi4uMDNmNWIyODkwOTM0ZjliYjI2Yzg3MTFiYWNhNTk2
ZDJiYzcwZGQ3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9Q
YXltZW50Q29vcmRpbmF0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L1BheW1lbnRDb29yZGluYXRvckNsaWVudC5oCkBAIC0zOSw4ICszOSw4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBQYXltZW50TWVyY2hhbnRT
ZXNzaW9uOworY2xhc3MgUGF5bWVudE1ldGhvZFVwZGF0ZTsKIHN0cnVjdCBQYXltZW50QXV0aG9y
aXphdGlvblJlc3VsdDsKLXN0cnVjdCBQYXltZW50TWV0aG9kVXBkYXRlOwogc3RydWN0IFNoaXBw
aW5nQ29udGFjdFVwZGF0ZTsKIHN0cnVjdCBTaGlwcGluZ01ldGhvZFVwZGF0ZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50SGVhZGVycy5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50SGVhZGVycy5oCmluZGV4IDNm
MWIwNGVkYmJmZTY2NDgxM2FkMmRkNDcwMDZhNTZlZjFhNGY4NWYuLmM1NTUxMTc5ZWQxZjBkMjQ1
MDhlMmE0NGViYzUzNzJlNzliZmM1MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvUGF5bWVudEhlYWRlcnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FwcGxlcGF5L1BheW1lbnRIZWFkZXJzLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzAsNCArMzAsNiBAQAogI2luY2x1ZGUgIlBheW1l
bnRDb250YWN0LmgiCiAjaW5jbHVkZSAiUGF5bWVudE1lcmNoYW50U2Vzc2lvbi5oIgogI2luY2x1
ZGUgIlBheW1lbnRNZXRob2QuaCIKKyNpbmNsdWRlICJQYXltZW50TWV0aG9kVXBkYXRlLmgiCiAj
aW5jbHVkZSAiUGF5bWVudFNlc3Npb25FcnJvci5oIgorI2luY2x1ZGUgIlBheW1lbnRTdW1tYXJ5
SXRlbXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5
bWVudE1ldGhvZFVwZGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXlt
ZW50TWV0aG9kVXBkYXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzE4MTNjZGRlZTllNzRkMGQ2NzFhY2QxNzlh
Njk1OWQ1NWUzYjJmMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvUGF5bWVudE1ldGhvZFVwZGF0ZS5oCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShBUFBMRV9QQVkpCisKKyNpbmNsdWRlICJB
cHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oIgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KKworI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisjaW5jbHVkZSA8V2ViS2l0QWRkaXRp
b25zL1BheW1lbnRNZXRob2RVcGRhdGVBZGRpdGlvbnMuaD4KKyNlbmRpZgorCitPQkpDX0NMQVNT
IFBLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRlOworCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIFBheW1lbnRNZXRob2RVcGRhdGUgeworcHVibGlj
OgorICAgIHVzaW5nIExpbmVJdGVtID0gQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6Okxp
bmVJdGVtOworICAgIHVzaW5nIFRvdGFsQW5kTGluZUl0ZW1zID0gQXBwbGVQYXlTZXNzaW9uUGF5
bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zOworCisgICAgUGF5bWVudE1ldGhvZFVwZGF0
ZShMaW5lSXRlbSYmIHRvdGFsLCBWZWN0b3I8TGluZUl0ZW0+JiYpOworICAgIGV4cGxpY2l0IFBh
eW1lbnRNZXRob2RVcGRhdGUoUmV0YWluUHRyPFBLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9k
VXBkYXRlPiYmKTsKKyAgICBleHBsaWNpdCBQYXltZW50TWV0aG9kVXBkYXRlKFRvdGFsQW5kTGlu
ZUl0ZW1zJiYpOworCisgICAgY29uc3QgVG90YWxBbmRMaW5lSXRlbXMmIHRvdGFsQW5kTGluZUl0
ZW1zKCkgY29uc3Q7CisgICAgUEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RVcGRhdGUgKnBs
YXRmb3JtVXBkYXRlKCkgY29uc3Q7CisKKyNpZiBkZWZpbmVkKFBBWU1FTlRNRVRIT0RVUERBVEVf
UFVCTElDX0FERElUSU9OUykKK1BBWU1FTlRNRVRIT0RVUERBVEVfUFVCTElDX0FERElUSU9OUwor
I3VuZGVmIFBBWU1FTlRNRVRIT0RVUERBVEVfUFVCTElDX0FERElUSU9OUworI2VuZGlmCisgICAg
Citwcml2YXRlOgorICAgIE9wdGlvbmFsPFRvdGFsQW5kTGluZUl0ZW1zPiBtX3RvdGFsQW5kTGlu
ZUl0ZW1zOworICAgIFJldGFpblB0cjxQS1BheW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhvZFVwZGF0
ZT4gbV9wbGF0Zm9ybVVwZGF0ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEVOQUJMRShBUFBMRV9QQVkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxlcGF5L1BheW1lbnRTdW1tYXJ5SXRlbXMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvUGF5bWVudFN1bW1hcnlJdGVtcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVlOTUxNmEwOGZl
NmI1MThmMTYyOWJhMDFjZTNiNzY0ODhkNmJmNGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRTdW1tYXJ5SXRlbXMuaApAQCAtMCwwICsx
LDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQVBQTEVfUEFZ
KQorCisjaW5jbHVkZSAiQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QuaCIKKworT0JKQ19D
TEFTUyBOU0FycmF5OworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dFQkNPUkVfRVhQT1JUIE5T
QXJyYXkgKnBsYXRmb3JtU3VtbWFyeUl0ZW1zKGNvbnN0IEFwcGxlUGF5U2Vzc2lvblBheW1lbnRS
ZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcyYpOworV0VCQ09SRV9FWFBPUlQgTlNBcnJheSAqcGxh
dGZvcm1TdW1tYXJ5SXRlbXMoY29uc3QgQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6Okxp
bmVJdGVtJiB0b3RhbCwgY29uc3QgVmVjdG9yPEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0
OjpMaW5lSXRlbT4mKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKEFQUExFX1BBWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVw
YXkvY29jb2EvUGF5bWVudE1ldGhvZFVwZGF0ZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50TWV0aG9kVXBkYXRlQ29jb2EubW0KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjVlMWY3NjUwMDU4NjE4OTIyNmM2NWEwZWQyMWU1MDc4YjFiYmMwYgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1ldGhv
ZFVwZGF0ZUNvY29hLm1tCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJj
b25maWcuaCIKKyNpbXBvcnQgIlBheW1lbnRNZXRob2RVcGRhdGUuaCIKKworI2lmIEVOQUJMRShB
UFBMRV9QQVkpCisKKyNpbXBvcnQgIlBheW1lbnRTdW1tYXJ5SXRlbXMuaCIKKyNpbXBvcnQgPHBh
bC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXlt
ZW50TWV0aG9kVXBkYXRlOjpQYXltZW50TWV0aG9kVXBkYXRlKExpbmVJdGVtJiYgdG90YWwsIFZl
Y3RvcjxMaW5lSXRlbT4mJiBsaW5lSXRlbXMpCisgICAgOiBtX3RvdGFsQW5kTGluZUl0ZW1zIHsg
eyBXVEZNb3ZlKHRvdGFsKSwgV1RGTW92ZShsaW5lSXRlbXMpIH0gfQorICAgICwgbV9wbGF0Zm9y
bVVwZGF0ZSB7IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhv
ZFVwZGF0ZUluc3RhbmNlKCkgaW5pdFdpdGhQYXltZW50U3VtbWFyeUl0ZW1zOnBsYXRmb3JtU3Vt
bWFyeUl0ZW1zKCptX3RvdGFsQW5kTGluZUl0ZW1zKV0pIH0KK3sKK30KKworUGF5bWVudE1ldGhv
ZFVwZGF0ZTo6UGF5bWVudE1ldGhvZFVwZGF0ZShSZXRhaW5QdHI8UEtQYXltZW50UmVxdWVzdFBh
eW1lbnRNZXRob2RVcGRhdGU+JiYgcGxhdGZvcm1VcGRhdGUpCisgICAgOiBtX3BsYXRmb3JtVXBk
YXRlIHsgV1RGTW92ZShwbGF0Zm9ybVVwZGF0ZSkgfQoreworfQorCitQYXltZW50TWV0aG9kVXBk
YXRlOjpQYXltZW50TWV0aG9kVXBkYXRlKFRvdGFsQW5kTGluZUl0ZW1zJiYgdG90YWxBbmRMaW5l
SXRlbXMpCisgICAgOiBQYXltZW50TWV0aG9kVXBkYXRlIHsgV1RGTW92ZSh0b3RhbEFuZExpbmVJ
dGVtcy50b3RhbCksIFdURk1vdmUodG90YWxBbmRMaW5lSXRlbXMubGluZUl0ZW1zKSB9Cit7Cit9
CisKK2NvbnN0IFBheW1lbnRNZXRob2RVcGRhdGU6OlRvdGFsQW5kTGluZUl0ZW1zJiBQYXltZW50
TWV0aG9kVXBkYXRlOjp0b3RhbEFuZExpbmVJdGVtcygpIGNvbnN0Cit7CisgICAgcmV0dXJuICpt
X3RvdGFsQW5kTGluZUl0ZW1zOworfQorCitQS1BheW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhvZFVw
ZGF0ZSAqUGF5bWVudE1ldGhvZFVwZGF0ZTo6cGxhdGZvcm1VcGRhdGUoKSBjb25zdAoreworICAg
IHJldHVybiBtX3BsYXRmb3JtVXBkYXRlLmdldCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQVBQTEVfUEFZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50U3VtbWFyeUl0ZW1zQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRTdW1tYXJ5SXRl
bXNDb2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YTg3MjRhNzY0ODUwZDZmMDc1ZjA0OWQ5YzE4ZTZhMGY1
YWY2MWY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9jb2NvYS9QYXltZW50U3VtbWFyeUl0ZW1zQ29jb2EubW0KQEAgLTAsMCArMSw3OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJQYXltZW50U3VtbWFy
eUl0ZW1zLmgiCisKKyNpZiBFTkFCTEUoQVBQTEVfUEFZKQorCisjaW1wb3J0IDxwYWwvY29jb2Ev
UGFzc0tpdFNvZnRMaW5rLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIE5TRGVj
aW1hbE51bWJlciAqdG9EZWNpbWFsTnVtYmVyKGNvbnN0IFN0cmluZyYgYW1vdW50KQoreworICAg
IGlmICghYW1vdW50KQorICAgICAgICByZXR1cm4gW05TRGVjaW1hbE51bWJlciB6ZXJvXTsKKyAg
ICByZXR1cm4gW05TRGVjaW1hbE51bWJlciBkZWNpbWFsTnVtYmVyV2l0aFN0cmluZzphbW91bnQg
bG9jYWxlOkB7IE5TTG9jYWxlRGVjaW1hbFNlcGFyYXRvciA6IEAiLiIgfV07Cit9CisKK3N0YXRp
YyBQS1BheW1lbnRTdW1tYXJ5SXRlbVR5cGUgdG9QS1BheW1lbnRTdW1tYXJ5SXRlbVR5cGUoQXBw
bGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtOjpUeXBlIHR5cGUpCit7CisgICAg
c3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6
TGluZUl0ZW06OlR5cGU6OkZpbmFsOgorICAgICAgICByZXR1cm4gUEtQYXltZW50U3VtbWFyeUl0
ZW1UeXBlRmluYWw7CisgICAgY2FzZSBBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGlu
ZUl0ZW06OlR5cGU6OlBlbmRpbmc6CisgICAgICAgIHJldHVybiBQS1BheW1lbnRTdW1tYXJ5SXRl
bVR5cGVQZW5kaW5nOworICAgIH0KK30KKworc3RhdGljIFBLUGF5bWVudFN1bW1hcnlJdGVtICp0
b1BLUGF5bWVudFN1bW1hcnlJdGVtKGNvbnN0IEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0
OjpMaW5lSXRlbSYgbGluZUl0ZW0pCit7CisgICAgcmV0dXJuIFtQQUw6OmdldFBLUGF5bWVudFN1
bW1hcnlJdGVtQ2xhc3MoKSBzdW1tYXJ5SXRlbVdpdGhMYWJlbDpsaW5lSXRlbS5sYWJlbCBhbW91
bnQ6dG9EZWNpbWFsTnVtYmVyKGxpbmVJdGVtLmFtb3VudCkgdHlwZTp0b1BLUGF5bWVudFN1bW1h
cnlJdGVtVHlwZShsaW5lSXRlbS50eXBlKV07Cit9CisKK05TQXJyYXkgKnBsYXRmb3JtU3VtbWFy
eUl0ZW1zKGNvbnN0IEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJ
dGVtcyYgdG90YWxBbmRMaW5lSXRlbXMpCit7CisgICAgcmV0dXJuIHBsYXRmb3JtU3VtbWFyeUl0
ZW1zKHRvdGFsQW5kTGluZUl0ZW1zLnRvdGFsLCB0b3RhbEFuZExpbmVJdGVtcy5saW5lSXRlbXMp
OworfQorCitOU0FycmF5ICpwbGF0Zm9ybVN1bW1hcnlJdGVtcyhjb25zdCBBcHBsZVBheVNlc3Np
b25QYXltZW50UmVxdWVzdDo6TGluZUl0ZW0mIHRvdGFsLCBjb25zdCBWZWN0b3I8QXBwbGVQYXlT
ZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtPiYgbGluZUl0ZW1zKQoreworICAgIE5TTXV0
YWJsZUFycmF5ICpwYXltZW50U3VtbWFyeUl0ZW1zID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0
aENhcGFjaXR5OmxpbmVJdGVtcy5zaXplKCkgKyAxXTsKKyAgICBmb3IgKGF1dG8mIGxpbmVJdGVt
IDogbGluZUl0ZW1zKSB7CisgICAgICAgIGlmIChQS1BheW1lbnRTdW1tYXJ5SXRlbSAqc3VtbWFy
eUl0ZW0gPSB0b1BLUGF5bWVudFN1bW1hcnlJdGVtKGxpbmVJdGVtKSkKKyAgICAgICAgICAgIFtw
YXltZW50U3VtbWFyeUl0ZW1zIGFkZE9iamVjdDpzdW1tYXJ5SXRlbV07CisgICAgfQorCisgICAg
aWYgKFBLUGF5bWVudFN1bW1hcnlJdGVtICp0b3RhbEl0ZW0gPSB0b1BLUGF5bWVudFN1bW1hcnlJ
dGVtKHRvdGFsKSkKKyAgICAgICAgW3BheW1lbnRTdW1tYXJ5SXRlbXMgYWRkT2JqZWN0OnRvdGFs
SXRlbV07CisKKyAgICByZXR1cm4gYWRvcHROUyhbcGF5bWVudFN1bW1hcnlJdGVtcyBjb3B5XSku
YXV0b3JlbGVhc2UoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShBUFBMRV9QQVkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVBheW1lbnRI
YW5kbGVyLmNwcAppbmRleCBkMzRkN2NkZThiYTk0YjMxZjNiMjZlYzViNDNiOWM5NmY3ZWZlOGMw
Li4wZjdlM2JhMmEyMzM1ZTkwZjc3YTFkZmE2OWM2NjU3NGRmNTQzZGRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5
bWVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5
bWVudHJlcXVlc3QvQXBwbGVQYXlQYXltZW50SGFuZGxlci5jcHAKQEAgLTUxLDYgKzUxLDcgQEAK
ICNpbmNsdWRlICJQYXltZW50Q29vcmRpbmF0b3IuaCIKICNpbmNsdWRlICJQYXltZW50TWVyY2hh
bnRTZXNzaW9uLmgiCiAjaW5jbHVkZSAiUGF5bWVudE1ldGhvZC5oIgorI2luY2x1ZGUgIlBheW1l
bnRNZXRob2RVcGRhdGUuaCIKICNpbmNsdWRlICJQYXltZW50UmVxdWVzdFZhbGlkYXRvci5oIgog
I2luY2x1ZGUgIlBheW1lbnRSZXNwb25zZS5oIgogI2luY2x1ZGUgIlBheW1lbnRWYWxpZGF0aW9u
RXJyb3JzLmgiCkBAIC00NzMsMTQgKzQ3NCwxMSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBcHBsZVBh
eVBheW1lbnRIYW5kbGVyOjpwYXltZW50TWV0aG9kVXBkYXRlZCgpCiAgICAgQVNTRVJUKG1faXNV
cGRhdGluZyk7CiAgICAgbV9pc1VwZGF0aW5nID0gZmFsc2U7CiAKLSAgICBQYXltZW50TWV0aG9k
VXBkYXRlIHVwZGF0ZTsKLQogICAgIGF1dG8gbmV3VG90YWxBbmRMaW5lSXRlbXMgPSBjb21wdXRl
VG90YWxBbmRMaW5lSXRlbXMoKTsKICAgICBpZiAobmV3VG90YWxBbmRMaW5lSXRlbXMuaGFzRXhj
ZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBuZXdUb3RhbEFuZExpbmVJdGVtcy5yZWxlYXNlRXhj
ZXB0aW9uKCk7Ci0gICAgdXBkYXRlLm5ld1RvdGFsQW5kTGluZUl0ZW1zID0gbmV3VG90YWxBbmRM
aW5lSXRlbXMucmVsZWFzZVJldHVyblZhbHVlKCk7CiAKLSAgICBwYXltZW50Q29vcmRpbmF0b3Io
KS5jb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oV1RGTW92ZSh1cGRhdGUpKTsKKyAgICBw
YXltZW50Q29vcmRpbmF0b3IoKS5jb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oUGF5bWVu
dE1ldGhvZFVwZGF0ZSB7IG5ld1RvdGFsQW5kTGluZUl0ZW1zLnJlbGVhc2VSZXR1cm5WYWx1ZSgp
IH0pOwogICAgIHJldHVybiB7IH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDUy
NWJhZmM1N2FkZjZlNDU2MmIyMWFjNDZmMjdmNjE2YmRjNGY3MTQuLmEwNjkyYThmN2I3ZDE4MjA2
M2U1MzcwZGIzODliNzJkNzliYThjOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtNTky
LDcgKzU5Miw5IEBAIFdITFNMU3RhbmRhcmRMaWJyYXJ5RnVuY3Rpb25NYXAuY3BwCiAgICAgTW9k
dWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50Q29udGFjdENvY29hLm1tCiAgICAgTW9kdWxlcy9h
cHBsZXBheS9jb2NvYS9QYXltZW50TWVyY2hhbnRTZXNzaW9uQ29jb2EubW0KICAgICBNb2R1bGVz
L2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXRob2RDb2NvYS5tbQorICAgIE1vZHVsZXMvYXBwbGVw
YXkvY29jb2EvUGF5bWVudE1ldGhvZFVwZGF0ZUNvY29hLm1tCiAgICAgTW9kdWxlcy9hcHBsZXBh
eS9jb2NvYS9QYXltZW50U2Vzc2lvbkVycm9yQ29jb2EubW0KKyAgICBNb2R1bGVzL2FwcGxlcGF5
L2NvY29hL1BheW1lbnRTdW1tYXJ5SXRlbXNDb2NvYS5tbQogCiAgICAgTW9kdWxlcy9hcHBsZXBh
eS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVBheW1lbnRIYW5kbGVyLmNwcAogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOWVmMzBj
ZWVkNzRhNDAwZmNiM2UxOGUyZWI2MzIwMjE5MGVkYzVhNi4uNmZkYTAwNjU5NGQxYmQ2MDBiNjlj
MmVkZDA1ZTYzMzM5ODg3YjA4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzAwMyw2ICszMDAzLDggQEAKIAkJQTFERjVBQTYx
RjdGNjRCQjAwNThBNDc3IC8qIFBheW1lbnRIYW5kbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMURGNUFBNDFGN0Y2NEJCMDA1OEE0NzcgLyogUGF5
bWVudEhhbmRsZXIuaCAqLzsgfTsKIAkJQTFERjVBQUQxRjgwNzVGMDAwNThBNDc3IC8qIEFwcGxl
UGF5UmVxdWVzdEJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEExREY1QUFBMUY4MDc1RjAwMDU4QTQ3NyAvKiBBcHBsZVBheVJlcXVlc3RCYXNlLmgg
Ki87IH07CiAJCUExREY1QUIzMUY4MDc3NTMwMDU4QTQ3NyAvKiBKU0FwcGxlUGF5UmVxdWVzdEJh
c2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExREY1
QUIxMUY4MDc3NTIwMDU4QTQ3NyAvKiBKU0FwcGxlUGF5UmVxdWVzdEJhc2UuaCAqLzsgfTsKKwkJ
QTFERkQ1MjUyMzM0NTkzRjAwNDJGQ0RCIC8qIFBheW1lbnRNZXRob2RVcGRhdGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExREZENTI0MjMzNDU5M0Ew
MDQyRkNEQiAvKiBQYXltZW50TWV0aG9kVXBkYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTFERkQ1MjYyMzM0NTk0ODAwNDJGQ0RCIC8qIFBh
eW1lbnRTdW1tYXJ5SXRlbXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEExREZENTIyMjMzNDU5M0EwMDQyRkNEQiAvKiBQYXltZW50U3VtbWFyeUl0ZW1z
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTFF
RDc3OEQxQkUzMjk0MDAwREMxNzkxIC8qIERldmljZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFFRDc3OEIxQkUzMjk0MDAwREMxNzkxIC8qIERldmlj
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUEx
RjYwMDQ0MUY0NzU3QTkwMDc3RTgzRiAvKiBQYXltZW50UmVxdWVzdFVwZGF0ZUV2ZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUY2MDA0MTFGNDc1
N0E5MDA3N0U4M0YgLyogUGF5bWVudFJlcXVlc3RVcGRhdGVFdmVudC5oICovOyB9OwogCQlBMUY2
MDA0OTFGNDc1OTRFMDA3N0U4M0YgLyogUGF5bWVudERldGFpbHNVcGRhdGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRjYwMDQ3MUY0NzU5NEUwMDc3
RTgzRiAvKiBQYXltZW50RGV0YWlsc1VwZGF0ZS5oICovOyB9OwpAQCAtMTEzMDUsNiArMTEzMDcs
MTAgQEAKIAkJQTFERjVBQjAxRjgwNzc1MjAwNThBNDc3IC8qIEpTQXBwbGVQYXlSZXF1ZXN0QmFz
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0FwcGxlUGF5UmVx
dWVzdEJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMURGNUFCMTFGODA3
NzUyMDA1OEE0NzcgLyogSlNBcHBsZVBheVJlcXVlc3RCYXNlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTQXBwbGVQYXlSZXF1ZXN0QmFzZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBMURGNUFCNDFGODA3OEYzMDA1OEE0NzcgLyogQXBwbGVQYXlDb250YWN0
RmllbGQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXBwbGVQYXlDb250YWN0RmllbGQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMURGRDUyMjIzMzQ1OTNBMDA0MkZDREIgLyog
UGF5bWVudFN1bW1hcnlJdGVtcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXltZW50U3VtbWFyeUl0ZW1z
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExREZENTI0MjMzNDU5M0EwMDQyRkNE
QiAvKiBQYXltZW50TWV0aG9kVXBkYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBheW1lbnRNZXRob2RV
cGRhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTFERkQ1MjcyMzM0NTk3MzAw
NDJGQ0RCIC8qIFBheW1lbnRTdW1tYXJ5SXRlbXNDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFBheW1lbnRTdW1tYXJ5SXRlbXNDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQTFERkQ1MjgyMzM0NTk3NDAwNDJGQ0RCIC8qIFBheW1lbnRNZXRob2RVcGRhdGVDb2Nv
YS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBheW1lbnRNZXRob2RVcGRhdGVDb2NvYS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFFMTE1NDMxMzAxNUMzRDAwNTRBQzhDIC8q
IERpc3RhbnRMaWdodFNvdXJjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBEaXN0YW50TGlnaHRTb3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBMUUxMTU0NTEzMDE1QzRFMDA1NEFDOEMgLyogUG9pbnRMaWdodFNvdXJjZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb2ludExpZ2h0U291cmNlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFFMTE1NDcxMzAxNUM1RDAwNTRBQzhDIC8qIFNw
b3RMaWdodFNvdXJjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
cG90TGlnaHRTb3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY3Nzgs
MTEgKzE2Nzg0LDEzIEBACiAJCQkJN0NGOTMwRTYxRTAxRjlBRDAwQkFGRkJFIC8qIFBheW1lbnRI
ZWFkZXJzLmggKi8sCiAJCQkJMUFFOTZBODcxRDFBMENFQjAwQjg2NzY4IC8qIFBheW1lbnRNZXJj
aGFudFNlc3Npb24uaCAqLywKIAkJCQkxQThBNjQzOTFEMTlGQzUzMDBEMEUwMEYgLyogUGF5bWVu
dE1ldGhvZC5oICovLAorCQkJCUExREZENTI0MjMzNDU5M0EwMDQyRkNEQiAvKiBQYXltZW50TWV0
aG9kVXBkYXRlLmggKi8sCiAJCQkJMUE4QTY0NjYxRDE5RkRGRjAwRDBFMDBGIC8qIFBheW1lbnRS
ZXF1ZXN0VmFsaWRhdG9yLmggKi8sCiAJCQkJMUE4QTY0NjUxRDE5RkRGRjAwRDBFMDBGIC8qIFBh
eW1lbnRSZXF1ZXN0VmFsaWRhdG9yLm1tICovLAogCQkJCUExQzJDNTc1MUZBMjg1MTYwMEJBNDZG
QSAvKiBQYXltZW50U2Vzc2lvbi5jcHAgKi8sCiAJCQkJQTE0OTFEQTIxRjg1OUQ4NzAwOTVGNUQ0
IC8qIFBheW1lbnRTZXNzaW9uLmggKi8sCiAJCQkJQTExM0UwMjcyMzMxODI5MzAwOUMzM0EwIC8q
IFBheW1lbnRTZXNzaW9uRXJyb3IuaCAqLywKKwkJCQlBMURGRDUyMjIzMzQ1OTNBMDA0MkZDREIg
LyogUGF5bWVudFN1bW1hcnlJdGVtcy5oICovLAogCQkJKTsKIAkJCXBhdGggPSBhcHBsZXBheTsK
IAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xNjc5NCw3ICsxNjgwMiw5IEBACiAJCQkJ
MUE4QTY0NkExRDE5RkY4NzAwRDBFMDBGIC8qIFBheW1lbnRDb250YWN0Q29jb2EubW0gKi8sCiAJ
CQkJMUFEQTRBMUIxRDIyRjJDMDAwNUE5QTE1IC8qIFBheW1lbnRNZXJjaGFudFNlc3Npb25Db2Nv
YS5tbSAqLywKIAkJCQkxQThBNjQ2QjFEMTlGRjg3MDBEMEUwMEYgLyogUGF5bWVudE1ldGhvZENv
Y29hLm1tICovLAorCQkJCUExREZENTI4MjMzNDU5NzQwMDQyRkNEQiAvKiBQYXltZW50TWV0aG9k
VXBkYXRlQ29jb2EubW0gKi8sCiAJCQkJQTExM0UwMkEyMzMxOEVCQzAwOUMzM0EwIC8qIFBheW1l
bnRTZXNzaW9uRXJyb3JDb2NvYS5tbSAqLywKKwkJCQlBMURGRDUyNzIzMzQ1OTczMDA0MkZDREIg
LyogUGF5bWVudFN1bW1hcnlJdGVtc0NvY29hLm1tICovLAogCQkJKTsKIAkJCXBhdGggPSBjb2Nv
YTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0zMTA3Nyw2ICszMTA4Nyw3IEBACiAJ
CQkJMUE4QTY0M0MxRDE5RkM1MzAwRDBFMDBGIC8qIFBheW1lbnRNZXRob2QuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUExNjRBMjQ3MjEzNEJDNzEwMDUwOTE1NiAvKiBQYXltZW50TWV0aG9kQ2hhbmdl
RXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUExRjc2QjE5MUY0NEMzOTAwMDE0QzMxOCAvKiBQ
YXltZW50TWV0aG9kRGF0YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTFERkQ1MjUyMzM0NTkzRjAw
NDJGQ0RCIC8qIFBheW1lbnRNZXRob2RVcGRhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUExRjc2
QjJCMUY0NEM0RUYwMDE0QzMxOCAvKiBQYXltZW50T3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTFGNzZCMTMxRjQ0QzI0NTAwMTRDMzE4IC8qIFBheW1lbnRSZXF1ZXN0LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBMUY2MDA0NDFGNDc1N0E5MDA3N0U4M0YgLyogUGF5bWVudFJlcXVlc3RVcGRh
dGVFdmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMTA4OCw2ICszMTA5OSw3IEBACiAJCQkJQTEx
M0UwMjgyMzMxODI5MzAwOUMzM0EwIC8qIFBheW1lbnRTZXNzaW9uRXJyb3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUExRjc2QjU1MUY0NEQyQzcwMDE0QzMxOCAvKiBQYXltZW50U2hpcHBpbmdPcHRp
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCUExRjc2QjQ5MUY0NEQwN0EwMDE0QzMxOCAvKiBQYXlt
ZW50U2hpcHBpbmdUeXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQlBMURGRDUyNjIzMzQ1OTQ4MDA0
MkZDREIgLyogUGF5bWVudFN1bW1hcnlJdGVtcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE2NzdE
RkQyMTNFMDA2NjAwQTA4QzM0IC8qIFBheW1lbnRWYWxpZGF0aW9uRXJyb3JzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCMjc1MzU2NTBCMDUzODE0MDAyQ0U2NEYgLyogUERGRG9jdW1lbnRJbWFnZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNUUyQzQzNTExQkNFRTJGNjAwMDFFMkJDIC8qIFBlZXJDb25u
ZWN0aW9uQmFja2VuZC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL01vY2tQYXltZW50Q29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9Nb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcAppbmRleCAwMzYwNWQ1NTY0ZjI4ZjQxNDA1
ZDRjZmQxNzdjZjk2NWE4MGYwZjRlLi5mZDdmZGRkNTY3NzYwYmIwNTk2YzViZmNhODI1NGI4MWE5
NjBmNjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYXltZW50Q29v
cmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRDb29y
ZGluYXRvci5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJNb2NrUGF5bWVudE1ldGhv
ZC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYXltZW50Q29vcmRpbmF0b3IuaCIK
KyNpbmNsdWRlICJQYXltZW50TWV0aG9kVXBkYXRlLmgiCiAjaW5jbHVkZSAiUGF5bWVudFNlc3Np
b25FcnJvci5oIgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUg
PHd0Zi9SdW5Mb29wLmg+CkBAIC0xNjAsNyArMTYxLDcgQEAgdm9pZCBNb2NrUGF5bWVudENvb3Jk
aW5hdG9yOjpjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihPcHRpb25hbDxTaGlwcGlu
Z0MKIHZvaWQgTW9ja1BheW1lbnRDb29yZGluYXRvcjo6Y29tcGxldGVQYXltZW50TWV0aG9kU2Vs
ZWN0aW9uKE9wdGlvbmFsPFBheW1lbnRNZXRob2RVcGRhdGU+JiYgcGF5bWVudE1ldGhvZFVwZGF0
ZSkKIHsKICAgICBpZiAocGF5bWVudE1ldGhvZFVwZGF0ZSkKLSAgICAgICAgdXBkYXRlVG90YWxB
bmRMaW5lSXRlbXMocGF5bWVudE1ldGhvZFVwZGF0ZS0+bmV3VG90YWxBbmRMaW5lSXRlbXMpOwor
ICAgICAgICB1cGRhdGVUb3RhbEFuZExpbmVJdGVtcyhwYXltZW50TWV0aG9kVXBkYXRlLT50b3Rh
bEFuZExpbmVJdGVtcygpKTsKIH0KIAogdm9pZCBNb2NrUGF5bWVudENvb3JkaW5hdG9yOjpjaGFu
Z2VTaGlwcGluZ09wdGlvbihTdHJpbmcmJiBzaGlwcGluZ09wdGlvbikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIu
aCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25QcmVz
ZW50ZXIuaAppbmRleCBjYjY0YWY5MmJlMGJjMTViMWRkZDRhMmE0MWNhNDc1NDM5NzIyOTQ0Li5k
MDYyNzg0NTA5ZjFiZDhiZTI5MDc5NTM5MDZiMGE1Y2ZiMzNjYTk4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1BheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlvblBy
ZXNlbnRlci5oCkBAIC00MSw2ICs0MSw3IEBAIGNsYXNzIFBheW1lbnQ7CiBjbGFzcyBQYXltZW50
Q29udGFjdDsKIGNsYXNzIFBheW1lbnRNZXJjaGFudFNlc3Npb247CiBjbGFzcyBQYXltZW50TWV0
aG9kOworY2xhc3MgUGF5bWVudE1ldGhvZFVwZGF0ZTsKIGNsYXNzIFBheW1lbnRTZXNzaW9uRXJy
b3I7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVu
dEF1dGhvcml6YXRpb25QcmVzZW50ZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29h
L1BheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyLm1tCmluZGV4IDEyZWFiMTVkYTE4NjBmZGE2
OTRjODdlYjNlNjg5YmE4YjUzNDYzMmMuLjhlOGY1ZjczNDIyNGQ0YzY5ZGJhZjNjZjRiMmIzMmI1
ZDhhMjVmZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVu
dEF1dGhvcml6YXRpb25QcmVzZW50ZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9j
b2NvYS9QYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlci5tbQpAQCAtMzIsNiArMzIsOCBAQAog
I2ltcG9ydCAiV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oIgogI2ltcG9ydCA8V2Vi
Q29yZS9QYXltZW50QXV0aG9yaXphdGlvblN0YXR1cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYXlt
ZW50TWVyY2hhbnRTZXNzaW9uLmg+CisjaW1wb3J0IDxXZWJDb3JlL1BheW1lbnRNZXRob2RVcGRh
dGUuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUGF5bWVudFN1bW1hcnlJdGVtcy5oPgogI2ltcG9ydCA8
cGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oPgogCiBTT0ZUX0xJTktfRlJBTUVXT1JLKENvbnRh
Y3RzKTsKQEAgLTE4NSw4ICsxODcsMTIgQEAgdm9pZCBQYXltZW50QXV0aG9yaXphdGlvblByZXNl
bnRlcjo6Y29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UGEKIHZvaWQg
UGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXI6OmNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVj
dGlvbihjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50TWV0aG9kVXBkYXRlPiYgdXBkYXRl
KQogewogICAgIEFTU0VSVChwbGF0Zm9ybURlbGVnYXRlKCkpOwotICAgIE5TQXJyYXkgKnN1bW1h
cnlJdGVtcyA9IHVwZGF0ZSA/IHRvUEtQYXltZW50U3VtbWFyeUl0ZW1zKHVwZGF0ZS0+bmV3VG90
YWxBbmRMaW5lSXRlbXMpIDogcGxhdGZvcm1EZWxlZ2F0ZSgpLnN1bW1hcnlJdGVtczsKLSAgICBb
cGxhdGZvcm1EZWxlZ2F0ZSgpIGNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbjpzdW1tYXJ5
SXRlbXNdOworICAgIGlmICghdXBkYXRlKSB7CisgICAgICAgIFtwbGF0Zm9ybURlbGVnYXRlKCkg
Y29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uOm5pbF07CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBbcGxhdGZvcm1EZWxlZ2F0ZSgpIGNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVj
dGlvbjp1cGRhdGUtPnBsYXRmb3JtVXBkYXRlKCldOwogfQogCiB2b2lkIFBheW1lbnRBdXRob3Jp
emF0aW9uUHJlc2VudGVyOjpjb21wbGV0ZVBheW1lbnRTZXNzaW9uKGNvbnN0IE9wdGlvbmFsPFdl
YkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0PiYgcmVzdWx0KQpAQCAtMjAwLDE4ICsy
MDYsMjcgQEAgdm9pZCBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcjo6Y29tcGxldGVQYXlt
ZW50U2Vzc2lvbihjb25zdCBPcHRpb25hbDxXZWJDb3IKIHZvaWQgUGF5bWVudEF1dGhvcml6YXRp
b25QcmVzZW50ZXI6OmNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKGNvbnN0IE9wdGlv
bmFsPFdlYkNvcmU6OlNoaXBwaW5nQ29udGFjdFVwZGF0ZT4mIHVwZGF0ZSkKIHsKICAgICBBU1NF
UlQocGxhdGZvcm1EZWxlZ2F0ZSgpKTsKLSAgICBOU0FycmF5ICpzaGlwcGluZ01ldGhvZHMgPSB1
cGRhdGUgPyB0b1BLU2hpcHBpbmdNZXRob2RzKHVwZGF0ZS0+bmV3U2hpcHBpbmdNZXRob2RzKSA6
IHBsYXRmb3JtRGVsZWdhdGUoKS5zaGlwcGluZ01ldGhvZHM7Ci0gICAgTlNBcnJheSAqc3VtbWFy
eUl0ZW1zID0gdXBkYXRlID8gdG9QS1BheW1lbnRTdW1tYXJ5SXRlbXModXBkYXRlLT5uZXdUb3Rh
bEFuZExpbmVJdGVtcykgOiBwbGF0Zm9ybURlbGVnYXRlKCkuc3VtbWFyeUl0ZW1zOwotICAgIE5T
QXJyYXkgKmVycm9ycyA9IHVwZGF0ZSA/IHRvTlNFcnJvcnModXBkYXRlLT5lcnJvcnMpIDogQFsg
XTsKLSAgICBhdXRvIHN0YXR1cyA9IFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNTdWNjZXNz
OwotICAgIFtwbGF0Zm9ybURlbGVnYXRlKCkgY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rp
b246c3RhdHVzIHN1bW1hcnlJdGVtczpzdW1tYXJ5SXRlbXMgc2hpcHBpbmdNZXRob2RzOnNoaXBw
aW5nTWV0aG9kcyBlcnJvcnM6ZXJyb3JzXTsKKyAgICBpZiAoIXVwZGF0ZSkgeworICAgICAgICBb
cGxhdGZvcm1EZWxlZ2F0ZSgpIGNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uOm5pbF07
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBGSVhNRTogV2ViQ29yZTo6U2hpcHBp
bmdDb250YWN0VXBkYXRlIHNob3VsZCBrbm93IGhvdyB0byBjb252ZXJ0IGl0c2VsZiB0byBhIFBL
UGF5bWVudFJlcXVlc3RTaGlwcGluZ0NvbnRhY3RVcGRhdGUuCisgICAgYXV0byBzaGlwcGluZ0Nv
bnRhY3RVcGRhdGUgPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50UmVxdWVzdFNoaXBwaW5n
Q29udGFjdFVwZGF0ZUluc3RhbmNlKCkgaW5pdFdpdGhFcnJvcnM6dG9OU0Vycm9ycyh1cGRhdGUt
PmVycm9ycykgcGF5bWVudFN1bW1hcnlJdGVtczpXZWJDb3JlOjpwbGF0Zm9ybVN1bW1hcnlJdGVt
cyh1cGRhdGUtPm5ld1RvdGFsQW5kTGluZUl0ZW1zKSBzaGlwcGluZ01ldGhvZHM6dG9QS1NoaXBw
aW5nTWV0aG9kcyh1cGRhdGUtPm5ld1NoaXBwaW5nTWV0aG9kcyldKTsKKyAgICBbcGxhdGZvcm1E
ZWxlZ2F0ZSgpIGNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uOnNoaXBwaW5nQ29udGFj
dFVwZGF0ZS5nZXQoKV07CiB9CiAKIHZvaWQgUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXI6
OmNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6
U2hpcHBpbmdNZXRob2RVcGRhdGU+JiB1cGRhdGUpCiB7CiAgICAgQVNTRVJUKHBsYXRmb3JtRGVs
ZWdhdGUoKSk7Ci0gICAgTlNBcnJheSAqc3VtbWFyeUl0ZW1zID0gdXBkYXRlID8gdG9QS1BheW1l
bnRTdW1tYXJ5SXRlbXModXBkYXRlLT5uZXdUb3RhbEFuZExpbmVJdGVtcykgOiBwbGF0Zm9ybURl
bGVnYXRlKCkuc3VtbWFyeUl0ZW1zOwotICAgIFtwbGF0Zm9ybURlbGVnYXRlKCkgY29tcGxldGVT
aGlwcGluZ01ldGhvZFNlbGVjdGlvbjpzdW1tYXJ5SXRlbXNdOworICAgIGlmICghdXBkYXRlKSB7
CisgICAgICAgIFtwbGF0Zm9ybURlbGVnYXRlKCkgY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVj
dGlvbjpuaWxdOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gRklYTUU6IFdlYkNv
cmU6OlNoaXBwaW5nTWV0aG9kVXBkYXRlIHNob3VsZCBrbm93IGhvdyB0byBjb252ZXJ0IGl0c2Vs
ZiB0byBhIFBLUGF5bWVudFJlcXVlc3RTaGlwcGluZ01ldGhvZFVwZGF0ZS4KKyAgICBhdXRvIHNo
aXBwaW5nTWV0aG9kVXBkYXRlID0gYWRvcHROUyhbUEFMOjphbGxvY1BLUGF5bWVudFJlcXVlc3RT
aGlwcGluZ01ldGhvZFVwZGF0ZUluc3RhbmNlKCkgaW5pdFdpdGhQYXltZW50U3VtbWFyeUl0ZW1z
OldlYkNvcmU6OnBsYXRmb3JtU3VtbWFyeUl0ZW1zKHVwZGF0ZS0+bmV3VG90YWxBbmRMaW5lSXRl
bXMpXSk7CisgICAgW3BsYXRmb3JtRGVsZWdhdGUoKSBjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2Vs
ZWN0aW9uOnNoaXBwaW5nTWV0aG9kVXBkYXRlLmdldCgpXTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1dLUGF5bWVu
dEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9X
S1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUuaAppbmRleCA0MDMzYTNjZDZkZDRiOGZkZGY0
MmRjZGUxMTkwMjY0OTc1NTA0MmVhLi5jOTM1ZjI3NmQ4ZjFhYzFmMWI5NjBhYmUzYTg5NTZkYWEw
ZDFjNjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1dLUGF5bWVu
dEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29j
b2EvV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlLmgKQEAgLTUyLDE1ICs1MiwxMSBAQCB1
c2luZyBEaWRTZWxlY3RTaGlwcGluZ01ldGhvZENvbXBsZXRpb24gPSBCbG9ja1B0cjx2b2lkKFBL
UGF5bWVudFJlcXVlc3RTaGlwcGluZwogCiAtIChpbnN0YW5jZXR5cGUpaW5pdCBOU19VTkFWQUlM
QUJMRTsKIAotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIGRpZFJlYWNoRmlu
YWxTdGF0ZTsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNBcnJheTxQS1BheW1l
bnRTdW1tYXJ5SXRlbSAqPiAqc3VtbWFyeUl0ZW1zOwotQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5KSBOU0FycmF5PFBLU2hpcHBpbmdNZXRob2QgKj4gKnNoaXBwaW5nTWV0aG9kczsKLQog
LSAodm9pZCljb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbjooUEtQYXltZW50TWVyY2hhbnRTZXNz
aW9uICopc2Vzc2lvbiBlcnJvcjooTlNFcnJvciAqKWVycm9yOwotLSAodm9pZCljb21wbGV0ZVBh
eW1lbnRNZXRob2RTZWxlY3Rpb246KE5TQXJyYXk8UEtQYXltZW50U3VtbWFyeUl0ZW0gKj4gKilz
dW1tYXJ5SXRlbXM7CistICh2b2lkKWNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbjooUEtQ
YXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RVcGRhdGUgKilwYXltZW50TWV0aG9kVXBkYXRlOwog
LSAodm9pZCljb21wbGV0ZVBheW1lbnRTZXNzaW9uOihQS1BheW1lbnRBdXRob3JpemF0aW9uU3Rh
dHVzKXN0YXR1cyBlcnJvcnM6KE5TQXJyYXk8TlNFcnJvciAqPiAqKWVycm9ycyBkaWRSZWFjaEZp
bmFsU3RhdGU6KEJPT0wpZGlkUmVhY2hGaW5hbFN0YXRlOwotLSAodm9pZCljb21wbGV0ZVNoaXBw
aW5nQ29udGFjdFNlbGVjdGlvbjooUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cylzdGF0dXMg
c3VtbWFyeUl0ZW1zOihOU0FycmF5PFBLUGF5bWVudFN1bW1hcnlJdGVtICo+ICopc3VtbWFyeUl0
ZW1zIHNoaXBwaW5nTWV0aG9kczooTlNBcnJheTxQS1NoaXBwaW5nTWV0aG9kICo+ICopc2hpcHBp
bmdNZXRob2RzIGVycm9yczooTlNBcnJheTxOU0Vycm9yICo+ICopZXJyb3JzOwotLSAodm9pZClj
b21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uOihOU0FycmF5PFBLUGF5bWVudFN1bW1hcnlJ
dGVtICo+ICopc3VtbWFyeUl0ZW1zOworLSAodm9pZCljb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNl
bGVjdGlvbjooUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nQ29udGFjdFVwZGF0ZSAqKXNoaXBwaW5n
Q29udGFjdFVwZGF0ZTsKKy0gKHZvaWQpY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbjoo
UEtQYXltZW50UmVxdWVzdFNoaXBwaW5nTWV0aG9kVXBkYXRlICopc2hpcHBpbmdNZXRob2RVcGRh
dGU7CiAtICh2b2lkKWludmFsaWRhdGU7CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vY29jb2EvV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlLm1tIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9XS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUu
bW0KaW5kZXggZmEzZThiYjUyMjU3Mzk5NjM5ZWY0ODAwOTEwZTljNjNiNjM0ODQ3ZS4uYzkwZmZm
NzM3NDZkZTE1MWZlZmI3MDQ1YjI0ZjZjOWM4Y2QzZWE4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9jb2NvYS9XS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUubW0KKysr
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9XS1BheW1lbnRBdXRob3JpemF0aW9uRGVs
ZWdhdGUubW0KQEAgLTMzLDYgKzMzLDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvUGF5bWVudFNlc3Np
b25FcnJvci5oPgogCiBAaW1wbGVtZW50YXRpb24gV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVn
YXRlIHsKKyAgICBCT09MIF9kaWRSZWFjaEZpbmFsU3RhdGU7CiAgICAgUmV0YWluUHRyPE5TQXJy
YXk8UEtQYXltZW50U3VtbWFyeUl0ZW0gKj4+IF9zdW1tYXJ5SXRlbXM7CiAgICAgUmV0YWluUHRy
PE5TQXJyYXk8UEtTaGlwcGluZ01ldGhvZCAqPj4gX3NoaXBwaW5nTWV0aG9kczsKICAgICBSZXRh
aW5QdHI8TlNFcnJvcj4gX3Nlc3Npb25FcnJvcjsKQEAgLTU5LDExICs2MCwxMSBAQCAtICh2b2lk
KWNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uOihQS1BheW1lbnRNZXJjaGFudFNlc3Npb24gKilz
ZXNzaW9uIGVycm9yOihOUwogICAgIHN0ZDo6ZXhjaGFuZ2UoX2RpZFJlcXVlc3RNZXJjaGFudFNl
c3Npb25Db21wbGV0aW9uLCBuaWwpKHNlc3Npb24sIGVycm9yKTsKIH0KIAotLSAodm9pZCljb21w
bGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb246KE5TQXJyYXk8UEtQYXltZW50U3VtbWFyeUl0ZW0g
Kj4gKilzdW1tYXJ5SXRlbXMKKy0gKHZvaWQpY29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9u
OihQS1BheW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhvZFVwZGF0ZSAqKXBheW1lbnRNZXRob2RVcGRh
dGUKIHsKLSAgICBfc3VtbWFyeUl0ZW1zID0gc3VtbWFyeUl0ZW1zOwotICAgIGF1dG8gdXBkYXRl
ID0gYWRvcHROUyhbUEFMOjphbGxvY1BLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRl
SW5zdGFuY2UoKSBpbml0V2l0aFBheW1lbnRTdW1tYXJ5SXRlbXM6X3N1bW1hcnlJdGVtcy5nZXQo
KV0pOwotICAgIHN0ZDo6ZXhjaGFuZ2UoX2RpZFNlbGVjdFBheW1lbnRNZXRob2RDb21wbGV0aW9u
LCBuaWwpKHVwZGF0ZS5nZXQoKSk7CisgICAgUEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RV
cGRhdGUgKnVwZGF0ZSA9IHBheW1lbnRNZXRob2RVcGRhdGUgPzogW1tQQUw6OmFsbG9jUEtQYXlt
ZW50UmVxdWVzdFBheW1lbnRNZXRob2RVcGRhdGVJbnN0YW5jZSgpIGluaXRXaXRoUGF5bWVudFN1
bW1hcnlJdGVtczpfc3VtbWFyeUl0ZW1zLmdldCgpXSBhdXRvcmVsZWFzZV07CisgICAgX3N1bW1h
cnlJdGVtcyA9IGFkb3B0TlMoW3VwZGF0ZS5wYXltZW50U3VtbWFyeUl0ZW1zIGNvcHldKTsKKyAg
ICBzdGQ6OmV4Y2hhbmdlKF9kaWRTZWxlY3RQYXltZW50TWV0aG9kQ29tcGxldGlvbiwgbmlsKSh1
cGRhdGUpOwogfQogCiAtICh2b2lkKWNvbXBsZXRlUGF5bWVudFNlc3Npb246KFBLUGF5bWVudEF1
dGhvcml6YXRpb25TdGF0dXMpc3RhdHVzIGVycm9yczooTlNBcnJheTxOU0Vycm9yICo+ICopZXJy
b3JzIGRpZFJlYWNoRmluYWxTdGF0ZTooQk9PTClkaWRSZWFjaEZpbmFsU3RhdGUKQEAgLTcyLDIx
ICs3MywxOSBAQCAtICh2b2lkKWNvbXBsZXRlUGF5bWVudFNlc3Npb246KFBLUGF5bWVudEF1dGhv
cml6YXRpb25TdGF0dXMpc3RhdHVzIGVycm9yczooTlNBcgogICAgIGF1dG8gcmVzdWx0ID0gYWRv
cHROUyhbUEFMOjphbGxvY1BLUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHRJbnN0YW5jZSgpIGlu
aXRXaXRoU3RhdHVzOnN0YXR1cyBlcnJvcnM6ZXJyb3JzXSk7CiAgICAgc3RkOjpleGNoYW5nZShf
ZGlkQXV0aG9yaXplUGF5bWVudENvbXBsZXRpb24sIG5pbCkocmVzdWx0LmdldCgpKTsKIH0KLQot
LSAodm9pZCljb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbjooUEtQYXltZW50QXV0aG9y
aXphdGlvblN0YXR1cylzdGF0dXMgc3VtbWFyeUl0ZW1zOihOU0FycmF5PFBLUGF5bWVudFN1bW1h
cnlJdGVtICo+ICopc3VtbWFyeUl0ZW1zIHNoaXBwaW5nTWV0aG9kczooTlNBcnJheTxQS1NoaXBw
aW5nTWV0aG9kICo+ICopc2hpcHBpbmdNZXRob2RzIGVycm9yczooTlNBcnJheTxOU0Vycm9yICo+
ICopZXJyb3JzCistICh2b2lkKWNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uOihQS1Bh
eW1lbnRSZXF1ZXN0U2hpcHBpbmdDb250YWN0VXBkYXRlICopc2hpcHBpbmdDb250YWN0VXBkYXRl
CiB7Ci0gICAgX3N1bW1hcnlJdGVtcyA9IHN1bW1hcnlJdGVtczsKLSAgICBfc2hpcHBpbmdNZXRo
b2RzID0gc2hpcHBpbmdNZXRob2RzOwotICAgIEFTU0VSVChzdGF0dXMgPT0gUEtQYXltZW50QXV0
aG9yaXphdGlvblN0YXR1c1N1Y2Nlc3MpOwotICAgIGF1dG8gdXBkYXRlID0gYWRvcHROUyhbUEFM
OjphbGxvY1BLUGF5bWVudFJlcXVlc3RTaGlwcGluZ0NvbnRhY3RVcGRhdGVJbnN0YW5jZSgpIGlu
aXRXaXRoRXJyb3JzOmVycm9ycyBwYXltZW50U3VtbWFyeUl0ZW1zOl9zdW1tYXJ5SXRlbXMuZ2V0
KCkgc2hpcHBpbmdNZXRob2RzOl9zaGlwcGluZ01ldGhvZHMuZ2V0KCldKTsKLSAgICBzdGQ6OmV4
Y2hhbmdlKF9kaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3RDb21wbGV0aW9uLCBuaWwpKHVwZGF0ZS5n
ZXQoKSk7CisgICAgUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nQ29udGFjdFVwZGF0ZSAqdXBkYXRl
ID0gc2hpcHBpbmdDb250YWN0VXBkYXRlID86IFtbUEFMOjphbGxvY1BLUGF5bWVudFJlcXVlc3RT
aGlwcGluZ0NvbnRhY3RVcGRhdGVJbnN0YW5jZSgpIGluaXRXaXRoRXJyb3JzOkBbXSBwYXltZW50
U3VtbWFyeUl0ZW1zOl9zdW1tYXJ5SXRlbXMuZ2V0KCkgc2hpcHBpbmdNZXRob2RzOl9zaGlwcGlu
Z01ldGhvZHMuZ2V0KCldIGF1dG9yZWxlYXNlXTsKKyAgICBfc3VtbWFyeUl0ZW1zID0gYWRvcHRO
UyhbdXBkYXRlLnBheW1lbnRTdW1tYXJ5SXRlbXMgY29weV0pOworICAgIF9zaGlwcGluZ01ldGhv
ZHMgPSBhZG9wdE5TKFt1cGRhdGUuc2hpcHBpbmdNZXRob2RzIGNvcHldKTsKKyAgICBzdGQ6OmV4
Y2hhbmdlKF9kaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3RDb21wbGV0aW9uLCBuaWwpKHVwZGF0ZSk7
CiB9CiAKLS0gKHZvaWQpY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbjooTlNBcnJheTxQ
S1BheW1lbnRTdW1tYXJ5SXRlbSAqPiAqKXN1bW1hcnlJdGVtcworLSAodm9pZCljb21wbGV0ZVNo
aXBwaW5nTWV0aG9kU2VsZWN0aW9uOihQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdNZXRob2RVcGRh
dGUgKilzaGlwcGluZ01ldGhvZFVwZGF0ZQogewotICAgIF9zdW1tYXJ5SXRlbXMgPSBzdW1tYXJ5
SXRlbXM7Ci0gICAgYXV0byB1cGRhdGUgPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50UmVx
dWVzdFNoaXBwaW5nTWV0aG9kVXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0aFBheW1lbnRTdW1tYXJ5
SXRlbXM6X3N1bW1hcnlJdGVtcy5nZXQoKV0pOwotICAgIHN0ZDo6ZXhjaGFuZ2UoX2RpZFNlbGVj
dFNoaXBwaW5nTWV0aG9kQ29tcGxldGlvbiwgbmlsKSh1cGRhdGUuZ2V0KCkpOworICAgIFBLUGF5
bWVudFJlcXVlc3RTaGlwcGluZ01ldGhvZFVwZGF0ZSAqdXBkYXRlID0gc2hpcHBpbmdNZXRob2RV
cGRhdGUgPzogW1tQQUw6OmFsbG9jUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nTWV0aG9kVXBkYXRl
SW5zdGFuY2UoKSBpbml0V2l0aFBheW1lbnRTdW1tYXJ5SXRlbXM6X3N1bW1hcnlJdGVtcy5nZXQo
KV0gYXV0b3JlbGVhc2VdOworICAgIF9zdW1tYXJ5SXRlbXMgPSBhZG9wdE5TKFt1cGRhdGUucGF5
bWVudFN1bW1hcnlJdGVtcyBjb3B5XSk7CisgICAgc3RkOjpleGNoYW5nZShfZGlkU2VsZWN0U2hp
cHBpbmdNZXRob2RDb21wbGV0aW9uLCBuaWwpKHVwZGF0ZSk7CiB9CiAKIC0gKHZvaWQpaW52YWxp
ZGF0ZQpAQCAtMTU5LDcgKzE1OCw3IEBAIC0gKHZvaWQpX2RpZFNlbGVjdFBheW1lbnRNZXRob2Q6
KFBLUGF5bWVudE1ldGhvZCAqKXBheW1lbnRNZXRob2QgY29tcGxldGlvbjooV2ViCiAKICAgICBh
dXRvIHByZXNlbnRlciA9IF9wcmVzZW50ZXIuZ2V0KCk7CiAgICAgaWYgKCFwcmVzZW50ZXIpCi0g
ICAgICAgIHJldHVybiBbc2VsZiBjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb246QFsgXV07
CisgICAgICAgIHJldHVybiBbc2VsZiBjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb246bmls
XTsKIAogICAgIHByZXNlbnRlci0+Y2xpZW50KCkucHJlc2VudGVyRGlkU2VsZWN0UGF5bWVudE1l
dGhvZCgqcHJlc2VudGVyLCBXZWJDb3JlOjpQYXltZW50TWV0aG9kKHBheW1lbnRNZXRob2QpKTsK
IH0KQEAgLTE3MSw3ICsxNzAsNyBAQCAtICh2b2lkKV9kaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3Q6
KFBLQ29udGFjdCAqKWNvbnRhY3QgY29tcGxldGlvbjooV2ViS2l0OjpEaWRTZQogCiAgICAgYXV0
byBwcmVzZW50ZXIgPSBfcHJlc2VudGVyLmdldCgpOwogICAgIGlmICghcHJlc2VudGVyKQotICAg
ICAgICByZXR1cm4gW3NlbGYgY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb246UEtQYXlt
ZW50QXV0aG9yaXphdGlvblN0YXR1c0ZhaWx1cmUgc3VtbWFyeUl0ZW1zOkBbIF0gc2hpcHBpbmdN
ZXRob2RzOkBbIF0gZXJyb3JzOkBbIF1dOworICAgICAgICByZXR1cm4gW3NlbGYgY29tcGxldGVT
aGlwcGluZ0NvbnRhY3RTZWxlY3Rpb246bmlsXTsKIAogICAgIHByZXNlbnRlci0+Y2xpZW50KCku
cHJlc2VudGVyRGlkU2VsZWN0U2hpcHBpbmdDb250YWN0KCpwcmVzZW50ZXIsIFdlYkNvcmU6OlBh
eW1lbnRDb250YWN0KGNvbnRhY3QpKTsKIH0KQEAgLTE5Niw3ICsxOTUsNyBAQCAtICh2b2lkKV9k
aWRTZWxlY3RTaGlwcGluZ01ldGhvZDooUEtTaGlwcGluZ01ldGhvZCAqKXNoaXBwaW5nTWV0aG9k
IGNvbXBsZXRpb246KAogCiAgICAgYXV0byBwcmVzZW50ZXIgPSBfcHJlc2VudGVyLmdldCgpOwog
ICAgIGlmICghcHJlc2VudGVyKQotICAgICAgICByZXR1cm4gW3NlbGYgY29tcGxldGVTaGlwcGlu
Z01ldGhvZFNlbGVjdGlvbjpAWyBdXTsKKyAgICAgICAgcmV0dXJuIFtzZWxmIGNvbXBsZXRlU2hp
cHBpbmdNZXRob2RTZWxlY3Rpb246bmlsXTsKIAogICAgIHByZXNlbnRlci0+Y2xpZW50KCkucHJl
c2VudGVyRGlkU2VsZWN0U2hpcHBpbmdNZXRob2QoKnByZXNlbnRlciwgdG9TaGlwcGluZ01ldGhv
ZChzaGlwcGluZ01ldGhvZCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
QXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmgKaW5kZXggNmIzNjc3M2Zl
ZDQyNWE5ZTQ0Yzc3ZDgxMWNiNzFlYWYwZjlkOGNhYy4uNDY3Y2FlNGUzZDAyMmUxYjI0YjY0ZjVl
YTZjMjc5YjgwZDNjMTliOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQ
YXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oCkBAIC01NSw2ICs1NSw3IEBA
IGNsYXNzIFBheW1lbnQ7CiBjbGFzcyBQYXltZW50Q29udGFjdDsKIGNsYXNzIFBheW1lbnRNZXJj
aGFudFNlc3Npb247CiBjbGFzcyBQYXltZW50TWV0aG9kOworY2xhc3MgUGF5bWVudE1ldGhvZFVw
ZGF0ZTsKIH0KIAogT0JKQ19DTEFTUyBOU09iamVjdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2Eu
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5Q29jb2EuaAppbmRleCA0ZTk0MmI5NjhhNDM5ZTYzNGJmOGFlN2I5MjYzY2E2MjRi
Mzg2ODFjLi4yZDY0MDhiZWY2Zjk1YjlmNmQxYjEwM2Q5NDVlOTlkZmVhYTM5YmJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eUNvY29hLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvY29j
b2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oCkBAIC0zMywxMCArMzMsNyBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogLy8gRklYTUU6IFJhdGhlciB0aGFuIGhhdmluZyB0aGVzZSBm
cmVlIGZ1bmN0aW9ucyBzY2F0dGVyZWQgYWJvdXQsIEFwcGxlIFBheSBkYXRhIHR5cGVzIHNob3Vs
ZCBrbm93CiAvLyBob3cgdG8gY29udmVydCB0aGVtc2VsdmVzIHRvIGFuZCBmcm9tIHRoZWlyIHBs
YXRmb3JtIHJlcHJlc2VudGF0aW9ucy4KLU5TQXJyYXkgKnRvUEtQYXltZW50U3VtbWFyeUl0ZW1z
KGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExp
bmVJdGVtcyYpOwogTlNEZWNpbWFsTnVtYmVyICp0b0RlY2ltYWxOdW1iZXIoY29uc3QgU3RyaW5n
JiBhbW91bnQpOwotUEtQYXltZW50U3VtbWFyeUl0ZW0gKnRvUEtQYXltZW50U3VtbWFyeUl0ZW0o
Y29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtJik7
Ci1QS1BheW1lbnRTdW1tYXJ5SXRlbVR5cGUgdG9QS1BheW1lbnRTdW1tYXJ5SXRlbVR5cGUoV2Vi
Q29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtOjpUeXBlKTsKIFBL
U2hpcHBpbmdNZXRob2QgKnRvUEtTaGlwcGluZ01ldGhvZChjb25zdCBXZWJDb3JlOjpBcHBsZVBh
eVNlc3Npb25QYXltZW50UmVxdWVzdDo6U2hpcHBpbmdNZXRob2QmKTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9jb2Nv
YS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbQppbmRl
eCA4NzVjMzQ5MjQyNzE4MTU0N2QwZGNkYWExYzQ5ZmViMmZhZTRkNjA5Li41OTE1Njk4Mzg2ZDk5
ZTNiYzNmNzdlODA4ZGVlNjM4OGRmYTg0YTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5Q29jb2EubW0KQEAgLTEwOSwxNyArMTA5LDYgQEAgc3RhdGljIFJldGFpblB0cjxO
U1NldD4gdG9QS0NvbnRhY3RGaWVsZHMoY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5
bWVudFIKICAgICByZXR1cm4gYWRvcHROUyhbW05TU2V0IGFsbG9jXSBpbml0V2l0aE9iamVjdHM6
cmVzdWx0LmRhdGEoKSBjb3VudDpyZXN1bHQuc2l6ZSgpXSk7CiB9CiAKLVBLUGF5bWVudFN1bW1h
cnlJdGVtVHlwZSB0b1BLUGF5bWVudFN1bW1hcnlJdGVtVHlwZShXZWJDb3JlOjpBcHBsZVBheVNl
c3Npb25QYXltZW50UmVxdWVzdDo6TGluZUl0ZW06OlR5cGUgdHlwZSkKLXsKLSAgICBzd2l0Y2gg
KHR5cGUpIHsKLSAgICBjYXNlIFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0
OjpMaW5lSXRlbTo6VHlwZTo6RmluYWw6Ci0gICAgICAgIHJldHVybiBQS1BheW1lbnRTdW1tYXJ5
SXRlbVR5cGVGaW5hbDsKLQotICAgIGNhc2UgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVu
dFJlcXVlc3Q6OkxpbmVJdGVtOjpUeXBlOjpQZW5kaW5nOgotICAgICAgICByZXR1cm4gUEtQYXlt
ZW50U3VtbWFyeUl0ZW1UeXBlUGVuZGluZzsKLSAgICB9Ci19Ci0KIE5TRGVjaW1hbE51bWJlciAq
dG9EZWNpbWFsTnVtYmVyKGNvbnN0IFN0cmluZyYgYW1vdW50KQogewogICAgIGlmICghYW1vdW50
KQpAQCAtMTI3LDI1ICsxMTYsNiBAQCBOU0RlY2ltYWxOdW1iZXIgKnRvRGVjaW1hbE51bWJlcihj
b25zdCBTdHJpbmcmIGFtb3VudCkKICAgICByZXR1cm4gW05TRGVjaW1hbE51bWJlciBkZWNpbWFs
TnVtYmVyV2l0aFN0cmluZzphbW91bnQgbG9jYWxlOkB7IE5TTG9jYWxlRGVjaW1hbFNlcGFyYXRv
ciA6IEAiLiIgfV07CiB9CiAKLVBLUGF5bWVudFN1bW1hcnlJdGVtICp0b1BLUGF5bWVudFN1bW1h
cnlJdGVtKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpMaW5l
SXRlbSYgbGluZUl0ZW0pCi17Ci0gICAgcmV0dXJuIFtQQUw6OmdldFBLUGF5bWVudFN1bW1hcnlJ
dGVtQ2xhc3MoKSBzdW1tYXJ5SXRlbVdpdGhMYWJlbDpsaW5lSXRlbS5sYWJlbCBhbW91bnQ6dG9E
ZWNpbWFsTnVtYmVyKGxpbmVJdGVtLmFtb3VudCkgdHlwZTp0b1BLUGF5bWVudFN1bW1hcnlJdGVt
VHlwZShsaW5lSXRlbS50eXBlKV07Ci19Ci0KLU5TQXJyYXkgKnRvUEtQYXltZW50U3VtbWFyeUl0
ZW1zKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpUb3RhbEFu
ZExpbmVJdGVtcyYgdG90YWxBbmRMaW5lSXRlbXMpCi17Ci0gICAgTlNNdXRhYmxlQXJyYXkgKnBh
eW1lbnRTdW1tYXJ5SXRlbXMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6dG90
YWxBbmRMaW5lSXRlbXMubGluZUl0ZW1zLnNpemUoKSArIDFdOwotICAgIGZvciAoYXV0byYgbGlu
ZUl0ZW0gOiB0b3RhbEFuZExpbmVJdGVtcy5saW5lSXRlbXMpIHsKLSAgICAgICAgaWYgKFBLUGF5
bWVudFN1bW1hcnlJdGVtICpzdW1tYXJ5SXRlbSA9IHRvUEtQYXltZW50U3VtbWFyeUl0ZW0obGlu
ZUl0ZW0pKQotICAgICAgICAgICAgW3BheW1lbnRTdW1tYXJ5SXRlbXMgYWRkT2JqZWN0OnN1bW1h
cnlJdGVtXTsKLSAgICB9Ci0KLSAgICBpZiAoUEtQYXltZW50U3VtbWFyeUl0ZW0gKnRvdGFsSXRl
bSA9IHRvUEtQYXltZW50U3VtbWFyeUl0ZW0odG90YWxBbmRMaW5lSXRlbXMudG90YWwpKQotICAg
ICAgICBbcGF5bWVudFN1bW1hcnlJdGVtcyBhZGRPYmplY3Q6dG90YWxJdGVtXTsKLQotICAgIHJl
dHVybiBwYXltZW50U3VtbWFyeUl0ZW1zOwotfQotCiBzdGF0aWMgUEtNZXJjaGFudENhcGFiaWxp
dHkgdG9QS01lcmNoYW50Q2FwYWJpbGl0aWVzKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lv
blBheW1lbnRSZXF1ZXN0OjpNZXJjaGFudENhcGFiaWxpdGllcyYgbWVyY2hhbnRDYXBhYmlsaXRp
ZXMpCiB7CiAgICAgUEtNZXJjaGFudENhcGFiaWxpdHkgcmVzdWx0ID0gMDsKQEAgLTI1NiwxNiAr
MjI2LDcgQEAgUmV0YWluUHRyPFBLUGF5bWVudFJlcXVlc3Q+IFdlYlBheW1lbnRDb29yZGluYXRv
clByb3h5OjpwbGF0Zm9ybVBheW1lbnRSZXF1ZXN0KGMKICAgICAgICAgW3NoaXBwaW5nTWV0aG9k
cyBhZGRPYmplY3Q6dG9QS1NoaXBwaW5nTWV0aG9kKHNoaXBwaW5nTWV0aG9kKV07CiAgICAgW3Jl
c3VsdCBzZXRTaGlwcGluZ01ldGhvZHM6c2hpcHBpbmdNZXRob2RzLmdldCgpXTsKIAotICAgIGF1
dG8gcGF5bWVudFN1bW1hcnlJdGVtcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10g
aW5pdF0pOwotICAgIGZvciAoYXV0byYgbGluZUl0ZW0gOiBwYXltZW50UmVxdWVzdC5saW5lSXRl
bXMoKSkgewotICAgICAgICBpZiAoUEtQYXltZW50U3VtbWFyeUl0ZW0gKnN1bW1hcnlJdGVtID0g
dG9QS1BheW1lbnRTdW1tYXJ5SXRlbShsaW5lSXRlbSkpCi0gICAgICAgICAgICBbcGF5bWVudFN1
bW1hcnlJdGVtcyBhZGRPYmplY3Q6c3VtbWFyeUl0ZW1dOwotICAgIH0KLQotICAgIGlmIChQS1Bh
eW1lbnRTdW1tYXJ5SXRlbSAqdG90YWxJdGVtID0gdG9QS1BheW1lbnRTdW1tYXJ5SXRlbShwYXlt
ZW50UmVxdWVzdC50b3RhbCgpKSkKLSAgICAgICAgW3BheW1lbnRTdW1tYXJ5SXRlbXMgYWRkT2Jq
ZWN0OnRvdGFsSXRlbV07Ci0KLSAgICBbcmVzdWx0IHNldFBheW1lbnRTdW1tYXJ5SXRlbXM6cGF5
bWVudFN1bW1hcnlJdGVtcy5nZXQoKV07CisgICAgW3Jlc3VsdCBzZXRQYXltZW50U3VtbWFyeUl0
ZW1zOldlYkNvcmU6OnBsYXRmb3JtU3VtbWFyeUl0ZW1zKHBheW1lbnRSZXF1ZXN0LnRvdGFsKCks
IHBheW1lbnRSZXF1ZXN0LmxpbmVJdGVtcygpKV07CiAKICAgICBbcmVzdWx0IHNldEV4cGVjdHNN
ZXJjaGFudFNlc3Npb246WUVTXTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQppbmRleCBlZTAwMzc3N2YzOWMx
NjU5ZWFlMjRiYjFkOThiNTliZTQ5Nzk2MjJkLi4zMmJmODBjZGEzM2ExNzJhY2JhNzk5ZGMxOGM3
ZGM4NzI1NmRlM2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJD
b3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbQpAQCAtMTYxLDE2ICsxNjEsMTYgQEAgT3B0
aW9uYWw8V2ViQ29yZTo6UGF5bWVudE1ldGhvZD4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXlt
ZW50TWV0aG9kPjo6ZGVjb2RlKEQKIAogdm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1l
bnRNZXRob2RVcGRhdGU+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6
UGF5bWVudE1ldGhvZFVwZGF0ZSYgdXBkYXRlKQogewotICAgIGVuY29kZXIgPDwgdXBkYXRlLm5l
d1RvdGFsQW5kTGluZUl0ZW1zOworICAgIGVuY29kZXIgPDwgdXBkYXRlLnBsYXRmb3JtVXBkYXRl
KCk7CiB9CiAKIE9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRNZXRob2RVcGRhdGU+IEFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6UGF5bWVudE1ldGhvZFVwZGF0ZT46OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQogewotICAgIE9wdGlvbmFsPEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpUb3Rh
bEFuZExpbmVJdGVtcz4gbmV3VG90YWxBbmRMaW5lSXRlbXM7Ci0gICAgZGVjb2RlciA+PiBuZXdU
b3RhbEFuZExpbmVJdGVtczsKLSAgICBpZiAoIW5ld1RvdGFsQW5kTGluZUl0ZW1zKQorICAgIGF1
dG8gdXBkYXRlID0gSVBDOjpkZWNvZGU8UEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RVcGRh
dGU+KGRlY29kZXIsIFBBTDo6Z2V0UEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RVcGRhdGVD
bGFzcygpKTsKKyAgICBpZiAoIXVwZGF0ZSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
LSAgICByZXR1cm4ge3sgV1RGTW92ZSgqbmV3VG90YWxBbmRMaW5lSXRlbXMpIH19OworCisgICAg
cmV0dXJuIFBheW1lbnRNZXRob2RVcGRhdGUgeyBXVEZNb3ZlKCp1cGRhdGUpIH07CiB9CiAKIHZv
aWQgQXJndW1lbnRDb2RlcjxBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdD46OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyLCBjb25zdCBBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcmVx
dWVzdCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379261</attachid>
            <date>2019-09-20 13:09:41 -0700</date>
            <delta_ts>2019-09-20 13:41:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202018-20190920130940.patch</filename>
            <type>text/plain</type>
            <size>53329</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwMTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGFlMjU4YWNlMTc5Njhh
N2I4YjIzOWIxYTgyODY4ZTY1ZWYxZDlhNy4uZDQ5YjYxZGQyMzE2N2Q1MTNmMmViNWJjMTJjZTY4
MzM0OGM0OWVjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE5LTA5LTE5ICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQXBwbGUgUGF5XSBDbGVhbiB1
cCBoYW5kbGluZyBvZiBzdW1tYXJ5IGl0ZW1zIGFuZCBwYXltZW50IG1ldGhvZCB1cGRhdGVzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDIwMTgKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU1NDcwNjMyPgorCisgICAgICAgIFJldmlld2VkIGJ5IFRp
bSBIb3J0b24uCisKKyAgICAgICAgUmVwbGFjZWQgdGhlIFBheW1lbnRNZXRob2RVcGRhdGUgc3Ry
dWN0IHdpdGggYSBjbGFzcyB0aGF0IGtub3dzIGhvdyB0byBjb252ZXJ0IGZyb20KKyAgICAgICAg
QXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlIHN0cnVjdHMgdG8gUEtQYXltZW50UmVxdWVzdFBh
eW1lbnRNZXRob2RVcGRhdGUgaW5zdGFuY2VzLgorCisgICAgICAgIE1vdmVkIHNvbWUgc2NhdHRl
cmVkLWFyb3VuZCBmcmVlIGZ1bmN0aW9ucyBmb3IgY29udmVydGluZyBwYXltZW50IHN1bW1hcnkg
aXRlbXMgaW50bworICAgICAgICBQYXltZW50U3VtbWFyeUl0ZW1zey5oLENvY29hLm1tfS4KKwor
ICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlLmg6
CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6ZmluaXNoQ29udmVydGluZyk6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0
QW5kVmFsaWRhdGVUb3RhbCk6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0QW5kVmFsaWRhdGUp
OgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVl
c3QuaDoKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvci5oOgor
ICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Lmg6Cisg
ICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9QYXltZW50SGVhZGVycy5oOgorICAgICAgICAqIE1v
ZHVsZXMvYXBwbGVwYXkvUGF5bWVudE1ldGhvZFVwZGF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBN
b2R1bGVzL2FwcGxlcGF5L1BheW1lbnRTdW1tYXJ5SXRlbXMuaDogQWRkZWQuCisgICAgICAgICog
TW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50TWV0aG9kVXBkYXRlQ29jb2EubW06IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudE1ldGhvZFVwZGF0ZTo6UGF5bWVudE1ldGhvZFVw
ZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXltZW50TWV0aG9kVXBkYXRlOjp0b3RhbEFuZExp
bmVJdGVtcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYXltZW50TWV0aG9kVXBkYXRlOjpw
bGF0Zm9ybVVwZGF0ZSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9Q
YXltZW50U3VtbWFyeUl0ZW1zQ29jb2EubW06IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6dG9E
ZWNpbWFsTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OnRvUEtQYXltZW50U3VtbWFyeUl0ZW1U
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvUEtQYXltZW50U3VtbWFyeUl0ZW0pOgorICAgICAg
ICAoV2ViQ29yZTo6cGxhdGZvcm1TdW1tYXJ5SXRlbXMpOgorICAgICAgICAqIE1vZHVsZXMvYXBw
bGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQYXltZW50SGFuZGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpwYXltZW50TWV0aG9kVXBkYXRlZCk6
CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogdGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5h
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tQYXltZW50Q29vcmRpbmF0b3I6OmNvbXBs
ZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbik6CisKIDIwMTktMDktMTkgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBXb3JrZXJHbG9iYWxTY29wZSBkb2VzIG5vdCBu
ZWVkIGEgU2Vzc2lvbklECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGEzNTM2MmI2ODA5NjViNGE3NjI5ZWFjN2E2OTE4
ZThhZTliMTM5NmMuLmE2ZDllNDlmMzcxNjFjZTU2MTE2Nzc1ZjM4OTA2NDY5NjZkZTVjMzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTktMDktMTkgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNA
YXBwbGUuY29tPgorCisgICAgICAgIFtBcHBsZSBQYXldIENsZWFuIHVwIGhhbmRsaW5nIG9mIHN1
bW1hcnkgaXRlbXMgYW5kIHBheW1lbnQgbWV0aG9kIHVwZGF0ZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjAxOAorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNTU0NzA2MzI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAg
ICAgICBOb3cgdGhhdCBQYXltZW50TWV0aG9kVXBkYXRlIGtub3dzIGhvdyB0byBjb252ZXJ0IGl0
c2VsZiB0byBhCisgICAgICAgIFBLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRlLCBQ
YXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlciBjYW4gbWVyZWx5IHBhc3MgdGhlCisgICAgICAg
IGNvbnZlcnRlZCB1cGRhdGUgZGlyZWN0bHkgdG8gdGhlIHBsYXRmb3JtIGRlbGVnYXRlIHJhdGhl
ciB0aGFuIHBhc3NpbmcgdGhlIGluZGl2aWR1YWwKKyAgICAgICAgY29tcG9uZW50cyBhbmQgcmVs
eWluZyBvbiB0aGUgZGVsZWdhdGUgdG8gaW5zdGFudGlhdGUgdGhlIHBsYXRmb3JtIHVwZGF0ZSBp
dHNlbGYuIEFkZGVkCisgICAgICAgIEZJWE1FcyBmb3IgYXBwbHlpbmcgYSBzaW1pbGFyIHRyZWF0
bWVudCB0byBTaGlwcGluZ0NvbnRhY3RVcGRhdGUgYW5kIFNoaXBwaW5nTWV0aG9kVXBkYXRlLgor
CisgICAgICAgICogUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIu
aDoKKyAgICAgICAgKiBQbGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRl
ci5tbToKKyAgICAgICAgKFdlYktpdDo6UGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXI6OmNv
bXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlBheW1lbnRB
dXRob3JpemF0aW9uUHJlc2VudGVyOjpjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OlBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyOjpjb21wbGV0
ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKToKKyAgICAgICAgKiBQbGF0Zm9ybS9jb2NvYS9XS1Bh
eW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9jb2NvYS9X
S1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUubW06CisgICAgICAgICgtW1dLUGF5bWVudEF1
dGhvcml6YXRpb25EZWxlZ2F0ZSBjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb246XSk6Cisg
ICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZSBjb21wbGV0ZVNoaXBwaW5n
Q29udGFjdFNlbGVjdGlvbjpdKToKKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvbkRl
bGVnYXRlIGNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb246XSk6CisgICAgICAgICgtW1dL
UGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZSBfZGlkU2VsZWN0UGF5bWVudE1ldGhvZDpjb21w
bGV0aW9uOl0pOgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUgX2Rp
ZFNlbGVjdFNoaXBwaW5nQ29udGFjdDpjb21wbGV0aW9uOl0pOgorICAgICAgICAoLVtXS1BheW1l
bnRBdXRob3JpemF0aW9uRGVsZWdhdGUgX2RpZFNlbGVjdFNoaXBwaW5nTWV0aG9kOmNvbXBsZXRp
b246XSk6CisgICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZSBjb21wbGV0
ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbjpzdW1tYXJ5SXRlbXM6c2hpcHBpbmdNZXRob2RzOmVy
cm9yczpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHkuaDoKKyAgICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvY29jb2EvV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oOgorICAgICAgICAqIFNoYXJlZC9BcHBsZVBheS9j
b2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1QYXltZW50UmVxdWVzdCk6Cisg
ICAgICAgIChXZWJLaXQ6OnRvUEtQYXltZW50U3VtbWFyeUl0ZW1UeXBlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6dG9QS1BheW1lbnRTdW1tYXJ5SXRlbSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OnRvUEtQYXltZW50U3VtbWFyeUl0ZW1zKTogRGVsZXRlZC4KKyAgICAgICAgKiBT
aGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW06CisgICAgICAgIChJUEM6
OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudE1ldGhvZFVwZGF0ZT46OmVuY29kZSk6Cisg
ICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudE1ldGhvZFVwZGF0ZT46
OmRlY29kZSk6CisKIDIwMTktMDktMTkgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgbWFjQ2F0YWx5c3QgYXBwcyBjcmFzaCB1bmRlciBUZXh0Q2hlY2tp
bmdDb250cm9sbGVyUHJveHk6OnJlcGxhY2VSZWxhdGl2ZVRvU2VsZWN0aW9uIHdoZW4gc3BlbGwg
Y2hlY2tpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBw
bGVQYXlQYXltZW50TWV0aG9kVXBkYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L0FwcGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZS5oCmluZGV4IGE3MzIyMTI0YjVlYjZmNjll
MWQ0MGNkYjVjODAyNjMwMWJkYjQxNDIuLjViNjczZDNkZTRiMWM2YTY0MjNkMWVkYTU5ZWIxNDlk
MjE4MGNhODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBw
bGVQYXlQYXltZW50TWV0aG9kVXBkYXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9BcHBsZVBheVBheW1lbnRNZXRob2RVcGRhdGUuaApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSwxMSArMjksMjAgQEAKIAog
I2luY2x1ZGUgIkFwcGxlUGF5TGluZUl0ZW0uaCIKIAorI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9T
REspCisjaW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL0FwcGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0
ZUFkZGl0aW9ucy5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IEFw
cGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZSB7CiAgICAgQXBwbGVQYXlMaW5lSXRlbSBuZXdUb3Rh
bDsKICAgICBWZWN0b3I8QXBwbGVQYXlMaW5lSXRlbT4gbmV3TGluZUl0ZW1zOworCisjaWYgZGVm
aW5lZChBUFBMRVBBWVBBWU1FTlRNRVRIT0RVUERBVEVfQURESVRJT05TKQorQVBQTEVQQVlQQVlN
RU5UTUVUSE9EVVBEQVRFX0FERElUSU9OUworI3VuZGVmIEFQUExFUEFZUEFZTUVOVE1FVEhPRFVQ
REFURV9BRERJVElPTlMKKyNlbmRpZgogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uY3BwCmluZGV4IDg1YTAyYmVlMjBhMDhi
NWRlYWJkMDNhNDNhNzI2N2JjMGU5NGYxY2MuLjY5ZjhlMzJkNjA4MmQyZjNhM2E1ZTA1MGMzNzI0
OThkYWZjMzAwNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkv
QXBwbGVQYXlTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5U2Vzc2lvbi5jcHAKQEAgLTU3LDEyICs1NywyMSBAQAogI2luY2x1ZGUgIlBheW1l
bnRDb29yZGluYXRvci5oIgogI2luY2x1ZGUgIlBheW1lbnRNZXJjaGFudFNlc3Npb24uaCIKICNp
bmNsdWRlICJQYXltZW50TWV0aG9kLmgiCisjaW5jbHVkZSAiUGF5bWVudE1ldGhvZFVwZGF0ZS5o
IgogI2luY2x1ZGUgIlBheW1lbnRSZXF1ZXN0VmFsaWRhdG9yLmgiCiAjaW5jbHVkZSAiU2VjdXJp
dHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJl
SW5kaWNhdG9yLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIAorI2lmIFVT
RShBUFBMRV9JTlRFUk5BTF9TREspCisjaW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL0FwcGxlUGF5
U2Vzc2lvbkFkZGl0aW9ucy5jcHA+CisjZWxzZQorbmFtZXNwYWNlIFdlYkNvcmUgeworc3RhdGlj
IHZvaWQgZmluaXNoQ29udmVydGluZyhQYXltZW50TWV0aG9kVXBkYXRlJiwgQXBwbGVQYXlQYXlt
ZW50TWV0aG9kVXBkYXRlJiYpIHsgfQorfQorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEFwcGxlUGF5U2Vzc2lvbik7CkBAIC0xMzks
MTIgKzE0OCwxMyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJl
cXVlc3Q6OkxpbmVJdGVtPiBjb252ZXJ0QW5kVmFsaWRhdGVUbwogICAgIGlmICghdmFsaWRhdGVB
bW91bnQobGluZUl0ZW0uYW1vdW50KSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVF
cnJvciwgbWFrZVN0cmluZygiXCIiICsgbGluZUl0ZW0uYW1vdW50LCAiXCIgaXMgbm90IGEgdmFs
aWQgYW1vdW50LiIpIH07CiAKLSAgICBBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGlu
ZUl0ZW0gcmVzdWx0OwotICAgIHJlc3VsdC5hbW91bnQgPSBsaW5lSXRlbS5hbW91bnQ7Ci0gICAg
cmVzdWx0LnR5cGUgPSBsaW5lSXRlbS50eXBlOwotICAgIHJlc3VsdC5sYWJlbCA9IGxpbmVJdGVt
LmxhYmVsOworICAgIEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbSB0b3Rh
bCB7IGxpbmVJdGVtLnR5cGUsIGxpbmVJdGVtLmFtb3VudCwgbGluZUl0ZW0ubGFiZWwgfTsKIAot
ICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdCk7CisgICAgYXV0byB2YWxpZGF0ZWRUb3RhbCA9IFBh
eW1lbnRSZXF1ZXN0VmFsaWRhdG9yOjp2YWxpZGF0ZVRvdGFsKHRvdGFsKTsKKyAgICBpZiAodmFs
aWRhdGVkVG90YWwuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiB2YWxpZGF0ZWRUb3Rh
bC5yZWxlYXNlRXhjZXB0aW9uKCk7CisKKyAgICByZXR1cm4gV1RGTW92ZSh0b3RhbCk7CiB9CiAK
IHN0YXRpYyBFeGNlcHRpb25PcjxBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGluZUl0
ZW0+IGNvbnZlcnRBbmRWYWxpZGF0ZShBcHBsZVBheUxpbmVJdGVtJiYgbGluZUl0ZW0pCkBAIC0z
MTgsMjMgKzMyOCwxNiBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8UGF5bWVudEF1dGhvcml6YXRpb25S
ZXN1bHQ+IGNvbnZlcnRBbmRWYWxpZGF0ZShBcHBsZVBheVBheW1lbgogCiBzdGF0aWMgRXhjZXB0
aW9uT3I8UGF5bWVudE1ldGhvZFVwZGF0ZT4gY29udmVydEFuZFZhbGlkYXRlKEFwcGxlUGF5UGF5
bWVudE1ldGhvZFVwZGF0ZSYmIHVwZGF0ZSkKIHsKLSAgICBQYXltZW50TWV0aG9kVXBkYXRlIGNv
bnZlcnRlZFVwZGF0ZTsKLQogICAgIGF1dG8gY29udmVydGVkTmV3VG90YWwgPSBjb252ZXJ0QW5k
VmFsaWRhdGVUb3RhbChXVEZNb3ZlKHVwZGF0ZS5uZXdUb3RhbCkpOwogICAgIGlmIChjb252ZXJ0
ZWROZXdUb3RhbC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGNvbnZlcnRlZE5ld1Rv
dGFsLnJlbGVhc2VFeGNlcHRpb24oKTsKLSAgICBjb252ZXJ0ZWRVcGRhdGUubmV3VG90YWxBbmRM
aW5lSXRlbXMudG90YWwgPSBjb252ZXJ0ZWROZXdUb3RhbC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsK
LQotICAgIC8vIEZJWE1FOiBNZXJnZSB0aGlzIHZhbGlkYXRpb24gaW50byB0aGUgdmFsaWRhdGlv
biB3ZSBhcmUgZG9pbmcgYWJvdmUuCi0gICAgYXV0byB2YWxpZGF0ZWRUb3RhbCA9IFBheW1lbnRS
ZXF1ZXN0VmFsaWRhdG9yOjp2YWxpZGF0ZVRvdGFsKGNvbnZlcnRlZFVwZGF0ZS5uZXdUb3RhbEFu
ZExpbmVJdGVtcy50b3RhbCk7Ci0gICAgaWYgKHZhbGlkYXRlZFRvdGFsLmhhc0V4Y2VwdGlvbigp
KQotICAgICAgICByZXR1cm4gdmFsaWRhdGVkVG90YWwucmVsZWFzZUV4Y2VwdGlvbigpOwogCiAg
ICAgYXV0byBjb252ZXJ0ZWROZXdMaW5lSXRlbXMgPSBjb252ZXJ0QW5kVmFsaWRhdGUoV1RGTW92
ZSh1cGRhdGUubmV3TGluZUl0ZW1zKSk7CiAgICAgaWYgKGNvbnZlcnRlZE5ld0xpbmVJdGVtcy5o
YXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGNvbnZlcnRlZE5ld0xpbmVJdGVtcy5yZWxl
YXNlRXhjZXB0aW9uKCk7CiAKLSAgICBjb252ZXJ0ZWRVcGRhdGUubmV3VG90YWxBbmRMaW5lSXRl
bXMubGluZUl0ZW1zID0gY29udmVydGVkTmV3TGluZUl0ZW1zLnJlbGVhc2VSZXR1cm5WYWx1ZSgp
OworICAgIFBheW1lbnRNZXRob2RVcGRhdGUgY29udmVydGVkVXBkYXRlIHsgY29udmVydGVkTmV3
VG90YWwucmVsZWFzZVJldHVyblZhbHVlKCksIGNvbnZlcnRlZE5ld0xpbmVJdGVtcy5yZWxlYXNl
UmV0dXJuVmFsdWUoKSB9OworICAgIGZpbmlzaENvbnZlcnRpbmcoY29udmVydGVkVXBkYXRlLCBX
VEZNb3ZlKHVwZGF0ZSkpOwogCiAgICAgcmV0dXJuIFdURk1vdmUoY29udmVydGVkVXBkYXRlKTsK
IH0KQEAgLTM1NSwxMSArMzU4LDYgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPFNoaXBwaW5nQ29udGFj
dFVwZGF0ZT4gY29udmVydEFuZFZhbGlkYXRlKEFwcGxlUGF5U2hpcHBpbmdDb24KICAgICAgICAg
cmV0dXJuIGNvbnZlcnRlZE5ld1RvdGFsLnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICBjb252ZXJ0
ZWRVcGRhdGUubmV3VG90YWxBbmRMaW5lSXRlbXMudG90YWwgPSBjb252ZXJ0ZWROZXdUb3RhbC5y
ZWxlYXNlUmV0dXJuVmFsdWUoKTsKIAotICAgIC8vIEZJWE1FOiBNZXJnZSB0aGlzIHZhbGlkYXRp
b24gaW50byB0aGUgdmFsaWRhdGlvbiB3ZSBhcmUgZG9pbmcgYWJvdmUuCi0gICAgYXV0byB2YWxp
ZGF0ZWRUb3RhbCA9IFBheW1lbnRSZXF1ZXN0VmFsaWRhdG9yOjp2YWxpZGF0ZVRvdGFsKGNvbnZl
cnRlZFVwZGF0ZS5uZXdUb3RhbEFuZExpbmVJdGVtcy50b3RhbCk7Ci0gICAgaWYgKHZhbGlkYXRl
ZFRvdGFsLmhhc0V4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4gdmFsaWRhdGVkVG90YWwucmVs
ZWFzZUV4Y2VwdGlvbigpOwotCiAgICAgYXV0byBjb252ZXJ0ZWROZXdMaW5lSXRlbXMgPSBjb252
ZXJ0QW5kVmFsaWRhdGUoV1RGTW92ZSh1cGRhdGUubmV3TGluZUl0ZW1zKSk7CiAgICAgaWYgKGNv
bnZlcnRlZE5ld0xpbmVJdGVtcy5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGNvbnZl
cnRlZE5ld0xpbmVJdGVtcy5yZWxlYXNlRXhjZXB0aW9uKCk7CkBAIC0zNzgsMTEgKzM3Niw2IEBA
IHN0YXRpYyBFeGNlcHRpb25PcjxTaGlwcGluZ01ldGhvZFVwZGF0ZT4gY29udmVydEFuZFZhbGlk
YXRlKEFwcGxlUGF5U2hpcHBpbmdNZXRoCiAKICAgICBjb252ZXJ0ZWRVcGRhdGUubmV3VG90YWxB
bmRMaW5lSXRlbXMudG90YWwgPSBjb252ZXJ0ZWROZXdUb3RhbC5yZWxlYXNlUmV0dXJuVmFsdWUo
KTsKIAotICAgIC8vIEZJWE1FOiBNZXJnZSB0aGlzIHZhbGlkYXRpb24gaW50byB0aGUgdmFsaWRh
dGlvbiB3ZSBhcmUgZG9pbmcgYWJvdmUuCi0gICAgYXV0byB2YWxpZGF0ZWRUb3RhbCA9IFBheW1l
bnRSZXF1ZXN0VmFsaWRhdG9yOjp2YWxpZGF0ZVRvdGFsKGNvbnZlcnRlZFVwZGF0ZS5uZXdUb3Rh
bEFuZExpbmVJdGVtcy50b3RhbCk7Ci0gICAgaWYgKHZhbGlkYXRlZFRvdGFsLmhhc0V4Y2VwdGlv
bigpKQotICAgICAgICByZXR1cm4gdmFsaWRhdGVkVG90YWwucmVsZWFzZUV4Y2VwdGlvbigpOwot
CiAgICAgYXV0byBjb252ZXJ0ZWROZXdMaW5lSXRlbXMgPSBjb252ZXJ0QW5kVmFsaWRhdGUoV1RG
TW92ZSh1cGRhdGUubmV3TGluZUl0ZW1zKSk7CiAgICAgaWYgKGNvbnZlcnRlZE5ld0xpbmVJdGVt
cy5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGNvbnZlcnRlZE5ld0xpbmVJdGVtcy5y
ZWxlYXNlRXhjZXB0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L0FwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0LmgKaW5kZXggZjU3
NWE1NDE1OTFmZmNiNjU5MmQyNTVjMWFlNzQzZWMyZjBmYmY4MS4uOGE2NWM0OTBiMTAyMTNlM2U1
YTA0MDlhYjIxNzVlNjZjZDdiNTM3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QuaApA
QCAtMjEyLDEwICsyMTIsNiBAQCBzdHJ1Y3QgUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQgewog
ICAgIFZlY3RvcjxQYXltZW50RXJyb3I+IGVycm9yczsKIH07CiAKLXN0cnVjdCBQYXltZW50TWV0
aG9kVXBkYXRlIHsKLSAgICBBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6VG90YWxBbmRM
aW5lSXRlbXMgbmV3VG90YWxBbmRMaW5lSXRlbXM7Ci19OwotCiBzdHJ1Y3QgU2hpcHBpbmdDb250
YWN0VXBkYXRlIHsKICAgICBWZWN0b3I8UGF5bWVudEVycm9yPiBlcnJvcnM7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvci5oCmlu
ZGV4IDFhNGFmM2JlOTMxM2U1M2I5ZTE3Mzc0MGI1MmRlNTljZmZhNmEzM2IuLjRhMGY5NmU3OTBi
ZTAxYTE3ZDgwYjRjZDk2MWE1ZThjNzIxY2NkYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuaApAQCAtMzksMTEgKzM5LDEx
IEBAIGNsYXNzIFBheW1lbnRDb29yZGluYXRvckNsaWVudDsKIGNsYXNzIFBheW1lbnRDb250YWN0
OwogY2xhc3MgUGF5bWVudE1lcmNoYW50U2Vzc2lvbjsKIGNsYXNzIFBheW1lbnRNZXRob2Q7Citj
bGFzcyBQYXltZW50TWV0aG9kVXBkYXRlOwogY2xhc3MgUGF5bWVudFNlc3Npb247CiBjbGFzcyBQ
YXltZW50U2Vzc2lvbkVycm9yOwogZW51bSBjbGFzcyBQYXltZW50QXV0aG9yaXphdGlvblN0YXR1
czsKIHN0cnVjdCBQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdDsKLXN0cnVjdCBQYXltZW50TWV0
aG9kVXBkYXRlOwogc3RydWN0IFNoaXBwaW5nQ29udGFjdFVwZGF0ZTsKIHN0cnVjdCBTaGlwcGlu
Z01ldGhvZFVwZGF0ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBs
ZXBheS9QYXltZW50Q29vcmRpbmF0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmgKaW5kZXggOGQ1MjNjMGUyMmViNjU0
M2Q3ZmQ2YjFhYzFhMjQ1N2YyODI0N2ZiMi4uMDNmNWIyODkwOTM0ZjliYjI2Yzg3MTFiYWNhNTk2
ZDJiYzcwZGQ3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9Q
YXltZW50Q29vcmRpbmF0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L1BheW1lbnRDb29yZGluYXRvckNsaWVudC5oCkBAIC0zOSw4ICszOSw4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBQYXltZW50TWVyY2hhbnRT
ZXNzaW9uOworY2xhc3MgUGF5bWVudE1ldGhvZFVwZGF0ZTsKIHN0cnVjdCBQYXltZW50QXV0aG9y
aXphdGlvblJlc3VsdDsKLXN0cnVjdCBQYXltZW50TWV0aG9kVXBkYXRlOwogc3RydWN0IFNoaXBw
aW5nQ29udGFjdFVwZGF0ZTsKIHN0cnVjdCBTaGlwcGluZ01ldGhvZFVwZGF0ZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50SGVhZGVycy5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50SGVhZGVycy5oCmluZGV4IDNm
MWIwNGVkYmJmZTY2NDgxM2FkMmRkNDcwMDZhNTZlZjFhNGY4NWYuLmM1NTUxMTc5ZWQxZjBkMjQ1
MDhlMmE0NGViYzUzNzJlNzliZmM1MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvUGF5bWVudEhlYWRlcnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FwcGxlcGF5L1BheW1lbnRIZWFkZXJzLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzAsNCArMzAsNiBAQAogI2luY2x1ZGUgIlBheW1l
bnRDb250YWN0LmgiCiAjaW5jbHVkZSAiUGF5bWVudE1lcmNoYW50U2Vzc2lvbi5oIgogI2luY2x1
ZGUgIlBheW1lbnRNZXRob2QuaCIKKyNpbmNsdWRlICJQYXltZW50TWV0aG9kVXBkYXRlLmgiCiAj
aW5jbHVkZSAiUGF5bWVudFNlc3Npb25FcnJvci5oIgorI2luY2x1ZGUgIlBheW1lbnRTdW1tYXJ5
SXRlbXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5
bWVudE1ldGhvZFVwZGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXlt
ZW50TWV0aG9kVXBkYXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzE4MTNjZGRlZTllNzRkMGQ2NzFhY2QxNzlh
Njk1OWQ1NWUzYjJmMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvUGF5bWVudE1ldGhvZFVwZGF0ZS5oCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShBUFBMRV9QQVkpCisKKyNpbmNsdWRlICJB
cHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oIgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KKworI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisjaW5jbHVkZSA8V2ViS2l0QWRkaXRp
b25zL1BheW1lbnRNZXRob2RVcGRhdGVBZGRpdGlvbnMuaD4KKyNlbmRpZgorCitPQkpDX0NMQVNT
IFBLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRlOworCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIFBheW1lbnRNZXRob2RVcGRhdGUgeworcHVibGlj
OgorICAgIHVzaW5nIExpbmVJdGVtID0gQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6Okxp
bmVJdGVtOworICAgIHVzaW5nIFRvdGFsQW5kTGluZUl0ZW1zID0gQXBwbGVQYXlTZXNzaW9uUGF5
bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zOworCisgICAgUGF5bWVudE1ldGhvZFVwZGF0
ZShMaW5lSXRlbSYmIHRvdGFsLCBWZWN0b3I8TGluZUl0ZW0+JiYpOworICAgIGV4cGxpY2l0IFBh
eW1lbnRNZXRob2RVcGRhdGUoUmV0YWluUHRyPFBLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9k
VXBkYXRlPiYmKTsKKyAgICBleHBsaWNpdCBQYXltZW50TWV0aG9kVXBkYXRlKFRvdGFsQW5kTGlu
ZUl0ZW1zJiYpOworCisgICAgY29uc3QgVG90YWxBbmRMaW5lSXRlbXMmIHRvdGFsQW5kTGluZUl0
ZW1zKCkgY29uc3Q7CisgICAgUEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RVcGRhdGUgKnBs
YXRmb3JtVXBkYXRlKCkgY29uc3Q7CisKKyNpZiBkZWZpbmVkKFBBWU1FTlRNRVRIT0RVUERBVEVf
UFVCTElDX0FERElUSU9OUykKK1BBWU1FTlRNRVRIT0RVUERBVEVfUFVCTElDX0FERElUSU9OUwor
I3VuZGVmIFBBWU1FTlRNRVRIT0RVUERBVEVfUFVCTElDX0FERElUSU9OUworI2VuZGlmCisgICAg
Citwcml2YXRlOgorICAgIE9wdGlvbmFsPFRvdGFsQW5kTGluZUl0ZW1zPiBtX3RvdGFsQW5kTGlu
ZUl0ZW1zOworICAgIFJldGFpblB0cjxQS1BheW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhvZFVwZGF0
ZT4gbV9wbGF0Zm9ybVVwZGF0ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEVOQUJMRShBUFBMRV9QQVkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxlcGF5L1BheW1lbnRTdW1tYXJ5SXRlbXMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvUGF5bWVudFN1bW1hcnlJdGVtcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVlOTUxNmEwOGZl
NmI1MThmMTYyOWJhMDFjZTNiNzY0ODhkNmJmNGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRTdW1tYXJ5SXRlbXMuaApAQCAtMCwwICsx
LDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQVBQTEVfUEFZ
KQorCisjaW5jbHVkZSAiQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QuaCIKKworT0JKQ19D
TEFTUyBOU0FycmF5OworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dFQkNPUkVfRVhQT1JUIE5T
QXJyYXkgKnBsYXRmb3JtU3VtbWFyeUl0ZW1zKGNvbnN0IEFwcGxlUGF5U2Vzc2lvblBheW1lbnRS
ZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcyYpOworV0VCQ09SRV9FWFBPUlQgTlNBcnJheSAqcGxh
dGZvcm1TdW1tYXJ5SXRlbXMoY29uc3QgQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6Okxp
bmVJdGVtJiB0b3RhbCwgY29uc3QgVmVjdG9yPEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0
OjpMaW5lSXRlbT4mKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKEFQUExFX1BBWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVw
YXkvY29jb2EvUGF5bWVudE1ldGhvZFVwZGF0ZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50TWV0aG9kVXBkYXRlQ29jb2EubW0KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjVlMWY3NjUwMDU4NjE4OTIyNmM2NWEwZWQyMWU1MDc4YjFiYmMwYgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1ldGhv
ZFVwZGF0ZUNvY29hLm1tCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJj
b25maWcuaCIKKyNpbXBvcnQgIlBheW1lbnRNZXRob2RVcGRhdGUuaCIKKworI2lmIEVOQUJMRShB
UFBMRV9QQVkpCisKKyNpbXBvcnQgIlBheW1lbnRTdW1tYXJ5SXRlbXMuaCIKKyNpbXBvcnQgPHBh
bC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXlt
ZW50TWV0aG9kVXBkYXRlOjpQYXltZW50TWV0aG9kVXBkYXRlKExpbmVJdGVtJiYgdG90YWwsIFZl
Y3RvcjxMaW5lSXRlbT4mJiBsaW5lSXRlbXMpCisgICAgOiBtX3RvdGFsQW5kTGluZUl0ZW1zIHsg
eyBXVEZNb3ZlKHRvdGFsKSwgV1RGTW92ZShsaW5lSXRlbXMpIH0gfQorICAgICwgbV9wbGF0Zm9y
bVVwZGF0ZSB7IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhv
ZFVwZGF0ZUluc3RhbmNlKCkgaW5pdFdpdGhQYXltZW50U3VtbWFyeUl0ZW1zOnBsYXRmb3JtU3Vt
bWFyeUl0ZW1zKCptX3RvdGFsQW5kTGluZUl0ZW1zKV0pIH0KK3sKK30KKworUGF5bWVudE1ldGhv
ZFVwZGF0ZTo6UGF5bWVudE1ldGhvZFVwZGF0ZShSZXRhaW5QdHI8UEtQYXltZW50UmVxdWVzdFBh
eW1lbnRNZXRob2RVcGRhdGU+JiYgcGxhdGZvcm1VcGRhdGUpCisgICAgOiBtX3BsYXRmb3JtVXBk
YXRlIHsgV1RGTW92ZShwbGF0Zm9ybVVwZGF0ZSkgfQoreworfQorCitQYXltZW50TWV0aG9kVXBk
YXRlOjpQYXltZW50TWV0aG9kVXBkYXRlKFRvdGFsQW5kTGluZUl0ZW1zJiYgdG90YWxBbmRMaW5l
SXRlbXMpCisgICAgOiBQYXltZW50TWV0aG9kVXBkYXRlIHsgV1RGTW92ZSh0b3RhbEFuZExpbmVJ
dGVtcy50b3RhbCksIFdURk1vdmUodG90YWxBbmRMaW5lSXRlbXMubGluZUl0ZW1zKSB9Cit7Cit9
CisKK2NvbnN0IFBheW1lbnRNZXRob2RVcGRhdGU6OlRvdGFsQW5kTGluZUl0ZW1zJiBQYXltZW50
TWV0aG9kVXBkYXRlOjp0b3RhbEFuZExpbmVJdGVtcygpIGNvbnN0Cit7CisgICAgcmV0dXJuICpt
X3RvdGFsQW5kTGluZUl0ZW1zOworfQorCitQS1BheW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhvZFVw
ZGF0ZSAqUGF5bWVudE1ldGhvZFVwZGF0ZTo6cGxhdGZvcm1VcGRhdGUoKSBjb25zdAoreworICAg
IHJldHVybiBtX3BsYXRmb3JtVXBkYXRlLmdldCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQVBQTEVfUEFZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50U3VtbWFyeUl0ZW1zQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRTdW1tYXJ5SXRl
bXNDb2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YTg3MjRhNzY0ODUwZDZmMDc1ZjA0OWQ5YzE4ZTZhMGY1
YWY2MWY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9jb2NvYS9QYXltZW50U3VtbWFyeUl0ZW1zQ29jb2EubW0KQEAgLTAsMCArMSw3OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJQYXltZW50U3VtbWFy
eUl0ZW1zLmgiCisKKyNpZiBFTkFCTEUoQVBQTEVfUEFZKQorCisjaW1wb3J0IDxwYWwvY29jb2Ev
UGFzc0tpdFNvZnRMaW5rLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIE5TRGVj
aW1hbE51bWJlciAqdG9EZWNpbWFsTnVtYmVyKGNvbnN0IFN0cmluZyYgYW1vdW50KQoreworICAg
IGlmICghYW1vdW50KQorICAgICAgICByZXR1cm4gW05TRGVjaW1hbE51bWJlciB6ZXJvXTsKKyAg
ICByZXR1cm4gW05TRGVjaW1hbE51bWJlciBkZWNpbWFsTnVtYmVyV2l0aFN0cmluZzphbW91bnQg
bG9jYWxlOkB7IE5TTG9jYWxlRGVjaW1hbFNlcGFyYXRvciA6IEAiLiIgfV07Cit9CisKK3N0YXRp
YyBQS1BheW1lbnRTdW1tYXJ5SXRlbVR5cGUgdG9QS1BheW1lbnRTdW1tYXJ5SXRlbVR5cGUoQXBw
bGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtOjpUeXBlIHR5cGUpCit7CisgICAg
c3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6
TGluZUl0ZW06OlR5cGU6OkZpbmFsOgorICAgICAgICByZXR1cm4gUEtQYXltZW50U3VtbWFyeUl0
ZW1UeXBlRmluYWw7CisgICAgY2FzZSBBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGlu
ZUl0ZW06OlR5cGU6OlBlbmRpbmc6CisgICAgICAgIHJldHVybiBQS1BheW1lbnRTdW1tYXJ5SXRl
bVR5cGVQZW5kaW5nOworICAgIH0KK30KKworc3RhdGljIFBLUGF5bWVudFN1bW1hcnlJdGVtICp0
b1BLUGF5bWVudFN1bW1hcnlJdGVtKGNvbnN0IEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0
OjpMaW5lSXRlbSYgbGluZUl0ZW0pCit7CisgICAgcmV0dXJuIFtQQUw6OmdldFBLUGF5bWVudFN1
bW1hcnlJdGVtQ2xhc3MoKSBzdW1tYXJ5SXRlbVdpdGhMYWJlbDpsaW5lSXRlbS5sYWJlbCBhbW91
bnQ6dG9EZWNpbWFsTnVtYmVyKGxpbmVJdGVtLmFtb3VudCkgdHlwZTp0b1BLUGF5bWVudFN1bW1h
cnlJdGVtVHlwZShsaW5lSXRlbS50eXBlKV07Cit9CisKK05TQXJyYXkgKnBsYXRmb3JtU3VtbWFy
eUl0ZW1zKGNvbnN0IEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJ
dGVtcyYgdG90YWxBbmRMaW5lSXRlbXMpCit7CisgICAgcmV0dXJuIHBsYXRmb3JtU3VtbWFyeUl0
ZW1zKHRvdGFsQW5kTGluZUl0ZW1zLnRvdGFsLCB0b3RhbEFuZExpbmVJdGVtcy5saW5lSXRlbXMp
OworfQorCitOU0FycmF5ICpwbGF0Zm9ybVN1bW1hcnlJdGVtcyhjb25zdCBBcHBsZVBheVNlc3Np
b25QYXltZW50UmVxdWVzdDo6TGluZUl0ZW0mIHRvdGFsLCBjb25zdCBWZWN0b3I8QXBwbGVQYXlT
ZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtPiYgbGluZUl0ZW1zKQoreworICAgIE5TTXV0
YWJsZUFycmF5ICpwYXltZW50U3VtbWFyeUl0ZW1zID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0
aENhcGFjaXR5OmxpbmVJdGVtcy5zaXplKCkgKyAxXTsKKyAgICBmb3IgKGF1dG8mIGxpbmVJdGVt
IDogbGluZUl0ZW1zKSB7CisgICAgICAgIGlmIChQS1BheW1lbnRTdW1tYXJ5SXRlbSAqc3VtbWFy
eUl0ZW0gPSB0b1BLUGF5bWVudFN1bW1hcnlJdGVtKGxpbmVJdGVtKSkKKyAgICAgICAgICAgIFtw
YXltZW50U3VtbWFyeUl0ZW1zIGFkZE9iamVjdDpzdW1tYXJ5SXRlbV07CisgICAgfQorCisgICAg
aWYgKFBLUGF5bWVudFN1bW1hcnlJdGVtICp0b3RhbEl0ZW0gPSB0b1BLUGF5bWVudFN1bW1hcnlJ
dGVtKHRvdGFsKSkKKyAgICAgICAgW3BheW1lbnRTdW1tYXJ5SXRlbXMgYWRkT2JqZWN0OnRvdGFs
SXRlbV07CisKKyAgICByZXR1cm4gYWRvcHROUyhbcGF5bWVudFN1bW1hcnlJdGVtcyBjb3B5XSku
YXV0b3JlbGVhc2UoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShBUFBMRV9QQVkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVBheW1lbnRI
YW5kbGVyLmNwcAppbmRleCBkMzRkN2NkZThiYTk0YjMxZjNiMjZlYzViNDNiOWM5NmY3ZWZlOGMw
Li4wZjdlM2JhMmEyMzM1ZTkwZjc3YTFkZmE2OWM2NjU3NGRmNTQzZGRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5
bWVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5
bWVudHJlcXVlc3QvQXBwbGVQYXlQYXltZW50SGFuZGxlci5jcHAKQEAgLTUxLDYgKzUxLDcgQEAK
ICNpbmNsdWRlICJQYXltZW50Q29vcmRpbmF0b3IuaCIKICNpbmNsdWRlICJQYXltZW50TWVyY2hh
bnRTZXNzaW9uLmgiCiAjaW5jbHVkZSAiUGF5bWVudE1ldGhvZC5oIgorI2luY2x1ZGUgIlBheW1l
bnRNZXRob2RVcGRhdGUuaCIKICNpbmNsdWRlICJQYXltZW50UmVxdWVzdFZhbGlkYXRvci5oIgog
I2luY2x1ZGUgIlBheW1lbnRSZXNwb25zZS5oIgogI2luY2x1ZGUgIlBheW1lbnRWYWxpZGF0aW9u
RXJyb3JzLmgiCkBAIC00NzMsMTQgKzQ3NCwxMSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBcHBsZVBh
eVBheW1lbnRIYW5kbGVyOjpwYXltZW50TWV0aG9kVXBkYXRlZCgpCiAgICAgQVNTRVJUKG1faXNV
cGRhdGluZyk7CiAgICAgbV9pc1VwZGF0aW5nID0gZmFsc2U7CiAKLSAgICBQYXltZW50TWV0aG9k
VXBkYXRlIHVwZGF0ZTsKLQogICAgIGF1dG8gbmV3VG90YWxBbmRMaW5lSXRlbXMgPSBjb21wdXRl
VG90YWxBbmRMaW5lSXRlbXMoKTsKICAgICBpZiAobmV3VG90YWxBbmRMaW5lSXRlbXMuaGFzRXhj
ZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBuZXdUb3RhbEFuZExpbmVJdGVtcy5yZWxlYXNlRXhj
ZXB0aW9uKCk7Ci0gICAgdXBkYXRlLm5ld1RvdGFsQW5kTGluZUl0ZW1zID0gbmV3VG90YWxBbmRM
aW5lSXRlbXMucmVsZWFzZVJldHVyblZhbHVlKCk7CiAKLSAgICBwYXltZW50Q29vcmRpbmF0b3Io
KS5jb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oV1RGTW92ZSh1cGRhdGUpKTsKKyAgICBw
YXltZW50Q29vcmRpbmF0b3IoKS5jb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oUGF5bWVu
dE1ldGhvZFVwZGF0ZSB7IG5ld1RvdGFsQW5kTGluZUl0ZW1zLnJlbGVhc2VSZXR1cm5WYWx1ZSgp
IH0pOwogICAgIHJldHVybiB7IH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3Bp
L2NvY29hL1Bhc3NLaXRTUEkuaAppbmRleCBhMWJhMmM5YjkzMjc2Mjk4ZmI2ZWNiNzNmYmVhMWJh
NjU1NDMwOGU4Li42NWY1YmZmZmQ4YTkzZjhmMzllYzFlNWM2YzgxZGYwMGI0ZjAwZThkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvUGFzc0tpdFNQSS5oCkBAIC0zNDgs
MTYgKzM0OCwyMSBAQCBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogQHByb3BlcnR5IChub25hdG9t
aWMsIGFzc2lnbikgUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cyBzdGF0dXM7CiBAZW5kCiAK
LUBpbnRlcmZhY2UgUEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RVcGRhdGUgOiBOU09iamVj
dAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUGF5bWVudFN1bW1hcnlJdGVtczoobm9ubnVsbCBO
U0FycmF5PFBLUGF5bWVudFN1bW1hcnlJdGVtICo+ICopcGF5bWVudFN1bW1hcnlJdGVtczsKK0Bp
bnRlcmZhY2UgUEtQYXltZW50UmVxdWVzdFVwZGF0ZSA6IE5TT2JqZWN0CitAcHJvcGVydHkgKG5v
bmF0b21pYywgY29weSkgTlNBcnJheTxQS1BheW1lbnRTdW1tYXJ5SXRlbSAqPiAqcGF5bWVudFN1
bW1hcnlJdGVtczsKIEBlbmQKIAotQGludGVyZmFjZSBQS1BheW1lbnRSZXF1ZXN0VXBkYXRlIDog
TlNPYmplY3QKK0BpbnRlcmZhY2UgUEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RVcGRhdGUg
OiBQS1BheW1lbnRSZXF1ZXN0VXBkYXRlCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQYXltZW50
U3VtbWFyeUl0ZW1zOihub25udWxsIE5TQXJyYXk8UEtQYXltZW50U3VtbWFyeUl0ZW0gKj4gKilw
YXltZW50U3VtbWFyeUl0ZW1zOwogQGVuZAogCiBAaW50ZXJmYWNlIFBLUGF5bWVudFJlcXVlc3RT
aGlwcGluZ0NvbnRhY3RVcGRhdGUgOiBQS1BheW1lbnRSZXF1ZXN0VXBkYXRlCiAtIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhQYXltZW50U3VtbWFyeUl0ZW1zOihub25udWxsIE5TQXJyYXk8UEtQYXlt
ZW50U3VtbWFyeUl0ZW0gKj4gKilzdW1tYXJ5SXRlbXMgc2hpcHBpbmdNZXRob2RzOihub25udWxs
IE5TQXJyYXk8UEtTaGlwcGluZ01ldGhvZCAqPiAqKXNoaXBwaW5nTWV0aG9kczsKIC0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aEVycm9yczoobnVsbGFibGUgTlNBcnJheTxOU0Vycm9yICo+ICopZXJy
b3JzIHBheW1lbnRTdW1tYXJ5SXRlbXM6KG5vbm51bGwgTlNBcnJheTxQS1BheW1lbnRTdW1tYXJ5
SXRlbSAqPiAqKXN1bW1hcnlJdGVtcyBzaGlwcGluZ01ldGhvZHM6KG5vbm51bGwgTlNBcnJheTxQ
S1NoaXBwaW5nTWV0aG9kICo+ICopc2hpcHBpbmdNZXRob2RzOworQHByb3BlcnR5IChub25hdG9t
aWMsIGNvcHkpIE5TQXJyYXk8UEtTaGlwcGluZ01ldGhvZCAqPiAqc2hpcHBpbmdNZXRob2RzOwor
QGVuZAorCitAaW50ZXJmYWNlIFBLUGF5bWVudFJlcXVlc3RTaGlwcGluZ01ldGhvZFVwZGF0ZSA6
IFBLUGF5bWVudFJlcXVlc3RVcGRhdGUKIEBlbmQKIAogTlNfQVNTVU1FX05PTk5VTExfRU5ECmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNv
cmUvU291cmNlc0NvY29hLnR4dAppbmRleCA1MjViYWZjNTdhZGY2ZTQ1NjJiMjFhYzQ2ZjI3ZjYx
NmJkYzRmNzE0Li5hMDY5MmE4ZjdiN2QxODIwNjNlNTM3MGRiMzg5YjcyZDc5YmE4YzliIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTU5Miw3ICs1OTIsOSBAQCBXSExTTFN0YW5kYXJkTGli
cmFyeUZ1bmN0aW9uTWFwLmNwcAogICAgIE1vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudENv
bnRhY3RDb2NvYS5tbQogICAgIE1vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1lcmNoYW50
U2Vzc2lvbkNvY29hLm1tCiAgICAgTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50TWV0aG9k
Q29jb2EubW0KKyAgICBNb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXRob2RVcGRhdGVD
b2NvYS5tbQogICAgIE1vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudFNlc3Npb25FcnJvckNv
Y29hLm1tCisgICAgTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50U3VtbWFyeUl0ZW1zQ29j
b2EubW0KIAogICAgIE1vZHVsZXMvYXBwbGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQYXlt
ZW50SGFuZGxlci5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDllZjMwY2VlZDc0YTQwMGZjYjNlMThlMmViNjMyMDIxOTBl
ZGM1YTYuLjZmZGEwMDY1OTRkMWJkNjAwYjY5YzJlZGQwNWU2MzMzOTg4N2IwODIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMw
MDMsNiArMzAwMyw4IEBACiAJCUExREY1QUE2MUY3RjY0QkIwMDU4QTQ3NyAvKiBQYXltZW50SGFu
ZGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFE
RjVBQTQxRjdGNjRCQjAwNThBNDc3IC8qIFBheW1lbnRIYW5kbGVyLmggKi87IH07CiAJCUExREY1
QUFEMUY4MDc1RjAwMDU4QTQ3NyAvKiBBcHBsZVBheVJlcXVlc3RCYXNlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMURGNUFBQTFGODA3NUYwMDA1OEE0
NzcgLyogQXBwbGVQYXlSZXF1ZXN0QmFzZS5oICovOyB9OwogCQlBMURGNUFCMzFGODA3NzUzMDA1
OEE0NzcgLyogSlNBcHBsZVBheVJlcXVlc3RCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMURGNUFCMTFGODA3NzUyMDA1OEE0NzcgLyogSlNBcHBs
ZVBheVJlcXVlc3RCYXNlLmggKi87IH07CisJCUExREZENTI1MjMzNDU5M0YwMDQyRkNEQiAvKiBQ
YXltZW50TWV0aG9kVXBkYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBMURGRDUyNDIzMzQ1OTNBMDA0MkZDREIgLyogUGF5bWVudE1ldGhvZFVwZGF0
ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUEx
REZENTI2MjMzNDU5NDgwMDQyRkNEQiAvKiBQYXltZW50U3VtbWFyeUl0ZW1zLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMURGRDUyMjIzMzQ1OTNBMDA0
MkZDREIgLyogUGF5bWVudFN1bW1hcnlJdGVtcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCUExRUQ3NzhEMUJFMzI5NDAwMERDMTc5MSAvKiBEZXZp
Y2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRUQ3
NzhCMUJFMzI5NDAwMERDMTc5MSAvKiBEZXZpY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBMUY2MDA0NDFGNDc1N0E5MDA3N0U4M0YgLyogUGF5
bWVudFJlcXVlc3RVcGRhdGVFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTFGNjAwNDExRjQ3NTdBOTAwNzdFODNGIC8qIFBheW1lbnRSZXF1ZXN0
VXBkYXRlRXZlbnQuaCAqLzsgfTsKIAkJQTFGNjAwNDkxRjQ3NTk0RTAwNzdFODNGIC8qIFBheW1l
bnREZXRhaWxzVXBkYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMUY2MDA0NzFGNDc1OTRFMDA3N0U4M0YgLyogUGF5bWVudERldGFpbHNVcGRhdGUu
aCAqLzsgfTsKQEAgLTExMzA1LDYgKzExMzA3LDEwIEBACiAJCUExREY1QUIwMUY4MDc3NTIwMDU4
QTQ3NyAvKiBKU0FwcGxlUGF5UmVxdWVzdEJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNBcHBsZVBheVJlcXVlc3RCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTFERjVBQjExRjgwNzc1MjAwNThBNDc3IC8qIEpTQXBwbGVQYXlSZXF1
ZXN0QmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0FwcGxlUGF5UmVx
dWVzdEJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFERjVBQjQxRjgwNzhG
MzAwNThBNDc3IC8qIEFwcGxlUGF5Q29udGFjdEZpZWxkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEFwcGxlUGF5Q29udGFjdEZpZWxkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QTFERkQ1MjIyMzM0NTkzQTAwNDJGQ0RCIC8qIFBheW1lbnRTdW1tYXJ5SXRlbXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUGF5bWVudFN1bW1hcnlJdGVtcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBMURGRDUyNDIzMzQ1OTNBMDA0MkZDREIgLyogUGF5bWVudE1ldGhvZFVwZGF0ZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBQYXltZW50TWV0aG9kVXBkYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUExREZENTI3MjMzNDU5NzMwMDQyRkNEQiAvKiBQYXltZW50U3VtbWFyeUl0ZW1z
Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQYXltZW50U3VtbWFyeUl0ZW1zQ29jb2Eu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExREZENTI4MjMzNDU5NzQwMDQyRkNE
QiAvKiBQYXltZW50TWV0aG9kVXBkYXRlQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQ
YXltZW50TWV0aG9kVXBkYXRlQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUExRTExNTQzMTMwMTVDM0QwMDU0QUM4QyAvKiBEaXN0YW50TGlnaHRTb3VyY2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGlzdGFudExpZ2h0U291cmNlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFFMTE1NDUxMzAxNUM0RTAwNTRBQzhDIC8q
IFBvaW50TGlnaHRTb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUG9pbnRMaWdodFNvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEx
RTExNTQ3MTMwMTVDNUQwMDU0QUM4QyAvKiBTcG90TGlnaHRTb3VyY2UuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3BvdExpZ2h0U291cmNlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2Nzc4LDExICsxNjc4NCwxMyBAQAogCQkJCTdDRjkzMEU2
MUUwMUY5QUQwMEJBRkZCRSAvKiBQYXltZW50SGVhZGVycy5oICovLAogCQkJCTFBRTk2QTg3MUQx
QTBDRUIwMEI4Njc2OCAvKiBQYXltZW50TWVyY2hhbnRTZXNzaW9uLmggKi8sCiAJCQkJMUE4QTY0
MzkxRDE5RkM1MzAwRDBFMDBGIC8qIFBheW1lbnRNZXRob2QuaCAqLywKKwkJCQlBMURGRDUyNDIz
MzQ1OTNBMDA0MkZDREIgLyogUGF5bWVudE1ldGhvZFVwZGF0ZS5oICovLAogCQkJCTFBOEE2NDY2
MUQxOUZERkYwMEQwRTAwRiAvKiBQYXltZW50UmVxdWVzdFZhbGlkYXRvci5oICovLAogCQkJCTFB
OEE2NDY1MUQxOUZERkYwMEQwRTAwRiAvKiBQYXltZW50UmVxdWVzdFZhbGlkYXRvci5tbSAqLywK
IAkJCQlBMUMyQzU3NTFGQTI4NTE2MDBCQTQ2RkEgLyogUGF5bWVudFNlc3Npb24uY3BwICovLAog
CQkJCUExNDkxREEyMUY4NTlEODcwMDk1RjVENCAvKiBQYXltZW50U2Vzc2lvbi5oICovLAogCQkJ
CUExMTNFMDI3MjMzMTgyOTMwMDlDMzNBMCAvKiBQYXltZW50U2Vzc2lvbkVycm9yLmggKi8sCisJ
CQkJQTFERkQ1MjIyMzM0NTkzQTAwNDJGQ0RCIC8qIFBheW1lbnRTdW1tYXJ5SXRlbXMuaCAqLywK
IAkJCSk7CiAJCQlwYXRoID0gYXBwbGVwYXk7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpA
QCAtMTY3OTQsNyArMTY4MDIsOSBAQAogCQkJCTFBOEE2NDZBMUQxOUZGODcwMEQwRTAwRiAvKiBQ
YXltZW50Q29udGFjdENvY29hLm1tICovLAogCQkJCTFBREE0QTFCMUQyMkYyQzAwMDVBOUExNSAv
KiBQYXltZW50TWVyY2hhbnRTZXNzaW9uQ29jb2EubW0gKi8sCiAJCQkJMUE4QTY0NkIxRDE5RkY4
NzAwRDBFMDBGIC8qIFBheW1lbnRNZXRob2RDb2NvYS5tbSAqLywKKwkJCQlBMURGRDUyODIzMzQ1
OTc0MDA0MkZDREIgLyogUGF5bWVudE1ldGhvZFVwZGF0ZUNvY29hLm1tICovLAogCQkJCUExMTNF
MDJBMjMzMThFQkMwMDlDMzNBMCAvKiBQYXltZW50U2Vzc2lvbkVycm9yQ29jb2EubW0gKi8sCisJ
CQkJQTFERkQ1MjcyMzM0NTk3MzAwNDJGQ0RCIC8qIFBheW1lbnRTdW1tYXJ5SXRlbXNDb2NvYS5t
bSAqLywKIAkJCSk7CiAJCQlwYXRoID0gY29jb2E7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OwpAQCAtMzEwNzcsNiArMzEwODcsNyBAQAogCQkJCTFBOEE2NDNDMUQxOUZDNTMwMEQwRTAwRiAv
KiBQYXltZW50TWV0aG9kLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTY0QTI0NzIxMzRCQzcxMDA1
MDkxNTYgLyogUGF5bWVudE1ldGhvZENoYW5nZUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlB
MUY3NkIxOTFGNDRDMzkwMDAxNEMzMTggLyogUGF5bWVudE1ldGhvZERhdGEuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUExREZENTI1MjMzNDU5M0YwMDQyRkNEQiAvKiBQYXltZW50TWV0aG9kVXBkYXRl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMUY3NkIyQjFGNDRDNEVGMDAxNEMzMTggLyogUGF5bWVu
dE9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUExRjc2QjEzMUY0NEMyNDUwMDE0QzMxOCAv
KiBQYXltZW50UmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFGNjAwNDQxRjQ3NTdBOTAw
NzdFODNGIC8qIFBheW1lbnRSZXF1ZXN0VXBkYXRlRXZlbnQuaCBpbiBIZWFkZXJzICovLApAQCAt
MzEwODgsNiArMzEwOTksNyBAQAogCQkJCUExMTNFMDI4MjMzMTgyOTMwMDlDMzNBMCAvKiBQYXlt
ZW50U2Vzc2lvbkVycm9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMUY3NkI1NTFGNDREMkM3MDAx
NEMzMTggLyogUGF5bWVudFNoaXBwaW5nT3B0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMUY3
NkI0OTFGNDREMDdBMDAxNEMzMTggLyogUGF5bWVudFNoaXBwaW5nVHlwZS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQTFERkQ1MjYyMzM0NTk0ODAwNDJGQ0RCIC8qIFBheW1lbnRTdW1tYXJ5SXRlbXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCUExNjc3REZEMjEzRTAwNjYwMEEwOEMzNCAvKiBQYXltZW50
VmFsaWRhdGlvbkVycm9ycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjI3NTM1NjUwQjA1MzgxNDAw
MkNFNjRGIC8qIFBERkRvY3VtZW50SW1hZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTVFMkM0MzUx
MUJDRUUyRjYwMDAxRTJCQyAvKiBQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaCBpbiBIZWFkZXJzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5h
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRDb29yZGluYXRvci5j
cHAKaW5kZXggMDM2MDVkNTU2NGYyOGY0MTQwNWQ0Y2ZkMTc3Y2Y5NjVhODBmMGY0ZS4uZmQ3ZmRk
ZDU2Nzc2MGJiMDU5NmM1YmZjYTgyNTRiODFhOTYwZjY4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL01vY2tQYXltZW50Q29vcmRpbmF0b3IuY3BwCkBAIC0zNCw2ICszNCw3IEBA
CiAjaW5jbHVkZSAiTW9ja1BheW1lbnRNZXRob2QuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5j
bHVkZSAiUGF5bWVudENvb3JkaW5hdG9yLmgiCisjaW5jbHVkZSAiUGF5bWVudE1ldGhvZFVwZGF0
ZS5oIgogI2luY2x1ZGUgIlBheW1lbnRTZXNzaW9uRXJyb3IuaCIKICNpbmNsdWRlIDx3dGYvQ29t
cGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgpAQCAtMTYwLDcgKzE2
MSw3IEBAIHZvaWQgTW9ja1BheW1lbnRDb29yZGluYXRvcjo6Y29tcGxldGVTaGlwcGluZ0NvbnRh
Y3RTZWxlY3Rpb24oT3B0aW9uYWw8U2hpcHBpbmdDCiB2b2lkIE1vY2tQYXltZW50Q29vcmRpbmF0
b3I6OmNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihPcHRpb25hbDxQYXltZW50TWV0aG9k
VXBkYXRlPiYmIHBheW1lbnRNZXRob2RVcGRhdGUpCiB7CiAgICAgaWYgKHBheW1lbnRNZXRob2RV
cGRhdGUpCi0gICAgICAgIHVwZGF0ZVRvdGFsQW5kTGluZUl0ZW1zKHBheW1lbnRNZXRob2RVcGRh
dGUtPm5ld1RvdGFsQW5kTGluZUl0ZW1zKTsKKyAgICAgICAgdXBkYXRlVG90YWxBbmRMaW5lSXRl
bXMocGF5bWVudE1ldGhvZFVwZGF0ZS0+dG90YWxBbmRMaW5lSXRlbXMoKSk7CiB9CiAKIHZvaWQg
TW9ja1BheW1lbnRDb29yZGluYXRvcjo6Y2hhbmdlU2hpcHBpbmdPcHRpb24oU3RyaW5nJiYgc2hp
cHBpbmdPcHRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1Bh
eW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2Nv
Y29hL1BheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyLmgKaW5kZXggY2I2NGFmOTJiZTBiYzE1
YjFkZGQ0YTJhNDFjYTQ3NTQzOTcyMjk0NC4uZDA2Mjc4NDUwOWYxYmQ4YmUyOTA3OTUzOTA2YjBh
NWNmYjMzY2E5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9QYXlt
ZW50QXV0aG9yaXphdGlvblByZXNlbnRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
Y29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIuaApAQCAtNDEsNiArNDEsNyBAQCBj
bGFzcyBQYXltZW50OwogY2xhc3MgUGF5bWVudENvbnRhY3Q7CiBjbGFzcyBQYXltZW50TWVyY2hh
bnRTZXNzaW9uOwogY2xhc3MgUGF5bWVudE1ldGhvZDsKK2NsYXNzIFBheW1lbnRNZXRob2RVcGRh
dGU7CiBjbGFzcyBQYXltZW50U2Vzc2lvbkVycm9yOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL2NvY29hL1BheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyLm1tIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRl
ci5tbQppbmRleCAxMmVhYjE1ZGExODYwZmRhNjk0Yzg3ZWIzZTY4OWJhOGI1MzQ2MzJjLi44ZThm
NWY3MzQyMjRkNGM2OWRiYWYzY2Y0YjJiMzJiNWQ4YTI1ZmVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL2NvY29hL1BheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25QcmVz
ZW50ZXIubW0KQEAgLTMyLDYgKzMyLDggQEAKICNpbXBvcnQgIldlYlBheW1lbnRDb29yZGluYXRv
clByb3h5Q29jb2EuaCIKICNpbXBvcnQgPFdlYkNvcmUvUGF5bWVudEF1dGhvcml6YXRpb25TdGF0
dXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGF5bWVudE1lcmNoYW50U2Vzc2lvbi5oPgorI2ltcG9y
dCA8V2ViQ29yZS9QYXltZW50TWV0aG9kVXBkYXRlLmg+CisjaW1wb3J0IDxXZWJDb3JlL1BheW1l
bnRTdW1tYXJ5SXRlbXMuaD4KICNpbXBvcnQgPHBhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaD4K
IAogU09GVF9MSU5LX0ZSQU1FV09SSyhDb250YWN0cyk7CkBAIC0xODUsOCArMTg3LDEyIEBAIHZv
aWQgUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXI6OmNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0
aW9uKGNvbnN0IFdlYkNvcmU6OlBhCiB2b2lkIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVy
Ojpjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6
UGF5bWVudE1ldGhvZFVwZGF0ZT4mIHVwZGF0ZSkKIHsKICAgICBBU1NFUlQocGxhdGZvcm1EZWxl
Z2F0ZSgpKTsKLSAgICBOU0FycmF5ICpzdW1tYXJ5SXRlbXMgPSB1cGRhdGUgPyB0b1BLUGF5bWVu
dFN1bW1hcnlJdGVtcyh1cGRhdGUtPm5ld1RvdGFsQW5kTGluZUl0ZW1zKSA6IHBsYXRmb3JtRGVs
ZWdhdGUoKS5zdW1tYXJ5SXRlbXM7Ci0gICAgW3BsYXRmb3JtRGVsZWdhdGUoKSBjb21wbGV0ZVBh
eW1lbnRNZXRob2RTZWxlY3Rpb246c3VtbWFyeUl0ZW1zXTsKKyAgICBpZiAoIXVwZGF0ZSkgewor
ICAgICAgICBbcGxhdGZvcm1EZWxlZ2F0ZSgpIGNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlv
bjpuaWxdOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgW3BsYXRmb3JtRGVsZWdhdGUo
KSBjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb246dXBkYXRlLT5wbGF0Zm9ybVVwZGF0ZSgp
XTsKIH0KIAogdm9pZCBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcjo6Y29tcGxldGVQYXlt
ZW50U2Vzc2lvbihjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblJl
c3VsdD4mIHJlc3VsdCkKQEAgLTIwMCwxOCArMjA2LDI3IEBAIHZvaWQgUGF5bWVudEF1dGhvcml6
YXRpb25QcmVzZW50ZXI6OmNvbXBsZXRlUGF5bWVudFNlc3Npb24oY29uc3QgT3B0aW9uYWw8V2Vi
Q29yCiB2b2lkIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyOjpjb21wbGV0ZVNoaXBwaW5n
Q29udGFjdFNlbGVjdGlvbihjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpTaGlwcGluZ0NvbnRhY3RV
cGRhdGU+JiB1cGRhdGUpCiB7CiAgICAgQVNTRVJUKHBsYXRmb3JtRGVsZWdhdGUoKSk7Ci0gICAg
TlNBcnJheSAqc2hpcHBpbmdNZXRob2RzID0gdXBkYXRlID8gdG9QS1NoaXBwaW5nTWV0aG9kcyh1
cGRhdGUtPm5ld1NoaXBwaW5nTWV0aG9kcykgOiBwbGF0Zm9ybURlbGVnYXRlKCkuc2hpcHBpbmdN
ZXRob2RzOwotICAgIE5TQXJyYXkgKnN1bW1hcnlJdGVtcyA9IHVwZGF0ZSA/IHRvUEtQYXltZW50
U3VtbWFyeUl0ZW1zKHVwZGF0ZS0+bmV3VG90YWxBbmRMaW5lSXRlbXMpIDogcGxhdGZvcm1EZWxl
Z2F0ZSgpLnN1bW1hcnlJdGVtczsKLSAgICBOU0FycmF5ICplcnJvcnMgPSB1cGRhdGUgPyB0b05T
RXJyb3JzKHVwZGF0ZS0+ZXJyb3JzKSA6IEBbIF07Ci0gICAgYXV0byBzdGF0dXMgPSBQS1BheW1l
bnRBdXRob3JpemF0aW9uU3RhdHVzU3VjY2VzczsKLSAgICBbcGxhdGZvcm1EZWxlZ2F0ZSgpIGNv
bXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uOnN0YXR1cyBzdW1tYXJ5SXRlbXM6c3VtbWFy
eUl0ZW1zIHNoaXBwaW5nTWV0aG9kczpzaGlwcGluZ01ldGhvZHMgZXJyb3JzOmVycm9yc107Cisg
ICAgaWYgKCF1cGRhdGUpIHsKKyAgICAgICAgW3BsYXRmb3JtRGVsZWdhdGUoKSBjb21wbGV0ZVNo
aXBwaW5nQ29udGFjdFNlbGVjdGlvbjpuaWxdOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgLy8gRklYTUU6IFdlYkNvcmU6OlNoaXBwaW5nQ29udGFjdFVwZGF0ZSBzaG91bGQga25vdyBo
b3cgdG8gY29udmVydCBpdHNlbGYgdG8gYSBQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdDb250YWN0
VXBkYXRlLgorICAgIGF1dG8gc2hpcHBpbmdDb250YWN0VXBkYXRlID0gYWRvcHROUyhbUEFMOjph
bGxvY1BLUGF5bWVudFJlcXVlc3RTaGlwcGluZ0NvbnRhY3RVcGRhdGVJbnN0YW5jZSgpIGluaXRX
aXRoRXJyb3JzOnRvTlNFcnJvcnModXBkYXRlLT5lcnJvcnMpIHBheW1lbnRTdW1tYXJ5SXRlbXM6
V2ViQ29yZTo6cGxhdGZvcm1TdW1tYXJ5SXRlbXModXBkYXRlLT5uZXdUb3RhbEFuZExpbmVJdGVt
cykgc2hpcHBpbmdNZXRob2RzOnRvUEtTaGlwcGluZ01ldGhvZHModXBkYXRlLT5uZXdTaGlwcGlu
Z01ldGhvZHMpXSk7CisgICAgW3BsYXRmb3JtRGVsZWdhdGUoKSBjb21wbGV0ZVNoaXBwaW5nQ29u
dGFjdFNlbGVjdGlvbjpzaGlwcGluZ0NvbnRhY3RVcGRhdGUuZ2V0KCldOwogfQogCiB2b2lkIFBh
eW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyOjpjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0
aW9uKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNoaXBwaW5nTWV0aG9kVXBkYXRlPiYgdXBkYXRl
KQogewogICAgIEFTU0VSVChwbGF0Zm9ybURlbGVnYXRlKCkpOwotICAgIE5TQXJyYXkgKnN1bW1h
cnlJdGVtcyA9IHVwZGF0ZSA/IHRvUEtQYXltZW50U3VtbWFyeUl0ZW1zKHVwZGF0ZS0+bmV3VG90
YWxBbmRMaW5lSXRlbXMpIDogcGxhdGZvcm1EZWxlZ2F0ZSgpLnN1bW1hcnlJdGVtczsKLSAgICBb
cGxhdGZvcm1EZWxlZ2F0ZSgpIGNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb246c3VtbWFy
eUl0ZW1zXTsKKyAgICBpZiAoIXVwZGF0ZSkgeworICAgICAgICBbcGxhdGZvcm1EZWxlZ2F0ZSgp
IGNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb246bmlsXTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIC8vIEZJWE1FOiBXZWJDb3JlOjpTaGlwcGluZ01ldGhvZFVwZGF0ZSBzaG91
bGQga25vdyBob3cgdG8gY29udmVydCBpdHNlbGYgdG8gYSBQS1BheW1lbnRSZXF1ZXN0U2hpcHBp
bmdNZXRob2RVcGRhdGUuCisgICAgYXV0byBzaGlwcGluZ01ldGhvZFVwZGF0ZSA9IGFkb3B0TlMo
W1BBTDo6YWxsb2NQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdNZXRob2RVcGRhdGVJbnN0YW5jZSgp
IGluaXRXaXRoUGF5bWVudFN1bW1hcnlJdGVtczpXZWJDb3JlOjpwbGF0Zm9ybVN1bW1hcnlJdGVt
cyh1cGRhdGUtPm5ld1RvdGFsQW5kTGluZUl0ZW1zKV0pOworICAgIFtwbGF0Zm9ybURlbGVnYXRl
KCkgY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbjpzaGlwcGluZ01ldGhvZFVwZGF0ZS5n
ZXQoKV07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9jb2NvYS9XS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUuaCBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRl
LmgKaW5kZXggNDAzM2EzY2Q2ZGQ0YjhmZGRmNDJkY2RlMTE5MDI2NDk3NTUwNDJlYS4uYzkzNWYy
NzZkOGYxYWMxZjFiOTYwYWJlM2E4OTU2ZGFhMGQxYzY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9jb2NvYS9XS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxl
Z2F0ZS5oCkBAIC01MiwxNSArNTIsMTEgQEAgdXNpbmcgRGlkU2VsZWN0U2hpcHBpbmdNZXRob2RD
b21wbGV0aW9uID0gQmxvY2tQdHI8dm9pZChQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmcKIAogLSAo
aW5zdGFuY2V0eXBlKWluaXQgTlNfVU5BVkFJTEFCTEU7CiAKLUBwcm9wZXJ0eSAobm9uYXRvbWlj
LCByZWFkb25seSkgQk9PTCBkaWRSZWFjaEZpbmFsU3RhdGU7Ci1AcHJvcGVydHkgKG5vbmF0b21p
YywgcmVhZG9ubHkpIE5TQXJyYXk8UEtQYXltZW50U3VtbWFyeUl0ZW0gKj4gKnN1bW1hcnlJdGVt
czsKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNBcnJheTxQS1NoaXBwaW5nTWV0
aG9kICo+ICpzaGlwcGluZ01ldGhvZHM7Ci0KIC0gKHZvaWQpY29tcGxldGVNZXJjaGFudFZhbGlk
YXRpb246KFBLUGF5bWVudE1lcmNoYW50U2Vzc2lvbiAqKXNlc3Npb24gZXJyb3I6KE5TRXJyb3Ig
KillcnJvcjsKLS0gKHZvaWQpY29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uOihOU0FycmF5
PFBLUGF5bWVudFN1bW1hcnlJdGVtICo+ICopc3VtbWFyeUl0ZW1zOworLSAodm9pZCljb21wbGV0
ZVBheW1lbnRNZXRob2RTZWxlY3Rpb246KFBLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9kVXBk
YXRlICopcGF5bWVudE1ldGhvZFVwZGF0ZTsKIC0gKHZvaWQpY29tcGxldGVQYXltZW50U2Vzc2lv
bjooUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cylzdGF0dXMgZXJyb3JzOihOU0FycmF5PE5T
RXJyb3IgKj4gKillcnJvcnMgZGlkUmVhY2hGaW5hbFN0YXRlOihCT09MKWRpZFJlYWNoRmluYWxT
dGF0ZTsKLS0gKHZvaWQpY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb246KFBLUGF5bWVu
dEF1dGhvcml6YXRpb25TdGF0dXMpc3RhdHVzIHN1bW1hcnlJdGVtczooTlNBcnJheTxQS1BheW1l
bnRTdW1tYXJ5SXRlbSAqPiAqKXN1bW1hcnlJdGVtcyBzaGlwcGluZ01ldGhvZHM6KE5TQXJyYXk8
UEtTaGlwcGluZ01ldGhvZCAqPiAqKXNoaXBwaW5nTWV0aG9kcyBlcnJvcnM6KE5TQXJyYXk8TlNF
cnJvciAqPiAqKWVycm9yczsKLS0gKHZvaWQpY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlv
bjooTlNBcnJheTxQS1BheW1lbnRTdW1tYXJ5SXRlbSAqPiAqKXN1bW1hcnlJdGVtczsKKy0gKHZv
aWQpY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb246KFBLUGF5bWVudFJlcXVlc3RTaGlw
cGluZ0NvbnRhY3RVcGRhdGUgKilzaGlwcGluZ0NvbnRhY3RVcGRhdGU7CistICh2b2lkKWNvbXBs
ZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb246KFBLUGF5bWVudFJlcXVlc3RTaGlwcGluZ01ldGhv
ZFVwZGF0ZSAqKXNoaXBwaW5nTWV0aG9kVXBkYXRlOwogLSAodm9pZClpbnZhbGlkYXRlOwogCiBA
ZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1dLUGF5bWVudEF1
dGhvcml6YXRpb25EZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvV0tQ
YXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlLm1tCmluZGV4IGZhM2U4YmI1MjI1NzM5OTYzOWVm
NDgwMDkxMGU5YzYzYjYzNDg0N2UuLmM5MGZmZjczNzQ2ZGUxNTFmZWZiNzA0NWIyNGY2YzljOGNk
M2VhODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvV0tQYXltZW50
QXV0aG9yaXphdGlvbkRlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29j
b2EvV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlLm1tCkBAIC0zMyw2ICszMyw3IEBACiAj
aW1wb3J0IDxXZWJDb3JlL1BheW1lbnRTZXNzaW9uRXJyb3IuaD4KIAogQGltcGxlbWVudGF0aW9u
IFdLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZSB7CisgICAgQk9PTCBfZGlkUmVhY2hGaW5h
bFN0YXRlOwogICAgIFJldGFpblB0cjxOU0FycmF5PFBLUGF5bWVudFN1bW1hcnlJdGVtICo+PiBf
c3VtbWFyeUl0ZW1zOwogICAgIFJldGFpblB0cjxOU0FycmF5PFBLU2hpcHBpbmdNZXRob2QgKj4+
IF9zaGlwcGluZ01ldGhvZHM7CiAgICAgUmV0YWluUHRyPE5TRXJyb3I+IF9zZXNzaW9uRXJyb3I7
CkBAIC01OSwxMSArNjAsMTEgQEAgLSAodm9pZCljb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbjoo
UEtQYXltZW50TWVyY2hhbnRTZXNzaW9uICopc2Vzc2lvbiBlcnJvcjooTlMKICAgICBzdGQ6OmV4
Y2hhbmdlKF9kaWRSZXF1ZXN0TWVyY2hhbnRTZXNzaW9uQ29tcGxldGlvbiwgbmlsKShzZXNzaW9u
LCBlcnJvcik7CiB9CiAKLS0gKHZvaWQpY29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uOihO
U0FycmF5PFBLUGF5bWVudFN1bW1hcnlJdGVtICo+ICopc3VtbWFyeUl0ZW1zCistICh2b2lkKWNv
bXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbjooUEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRo
b2RVcGRhdGUgKilwYXltZW50TWV0aG9kVXBkYXRlCiB7Ci0gICAgX3N1bW1hcnlJdGVtcyA9IHN1
bW1hcnlJdGVtczsKLSAgICBhdXRvIHVwZGF0ZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1l
bnRSZXF1ZXN0UGF5bWVudE1ldGhvZFVwZGF0ZUluc3RhbmNlKCkgaW5pdFdpdGhQYXltZW50U3Vt
bWFyeUl0ZW1zOl9zdW1tYXJ5SXRlbXMuZ2V0KCldKTsKLSAgICBzdGQ6OmV4Y2hhbmdlKF9kaWRT
ZWxlY3RQYXltZW50TWV0aG9kQ29tcGxldGlvbiwgbmlsKSh1cGRhdGUuZ2V0KCkpOworICAgIFBL
UGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRlICp1cGRhdGUgPSBwYXltZW50TWV0aG9k
VXBkYXRlID86IFtbUEFMOjphbGxvY1BLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRl
SW5zdGFuY2UoKSBpbml0V2l0aFBheW1lbnRTdW1tYXJ5SXRlbXM6X3N1bW1hcnlJdGVtcy5nZXQo
KV0gYXV0b3JlbGVhc2VdOworICAgIF9zdW1tYXJ5SXRlbXMgPSBhZG9wdE5TKFt1cGRhdGUucGF5
bWVudFN1bW1hcnlJdGVtcyBjb3B5XSk7CisgICAgc3RkOjpleGNoYW5nZShfZGlkU2VsZWN0UGF5
bWVudE1ldGhvZENvbXBsZXRpb24sIG5pbCkodXBkYXRlKTsKIH0KIAogLSAodm9pZCljb21wbGV0
ZVBheW1lbnRTZXNzaW9uOihQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzKXN0YXR1cyBlcnJv
cnM6KE5TQXJyYXk8TlNFcnJvciAqPiAqKWVycm9ycyBkaWRSZWFjaEZpbmFsU3RhdGU6KEJPT0wp
ZGlkUmVhY2hGaW5hbFN0YXRlCkBAIC03MiwyMSArNzMsMTkgQEAgLSAodm9pZCljb21wbGV0ZVBh
eW1lbnRTZXNzaW9uOihQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzKXN0YXR1cyBlcnJvcnM6
KE5TQXIKICAgICBhdXRvIHJlc3VsdCA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRBdXRo
b3JpemF0aW9uUmVzdWx0SW5zdGFuY2UoKSBpbml0V2l0aFN0YXR1czpzdGF0dXMgZXJyb3JzOmVy
cm9yc10pOwogICAgIHN0ZDo6ZXhjaGFuZ2UoX2RpZEF1dGhvcml6ZVBheW1lbnRDb21wbGV0aW9u
LCBuaWwpKHJlc3VsdC5nZXQoKSk7CiB9Ci0KLS0gKHZvaWQpY29tcGxldGVTaGlwcGluZ0NvbnRh
Y3RTZWxlY3Rpb246KFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMpc3RhdHVzIHN1bW1hcnlJ
dGVtczooTlNBcnJheTxQS1BheW1lbnRTdW1tYXJ5SXRlbSAqPiAqKXN1bW1hcnlJdGVtcyBzaGlw
cGluZ01ldGhvZHM6KE5TQXJyYXk8UEtTaGlwcGluZ01ldGhvZCAqPiAqKXNoaXBwaW5nTWV0aG9k
cyBlcnJvcnM6KE5TQXJyYXk8TlNFcnJvciAqPiAqKWVycm9ycworLSAodm9pZCljb21wbGV0ZVNo
aXBwaW5nQ29udGFjdFNlbGVjdGlvbjooUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nQ29udGFjdFVw
ZGF0ZSAqKXNoaXBwaW5nQ29udGFjdFVwZGF0ZQogewotICAgIF9zdW1tYXJ5SXRlbXMgPSBzdW1t
YXJ5SXRlbXM7Ci0gICAgX3NoaXBwaW5nTWV0aG9kcyA9IHNoaXBwaW5nTWV0aG9kczsKLSAgICBB
U1NFUlQoc3RhdHVzID09IFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNTdWNjZXNzKTsKLSAg
ICBhdXRvIHVwZGF0ZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRSZXF1ZXN0U2hpcHBp
bmdDb250YWN0VXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0aEVycm9yczplcnJvcnMgcGF5bWVudFN1
bW1hcnlJdGVtczpfc3VtbWFyeUl0ZW1zLmdldCgpIHNoaXBwaW5nTWV0aG9kczpfc2hpcHBpbmdN
ZXRob2RzLmdldCgpXSk7Ci0gICAgc3RkOjpleGNoYW5nZShfZGlkU2VsZWN0U2hpcHBpbmdDb250
YWN0Q29tcGxldGlvbiwgbmlsKSh1cGRhdGUuZ2V0KCkpOworICAgIFBLUGF5bWVudFJlcXVlc3RT
aGlwcGluZ0NvbnRhY3RVcGRhdGUgKnVwZGF0ZSA9IHNoaXBwaW5nQ29udGFjdFVwZGF0ZSA/OiBb
W1BBTDo6YWxsb2NQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdDb250YWN0VXBkYXRlSW5zdGFuY2Uo
KSBpbml0V2l0aEVycm9yczpAW10gcGF5bWVudFN1bW1hcnlJdGVtczpfc3VtbWFyeUl0ZW1zLmdl
dCgpIHNoaXBwaW5nTWV0aG9kczpfc2hpcHBpbmdNZXRob2RzLmdldCgpXSBhdXRvcmVsZWFzZV07
CisgICAgX3N1bW1hcnlJdGVtcyA9IGFkb3B0TlMoW3VwZGF0ZS5wYXltZW50U3VtbWFyeUl0ZW1z
IGNvcHldKTsKKyAgICBfc2hpcHBpbmdNZXRob2RzID0gYWRvcHROUyhbdXBkYXRlLnNoaXBwaW5n
TWV0aG9kcyBjb3B5XSk7CisgICAgc3RkOjpleGNoYW5nZShfZGlkU2VsZWN0U2hpcHBpbmdDb250
YWN0Q29tcGxldGlvbiwgbmlsKSh1cGRhdGUpOwogfQogCi0tICh2b2lkKWNvbXBsZXRlU2hpcHBp
bmdNZXRob2RTZWxlY3Rpb246KE5TQXJyYXk8UEtQYXltZW50U3VtbWFyeUl0ZW0gKj4gKilzdW1t
YXJ5SXRlbXMKKy0gKHZvaWQpY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbjooUEtQYXlt
ZW50UmVxdWVzdFNoaXBwaW5nTWV0aG9kVXBkYXRlICopc2hpcHBpbmdNZXRob2RVcGRhdGUKIHsK
LSAgICBfc3VtbWFyeUl0ZW1zID0gc3VtbWFyeUl0ZW1zOwotICAgIGF1dG8gdXBkYXRlID0gYWRv
cHROUyhbUEFMOjphbGxvY1BLUGF5bWVudFJlcXVlc3RTaGlwcGluZ01ldGhvZFVwZGF0ZUluc3Rh
bmNlKCkgaW5pdFdpdGhQYXltZW50U3VtbWFyeUl0ZW1zOl9zdW1tYXJ5SXRlbXMuZ2V0KCldKTsK
LSAgICBzdGQ6OmV4Y2hhbmdlKF9kaWRTZWxlY3RTaGlwcGluZ01ldGhvZENvbXBsZXRpb24sIG5p
bCkodXBkYXRlLmdldCgpKTsKKyAgICBQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdNZXRob2RVcGRh
dGUgKnVwZGF0ZSA9IHNoaXBwaW5nTWV0aG9kVXBkYXRlID86IFtbUEFMOjphbGxvY1BLUGF5bWVu
dFJlcXVlc3RTaGlwcGluZ01ldGhvZFVwZGF0ZUluc3RhbmNlKCkgaW5pdFdpdGhQYXltZW50U3Vt
bWFyeUl0ZW1zOl9zdW1tYXJ5SXRlbXMuZ2V0KCldIGF1dG9yZWxlYXNlXTsKKyAgICBfc3VtbWFy
eUl0ZW1zID0gYWRvcHROUyhbdXBkYXRlLnBheW1lbnRTdW1tYXJ5SXRlbXMgY29weV0pOworICAg
IHN0ZDo6ZXhjaGFuZ2UoX2RpZFNlbGVjdFNoaXBwaW5nTWV0aG9kQ29tcGxldGlvbiwgbmlsKSh1
cGRhdGUpOwogfQogCiAtICh2b2lkKWludmFsaWRhdGUKQEAgLTE1OSw3ICsxNTgsNyBAQCAtICh2
b2lkKV9kaWRTZWxlY3RQYXltZW50TWV0aG9kOihQS1BheW1lbnRNZXRob2QgKilwYXltZW50TWV0
aG9kIGNvbXBsZXRpb246KFdlYgogCiAgICAgYXV0byBwcmVzZW50ZXIgPSBfcHJlc2VudGVyLmdl
dCgpOwogICAgIGlmICghcHJlc2VudGVyKQotICAgICAgICByZXR1cm4gW3NlbGYgY29tcGxldGVQ
YXltZW50TWV0aG9kU2VsZWN0aW9uOkBbIF1dOworICAgICAgICByZXR1cm4gW3NlbGYgY29tcGxl
dGVQYXltZW50TWV0aG9kU2VsZWN0aW9uOm5pbF07CiAKICAgICBwcmVzZW50ZXItPmNsaWVudCgp
LnByZXNlbnRlckRpZFNlbGVjdFBheW1lbnRNZXRob2QoKnByZXNlbnRlciwgV2ViQ29yZTo6UGF5
bWVudE1ldGhvZChwYXltZW50TWV0aG9kKSk7CiB9CkBAIC0xNzEsNyArMTcwLDcgQEAgLSAodm9p
ZClfZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0OihQS0NvbnRhY3QgKiljb250YWN0IGNvbXBsZXRp
b246KFdlYktpdDo6RGlkU2UKIAogICAgIGF1dG8gcHJlc2VudGVyID0gX3ByZXNlbnRlci5nZXQo
KTsKICAgICBpZiAoIXByZXNlbnRlcikKLSAgICAgICAgcmV0dXJuIFtzZWxmIGNvbXBsZXRlU2hp
cHBpbmdDb250YWN0U2VsZWN0aW9uOlBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNGYWlsdXJl
IHN1bW1hcnlJdGVtczpAWyBdIHNoaXBwaW5nTWV0aG9kczpAWyBdIGVycm9yczpAWyBdXTsKKyAg
ICAgICAgcmV0dXJuIFtzZWxmIGNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uOm5pbF07
CiAKICAgICBwcmVzZW50ZXItPmNsaWVudCgpLnByZXNlbnRlckRpZFNlbGVjdFNoaXBwaW5nQ29u
dGFjdCgqcHJlc2VudGVyLCBXZWJDb3JlOjpQYXltZW50Q29udGFjdChjb250YWN0KSk7CiB9CkBA
IC0xOTYsNyArMTk1LDcgQEAgLSAodm9pZClfZGlkU2VsZWN0U2hpcHBpbmdNZXRob2Q6KFBLU2hp
cHBpbmdNZXRob2QgKilzaGlwcGluZ01ldGhvZCBjb21wbGV0aW9uOigKIAogICAgIGF1dG8gcHJl
c2VudGVyID0gX3ByZXNlbnRlci5nZXQoKTsKICAgICBpZiAoIXByZXNlbnRlcikKLSAgICAgICAg
cmV0dXJuIFtzZWxmIGNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb246QFsgXV07CisgICAg
ICAgIHJldHVybiBbc2VsZiBjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uOm5pbF07CiAK
ICAgICBwcmVzZW50ZXItPmNsaWVudCgpLnByZXNlbnRlckRpZFNlbGVjdFNoaXBwaW5nTWV0aG9k
KCpwcmVzZW50ZXIsIHRvU2hpcHBpbmdNZXRob2Qoc2hpcHBpbmdNZXRob2QpKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRv
clByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eS5oCmluZGV4IDZiMzY3NzNmZWQ0MjVhOWU0NGM3N2Q4MTFjYjcxZWFmMGY5ZDhj
YWMuLjQ2N2NhZTRlM2QwMjJlMWIyNGI2NGY1ZWE2YzI3OWI4MGQzYzE5YjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHkuaApAQCAtNTUsNiArNTUsNyBAQCBjbGFzcyBQYXltZW50OwogY2xhc3MgUGF5bWVu
dENvbnRhY3Q7CiBjbGFzcyBQYXltZW50TWVyY2hhbnRTZXNzaW9uOwogY2xhc3MgUGF5bWVudE1l
dGhvZDsKK2NsYXNzIFBheW1lbnRNZXRob2RVcGRhdGU7CiB9CiAKIE9CSkNfQ0xBU1MgTlNPYmpl
Y3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9jb2NvYS9XZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBs
ZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLmgKaW5kZXggNGU5NDJi
OTY4YTQzOWU2MzRiZjhhZTdiOTI2M2NhNjI0YjM4NjgxYy4uMmQ2NDA4YmVmNmY5NWI5ZjZkMWIx
MDNkOTQ1ZTk5ZGZlYWEzOWJiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBw
bGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5
Q29jb2EuaApAQCAtMzMsMTAgKzMzLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIC8vIEZJWE1F
OiBSYXRoZXIgdGhhbiBoYXZpbmcgdGhlc2UgZnJlZSBmdW5jdGlvbnMgc2NhdHRlcmVkIGFib3V0
LCBBcHBsZSBQYXkgZGF0YSB0eXBlcyBzaG91bGQga25vdwogLy8gaG93IHRvIGNvbnZlcnQgdGhl
bXNlbHZlcyB0byBhbmQgZnJvbSB0aGVpciBwbGF0Zm9ybSByZXByZXNlbnRhdGlvbnMuCi1OU0Fy
cmF5ICp0b1BLUGF5bWVudFN1bW1hcnlJdGVtcyhjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Np
b25QYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXMmKTsKIE5TRGVjaW1hbE51bWJlciAq
dG9EZWNpbWFsTnVtYmVyKGNvbnN0IFN0cmluZyYgYW1vdW50KTsKLVBLUGF5bWVudFN1bW1hcnlJ
dGVtICp0b1BLUGF5bWVudFN1bW1hcnlJdGVtKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lv
blBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbSYpOwotUEtQYXltZW50U3VtbWFyeUl0ZW1UeXBlIHRv
UEtQYXltZW50U3VtbWFyeUl0ZW1UeXBlKFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRS
ZXF1ZXN0OjpMaW5lSXRlbTo6VHlwZSk7CiBQS1NoaXBwaW5nTWV0aG9kICp0b1BLU2hpcHBpbmdN
ZXRob2QoY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OlNoaXBw
aW5nTWV0aG9kJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlD
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRD
b29yZGluYXRvclByb3h5Q29jb2EubW0KaW5kZXggODc1YzM0OTI0MjcxODE1NDdkMGRjZGFhMWM0
OWZlYjJmYWU0ZDYwOS4uNTkxNTY5ODM4NmQ5OWUzYmMzZjc3ZTgwOGRlZTYzODhkZmE4NGE5YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBs
ZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCkBAIC0xMDksMTcg
KzEwOSw2IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNTZXQ+IHRvUEtDb250YWN0RmllbGRzKGNvbnN0
IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSCiAgICAgcmV0dXJuIGFkb3B0TlMoW1tO
U1NldCBhbGxvY10gaW5pdFdpdGhPYmplY3RzOnJlc3VsdC5kYXRhKCkgY291bnQ6cmVzdWx0LnNp
emUoKV0pOwogfQogCi1QS1BheW1lbnRTdW1tYXJ5SXRlbVR5cGUgdG9QS1BheW1lbnRTdW1tYXJ5
SXRlbVR5cGUoV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVt
OjpUeXBlIHR5cGUpCi17Ci0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBXZWJDb3JlOjpB
cHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGluZUl0ZW06OlR5cGU6OkZpbmFsOgotICAg
ICAgICByZXR1cm4gUEtQYXltZW50U3VtbWFyeUl0ZW1UeXBlRmluYWw7Ci0KLSAgICBjYXNlIFdl
YkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbTo6VHlwZTo6UGVu
ZGluZzoKLSAgICAgICAgcmV0dXJuIFBLUGF5bWVudFN1bW1hcnlJdGVtVHlwZVBlbmRpbmc7Ci0g
ICAgfQotfQotCiBOU0RlY2ltYWxOdW1iZXIgKnRvRGVjaW1hbE51bWJlcihjb25zdCBTdHJpbmcm
IGFtb3VudCkKIHsKICAgICBpZiAoIWFtb3VudCkKQEAgLTEyNywyNSArMTE2LDYgQEAgTlNEZWNp
bWFsTnVtYmVyICp0b0RlY2ltYWxOdW1iZXIoY29uc3QgU3RyaW5nJiBhbW91bnQpCiAgICAgcmV0
dXJuIFtOU0RlY2ltYWxOdW1iZXIgZGVjaW1hbE51bWJlcldpdGhTdHJpbmc6YW1vdW50IGxvY2Fs
ZTpAeyBOU0xvY2FsZURlY2ltYWxTZXBhcmF0b3IgOiBAIi4iIH1dOwogfQogCi1QS1BheW1lbnRT
dW1tYXJ5SXRlbSAqdG9QS1BheW1lbnRTdW1tYXJ5SXRlbShjb25zdCBXZWJDb3JlOjpBcHBsZVBh
eVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGluZUl0ZW0mIGxpbmVJdGVtKQotewotICAgIHJldHVy
biBbUEFMOjpnZXRQS1BheW1lbnRTdW1tYXJ5SXRlbUNsYXNzKCkgc3VtbWFyeUl0ZW1XaXRoTGFi
ZWw6bGluZUl0ZW0ubGFiZWwgYW1vdW50OnRvRGVjaW1hbE51bWJlcihsaW5lSXRlbS5hbW91bnQp
IHR5cGU6dG9QS1BheW1lbnRTdW1tYXJ5SXRlbVR5cGUobGluZUl0ZW0udHlwZSldOwotfQotCi1O
U0FycmF5ICp0b1BLUGF5bWVudFN1bW1hcnlJdGVtcyhjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNl
c3Npb25QYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXMmIHRvdGFsQW5kTGluZUl0ZW1z
KQotewotICAgIE5TTXV0YWJsZUFycmF5ICpwYXltZW50U3VtbWFyeUl0ZW1zID0gW05TTXV0YWJs
ZUFycmF5IGFycmF5V2l0aENhcGFjaXR5OnRvdGFsQW5kTGluZUl0ZW1zLmxpbmVJdGVtcy5zaXpl
KCkgKyAxXTsKLSAgICBmb3IgKGF1dG8mIGxpbmVJdGVtIDogdG90YWxBbmRMaW5lSXRlbXMubGlu
ZUl0ZW1zKSB7Ci0gICAgICAgIGlmIChQS1BheW1lbnRTdW1tYXJ5SXRlbSAqc3VtbWFyeUl0ZW0g
PSB0b1BLUGF5bWVudFN1bW1hcnlJdGVtKGxpbmVJdGVtKSkKLSAgICAgICAgICAgIFtwYXltZW50
U3VtbWFyeUl0ZW1zIGFkZE9iamVjdDpzdW1tYXJ5SXRlbV07Ci0gICAgfQotCi0gICAgaWYgKFBL
UGF5bWVudFN1bW1hcnlJdGVtICp0b3RhbEl0ZW0gPSB0b1BLUGF5bWVudFN1bW1hcnlJdGVtKHRv
dGFsQW5kTGluZUl0ZW1zLnRvdGFsKSkKLSAgICAgICAgW3BheW1lbnRTdW1tYXJ5SXRlbXMgYWRk
T2JqZWN0OnRvdGFsSXRlbV07Ci0KLSAgICByZXR1cm4gcGF5bWVudFN1bW1hcnlJdGVtczsKLX0K
LQogc3RhdGljIFBLTWVyY2hhbnRDYXBhYmlsaXR5IHRvUEtNZXJjaGFudENhcGFiaWxpdGllcyhj
b25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TWVyY2hhbnRDYXBh
YmlsaXRpZXMmIG1lcmNoYW50Q2FwYWJpbGl0aWVzKQogewogICAgIFBLTWVyY2hhbnRDYXBhYmls
aXR5IHJlc3VsdCA9IDA7CkBAIC0yNTYsMTYgKzIyNiw3IEBAIFJldGFpblB0cjxQS1BheW1lbnRS
ZXF1ZXN0PiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1QYXltZW50UmVxdWVz
dChjCiAgICAgICAgIFtzaGlwcGluZ01ldGhvZHMgYWRkT2JqZWN0OnRvUEtTaGlwcGluZ01ldGhv
ZChzaGlwcGluZ01ldGhvZCldOwogICAgIFtyZXN1bHQgc2V0U2hpcHBpbmdNZXRob2RzOnNoaXBw
aW5nTWV0aG9kcy5nZXQoKV07CiAKLSAgICBhdXRvIHBheW1lbnRTdW1tYXJ5SXRlbXMgPSBhZG9w
dE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKLSAgICBmb3IgKGF1dG8mIGxpbmVJ
dGVtIDogcGF5bWVudFJlcXVlc3QubGluZUl0ZW1zKCkpIHsKLSAgICAgICAgaWYgKFBLUGF5bWVu
dFN1bW1hcnlJdGVtICpzdW1tYXJ5SXRlbSA9IHRvUEtQYXltZW50U3VtbWFyeUl0ZW0obGluZUl0
ZW0pKQotICAgICAgICAgICAgW3BheW1lbnRTdW1tYXJ5SXRlbXMgYWRkT2JqZWN0OnN1bW1hcnlJ
dGVtXTsKLSAgICB9Ci0KLSAgICBpZiAoUEtQYXltZW50U3VtbWFyeUl0ZW0gKnRvdGFsSXRlbSA9
IHRvUEtQYXltZW50U3VtbWFyeUl0ZW0ocGF5bWVudFJlcXVlc3QudG90YWwoKSkpCi0gICAgICAg
IFtwYXltZW50U3VtbWFyeUl0ZW1zIGFkZE9iamVjdDp0b3RhbEl0ZW1dOwotCi0gICAgW3Jlc3Vs
dCBzZXRQYXltZW50U3VtbWFyeUl0ZW1zOnBheW1lbnRTdW1tYXJ5SXRlbXMuZ2V0KCldOworICAg
IFtyZXN1bHQgc2V0UGF5bWVudFN1bW1hcnlJdGVtczpXZWJDb3JlOjpwbGF0Zm9ybVN1bW1hcnlJ
dGVtcyhwYXltZW50UmVxdWVzdC50b3RhbCgpLCBwYXltZW50UmVxdWVzdC5saW5lSXRlbXMoKSld
OwogCiAgICAgW3Jlc3VsdCBzZXRFeHBlY3RzTWVyY2hhbnRTZXNzaW9uOllFU107CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0Nv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJz
Q29jb2EubW0KaW5kZXggZWUwMDM3NzdmMzljMTY1OWVhZTI0YmIxZDk4YjU5YmU0OTc5NjIyZC4u
MzJiZjgwY2RhMzNhMTcyYWNiYTc5OWRjMThjN2RjODcyNTZkZTNhMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW0KKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2Eu
bW0KQEAgLTE2MSwxNiArMTYxLDE2IEBAIE9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRNZXRob2Q+
IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudE1ldGhvZD46OmRlY29kZShECiAKIHZvaWQg
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50TWV0aG9kVXBkYXRlPjo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OlBheW1lbnRNZXRob2RVcGRhdGUmIHVwZGF0ZSkK
IHsKLSAgICBlbmNvZGVyIDw8IHVwZGF0ZS5uZXdUb3RhbEFuZExpbmVJdGVtczsKKyAgICBlbmNv
ZGVyIDw8IHVwZGF0ZS5wbGF0Zm9ybVVwZGF0ZSgpOwogfQogCiBPcHRpb25hbDxXZWJDb3JlOjpQ
YXltZW50TWV0aG9kVXBkYXRlPiBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlBheW1lbnRNZXRob2RV
cGRhdGU+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKIHsKLSAgICBPcHRpb25hbDxBcHBsZVBh
eVNlc3Npb25QYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXM+IG5ld1RvdGFsQW5kTGlu
ZUl0ZW1zOwotICAgIGRlY29kZXIgPj4gbmV3VG90YWxBbmRMaW5lSXRlbXM7Ci0gICAgaWYgKCFu
ZXdUb3RhbEFuZExpbmVJdGVtcykKKyAgICBhdXRvIHVwZGF0ZSA9IElQQzo6ZGVjb2RlPFBLUGF5
bWVudFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRlPihkZWNvZGVyLCBQQUw6OmdldFBLUGF5bWVu
dFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRlQ2xhc3MoKSk7CisgICAgaWYgKCF1cGRhdGUpCiAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgcmV0dXJuIHt7IFdURk1vdmUoKm5ld1Rv
dGFsQW5kTGluZUl0ZW1zKSB9fTsKKworICAgIHJldHVybiBQYXltZW50TWV0aG9kVXBkYXRlIHsg
V1RGTW92ZSgqdXBkYXRlKSB9OwogfQogCiB2b2lkIEFyZ3VtZW50Q29kZXI8QXBwbGVQYXlTZXNz
aW9uUGF5bWVudFJlcXVlc3Q+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgQXBwbGVQ
YXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmIHJlcXVlc3QpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379266</attachid>
            <date>2019-09-20 13:41:27 -0700</date>
            <delta_ts>2019-09-20 13:41:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202018-20190920134127.patch</filename>
            <type>text/plain</type>
            <size>53321</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUwMTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGFlMjU4YWNlMTc5Njhh
N2I4YjIzOWIxYTgyODY4ZTY1ZWYxZDlhNy4uZDQ5YjYxZGQyMzE2N2Q1MTNmMmViNWJjMTJjZTY4
MzM0OGM0OWVjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE5LTA5LTE5ICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQXBwbGUgUGF5XSBDbGVhbiB1
cCBoYW5kbGluZyBvZiBzdW1tYXJ5IGl0ZW1zIGFuZCBwYXltZW50IG1ldGhvZCB1cGRhdGVzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDIwMTgKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU1NDcwNjMyPgorCisgICAgICAgIFJldmlld2VkIGJ5IFRp
bSBIb3J0b24uCisKKyAgICAgICAgUmVwbGFjZWQgdGhlIFBheW1lbnRNZXRob2RVcGRhdGUgc3Ry
dWN0IHdpdGggYSBjbGFzcyB0aGF0IGtub3dzIGhvdyB0byBjb252ZXJ0IGZyb20KKyAgICAgICAg
QXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlIHN0cnVjdHMgdG8gUEtQYXltZW50UmVxdWVzdFBh
eW1lbnRNZXRob2RVcGRhdGUgaW5zdGFuY2VzLgorCisgICAgICAgIE1vdmVkIHNvbWUgc2NhdHRl
cmVkLWFyb3VuZCBmcmVlIGZ1bmN0aW9ucyBmb3IgY29udmVydGluZyBwYXltZW50IHN1bW1hcnkg
aXRlbXMgaW50bworICAgICAgICBQYXltZW50U3VtbWFyeUl0ZW1zey5oLENvY29hLm1tfS4KKwor
ICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlQYXltZW50TWV0aG9kVXBkYXRlLmg6
CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6ZmluaXNoQ29udmVydGluZyk6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0
QW5kVmFsaWRhdGVUb3RhbCk6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0QW5kVmFsaWRhdGUp
OgorICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVl
c3QuaDoKKyAgICAgICAgKiBNb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvci5oOgor
ICAgICAgICAqIE1vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50Lmg6Cisg
ICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9QYXltZW50SGVhZGVycy5oOgorICAgICAgICAqIE1v
ZHVsZXMvYXBwbGVwYXkvUGF5bWVudE1ldGhvZFVwZGF0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBN
b2R1bGVzL2FwcGxlcGF5L1BheW1lbnRTdW1tYXJ5SXRlbXMuaDogQWRkZWQuCisgICAgICAgICog
TW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50TWV0aG9kVXBkYXRlQ29jb2EubW06IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6UGF5bWVudE1ldGhvZFVwZGF0ZTo6UGF5bWVudE1ldGhvZFVw
ZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXltZW50TWV0aG9kVXBkYXRlOjp0b3RhbEFuZExp
bmVJdGVtcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpQYXltZW50TWV0aG9kVXBkYXRlOjpw
bGF0Zm9ybVVwZGF0ZSBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9Q
YXltZW50U3VtbWFyeUl0ZW1zQ29jb2EubW06IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6dG9E
ZWNpbWFsTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OnRvUEtQYXltZW50U3VtbWFyeUl0ZW1U
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvUEtQYXltZW50U3VtbWFyeUl0ZW0pOgorICAgICAg
ICAoV2ViQ29yZTo6cGxhdGZvcm1TdW1tYXJ5SXRlbXMpOgorICAgICAgICAqIE1vZHVsZXMvYXBw
bGVwYXkvcGF5bWVudHJlcXVlc3QvQXBwbGVQYXlQYXltZW50SGFuZGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBcHBsZVBheVBheW1lbnRIYW5kbGVyOjpwYXltZW50TWV0aG9kVXBkYXRlZCk6
CisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogdGVzdGluZy9Nb2NrUGF5bWVudENvb3JkaW5h
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tQYXltZW50Q29vcmRpbmF0b3I6OmNvbXBs
ZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbik6CisKIDIwMTktMDktMTkgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBXb3JrZXJHbG9iYWxTY29wZSBkb2VzIG5vdCBu
ZWVkIGEgU2Vzc2lvbklECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGEzNTM2MmI2ODA5NjViNGE3NjI5ZWFjN2E2OTE4
ZThhZTliMTM5NmMuLmE2ZDllNDlmMzcxNjFjZTU2MTE2Nzc1ZjM4OTA2NDY5NjZkZTVjMzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTktMDktMTkgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNA
YXBwbGUuY29tPgorCisgICAgICAgIFtBcHBsZSBQYXldIENsZWFuIHVwIGhhbmRsaW5nIG9mIHN1
bW1hcnkgaXRlbXMgYW5kIHBheW1lbnQgbWV0aG9kIHVwZGF0ZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjAxOAorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNTU0NzA2MzI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAg
ICAgICBOb3cgdGhhdCBQYXltZW50TWV0aG9kVXBkYXRlIGtub3dzIGhvdyB0byBjb252ZXJ0IGl0
c2VsZiB0byBhCisgICAgICAgIFBLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRlLCBQ
YXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlciBjYW4gbWVyZWx5IHBhc3MgdGhlCisgICAgICAg
IGNvbnZlcnRlZCB1cGRhdGUgZGlyZWN0bHkgdG8gdGhlIHBsYXRmb3JtIGRlbGVnYXRlIHJhdGhl
ciB0aGFuIHBhc3NpbmcgdGhlIGluZGl2aWR1YWwKKyAgICAgICAgY29tcG9uZW50cyBhbmQgcmVs
eWluZyBvbiB0aGUgZGVsZWdhdGUgdG8gaW5zdGFudGlhdGUgdGhlIHBsYXRmb3JtIHVwZGF0ZSBp
dHNlbGYuIEFkZGVkCisgICAgICAgIEZJWE1FcyBmb3IgYXBwbHlpbmcgYSBzaW1pbGFyIHRyZWF0
bWVudCB0byBTaGlwcGluZ0NvbnRhY3RVcGRhdGUgYW5kIFNoaXBwaW5nTWV0aG9kVXBkYXRlLgor
CisgICAgICAgICogUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIu
aDoKKyAgICAgICAgKiBQbGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRl
ci5tbToKKyAgICAgICAgKFdlYktpdDo6UGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXI6OmNv
bXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlBheW1lbnRB
dXRob3JpemF0aW9uUHJlc2VudGVyOjpjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbik6
CisgICAgICAgIChXZWJLaXQ6OlBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyOjpjb21wbGV0
ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKToKKyAgICAgICAgKiBQbGF0Zm9ybS9jb2NvYS9XS1Bh
eW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUuaDoKKyAgICAgICAgKiBQbGF0Zm9ybS9jb2NvYS9X
S1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUubW06CisgICAgICAgICgtW1dLUGF5bWVudEF1
dGhvcml6YXRpb25EZWxlZ2F0ZSBjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb246XSk6Cisg
ICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZSBjb21wbGV0ZVNoaXBwaW5n
Q29udGFjdFNlbGVjdGlvbjpdKToKKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvbkRl
bGVnYXRlIGNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb246XSk6CisgICAgICAgICgtW1dL
UGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZSBfZGlkU2VsZWN0UGF5bWVudE1ldGhvZDpjb21w
bGV0aW9uOl0pOgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUgX2Rp
ZFNlbGVjdFNoaXBwaW5nQ29udGFjdDpjb21wbGV0aW9uOl0pOgorICAgICAgICAoLVtXS1BheW1l
bnRBdXRob3JpemF0aW9uRGVsZWdhdGUgX2RpZFNlbGVjdFNoaXBwaW5nTWV0aG9kOmNvbXBsZXRp
b246XSk6CisgICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZSBjb21wbGV0
ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbjpzdW1tYXJ5SXRlbXM6c2hpcHBpbmdNZXRob2RzOmVy
cm9yczpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHkuaDoKKyAgICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvY29jb2EvV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oOgorICAgICAgICAqIFNoYXJlZC9BcHBsZVBheS9j
b2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1QYXltZW50UmVxdWVzdCk6Cisg
ICAgICAgIChXZWJLaXQ6OnRvUEtQYXltZW50U3VtbWFyeUl0ZW1UeXBlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6dG9QS1BheW1lbnRTdW1tYXJ5SXRlbSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OnRvUEtQYXltZW50U3VtbWFyeUl0ZW1zKTogRGVsZXRlZC4KKyAgICAgICAgKiBT
aGFyZWQvQ29jb2EvV2ViQ29yZUFyZ3VtZW50Q29kZXJzQ29jb2EubW06CisgICAgICAgIChJUEM6
OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudE1ldGhvZFVwZGF0ZT46OmVuY29kZSk6Cisg
ICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UGF5bWVudE1ldGhvZFVwZGF0ZT46
OmRlY29kZSk6CisKIDIwMTktMDktMTkgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgbWFjQ2F0YWx5c3QgYXBwcyBjcmFzaCB1bmRlciBUZXh0Q2hlY2tp
bmdDb250cm9sbGVyUHJveHk6OnJlcGxhY2VSZWxhdGl2ZVRvU2VsZWN0aW9uIHdoZW4gc3BlbGwg
Y2hlY2tpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBw
bGVQYXlQYXltZW50TWV0aG9kVXBkYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxl
cGF5L0FwcGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZS5oCmluZGV4IGE3MzIyMTI0YjVlYjZmNjll
MWQ0MGNkYjVjODAyNjMwMWJkYjQxNDIuLjViNjczZDNkZTRiMWM2YTY0MjNkMWVkYTU5ZWIxNDlk
MjE4MGNhODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBw
bGVQYXlQYXltZW50TWV0aG9kVXBkYXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9h
cHBsZXBheS9BcHBsZVBheVBheW1lbnRNZXRob2RVcGRhdGUuaApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOSwxMSArMjksMjAgQEAKIAog
I2luY2x1ZGUgIkFwcGxlUGF5TGluZUl0ZW0uaCIKIAorI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9T
REspCisjaW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL0FwcGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0
ZUFkZGl0aW9ucy5oPgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IEFw
cGxlUGF5UGF5bWVudE1ldGhvZFVwZGF0ZSB7CiAgICAgQXBwbGVQYXlMaW5lSXRlbSBuZXdUb3Rh
bDsKICAgICBWZWN0b3I8QXBwbGVQYXlMaW5lSXRlbT4gbmV3TGluZUl0ZW1zOworCisjaWYgZGVm
aW5lZChBUFBMRVBBWVBBWU1FTlRNRVRIT0RVUERBVEVfQURESVRJT05TKQorQVBQTEVQQVlQQVlN
RU5UTUVUSE9EVVBEQVRFX0FERElUSU9OUworI3VuZGVmIEFQUExFUEFZUEFZTUVOVE1FVEhPRFVQ
REFURV9BRERJVElPTlMKKyNlbmRpZgogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb24uY3BwCmluZGV4IDg1YTAyYmVlMjBhMDhi
NWRlYWJkMDNhNDNhNzI2N2JjMGU5NGYxY2MuLjY5ZjhlMzJkNjA4MmQyZjNhM2E1ZTA1MGMzNzI0
OThkYWZjMzAwNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkv
QXBwbGVQYXlTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5
L0FwcGxlUGF5U2Vzc2lvbi5jcHAKQEAgLTU3LDEyICs1NywyMSBAQAogI2luY2x1ZGUgIlBheW1l
bnRDb29yZGluYXRvci5oIgogI2luY2x1ZGUgIlBheW1lbnRNZXJjaGFudFNlc3Npb24uaCIKICNp
bmNsdWRlICJQYXltZW50TWV0aG9kLmgiCisjaW5jbHVkZSAiUGF5bWVudE1ldGhvZFVwZGF0ZS5o
IgogI2luY2x1ZGUgIlBheW1lbnRSZXF1ZXN0VmFsaWRhdG9yLmgiCiAjaW5jbHVkZSAiU2VjdXJp
dHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJl
SW5kaWNhdG9yLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIAorI2lmIFVT
RShBUFBMRV9JTlRFUk5BTF9TREspCisjaW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL0FwcGxlUGF5
U2Vzc2lvbkFkZGl0aW9ucy5jcHA+CisjZWxzZQorbmFtZXNwYWNlIFdlYkNvcmUgeworc3RhdGlj
IHZvaWQgZmluaXNoQ29udmVydGluZyhQYXltZW50TWV0aG9kVXBkYXRlJiwgQXBwbGVQYXlQYXlt
ZW50TWV0aG9kVXBkYXRlJiYpIHsgfQorfQorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKEFwcGxlUGF5U2Vzc2lvbik7CkBAIC0xMzks
MTIgKzE0OCwxMyBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJl
cXVlc3Q6OkxpbmVJdGVtPiBjb252ZXJ0QW5kVmFsaWRhdGVUbwogICAgIGlmICghdmFsaWRhdGVB
bW91bnQobGluZUl0ZW0uYW1vdW50KSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVF
cnJvciwgbWFrZVN0cmluZygiXCIiICsgbGluZUl0ZW0uYW1vdW50LCAiXCIgaXMgbm90IGEgdmFs
aWQgYW1vdW50LiIpIH07CiAKLSAgICBBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGlu
ZUl0ZW0gcmVzdWx0OwotICAgIHJlc3VsdC5hbW91bnQgPSBsaW5lSXRlbS5hbW91bnQ7Ci0gICAg
cmVzdWx0LnR5cGUgPSBsaW5lSXRlbS50eXBlOwotICAgIHJlc3VsdC5sYWJlbCA9IGxpbmVJdGVt
LmxhYmVsOworICAgIEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbSB0b3Rh
bCB7IGxpbmVJdGVtLnR5cGUsIGxpbmVJdGVtLmFtb3VudCwgbGluZUl0ZW0ubGFiZWwgfTsKIAot
ICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdCk7CisgICAgYXV0byB2YWxpZGF0ZWRUb3RhbCA9IFBh
eW1lbnRSZXF1ZXN0VmFsaWRhdG9yOjp2YWxpZGF0ZVRvdGFsKHRvdGFsKTsKKyAgICBpZiAodmFs
aWRhdGVkVG90YWwuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiB2YWxpZGF0ZWRUb3Rh
bC5yZWxlYXNlRXhjZXB0aW9uKCk7CisKKyAgICByZXR1cm4gV1RGTW92ZSh0b3RhbCk7CiB9CiAK
IHN0YXRpYyBFeGNlcHRpb25PcjxBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGluZUl0
ZW0+IGNvbnZlcnRBbmRWYWxpZGF0ZShBcHBsZVBheUxpbmVJdGVtJiYgbGluZUl0ZW0pCkBAIC0z
MTgsMjMgKzMyOCwxNiBAQCBzdGF0aWMgRXhjZXB0aW9uT3I8UGF5bWVudEF1dGhvcml6YXRpb25S
ZXN1bHQ+IGNvbnZlcnRBbmRWYWxpZGF0ZShBcHBsZVBheVBheW1lbgogCiBzdGF0aWMgRXhjZXB0
aW9uT3I8UGF5bWVudE1ldGhvZFVwZGF0ZT4gY29udmVydEFuZFZhbGlkYXRlKEFwcGxlUGF5UGF5
bWVudE1ldGhvZFVwZGF0ZSYmIHVwZGF0ZSkKIHsKLSAgICBQYXltZW50TWV0aG9kVXBkYXRlIGNv
bnZlcnRlZFVwZGF0ZTsKLQogICAgIGF1dG8gY29udmVydGVkTmV3VG90YWwgPSBjb252ZXJ0QW5k
VmFsaWRhdGVUb3RhbChXVEZNb3ZlKHVwZGF0ZS5uZXdUb3RhbCkpOwogICAgIGlmIChjb252ZXJ0
ZWROZXdUb3RhbC5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGNvbnZlcnRlZE5ld1Rv
dGFsLnJlbGVhc2VFeGNlcHRpb24oKTsKLSAgICBjb252ZXJ0ZWRVcGRhdGUubmV3VG90YWxBbmRM
aW5lSXRlbXMudG90YWwgPSBjb252ZXJ0ZWROZXdUb3RhbC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsK
LQotICAgIC8vIEZJWE1FOiBNZXJnZSB0aGlzIHZhbGlkYXRpb24gaW50byB0aGUgdmFsaWRhdGlv
biB3ZSBhcmUgZG9pbmcgYWJvdmUuCi0gICAgYXV0byB2YWxpZGF0ZWRUb3RhbCA9IFBheW1lbnRS
ZXF1ZXN0VmFsaWRhdG9yOjp2YWxpZGF0ZVRvdGFsKGNvbnZlcnRlZFVwZGF0ZS5uZXdUb3RhbEFu
ZExpbmVJdGVtcy50b3RhbCk7Ci0gICAgaWYgKHZhbGlkYXRlZFRvdGFsLmhhc0V4Y2VwdGlvbigp
KQotICAgICAgICByZXR1cm4gdmFsaWRhdGVkVG90YWwucmVsZWFzZUV4Y2VwdGlvbigpOwogCiAg
ICAgYXV0byBjb252ZXJ0ZWROZXdMaW5lSXRlbXMgPSBjb252ZXJ0QW5kVmFsaWRhdGUoV1RGTW92
ZSh1cGRhdGUubmV3TGluZUl0ZW1zKSk7CiAgICAgaWYgKGNvbnZlcnRlZE5ld0xpbmVJdGVtcy5o
YXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGNvbnZlcnRlZE5ld0xpbmVJdGVtcy5yZWxl
YXNlRXhjZXB0aW9uKCk7CiAKLSAgICBjb252ZXJ0ZWRVcGRhdGUubmV3VG90YWxBbmRMaW5lSXRl
bXMubGluZUl0ZW1zID0gY29udmVydGVkTmV3TGluZUl0ZW1zLnJlbGVhc2VSZXR1cm5WYWx1ZSgp
OworICAgIFBheW1lbnRNZXRob2RVcGRhdGUgY29udmVydGVkVXBkYXRlIHsgY29udmVydGVkTmV3
VG90YWwucmVsZWFzZVJldHVyblZhbHVlKCksIGNvbnZlcnRlZE5ld0xpbmVJdGVtcy5yZWxlYXNl
UmV0dXJuVmFsdWUoKSB9OworICAgIGZpbmlzaENvbnZlcnRpbmcoY29udmVydGVkVXBkYXRlLCBX
VEZNb3ZlKHVwZGF0ZSkpOwogCiAgICAgcmV0dXJuIFdURk1vdmUoY29udmVydGVkVXBkYXRlKTsK
IH0KQEAgLTM1NSwxMSArMzU4LDYgQEAgc3RhdGljIEV4Y2VwdGlvbk9yPFNoaXBwaW5nQ29udGFj
dFVwZGF0ZT4gY29udmVydEFuZFZhbGlkYXRlKEFwcGxlUGF5U2hpcHBpbmdDb24KICAgICAgICAg
cmV0dXJuIGNvbnZlcnRlZE5ld1RvdGFsLnJlbGVhc2VFeGNlcHRpb24oKTsKICAgICBjb252ZXJ0
ZWRVcGRhdGUubmV3VG90YWxBbmRMaW5lSXRlbXMudG90YWwgPSBjb252ZXJ0ZWROZXdUb3RhbC5y
ZWxlYXNlUmV0dXJuVmFsdWUoKTsKIAotICAgIC8vIEZJWE1FOiBNZXJnZSB0aGlzIHZhbGlkYXRp
b24gaW50byB0aGUgdmFsaWRhdGlvbiB3ZSBhcmUgZG9pbmcgYWJvdmUuCi0gICAgYXV0byB2YWxp
ZGF0ZWRUb3RhbCA9IFBheW1lbnRSZXF1ZXN0VmFsaWRhdG9yOjp2YWxpZGF0ZVRvdGFsKGNvbnZl
cnRlZFVwZGF0ZS5uZXdUb3RhbEFuZExpbmVJdGVtcy50b3RhbCk7Ci0gICAgaWYgKHZhbGlkYXRl
ZFRvdGFsLmhhc0V4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4gdmFsaWRhdGVkVG90YWwucmVs
ZWFzZUV4Y2VwdGlvbigpOwotCiAgICAgYXV0byBjb252ZXJ0ZWROZXdMaW5lSXRlbXMgPSBjb252
ZXJ0QW5kVmFsaWRhdGUoV1RGTW92ZSh1cGRhdGUubmV3TGluZUl0ZW1zKSk7CiAgICAgaWYgKGNv
bnZlcnRlZE5ld0xpbmVJdGVtcy5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGNvbnZl
cnRlZE5ld0xpbmVJdGVtcy5yZWxlYXNlRXhjZXB0aW9uKCk7CkBAIC0zNzgsMTEgKzM3Niw2IEBA
IHN0YXRpYyBFeGNlcHRpb25PcjxTaGlwcGluZ01ldGhvZFVwZGF0ZT4gY29udmVydEFuZFZhbGlk
YXRlKEFwcGxlUGF5U2hpcHBpbmdNZXRoCiAKICAgICBjb252ZXJ0ZWRVcGRhdGUubmV3VG90YWxB
bmRMaW5lSXRlbXMudG90YWwgPSBjb252ZXJ0ZWROZXdUb3RhbC5yZWxlYXNlUmV0dXJuVmFsdWUo
KTsKIAotICAgIC8vIEZJWE1FOiBNZXJnZSB0aGlzIHZhbGlkYXRpb24gaW50byB0aGUgdmFsaWRh
dGlvbiB3ZSBhcmUgZG9pbmcgYWJvdmUuCi0gICAgYXV0byB2YWxpZGF0ZWRUb3RhbCA9IFBheW1l
bnRSZXF1ZXN0VmFsaWRhdG9yOjp2YWxpZGF0ZVRvdGFsKGNvbnZlcnRlZFVwZGF0ZS5uZXdUb3Rh
bEFuZExpbmVJdGVtcy50b3RhbCk7Ci0gICAgaWYgKHZhbGlkYXRlZFRvdGFsLmhhc0V4Y2VwdGlv
bigpKQotICAgICAgICByZXR1cm4gdmFsaWRhdGVkVG90YWwucmVsZWFzZUV4Y2VwdGlvbigpOwot
CiAgICAgYXV0byBjb252ZXJ0ZWROZXdMaW5lSXRlbXMgPSBjb252ZXJ0QW5kVmFsaWRhdGUoV1RG
TW92ZSh1cGRhdGUubmV3TGluZUl0ZW1zKSk7CiAgICAgaWYgKGNvbnZlcnRlZE5ld0xpbmVJdGVt
cy5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGNvbnZlcnRlZE5ld0xpbmVJdGVtcy5y
ZWxlYXNlRXhjZXB0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L0FwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2FwcGxlcGF5L0FwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0LmgKaW5kZXggZjU3
NWE1NDE1OTFmZmNiNjU5MmQyNTVjMWFlNzQzZWMyZjBmYmY4MS4uOGE2NWM0OTBiMTAyMTNlM2U1
YTA0MDlhYjIxNzVlNjZjZDdiNTM3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9hcHBsZXBheS9BcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QuaApA
QCAtMjEyLDEwICsyMTIsNiBAQCBzdHJ1Y3QgUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQgewog
ICAgIFZlY3RvcjxQYXltZW50RXJyb3I+IGVycm9yczsKIH07CiAKLXN0cnVjdCBQYXltZW50TWV0
aG9kVXBkYXRlIHsKLSAgICBBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6VG90YWxBbmRM
aW5lSXRlbXMgbmV3VG90YWxBbmRMaW5lSXRlbXM7Ci19OwotCiBzdHJ1Y3QgU2hpcHBpbmdDb250
YWN0VXBkYXRlIHsKICAgICBWZWN0b3I8UGF5bWVudEVycm9yPiBlcnJvcnM7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRDb29yZGluYXRvci5oCmlu
ZGV4IDFhNGFmM2JlOTMxM2U1M2I5ZTE3Mzc0MGI1MmRlNTljZmZhNmEzM2IuLjRhMGY5NmU3OTBi
ZTAxYTE3ZDgwYjRjZDk2MWE1ZThjNzIxY2NkYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvYXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50Q29vcmRpbmF0b3IuaApAQCAtMzksMTEgKzM5LDEx
IEBAIGNsYXNzIFBheW1lbnRDb29yZGluYXRvckNsaWVudDsKIGNsYXNzIFBheW1lbnRDb250YWN0
OwogY2xhc3MgUGF5bWVudE1lcmNoYW50U2Vzc2lvbjsKIGNsYXNzIFBheW1lbnRNZXRob2Q7Citj
bGFzcyBQYXltZW50TWV0aG9kVXBkYXRlOwogY2xhc3MgUGF5bWVudFNlc3Npb247CiBjbGFzcyBQ
YXltZW50U2Vzc2lvbkVycm9yOwogZW51bSBjbGFzcyBQYXltZW50QXV0aG9yaXphdGlvblN0YXR1
czsKIHN0cnVjdCBQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdDsKLXN0cnVjdCBQYXltZW50TWV0
aG9kVXBkYXRlOwogc3RydWN0IFNoaXBwaW5nQ29udGFjdFVwZGF0ZTsKIHN0cnVjdCBTaGlwcGlu
Z01ldGhvZFVwZGF0ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBs
ZXBheS9QYXltZW50Q29vcmRpbmF0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50LmgKaW5kZXggOGQ1MjNjMGUyMmViNjU0
M2Q3ZmQ2YjFhYzFhMjQ1N2YyODI0N2ZiMi4uMDNmNWIyODkwOTM0ZjliYjI2Yzg3MTFiYWNhNTk2
ZDJiYzcwZGQ3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9Q
YXltZW50Q29vcmRpbmF0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L1BheW1lbnRDb29yZGluYXRvckNsaWVudC5oCkBAIC0zOSw4ICszOSw4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBQYXltZW50TWVyY2hhbnRT
ZXNzaW9uOworY2xhc3MgUGF5bWVudE1ldGhvZFVwZGF0ZTsKIHN0cnVjdCBQYXltZW50QXV0aG9y
aXphdGlvblJlc3VsdDsKLXN0cnVjdCBQYXltZW50TWV0aG9kVXBkYXRlOwogc3RydWN0IFNoaXBw
aW5nQ29udGFjdFVwZGF0ZTsKIHN0cnVjdCBTaGlwcGluZ01ldGhvZFVwZGF0ZTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50SGVhZGVycy5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXltZW50SGVhZGVycy5oCmluZGV4IDNm
MWIwNGVkYmJmZTY2NDgxM2FkMmRkNDcwMDZhNTZlZjFhNGY4NWYuLmM1NTUxMTc5ZWQxZjBkMjQ1
MDhlMmE0NGViYzUzNzJlNzliZmM1MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvUGF5bWVudEhlYWRlcnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2FwcGxlcGF5L1BheW1lbnRIZWFkZXJzLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzAsNCArMzAsNiBAQAogI2luY2x1ZGUgIlBheW1l
bnRDb250YWN0LmgiCiAjaW5jbHVkZSAiUGF5bWVudE1lcmNoYW50U2Vzc2lvbi5oIgogI2luY2x1
ZGUgIlBheW1lbnRNZXRob2QuaCIKKyNpbmNsdWRlICJQYXltZW50TWV0aG9kVXBkYXRlLmgiCiAj
aW5jbHVkZSAiUGF5bWVudFNlc3Npb25FcnJvci5oIgorI2luY2x1ZGUgIlBheW1lbnRTdW1tYXJ5
SXRlbXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvUGF5
bWVudE1ldGhvZFVwZGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9QYXlt
ZW50TWV0aG9kVXBkYXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzE4MTNjZGRlZTllNzRkMGQ2NzFhY2QxNzlh
Njk1OWQ1NWUzYjJmMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
YXBwbGVwYXkvUGF5bWVudE1ldGhvZFVwZGF0ZS5oCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShBUFBMRV9QQVkpCisKKyNpbmNsdWRlICJB
cHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oIgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KKworI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisjaW5jbHVkZSA8V2ViS2l0QWRkaXRp
b25zL1BheW1lbnRNZXRob2RVcGRhdGVBZGRpdGlvbnMuaD4KKyNlbmRpZgorCitPQkpDX0NMQVNT
IFBLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRlOworCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIFBheW1lbnRNZXRob2RVcGRhdGUgeworcHVibGlj
OgorICAgIHVzaW5nIExpbmVJdGVtID0gQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6Okxp
bmVJdGVtOworICAgIHVzaW5nIFRvdGFsQW5kTGluZUl0ZW1zID0gQXBwbGVQYXlTZXNzaW9uUGF5
bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zOworCisgICAgUGF5bWVudE1ldGhvZFVwZGF0
ZShMaW5lSXRlbSYmIHRvdGFsLCBWZWN0b3I8TGluZUl0ZW0+JiYpOworICAgIGV4cGxpY2l0IFBh
eW1lbnRNZXRob2RVcGRhdGUoUmV0YWluUHRyPFBLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9k
VXBkYXRlPiYmKTsKKyAgICBleHBsaWNpdCBQYXltZW50TWV0aG9kVXBkYXRlKFRvdGFsQW5kTGlu
ZUl0ZW1zJiYpOworCisgICAgY29uc3QgVG90YWxBbmRMaW5lSXRlbXMmIHRvdGFsQW5kTGluZUl0
ZW1zKCkgY29uc3Q7CisgICAgUEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RVcGRhdGUgKnBs
YXRmb3JtVXBkYXRlKCkgY29uc3Q7CisKKyNpZiBkZWZpbmVkKFBBWU1FTlRNRVRIT0RVUERBVEVf
UFVCTElDX0FERElUSU9OUykKK1BBWU1FTlRNRVRIT0RVUERBVEVfUFVCTElDX0FERElUSU9OUwor
I3VuZGVmIFBBWU1FTlRNRVRIT0RVUERBVEVfUFVCTElDX0FERElUSU9OUworI2VuZGlmCisgICAg
Citwcml2YXRlOgorICAgIE9wdGlvbmFsPFRvdGFsQW5kTGluZUl0ZW1zPiBtX3RvdGFsQW5kTGlu
ZUl0ZW1zOworICAgIFJldGFpblB0cjxQS1BheW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhvZFVwZGF0
ZT4gbV9wbGF0Zm9ybVVwZGF0ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEVOQUJMRShBUFBMRV9QQVkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2FwcGxlcGF5L1BheW1lbnRTdW1tYXJ5SXRlbXMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvYXBwbGVwYXkvUGF5bWVudFN1bW1hcnlJdGVtcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVlOTUxNmEwOGZl
NmI1MThmMTYyOWJhMDFjZTNiNzY0ODhkNmJmNGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L1BheW1lbnRTdW1tYXJ5SXRlbXMuaApAQCAtMCwwICsx
LDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoQVBQTEVfUEFZ
KQorCisjaW5jbHVkZSAiQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QuaCIKKworT0JKQ19D
TEFTUyBOU0FycmF5OworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dFQkNPUkVfRVhQT1JUIE5T
QXJyYXkgKnBsYXRmb3JtU3VtbWFyeUl0ZW1zKGNvbnN0IEFwcGxlUGF5U2Vzc2lvblBheW1lbnRS
ZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcyYpOworV0VCQ09SRV9FWFBPUlQgTlNBcnJheSAqcGxh
dGZvcm1TdW1tYXJ5SXRlbXMoY29uc3QgQXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6Okxp
bmVJdGVtJiB0b3RhbCwgY29uc3QgVmVjdG9yPEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0
OjpMaW5lSXRlbT4mKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKEFQUExFX1BBWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVw
YXkvY29jb2EvUGF5bWVudE1ldGhvZFVwZGF0ZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50TWV0aG9kVXBkYXRlQ29jb2EubW0KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjVlMWY3NjUwMDU4NjE4OTIyNmM2NWEwZWQyMWU1MDc4YjFiYmMwYgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1ldGhv
ZFVwZGF0ZUNvY29hLm1tCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJj
b25maWcuaCIKKyNpbXBvcnQgIlBheW1lbnRNZXRob2RVcGRhdGUuaCIKKworI2lmIEVOQUJMRShB
UFBMRV9QQVkpCisKKyNpbXBvcnQgIlBheW1lbnRTdW1tYXJ5SXRlbXMuaCIKKyNpbXBvcnQgPHBh
bC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXlt
ZW50TWV0aG9kVXBkYXRlOjpQYXltZW50TWV0aG9kVXBkYXRlKExpbmVJdGVtJiYgdG90YWwsIFZl
Y3RvcjxMaW5lSXRlbT4mJiBsaW5lSXRlbXMpCisgICAgOiBtX3RvdGFsQW5kTGluZUl0ZW1zIHsg
eyBXVEZNb3ZlKHRvdGFsKSwgV1RGTW92ZShsaW5lSXRlbXMpIH0gfQorICAgICwgbV9wbGF0Zm9y
bVVwZGF0ZSB7IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhv
ZFVwZGF0ZUluc3RhbmNlKCkgaW5pdFdpdGhQYXltZW50U3VtbWFyeUl0ZW1zOnBsYXRmb3JtU3Vt
bWFyeUl0ZW1zKCptX3RvdGFsQW5kTGluZUl0ZW1zKV0pIH0KK3sKK30KKworUGF5bWVudE1ldGhv
ZFVwZGF0ZTo6UGF5bWVudE1ldGhvZFVwZGF0ZShSZXRhaW5QdHI8UEtQYXltZW50UmVxdWVzdFBh
eW1lbnRNZXRob2RVcGRhdGU+JiYgcGxhdGZvcm1VcGRhdGUpCisgICAgOiBtX3BsYXRmb3JtVXBk
YXRlIHsgV1RGTW92ZShwbGF0Zm9ybVVwZGF0ZSkgfQoreworfQorCitQYXltZW50TWV0aG9kVXBk
YXRlOjpQYXltZW50TWV0aG9kVXBkYXRlKFRvdGFsQW5kTGluZUl0ZW1zJiYgdG90YWxBbmRMaW5l
SXRlbXMpCisgICAgOiBQYXltZW50TWV0aG9kVXBkYXRlIHsgV1RGTW92ZSh0b3RhbEFuZExpbmVJ
dGVtcy50b3RhbCksIFdURk1vdmUodG90YWxBbmRMaW5lSXRlbXMubGluZUl0ZW1zKSB9Cit7Cit9
CisKK2NvbnN0IFBheW1lbnRNZXRob2RVcGRhdGU6OlRvdGFsQW5kTGluZUl0ZW1zJiBQYXltZW50
TWV0aG9kVXBkYXRlOjp0b3RhbEFuZExpbmVJdGVtcygpIGNvbnN0Cit7CisgICAgcmV0dXJuICpt
X3RvdGFsQW5kTGluZUl0ZW1zOworfQorCitQS1BheW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhvZFVw
ZGF0ZSAqUGF5bWVudE1ldGhvZFVwZGF0ZTo6cGxhdGZvcm1VcGRhdGUoKSBjb25zdAoreworICAg
IHJldHVybiBtX3BsYXRmb3JtVXBkYXRlLmdldCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQVBQTEVfUEFZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50U3VtbWFyeUl0ZW1zQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRTdW1tYXJ5SXRl
bXNDb2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YTg3MjRhNzY0ODUwZDZmMDc1ZjA0OWQ5YzE4ZTZhMGY1
YWY2MWY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBh
eS9jb2NvYS9QYXltZW50U3VtbWFyeUl0ZW1zQ29jb2EubW0KQEAgLTAsMCArMSw3OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJQYXltZW50U3VtbWFy
eUl0ZW1zLmgiCisKKyNpZiBFTkFCTEUoQVBQTEVfUEFZKQorCisjaW1wb3J0IDxwYWwvY29jb2Ev
UGFzc0tpdFNvZnRMaW5rLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIE5TRGVj
aW1hbE51bWJlciAqdG9EZWNpbWFsTnVtYmVyKGNvbnN0IFN0cmluZyYgYW1vdW50KQoreworICAg
IGlmICghYW1vdW50KQorICAgICAgICByZXR1cm4gW05TRGVjaW1hbE51bWJlciB6ZXJvXTsKKyAg
ICByZXR1cm4gW05TRGVjaW1hbE51bWJlciBkZWNpbWFsTnVtYmVyV2l0aFN0cmluZzphbW91bnQg
bG9jYWxlOkB7IE5TTG9jYWxlRGVjaW1hbFNlcGFyYXRvciA6IEAiLiIgfV07Cit9CisKK3N0YXRp
YyBQS1BheW1lbnRTdW1tYXJ5SXRlbVR5cGUgdG9QS1BheW1lbnRTdW1tYXJ5SXRlbVR5cGUoQXBw
bGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtOjpUeXBlIHR5cGUpCit7CisgICAg
c3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6
TGluZUl0ZW06OlR5cGU6OkZpbmFsOgorICAgICAgICByZXR1cm4gUEtQYXltZW50U3VtbWFyeUl0
ZW1UeXBlRmluYWw7CisgICAgY2FzZSBBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGlu
ZUl0ZW06OlR5cGU6OlBlbmRpbmc6CisgICAgICAgIHJldHVybiBQS1BheW1lbnRTdW1tYXJ5SXRl
bVR5cGVQZW5kaW5nOworICAgIH0KK30KKworc3RhdGljIFBLUGF5bWVudFN1bW1hcnlJdGVtICp0
b1BLUGF5bWVudFN1bW1hcnlJdGVtKGNvbnN0IEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0
OjpMaW5lSXRlbSYgbGluZUl0ZW0pCit7CisgICAgcmV0dXJuIFtQQUw6OmdldFBLUGF5bWVudFN1
bW1hcnlJdGVtQ2xhc3MoKSBzdW1tYXJ5SXRlbVdpdGhMYWJlbDpsaW5lSXRlbS5sYWJlbCBhbW91
bnQ6dG9EZWNpbWFsTnVtYmVyKGxpbmVJdGVtLmFtb3VudCkgdHlwZTp0b1BLUGF5bWVudFN1bW1h
cnlJdGVtVHlwZShsaW5lSXRlbS50eXBlKV07Cit9CisKK05TQXJyYXkgKnBsYXRmb3JtU3VtbWFy
eUl0ZW1zKGNvbnN0IEFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJ
dGVtcyYgdG90YWxBbmRMaW5lSXRlbXMpCit7CisgICAgcmV0dXJuIHBsYXRmb3JtU3VtbWFyeUl0
ZW1zKHRvdGFsQW5kTGluZUl0ZW1zLnRvdGFsLCB0b3RhbEFuZExpbmVJdGVtcy5saW5lSXRlbXMp
OworfQorCitOU0FycmF5ICpwbGF0Zm9ybVN1bW1hcnlJdGVtcyhjb25zdCBBcHBsZVBheVNlc3Np
b25QYXltZW50UmVxdWVzdDo6TGluZUl0ZW0mIHRvdGFsLCBjb25zdCBWZWN0b3I8QXBwbGVQYXlT
ZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtPiYgbGluZUl0ZW1zKQoreworICAgIE5TTXV0
YWJsZUFycmF5ICpwYXltZW50U3VtbWFyeUl0ZW1zID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0
aENhcGFjaXR5OmxpbmVJdGVtcy5zaXplKCkgKyAxXTsKKyAgICBmb3IgKGF1dG8mIGxpbmVJdGVt
IDogbGluZUl0ZW1zKSB7CisgICAgICAgIGlmIChQS1BheW1lbnRTdW1tYXJ5SXRlbSAqc3VtbWFy
eUl0ZW0gPSB0b1BLUGF5bWVudFN1bW1hcnlJdGVtKGxpbmVJdGVtKSkKKyAgICAgICAgICAgIFtw
YXltZW50U3VtbWFyeUl0ZW1zIGFkZE9iamVjdDpzdW1tYXJ5SXRlbV07CisgICAgfQorCisgICAg
aWYgKFBLUGF5bWVudFN1bW1hcnlJdGVtICp0b3RhbEl0ZW0gPSB0b1BLUGF5bWVudFN1bW1hcnlJ
dGVtKHRvdGFsKSkKKyAgICAgICAgW3BheW1lbnRTdW1tYXJ5SXRlbXMgYWRkT2JqZWN0OnRvdGFs
SXRlbV07CisKKyAgICByZXR1cm4gYWRvcHROUyhbcGF5bWVudFN1bW1hcnlJdGVtcyBjb3B5XSku
YXV0b3JlbGVhc2UoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShBUFBMRV9QQVkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Fw
cGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9hcHBsZXBheS9wYXltZW50cmVxdWVzdC9BcHBsZVBheVBheW1lbnRI
YW5kbGVyLmNwcAppbmRleCBkMzRkN2NkZThiYTk0YjMxZjNiMjZlYzViNDNiOWM5NmY3ZWZlOGMw
Li4wZjdlM2JhMmEyMzM1ZTkwZjc3YTFkZmE2OWM2NjU3NGRmNTQzZGRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5
bWVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYXBwbGVwYXkvcGF5
bWVudHJlcXVlc3QvQXBwbGVQYXlQYXltZW50SGFuZGxlci5jcHAKQEAgLTUxLDYgKzUxLDcgQEAK
ICNpbmNsdWRlICJQYXltZW50Q29vcmRpbmF0b3IuaCIKICNpbmNsdWRlICJQYXltZW50TWVyY2hh
bnRTZXNzaW9uLmgiCiAjaW5jbHVkZSAiUGF5bWVudE1ldGhvZC5oIgorI2luY2x1ZGUgIlBheW1l
bnRNZXRob2RVcGRhdGUuaCIKICNpbmNsdWRlICJQYXltZW50UmVxdWVzdFZhbGlkYXRvci5oIgog
I2luY2x1ZGUgIlBheW1lbnRSZXNwb25zZS5oIgogI2luY2x1ZGUgIlBheW1lbnRWYWxpZGF0aW9u
RXJyb3JzLmgiCkBAIC00NzMsMTQgKzQ3NCwxMSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBBcHBsZVBh
eVBheW1lbnRIYW5kbGVyOjpwYXltZW50TWV0aG9kVXBkYXRlZCgpCiAgICAgQVNTRVJUKG1faXNV
cGRhdGluZyk7CiAgICAgbV9pc1VwZGF0aW5nID0gZmFsc2U7CiAKLSAgICBQYXltZW50TWV0aG9k
VXBkYXRlIHVwZGF0ZTsKLQogICAgIGF1dG8gbmV3VG90YWxBbmRMaW5lSXRlbXMgPSBjb21wdXRl
VG90YWxBbmRMaW5lSXRlbXMoKTsKICAgICBpZiAobmV3VG90YWxBbmRMaW5lSXRlbXMuaGFzRXhj
ZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBuZXdUb3RhbEFuZExpbmVJdGVtcy5yZWxlYXNlRXhj
ZXB0aW9uKCk7Ci0gICAgdXBkYXRlLm5ld1RvdGFsQW5kTGluZUl0ZW1zID0gbmV3VG90YWxBbmRM
aW5lSXRlbXMucmVsZWFzZVJldHVyblZhbHVlKCk7CiAKLSAgICBwYXltZW50Q29vcmRpbmF0b3Io
KS5jb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oV1RGTW92ZSh1cGRhdGUpKTsKKyAgICBw
YXltZW50Q29vcmRpbmF0b3IoKS5jb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oUGF5bWVu
dE1ldGhvZFVwZGF0ZSB7IG5ld1RvdGFsQW5kTGluZUl0ZW1zLnJlbGVhc2VSZXR1cm5WYWx1ZSgp
IH0pOwogICAgIHJldHVybiB7IH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3Bp
L2NvY29hL1Bhc3NLaXRTUEkuaAppbmRleCBhMWJhMmM5YjkzMjc2Mjk4ZmI2ZWNiNzNmYmVhMWJh
NjU1NDMwOGU4Li4zZjg4NTg3ZmVkMjMwMGIyYzdlOGUwM2YyNjc0Yzk5Y2I1MzRhNGEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY29jb2EvUGFzc0tpdFNQSS5oCkBAIC0zNDgs
MTYgKzM0OCwyMCBAQCBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogQHByb3BlcnR5IChub25hdG9t
aWMsIGFzc2lnbikgUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cyBzdGF0dXM7CiBAZW5kCiAK
LUBpbnRlcmZhY2UgUEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RVcGRhdGUgOiBOU09iamVj
dAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUGF5bWVudFN1bW1hcnlJdGVtczoobm9ubnVsbCBO
U0FycmF5PFBLUGF5bWVudFN1bW1hcnlJdGVtICo+ICopcGF5bWVudFN1bW1hcnlJdGVtczsKK0Bp
bnRlcmZhY2UgUEtQYXltZW50UmVxdWVzdFVwZGF0ZSA6IE5TT2JqZWN0CistIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhQYXltZW50U3VtbWFyeUl0ZW1zOihOU0FycmF5PFBLUGF5bWVudFN1bW1hcnlJ
dGVtICo+ICopcGF5bWVudFN1bW1hcnlJdGVtczsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5
KSBOU0FycmF5PFBLUGF5bWVudFN1bW1hcnlJdGVtICo+ICpwYXltZW50U3VtbWFyeUl0ZW1zOwog
QGVuZAogCi1AaW50ZXJmYWNlIFBLUGF5bWVudFJlcXVlc3RVcGRhdGUgOiBOU09iamVjdAorQGlu
dGVyZmFjZSBQS1BheW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhvZFVwZGF0ZSA6IFBLUGF5bWVudFJl
cXVlc3RVcGRhdGUKIEBlbmQKIAogQGludGVyZmFjZSBQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdD
b250YWN0VXBkYXRlIDogUEtQYXltZW50UmVxdWVzdFVwZGF0ZQotLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoUGF5bWVudFN1bW1hcnlJdGVtczoobm9ubnVsbCBOU0FycmF5PFBLUGF5bWVudFN1bW1h
cnlJdGVtICo+ICopc3VtbWFyeUl0ZW1zIHNoaXBwaW5nTWV0aG9kczoobm9ubnVsbCBOU0FycmF5
PFBLU2hpcHBpbmdNZXRob2QgKj4gKilzaGlwcGluZ01ldGhvZHM7CiAtIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhFcnJvcnM6KG51bGxhYmxlIE5TQXJyYXk8TlNFcnJvciAqPiAqKWVycm9ycyBwYXlt
ZW50U3VtbWFyeUl0ZW1zOihub25udWxsIE5TQXJyYXk8UEtQYXltZW50U3VtbWFyeUl0ZW0gKj4g
KilzdW1tYXJ5SXRlbXMgc2hpcHBpbmdNZXRob2RzOihub25udWxsIE5TQXJyYXk8UEtTaGlwcGlu
Z01ldGhvZCAqPiAqKXNoaXBwaW5nTWV0aG9kczsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5
KSBOU0FycmF5PFBLU2hpcHBpbmdNZXRob2QgKj4gKnNoaXBwaW5nTWV0aG9kczsKK0BlbmQKKwor
QGludGVyZmFjZSBQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdNZXRob2RVcGRhdGUgOiBQS1BheW1l
bnRSZXF1ZXN0VXBkYXRlCiBAZW5kCiAKIE5TX0FTU1VNRV9OT05OVUxMX0VORApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXNDb2NvYS50eHQKaW5kZXggNTI1YmFmYzU3YWRmNmU0NTYyYjIxYWM0NmYyN2Y2MTZiZGM0Zjcx
NC4uYTA2OTJhOGY3YjdkMTgyMDYzZTUzNzBkYjM4OWI3MmQ3OWJhOGM5YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzQ29jb2EudHh0CkBAIC01OTIsNyArNTkyLDkgQEAgV0hMU0xTdGFuZGFyZExpYnJhcnlGdW5j
dGlvbk1hcC5jcHAKICAgICBNb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRDb250YWN0Q29j
b2EubW0KICAgICBNb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRNZXJjaGFudFNlc3Npb25D
b2NvYS5tbQogICAgIE1vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudE1ldGhvZENvY29hLm1t
CisgICAgTW9kdWxlcy9hcHBsZXBheS9jb2NvYS9QYXltZW50TWV0aG9kVXBkYXRlQ29jb2EubW0K
ICAgICBNb2R1bGVzL2FwcGxlcGF5L2NvY29hL1BheW1lbnRTZXNzaW9uRXJyb3JDb2NvYS5tbQor
ICAgIE1vZHVsZXMvYXBwbGVwYXkvY29jb2EvUGF5bWVudFN1bW1hcnlJdGVtc0NvY29hLm1tCiAK
ICAgICBNb2R1bGVzL2FwcGxlcGF5L3BheW1lbnRyZXF1ZXN0L0FwcGxlUGF5UGF5bWVudEhhbmRs
ZXIuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCA5ZWYzMGNlZWQ3NGE0MDBmY2IzZTE4ZTJlYjYzMjAyMTkwZWRjNWE2Li42
ZmRhMDA2NTk0ZDFiZDYwMGI2OWMyZWRkMDVlNjMzMzk4ODdiMDgyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zMDAzLDYgKzMw
MDMsOCBAQAogCQlBMURGNUFBNjFGN0Y2NEJCMDA1OEE0NzcgLyogUGF5bWVudEhhbmRsZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExREY1QUE0MUY3
RjY0QkIwMDU4QTQ3NyAvKiBQYXltZW50SGFuZGxlci5oICovOyB9OwogCQlBMURGNUFBRDFGODA3
NUYwMDA1OEE0NzcgLyogQXBwbGVQYXlSZXF1ZXN0QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFERjVBQUExRjgwNzVGMDAwNThBNDc3IC8qIEFw
cGxlUGF5UmVxdWVzdEJhc2UuaCAqLzsgfTsKIAkJQTFERjVBQjMxRjgwNzc1MzAwNThBNDc3IC8q
IEpTQXBwbGVQYXlSZXF1ZXN0QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTFERjVBQjExRjgwNzc1MjAwNThBNDc3IC8qIEpTQXBwbGVQYXlSZXF1
ZXN0QmFzZS5oICovOyB9OworCQlBMURGRDUyNTIzMzQ1OTNGMDA0MkZDREIgLyogUGF5bWVudE1l
dGhvZFVwZGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTFERkQ1MjQyMzM0NTkzQTAwNDJGQ0RCIC8qIFBheW1lbnRNZXRob2RVcGRhdGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBMURGRDUyNjIz
MzQ1OTQ4MDA0MkZDREIgLyogUGF5bWVudFN1bW1hcnlJdGVtcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFERkQ1MjIyMzM0NTkzQTAwNDJGQ0RCIC8q
IFBheW1lbnRTdW1tYXJ5SXRlbXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlBMUVENzc4RDFCRTMyOTQwMDBEQzE3OTEgLyogRGV2aWNlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUVENzc4QjFCRTMy
OTQwMDBEQzE3OTEgLyogRGV2aWNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQTFGNjAwNDQxRjQ3NTdBOTAwNzdFODNGIC8qIFBheW1lbnRSZXF1
ZXN0VXBkYXRlRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEExRjYwMDQxMUY0NzU3QTkwMDc3RTgzRiAvKiBQYXltZW50UmVxdWVzdFVwZGF0ZUV2
ZW50LmggKi87IH07CiAJCUExRjYwMDQ5MUY0NzU5NEUwMDc3RTgzRiAvKiBQYXltZW50RGV0YWls
c1VwZGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTFGNjAwNDcxRjQ3NTk0RTAwNzdFODNGIC8qIFBheW1lbnREZXRhaWxzVXBkYXRlLmggKi87IH07
CkBAIC0xMTMwNSw2ICsxMTMwNywxMCBAQAogCQlBMURGNUFCMDFGODA3NzUyMDA1OEE0NzcgLyog
SlNBcHBsZVBheVJlcXVlc3RCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTQXBwbGVQYXlSZXF1ZXN0QmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUExREY1QUIxMUY4MDc3NTIwMDU4QTQ3NyAvKiBKU0FwcGxlUGF5UmVxdWVzdEJhc2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBcHBsZVBheVJlcXVlc3RCYXNl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExREY1QUI0MUY4MDc4RjMwMDU4QTQ3
NyAvKiBBcHBsZVBheUNvbnRhY3RGaWVsZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBcHBsZVBh
eUNvbnRhY3RGaWVsZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExREZENTIy
MjMzNDU5M0EwMDQyRkNEQiAvKiBQYXltZW50U3VtbWFyeUl0ZW1zLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFBheW1lbnRTdW1tYXJ5SXRlbXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTFE
RkQ1MjQyMzM0NTkzQTAwNDJGQ0RCIC8qIFBheW1lbnRNZXRob2RVcGRhdGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUGF5bWVudE1ldGhvZFVwZGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBMURGRDUyNzIzMzQ1OTczMDA0MkZDREIgLyogUGF5bWVudFN1bW1hcnlJdGVtc0NvY29hLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGF5bWVudFN1bW1hcnlJdGVtc0NvY29hLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMURGRDUyODIzMzQ1OTc0MDA0MkZDREIgLyogUGF5
bWVudE1ldGhvZFVwZGF0ZUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGF5bWVudE1l
dGhvZFVwZGF0ZUNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMUUxMTU0
MzEzMDE1QzNEMDA1NEFDOEMgLyogRGlzdGFudExpZ2h0U291cmNlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpc3RhbnRMaWdodFNvdXJjZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExRTExNTQ1MTMwMTVDNEUwMDU0QUM4QyAvKiBQb2ludExp
Z2h0U291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBvaW50
TGlnaHRTb3VyY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMUUxMTU0NzEz
MDE1QzVEMDA1NEFDOEMgLyogU3BvdExpZ2h0U291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFNwb3RMaWdodFNvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xNjc3OCwxMSArMTY3ODQsMTMgQEAKIAkJCQk3Q0Y5MzBFNjFFMDFGOUFE
MDBCQUZGQkUgLyogUGF5bWVudEhlYWRlcnMuaCAqLywKIAkJCQkxQUU5NkE4NzFEMUEwQ0VCMDBC
ODY3NjggLyogUGF5bWVudE1lcmNoYW50U2Vzc2lvbi5oICovLAogCQkJCTFBOEE2NDM5MUQxOUZD
NTMwMEQwRTAwRiAvKiBQYXltZW50TWV0aG9kLmggKi8sCisJCQkJQTFERkQ1MjQyMzM0NTkzQTAw
NDJGQ0RCIC8qIFBheW1lbnRNZXRob2RVcGRhdGUuaCAqLywKIAkJCQkxQThBNjQ2NjFEMTlGREZG
MDBEMEUwMEYgLyogUGF5bWVudFJlcXVlc3RWYWxpZGF0b3IuaCAqLywKIAkJCQkxQThBNjQ2NTFE
MTlGREZGMDBEMEUwMEYgLyogUGF5bWVudFJlcXVlc3RWYWxpZGF0b3IubW0gKi8sCiAJCQkJQTFD
MkM1NzUxRkEyODUxNjAwQkE0NkZBIC8qIFBheW1lbnRTZXNzaW9uLmNwcCAqLywKIAkJCQlBMTQ5
MURBMjFGODU5RDg3MDA5NUY1RDQgLyogUGF5bWVudFNlc3Npb24uaCAqLywKIAkJCQlBMTEzRTAy
NzIzMzE4MjkzMDA5QzMzQTAgLyogUGF5bWVudFNlc3Npb25FcnJvci5oICovLAorCQkJCUExREZE
NTIyMjMzNDU5M0EwMDQyRkNEQiAvKiBQYXltZW50U3VtbWFyeUl0ZW1zLmggKi8sCiAJCQkpOwog
CQkJcGF0aCA9IGFwcGxlcGF5OwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTE2Nzk0
LDcgKzE2ODAyLDkgQEAKIAkJCQkxQThBNjQ2QTFEMTlGRjg3MDBEMEUwMEYgLyogUGF5bWVudENv
bnRhY3RDb2NvYS5tbSAqLywKIAkJCQkxQURBNEExQjFEMjJGMkMwMDA1QTlBMTUgLyogUGF5bWVu
dE1lcmNoYW50U2Vzc2lvbkNvY29hLm1tICovLAogCQkJCTFBOEE2NDZCMUQxOUZGODcwMEQwRTAw
RiAvKiBQYXltZW50TWV0aG9kQ29jb2EubW0gKi8sCisJCQkJQTFERkQ1MjgyMzM0NTk3NDAwNDJG
Q0RCIC8qIFBheW1lbnRNZXRob2RVcGRhdGVDb2NvYS5tbSAqLywKIAkJCQlBMTEzRTAyQTIzMzE4
RUJDMDA5QzMzQTAgLyogUGF5bWVudFNlc3Npb25FcnJvckNvY29hLm1tICovLAorCQkJCUExREZE
NTI3MjMzNDU5NzMwMDQyRkNEQiAvKiBQYXltZW50U3VtbWFyeUl0ZW1zQ29jb2EubW0gKi8sCiAJ
CQkpOwogCQkJcGF0aCA9IGNvY29hOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTMx
MDc3LDYgKzMxMDg3LDcgQEAKIAkJCQkxQThBNjQzQzFEMTlGQzUzMDBEMEUwMEYgLyogUGF5bWVu
dE1ldGhvZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE2NEEyNDcyMTM0QkM3MTAwNTA5MTU2IC8q
IFBheW1lbnRNZXRob2RDaGFuZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFGNzZCMTkx
RjQ0QzM5MDAwMTRDMzE4IC8qIFBheW1lbnRNZXRob2REYXRhLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlBMURGRDUyNTIzMzQ1OTNGMDA0MkZDREIgLyogUGF5bWVudE1ldGhvZFVwZGF0ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTFGNzZCMkIxRjQ0QzRFRjAwMTRDMzE4IC8qIFBheW1lbnRPcHRpb25z
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMUY3NkIxMzFGNDRDMjQ1MDAxNEMzMTggLyogUGF5bWVu
dFJlcXVlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUExRjYwMDQ0MUY0NzU3QTkwMDc3RTgzRiAv
KiBQYXltZW50UmVxdWVzdFVwZGF0ZUV2ZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTMxMDg4LDYg
KzMxMDk5LDcgQEAKIAkJCQlBMTEzRTAyODIzMzE4MjkzMDA5QzMzQTAgLyogUGF5bWVudFNlc3Np
b25FcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFGNzZCNTUxRjQ0RDJDNzAwMTRDMzE4IC8q
IFBheW1lbnRTaGlwcGluZ09wdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTFGNzZCNDkxRjQ0
RDA3QTAwMTRDMzE4IC8qIFBheW1lbnRTaGlwcGluZ1R5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUExREZENTI2MjMzNDU5NDgwMDQyRkNEQiAvKiBQYXltZW50U3VtbWFyeUl0ZW1zLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBMTY3N0RGRDIxM0UwMDY2MDBBMDhDMzQgLyogUGF5bWVudFZhbGlkYXRp
b25FcnJvcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyNzUzNTY1MEIwNTM4MTQwMDJDRTY0RiAv
KiBQREZEb2N1bWVudEltYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1RTJDNDM1MTFCQ0VFMkY2
MDAwMUUyQkMgLyogUGVlckNvbm5lY3Rpb25CYWNrZW5kLmggaW4gSGVhZGVycyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvTW9ja1BheW1lbnRDb29yZGluYXRvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL01vY2tQYXltZW50Q29vcmRpbmF0b3IuY3BwCmluZGV4
IDAzNjA1ZDU1NjRmMjhmNDE0MDVkNGNmZDE3N2NmOTY1YTgwZjBmNGUuLmZkN2ZkZGQ1Njc3NjBi
YjA1OTZjNWJmY2E4MjU0YjgxYTk2MGY2ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvTW9ja1BheW1lbnRDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9Nb2NrUGF5bWVudENvb3JkaW5hdG9yLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1
ZGUgIk1vY2tQYXltZW50TWV0aG9kLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBh
eW1lbnRDb29yZGluYXRvci5oIgorI2luY2x1ZGUgIlBheW1lbnRNZXRob2RVcGRhdGUuaCIKICNp
bmNsdWRlICJQYXltZW50U2Vzc2lvbkVycm9yLmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25I
YW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTE2MCw3ICsxNjEsNyBAQCB2
b2lkIE1vY2tQYXltZW50Q29vcmRpbmF0b3I6OmNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0
aW9uKE9wdGlvbmFsPFNoaXBwaW5nQwogdm9pZCBNb2NrUGF5bWVudENvb3JkaW5hdG9yOjpjb21w
bGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oT3B0aW9uYWw8UGF5bWVudE1ldGhvZFVwZGF0ZT4m
JiBwYXltZW50TWV0aG9kVXBkYXRlKQogewogICAgIGlmIChwYXltZW50TWV0aG9kVXBkYXRlKQot
ICAgICAgICB1cGRhdGVUb3RhbEFuZExpbmVJdGVtcyhwYXltZW50TWV0aG9kVXBkYXRlLT5uZXdU
b3RhbEFuZExpbmVJdGVtcyk7CisgICAgICAgIHVwZGF0ZVRvdGFsQW5kTGluZUl0ZW1zKHBheW1l
bnRNZXRob2RVcGRhdGUtPnRvdGFsQW5kTGluZUl0ZW1zKCkpOwogfQogCiB2b2lkIE1vY2tQYXlt
ZW50Q29vcmRpbmF0b3I6OmNoYW5nZVNoaXBwaW5nT3B0aW9uKFN0cmluZyYmIHNoaXBwaW5nT3B0
aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0
aG9yaXphdGlvblByZXNlbnRlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9QYXlt
ZW50QXV0aG9yaXphdGlvblByZXNlbnRlci5oCmluZGV4IGNiNjRhZjkyYmUwYmMxNWIxZGRkNGEy
YTQxY2E0NzU0Mzk3MjI5NDQuLmQwNjI3ODQ1MDlmMWJkOGJlMjkwNzk1MzkwNmIwYTVjZmIzM2Nh
OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhv
cml6YXRpb25QcmVzZW50ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1Bh
eW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyLmgKQEAgLTQxLDYgKzQxLDcgQEAgY2xhc3MgUGF5
bWVudDsKIGNsYXNzIFBheW1lbnRDb250YWN0OwogY2xhc3MgUGF5bWVudE1lcmNoYW50U2Vzc2lv
bjsKIGNsYXNzIFBheW1lbnRNZXRob2Q7CitjbGFzcyBQYXltZW50TWV0aG9kVXBkYXRlOwogY2xh
c3MgUGF5bWVudFNlc3Npb25FcnJvcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlci5tbSBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIubW0KaW5k
ZXggMTJlYWIxNWRhMTg2MGZkYTY5NGM4N2ViM2U2ODliYThiNTM0NjMyYy4uOGU4ZjVmNzM0MjI0
ZDRjNjlkYmFmM2NmNGIyYjMyYjVkOGEyNWZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlci5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1BheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyLm1t
CkBAIC0zMiw2ICszMiw4IEBACiAjaW1wb3J0ICJXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNv
Y29hLmgiCiAjaW1wb3J0IDxXZWJDb3JlL1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1BheW1lbnRNZXJjaGFudFNlc3Npb24uaD4KKyNpbXBvcnQgPFdlYkNv
cmUvUGF5bWVudE1ldGhvZFVwZGF0ZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9QYXltZW50U3VtbWFy
eUl0ZW1zLmg+CiAjaW1wb3J0IDxwYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmg+CiAKIFNPRlRf
TElOS19GUkFNRVdPUksoQ29udGFjdHMpOwpAQCAtMTg1LDggKzE4NywxMiBAQCB2b2lkIFBheW1l
bnRBdXRob3JpemF0aW9uUHJlc2VudGVyOjpjb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbihjb25z
dCBXZWJDb3JlOjpQYQogdm9pZCBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcjo6Y29tcGxl
dGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRN
ZXRob2RVcGRhdGU+JiB1cGRhdGUpCiB7CiAgICAgQVNTRVJUKHBsYXRmb3JtRGVsZWdhdGUoKSk7
Ci0gICAgTlNBcnJheSAqc3VtbWFyeUl0ZW1zID0gdXBkYXRlID8gdG9QS1BheW1lbnRTdW1tYXJ5
SXRlbXModXBkYXRlLT5uZXdUb3RhbEFuZExpbmVJdGVtcykgOiBwbGF0Zm9ybURlbGVnYXRlKCku
c3VtbWFyeUl0ZW1zOwotICAgIFtwbGF0Zm9ybURlbGVnYXRlKCkgY29tcGxldGVQYXltZW50TWV0
aG9kU2VsZWN0aW9uOnN1bW1hcnlJdGVtc107CisgICAgaWYgKCF1cGRhdGUpIHsKKyAgICAgICAg
W3BsYXRmb3JtRGVsZWdhdGUoKSBjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb246bmlsXTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFtwbGF0Zm9ybURlbGVnYXRlKCkgY29tcGxl
dGVQYXltZW50TWV0aG9kU2VsZWN0aW9uOnVwZGF0ZS0+cGxhdGZvcm1VcGRhdGUoKV07CiB9CiAK
IHZvaWQgUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXI6OmNvbXBsZXRlUGF5bWVudFNlc3Np
b24oY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQ+JiBy
ZXN1bHQpCkBAIC0yMDAsMTggKzIwNiwyNyBAQCB2b2lkIFBheW1lbnRBdXRob3JpemF0aW9uUHJl
c2VudGVyOjpjb21wbGV0ZVBheW1lbnRTZXNzaW9uKGNvbnN0IE9wdGlvbmFsPFdlYkNvcgogdm9p
ZCBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcjo6Y29tcGxldGVTaGlwcGluZ0NvbnRhY3RT
ZWxlY3Rpb24oY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBpbmdDb250YWN0VXBkYXRlPiYg
dXBkYXRlKQogewogICAgIEFTU0VSVChwbGF0Zm9ybURlbGVnYXRlKCkpOwotICAgIE5TQXJyYXkg
KnNoaXBwaW5nTWV0aG9kcyA9IHVwZGF0ZSA/IHRvUEtTaGlwcGluZ01ldGhvZHModXBkYXRlLT5u
ZXdTaGlwcGluZ01ldGhvZHMpIDogcGxhdGZvcm1EZWxlZ2F0ZSgpLnNoaXBwaW5nTWV0aG9kczsK
LSAgICBOU0FycmF5ICpzdW1tYXJ5SXRlbXMgPSB1cGRhdGUgPyB0b1BLUGF5bWVudFN1bW1hcnlJ
dGVtcyh1cGRhdGUtPm5ld1RvdGFsQW5kTGluZUl0ZW1zKSA6IHBsYXRmb3JtRGVsZWdhdGUoKS5z
dW1tYXJ5SXRlbXM7Ci0gICAgTlNBcnJheSAqZXJyb3JzID0gdXBkYXRlID8gdG9OU0Vycm9ycyh1
cGRhdGUtPmVycm9ycykgOiBAWyBdOwotICAgIGF1dG8gc3RhdHVzID0gUEtQYXltZW50QXV0aG9y
aXphdGlvblN0YXR1c1N1Y2Nlc3M7Ci0gICAgW3BsYXRmb3JtRGVsZWdhdGUoKSBjb21wbGV0ZVNo
aXBwaW5nQ29udGFjdFNlbGVjdGlvbjpzdGF0dXMgc3VtbWFyeUl0ZW1zOnN1bW1hcnlJdGVtcyBz
aGlwcGluZ01ldGhvZHM6c2hpcHBpbmdNZXRob2RzIGVycm9yczplcnJvcnNdOworICAgIGlmICgh
dXBkYXRlKSB7CisgICAgICAgIFtwbGF0Zm9ybURlbGVnYXRlKCkgY29tcGxldGVTaGlwcGluZ0Nv
bnRhY3RTZWxlY3Rpb246bmlsXTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEZJ
WE1FOiBXZWJDb3JlOjpTaGlwcGluZ0NvbnRhY3RVcGRhdGUgc2hvdWxkIGtub3cgaG93IHRvIGNv
bnZlcnQgaXRzZWxmIHRvIGEgUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nQ29udGFjdFVwZGF0ZS4K
KyAgICBhdXRvIHNoaXBwaW5nQ29udGFjdFVwZGF0ZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1Bh
eW1lbnRSZXF1ZXN0U2hpcHBpbmdDb250YWN0VXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0aEVycm9y
czp0b05TRXJyb3JzKHVwZGF0ZS0+ZXJyb3JzKSBwYXltZW50U3VtbWFyeUl0ZW1zOldlYkNvcmU6
OnBsYXRmb3JtU3VtbWFyeUl0ZW1zKHVwZGF0ZS0+bmV3VG90YWxBbmRMaW5lSXRlbXMpIHNoaXBw
aW5nTWV0aG9kczp0b1BLU2hpcHBpbmdNZXRob2RzKHVwZGF0ZS0+bmV3U2hpcHBpbmdNZXRob2Rz
KV0pOworICAgIFtwbGF0Zm9ybURlbGVnYXRlKCkgY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxl
Y3Rpb246c2hpcHBpbmdDb250YWN0VXBkYXRlLmdldCgpXTsKIH0KIAogdm9pZCBQYXltZW50QXV0
aG9yaXphdGlvblByZXNlbnRlcjo6Y29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihjb25z
dCBPcHRpb25hbDxXZWJDb3JlOjpTaGlwcGluZ01ldGhvZFVwZGF0ZT4mIHVwZGF0ZSkKIHsKICAg
ICBBU1NFUlQocGxhdGZvcm1EZWxlZ2F0ZSgpKTsKLSAgICBOU0FycmF5ICpzdW1tYXJ5SXRlbXMg
PSB1cGRhdGUgPyB0b1BLUGF5bWVudFN1bW1hcnlJdGVtcyh1cGRhdGUtPm5ld1RvdGFsQW5kTGlu
ZUl0ZW1zKSA6IHBsYXRmb3JtRGVsZWdhdGUoKS5zdW1tYXJ5SXRlbXM7Ci0gICAgW3BsYXRmb3Jt
RGVsZWdhdGUoKSBjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uOnN1bW1hcnlJdGVtc107
CisgICAgaWYgKCF1cGRhdGUpIHsKKyAgICAgICAgW3BsYXRmb3JtRGVsZWdhdGUoKSBjb21wbGV0
ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uOm5pbF07CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICAvLyBGSVhNRTogV2ViQ29yZTo6U2hpcHBpbmdNZXRob2RVcGRhdGUgc2hvdWxkIGtub3cg
aG93IHRvIGNvbnZlcnQgaXRzZWxmIHRvIGEgUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nTWV0aG9k
VXBkYXRlLgorICAgIGF1dG8gc2hpcHBpbmdNZXRob2RVcGRhdGUgPSBhZG9wdE5TKFtQQUw6OmFs
bG9jUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nTWV0aG9kVXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0
aFBheW1lbnRTdW1tYXJ5SXRlbXM6V2ViQ29yZTo6cGxhdGZvcm1TdW1tYXJ5SXRlbXModXBkYXRl
LT5uZXdUb3RhbEFuZExpbmVJdGVtcyldKTsKKyAgICBbcGxhdGZvcm1EZWxlZ2F0ZSgpIGNvbXBs
ZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb246c2hpcHBpbmdNZXRob2RVcGRhdGUuZ2V0KCldOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vY29jb2EvV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlLmggYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL2NvY29hL1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5oCmluZGV4
IDQwMzNhM2NkNmRkNGI4ZmRkZjQyZGNkZTExOTAyNjQ5NzU1MDQyZWEuLmM5MzVmMjc2ZDhmMWFj
MWYxYjk2MGFiZTNhODk1NmRhYTBkMWM2OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vY29jb2EvV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlLmgKKysrIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9XS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUuaApA
QCAtNTIsMTUgKzUyLDExIEBAIHVzaW5nIERpZFNlbGVjdFNoaXBwaW5nTWV0aG9kQ29tcGxldGlv
biA9IEJsb2NrUHRyPHZvaWQoUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nCiAKIC0gKGluc3RhbmNl
dHlwZSlpbml0IE5TX1VOQVZBSUxBQkxFOwogCi1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9u
bHkpIEJPT0wgZGlkUmVhY2hGaW5hbFN0YXRlOwotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRv
bmx5KSBOU0FycmF5PFBLUGF5bWVudFN1bW1hcnlJdGVtICo+ICpzdW1tYXJ5SXRlbXM7Ci1AcHJv
cGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TQXJyYXk8UEtTaGlwcGluZ01ldGhvZCAqPiAq
c2hpcHBpbmdNZXRob2RzOwotCiAtICh2b2lkKWNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uOihQ
S1BheW1lbnRNZXJjaGFudFNlc3Npb24gKilzZXNzaW9uIGVycm9yOihOU0Vycm9yICopZXJyb3I7
Ci0tICh2b2lkKWNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbjooTlNBcnJheTxQS1BheW1l
bnRTdW1tYXJ5SXRlbSAqPiAqKXN1bW1hcnlJdGVtczsKKy0gKHZvaWQpY29tcGxldGVQYXltZW50
TWV0aG9kU2VsZWN0aW9uOihQS1BheW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhvZFVwZGF0ZSAqKXBh
eW1lbnRNZXRob2RVcGRhdGU7CiAtICh2b2lkKWNvbXBsZXRlUGF5bWVudFNlc3Npb246KFBLUGF5
bWVudEF1dGhvcml6YXRpb25TdGF0dXMpc3RhdHVzIGVycm9yczooTlNBcnJheTxOU0Vycm9yICo+
ICopZXJyb3JzIGRpZFJlYWNoRmluYWxTdGF0ZTooQk9PTClkaWRSZWFjaEZpbmFsU3RhdGU7Ci0t
ICh2b2lkKWNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uOihQS1BheW1lbnRBdXRob3Jp
emF0aW9uU3RhdHVzKXN0YXR1cyBzdW1tYXJ5SXRlbXM6KE5TQXJyYXk8UEtQYXltZW50U3VtbWFy
eUl0ZW0gKj4gKilzdW1tYXJ5SXRlbXMgc2hpcHBpbmdNZXRob2RzOihOU0FycmF5PFBLU2hpcHBp
bmdNZXRob2QgKj4gKilzaGlwcGluZ01ldGhvZHMgZXJyb3JzOihOU0FycmF5PE5TRXJyb3IgKj4g
KillcnJvcnM7Ci0tICh2b2lkKWNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb246KE5TQXJy
YXk8UEtQYXltZW50U3VtbWFyeUl0ZW0gKj4gKilzdW1tYXJ5SXRlbXM7CistICh2b2lkKWNvbXBs
ZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uOihQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdDb250
YWN0VXBkYXRlICopc2hpcHBpbmdDb250YWN0VXBkYXRlOworLSAodm9pZCljb21wbGV0ZVNoaXBw
aW5nTWV0aG9kU2VsZWN0aW9uOihQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdNZXRob2RVcGRhdGUg
KilzaGlwcGluZ01ldGhvZFVwZGF0ZTsKIC0gKHZvaWQpaW52YWxpZGF0ZTsKIAogQGVuZApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9XS1BheW1lbnRBdXRob3JpemF0
aW9uRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1dLUGF5bWVudEF1
dGhvcml6YXRpb25EZWxlZ2F0ZS5tbQppbmRleCBmYTNlOGJiNTIyNTczOTk2MzllZjQ4MDA5MTBl
OWM2M2I2MzQ4NDdlLi5jOTBmZmY3Mzc0NmRlMTUxZmVmYjcwNDViMjRmNmM5YzhjZDNlYTg0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1dLUGF5bWVudEF1dGhvcml6
YXRpb25EZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1dLUGF5
bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5tbQpAQCAtMzMsNiArMzMsNyBAQAogI2ltcG9ydCA8
V2ViQ29yZS9QYXltZW50U2Vzc2lvbkVycm9yLmg+CiAKIEBpbXBsZW1lbnRhdGlvbiBXS1BheW1l
bnRBdXRob3JpemF0aW9uRGVsZWdhdGUgeworICAgIEJPT0wgX2RpZFJlYWNoRmluYWxTdGF0ZTsK
ICAgICBSZXRhaW5QdHI8TlNBcnJheTxQS1BheW1lbnRTdW1tYXJ5SXRlbSAqPj4gX3N1bW1hcnlJ
dGVtczsKICAgICBSZXRhaW5QdHI8TlNBcnJheTxQS1NoaXBwaW5nTWV0aG9kICo+PiBfc2hpcHBp
bmdNZXRob2RzOwogICAgIFJldGFpblB0cjxOU0Vycm9yPiBfc2Vzc2lvbkVycm9yOwpAQCAtNTks
MTEgKzYwLDExIEBAIC0gKHZvaWQpY29tcGxldGVNZXJjaGFudFZhbGlkYXRpb246KFBLUGF5bWVu
dE1lcmNoYW50U2Vzc2lvbiAqKXNlc3Npb24gZXJyb3I6KE5TCiAgICAgc3RkOjpleGNoYW5nZShf
ZGlkUmVxdWVzdE1lcmNoYW50U2Vzc2lvbkNvbXBsZXRpb24sIG5pbCkoc2Vzc2lvbiwgZXJyb3Ip
OwogfQogCi0tICh2b2lkKWNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbjooTlNBcnJheTxQ
S1BheW1lbnRTdW1tYXJ5SXRlbSAqPiAqKXN1bW1hcnlJdGVtcworLSAodm9pZCljb21wbGV0ZVBh
eW1lbnRNZXRob2RTZWxlY3Rpb246KFBLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRl
ICopcGF5bWVudE1ldGhvZFVwZGF0ZQogewotICAgIF9zdW1tYXJ5SXRlbXMgPSBzdW1tYXJ5SXRl
bXM7Ci0gICAgYXV0byB1cGRhdGUgPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50UmVxdWVz
dFBheW1lbnRNZXRob2RVcGRhdGVJbnN0YW5jZSgpIGluaXRXaXRoUGF5bWVudFN1bW1hcnlJdGVt
czpfc3VtbWFyeUl0ZW1zLmdldCgpXSk7Ci0gICAgc3RkOjpleGNoYW5nZShfZGlkU2VsZWN0UGF5
bWVudE1ldGhvZENvbXBsZXRpb24sIG5pbCkodXBkYXRlLmdldCgpKTsKKyAgICBQS1BheW1lbnRS
ZXF1ZXN0UGF5bWVudE1ldGhvZFVwZGF0ZSAqdXBkYXRlID0gcGF5bWVudE1ldGhvZFVwZGF0ZSA/
OiBbW1BBTDo6YWxsb2NQS1BheW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhvZFVwZGF0ZUluc3RhbmNl
KCkgaW5pdFdpdGhQYXltZW50U3VtbWFyeUl0ZW1zOl9zdW1tYXJ5SXRlbXMuZ2V0KCldIGF1dG9y
ZWxlYXNlXTsKKyAgICBfc3VtbWFyeUl0ZW1zID0gYWRvcHROUyhbdXBkYXRlLnBheW1lbnRTdW1t
YXJ5SXRlbXMgY29weV0pOworICAgIHN0ZDo6ZXhjaGFuZ2UoX2RpZFNlbGVjdFBheW1lbnRNZXRo
b2RDb21wbGV0aW9uLCBuaWwpKHVwZGF0ZSk7CiB9CiAKIC0gKHZvaWQpY29tcGxldGVQYXltZW50
U2Vzc2lvbjooUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cylzdGF0dXMgZXJyb3JzOihOU0Fy
cmF5PE5TRXJyb3IgKj4gKillcnJvcnMgZGlkUmVhY2hGaW5hbFN0YXRlOihCT09MKWRpZFJlYWNo
RmluYWxTdGF0ZQpAQCAtNzIsMjEgKzczLDE5IEBAIC0gKHZvaWQpY29tcGxldGVQYXltZW50U2Vz
c2lvbjooUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cylzdGF0dXMgZXJyb3JzOihOU0FyCiAg
ICAgYXV0byByZXN1bHQgPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50QXV0aG9yaXphdGlv
blJlc3VsdEluc3RhbmNlKCkgaW5pdFdpdGhTdGF0dXM6c3RhdHVzIGVycm9yczplcnJvcnNdKTsK
ICAgICBzdGQ6OmV4Y2hhbmdlKF9kaWRBdXRob3JpemVQYXltZW50Q29tcGxldGlvbiwgbmlsKShy
ZXN1bHQuZ2V0KCkpOwogfQotCi0tICh2b2lkKWNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0
aW9uOihQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzKXN0YXR1cyBzdW1tYXJ5SXRlbXM6KE5T
QXJyYXk8UEtQYXltZW50U3VtbWFyeUl0ZW0gKj4gKilzdW1tYXJ5SXRlbXMgc2hpcHBpbmdNZXRo
b2RzOihOU0FycmF5PFBLU2hpcHBpbmdNZXRob2QgKj4gKilzaGlwcGluZ01ldGhvZHMgZXJyb3Jz
OihOU0FycmF5PE5TRXJyb3IgKj4gKillcnJvcnMKKy0gKHZvaWQpY29tcGxldGVTaGlwcGluZ0Nv
bnRhY3RTZWxlY3Rpb246KFBLUGF5bWVudFJlcXVlc3RTaGlwcGluZ0NvbnRhY3RVcGRhdGUgKilz
aGlwcGluZ0NvbnRhY3RVcGRhdGUKIHsKLSAgICBfc3VtbWFyeUl0ZW1zID0gc3VtbWFyeUl0ZW1z
OwotICAgIF9zaGlwcGluZ01ldGhvZHMgPSBzaGlwcGluZ01ldGhvZHM7Ci0gICAgQVNTRVJUKHN0
YXR1cyA9PSBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzU3VjY2Vzcyk7Ci0gICAgYXV0byB1
cGRhdGUgPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nQ29udGFj
dFVwZGF0ZUluc3RhbmNlKCkgaW5pdFdpdGhFcnJvcnM6ZXJyb3JzIHBheW1lbnRTdW1tYXJ5SXRl
bXM6X3N1bW1hcnlJdGVtcy5nZXQoKSBzaGlwcGluZ01ldGhvZHM6X3NoaXBwaW5nTWV0aG9kcy5n
ZXQoKV0pOwotICAgIHN0ZDo6ZXhjaGFuZ2UoX2RpZFNlbGVjdFNoaXBwaW5nQ29udGFjdENvbXBs
ZXRpb24sIG5pbCkodXBkYXRlLmdldCgpKTsKKyAgICBQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdD
b250YWN0VXBkYXRlICp1cGRhdGUgPSBzaGlwcGluZ0NvbnRhY3RVcGRhdGUgPzogW1tQQUw6OmFs
bG9jUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nQ29udGFjdFVwZGF0ZUluc3RhbmNlKCkgaW5pdFdp
dGhFcnJvcnM6QFtdIHBheW1lbnRTdW1tYXJ5SXRlbXM6X3N1bW1hcnlJdGVtcy5nZXQoKSBzaGlw
cGluZ01ldGhvZHM6X3NoaXBwaW5nTWV0aG9kcy5nZXQoKV0gYXV0b3JlbGVhc2VdOworICAgIF9z
dW1tYXJ5SXRlbXMgPSBhZG9wdE5TKFt1cGRhdGUucGF5bWVudFN1bW1hcnlJdGVtcyBjb3B5XSk7
CisgICAgX3NoaXBwaW5nTWV0aG9kcyA9IGFkb3B0TlMoW3VwZGF0ZS5zaGlwcGluZ01ldGhvZHMg
Y29weV0pOworICAgIHN0ZDo6ZXhjaGFuZ2UoX2RpZFNlbGVjdFNoaXBwaW5nQ29udGFjdENvbXBs
ZXRpb24sIG5pbCkodXBkYXRlKTsKIH0KIAotLSAodm9pZCljb21wbGV0ZVNoaXBwaW5nTWV0aG9k
U2VsZWN0aW9uOihOU0FycmF5PFBLUGF5bWVudFN1bW1hcnlJdGVtICo+ICopc3VtbWFyeUl0ZW1z
CistICh2b2lkKWNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb246KFBLUGF5bWVudFJlcXVl
c3RTaGlwcGluZ01ldGhvZFVwZGF0ZSAqKXNoaXBwaW5nTWV0aG9kVXBkYXRlCiB7Ci0gICAgX3N1
bW1hcnlJdGVtcyA9IHN1bW1hcnlJdGVtczsKLSAgICBhdXRvIHVwZGF0ZSA9IGFkb3B0TlMoW1BB
TDo6YWxsb2NQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdNZXRob2RVcGRhdGVJbnN0YW5jZSgpIGlu
aXRXaXRoUGF5bWVudFN1bW1hcnlJdGVtczpfc3VtbWFyeUl0ZW1zLmdldCgpXSk7Ci0gICAgc3Rk
OjpleGNoYW5nZShfZGlkU2VsZWN0U2hpcHBpbmdNZXRob2RDb21wbGV0aW9uLCBuaWwpKHVwZGF0
ZS5nZXQoKSk7CisgICAgUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nTWV0aG9kVXBkYXRlICp1cGRh
dGUgPSBzaGlwcGluZ01ldGhvZFVwZGF0ZSA/OiBbW1BBTDo6YWxsb2NQS1BheW1lbnRSZXF1ZXN0
U2hpcHBpbmdNZXRob2RVcGRhdGVJbnN0YW5jZSgpIGluaXRXaXRoUGF5bWVudFN1bW1hcnlJdGVt
czpfc3VtbWFyeUl0ZW1zLmdldCgpXSBhdXRvcmVsZWFzZV07CisgICAgX3N1bW1hcnlJdGVtcyA9
IGFkb3B0TlMoW3VwZGF0ZS5wYXltZW50U3VtbWFyeUl0ZW1zIGNvcHldKTsKKyAgICBzdGQ6OmV4
Y2hhbmdlKF9kaWRTZWxlY3RTaGlwcGluZ01ldGhvZENvbXBsZXRpb24sIG5pbCkodXBkYXRlKTsK
IH0KIAogLSAodm9pZClpbnZhbGlkYXRlCkBAIC0xNTksNyArMTU4LDcgQEAgLSAodm9pZClfZGlk
U2VsZWN0UGF5bWVudE1ldGhvZDooUEtQYXltZW50TWV0aG9kICopcGF5bWVudE1ldGhvZCBjb21w
bGV0aW9uOihXZWIKIAogICAgIGF1dG8gcHJlc2VudGVyID0gX3ByZXNlbnRlci5nZXQoKTsKICAg
ICBpZiAoIXByZXNlbnRlcikKLSAgICAgICAgcmV0dXJuIFtzZWxmIGNvbXBsZXRlUGF5bWVudE1l
dGhvZFNlbGVjdGlvbjpAWyBdXTsKKyAgICAgICAgcmV0dXJuIFtzZWxmIGNvbXBsZXRlUGF5bWVu
dE1ldGhvZFNlbGVjdGlvbjpuaWxdOwogCiAgICAgcHJlc2VudGVyLT5jbGllbnQoKS5wcmVzZW50
ZXJEaWRTZWxlY3RQYXltZW50TWV0aG9kKCpwcmVzZW50ZXIsIFdlYkNvcmU6OlBheW1lbnRNZXRo
b2QocGF5bWVudE1ldGhvZCkpOwogfQpAQCAtMTcxLDcgKzE3MCw3IEBAIC0gKHZvaWQpX2RpZFNl
bGVjdFNoaXBwaW5nQ29udGFjdDooUEtDb250YWN0ICopY29udGFjdCBjb21wbGV0aW9uOihXZWJL
aXQ6OkRpZFNlCiAKICAgICBhdXRvIHByZXNlbnRlciA9IF9wcmVzZW50ZXIuZ2V0KCk7CiAgICAg
aWYgKCFwcmVzZW50ZXIpCi0gICAgICAgIHJldHVybiBbc2VsZiBjb21wbGV0ZVNoaXBwaW5nQ29u
dGFjdFNlbGVjdGlvbjpQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzRmFpbHVyZSBzdW1tYXJ5
SXRlbXM6QFsgXSBzaGlwcGluZ01ldGhvZHM6QFsgXSBlcnJvcnM6QFsgXV07CisgICAgICAgIHJl
dHVybiBbc2VsZiBjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbjpuaWxdOwogCiAgICAg
cHJlc2VudGVyLT5jbGllbnQoKS5wcmVzZW50ZXJEaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3QoKnBy
ZXNlbnRlciwgV2ViQ29yZTo6UGF5bWVudENvbnRhY3QoY29udGFjdCkpOwogfQpAQCAtMTk2LDcg
KzE5NSw3IEBAIC0gKHZvaWQpX2RpZFNlbGVjdFNoaXBwaW5nTWV0aG9kOihQS1NoaXBwaW5nTWV0
aG9kICopc2hpcHBpbmdNZXRob2QgY29tcGxldGlvbjooCiAKICAgICBhdXRvIHByZXNlbnRlciA9
IF9wcmVzZW50ZXIuZ2V0KCk7CiAgICAgaWYgKCFwcmVzZW50ZXIpCi0gICAgICAgIHJldHVybiBb
c2VsZiBjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uOkBbIF1dOworICAgICAgICByZXR1
cm4gW3NlbGYgY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbjpuaWxdOwogCiAgICAgcHJl
c2VudGVyLT5jbGllbnQoKS5wcmVzZW50ZXJEaWRTZWxlY3RTaGlwcGluZ01ldGhvZCgqcHJlc2Vu
dGVyLCB0b1NoaXBwaW5nTWV0aG9kKHNoaXBwaW5nTWV0aG9kKSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5o
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHkuaAppbmRleCA2YjM2NzczZmVkNDI1YTllNDRjNzdkODExY2I3MWVhZjBmOWQ4Y2FjLi40Njdj
YWU0ZTNkMDIyZTFiMjRiNjRmNWVhNmMyNzliODBkM2MxOWI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5
LmgKQEAgLTU1LDYgKzU1LDcgQEAgY2xhc3MgUGF5bWVudDsKIGNsYXNzIFBheW1lbnRDb250YWN0
OwogY2xhc3MgUGF5bWVudE1lcmNoYW50U2Vzc2lvbjsKIGNsYXNzIFBheW1lbnRNZXRob2Q7Citj
bGFzcyBQYXltZW50TWV0aG9kVXBkYXRlOwogfQogCiBPQkpDX0NMQVNTIE5TT2JqZWN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHlDb2NvYS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvY29j
b2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oCmluZGV4IDRlOTQyYjk2OGE0Mzll
NjM0YmY4YWU3YjkyNjNjYTYyNGIzODY4MWMuLjJkNjQwOGJlZjZmOTViOWY2ZDFiMTAzZDk0NWU5
OWRmZWFhMzliYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L2Nv
Y29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLmgK
QEAgLTMzLDEwICszMyw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiAvLyBGSVhNRTogUmF0aGVy
IHRoYW4gaGF2aW5nIHRoZXNlIGZyZWUgZnVuY3Rpb25zIHNjYXR0ZXJlZCBhYm91dCwgQXBwbGUg
UGF5IGRhdGEgdHlwZXMgc2hvdWxkIGtub3cKIC8vIGhvdyB0byBjb252ZXJ0IHRoZW1zZWx2ZXMg
dG8gYW5kIGZyb20gdGhlaXIgcGxhdGZvcm0gcmVwcmVzZW50YXRpb25zLgotTlNBcnJheSAqdG9Q
S1BheW1lbnRTdW1tYXJ5SXRlbXMoY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVu
dFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zJik7CiBOU0RlY2ltYWxOdW1iZXIgKnRvRGVjaW1h
bE51bWJlcihjb25zdCBTdHJpbmcmIGFtb3VudCk7Ci1QS1BheW1lbnRTdW1tYXJ5SXRlbSAqdG9Q
S1BheW1lbnRTdW1tYXJ5SXRlbShjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50
UmVxdWVzdDo6TGluZUl0ZW0mKTsKLVBLUGF5bWVudFN1bW1hcnlJdGVtVHlwZSB0b1BLUGF5bWVu
dFN1bW1hcnlJdGVtVHlwZShXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6
TGluZUl0ZW06OlR5cGUpOwogUEtTaGlwcGluZ01ldGhvZCAqdG9QS1NoaXBwaW5nTWV0aG9kKGNv
bnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhv
ZCYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0g
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eUNvY29hLm1tCmluZGV4IDg3NWMzNDkyNDI3MTgxNTQ3ZDBkY2RhYTFjNDlmZWIyZmFl
NGQ2MDkuLjU5MTU2OTgzODZkOTllM2JjM2Y3N2U4MDhkZWU2Mzg4ZGZhODRhOWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvY29j
b2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbQpAQCAtMTA5LDE3ICsxMDksNiBA
QCBzdGF0aWMgUmV0YWluUHRyPE5TU2V0PiB0b1BLQ29udGFjdEZpZWxkcyhjb25zdCBXZWJDb3Jl
OjpBcHBsZVBheVNlc3Npb25QYXltZW50UgogICAgIHJldHVybiBhZG9wdE5TKFtbTlNTZXQgYWxs
b2NdIGluaXRXaXRoT2JqZWN0czpyZXN1bHQuZGF0YSgpIGNvdW50OnJlc3VsdC5zaXplKCldKTsK
IH0KIAotUEtQYXltZW50U3VtbWFyeUl0ZW1UeXBlIHRvUEtQYXltZW50U3VtbWFyeUl0ZW1UeXBl
KFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbTo6VHlwZSB0
eXBlKQotewotICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgV2ViQ29yZTo6QXBwbGVQYXlT
ZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtOjpUeXBlOjpGaW5hbDoKLSAgICAgICAgcmV0
dXJuIFBLUGF5bWVudFN1bW1hcnlJdGVtVHlwZUZpbmFsOwotCi0gICAgY2FzZSBXZWJDb3JlOjpB
cHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGluZUl0ZW06OlR5cGU6OlBlbmRpbmc6Ci0g
ICAgICAgIHJldHVybiBQS1BheW1lbnRTdW1tYXJ5SXRlbVR5cGVQZW5kaW5nOwotICAgIH0KLX0K
LQogTlNEZWNpbWFsTnVtYmVyICp0b0RlY2ltYWxOdW1iZXIoY29uc3QgU3RyaW5nJiBhbW91bnQp
CiB7CiAgICAgaWYgKCFhbW91bnQpCkBAIC0xMjcsMjUgKzExNiw2IEBAIE5TRGVjaW1hbE51bWJl
ciAqdG9EZWNpbWFsTnVtYmVyKGNvbnN0IFN0cmluZyYgYW1vdW50KQogICAgIHJldHVybiBbTlNE
ZWNpbWFsTnVtYmVyIGRlY2ltYWxOdW1iZXJXaXRoU3RyaW5nOmFtb3VudCBsb2NhbGU6QHsgTlNM
b2NhbGVEZWNpbWFsU2VwYXJhdG9yIDogQCIuIiB9XTsKIH0KIAotUEtQYXltZW50U3VtbWFyeUl0
ZW0gKnRvUEtQYXltZW50U3VtbWFyeUl0ZW0oY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9u
UGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtJiBsaW5lSXRlbSkKLXsKLSAgICByZXR1cm4gW1BBTDo6
Z2V0UEtQYXltZW50U3VtbWFyeUl0ZW1DbGFzcygpIHN1bW1hcnlJdGVtV2l0aExhYmVsOmxpbmVJ
dGVtLmxhYmVsIGFtb3VudDp0b0RlY2ltYWxOdW1iZXIobGluZUl0ZW0uYW1vdW50KSB0eXBlOnRv
UEtQYXltZW50U3VtbWFyeUl0ZW1UeXBlKGxpbmVJdGVtLnR5cGUpXTsKLX0KLQotTlNBcnJheSAq
dG9QS1BheW1lbnRTdW1tYXJ5SXRlbXMoY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5
bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zJiB0b3RhbEFuZExpbmVJdGVtcykKLXsKLSAg
ICBOU011dGFibGVBcnJheSAqcGF5bWVudFN1bW1hcnlJdGVtcyA9IFtOU011dGFibGVBcnJheSBh
cnJheVdpdGhDYXBhY2l0eTp0b3RhbEFuZExpbmVJdGVtcy5saW5lSXRlbXMuc2l6ZSgpICsgMV07
Ci0gICAgZm9yIChhdXRvJiBsaW5lSXRlbSA6IHRvdGFsQW5kTGluZUl0ZW1zLmxpbmVJdGVtcykg
ewotICAgICAgICBpZiAoUEtQYXltZW50U3VtbWFyeUl0ZW0gKnN1bW1hcnlJdGVtID0gdG9QS1Bh
eW1lbnRTdW1tYXJ5SXRlbShsaW5lSXRlbSkpCi0gICAgICAgICAgICBbcGF5bWVudFN1bW1hcnlJ
dGVtcyBhZGRPYmplY3Q6c3VtbWFyeUl0ZW1dOwotICAgIH0KLQotICAgIGlmIChQS1BheW1lbnRT
dW1tYXJ5SXRlbSAqdG90YWxJdGVtID0gdG9QS1BheW1lbnRTdW1tYXJ5SXRlbSh0b3RhbEFuZExp
bmVJdGVtcy50b3RhbCkpCi0gICAgICAgIFtwYXltZW50U3VtbWFyeUl0ZW1zIGFkZE9iamVjdDp0
b3RhbEl0ZW1dOwotCi0gICAgcmV0dXJuIHBheW1lbnRTdW1tYXJ5SXRlbXM7Ci19Ci0KIHN0YXRp
YyBQS01lcmNoYW50Q2FwYWJpbGl0eSB0b1BLTWVyY2hhbnRDYXBhYmlsaXRpZXMoY29uc3QgV2Vi
Q29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6Ok1lcmNoYW50Q2FwYWJpbGl0aWVz
JiBtZXJjaGFudENhcGFiaWxpdGllcykKIHsKICAgICBQS01lcmNoYW50Q2FwYWJpbGl0eSByZXN1
bHQgPSAwOwpAQCAtMjU2LDE2ICsyMjYsNyBAQCBSZXRhaW5QdHI8UEtQYXltZW50UmVxdWVzdD4g
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtUGF5bWVudFJlcXVlc3QoYwogICAg
ICAgICBbc2hpcHBpbmdNZXRob2RzIGFkZE9iamVjdDp0b1BLU2hpcHBpbmdNZXRob2Qoc2hpcHBp
bmdNZXRob2QpXTsKICAgICBbcmVzdWx0IHNldFNoaXBwaW5nTWV0aG9kczpzaGlwcGluZ01ldGhv
ZHMuZ2V0KCldOwogCi0gICAgYXV0byBwYXltZW50U3VtbWFyeUl0ZW1zID0gYWRvcHROUyhbW05T
TXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7Ci0gICAgZm9yIChhdXRvJiBsaW5lSXRlbSA6IHBh
eW1lbnRSZXF1ZXN0LmxpbmVJdGVtcygpKSB7Ci0gICAgICAgIGlmIChQS1BheW1lbnRTdW1tYXJ5
SXRlbSAqc3VtbWFyeUl0ZW0gPSB0b1BLUGF5bWVudFN1bW1hcnlJdGVtKGxpbmVJdGVtKSkKLSAg
ICAgICAgICAgIFtwYXltZW50U3VtbWFyeUl0ZW1zIGFkZE9iamVjdDpzdW1tYXJ5SXRlbV07Ci0g
ICAgfQotCi0gICAgaWYgKFBLUGF5bWVudFN1bW1hcnlJdGVtICp0b3RhbEl0ZW0gPSB0b1BLUGF5
bWVudFN1bW1hcnlJdGVtKHBheW1lbnRSZXF1ZXN0LnRvdGFsKCkpKQotICAgICAgICBbcGF5bWVu
dFN1bW1hcnlJdGVtcyBhZGRPYmplY3Q6dG90YWxJdGVtXTsKLQotICAgIFtyZXN1bHQgc2V0UGF5
bWVudFN1bW1hcnlJdGVtczpwYXltZW50U3VtbWFyeUl0ZW1zLmdldCgpXTsKKyAgICBbcmVzdWx0
IHNldFBheW1lbnRTdW1tYXJ5SXRlbXM6V2ViQ29yZTo6cGxhdGZvcm1TdW1tYXJ5SXRlbXMocGF5
bWVudFJlcXVlc3QudG90YWwoKSwgcGF5bWVudFJlcXVlc3QubGluZUl0ZW1zKCkpXTsKIAogICAg
IFtyZXN1bHQgc2V0RXhwZWN0c01lcmNoYW50U2Vzc2lvbjpZRVNdOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJDb3JlQXJndW1lbnRDb2RlcnNDb2NvYS5tbSBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1t
CmluZGV4IGVlMDAzNzc3ZjM5YzE2NTllYWUyNGJiMWQ5OGI1OWJlNDk3OTYyMmQuLjMyYmY4MGNk
YTMzYTE3MmFjYmE3OTlkYzE4YzdkYzg3MjU2ZGUzYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYkNvcmVBcmd1bWVudENvZGVyc0NvY29hLm1tCkBAIC0x
NjEsMTYgKzE2MSwxNiBAQCBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50TWV0aG9kPiBBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OlBheW1lbnRNZXRob2Q+OjpkZWNvZGUoRAogCiB2b2lkIEFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6UGF5bWVudE1ldGhvZFVwZGF0ZT46OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBXZWJDb3JlOjpQYXltZW50TWV0aG9kVXBkYXRlJiB1cGRhdGUpCiB7Ci0gICAg
ZW5jb2RlciA8PCB1cGRhdGUubmV3VG90YWxBbmRMaW5lSXRlbXM7CisgICAgZW5jb2RlciA8PCB1
cGRhdGUucGxhdGZvcm1VcGRhdGUoKTsKIH0KIAogT3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudE1l
dGhvZFVwZGF0ZT4gQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpQYXltZW50TWV0aG9kVXBkYXRlPjo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8QXBwbGVQYXlTZXNzaW9u
UGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zPiBuZXdUb3RhbEFuZExpbmVJdGVtczsK
LSAgICBkZWNvZGVyID4+IG5ld1RvdGFsQW5kTGluZUl0ZW1zOwotICAgIGlmICghbmV3VG90YWxB
bmRMaW5lSXRlbXMpCisgICAgYXV0byB1cGRhdGUgPSBJUEM6OmRlY29kZTxQS1BheW1lbnRSZXF1
ZXN0UGF5bWVudE1ldGhvZFVwZGF0ZT4oZGVjb2RlciwgUEFMOjpnZXRQS1BheW1lbnRSZXF1ZXN0
UGF5bWVudE1ldGhvZFVwZGF0ZUNsYXNzKCkpOworICAgIGlmICghdXBkYXRlKQogICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIHJldHVybiB7eyBXVEZNb3ZlKCpuZXdUb3RhbEFuZExp
bmVJdGVtcykgfX07CisKKyAgICByZXR1cm4gUGF5bWVudE1ldGhvZFVwZGF0ZSB7IFdURk1vdmUo
KnVwZGF0ZSkgfTsKIH0KIAogdm9pZCBBcmd1bWVudENvZGVyPEFwcGxlUGF5U2Vzc2lvblBheW1l
bnRSZXF1ZXN0Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEFwcGxlUGF5U2Vzc2lv
blBheW1lbnRSZXF1ZXN0JiByZXF1ZXN0KQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>