<?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>162380</bug_id>
          
          <creation_ts>2016-09-22 03:49:01 -0700</creation_ts>
          <short_desc>[GTK] Rename DataObjectGtk as SelectionData</short_desc>
          <delta_ts>2016-09-22 05:17:07 -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>Platform</component>
          <version>WebKit Local 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>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bugs-noreply</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1232389</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-09-22 03:49:01 -0700</bug_when>
    <thetext>DataObjectGtk represents the data of a selection, like GtkSelectionData, used for clipboard and drag adn drop operations. Data object is a very generic name, and the Gtk suffix sounds like if this is the GTK implementation of a generic DataObject class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1232390</commentid>
    <comment_count>1</comment_count>
      <attachid>289543</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-09-22 03:55:24 -0700</bug_when>
    <thetext>Created attachment 289543
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1232393</commentid>
    <comment_count>2</comment_count>
      <attachid>289545</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-09-22 04:17:41 -0700</bug_when>
    <thetext>Created attachment 289545
Fix the build

Fixed wrong forward declaration</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1232406</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-09-22 05:17:07 -0700</bug_when>
    <thetext>Committed r206256: &lt;http://trac.webkit.org/changeset/206256&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289543</attachid>
            <date>2016-09-22 03:55:24 -0700</date>
            <delta_ts>2016-09-22 04:17:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk-selection-data.diff</filename>
            <type>text/plain</type>
            <size>88440</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjNGE4MTY1Li4wNzhlOWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODkg
QEAKKzIwMTYtMDktMjIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIFJlbmFtZSBEYXRhT2JqZWN0R3RrIGFzIFNlbGVjdGlvbkRhdGEK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjM4MAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERhdGFPYmpl
Y3RHdGsgcmVwcmVzZW50cyB0aGUgZGF0YSBvZiBhIHNlbGVjdGlvbiwgbGlrZSBHdGtTZWxlY3Rp
b25EYXRhLCB1c2VkIGZvciBjbGlwYm9hcmQgYW5kIGRyYWcgYWRuIGRyb3AKKyAgICAgICAgb3Bl
cmF0aW9ucy4gRGF0YSBvYmplY3QgaXMgYSB2ZXJ5IGdlbmVyaWMgbmFtZSwgYW5kIHRoZSBHdGsg
c3VmZml4IHNvdW5kcyBsaWtlIGlmIHRoaXMgaXMgdGhlIEdUSyBpbXBsZW1lbnRhdGlvbgorICAg
ICAgICBvZiBhIGdlbmVyaWMgRGF0YU9iamVjdCBjbGFzcy4KKworICAgICAgICAqIFBsYXRmb3Jt
R1RLLmNtYWtlOgorICAgICAgICAqIGVkaXRpbmcvZ3RrL0VkaXRvckd0ay5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVGcmFnbWVudEZyb21QYXN0ZWJvYXJkRGF0YSk6CisgICAgICAgICog
cGFnZS9ndGsvRHJhZ0NvbnRyb2xsZXJHdGsuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdE
YXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRm
b3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZFN0
cmF0ZWd5Ojp+UGFzdGVib2FyZFN0cmF0ZWd5KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9QbGF0Zm9ybVBhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvRHJhZ0RhdGFH
dGsuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0ZVByaXZhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3ApOgorICAgICAgICAoV2ViQ29yZTo6
UGFzdGVib2FyZDo6UGFzdGVib2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpz
ZWxlY3Rpb25EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OnNlbGVjdGlvbkRhdGFUeXBlRnJvbUhU
TUxDbGlwYm9hcmRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OndyaXRlVG9D
bGlwYm9hcmQpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZEZyb21DbGlwYm9h
cmQpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVTdHJpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVQbGFpblRleHQpOgorICAgICAgICAoV2ViQ29y
ZTo6UGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3Jp
dGVQYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNsZWFyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNhblNtYXJ0UmVwbGFjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6
Omhhc0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6dHlwZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZFN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpQ
YXN0ZWJvYXJkOjpyZWFkRmlsZW5hbWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUGFzdGVi
b2FyZEhlbHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkSGVscGVyOjpnZXRD
bGlwYm9hcmRDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkSGVscGVyOjp0
YXJnZXRMaXN0Rm9yU2VsZWN0aW9uRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJk
SGVscGVyOjpmaWxsU2VsZWN0aW9uRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRT
ZXREYXRhOjpDbGlwYm9hcmRTZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmdldENsaXBib2Fy
ZENvbnRlbnRzQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEhlbHBlcjo6
d3JpdGVDbGlwYm9hcmRDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpjbGVhckNsaXBib2Fy
ZENvbnRlbnRzQ2FsbGJhY2spOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9QYXN0
ZWJvYXJkSGVscGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1BsYXRmb3JtUGFzdGVib2Fy
ZEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlVG9D
bGlwYm9hcmQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkRnJv
bUNsaXBib2FyZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuY3BwOiBS
ZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RhdGFPYmplY3RHdGsuY3Bw
LgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YTo6c2V0VGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpTZWxlY3Rpb25EYXRhOjpzZXRVUklMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNl
bGVjdGlvbkRhdGE6OnNldFVSTCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25EYXRhOjp1
cmxMYWJlbCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25EYXRhOjpjbGVhckFsbEV4Y2Vw
dEZpbGVuYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25EYXRhOjpjbGVhckFsbCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaDogUmVuYW1lZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EYXRhT2JqZWN0R3RrLmguCisgICAgICAgIChXZWJD
b3JlOjpTZWxlY3Rpb25EYXRhOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9u
RGF0YTo6dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25EYXRhOjpoYXNUZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGE6OmNsZWFyVGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpTZWxlY3Rpb25EYXRhOjpzZXRNYXJrdXApOgorICAgICAgICAoV2ViQ29yZTo6U2Vs
ZWN0aW9uRGF0YTo6bWFya3VwKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGE6Omhh
c01hcmt1cCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25EYXRhOjpjbGVhck1hcmt1cCk6
CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25EYXRhOjpoYXNVUkwpOgorICAgICAgICAoV2Vi
Q29yZTo6U2VsZWN0aW9uRGF0YTo6Y2xlYXJVUkwpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0
aW9uRGF0YTo6ZmlsZW5hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGE6Omhh
c1VSSUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YTo6aGFzRmlsZW5hbWVz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGE6OnNldEltYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNlbGVjdGlvbkRhdGE6OmltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVj
dGlvbkRhdGE6Omhhc0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGE6OnVu
a25vd25UeXBlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25EYXRhOjp1bmtub3du
VHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YTo6aGFzVW5rbm93blR5cGVE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGE6OmNhblNtYXJ0UmVwbGFjZSk6
CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25EYXRhOjp1cmwpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YTo6dXJpTGlzdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpTZWxlY3Rpb25EYXRhOjpjbGVhclVSSUxpc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6U2VsZWN0aW9uRGF0YTo6Y2xlYXJJbWFnZSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpTZWxlY3Rpb25EYXRhOjpzZXRVbmtub3duVHlwZURhdGEpOiBEZWxldGVkLgorCiAy
MDE2LTA5LTIyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBD
YWNoZWRSZXNvdXJjZVJlcXVlc3Qgc2hvdWxkIHN0b3JlIGEgU2VjdXJpdHlPcmlnaW4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1HVEsuY21ha2UKaW5kZXggOWRhZWZmMy4uZTZhODk2NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZv
cm1HVEsuY21ha2UKQEAgLTE0OSw5ICsxNDksMTIgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VS
Q0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MveDExL1BsYXRmb3JtRGlzcGxheVgxMS5jcHAKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy94MTEvWFVuaXF1ZVJlc291cmNlLmNwcAogCisgICAgcGxhdGZv
cm0vZ3RrL0RyYWdEYXRhR3RrLmNwcAogICAgIHBsYXRmb3JtL2d0ay9FcnJvcnNHdGsuY3BwCiAg
ICAgcGxhdGZvcm0vZ3RrL01JTUVUeXBlUmVnaXN0cnlHdGsuY3BwCisgICAgcGxhdGZvcm0vZ3Rr
L1Bhc3RlYm9hcmRHdGsuY3BwCiAgICAgcGxhdGZvcm0vZ3RrL1Njcm9sbEFuaW1hdG9yR3RrLmNw
cAorICAgIHBsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmNwcAogICAgIHBsYXRmb3JtL2d0ay9U
ZW1wb3JhcnlMaW5rU3R1YnMuY3BwCiAgICAgcGxhdGZvcm0vZ3RrL1VzZXJBZ2VudEd0ay5jcHAK
IApAQCAtMjEwLDE0ICsyMTMsMTEgQEAgbGlzdChBUFBFTkQgV2ViQ29yZVBsYXRmb3JtR1RLX1NP
VVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VHdGsuY3BwCiAKICAgICBwbGF0
Zm9ybS9ndGsvQ3Vyc29yR3RrLmNwcAotICAgIHBsYXRmb3JtL2d0ay9EYXRhT2JqZWN0R3RrLmNw
cAotICAgIHBsYXRmb3JtL2d0ay9EcmFnRGF0YUd0ay5jcHAKICAgICBwbGF0Zm9ybS9ndGsvRHJh
Z0ltYWdlR3RrLmNwcAogICAgIHBsYXRmb3JtL2d0ay9HUmVmUHRyR3RrLmNwcAogICAgIHBsYXRm
b3JtL2d0ay9HdGtVdGlsaXRpZXMuY3BwCiAgICAgcGxhdGZvcm0vZ3RrL0d0a1ZlcnNpb25pbmcu
YwogICAgIHBsYXRmb3JtL2d0ay9Mb2NhbGl6ZWRTdHJpbmdzR3RrLmNwcAotICAgIHBsYXRmb3Jt
L2d0ay9QYXN0ZWJvYXJkR3RrLmNwcAogICAgIHBsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVy
LmNwcAogICAgIHBsYXRmb3JtL2d0ay9QbGF0Zm9ybUtleWJvYXJkRXZlbnRHdGsuY3BwCiAgICAg
cGxhdGZvcm0vZ3RrL1BsYXRmb3JtTW91c2VFdmVudEd0ay5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL0VkaXRvckd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2d0ay9FZGl0b3JHdGsuY3BwCmluZGV4IDRlYTA4NTAuLjMyMDI4MTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL0VkaXRvckd0ay5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9ndGsvRWRpdG9yR3RrLmNwcApAQCAtMjgsNyArMjgsNiBAQAogI2luY2x1
ZGUgIkVkaXRvci5oIgogCiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKLSNpbmNsdWRlICJEYXRh
T2JqZWN0R3RrLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIkZy
YW1lLmgiCiAjaW5jbHVkZSAiSFRNTEVtYmVkRWxlbWVudC5oIgpAQCAtNDEsNiArNDAsNyBAQAog
I2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgogI2luY2x1
ZGUgIlNWR0ltYWdlRWxlbWVudC5oIgorI2luY2x1ZGUgIlNlbGVjdGlvbkRhdGEuaCIKICNpbmNs
dWRlICJYTGlua05hbWVzLmgiCiAjaW5jbHVkZSAibWFya3VwLmgiCiAKQEAgLTUzLDE2ICs1Mywx
NiBAQCBzdGF0aWMgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbVBh
c3RlYm9hcmREYXRhKFBhc3RlYm9hcmQmIHBhcwogICAgIGlmICghcGFzdGVib2FyZC5oYXNEYXRh
KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgY29uc3QgYXV0byYgZGF0YU9iamVj
dCA9IHBhc3RlYm9hcmQuZGF0YU9iamVjdCgpOwotICAgIGlmIChkYXRhT2JqZWN0Lmhhc01hcmt1
cCgpICYmIGZyYW1lLmRvY3VtZW50KCkpCi0gICAgICAgIHJldHVybiBjcmVhdGVGcmFnbWVudEZy
b21NYXJrdXAoKmZyYW1lLmRvY3VtZW50KCksIGRhdGFPYmplY3QubWFya3VwKCksIGVtcHR5U3Ry
aW5nKCksIERpc2FsbG93U2NyaXB0aW5nQW5kUGx1Z2luQ29udGVudCk7CisgICAgY29uc3QgYXV0
byYgc2VsZWN0aW9uID0gcGFzdGVib2FyZC5zZWxlY3Rpb25EYXRhKCk7CisgICAgaWYgKHNlbGVj
dGlvbi5oYXNNYXJrdXAoKSAmJiBmcmFtZS5kb2N1bWVudCgpKQorICAgICAgICByZXR1cm4gY3Jl
YXRlRnJhZ21lbnRGcm9tTWFya3VwKCpmcmFtZS5kb2N1bWVudCgpLCBzZWxlY3Rpb24ubWFya3Vw
KCksIGVtcHR5U3RyaW5nKCksIERpc2FsbG93U2NyaXB0aW5nQW5kUGx1Z2luQ29udGVudCk7CiAK
ICAgICBpZiAoIWFsbG93UGxhaW5UZXh0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IGlmIChkYXRhT2JqZWN0Lmhhc1RleHQoKSkgeworICAgIGlmIChzZWxlY3Rpb24uaGFzVGV4dCgp
KSB7CiAgICAgICAgIGNob3NlUGxhaW5UZXh0ID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuIGNyZWF0
ZUZyYWdtZW50RnJvbVRleHQocmFuZ2UsIGRhdGFPYmplY3QudGV4dCgpKTsKKyAgICAgICAgcmV0
dXJuIGNyZWF0ZUZyYWdtZW50RnJvbVRleHQocmFuZ2UsIHNlbGVjdGlvbi50ZXh0KCkpOwogICAg
IH0KIAogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9ndGsvRHJhZ0NvbnRyb2xsZXJHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ndGsvRHJh
Z0NvbnRyb2xsZXJHdGsuY3BwCmluZGV4IGU2NmIwZTMuLjE1ODFjNWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvZ3RrL0RyYWdDb250cm9sbGVyR3RrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2d0ay9EcmFnQ29udHJvbGxlckd0ay5jcHAKQEAgLTI2LDE2ICsyNiwxMiBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRyYWdDb250cm9sbGVyLmgiCiAKLSNp
bmNsdWRlICJEYXRhT2JqZWN0R3RrLmgiCiAjaW5jbHVkZSAiRGF0YVRyYW5zZmVyLmgiCiAjaW5j
bHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCiAjaW5jbHVk
ZSAiRHJhZ0RhdGEuaCIKICNpbmNsdWRlICJFZGl0b3IuaCIKICNpbmNsdWRlICJFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiRnJhbWUuaCIKLSNpbmNsdWRlICJGcmFtZVZpZXcuaCIKLSNpbmNsdWRlICJQ
YWdlLmgiCiAjaW5jbHVkZSAiUGFzdGVib2FyZC5oIgogI2luY2x1ZGUgIm1hcmt1cC5oIgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaAppbmRleCAwN2U0ZmY3Li45NDAxZWRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKQEAgLTUwLDkgKzUwLDkgQEAgdHlwZWRlZiBzdHJ1Y3Qg
SURhdGFPYmplY3QqIERyYWdEYXRhUmVmOwogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogI2VsaWYgUExBVEZPUk0oR1RLKQogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgRGF0YU9i
amVjdEd0azsKK2NsYXNzIFNlbGVjdGlvbkRhdGE7CiB9Ci10eXBlZGVmIFdlYkNvcmU6OkRhdGFP
YmplY3RHdGsqIERyYWdEYXRhUmVmOwordHlwZWRlZiBXZWJDb3JlOjpTZWxlY3Rpb25EYXRhKiBE
cmFnRGF0YVJlZjsKICNlbGlmIFBMQVRGT1JNKEVGTCkgfHwgUExBVEZPUk0oSU9TKQogdHlwZWRl
ZiB2b2lkKiBEcmFnRGF0YVJlZjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2Fy
ZC5oCmluZGV4IGQyMzgyNGUuLjRmYzcwODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkLmgKQEAgLTUwLDEyICs1MCwxMiBAQCB0eXBlZGVmIHN0cnVjdCBIV05EX18qIEhXTkQ7CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRGF0YU9iamVjdEd0azsKIGNsYXNzIERvY3Vt
ZW50RnJhZ21lbnQ7CiBjbGFzcyBEcmFnRGF0YTsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGcmFt
ZTsKIGNsYXNzIFJhbmdlOworY2xhc3MgU2VsZWN0aW9uRGF0YTsKIGNsYXNzIFNoYXJlZEJ1ZmZl
cjsKIAogZW51bSBTaG91bGRTZXJpYWxpemVTZWxlY3RlZFRleHRGb3JEYXRhVHJhbnNmZXIgeyBE
ZWZhdWx0U2VsZWN0ZWRUZXh0VHlwZSwgSW5jbHVkZUltYWdlQWx0VGV4dEZvckRhdGFUcmFuc2Zl
ciB9OwpAQCAtMTM4LDcgKzEzOCw3IEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JNKEdUSykKICAg
ICBleHBsaWNpdCBQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgbmFtZSk7Ci0gICAgZXhwbGljaXQg
UGFzdGVib2FyZChEYXRhT2JqZWN0R3RrJik7CisgICAgZXhwbGljaXQgUGFzdGVib2FyZChTZWxl
Y3Rpb25EYXRhJik7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKFdJTikKQEAgLTE4Nyw3ICsxODcs
NyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKEdUSykKLSAgICBjb25zdCBEYXRh
T2JqZWN0R3RrJiBkYXRhT2JqZWN0KCkgY29uc3Q7CisgICAgY29uc3QgU2VsZWN0aW9uRGF0YSYg
c2VsZWN0aW9uRGF0YSgpIGNvbnN0OwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVi
b2FyZD4gY3JlYXRlRm9yR2xvYmFsU2VsZWN0aW9uKCk7CiAjZW5kaWYKIApAQCAtMjIyLDcgKzIy
Miw3IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oR1RLKQogICAgIHZvaWQgd3JpdGVUb0NsaXBi
b2FyZCgpOwogICAgIHZvaWQgcmVhZEZyb21DbGlwYm9hcmQoKTsKLSAgICBSZWY8RGF0YU9iamVj
dEd0az4gbV9kYXRhT2JqZWN0OworICAgIFJlZjxTZWxlY3Rpb25EYXRhPiBtX3NlbGVjdGlvbkRh
dGE7CiAgICAgU3RyaW5nIG1fbmFtZTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCmluZGV4IDYwOGJmMWQuLjBhYTljYTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCkBAIC0zMywxNSArMzMs
MTIgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29sb3I7CitjbGFzcyBTZWxlY3Rp
b25EYXRhOwogY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgVVJMOwogc3RydWN0IFBhc3RlYm9h
cmRJbWFnZTsKIHN0cnVjdCBQYXN0ZWJvYXJkV2ViQ29udGVudDsKIAotI2lmIFBMQVRGT1JNKEdU
SykKLWNsYXNzIERhdGFPYmplY3RHdGs7Ci0jZW5kaWYKLQogY2xhc3MgUGFzdGVib2FyZFN0cmF0
ZWd5IHsKIHB1YmxpYzoKICNpZiBQTEFURk9STShJT1MpCkBAIC03Myw4ICs3MCw4IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIGxvbmcgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9
IDA7CiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspCi0gICAgdmlydHVhbCB2b2lkIHdyaXRlVG9D
bGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgRGF0YU9iamVjdEd0
ayYpID0gMDsKLSAgICB2aXJ0dWFsIFJlZjxEYXRhT2JqZWN0R3RrPiByZWFkRnJvbUNsaXBib2Fy
ZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHdy
aXRlVG9DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU2VsZWN0
aW9uRGF0YSYpID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxTZWxlY3Rpb25EYXRhPiByZWFkRnJvbUNs
aXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAjZW5kaWYgLy8gUExB
VEZPUk0oR1RLKQogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgflBhc3RlYm9hcmRTdHJhdGVneSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCmluZGV4IDA2
NjE2NDkuLjBiYTAyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFz
dGVib2FyZC5oCkBAIC00MywxNSArNDMsMTIgQEAgT0JKQ19DTEFTUyBVSVBhc3RlYm9hcmQ7CiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9yOworY2xhc3MgU2VsZWN0aW9uRGF0YTsK
IGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFVSTDsKIHN0cnVjdCBQYXN0ZWJvYXJkSW1hZ2U7
CiBzdHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRlbnQ7CiAKLSNpZiBQTEFURk9STShHVEspCi1jbGFz
cyBEYXRhT2JqZWN0R3RrOwotI2VuZGlmCi0KIGNsYXNzIFBsYXRmb3JtUGFzdGVib2FyZCB7CiBw
dWJsaWM6CiAgICAgLy8gRklYTUU6IHByb2JhYmx5IHdlIGRvbid0IG5lZWQgYSBjb25zdHJ1Y3Rv
ciB0aGF0IHRha2VzIGEgcGFzdGVib2FyZCBuYW1lIGZvciBpT1MuCkBAIC04Nyw4ICs4NCw4IEBA
IHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQgY291bnQoKTsKIAogI2lmIFBMQVRGT1JN
KEdUSykKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlVG9DbGlwYm9hcmQoY29uc3QgRGF0
YU9iamVjdEd0ayYsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmIHByaW1hcnlTZWxlY3Rpb25DbGVh
cmVkKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWY8RGF0YU9iamVjdEd0az4gcmVhZEZyb21DbGlw
Ym9hcmQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlVG9DbGlwYm9hcmQoY29uc3Qg
U2VsZWN0aW9uRGF0YSYsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmIHByaW1hcnlTZWxlY3Rpb25D
bGVhcmVkKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8U2VsZWN0aW9uRGF0YT4gcmVhZEZyb21D
bGlwYm9hcmQoKTsKICNlbmRpZgogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL0RyYWdEYXRhR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9EcmFnRGF0YUd0ay5jcHAKaW5kZXggNTk4YzQ0NC4uZDk4N2U0MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdEYXRhR3RrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0RhdGFHdGsuY3BwCkBAIC0xNyw3ICsxNyw3IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRHJhZ0RhdGEuaCIKIAotI2luY2x1ZGUgIkRh
dGFPYmplY3RHdGsuaCIKKyNpbmNsdWRlICJTZWxlY3Rpb25EYXRhLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3Rl
Ym9hcmRHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsu
Y3BwCmluZGV4IDA3ZDljYzAuLjViMTRhYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKQEAgLTIwLDExICsyMCwxMSBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIlBhc3RlYm9hcmQuaCIKIAotI2luY2x1ZGUgIkRhdGFPYmplY3RH
dGsuaCIKICNpbmNsdWRlICJEcmFnRGF0YS5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVk
ZSAiUGFzdGVib2FyZFN0cmF0ZWd5LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgi
CisjaW5jbHVkZSAiU2VsZWN0aW9uRGF0YS5oIgogI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCkBAIC01MSwxMyArNTEsMTMgQEAgc3RkOjp1bmlxdWVf
cHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckdsb2JhbFNlbGVjdGlvbigpCiAK
IHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVQcml2YXRlKCkK
IHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPihEYXRhT2JqZWN0R3Rr
OjpjcmVhdGUoKSk7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oU2Vs
ZWN0aW9uRGF0YTo6Y3JlYXRlKCkpOwogfQogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKIHN0
ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJv
cCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oRGF0YU9iamVj
dEd0azo6Y3JlYXRlKCkpOworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+
KFNlbGVjdGlvbkRhdGE6OmNyZWF0ZSgpKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9h
cmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKGNvbnN0IERyYWdEYXRhJiBkcmFn
RGF0YSkKQEAgLTc2LDEzICs3NiwxMyBAQCBQYXN0ZWJvYXJkSW1hZ2U6On5QYXN0ZWJvYXJkSW1h
Z2UoKQogewogfQogCi1QYXN0ZWJvYXJkOjpQYXN0ZWJvYXJkKERhdGFPYmplY3RHdGsmIGRhdGFP
YmplY3QpCi0gICAgOiBtX2RhdGFPYmplY3QoZGF0YU9iamVjdCkKK1Bhc3RlYm9hcmQ6OlBhc3Rl
Ym9hcmQoU2VsZWN0aW9uRGF0YSYgc2VsZWN0aW9uRGF0YSkKKyAgICA6IG1fc2VsZWN0aW9uRGF0
YShzZWxlY3Rpb25EYXRhKQogewogfQogCiBQYXN0ZWJvYXJkOjpQYXN0ZWJvYXJkKGNvbnN0IFN0
cmluZyYgbmFtZSkKLSAgICA6IG1fZGF0YU9iamVjdChEYXRhT2JqZWN0R3RrOjpjcmVhdGUoKSkK
KyAgICA6IG1fc2VsZWN0aW9uRGF0YShTZWxlY3Rpb25EYXRhOjpjcmVhdGUoKSkKICAgICAsIG1f
bmFtZShuYW1lKQogewogfQpAQCAtOTEsMTIgKzkxLDEyIEBAIFBhc3RlYm9hcmQ6On5QYXN0ZWJv
YXJkKCkKIHsKIH0KIAotY29uc3QgRGF0YU9iamVjdEd0ayYgUGFzdGVib2FyZDo6ZGF0YU9iamVj
dCgpIGNvbnN0Citjb25zdCBTZWxlY3Rpb25EYXRhJiBQYXN0ZWJvYXJkOjpzZWxlY3Rpb25EYXRh
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9kYXRhT2JqZWN0LmdldCgpOworICAgIHJldHVybiBt
X3NlbGVjdGlvbkRhdGEuZ2V0KCk7CiB9CiAKLXN0YXRpYyBDbGlwYm9hcmREYXRhVHlwZSBkYXRh
T2JqZWN0VHlwZUZyb21IVE1MQ2xpcGJvYXJkVHlwZShjb25zdCBTdHJpbmcmIHJhd1R5cGUpCitz
dGF0aWMgQ2xpcGJvYXJkRGF0YVR5cGUgc2VsZWN0aW9uRGF0YVR5cGVGcm9tSFRNTENsaXBib2Fy
ZFR5cGUoY29uc3QgU3RyaW5nJiByYXdUeXBlKQogewogICAgIFN0cmluZyB0eXBlKHJhd1R5cGUu
c3RyaXBXaGl0ZVNwYWNlKCkpOwogCkBAIC0xMjQsMzEgKzEyNCwzMSBAQCB2b2lkIFBhc3RlYm9h
cmQ6OndyaXRlVG9DbGlwYm9hcmQoKQogICAgIGlmIChtX25hbWUuaXNOdWxsKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3ko
KS0+d3JpdGVUb0NsaXBib2FyZChtX25hbWUsIG1fZGF0YU9iamVjdCk7CisgICAgcGxhdGZvcm1T
dHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT53cml0ZVRvQ2xpcGJvYXJkKG1fbmFt
ZSwgbV9zZWxlY3Rpb25EYXRhKTsKIH0KIAogdm9pZCBQYXN0ZWJvYXJkOjpyZWFkRnJvbUNsaXBi
b2FyZCgpCiB7CiAgICAgaWYgKG1fbmFtZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwotICAg
IG1fZGF0YU9iamVjdCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3ko
KS0+cmVhZEZyb21DbGlwYm9hcmQobV9uYW1lKTsKKyAgICBtX3NlbGVjdGlvbkRhdGEgPSBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnJlYWRGcm9tQ2xpcGJvYXJk
KG1fbmFtZSk7CiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVTdHJpbmcoY29uc3QgU3RyaW5n
JiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpCiB7Ci0gICAgc3dpdGNoIChkYXRhT2JqZWN0VHlw
ZUZyb21IVE1MQ2xpcGJvYXJkVHlwZSh0eXBlKSkgeworICAgIHN3aXRjaCAoc2VsZWN0aW9uRGF0
YVR5cGVGcm9tSFRNTENsaXBib2FyZFR5cGUodHlwZSkpIHsKICAgICBjYXNlIENsaXBib2FyZERh
dGFUeXBlVVJJTGlzdDoKICAgICBjYXNlIENsaXBib2FyZERhdGFUeXBlVVJMOgotICAgICAgICBt
X2RhdGFPYmplY3QtPnNldFVSSUxpc3QoZGF0YSk7CisgICAgICAgIG1fc2VsZWN0aW9uRGF0YS0+
c2V0VVJJTGlzdChkYXRhKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQ2xpcGJvYXJkRGF0
YVR5cGVNYXJrdXA6Ci0gICAgICAgIG1fZGF0YU9iamVjdC0+c2V0TWFya3VwKGRhdGEpOworICAg
ICAgICBtX3NlbGVjdGlvbkRhdGEtPnNldE1hcmt1cChkYXRhKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIGNhc2UgQ2xpcGJvYXJkRGF0YVR5cGVUZXh0OgotICAgICAgICBtX2RhdGFPYmplY3QtPnNl
dFRleHQoZGF0YSk7CisgICAgICAgIG1fc2VsZWN0aW9uRGF0YS0+c2V0VGV4dChkYXRhKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIGNhc2UgQ2xpcGJvYXJkRGF0YVR5cGVVbmtub3duOgotICAgICAg
ICBtX2RhdGFPYmplY3QtPnNldFVua25vd25UeXBlRGF0YSh0eXBlLCBkYXRhKTsKKyAgICAgICAg
bV9zZWxlY3Rpb25EYXRhLT5zZXRVbmtub3duVHlwZURhdGEodHlwZSwgZGF0YSk7CiAgICAgICAg
IHJldHVybjsKICAgICBjYXNlIENsaXBib2FyZERhdGFUeXBlSW1hZ2U6CiAgICAgICAgIGJyZWFr
OwpAQCAtMTU3LDkgKzE1Nyw5IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVTdHJpbmcoY29uc3Qg
U3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpCiAKIHZvaWQgUGFzdGVib2FyZDo6d3Jp
dGVQbGFpblRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBTbWFydFJlcGxhY2VPcHRpb24gc21hcnRS
ZXBsYWNlT3B0aW9uKQogewotICAgIG1fZGF0YU9iamVjdC0+Y2xlYXJBbGwoKTsKLSAgICBtX2Rh
dGFPYmplY3QtPnNldFRleHQodGV4dCk7Ci0gICAgbV9kYXRhT2JqZWN0LT5zZXRDYW5TbWFydFJl
cGxhY2Uoc21hcnRSZXBsYWNlT3B0aW9uID09IENhblNtYXJ0UmVwbGFjZSk7CisgICAgbV9zZWxl
Y3Rpb25EYXRhLT5jbGVhckFsbCgpOworICAgIG1fc2VsZWN0aW9uRGF0YS0+c2V0VGV4dCh0ZXh0
KTsKKyAgICBtX3NlbGVjdGlvbkRhdGEtPnNldENhblNtYXJ0UmVwbGFjZShzbWFydFJlcGxhY2VP
cHRpb24gPT0gQ2FuU21hcnRSZXBsYWNlKTsKIAogICAgIHdyaXRlVG9DbGlwYm9hcmQoKTsKIH0K
QEAgLTE2OCw1MiArMTY4LDUyIEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVi
b2FyZFVSTCYgcGFzdGVib2FyZFVSTCkKIHsKICAgICBBU1NFUlQoIXBhc3RlYm9hcmRVUkwudXJs
LmlzRW1wdHkoKSk7CiAKLSAgICBtX2RhdGFPYmplY3QtPmNsZWFyQWxsKCk7Ci0gICAgbV9kYXRh
T2JqZWN0LT5zZXRVUkwocGFzdGVib2FyZFVSTC51cmwsIHBhc3RlYm9hcmRVUkwudGl0bGUpOwor
ICAgIG1fc2VsZWN0aW9uRGF0YS0+Y2xlYXJBbGwoKTsKKyAgICBtX3NlbGVjdGlvbkRhdGEtPnNl
dFVSTChwYXN0ZWJvYXJkVVJMLnVybCwgcGFzdGVib2FyZFVSTC50aXRsZSk7CiAKICAgICB3cml0
ZVRvQ2xpcGJvYXJkKCk7CiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVi
b2FyZEltYWdlJiBwYXN0ZWJvYXJkSW1hZ2UpCiB7Ci0gICAgbV9kYXRhT2JqZWN0LT5jbGVhckFs
bCgpOworICAgIG1fc2VsZWN0aW9uRGF0YS0+Y2xlYXJBbGwoKTsKICAgICBpZiAoIXBhc3RlYm9h
cmRJbWFnZS51cmwudXJsLmlzRW1wdHkoKSkgewotICAgICAgICBtX2RhdGFPYmplY3QtPnNldFVS
TChwYXN0ZWJvYXJkSW1hZ2UudXJsLnVybCwgcGFzdGVib2FyZEltYWdlLnVybC50aXRsZSk7Ci0g
ICAgICAgIG1fZGF0YU9iamVjdC0+c2V0TWFya3VwKHBhc3RlYm9hcmRJbWFnZS51cmwubWFya3Vw
KTsKKyAgICAgICAgbV9zZWxlY3Rpb25EYXRhLT5zZXRVUkwocGFzdGVib2FyZEltYWdlLnVybC51
cmwsIHBhc3RlYm9hcmRJbWFnZS51cmwudGl0bGUpOworICAgICAgICBtX3NlbGVjdGlvbkRhdGEt
PnNldE1hcmt1cChwYXN0ZWJvYXJkSW1hZ2UudXJsLm1hcmt1cCk7CiAgICAgfQotICAgIG1fZGF0
YU9iamVjdC0+c2V0SW1hZ2UocGFzdGVib2FyZEltYWdlLmltYWdlLmdldCgpKTsKKyAgICBtX3Nl
bGVjdGlvbkRhdGEtPnNldEltYWdlKHBhc3RlYm9hcmRJbWFnZS5pbWFnZS5nZXQoKSk7CiAKICAg
ICB3cml0ZVRvQ2xpcGJvYXJkKCk7CiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3Qg
UGFzdGVib2FyZFdlYkNvbnRlbnQmIHBhc3RlYm9hcmRDb250ZW50KQogewotICAgIG1fZGF0YU9i
amVjdC0+Y2xlYXJBbGwoKTsKLSAgICBtX2RhdGFPYmplY3QtPnNldFRleHQocGFzdGVib2FyZENv
bnRlbnQudGV4dCk7Ci0gICAgbV9kYXRhT2JqZWN0LT5zZXRNYXJrdXAocGFzdGVib2FyZENvbnRl
bnQubWFya3VwKTsKLSAgICBtX2RhdGFPYmplY3QtPnNldENhblNtYXJ0UmVwbGFjZShwYXN0ZWJv
YXJkQ29udGVudC5jYW5TbWFydENvcHlPckRlbGV0ZSk7CisgICAgbV9zZWxlY3Rpb25EYXRhLT5j
bGVhckFsbCgpOworICAgIG1fc2VsZWN0aW9uRGF0YS0+c2V0VGV4dChwYXN0ZWJvYXJkQ29udGVu
dC50ZXh0KTsKKyAgICBtX3NlbGVjdGlvbkRhdGEtPnNldE1hcmt1cChwYXN0ZWJvYXJkQ29udGVu
dC5tYXJrdXApOworICAgIG1fc2VsZWN0aW9uRGF0YS0+c2V0Q2FuU21hcnRSZXBsYWNlKHBhc3Rl
Ym9hcmRDb250ZW50LmNhblNtYXJ0Q29weU9yRGVsZXRlKTsKIAogICAgIHdyaXRlVG9DbGlwYm9h
cmQoKTsKIH0KIAogdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVBhc3RlYm9hcmQoY29uc3QgUGFzdGVi
b2FyZCYgc291cmNlUGFzdGVib2FyZCkKIHsKLSAgICBjb25zdCBhdXRvJiBzb3VyY2VEYXRhT2Jq
ZWN0ID0gc291cmNlUGFzdGVib2FyZC5kYXRhT2JqZWN0KCk7Ci0gICAgbV9kYXRhT2JqZWN0LT5j
bGVhckFsbCgpOworICAgIGNvbnN0IGF1dG8mIHNvdXJjZURhdGFPYmplY3QgPSBzb3VyY2VQYXN0
ZWJvYXJkLnNlbGVjdGlvbkRhdGEoKTsKKyAgICBtX3NlbGVjdGlvbkRhdGEtPmNsZWFyQWxsKCk7
CiAKICAgICBpZiAoc291cmNlRGF0YU9iamVjdC5oYXNUZXh0KCkpCi0gICAgICAgIG1fZGF0YU9i
amVjdC0+c2V0VGV4dChzb3VyY2VEYXRhT2JqZWN0LnRleHQoKSk7CisgICAgICAgIG1fc2VsZWN0
aW9uRGF0YS0+c2V0VGV4dChzb3VyY2VEYXRhT2JqZWN0LnRleHQoKSk7CiAgICAgaWYgKHNvdXJj
ZURhdGFPYmplY3QuaGFzTWFya3VwKCkpCi0gICAgICAgIG1fZGF0YU9iamVjdC0+c2V0TWFya3Vw
KHNvdXJjZURhdGFPYmplY3QubWFya3VwKCkpOworICAgICAgICBtX3NlbGVjdGlvbkRhdGEtPnNl
dE1hcmt1cChzb3VyY2VEYXRhT2JqZWN0Lm1hcmt1cCgpKTsKICAgICBpZiAoc291cmNlRGF0YU9i
amVjdC5oYXNVUkwoKSkKLSAgICAgICAgbV9kYXRhT2JqZWN0LT5zZXRVUkwoc291cmNlRGF0YU9i
amVjdC51cmwoKSwgc291cmNlRGF0YU9iamVjdC51cmxMYWJlbCgpKTsKKyAgICAgICAgbV9zZWxl
Y3Rpb25EYXRhLT5zZXRVUkwoc291cmNlRGF0YU9iamVjdC51cmwoKSwgc291cmNlRGF0YU9iamVj
dC51cmxMYWJlbCgpKTsKICAgICBpZiAoc291cmNlRGF0YU9iamVjdC5oYXNVUklMaXN0KCkpCi0g
ICAgICAgIG1fZGF0YU9iamVjdC0+c2V0VVJJTGlzdChzb3VyY2VEYXRhT2JqZWN0LnVyaUxpc3Qo
KSk7CisgICAgICAgIG1fc2VsZWN0aW9uRGF0YS0+c2V0VVJJTGlzdChzb3VyY2VEYXRhT2JqZWN0
LnVyaUxpc3QoKSk7CiAgICAgaWYgKHNvdXJjZURhdGFPYmplY3QuaGFzSW1hZ2UoKSkKLSAgICAg
ICAgbV9kYXRhT2JqZWN0LT5zZXRJbWFnZShzb3VyY2VEYXRhT2JqZWN0LmltYWdlKCkpOworICAg
ICAgICBtX3NlbGVjdGlvbkRhdGEtPnNldEltYWdlKHNvdXJjZURhdGFPYmplY3QuaW1hZ2UoKSk7
CiAgICAgaWYgKHNvdXJjZURhdGFPYmplY3QuaGFzVW5rbm93blR5cGVEYXRhKCkpIHsKICAgICAg
ICAgZm9yIChhdXRvJiBpdCA6IHNvdXJjZURhdGFPYmplY3QudW5rbm93blR5cGVzKCkpCi0gICAg
ICAgICAgICBtX2RhdGFPYmplY3QtPnNldFVua25vd25UeXBlRGF0YShpdC5rZXksIGl0LnZhbHVl
KTsKKyAgICAgICAgICAgIG1fc2VsZWN0aW9uRGF0YS0+c2V0VW5rbm93blR5cGVEYXRhKGl0Lmtl
eSwgaXQudmFsdWUpOwogICAgIH0KIAogICAgIHdyaXRlVG9DbGlwYm9hcmQoKTsKQEAgLTIyNSwy
OCArMjI1LDI4IEBAIHZvaWQgUGFzdGVib2FyZDo6Y2xlYXIoKQogICAgIC8vIGRvZXMgbm90IGFm
ZmVjdCB3aGV0aGVyIGFueSBmaWxlcyB3ZXJlIGluY2x1ZGVkIGluIHRoZSBkcmFnLCBzbyB0aGUg
dHlwZXMKICAgICAvLyBhdHRyaWJ1dGUncyBsaXN0IG1pZ2h0IHN0aWxsIG5vdCBiZSBlbXB0eSBh
ZnRlciBjYWxsaW5nIGNsZWFyRGF0YSgpIChpdCB3b3VsZAogICAgIC8vIHN0aWxsIGNvbnRhaW4g
dGhlICJGaWxlcyIgc3RyaW5nIGlmIGFueSBmaWxlcyB3ZXJlIGluY2x1ZGVkIGluIHRoZSBkcmFn
KS4iCi0gICAgbV9kYXRhT2JqZWN0LT5jbGVhckFsbEV4Y2VwdEZpbGVuYW1lcygpOworICAgIG1f
c2VsZWN0aW9uRGF0YS0+Y2xlYXJBbGxFeGNlcHRGaWxlbmFtZXMoKTsKICAgICB3cml0ZVRvQ2xp
cGJvYXJkKCk7CiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6Y2xlYXIoY29uc3QgU3RyaW5nJiB0eXBl
KQogewotICAgIHN3aXRjaCAoZGF0YU9iamVjdFR5cGVGcm9tSFRNTENsaXBib2FyZFR5cGUodHlw
ZSkpIHsKKyAgICBzd2l0Y2ggKHNlbGVjdGlvbkRhdGFUeXBlRnJvbUhUTUxDbGlwYm9hcmRUeXBl
KHR5cGUpKSB7CiAgICAgY2FzZSBDbGlwYm9hcmREYXRhVHlwZVVSSUxpc3Q6CiAgICAgY2FzZSBD
bGlwYm9hcmREYXRhVHlwZVVSTDoKLSAgICAgICAgbV9kYXRhT2JqZWN0LT5jbGVhclVSSUxpc3Qo
KTsKKyAgICAgICAgbV9zZWxlY3Rpb25EYXRhLT5jbGVhclVSSUxpc3QoKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBDbGlwYm9hcmREYXRhVHlwZU1hcmt1cDoKLSAgICAgICAgbV9kYXRhT2Jq
ZWN0LT5jbGVhck1hcmt1cCgpOworICAgICAgICBtX3NlbGVjdGlvbkRhdGEtPmNsZWFyTWFya3Vw
KCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ2xpcGJvYXJkRGF0YVR5cGVUZXh0OgotICAg
ICAgICBtX2RhdGFPYmplY3QtPmNsZWFyVGV4dCgpOworICAgICAgICBtX3NlbGVjdGlvbkRhdGEt
PmNsZWFyVGV4dCgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENsaXBib2FyZERhdGFUeXBl
SW1hZ2U6Ci0gICAgICAgIG1fZGF0YU9iamVjdC0+Y2xlYXJJbWFnZSgpOworICAgICAgICBtX3Nl
bGVjdGlvbkRhdGEtPmNsZWFySW1hZ2UoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDbGlw
Ym9hcmREYXRhVHlwZVVua25vd246Ci0gICAgICAgIG1fZGF0YU9iamVjdC0+Y2xlYXJBbGwoKTsK
KyAgICAgICAgbV9zZWxlY3Rpb25EYXRhLT5jbGVhckFsbCgpOwogICAgICAgICBicmVhazsKICAg
ICB9CiAKQEAgLTI1Niw3ICsyNTYsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OmNsZWFyKGNvbnN0IFN0
cmluZyYgdHlwZSkKIGJvb2wgUGFzdGVib2FyZDo6Y2FuU21hcnRSZXBsYWNlKCkKIHsKICAgICBy
ZWFkRnJvbUNsaXBib2FyZCgpOwotICAgIHJldHVybiBtX2RhdGFPYmplY3QtPmNhblNtYXJ0UmVw
bGFjZSgpOworICAgIHJldHVybiBtX3NlbGVjdGlvbkRhdGEtPmNhblNtYXJ0UmVwbGFjZSgpOwog
fQogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKQEAgLTI2OCwxMyArMjY4LDEzIEBAIHZvaWQg
UGFzdGVib2FyZDo6c2V0RHJhZ0ltYWdlKERyYWdJbWFnZVJlZiwgY29uc3QgSW50UG9pbnQmKQog
dm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQpCiB7CiAgICAg
cmVhZEZyb21DbGlwYm9hcmQoKTsKLSAgICB0ZXh0LnRleHQgPSBtX2RhdGFPYmplY3QtPnRleHQo
KTsKKyAgICB0ZXh0LnRleHQgPSBtX3NlbGVjdGlvbkRhdGEtPnRleHQoKTsKIH0KIAogYm9vbCBQ
YXN0ZWJvYXJkOjpoYXNEYXRhKCkKIHsKICAgICByZWFkRnJvbUNsaXBib2FyZCgpOwotICAgIHJl
dHVybiBtX2RhdGFPYmplY3QtPmhhc1RleHQoKSB8fCBtX2RhdGFPYmplY3QtPmhhc01hcmt1cCgp
IHx8IG1fZGF0YU9iamVjdC0+aGFzVVJJTGlzdCgpIHx8IG1fZGF0YU9iamVjdC0+aGFzSW1hZ2Uo
KSB8fCBtX2RhdGFPYmplY3QtPmhhc1Vua25vd25UeXBlRGF0YSgpOworICAgIHJldHVybiBtX3Nl
bGVjdGlvbkRhdGEtPmhhc1RleHQoKSB8fCBtX3NlbGVjdGlvbkRhdGEtPmhhc01hcmt1cCgpIHx8
IG1fc2VsZWN0aW9uRGF0YS0+aGFzVVJJTGlzdCgpIHx8IG1fc2VsZWN0aW9uRGF0YS0+aGFzSW1h
Z2UoKSB8fCBtX3NlbGVjdGlvbkRhdGEtPmhhc1Vua25vd25UeXBlRGF0YSgpOwogfQogCiBWZWN0
b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjp0eXBlcygpCkBAIC0yODIsMjQgKzI4MiwyNCBAQCBWZWN0
b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjp0eXBlcygpCiAgICAgcmVhZEZyb21DbGlwYm9hcmQoKTsK
IAogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzOwotICAgIGlmIChtX2RhdGFPYmplY3QtPmhhc1Rl
eHQoKSkgeworICAgIGlmIChtX3NlbGVjdGlvbkRhdGEtPmhhc1RleHQoKSkgewogICAgICAgICB0
eXBlcy5hcHBlbmQoQVNDSUlMaXRlcmFsKCJ0ZXh0L3BsYWluIikpOwogICAgICAgICB0eXBlcy5h
cHBlbmQoQVNDSUlMaXRlcmFsKCJUZXh0IikpOwogICAgICAgICB0eXBlcy5hcHBlbmQoQVNDSUlM
aXRlcmFsKCJ0ZXh0IikpOwogICAgIH0KIAotICAgIGlmIChtX2RhdGFPYmplY3QtPmhhc01hcmt1
cCgpKQorICAgIGlmIChtX3NlbGVjdGlvbkRhdGEtPmhhc01hcmt1cCgpKQogICAgICAgICB0eXBl
cy5hcHBlbmQoQVNDSUlMaXRlcmFsKCJ0ZXh0L2h0bWwiKSk7CiAKLSAgICBpZiAobV9kYXRhT2Jq
ZWN0LT5oYXNVUklMaXN0KCkpIHsKKyAgICBpZiAobV9zZWxlY3Rpb25EYXRhLT5oYXNVUklMaXN0
KCkpIHsKICAgICAgICAgdHlwZXMuYXBwZW5kKEFTQ0lJTGl0ZXJhbCgidGV4dC91cmktbGlzdCIp
KTsKICAgICAgICAgdHlwZXMuYXBwZW5kKEFTQ0lJTGl0ZXJhbCgiVVJMIikpOwogICAgIH0KIAot
ICAgIGlmIChtX2RhdGFPYmplY3QtPmhhc0ZpbGVuYW1lcygpKQorICAgIGlmIChtX3NlbGVjdGlv
bkRhdGEtPmhhc0ZpbGVuYW1lcygpKQogICAgICAgICB0eXBlcy5hcHBlbmQoQVNDSUlMaXRlcmFs
KCJGaWxlcyIpKTsKIAotICAgIGZvciAoYXV0byYga2V5IDogbV9kYXRhT2JqZWN0LT51bmtub3du
VHlwZXMoKS5rZXlzKCkpCisgICAgZm9yIChhdXRvJiBrZXkgOiBtX3NlbGVjdGlvbkRhdGEtPnVu
a25vd25UeXBlcygpLmtleXMoKSkKICAgICAgICAgdHlwZXMuYXBwZW5kKGtleSk7CiAKICAgICBy
ZXR1cm4gdHlwZXM7CkBAIC0zMDksMTcgKzMwOSwxNyBAQCBTdHJpbmcgUGFzdGVib2FyZDo6cmVh
ZFN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgcmVhZEZyb21DbGlwYm9hcmQoKTsK
IAotICAgIHN3aXRjaCAoZGF0YU9iamVjdFR5cGVGcm9tSFRNTENsaXBib2FyZFR5cGUodHlwZSkp
IHsKKyAgICBzd2l0Y2ggKHNlbGVjdGlvbkRhdGFUeXBlRnJvbUhUTUxDbGlwYm9hcmRUeXBlKHR5
cGUpKSB7CiAgICAgY2FzZSBDbGlwYm9hcmREYXRhVHlwZVVSSUxpc3Q6Ci0gICAgICAgIHJldHVy
biBtX2RhdGFPYmplY3QtPnVyaUxpc3QoKTsKKyAgICAgICAgcmV0dXJuIG1fc2VsZWN0aW9uRGF0
YS0+dXJpTGlzdCgpOwogICAgIGNhc2UgQ2xpcGJvYXJkRGF0YVR5cGVVUkw6Ci0gICAgICAgIHJl
dHVybiBtX2RhdGFPYmplY3QtPnVybCgpOworICAgICAgICByZXR1cm4gbV9zZWxlY3Rpb25EYXRh
LT51cmwoKTsKICAgICBjYXNlIENsaXBib2FyZERhdGFUeXBlTWFya3VwOgotICAgICAgICByZXR1
cm4gbV9kYXRhT2JqZWN0LT5tYXJrdXAoKTsKKyAgICAgICAgcmV0dXJuIG1fc2VsZWN0aW9uRGF0
YS0+bWFya3VwKCk7CiAgICAgY2FzZSBDbGlwYm9hcmREYXRhVHlwZVRleHQ6Ci0gICAgICAgIHJl
dHVybiBtX2RhdGFPYmplY3QtPnRleHQoKTsKKyAgICAgICAgcmV0dXJuIG1fc2VsZWN0aW9uRGF0
YS0+dGV4dCgpOwogICAgIGNhc2UgQ2xpcGJvYXJkRGF0YVR5cGVVbmtub3duOgotICAgICAgICBy
ZXR1cm4gbV9kYXRhT2JqZWN0LT51bmtub3duVHlwZURhdGEodHlwZSk7CisgICAgICAgIHJldHVy
biBtX3NlbGVjdGlvbkRhdGEtPnVua25vd25UeXBlRGF0YSh0eXBlKTsKICAgICBjYXNlIENsaXBi
b2FyZERhdGFUeXBlSW1hZ2U6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTMzMCw3ICszMzAs
NyBAQCBTdHJpbmcgUGFzdGVib2FyZDo6cmVhZFN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUpCiBW
ZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjpyZWFkRmlsZW5hbWVzKCkKIHsKICAgICByZWFkRnJv
bUNsaXBib2FyZCgpOwotICAgIHJldHVybiBtX2RhdGFPYmplY3QtPmZpbGVuYW1lcygpOworICAg
IHJldHVybiBtX3NlbGVjdGlvbkRhdGEtPmZpbGVuYW1lcygpOwogfQogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5jcHAKaW5kZXggZTY3ZWZi
ZC4uYTU0NTlkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3Rl
Ym9hcmRIZWxwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJv
YXJkSGVscGVyLmNwcApAQCAtMjMsOCArMjMsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIlBhc3RlYm9hcmRIZWxwZXIuaCIKIAotI2luY2x1ZGUgIkRhdGFPYmplY3RHdGsuaCIK
ICNpbmNsdWRlICJHdGtWZXJzaW9uaW5nLmgiCisjaW5jbHVkZSAiU2VsZWN0aW9uRGF0YS5oIgog
I2luY2x1ZGUgPGd0ay9ndGsuaD4KICNpbmNsdWRlIDx3dGYvVGVtcG9yYXJ5Q2hhbmdlLmg+CiAj
aW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgpAQCAtODksNjYgKzg5LDkwIEBAIHN0YXRp
YyBTdHJpbmcgc2VsZWN0aW9uRGF0YVRvVVRGOFN0cmluZyhHdGtTZWxlY3Rpb25EYXRhKiBkYXRh
KQogICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KG1hcmt1cFN0cmluZy5nZXQoKSk7CiB9CiAK
LXZvaWQgUGFzdGVib2FyZEhlbHBlcjo6Z2V0Q2xpcGJvYXJkQ29udGVudHMoR3RrQ2xpcGJvYXJk
KiBjbGlwYm9hcmQsIERhdGFPYmplY3RHdGsmIGRhdGFPYmplY3QpCit2b2lkIFBhc3RlYm9hcmRI
ZWxwZXI6OmdldENsaXBib2FyZENvbnRlbnRzKEd0a0NsaXBib2FyZCogY2xpcGJvYXJkLCBTZWxl
Y3Rpb25EYXRhJiBzZWxlY3Rpb24pCiB7CiAgICAgaWYgKGd0a19jbGlwYm9hcmRfd2FpdF9pc190
ZXh0X2F2YWlsYWJsZShjbGlwYm9hcmQpKSB7CiAgICAgICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHRl
eHREYXRhKGd0a19jbGlwYm9hcmRfd2FpdF9mb3JfdGV4dChjbGlwYm9hcmQpKTsKICAgICAgICAg
aWYgKHRleHREYXRhKQotICAgICAgICAgICAgZGF0YU9iamVjdC5zZXRUZXh0KFN0cmluZzo6ZnJv
bVVURjgodGV4dERhdGEuZ2V0KCkpKTsKKyAgICAgICAgICAgIHNlbGVjdGlvbi5zZXRUZXh0KFN0
cmluZzo6ZnJvbVVURjgodGV4dERhdGEuZ2V0KCkpKTsKICAgICB9CiAKICAgICBpZiAoZ3RrX2Ns
aXBib2FyZF93YWl0X2lzX3RhcmdldF9hdmFpbGFibGUoY2xpcGJvYXJkLCBtYXJrdXBBdG9tKSkg
ewogICAgICAgICBpZiAoR3RrU2VsZWN0aW9uRGF0YSogZGF0YSA9IGd0a19jbGlwYm9hcmRfd2Fp
dF9mb3JfY29udGVudHMoY2xpcGJvYXJkLCBtYXJrdXBBdG9tKSkgewogICAgICAgICAgICAgU3Ry
aW5nIG1hcmt1cChzZWxlY3Rpb25EYXRhVG9VVEY4U3RyaW5nKGRhdGEpKTsKICAgICAgICAgICAg
IHJlbW92ZU1hcmt1cFByZWZpeChtYXJrdXApOwotICAgICAgICAgICAgZGF0YU9iamVjdC5zZXRN
YXJrdXAobWFya3VwKTsKKyAgICAgICAgICAgIHNlbGVjdGlvbi5zZXRNYXJrdXAobWFya3VwKTsK
ICAgICAgICAgICAgIGd0a19zZWxlY3Rpb25fZGF0YV9mcmVlKGRhdGEpOwogICAgICAgICB9CiAg
ICAgfQogCiAgICAgaWYgKGd0a19jbGlwYm9hcmRfd2FpdF9pc190YXJnZXRfYXZhaWxhYmxlKGNs
aXBib2FyZCwgdXJpTGlzdEF0b20pKSB7CiAgICAgICAgIGlmIChHdGtTZWxlY3Rpb25EYXRhKiBk
YXRhID0gZ3RrX2NsaXBib2FyZF93YWl0X2Zvcl9jb250ZW50cyhjbGlwYm9hcmQsIHVyaUxpc3RB
dG9tKSkgewotICAgICAgICAgICAgZGF0YU9iamVjdC5zZXRVUklMaXN0KHNlbGVjdGlvbkRhdGFU
b1VURjhTdHJpbmcoZGF0YSkpOworICAgICAgICAgICAgc2VsZWN0aW9uLnNldFVSSUxpc3Qoc2Vs
ZWN0aW9uRGF0YVRvVVRGOFN0cmluZyhkYXRhKSk7CiAgICAgICAgICAgICBndGtfc2VsZWN0aW9u
X2RhdGFfZnJlZShkYXRhKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGRhdGFPYmplY3Quc2V0
Q2FuU21hcnRSZXBsYWNlKGd0a19jbGlwYm9hcmRfd2FpdF9pc190YXJnZXRfYXZhaWxhYmxlKGNs
aXBib2FyZCwgc21hcnRQYXN0ZUF0b20pKTsKKyAgICBzZWxlY3Rpb24uc2V0Q2FuU21hcnRSZXBs
YWNlKGd0a19jbGlwYm9hcmRfd2FpdF9pc190YXJnZXRfYXZhaWxhYmxlKGNsaXBib2FyZCwgc21h
cnRQYXN0ZUF0b20pKTsKIH0KIAotdm9pZCBQYXN0ZWJvYXJkSGVscGVyOjpmaWxsU2VsZWN0aW9u
RGF0YShHdGtTZWxlY3Rpb25EYXRhKiBzZWxlY3Rpb25EYXRhLCBndWludCBpbmZvLCBjb25zdCBE
YXRhT2JqZWN0R3RrJiBkYXRhT2JqZWN0KQorR1JlZlB0cjxHdGtUYXJnZXRMaXN0PiBQYXN0ZWJv
YXJkSGVscGVyOjp0YXJnZXRMaXN0Rm9yU2VsZWN0aW9uRGF0YShjb25zdCBTZWxlY3Rpb25EYXRh
JiBzZWxlY3Rpb24pCit7CisgICAgR1JlZlB0cjxHdGtUYXJnZXRMaXN0PiBsaXN0ID0gYWRvcHRH
UmVmKGd0a190YXJnZXRfbGlzdF9uZXcobnVsbHB0ciwgMCkpOworCisgICAgaWYgKHNlbGVjdGlv
bi5oYXNUZXh0KCkpCisgICAgICAgIGd0a190YXJnZXRfbGlzdF9hZGRfdGV4dF90YXJnZXRzKGxp
c3QuZ2V0KCksIFRhcmdldFR5cGVUZXh0KTsKKworICAgIGlmIChzZWxlY3Rpb24uaGFzTWFya3Vw
KCkpCisgICAgICAgIGd0a190YXJnZXRfbGlzdF9hZGQobGlzdC5nZXQoKSwgbWFya3VwQXRvbSwg
MCwgVGFyZ2V0VHlwZU1hcmt1cCk7CisKKyAgICBpZiAoc2VsZWN0aW9uLmhhc1VSSUxpc3QoKSkg
eworICAgICAgICBndGtfdGFyZ2V0X2xpc3RfYWRkX3VyaV90YXJnZXRzKGxpc3QuZ2V0KCksIFRh
cmdldFR5cGVVUklMaXN0KTsKKyAgICAgICAgZ3RrX3RhcmdldF9saXN0X2FkZChsaXN0LmdldCgp
LCBuZXRzY2FwZVVSTEF0b20sIDAsIFRhcmdldFR5cGVOZXRzY2FwZVVSTCk7CisgICAgfQorCisg
ICAgaWYgKHNlbGVjdGlvbi5oYXNJbWFnZSgpKQorICAgICAgICBndGtfdGFyZ2V0X2xpc3RfYWRk
X2ltYWdlX3RhcmdldHMobGlzdC5nZXQoKSwgVGFyZ2V0VHlwZUltYWdlLCBUUlVFKTsKKworICAg
IGlmIChzZWxlY3Rpb24uaGFzVW5rbm93blR5cGVEYXRhKCkpCisgICAgICAgIGd0a190YXJnZXRf
bGlzdF9hZGQobGlzdC5nZXQoKSwgdW5rbm93bkF0b20sIDAsIFRhcmdldFR5cGVVbmtub3duKTsK
KworICAgIGlmIChzZWxlY3Rpb24uY2FuU21hcnRSZXBsYWNlKCkpCisgICAgICAgIGd0a190YXJn
ZXRfbGlzdF9hZGQobGlzdC5nZXQoKSwgc21hcnRQYXN0ZUF0b20sIDAsIFRhcmdldFR5cGVTbWFy
dFBhc3RlKTsKKworICAgIHJldHVybiBsaXN0OworfQorCit2b2lkIFBhc3RlYm9hcmRIZWxwZXI6
OmZpbGxTZWxlY3Rpb25EYXRhKGNvbnN0IFNlbGVjdGlvbkRhdGEmIHNlbGVjdGlvbiwgdW5zaWdu
ZWQgaW5mbywgR3RrU2VsZWN0aW9uRGF0YSogc2VsZWN0aW9uRGF0YSkKIHsKICAgICBpZiAoaW5m
byA9PSBUYXJnZXRUeXBlVGV4dCkKLSAgICAgICAgZ3RrX3NlbGVjdGlvbl9kYXRhX3NldF90ZXh0
KHNlbGVjdGlvbkRhdGEsIGRhdGFPYmplY3QudGV4dCgpLnV0ZjgoKS5kYXRhKCksIC0xKTsKKyAg
ICAgICAgZ3RrX3NlbGVjdGlvbl9kYXRhX3NldF90ZXh0KHNlbGVjdGlvbkRhdGEsIHNlbGVjdGlv
bi50ZXh0KCkudXRmOCgpLmRhdGEoKSwgLTEpOwogCiAgICAgZWxzZSBpZiAoaW5mbyA9PSBUYXJn
ZXRUeXBlTWFya3VwKSB7CiAgICAgICAgIC8vIFNvbWUgTGludXggYXBwbGljYXRpb25zIHJlZnVz
ZSB0byBhY2NlcHQgcGFzdGVkIG1hcmt1cCB1bmxlc3MgaXQgaXMKICAgICAgICAgLy8gcHJlZml4
ZWQgYnkgYSBjb250ZW50LXR5cGUgbWV0YSB0YWcuCi0gICAgICAgIENTdHJpbmcgbWFya3VwID0g
U3RyaW5nKGdNYXJrdXBQcmVmaXggKyBkYXRhT2JqZWN0Lm1hcmt1cCgpKS51dGY4KCk7Ci0gICAg
ICAgIGd0a19zZWxlY3Rpb25fZGF0YV9zZXQoc2VsZWN0aW9uRGF0YSwgbWFya3VwQXRvbSwgOCwK
LSAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZ3VjaGFyKj4obWFya3VwLmRhdGEo
KSksIG1hcmt1cC5sZW5ndGgoKSk7CisgICAgICAgIENTdHJpbmcgbWFya3VwID0gU3RyaW5nKGdN
YXJrdXBQcmVmaXggKyBzZWxlY3Rpb24ubWFya3VwKCkpLnV0ZjgoKTsKKyAgICAgICAgZ3RrX3Nl
bGVjdGlvbl9kYXRhX3NldChzZWxlY3Rpb25EYXRhLCBtYXJrdXBBdG9tLCA4LCByZWludGVycHJl
dF9jYXN0PGNvbnN0IGd1Y2hhcio+KG1hcmt1cC5kYXRhKCkpLCBtYXJrdXAubGVuZ3RoKCkpOwog
CiAgICAgfSBlbHNlIGlmIChpbmZvID09IFRhcmdldFR5cGVVUklMaXN0KSB7Ci0gICAgICAgIENT
dHJpbmcgdXJpTGlzdCA9IGRhdGFPYmplY3QudXJpTGlzdCgpLnV0ZjgoKTsKLSAgICAgICAgZ3Rr
X3NlbGVjdGlvbl9kYXRhX3NldChzZWxlY3Rpb25EYXRhLCB1cmlMaXN0QXRvbSwgOCwKLSAgICAg
ICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZ3VjaGFyKj4odXJpTGlzdC5kYXRhKCkpLCB1
cmlMaXN0Lmxlbmd0aCgpKTsKKyAgICAgICAgQ1N0cmluZyB1cmlMaXN0ID0gc2VsZWN0aW9uLnVy
aUxpc3QoKS51dGY4KCk7CisgICAgICAgIGd0a19zZWxlY3Rpb25fZGF0YV9zZXQoc2VsZWN0aW9u
RGF0YSwgdXJpTGlzdEF0b20sIDgsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZ3VjaGFyKj4odXJp
TGlzdC5kYXRhKCkpLCB1cmlMaXN0Lmxlbmd0aCgpKTsKIAotICAgIH0gZWxzZSBpZiAoaW5mbyA9
PSBUYXJnZXRUeXBlTmV0c2NhcGVVUkwgJiYgZGF0YU9iamVjdC5oYXNVUkwoKSkgewotICAgICAg
ICBTdHJpbmcgdXJsKGRhdGFPYmplY3QudXJsKCkpOworICAgIH0gZWxzZSBpZiAoaW5mbyA9PSBU
YXJnZXRUeXBlTmV0c2NhcGVVUkwgJiYgc2VsZWN0aW9uLmhhc1VSTCgpKSB7CisgICAgICAgIFN0
cmluZyB1cmwoc2VsZWN0aW9uLnVybCgpKTsKICAgICAgICAgU3RyaW5nIHJlc3VsdCh1cmwpOwog
ICAgICAgICByZXN1bHQuYXBwZW5kKCJcbiIpOwogCi0gICAgICAgIGlmIChkYXRhT2JqZWN0Lmhh
c1RleHQoKSkKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZGF0YU9iamVjdC50ZXh0KCkpOwor
ICAgICAgICBpZiAoc2VsZWN0aW9uLmhhc1RleHQoKSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQoc2VsZWN0aW9uLnRleHQoKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQodXJsKTsKIAogICAgICAgICBHVW5pcXVlUHRyPGdjaGFyPiByZXN1bHREYXRhKGdfc3Ry
ZHVwKHJlc3VsdC51dGY4KCkuZGF0YSgpKSk7Ci0gICAgICAgIGd0a19zZWxlY3Rpb25fZGF0YV9z
ZXQoc2VsZWN0aW9uRGF0YSwgbmV0c2NhcGVVUkxBdG9tLCA4LAotICAgICAgICAgICAgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBndWNoYXIqPihyZXN1bHREYXRhLmdldCgpKSwgc3RybGVuKHJlc3Vs
dERhdGEuZ2V0KCkpKTsKKyAgICAgICAgZ3RrX3NlbGVjdGlvbl9kYXRhX3NldChzZWxlY3Rpb25E
YXRhLCBuZXRzY2FwZVVSTEF0b20sIDgsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZ3VjaGFyKj4o
cmVzdWx0RGF0YS5nZXQoKSksIHN0cmxlbihyZXN1bHREYXRhLmdldCgpKSk7CiAKLSAgICB9IGVs
c2UgaWYgKGluZm8gPT0gVGFyZ2V0VHlwZUltYWdlICYmIGRhdGFPYmplY3QuaGFzSW1hZ2UoKSkg
ewotICAgICAgICBHUmVmUHRyPEdka1BpeGJ1Zj4gcGl4YnVmID0gYWRvcHRHUmVmKGRhdGFPYmpl
Y3QuaW1hZ2UoKS0+Z2V0R2RrUGl4YnVmKCkpOworICAgIH0gZWxzZSBpZiAoaW5mbyA9PSBUYXJn
ZXRUeXBlSW1hZ2UgJiYgc2VsZWN0aW9uLmhhc0ltYWdlKCkpIHsKKyAgICAgICAgR1JlZlB0cjxH
ZGtQaXhidWY+IHBpeGJ1ZiA9IGFkb3B0R1JlZihzZWxlY3Rpb24uaW1hZ2UoKS0+Z2V0R2RrUGl4
YnVmKCkpOwogICAgICAgICBndGtfc2VsZWN0aW9uX2RhdGFfc2V0X3BpeGJ1ZihzZWxlY3Rpb25E
YXRhLCBwaXhidWYuZ2V0KCkpOwogCiAgICAgfSBlbHNlIGlmIChpbmZvID09IFRhcmdldFR5cGVT
bWFydFBhc3RlKQpAQCAtMTU4LDcgKzE4Miw3IEBAIHZvaWQgUGFzdGVib2FyZEhlbHBlcjo6Zmls
bFNlbGVjdGlvbkRhdGEoR3RrU2VsZWN0aW9uRGF0YSogc2VsZWN0aW9uRGF0YSwgZ3VpbnQKICAg
ICAgICAgR1ZhcmlhbnRCdWlsZGVyIGJ1aWxkZXI7CiAgICAgICAgIGdfdmFyaWFudF9idWlsZGVy
X2luaXQoJmJ1aWxkZXIsIEdfVkFSSUFOVF9UWVBFX0FSUkFZKTsKIAotICAgICAgICBmb3IgKGF1
dG8mIGl0IDogZGF0YU9iamVjdC51bmtub3duVHlwZXMoKSkgeworICAgICAgICBmb3IgKGF1dG8m
IGl0IDogc2VsZWN0aW9uLnVua25vd25UeXBlcygpKSB7CiAgICAgICAgICAgICBHVW5pcXVlUHRy
PGdjaGFyPiBkaWN0SXRlbShnX3N0cmR1cF9wcmludGYoInsnJXMnLCAnJXMnfSIsIGl0LmtleS51
dGY4KCkuZGF0YSgpLCBpdC52YWx1ZS51dGY4KCkuZGF0YSgpKSk7CiAgICAgICAgICAgICBnX3Zh
cmlhbnRfYnVpbGRlcl9hZGRfcGFyc2VkKCZidWlsZGVyLCBkaWN0SXRlbS5nZXQoKSk7CiAgICAg
ICAgIH0KQEAgLTE2OSw0NyArMTkzLDIwIEBAIHZvaWQgUGFzdGVib2FyZEhlbHBlcjo6ZmlsbFNl
bGVjdGlvbkRhdGEoR3RrU2VsZWN0aW9uRGF0YSogc2VsZWN0aW9uRGF0YSwgZ3VpbnQKICAgICB9
CiB9CiAKLUdSZWZQdHI8R3RrVGFyZ2V0TGlzdD4gUGFzdGVib2FyZEhlbHBlcjo6dGFyZ2V0TGlz
dEZvckRhdGFPYmplY3QoY29uc3QgRGF0YU9iamVjdEd0ayYgZGF0YU9iamVjdCkKLXsKLSAgICBH
UmVmUHRyPEd0a1RhcmdldExpc3Q+IGxpc3QgPSBhZG9wdEdSZWYoZ3RrX3RhcmdldF9saXN0X25l
dyhudWxscHRyLCAwKSk7Ci0KLSAgICBpZiAoZGF0YU9iamVjdC5oYXNUZXh0KCkpCi0gICAgICAg
IGd0a190YXJnZXRfbGlzdF9hZGRfdGV4dF90YXJnZXRzKGxpc3QuZ2V0KCksIFRhcmdldFR5cGVU
ZXh0KTsKLQotICAgIGlmIChkYXRhT2JqZWN0Lmhhc01hcmt1cCgpKQotICAgICAgICBndGtfdGFy
Z2V0X2xpc3RfYWRkKGxpc3QuZ2V0KCksIG1hcmt1cEF0b20sIDAsIFRhcmdldFR5cGVNYXJrdXAp
OwotCi0gICAgaWYgKGRhdGFPYmplY3QuaGFzVVJJTGlzdCgpKSB7Ci0gICAgICAgIGd0a190YXJn
ZXRfbGlzdF9hZGRfdXJpX3RhcmdldHMobGlzdC5nZXQoKSwgVGFyZ2V0VHlwZVVSSUxpc3QpOwot
ICAgICAgICBndGtfdGFyZ2V0X2xpc3RfYWRkKGxpc3QuZ2V0KCksIG5ldHNjYXBlVVJMQXRvbSwg
MCwgVGFyZ2V0VHlwZU5ldHNjYXBlVVJMKTsKLSAgICB9Ci0KLSAgICBpZiAoZGF0YU9iamVjdC5o
YXNJbWFnZSgpKQotICAgICAgICBndGtfdGFyZ2V0X2xpc3RfYWRkX2ltYWdlX3RhcmdldHMobGlz
dC5nZXQoKSwgVGFyZ2V0VHlwZUltYWdlLCBUUlVFKTsKLQotICAgIGlmIChkYXRhT2JqZWN0Lmhh
c1Vua25vd25UeXBlRGF0YSgpKQotICAgICAgICBndGtfdGFyZ2V0X2xpc3RfYWRkKGxpc3QuZ2V0
KCksIHVua25vd25BdG9tLCAwLCBUYXJnZXRUeXBlVW5rbm93bik7Ci0KLSAgICBpZiAoZGF0YU9i
amVjdC5jYW5TbWFydFJlcGxhY2UoKSkKLSAgICAgICAgZ3RrX3RhcmdldF9saXN0X2FkZChsaXN0
LmdldCgpLCBzbWFydFBhc3RlQXRvbSwgMCwgVGFyZ2V0VHlwZVNtYXJ0UGFzdGUpOwotCi0gICAg
cmV0dXJuIGxpc3Q7Ci19Ci0KLXZvaWQgUGFzdGVib2FyZEhlbHBlcjo6ZmlsbERhdGFPYmplY3RG
cm9tRHJvcERhdGEoR3RrU2VsZWN0aW9uRGF0YSogZGF0YSwgZ3VpbnQgLyogaW5mbyAqLywgRGF0
YU9iamVjdEd0ayYgZGF0YU9iamVjdCkKK3ZvaWQgUGFzdGVib2FyZEhlbHBlcjo6ZmlsbFNlbGVj
dGlvbkRhdGEoR3RrU2VsZWN0aW9uRGF0YSogZGF0YSwgdW5zaWduZWQgLyogaW5mbyAqLywgU2Vs
ZWN0aW9uRGF0YSYgc2VsZWN0aW9uKQogewogICAgIGlmICghZ3RrX3NlbGVjdGlvbl9kYXRhX2dl
dF9kYXRhKGRhdGEpKQogICAgICAgICByZXR1cm47CiAKICAgICBHZGtBdG9tIHRhcmdldCA9IGd0
a19zZWxlY3Rpb25fZGF0YV9nZXRfdGFyZ2V0KGRhdGEpOwogICAgIGlmICh0YXJnZXQgPT0gdGV4
dFBsYWluQXRvbSkKLSAgICAgICAgZGF0YU9iamVjdC5zZXRUZXh0KHNlbGVjdGlvbkRhdGFUb1VU
RjhTdHJpbmcoZGF0YSkpOworICAgICAgICBzZWxlY3Rpb24uc2V0VGV4dChzZWxlY3Rpb25EYXRh
VG9VVEY4U3RyaW5nKGRhdGEpKTsKICAgICBlbHNlIGlmICh0YXJnZXQgPT0gbWFya3VwQXRvbSkg
ewogICAgICAgICBTdHJpbmcgbWFya3VwKHNlbGVjdGlvbkRhdGFUb1VURjhTdHJpbmcoZGF0YSkp
OwogICAgICAgICByZW1vdmVNYXJrdXBQcmVmaXgobWFya3VwKTsKLSAgICAgICAgZGF0YU9iamVj
dC5zZXRNYXJrdXAobWFya3VwKTsKKyAgICAgICAgc2VsZWN0aW9uLnNldE1hcmt1cChtYXJrdXAp
OwogICAgIH0gZWxzZSBpZiAodGFyZ2V0ID09IHVyaUxpc3RBdG9tKSB7Ci0gICAgICAgIGRhdGFP
YmplY3Quc2V0VVJJTGlzdChzZWxlY3Rpb25EYXRhVG9VVEY4U3RyaW5nKGRhdGEpKTsKKyAgICAg
ICAgc2VsZWN0aW9uLnNldFVSSUxpc3Qoc2VsZWN0aW9uRGF0YVRvVVRGOFN0cmluZyhkYXRhKSk7
CiAgICAgfSBlbHNlIGlmICh0YXJnZXQgPT0gbmV0c2NhcGVVUkxBdG9tKSB7CiAgICAgICAgIFN0
cmluZyB1cmxXaXRoTGFiZWwoc2VsZWN0aW9uRGF0YVRvVVRGOFN0cmluZyhkYXRhKSk7CiAgICAg
ICAgIFZlY3RvcjxTdHJpbmc+IHBpZWNlczsKQEAgLTIxNywxMCArMjE0LDEwIEBAIHZvaWQgUGFz
dGVib2FyZEhlbHBlcjo6ZmlsbERhdGFPYmplY3RGcm9tRHJvcERhdGEoR3RrU2VsZWN0aW9uRGF0
YSogZGF0YSwgZ3VpbnQKIAogICAgICAgICAvLyBHaXZlIHByZWZlcmVuY2UgdG8gdGV4dC91cmkt
bGlzdCBoZXJlLCBhcyBpdCBjYW4gaG9sZCBtb3JlCiAgICAgICAgIC8vIHRoYW4gb25lIFVSSSBi
dXQgc3RpbGwgdGFrZSAgdGhlIGxhYmVsIGlmIHRoZXJlIGlzIG9uZS4KLSAgICAgICAgaWYgKCFk
YXRhT2JqZWN0Lmhhc1VSSUxpc3QoKSkKLSAgICAgICAgICAgIGRhdGFPYmplY3Quc2V0VVJJTGlz
dChwaWVjZXNbMF0pOworICAgICAgICBpZiAoIXNlbGVjdGlvbi5oYXNVUklMaXN0KCkpCisgICAg
ICAgICAgICBzZWxlY3Rpb24uc2V0VVJJTGlzdChwaWVjZXNbMF0pOwogICAgICAgICBpZiAocGll
Y2VzLnNpemUoKSA+IDEpCi0gICAgICAgICAgICBkYXRhT2JqZWN0LnNldFRleHQocGllY2VzWzFd
KTsKKyAgICAgICAgICAgIHNlbGVjdGlvbi5zZXRUZXh0KHBpZWNlc1sxXSk7CiAgICAgfSBlbHNl
IGlmICh0YXJnZXQgPT0gdW5rbm93bkF0b20pIHsKICAgICAgICAgR1JlZlB0cjxHVmFyaWFudD4g
dmFyaWFudCA9IGdfdmFyaWFudF9uZXdfcGFyc2VkKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
cio+KGd0a19zZWxlY3Rpb25fZGF0YV9nZXRfZGF0YShkYXRhKSkpOwogCkBAIC0yMzAsNyArMjI3
LDcgQEAgdm9pZCBQYXN0ZWJvYXJkSGVscGVyOjpmaWxsRGF0YU9iamVjdEZyb21Ecm9wRGF0YShH
dGtTZWxlY3Rpb25EYXRhKiBkYXRhLCBndWludAogCiAgICAgICAgIGdfdmFyaWFudF9pdGVyX2lu
aXQoJml0ZXIsIHZhcmlhbnQuZ2V0KCkpOwogICAgICAgICB3aGlsZSAoZ192YXJpYW50X2l0ZXJf
bmV4dCgmaXRlciwgIntzc30iLCAma2V5Lm91dFB0cigpLCAmdmFsdWUub3V0UHRyKCkpKQotICAg
ICAgICAgICAgZGF0YU9iamVjdC5zZXRVbmtub3duVHlwZURhdGEoa2V5LmdldCgpLCB2YWx1ZS5n
ZXQoKSk7CisgICAgICAgICAgICBzZWxlY3Rpb24uc2V0VW5rbm93blR5cGVEYXRhKGtleS5nZXQo
KSwgdmFsdWUuZ2V0KCkpOwogICAgIH0KIH0KIApAQCAtMjU0LDExICsyNTEsMTEgQEAgVmVjdG9y
PEdka0F0b20+IFBhc3RlYm9hcmRIZWxwZXI6OmRyb3BBdG9tc0ZvckNvbnRleHQoR3RrV2lkZ2V0
KiB3aWRnZXQsIEdka0RyYWcKICAgICByZXR1cm4gZHJvcEF0b21zOwogfQogCi1zdGF0aWMgRGF0
YU9iamVjdEd0ayogc2V0dGluZ0NsaXBib2FyZERhdGFPYmplY3QgPSAwOworc3RhdGljIFNlbGVj
dGlvbkRhdGEqIHNldHRpbmdDbGlwYm9hcmRTZWxlY3Rpb247CiAKIHN0cnVjdCBDbGlwYm9hcmRT
ZXREYXRhIHsKLSAgICBDbGlwYm9hcmRTZXREYXRhKERhdGFPYmplY3RHdGsmIGRhdGFPYmplY3Qs
IHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmIHNlbGVjdGlvbkNsZWFyZWRDYWxsYmFjaykKLSAgICAg
ICAgOiBkYXRhT2JqZWN0KGRhdGFPYmplY3QpCisgICAgQ2xpcGJvYXJkU2V0RGF0YShTZWxlY3Rp
b25EYXRhJiBzZWxlY3Rpb24sIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmIHNlbGVjdGlvbkNsZWFy
ZWRDYWxsYmFjaykKKyAgICAgICAgOiBzZWxlY3Rpb25EYXRhKHNlbGVjdGlvbikKICAgICAgICAg
LCBzZWxlY3Rpb25DbGVhcmVkQ2FsbGJhY2soV1RGTW92ZShzZWxlY3Rpb25DbGVhcmVkQ2FsbGJh
Y2spKQogICAgIHsKICAgICB9CkBAIC0yNjcsMTQgKzI2NCwxNCBAQCBzdHJ1Y3QgQ2xpcGJvYXJk
U2V0RGF0YSB7CiAgICAgewogICAgIH0KIAotICAgIFJlZjxEYXRhT2JqZWN0R3RrPiBkYXRhT2Jq
ZWN0OworICAgIFJlZjxTZWxlY3Rpb25EYXRhPiBzZWxlY3Rpb25EYXRhOwogICAgIHN0ZDo6ZnVu
Y3Rpb248dm9pZCgpPiBzZWxlY3Rpb25DbGVhcmVkQ2FsbGJhY2s7CiB9OwogCiBzdGF0aWMgdm9p
ZCBnZXRDbGlwYm9hcmRDb250ZW50c0NhbGxiYWNrKEd0a0NsaXBib2FyZCosIEd0a1NlbGVjdGlv
bkRhdGEgKnNlbGVjdGlvbkRhdGEsIGd1aW50IGluZm8sIGdwb2ludGVyIHVzZXJEYXRhKQogewog
ICAgIGF1dG8qIGRhdGEgPSBzdGF0aWNfY2FzdDxDbGlwYm9hcmRTZXREYXRhKj4odXNlckRhdGEp
OwotICAgIFBhc3RlYm9hcmRIZWxwZXI6OnNpbmdsZXRvbigpLmZpbGxTZWxlY3Rpb25EYXRhKHNl
bGVjdGlvbkRhdGEsIGluZm8sIGRhdGEtPmRhdGFPYmplY3QpOworICAgIFBhc3RlYm9hcmRIZWxw
ZXI6OnNpbmdsZXRvbigpLmZpbGxTZWxlY3Rpb25EYXRhKGRhdGEtPnNlbGVjdGlvbkRhdGEsIGlu
Zm8sIHNlbGVjdGlvbkRhdGEpOwogfQogCiBzdGF0aWMgdm9pZCBjbGVhckNsaXBib2FyZENvbnRl
bnRzQ2FsbGJhY2soR3RrQ2xpcGJvYXJkKiwgZ3BvaW50ZXIgdXNlckRhdGEpCkBAIC0yODQsMTYg
KzI4MSwxNiBAQCBzdGF0aWMgdm9pZCBjbGVhckNsaXBib2FyZENvbnRlbnRzQ2FsbGJhY2soR3Rr
Q2xpcGJvYXJkKiwgZ3BvaW50ZXIgdXNlckRhdGEpCiAgICAgICAgIGRhdGEtPnNlbGVjdGlvbkNs
ZWFyZWRDYWxsYmFjaygpOwogfQogCi12b2lkIFBhc3RlYm9hcmRIZWxwZXI6OndyaXRlQ2xpcGJv
YXJkQ29udGVudHMoR3RrQ2xpcGJvYXJkKiBjbGlwYm9hcmQsIGNvbnN0IERhdGFPYmplY3RHdGsm
IGRhdGFPYmplY3QsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmIHByaW1hcnlTZWxlY3Rpb25DbGVh
cmVkKQordm9pZCBQYXN0ZWJvYXJkSGVscGVyOjp3cml0ZUNsaXBib2FyZENvbnRlbnRzKEd0a0Ns
aXBib2FyZCogY2xpcGJvYXJkLCBjb25zdCBTZWxlY3Rpb25EYXRhJiBzZWxlY3Rpb24sIHN0ZDo6
ZnVuY3Rpb248dm9pZCgpPiYmIHByaW1hcnlTZWxlY3Rpb25DbGVhcmVkKQogewotICAgIEdSZWZQ
dHI8R3RrVGFyZ2V0TGlzdD4gbGlzdCA9IHRhcmdldExpc3RGb3JEYXRhT2JqZWN0KGRhdGFPYmpl
Y3QpOworICAgIEdSZWZQdHI8R3RrVGFyZ2V0TGlzdD4gbGlzdCA9IHRhcmdldExpc3RGb3JTZWxl
Y3Rpb25EYXRhKHNlbGVjdGlvbik7CiAKICAgICBpbnQgbnVtYmVyT2ZUYXJnZXRzOwogICAgIEd0
a1RhcmdldEVudHJ5KiB0YWJsZSA9IGd0a190YXJnZXRfdGFibGVfbmV3X2Zyb21fbGlzdChsaXN0
LmdldCgpLCAmbnVtYmVyT2ZUYXJnZXRzKTsKIAogICAgIGlmIChudW1iZXJPZlRhcmdldHMgPiAw
ICYmIHRhYmxlKSB7Ci0gICAgICAgIFRlbXBvcmFyeUNoYW5nZTxEYXRhT2JqZWN0R3RrKj4gY2hh
bmdlKHNldHRpbmdDbGlwYm9hcmREYXRhT2JqZWN0LCBjb25zdF9jYXN0PERhdGFPYmplY3RHdGsq
PigmZGF0YU9iamVjdCkpOwotICAgICAgICBhdXRvIGRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPENs
aXBib2FyZFNldERhdGE+KCpzZXR0aW5nQ2xpcGJvYXJkRGF0YU9iamVjdCwgV1RGTW92ZShwcmlt
YXJ5U2VsZWN0aW9uQ2xlYXJlZCkpOworICAgICAgICBUZW1wb3JhcnlDaGFuZ2U8U2VsZWN0aW9u
RGF0YSo+IGNoYW5nZShzZXR0aW5nQ2xpcGJvYXJkU2VsZWN0aW9uLCBjb25zdF9jYXN0PFNlbGVj
dGlvbkRhdGEqPigmc2VsZWN0aW9uKSk7CisgICAgICAgIGF1dG8gZGF0YSA9IHN0ZDo6bWFrZV91
bmlxdWU8Q2xpcGJvYXJkU2V0RGF0YT4oKnNldHRpbmdDbGlwYm9hcmRTZWxlY3Rpb24sIFdURk1v
dmUocHJpbWFyeVNlbGVjdGlvbkNsZWFyZWQpKTsKICAgICAgICAgaWYgKGd0a19jbGlwYm9hcmRf
c2V0X3dpdGhfZGF0YShjbGlwYm9hcmQsIHRhYmxlLCBudW1iZXJPZlRhcmdldHMsIGdldENsaXBi
b2FyZENvbnRlbnRzQ2FsbGJhY2ssIGNsZWFyQ2xpcGJvYXJkQ29udGVudHNDYWxsYmFjaywgZGF0
YS5nZXQoKSkpIHsKICAgICAgICAgICAgIGd0a19jbGlwYm9hcmRfc2V0X2Nhbl9zdG9yZShjbGlw
Ym9hcmQsIG51bGxwdHIsIDApOwogICAgICAgICAgICAgLy8gV2hlbiBndGtfY2xpcGJvYXJkX3Nl
dF93aXRoX2RhdGEoKSBzdWNjZWVkcyBjbGVhckNsaXBib2FyZENvbnRlbnRzQ2FsbGJhY2sgdGFr
ZXMgdGhlIG93bmVyc2hpcCBvZiBkYXRhLCBzbyB3ZSBsZWFrIGl0IGhlcmUuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuaAppbmRleCAzZjNjOGRhLi40
YTRkZTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2Fy
ZEhlbHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVs
cGVyLmgKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBE
YXRhT2JqZWN0R3RrOworY2xhc3MgU2VsZWN0aW9uRGF0YTsKIAogY2xhc3MgUGFzdGVib2FyZEhl
bHBlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGFzdGVib2FyZEhlbHBlcik7CkBAIC00
MywxMiArNDMsMTIgQEAgcHVibGljOgogICAgIGVudW0gU21hcnRQYXN0ZUluY2x1c2lvbiB7IElu
Y2x1ZGVTbWFydFBhc3RlLCBEb05vdEluY2x1ZGVTbWFydFBhc3RlIH07CiAKICAgICBHdGtUYXJn
ZXRMaXN0KiB0YXJnZXRMaXN0KCkgY29uc3Q7Ci0gICAgR1JlZlB0cjxHdGtUYXJnZXRMaXN0PiB0
YXJnZXRMaXN0Rm9yRGF0YU9iamVjdChjb25zdCBEYXRhT2JqZWN0R3RrJik7Ci0gICAgdm9pZCBm
aWxsU2VsZWN0aW9uRGF0YShHdGtTZWxlY3Rpb25EYXRhKiwgZ3VpbnQsIGNvbnN0IERhdGFPYmpl
Y3RHdGsmKTsKLSAgICB2b2lkIGZpbGxEYXRhT2JqZWN0RnJvbURyb3BEYXRhKEd0a1NlbGVjdGlv
bkRhdGEqLCBndWludCwgRGF0YU9iamVjdEd0ayYpOworICAgIEdSZWZQdHI8R3RrVGFyZ2V0TGlz
dD4gdGFyZ2V0TGlzdEZvclNlbGVjdGlvbkRhdGEoY29uc3QgU2VsZWN0aW9uRGF0YSYpOworICAg
IHZvaWQgZmlsbFNlbGVjdGlvbkRhdGEoY29uc3QgU2VsZWN0aW9uRGF0YSYsIHVuc2lnbmVkLCBH
dGtTZWxlY3Rpb25EYXRhKik7CisgICAgdm9pZCBmaWxsU2VsZWN0aW9uRGF0YShHdGtTZWxlY3Rp
b25EYXRhKiwgdW5zaWduZWQsIFNlbGVjdGlvbkRhdGEmKTsKICAgICBWZWN0b3I8R2RrQXRvbT4g
ZHJvcEF0b21zRm9yQ29udGV4dChHdGtXaWRnZXQqLCBHZGtEcmFnQ29udGV4dCopOwotICAgIHZv
aWQgd3JpdGVDbGlwYm9hcmRDb250ZW50cyhHdGtDbGlwYm9hcmQqLCBjb25zdCBEYXRhT2JqZWN0
R3RrJiwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+JiYgcHJpbWFyeVNlbGVjdGlvbkNsZWFyZWQgPSBu
dWxscHRyKTsKLSAgICB2b2lkIGdldENsaXBib2FyZENvbnRlbnRzKEd0a0NsaXBib2FyZCosIERh
dGFPYmplY3RHdGsmKTsKKyAgICB2b2lkIHdyaXRlQ2xpcGJvYXJkQ29udGVudHMoR3RrQ2xpcGJv
YXJkKiwgY29uc3QgU2VsZWN0aW9uRGF0YSYsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmIHByaW1h
cnlTZWxlY3Rpb25DbGVhcmVkID0gbnVsbHB0cik7CisgICAgdm9pZCBnZXRDbGlwYm9hcmRDb250
ZW50cyhHdGtDbGlwYm9hcmQqLCBTZWxlY3Rpb25EYXRhJik7CiAKICAgICBlbnVtIFBhc3RlYm9h
cmRUYXJnZXRUeXBlIHsgVGFyZ2V0VHlwZU1hcmt1cCwgVGFyZ2V0VHlwZVRleHQsIFRhcmdldFR5
cGVJbWFnZSwgVGFyZ2V0VHlwZVVSSUxpc3QsIFRhcmdldFR5cGVOZXRzY2FwZVVSTCwgVGFyZ2V0
VHlwZVNtYXJ0UGFzdGUsIFRhcmdldFR5cGVVbmtub3duIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVBhc3RlYm9hcmRHdGsuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtUGFzdGVib2FyZEd0ay5jcHAKaW5kZXggMTQ5
MDk2Yy4uODQ4MWNiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bs
YXRmb3JtUGFzdGVib2FyZEd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L1BsYXRmb3JtUGFzdGVib2FyZEd0ay5jcHAKQEAgLTIwLDggKzIwLDggQEAKICNpbmNsdWRlICJQ
bGF0Zm9ybVBhc3RlYm9hcmQuaCIKIAogI2luY2x1ZGUgIkNvbG9yLmgiCi0jaW5jbHVkZSAiRGF0
YU9iamVjdEd0ay5oIgogI2luY2x1ZGUgIlBhc3RlYm9hcmRIZWxwZXIuaCIKKyNpbmNsdWRlICJT
ZWxlY3Rpb25EYXRhLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiVVJM
LmgiCiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgpAQCAtMzQsMTYgKzM0LDE2IEBAIFBsYXRmb3JtUGFz
dGVib2FyZDo6UGxhdGZvcm1QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
CiAgICAgQVNTRVJUKG1fY2xpcGJvYXJkKTsKIH0KIAotdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6
OndyaXRlVG9DbGlwYm9hcmQoY29uc3QgRGF0YU9iamVjdEd0ayYgZGF0YU9iamVjdCwgc3RkOjpm
dW5jdGlvbjx2b2lkKCk+JiYgcHJpbWFyeVNlbGVjdGlvbkNsZWFyZWQpCit2b2lkIFBsYXRmb3Jt
UGFzdGVib2FyZDo6d3JpdGVUb0NsaXBib2FyZChjb25zdCBTZWxlY3Rpb25EYXRhJiBzZWxlY3Rp
b24sIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmIHByaW1hcnlTZWxlY3Rpb25DbGVhcmVkKQogewot
ICAgIFBhc3RlYm9hcmRIZWxwZXI6OnNpbmdsZXRvbigpLndyaXRlQ2xpcGJvYXJkQ29udGVudHMo
bV9jbGlwYm9hcmQsIGRhdGFPYmplY3QsIGd0a19jbGlwYm9hcmRfZ2V0KEdES19TRUxFQ1RJT05f
UFJJTUFSWSkgPT0gbV9jbGlwYm9hcmQgPyBXVEZNb3ZlKHByaW1hcnlTZWxlY3Rpb25DbGVhcmVk
KSA6IG51bGxwdHIpOworICAgIFBhc3RlYm9hcmRIZWxwZXI6OnNpbmdsZXRvbigpLndyaXRlQ2xp
cGJvYXJkQ29udGVudHMobV9jbGlwYm9hcmQsIHNlbGVjdGlvbiwgZ3RrX2NsaXBib2FyZF9nZXQo
R0RLX1NFTEVDVElPTl9QUklNQVJZKSA9PSBtX2NsaXBib2FyZCA/IFdURk1vdmUocHJpbWFyeVNl
bGVjdGlvbkNsZWFyZWQpIDogbnVsbHB0cik7CiB9CiAKLVJlZjxEYXRhT2JqZWN0R3RrPiBQbGF0
Zm9ybVBhc3RlYm9hcmQ6OnJlYWRGcm9tQ2xpcGJvYXJkKCkKK1JlZjxTZWxlY3Rpb25EYXRhPiBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRGcm9tQ2xpcGJvYXJkKCkKIHsKLSAgICBSZWY8RGF0YU9i
amVjdEd0az4gZGF0YU9iamVjdChEYXRhT2JqZWN0R3RrOjpjcmVhdGUoKSk7Ci0gICAgUGFzdGVi
b2FyZEhlbHBlcjo6c2luZ2xldG9uKCkuZ2V0Q2xpcGJvYXJkQ29udGVudHMobV9jbGlwYm9hcmQs
IGRhdGFPYmplY3QuZ2V0KCkpOwotICAgIHJldHVybiBkYXRhT2JqZWN0OworICAgIFJlZjxTZWxl
Y3Rpb25EYXRhPiBzZWxlY3Rpb24oU2VsZWN0aW9uRGF0YTo6Y3JlYXRlKCkpOworICAgIFBhc3Rl
Ym9hcmRIZWxwZXI6OnNpbmdsZXRvbigpLmdldENsaXBib2FyZENvbnRlbnRzKG1fY2xpcGJvYXJk
LCBzZWxlY3Rpb24uZ2V0KCkpOworICAgIHJldHVybiBzZWxlY3Rpb247CiB9CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EYXRhT2JqZWN0R3RrLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmNwcApzaW1pbGFyaXR5IGlu
ZGV4IDgwJQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRGF0YU9iamVj
dEd0ay5jcHAKcmVuYW1lIHRvIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25E
YXRhLmNwcAppbmRleCA3YTVlZjY5Li4xZTI3OTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvRGF0YU9iamVjdEd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuY3BwCkBAIC0xNyw5ICsxNyw4IEBACiAgKi8KIAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRhdGFPYmplY3RHdGsuaCIKKyNpbmNsdWRlICJT
ZWxlY3Rpb25EYXRhLmgiCiAKLSNpbmNsdWRlIDxndGsvZ3RrLmg+CiAjaW5jbHVkZSA8d3RmL2ds
aWIvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CkBAIC0zMywyMyArMzIsMTMgQEAgc3RhdGljIHZv
aWQgcmVwbGFjZU5vbkJyZWFraW5nU3BhY2VXaXRoU3BhY2UoU3RyaW5nJiBzdHIpCiAgICAgc3Ry
LnJlcGxhY2UoTm9uQnJlYWtpbmdTcGFjZUNoYXJhY3RlciwgU3BhY2VDaGFyYWN0ZXIpOwogfQog
Ci1jb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgRGF0YU9iamVjdEd0azo6dW5rbm93blR5
cGVzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV91bmtub3duVHlwZURhdGE7Ci19Ci0KLXZvaWQg
RGF0YU9iamVjdEd0azo6c2V0VGV4dChjb25zdCBTdHJpbmcmIG5ld1RleHQpCit2b2lkIFNlbGVj
dGlvbkRhdGE6OnNldFRleHQoY29uc3QgU3RyaW5nJiBuZXdUZXh0KQogewogICAgIG1fdGV4dCA9
IG5ld1RleHQ7CiAgICAgcmVwbGFjZU5vbkJyZWFraW5nU3BhY2VXaXRoU3BhY2UobV90ZXh0KTsK
IH0KIAotdm9pZCBEYXRhT2JqZWN0R3RrOjpzZXRNYXJrdXAoY29uc3QgU3RyaW5nJiBuZXdNYXJr
dXApCi17Ci0gICAgbV9tYXJrdXAgPSBuZXdNYXJrdXA7Ci19Ci0KLXZvaWQgRGF0YU9iamVjdEd0
azo6c2V0VVJJTGlzdChjb25zdCBTdHJpbmcmIHVyaUxpc3RTdHJpbmcpCit2b2lkIFNlbGVjdGlv
bkRhdGE6OnNldFVSSUxpc3QoY29uc3QgU3RyaW5nJiB1cmlMaXN0U3RyaW5nKQogewogICAgIG1f
dXJpTGlzdCA9IHVyaUxpc3RTdHJpbmc7CiAKQEAgLTkwLDcgKzc5LDcgQEAgdm9pZCBEYXRhT2Jq
ZWN0R3RrOjpzZXRVUklMaXN0KGNvbnN0IFN0cmluZyYgdXJpTGlzdFN0cmluZykKICAgICB9CiB9
CiAKLXZvaWQgRGF0YU9iamVjdEd0azo6c2V0VVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIGxhYmVsKQordm9pZCBTZWxlY3Rpb25EYXRhOjpzZXRVUkwoY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgbGFiZWwpCiB7CiAgICAgbV91cmwgPSB1cmw7CiAgICAgbV91cmlMaXN0ID0g
dXJsOwpAQCAtMTEwLDE3ICs5OSw3IEBAIHZvaWQgRGF0YU9iamVjdEd0azo6c2V0VVJMKGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGxhYmVsKQogICAgIHNldE1hcmt1cChtYXJrdXAudG9T
dHJpbmcoKSk7CiB9CiAKLXZvaWQgRGF0YU9iamVjdEd0azo6Y2xlYXJUZXh0KCkKLXsKLSAgICBt
X3RleHQgPSBlbXB0eVN0cmluZygpOwotfQotCi12b2lkIERhdGFPYmplY3RHdGs6OmNsZWFyTWFy
a3VwKCkKLXsKLSAgICBtX21hcmt1cCA9IGVtcHR5U3RyaW5nKCk7Ci19Ci0KLVN0cmluZyBEYXRh
T2JqZWN0R3RrOjp1cmxMYWJlbCgpIGNvbnN0Citjb25zdCBTdHJpbmcmIFNlbGVjdGlvbkRhdGE6
OnVybExhYmVsKCkgY29uc3QKIHsKICAgICBpZiAoaGFzVGV4dCgpKQogICAgICAgICByZXR1cm4g
dGV4dCgpOwpAQCAtMTI4LDI0ICsxMDcsMjUgQEAgU3RyaW5nIERhdGFPYmplY3RHdGs6OnVybExh
YmVsKCkgY29uc3QKICAgICBpZiAoaGFzVVJMKCkpCiAgICAgICAgIHJldHVybiB1cmwoKTsKIAot
ICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KIAotdm9p
ZCBEYXRhT2JqZWN0R3RrOjpjbGVhckFsbEV4Y2VwdEZpbGVuYW1lcygpCit2b2lkIFNlbGVjdGlv
bkRhdGE6OmNsZWFyQWxsRXhjZXB0RmlsZW5hbWVzKCkKIHsKLSAgICBtX3RleHQgPSBlbXB0eVN0
cmluZygpOwotICAgIG1fbWFya3VwID0gZW1wdHlTdHJpbmcoKTsKLSAgICBtX3VyaUxpc3QgPSBl
bXB0eVN0cmluZygpOwotICAgIG1fdXJsID0gVVJMKCk7Ci0gICAgbV9pbWFnZSA9IG51bGxwdHI7
CisgICAgY2xlYXJUZXh0KCk7CisgICAgY2xlYXJNYXJrdXAoKTsKKyAgICBjbGVhclVSSUxpc3Qo
KTsKKyAgICBjbGVhclVSTCgpOworICAgIGNsZWFySW1hZ2UoKTsKKwogICAgIG1fdW5rbm93blR5
cGVEYXRhLmNsZWFyKCk7CiAgICAgbV9jYW5TbWFydFJlcGxhY2UgPSBmYWxzZTsKIH0KIAotdm9p
ZCBEYXRhT2JqZWN0R3RrOjpjbGVhckFsbCgpCit2b2lkIFNlbGVjdGlvbkRhdGE6OmNsZWFyQWxs
KCkKIHsKICAgICBjbGVhckFsbEV4Y2VwdEZpbGVuYW1lcygpOwogICAgIG1fZmlsZW5hbWVzLmNs
ZWFyKCk7CiB9CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EYXRhT2JqZWN0R3RrLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oCnNpbWlsYXJpdHkgaW5kZXggODElCnJlbmFtZSBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EYXRhT2JqZWN0R3RrLmgKcmVuYW1lIHRv
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmgKaW5kZXggMTdlOGQ3
MC4uZGE1MWRhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RhdGFP
YmplY3RHdGsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0
YS5oCkBAIC0yNiw0NiArMjYsNTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBE
YXRhT2JqZWN0R3RrIDogcHVibGljIFJlZkNvdW50ZWQ8RGF0YU9iamVjdEd0az4geworY2xhc3Mg
U2VsZWN0aW9uRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPFNlbGVjdGlvbkRhdGE+IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPERhdGFPYmpl
Y3RHdGs+IGNyZWF0ZSgpCisgICAgc3RhdGljIFJlZjxTZWxlY3Rpb25EYXRhPiBjcmVhdGUoKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YU9iamVjdEd0ayk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlbGVjdGlvbkRhdGEpOwogICAgIH0KIAorICAgIHZv
aWQgc2V0VGV4dChjb25zdCBTdHJpbmcmKTsKKyAgICBjb25zdCBTdHJpbmcmIHRleHQoKSBjb25z
dCB7IHJldHVybiBtX3RleHQ7IH0KKyAgICBib29sIGhhc1RleHQoKSBjb25zdCB7IHJldHVybiAh
bV90ZXh0LmlzRW1wdHkoKTsgfQorICAgIHZvaWQgY2xlYXJUZXh0KCkgeyBtX3RleHQgPSBlbXB0
eVN0cmluZygpOyB9CisKKyAgICB2b2lkIHNldE1hcmt1cChjb25zdCBTdHJpbmcmIG5ld01hcmt1
cCkgeyBtX21hcmt1cCA9IG5ld01hcmt1cDsgfQorICAgIGNvbnN0IFN0cmluZyYgbWFya3VwKCkg
Y29uc3QgeyByZXR1cm4gbV9tYXJrdXA7IH0KKyAgICBib29sIGhhc01hcmt1cCgpIGNvbnN0IHsg
cmV0dXJuICFtX21hcmt1cC5pc0VtcHR5KCk7IH0KKyAgICB2b2lkIGNsZWFyTWFya3VwKCkgeyBt
X21hcmt1cCA9IGVtcHR5U3RyaW5nKCk7IH0KKworICAgIHZvaWQgc2V0VVJMKGNvbnN0IFVSTCYs
IGNvbnN0IFN0cmluZyYpOwogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91
cmw7IH0KKyAgICBjb25zdCBTdHJpbmcmIHVybExhYmVsKCkgY29uc3Q7CisgICAgYm9vbCBoYXNV
UkwoKSBjb25zdCB7IHJldHVybiAhbV91cmwuaXNFbXB0eSgpICYmIG1fdXJsLmlzVmFsaWQoKTsg
fQorICAgIHZvaWQgY2xlYXJVUkwoKSB7IG1fdXJsID0gVVJMKCk7IH0KKworICAgIHZvaWQgc2V0
VVJJTGlzdChjb25zdCBTdHJpbmcmKTsKICAgICBjb25zdCBTdHJpbmcmIHVyaUxpc3QoKSBjb25z
dCB7IHJldHVybiBtX3VyaUxpc3Q7IH0KICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5h
bWVzKCkgY29uc3QgeyByZXR1cm4gbV9maWxlbmFtZXM7IH0KLSAgICBJbWFnZSogaW1hZ2UoKSBj
b25zdCB7IHJldHVybiBtX2ltYWdlLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRJbWFnZShJbWFnZSog
bmV3SW1hZ2UpIHsgbV9pbWFnZSA9IG5ld0ltYWdlOyB9Ci0gICAgdm9pZCBzZXRVUkwoY29uc3Qg
VVJMJiwgY29uc3QgU3RyaW5nJik7Ci0gICAgYm9vbCBoYXNVbmtub3duVHlwZURhdGEoKSBjb25z
dCB7IHJldHVybiAhbV91bmtub3duVHlwZURhdGEuaXNFbXB0eSgpOyB9Ci0gICAgYm9vbCBoYXNU
ZXh0KCkgY29uc3QgeyByZXR1cm4gIW1fdGV4dC5pc0VtcHR5KCk7IH0KLSAgICBib29sIGhhc01h
cmt1cCgpIGNvbnN0IHsgcmV0dXJuICFtX21hcmt1cC5pc0VtcHR5KCk7IH0KICAgICBib29sIGhh
c1VSSUxpc3QoKSBjb25zdCB7IHJldHVybiAhbV91cmlMaXN0LmlzRW1wdHkoKTsgfQotICAgIGJv
b2wgaGFzVVJMKCkgY29uc3QgeyByZXR1cm4gIW1fdXJsLmlzRW1wdHkoKSAmJiBtX3VybC5pc1Zh
bGlkKCk7IH0KICAgICBib29sIGhhc0ZpbGVuYW1lcygpIGNvbnN0IHsgcmV0dXJuICFtX2ZpbGVu
YW1lcy5pc0VtcHR5KCk7IH0KLSAgICBib29sIGhhc0ltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9p
bWFnZTsgfQotICAgIGJvb2wgY2FuU21hcnRSZXBsYWNlKCkgY29uc3QgeyByZXR1cm4gbV9jYW5T
bWFydFJlcGxhY2U7IH0KICAgICB2b2lkIGNsZWFyVVJJTGlzdCgpIHsgbV91cmlMaXN0ID0gZW1w
dHlTdHJpbmcoKTsgfQotICAgIHZvaWQgY2xlYXJVUkwoKSB7IG1fdXJsID0gVVJMKCk7IH0KKwor
ICAgIHZvaWQgc2V0SW1hZ2UoSW1hZ2UqIG5ld0ltYWdlKSB7IG1faW1hZ2UgPSBuZXdJbWFnZTsg
fQorICAgIEltYWdlKiBpbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2UuZ2V0KCk7IH0KKyAg
ICBib29sIGhhc0ltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZTsgfQogICAgIHZvaWQgY2xl
YXJJbWFnZSgpIHsgbV9pbWFnZSA9IG51bGxwdHI7IH0KIAotICAgIFN0cmluZyB0ZXh0KCkgY29u
c3QgeyByZXR1cm4gbV90ZXh0OyB9Ci0gICAgU3RyaW5nIG1hcmt1cCgpIGNvbnN0IHsgcmV0dXJu
IG1fbWFya3VwOyB9Ci0gICAgU3RyaW5nIHVua25vd25UeXBlRGF0YShjb25zdCBTdHJpbmcmIHR5
cGUpIGNvbnN0IHsgcmV0dXJuIG1fdW5rbm93blR5cGVEYXRhLmdldCh0eXBlKTsgfQotICAgIGNv
bnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiB1bmtub3duVHlwZXMoKSBjb25zdDsKLSAgICB2
b2lkIHNldFRleHQoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBzZXRNYXJrdXAoY29uc3QgU3Ry
aW5nJik7CiAgICAgdm9pZCBzZXRVbmtub3duVHlwZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBj
b25zdCBTdHJpbmcmIGRhdGEpIHsgbV91bmtub3duVHlwZURhdGEuc2V0KHR5cGUsIGRhdGEpOyB9
Ci0gICAgdm9pZCBzZXRVUklMaXN0KGNvbnN0IFN0cmluZyYpOworICAgIFN0cmluZyB1bmtub3du
VHlwZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdCB7IHJldHVybiBtX3Vua25vd25UeXBl
RGF0YS5nZXQodHlwZSk7IH0KKyAgICBjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgdW5r
bm93blR5cGVzKCkgY29uc3QgeyByZXR1cm4gbV91bmtub3duVHlwZURhdGE7IH0KKyAgICBib29s
IGhhc1Vua25vd25UeXBlRGF0YSgpIGNvbnN0IHsgcmV0dXJuICFtX3Vua25vd25UeXBlRGF0YS5p
c0VtcHR5KCk7IH0KKwogICAgIHZvaWQgc2V0Q2FuU21hcnRSZXBsYWNlKGJvb2wgY2FuU21hcnRS
ZXBsYWNlKSB7IG1fY2FuU21hcnRSZXBsYWNlID0gY2FuU21hcnRSZXBsYWNlOyB9Ci0gICAgU3Ry
aW5nIHVybExhYmVsKCkgY29uc3Q7CisgICAgYm9vbCBjYW5TbWFydFJlcGxhY2UoKSBjb25zdCB7
IHJldHVybiBtX2NhblNtYXJ0UmVwbGFjZTsgfQogCi0gICAgdm9pZCBjbGVhckFsbEV4Y2VwdEZp
bGVuYW1lcygpOwogICAgIHZvaWQgY2xlYXJBbGwoKTsKLSAgICB2b2lkIGNsZWFyVGV4dCgpOwot
ICAgIHZvaWQgY2xlYXJNYXJrdXAoKTsKKyAgICB2b2lkIGNsZWFyQWxsRXhjZXB0RmlsZW5hbWVz
KCk7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fdGV4dDsKQEAgLTc4LDQgKzg0LDQgQEAgcHJp
dmF0ZToKICAgICBib29sIG1fY2FuU21hcnRSZXBsYWNlIHsgZmFsc2UgfTsKIH07CiAKLX0KK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA3YWNlODE3Li5hY2U1NTFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTkgQEAKKzIwMTYtMDktMjIgIENhcmxvcyBHYXJjaWEgQ2FtcG9z
ICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIFJlbmFtZSBEYXRhT2JqZWN0
R3RrIGFzIFNlbGVjdGlvbkRhdGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2MjM4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogU2hhcmVkL2d0ay9B
cmd1bWVudENvZGVyc0d0ay5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8U2VsZWN0
aW9uRGF0YT46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8U2VsZWN0aW9u
RGF0YT46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5o
OgorICAgICAgICAqIFNoYXJlZC9ndGsvV2ViU2VsZWN0aW9uRGF0YS5jcHA6IFJlbmFtZWQgZnJv
bSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1Bhc3RlYm9hcmRDb250ZW50LmNwcC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViU2VsZWN0aW9uRGF0YTo6V2ViU2VsZWN0aW9uRGF0YSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlNlbGVjdGlvbkRhdGE6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNlbGVjdGlvbkRhdGE6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL2d0ay9XZWJTZWxlY3Rp
b25EYXRhLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1Bhc3RlYm9h
cmRDb250ZW50LmguCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6c3RhcnREcmFnKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGVyZm9ybURyYWdDb250cm9sbGVyQWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzdGFydERyYWcpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJv
eHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvRHJhZ0FuZERyb3BIYW5kbGVyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6RHJhZ0FuZERyb3BIYW5kbGVyOjpEcm9wcGluZ0NvbnRleHQ6OkRyb3BwaW5n
Q29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OkRyYWdBbmREcm9wSGFuZGxlcjo6c3RhcnREcmFn
KToKKyAgICAgICAgKFdlYktpdDo6RHJhZ0FuZERyb3BIYW5kbGVyOjpmaWxsRHJhZ0RhdGEpOgor
ICAgICAgICAoV2ViS2l0OjpEcmFnQW5kRHJvcEhhbmRsZXI6OmZpbmlzaERyYWcpOgorICAgICAg
ICAoV2ViS2l0OjpEcmFnQW5kRHJvcEhhbmRsZXI6OmRyb3BEYXRhU2VsZWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6RHJhZ0FuZERyb3BIYW5kbGVyOjpkcmFnRW50ZXJlZCk6CisgICAgICAgIChX
ZWJLaXQ6OkRyYWdBbmREcm9wSGFuZGxlcjo6ZHJhZ0RhdGFTZWxlY3Rpb24pOgorICAgICAgICAo
V2ViS2l0OjpEcmFnQW5kRHJvcEhhbmRsZXI6OmRyYWdNb3Rpb24pOgorICAgICAgICAoV2ViS2l0
OjpEcmFnQW5kRHJvcEhhbmRsZXI6OmRyYWdMZWF2ZSk6CisgICAgICAgIChXZWJLaXQ6OkRyYWdB
bmREcm9wSGFuZGxlcjo6ZHJvcCk6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9EcmFnQW5kRHJv
cEhhbmRsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYlBhc3RlYm9hcmRQcm94eUd0
ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6d3JpdGVUb0NsaXBi
b2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6cmVhZEZyb21DbGlw
Ym9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFByaW1hcnlT
ZWxlY3Rpb25Pd25lcik6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OndyaXRlVG9DbGlwYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRGcm9tQ2xpcGJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJEcmFnQ2xpZW50OjpzdGFydERyYWcpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkVkaXRvckNsaWVudEd0ay5jcHA6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW46CisKIDIwMTYtMDktMjEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjE5NDM4Nyk6IENyYXNoIG9uIGdpdGh1
Yi5jb20gaW4gSW50bERhdGVUaW1lRm9ybWF0OjpyZXNvbHZlZE9wdGlvbnMgaW4gQyBsb2NhbGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dl
YktpdDIvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggOWVkODExNS4uNDVjMWQ5NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIv
UGxhdGZvcm1HVEsuY21ha2UKQEAgLTcxLDEyICs3MSwxMiBAQCBsaXN0KEFQUEVORCBXZWJLaXQy
X1NPVVJDRVMKICAgICBTaGFyZWQvZ3RrL05hdGl2ZVdlYk1vdXNlRXZlbnRHdGsuY3BwCiAgICAg
U2hhcmVkL2d0ay9OYXRpdmVXZWJUb3VjaEV2ZW50R3RrLmNwcAogICAgIFNoYXJlZC9ndGsvTmF0
aXZlV2ViV2hlZWxFdmVudEd0ay5jcHAKLSAgICBTaGFyZWQvZ3RrL1Bhc3RlYm9hcmRDb250ZW50
LmNwcAogICAgIFNoYXJlZC9ndGsvUHJpbnRJbmZvR3RrLmNwcAogICAgIFNoYXJlZC9ndGsvUHJv
Y2Vzc0V4ZWN1dGFibGVQYXRoR3RrLmNwcAogICAgIFNoYXJlZC9ndGsvV2ViQ29udGV4dE1lbnVJ
dGVtR3RrLmNwcAogICAgIFNoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmNwcAogICAgIFNoYXJl
ZC9ndGsvV2ViS2l0MkluaXRpYWxpemVHVEsuY3BwCisgICAgU2hhcmVkL2d0ay9XZWJTZWxlY3Rp
b25EYXRhLmNwcAogCiAgICAgU2hhcmVkL2xpbnV4L1dlYk1lbW9yeVNhbXBsZXJMaW51eC5jcHAK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0
ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcApp
bmRleCBlNjg2YmIzLi4zNDI2MjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
Z3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3Rr
L0FyZ3VtZW50Q29kZXJzR3RrLmNwcApAQCAtMjksOSArMjksOSBAQAogI2luY2x1ZGUgIkRhdGFS
ZWZlcmVuY2UuaCIKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRlICJXZWJD
b3JlQXJndW1lbnRDb2RlcnMuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0RhdGFPYmplY3RHdGsuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
SW1hZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NlbGVjdGlvbkRhdGEuaD4KICNpbmNsdWRlIDxn
dGsvZ3RrLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgogCkBAIC02Niw0NSAr
NjYsNDUgQEAgc3RhdGljIGJvb2wgZGVjb2RlSW1hZ2UoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRy
PEltYWdlPiYgaW1hZ2UpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQXJndW1lbnRDb2Rl
cjxEYXRhT2JqZWN0R3RrPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IERhdGFPYmpl
Y3RHdGsmIGRhdGFPYmplY3QpCit2b2lkIEFyZ3VtZW50Q29kZXI8U2VsZWN0aW9uRGF0YT46OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTZWxlY3Rpb25EYXRhJiBzZWxlY3Rpb24pCiB7
Ci0gICAgYm9vbCBoYXNUZXh0ID0gZGF0YU9iamVjdC5oYXNUZXh0KCk7CisgICAgYm9vbCBoYXNU
ZXh0ID0gc2VsZWN0aW9uLmhhc1RleHQoKTsKICAgICBlbmNvZGVyIDw8IGhhc1RleHQ7CiAgICAg
aWYgKGhhc1RleHQpCi0gICAgICAgIGVuY29kZXIgPDwgZGF0YU9iamVjdC50ZXh0KCk7CisgICAg
ICAgIGVuY29kZXIgPDwgc2VsZWN0aW9uLnRleHQoKTsKIAotICAgIGJvb2wgaGFzTWFya3VwID0g
ZGF0YU9iamVjdC5oYXNNYXJrdXAoKTsKKyAgICBib29sIGhhc01hcmt1cCA9IHNlbGVjdGlvbi5o
YXNNYXJrdXAoKTsKICAgICBlbmNvZGVyIDw8IGhhc01hcmt1cDsKICAgICBpZiAoaGFzTWFya3Vw
KQotICAgICAgICBlbmNvZGVyIDw8IGRhdGFPYmplY3QubWFya3VwKCk7CisgICAgICAgIGVuY29k
ZXIgPDwgc2VsZWN0aW9uLm1hcmt1cCgpOwogCi0gICAgYm9vbCBoYXNVUkwgPSBkYXRhT2JqZWN0
Lmhhc1VSTCgpOworICAgIGJvb2wgaGFzVVJMID0gc2VsZWN0aW9uLmhhc1VSTCgpOwogICAgIGVu
Y29kZXIgPDwgaGFzVVJMOwogICAgIGlmIChoYXNVUkwpCi0gICAgICAgIGVuY29kZXIgPDwgZGF0
YU9iamVjdC51cmwoKS5zdHJpbmcoKTsKKyAgICAgICAgZW5jb2RlciA8PCBzZWxlY3Rpb24udXJs
KCkuc3RyaW5nKCk7CiAKLSAgICBib29sIGhhc1VSSUxpc3QgPSBkYXRhT2JqZWN0Lmhhc1VSSUxp
c3QoKTsKKyAgICBib29sIGhhc1VSSUxpc3QgPSBzZWxlY3Rpb24uaGFzVVJJTGlzdCgpOwogICAg
IGVuY29kZXIgPDwgaGFzVVJJTGlzdDsKICAgICBpZiAoaGFzVVJJTGlzdCkKLSAgICAgICAgZW5j
b2RlciA8PCBkYXRhT2JqZWN0LnVyaUxpc3QoKTsKKyAgICAgICAgZW5jb2RlciA8PCBzZWxlY3Rp
b24udXJpTGlzdCgpOwogCi0gICAgYm9vbCBoYXNJbWFnZSA9IGRhdGFPYmplY3QuaGFzSW1hZ2Uo
KTsKKyAgICBib29sIGhhc0ltYWdlID0gc2VsZWN0aW9uLmhhc0ltYWdlKCk7CiAgICAgZW5jb2Rl
ciA8PCBoYXNJbWFnZTsKICAgICBpZiAoaGFzSW1hZ2UpCi0gICAgICAgIGVuY29kZUltYWdlKGVu
Y29kZXIsICpkYXRhT2JqZWN0LmltYWdlKCkpOworICAgICAgICBlbmNvZGVJbWFnZShlbmNvZGVy
LCAqc2VsZWN0aW9uLmltYWdlKCkpOwogCi0gICAgYm9vbCBoYXNVbmtub3duVHlwZURhdGEgPSBk
YXRhT2JqZWN0Lmhhc1Vua25vd25UeXBlRGF0YSgpOworICAgIGJvb2wgaGFzVW5rbm93blR5cGVE
YXRhID0gc2VsZWN0aW9uLmhhc1Vua25vd25UeXBlRGF0YSgpOwogICAgIGVuY29kZXIgPDwgaGFz
VW5rbm93blR5cGVEYXRhOwogICAgIGlmIChoYXNVbmtub3duVHlwZURhdGEpCi0gICAgICAgIGVu
Y29kZXIgPDwgZGF0YU9iamVjdC51bmtub3duVHlwZXMoKTsKKyAgICAgICAgZW5jb2RlciA8PCBz
ZWxlY3Rpb24udW5rbm93blR5cGVzKCk7CiAKLSAgICBib29sIGNhblNtYXJ0UmVwbGFjZSA9IGRh
dGFPYmplY3QuY2FuU21hcnRSZXBsYWNlKCk7CisgICAgYm9vbCBjYW5TbWFydFJlcGxhY2UgPSBz
ZWxlY3Rpb24uY2FuU21hcnRSZXBsYWNlKCk7CiAgICAgZW5jb2RlciA8PCBjYW5TbWFydFJlcGxh
Y2U7CiB9CiAKLWJvb2wgQXJndW1lbnRDb2RlcjxEYXRhT2JqZWN0R3RrPjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIsIERhdGFPYmplY3RHdGsmIGRhdGFPYmplY3QpCitib29sIEFyZ3VtZW50Q29k
ZXI8U2VsZWN0aW9uRGF0YT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBTZWxlY3Rpb25EYXRh
JiBzZWxlY3Rpb24pCiB7Ci0gICAgZGF0YU9iamVjdC5jbGVhckFsbCgpOworICAgIHNlbGVjdGlv
bi5jbGVhckFsbCgpOwogCiAgICAgYm9vbCBoYXNUZXh0OwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoaGFzVGV4dCkpCkBAIC0xMTMsNyArMTEzLDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPERhdGFP
YmplY3RHdGs+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgRGF0YU9iamVjdEd0ayYgZGF0YU8K
ICAgICAgICAgU3RyaW5nIHRleHQ7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUodGV4dCkp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGRhdGFPYmplY3Quc2V0VGV4dCh0
ZXh0KTsKKyAgICAgICAgc2VsZWN0aW9uLnNldFRleHQodGV4dCk7CiAgICAgfQogCiAgICAgYm9v
bCBoYXNNYXJrdXA7CkBAIC0xMjMsNyArMTIzLDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPERhdGFP
YmplY3RHdGs+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgRGF0YU9iamVjdEd0ayYgZGF0YU8K
ICAgICAgICAgU3RyaW5nIG1hcmt1cDsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShtYXJr
dXApKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBkYXRhT2JqZWN0LnNldE1h
cmt1cChtYXJrdXApOworICAgICAgICBzZWxlY3Rpb24uc2V0TWFya3VwKG1hcmt1cCk7CiAgICAg
fQogCiAgICAgYm9vbCBoYXNVUkw7CkBAIC0xMzMsNyArMTMzLDcgQEAgYm9vbCBBcmd1bWVudENv
ZGVyPERhdGFPYmplY3RHdGs+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgRGF0YU9iamVjdEd0
ayYgZGF0YU8KICAgICAgICAgU3RyaW5nIHVybDsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZSh1cmwpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBkYXRhT2JqZWN0LnNl
dFVSTChVUkwoVVJMKCksIHVybCksIFN0cmluZygpKTsKKyAgICAgICAgc2VsZWN0aW9uLnNldFVS
TChVUkwoVVJMKCksIHVybCksIFN0cmluZygpKTsKICAgICB9CiAKICAgICBib29sIGhhc1VSSUxp
c3Q7CkBAIC0xNDMsNyArMTQzLDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPERhdGFPYmplY3RHdGs+
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgRGF0YU9iamVjdEd0ayYgZGF0YU8KICAgICAgICAg
U3RyaW5nIHVyaUxpc3Q7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUodXJpTGlzdCkpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGRhdGFPYmplY3Quc2V0VVJJTGlzdCh1
cmlMaXN0KTsKKyAgICAgICAgc2VsZWN0aW9uLnNldFVSSUxpc3QodXJpTGlzdCk7CiAgICAgfQog
CiAgICAgYm9vbCBoYXNJbWFnZTsKQEAgLTE1Myw3ICsxNTMsNyBAQCBib29sIEFyZ3VtZW50Q29k
ZXI8RGF0YU9iamVjdEd0az46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBEYXRhT2JqZWN0R3Rr
JiBkYXRhTwogICAgICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlOwogICAgICAgICBpZiAoIWRlY29k
ZUltYWdlKGRlY29kZXIsIGltYWdlKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgZGF0YU9iamVjdC5zZXRJbWFnZShpbWFnZS5nZXQoKSk7CisgICAgICAgIHNlbGVjdGlvbi5z
ZXRJbWFnZShpbWFnZS5nZXQoKSk7CiAgICAgfQogCiAgICAgYm9vbCBoYXNVbmtub3duVHlwZURh
dGE7CkBAIC0xNjYsMTMgKzE2NiwxMyBAQCBib29sIEFyZ3VtZW50Q29kZXI8RGF0YU9iamVjdEd0
az46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBEYXRhT2JqZWN0R3RrJiBkYXRhTwogCiAgICAg
ICAgIGF1dG8gZW5kID0gdW5rbm93blR5cGVzLmVuZCgpOwogICAgICAgICBmb3IgKGF1dG8gaXQg
PSB1bmtub3duVHlwZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICAgICAgZGF0
YU9iamVjdC5zZXRVbmtub3duVHlwZURhdGEoaXQtPmtleSwgaXQtPnZhbHVlKTsKKyAgICAgICAg
ICAgIHNlbGVjdGlvbi5zZXRVbmtub3duVHlwZURhdGEoaXQtPmtleSwgaXQtPnZhbHVlKTsKICAg
ICB9CiAKICAgICBib29sIGNhblNtYXJ0UmVwbGFjZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGNhblNtYXJ0UmVwbGFjZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBkYXRhT2JqZWN0
LnNldENhblNtYXJ0UmVwbGFjZShjYW5TbWFydFJlcGxhY2UpOworICAgIHNlbGVjdGlvbi5zZXRD
YW5TbWFydFJlcGxhY2UoY2FuU21hcnRSZXBsYWNlKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5o
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5oCmluZGV4IDhl
YTk0YWMuLmYxZTc4NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvQXJn
dW1lbnRDb2RlcnNHdGsuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL0FyZ3VtZW50
Q29kZXJzR3RrLmgKQEAgLTMzLDcgKzMzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX0d0a1ByaW50U2V0
dGluZ3MgR3RrUHJpbnRTZXR0aW5nczsKIHR5cGVkZWYgc3RydWN0IF9HdGtQYWdlU2V0dXAgR3Rr
UGFnZVNldHVwOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBEYXRhT2JqZWN0R3RrOwor
Y2xhc3MgU2VsZWN0aW9uRGF0YTsKIH0KIAogbmFtZXNwYWNlIElQQyB7CkBAIC00NCw5ICs0NCw5
IEBAIGJvb2wgZGVjb2RlKERlY29kZXImLCBHUmVmUHRyPEd0a1ByaW50U2V0dGluZ3M+Jik7CiB2
b2lkIGVuY29kZShFbmNvZGVyJiwgR3RrUGFnZVNldHVwKik7CiBib29sIGRlY29kZShEZWNvZGVy
JiwgR1JlZlB0cjxHdGtQYWdlU2V0dXA+Jik7CiAKLXRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6RGF0YU9iamVjdEd0az4gewotICAgIHN0YXRpYyB2b2lkIGVuY29kZShF
bmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6RGF0YU9iamVjdEd0ayYpOwotICAgIHN0YXRpYyBib29s
IGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6RGF0YU9iamVjdEd0ayYpOwordGVtcGxhdGU8PiBz
dHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZWxlY3Rpb25EYXRhPiB7CisgICAgc3RhdGlj
IHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJik7Cisg
ICAgc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJik7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9ndGsvUGFzdGVib2FyZENvbnRlbnQuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0
ay9XZWJTZWxlY3Rpb25EYXRhLmNwcApzaW1pbGFyaXR5IGluZGV4IDYwJQpyZW5hbWUgZnJvbSBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1Bhc3RlYm9hcmRDb250ZW50LmNwcApyZW5hbWUgdG8g
U291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9XZWJTZWxlY3Rpb25EYXRhLmNwcAppbmRleCAzMTA1
YzI0Li4xOWZjMjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1Bhc3Rl
Ym9hcmRDb250ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYlNlbGVj
dGlvbkRhdGEuY3BwCkBAIC0xNywzOSArMTcsMzggQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiUGFzdGVib2FyZENvbnRlbnQuaCIKKyNpbmNsdWRlICJXZWJTZWxlY3Rp
b25EYXRhLmgiCiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVyc0d0ay5oIgotI2luY2x1ZGUgIkRh
dGFPYmplY3RHdGsuaCIKICNpbmNsdWRlICJEZWNvZGVyLmgiCiAjaW5jbHVkZSAiRW5jb2Rlci5o
IgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVBh
c3RlYm9hcmRDb250ZW50OjpQYXN0ZWJvYXJkQ29udGVudCgpCi0gICAgOiBkYXRhT2JqZWN0KFdl
YkNvcmU6OkRhdGFPYmplY3RHdGs6OmNyZWF0ZSgpKQorV2ViU2VsZWN0aW9uRGF0YTo6V2ViU2Vs
ZWN0aW9uRGF0YSgpCisgICAgOiBzZWxlY3Rpb25EYXRhKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGE6
OmNyZWF0ZSgpKQogewogfQogCi1QYXN0ZWJvYXJkQ29udGVudDo6UGFzdGVib2FyZENvbnRlbnQo
Y29uc3QgV2ViQ29yZTo6RGF0YU9iamVjdEd0ayYgZGF0YSkKLSAgICA6IGRhdGFPYmplY3QoY29u
c3RfY2FzdDxXZWJDb3JlOjpEYXRhT2JqZWN0R3RrJj4oZGF0YSkpCitXZWJTZWxlY3Rpb25EYXRh
OjpXZWJTZWxlY3Rpb25EYXRhKGNvbnN0IFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmIGRhdGEpCisg
ICAgOiBzZWxlY3Rpb25EYXRhKGNvbnN0X2Nhc3Q8V2ViQ29yZTo6U2VsZWN0aW9uRGF0YSY+KGRh
dGEpKQogewogfQogCi1QYXN0ZWJvYXJkQ29udGVudDo6UGFzdGVib2FyZENvbnRlbnQoUmVmPFdl
YkNvcmU6OkRhdGFPYmplY3RHdGs+JiYgZGF0YSkKLSAgICA6IGRhdGFPYmplY3QoV1RGTW92ZShk
YXRhKSkKK1dlYlNlbGVjdGlvbkRhdGE6OldlYlNlbGVjdGlvbkRhdGEoUmVmPFdlYkNvcmU6OlNl
bGVjdGlvbkRhdGE+JiYgZGF0YSkKKyAgICA6IHNlbGVjdGlvbkRhdGEoV1RGTW92ZShkYXRhKSkK
IHsKIH0KIAotdm9pZCBQYXN0ZWJvYXJkQ29udGVudDo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5j
b2RlcikgY29uc3QKK3ZvaWQgV2ViU2VsZWN0aW9uRGF0YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyIDw8IGRhdGFPYmplY3QuZ2V0KCk7CisgICAg
ZW5jb2RlciA8PCBzZWxlY3Rpb25EYXRhLmdldCgpOwogfQogCi1ib29sIFBhc3RlYm9hcmRDb250
ZW50OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBQYXN0ZWJvYXJkQ29udGVudCYgcGFz
dGVib2FyZENvbnRlbnQpCitib29sIFdlYlNlbGVjdGlvbkRhdGE6OmRlY29kZShJUEM6OkRlY29k
ZXImIGRlY29kZXIsIFdlYlNlbGVjdGlvbkRhdGEmIHNlbGVjdGlvbikKIHsKLSAgICByZXR1cm4g
ZGVjb2Rlci5kZWNvZGUocGFzdGVib2FyZENvbnRlbnQuZGF0YU9iamVjdC5nZXQoKSk7CisgICAg
cmV0dXJuIGRlY29kZXIuZGVjb2RlKHNlbGVjdGlvbi5zZWxlY3Rpb25EYXRhLmdldCgpKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvZ3RrL1Bhc3RlYm9hcmRDb250ZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dl
YlNlbGVjdGlvbkRhdGEuaApzaW1pbGFyaXR5IGluZGV4IDcwJQpyZW5hbWUgZnJvbSBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvZ3RrL1Bhc3RlYm9hcmRDb250ZW50LmgKcmVuYW1lIHRvIFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9ndGsvV2ViU2VsZWN0aW9uRGF0YS5oCmluZGV4IDk4ZDkyNTUuLjE4ZDg1
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvUGFzdGVib2FyZENvbnRl
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYlNlbGVjdGlvbkRhdGEuaApA
QCAtMTYsMTAgKzE2LDkgQEAKICAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKICAqLwogCi0jaWZu
ZGVmIFBhc3RlYm9hcmRDb250ZW50X2gKLSNkZWZpbmUgUGFzdGVib2FyZENvbnRlbnRfaAorI3By
YWdtYSBvbmNlCiAKLSNpbmNsdWRlICJEYXRhT2JqZWN0R3RrLmgiCisjaW5jbHVkZSA8V2ViQ29y
ZS9TZWxlY3Rpb25EYXRhLmg+CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgRGVjb2RlcjsKQEAg
LTI4LDE3ICsyNywxNiBAQCBjbGFzcyBFbmNvZGVyOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAot
c3RydWN0IFBhc3RlYm9hcmRDb250ZW50IHsKLSAgICBQYXN0ZWJvYXJkQ29udGVudCgpOwotICAg
IGV4cGxpY2l0IFBhc3RlYm9hcmRDb250ZW50KGNvbnN0IFdlYkNvcmU6OkRhdGFPYmplY3RHdGsm
KTsKLSAgICBleHBsaWNpdCBQYXN0ZWJvYXJkQ29udGVudChSZWY8V2ViQ29yZTo6RGF0YU9iamVj
dEd0az4mJik7CitzdHJ1Y3QgV2ViU2VsZWN0aW9uRGF0YSB7CisgICAgV2ViU2VsZWN0aW9uRGF0
YSgpOworICAgIGV4cGxpY2l0IFdlYlNlbGVjdGlvbkRhdGEoY29uc3QgV2ViQ29yZTo6U2VsZWN0
aW9uRGF0YSYpOworICAgIGV4cGxpY2l0IFdlYlNlbGVjdGlvbkRhdGEoUmVmPFdlYkNvcmU6OlNl
bGVjdGlvbkRhdGE+JiYpOwogCi0gICAgUmVmPFdlYkNvcmU6OkRhdGFPYmplY3RHdGs+IGRhdGFP
YmplY3Q7CisgICAgUmVmPFdlYkNvcmU6OlNlbGVjdGlvbkRhdGE+IHNlbGVjdGlvbkRhdGE7CiAK
ICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKLSAgICBzdGF0aWMgYm9vbCBk
ZWNvZGUoSVBDOjpEZWNvZGVyJiwgUGFzdGVib2FyZENvbnRlbnQmKTsKKyAgICBzdGF0aWMgYm9v
bCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgV2ViU2VsZWN0aW9uRGF0YSYpOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRpZiAvLyBQYXN0ZWJvYXJkQ29udGVudF9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKaW5k
ZXggYjY0OWRiOC4uODE1ODU1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcApAQCAtMjU0LDcgKzI1NCw3IEBAIHZvaWQgUGFn
ZUNsaWVudEltcGw6OmRpZENoYW5nZUNvbnRlbnRTaXplKGNvbnN0IEludFNpemUmIHNpemUpCiB9
CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQotdm9pZCBQYWdlQ2xpZW50SW1wbDo6c3RhcnRE
cmFnKFJlZjxEYXRhT2JqZWN0R3RrPiYmIHNlbGVjdGlvbiwgRHJhZ09wZXJhdGlvbiBkcmFnT3Bl
cmF0aW9uLCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYmIGRyYWdJbWFnZSkKK3ZvaWQgUGFnZUNs
aWVudEltcGw6OnN0YXJ0RHJhZyhSZWY8U2VsZWN0aW9uRGF0YT4mJiBzZWxlY3Rpb24sIERyYWdP
cGVyYXRpb24gZHJhZ09wZXJhdGlvbiwgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4mJiBkcmFnSW1h
Z2UpCiB7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVdf
QkFTRShtX3ZpZXdXaWRnZXQpOwogICAgIHdlYmtpdFdlYlZpZXdCYXNlRHJhZ0FuZERyb3BIYW5k
bGVyKHdlYlZpZXcpLnN0YXJ0RHJhZyhXVEZNb3ZlKHNlbGVjdGlvbiksIGRyYWdPcGVyYXRpb24s
IFdURk1vdmUoZHJhZ0ltYWdlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvUGFnZUNsaWVudEltcGwuaAppbmRleCBjYzE4MDlmLi44ZDRhMzEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmgKQEAgLTg2
LDcgKzg2LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIHZvaWQgc2VsZWN0aW9uRGlkQ2hhbmdl
KCkgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKLSAgICB2b2lkIHN0YXJ0RHJh
ZyhSZWY8V2ViQ29yZTo6RGF0YU9iamVjdEd0az4mJiwgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiwg
UmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4mJiBkcmFnSW1hZ2UpIG92ZXJyaWRlOworICAgIHZvaWQg
c3RhcnREcmFnKFJlZjxXZWJDb3JlOjpTZWxlY3Rpb25EYXRhPiYmLCBXZWJDb3JlOjpEcmFnT3Bl
cmF0aW9uLCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYmIGRyYWdJbWFnZSkgb3ZlcnJpZGU7CiAj
ZW5kaWYKIAogICAgIHZvaWQgZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShjb25zdCBM
YXllclRyZWVDb250ZXh0Jikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGll
bnQuaAppbmRleCBiMTc2NjM2Li5mNDNiZjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdl
Q2xpZW50LmgKQEAgLTE1Nyw3ICsxNTcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRp
ZENoYW5nZUNvbnRlbnRTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSA9IDA7CiAKICNpZiBQ
TEFURk9STShHVEspICYmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi0gICAgdmlydHVhbCB2b2lkIHN0
YXJ0RHJhZyhSZWY8V2ViQ29yZTo6RGF0YU9iamVjdEd0az4mJiwgV2ViQ29yZTo6RHJhZ09wZXJh
dGlvbiwgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4mJiBkcmFnSW1hZ2UpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgc3RhcnREcmFnKFJlZjxXZWJDb3JlOjpTZWxlY3Rpb25EYXRhPiYmLCBXZWJDb3Jl
OjpEcmFnT3BlcmF0aW9uLCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYmIGRyYWdJbWFnZSkgPSAw
OwogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q3Vyc29yKGNvbnN0IFdlYkNvcmU6OkN1
cnNvciYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5k
ZXggOWE2Y2U0NS4uNGVkOGE0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKQEAgLTE1Niw3ICsxNTYsNyBAQAogI2VuZGlmCiAKICNpZiBQTEFURk9STShHVEsp
Ci0jaW5jbHVkZSAiUGFzdGVib2FyZENvbnRlbnQuaCIKKyNpbmNsdWRlICJXZWJTZWxlY3Rpb25E
YXRhLmgiCiAjZW5kaWYKIAogI2lmIFVTRShDQUlSTykKQEAgLTE3NzQsNyArMTc3NCw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJhZ0NvbnRyb2xs
ZXJBY3Rpb24gYWN0aW9uLCBEcmFnCiAgICAgICAgIG1fcHJvY2Vzcy0+YXNzdW1lUmVhZEFjY2Vz
c1RvQmFzZVVSTCh1cmwpOwogCiAgICAgQVNTRVJUKGRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpKTsK
LSAgICBQYXN0ZWJvYXJkQ29udGVudCBzZWxlY3Rpb24oKmRyYWdEYXRhLnBsYXRmb3JtRGF0YSgp
KTsKKyAgICBXZWJTZWxlY3Rpb25EYXRhIHNlbGVjdGlvbigqZHJhZ0RhdGEucGxhdGZvcm1EYXRh
KCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGVyZm9ybURyYWdD
b250cm9sbGVyQWN0aW9uKGFjdGlvbiwgZHJhZ0RhdGEuY2xpZW50UG9zaXRpb24oKSwgZHJhZ0Rh
dGEuZ2xvYmFsUG9zaXRpb24oKSwgZHJhZ0RhdGEuZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNr
KCksIHNlbGVjdGlvbiwgZHJhZ0RhdGEuZmxhZ3MoKSksIG1fcGFnZUlEKTsKICNlbHNlCiAgICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQZXJmb3JtRHJhZ0NvbnRyb2xsZXJB
Y3Rpb24oYWN0aW9uLCBkcmFnRGF0YS5jbGllbnRQb3NpdGlvbigpLCBkcmFnRGF0YS5nbG9iYWxQ
b3NpdGlvbigpLCBkcmFnRGF0YS5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2soKSwgZHJhZ1N0
b3JhZ2VOYW1lLCBkcmFnRGF0YS5mbGFncygpLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBzYW5k
Ym94RXh0ZW5zaW9uc0ZvclVwbG9hZCksIG1fcGFnZUlEKTsKQEAgLTE3OTEsMTAgKzE3OTEsMTAg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbih1aW50
NjRfdCBkcmFnT3BlcmF0aW9uLCBib29sIG0KIH0KIAogI2lmIFBMQVRGT1JNKEdUSykKLXZvaWQg
V2ViUGFnZVByb3h5OjpzdGFydERyYWcoUGFzdGVib2FyZENvbnRlbnQmJiBzZWxlY3Rpb24sIHVp
bnQ2NF90IGRyYWdPcGVyYXRpb24sIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBkcmFn
SW1hZ2VIYW5kbGUpCit2b2lkIFdlYlBhZ2VQcm94eTo6c3RhcnREcmFnKFdlYlNlbGVjdGlvbkRh
dGEmJiBzZWxlY3Rpb24sIHVpbnQ2NF90IGRyYWdPcGVyYXRpb24sIGNvbnN0IFNoYXJlYWJsZUJp
dG1hcDo6SGFuZGxlJiBkcmFnSW1hZ2VIYW5kbGUpCiB7CiAgICAgUmVmUHRyPFNoYXJlYWJsZUJp
dG1hcD4gZHJhZ0ltYWdlID0gIWRyYWdJbWFnZUhhbmRsZS5pc051bGwoKSA/IFNoYXJlYWJsZUJp
dG1hcDo6Y3JlYXRlKGRyYWdJbWFnZUhhbmRsZSkgOiBudWxscHRyOwotICAgIG1fcGFnZUNsaWVu
dC5zdGFydERyYWcoV1RGTW92ZShzZWxlY3Rpb24uZGF0YU9iamVjdCksIHN0YXRpY19jYXN0PFdl
YkNvcmU6OkRyYWdPcGVyYXRpb24+KGRyYWdPcGVyYXRpb24pLCBXVEZNb3ZlKGRyYWdJbWFnZSkp
OworICAgIG1fcGFnZUNsaWVudC5zdGFydERyYWcoV1RGTW92ZShzZWxlY3Rpb24uc2VsZWN0aW9u
RGF0YSksIHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KGRyYWdPcGVyYXRpb24p
LCBXVEZNb3ZlKGRyYWdJbWFnZSkpOwogCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpEaWRTdGFydERyYWcoKSwgbV9wYWdlSUQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDlhODBjZDQuLjU3ZWQxOGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTgwOSw3ICs4MDksNyBAQCBwdWJsaWM6CiAj
ZW5kaWYKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykKLSAgICB2b2lkIHN0YXJ0RHJhZyhQYXN0
ZWJvYXJkQ29udGVudCYmLCB1aW50NjRfdCBkcmFnT3BlcmF0aW9uLCBjb25zdCBTaGFyZWFibGVC
aXRtYXA6OkhhbmRsZSYgZHJhZ0ltYWdlKTsKKyAgICB2b2lkIHN0YXJ0RHJhZyhXZWJTZWxlY3Rp
b25EYXRhJiYsIHVpbnQ2NF90IGRyYWdPcGVyYXRpb24sIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6
SGFuZGxlJiBkcmFnSW1hZ2UpOwogI2VuZGlmCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggYWU3OWE4ZC4uMTMw
NTJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluCkBAIC0zMDgsNyArMzA4LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsK
ICNlbmRpZgogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKSAmJiBFTkFCTEUoRFJBR19TVVBQT1JU
KQotICAgIFN0YXJ0RHJhZyhzdHJ1Y3QgV2ViS2l0OjpQYXN0ZWJvYXJkQ29udGVudCBzZWxlY3Rp
b24sIHVpbnQ2NF90IGRyYWdPcGVyYXRpb24sIFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5k
bGUgZHJhZ0ltYWdlKQorICAgIFN0YXJ0RHJhZyhzdHJ1Y3QgV2ViS2l0OjpXZWJTZWxlY3Rpb25E
YXRhIHNlbGVjdGlvbiwgdWludDY0X3QgZHJhZ09wZXJhdGlvbiwgV2ViS2l0OjpTaGFyZWFibGVC
aXRtYXA6OkhhbmRsZSBkcmFnSW1hZ2UpCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5oCmluZGV4IGU4
NDAwMzIuLjQxNGI4MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YXN0ZWJvYXJkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFzdGVi
b2FyZFByb3h5LmgKQEAgLTQyLDEwICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFz
cyBXZWJGcmFtZVByb3h5OwogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5OwotCi0jaWYgUExBVEZPUk0o
R1RLKQotY2xhc3MgUGFzdGVib2FyZENvbnRlbnQ7Ci0jZW5kaWYKK2NsYXNzIFdlYlNlbGVjdGlv
bkRhdGE7CiAKIGNsYXNzIFdlYlBhc3RlYm9hcmRQcm94eSA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VS
ZWNlaXZlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViUGFzdGVib2FyZFByb3h5KTsK
QEAgLTkyLDggKzg5LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldFBhc3RlYm9hcmRCdWZmZXJG
b3JUeXBlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgcGFzdGVi
b2FyZFR5cGUsIGNvbnN0IFNoYXJlZE1lbW9yeTo6SGFuZGxlJiwgdWludDY0X3Qgc2l6ZSwgdWlu
dDY0X3QmIG5ld0NoYW5nZUNvdW50KTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykKLSAgICB2
b2lkIHdyaXRlVG9DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3Qg
UGFzdGVib2FyZENvbnRlbnQmKTsKLSAgICB2b2lkIHJlYWRGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIFBhc3RlYm9hcmRDb250ZW50Jik7CisgICAgdm9pZCB3cml0
ZVRvQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYlNlbGVj
dGlvbkRhdGEmKTsKKyAgICB2b2lkIHJlYWRGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFz
dGVib2FyZE5hbWUsIFdlYlNlbGVjdGlvbkRhdGEmKTsKIAogICAgIFdlYkZyYW1lUHJveHkqIG1f
cHJpbWFyeVNlbGVjdGlvbk93bmVyIHsgbnVsbHB0ciB9OwogICAgIFdlYkZyYW1lUHJveHkqIG1f
ZnJhbWVXcml0aW5nVG9DbGlwYm9hcmQgeyBudWxscHRyIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5pbgppbmRleCAx
OTVlNmIwLi42ODg1MWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFzdGVib2FyZFByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYXN0ZWJvYXJkUHJveHkubWVzc2FnZXMuaW4KQEAgLTUwLDcgKzUwLDcgQEAgbWVzc2Fn
ZXMgLT4gV2ViUGFzdGVib2FyZFByb3h5IHsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oR1RLKQot
ICAgIFdyaXRlVG9DbGlwYm9hcmQoU3RyaW5nIHBhc3RlYm9hcmROYW1lLCBzdHJ1Y3QgV2ViS2l0
OjpQYXN0ZWJvYXJkQ29udGVudCBwYXN0ZWJvYXJkQ29udGVudCkKLSAgICBSZWFkRnJvbUNsaXBi
b2FyZChTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+IChzdHJ1Y3QgV2ViS2l0OjpQYXN0ZWJvYXJk
Q29udGVudCBwYXN0ZWJvYXJkQ29udGVudCkKKyAgICBXcml0ZVRvQ2xpcGJvYXJkKFN0cmluZyBw
YXN0ZWJvYXJkTmFtZSwgc3RydWN0IFdlYktpdDo6V2ViU2VsZWN0aW9uRGF0YSBwYXN0ZWJvYXJk
Q29udGVudCkKKyAgICBSZWFkRnJvbUNsaXBib2FyZChTdHJpbmcgcGFzdGVib2FyZE5hbWUpIC0+
IChzdHJ1Y3QgV2ViS2l0OjpXZWJTZWxlY3Rpb25EYXRhIHBhc3RlYm9hcmRDb250ZW50KQogI2Vu
ZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0RyYWdBbmRE
cm9wSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0RyYWdBbmREcm9w
SGFuZGxlci5jcHAKaW5kZXggNmYyOWVmOC4uMzc4ZmIzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2d0ay9EcmFnQW5kRHJvcEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9ndGsvRHJhZ0FuZERyb3BIYW5kbGVyLmNwcApAQCAtMjksMTIgKzI5
LDEwIEBACiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKIAogI2luY2x1ZGUgIldlYlBhZ2VQcm94
eS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRGF0YU9iamVjdEd0ay5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvRHJhZ0RhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dSZWZQdHJHdGsuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0d0a1V0aWxpdGllcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFzdGVib2FyZEhl
bHBlci5oPgotI2luY2x1ZGUgPGd0ay9ndGsuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgog
I2luY2x1ZGUgPHd0Zi9nbGliL0dVbmlxdWVQdHIuaD4KIApAQCAtNDksOSArNDcsOCBAQCBEcmFn
QW5kRHJvcEhhbmRsZXI6OkRyYWdBbmREcm9wSGFuZGxlcihXZWJQYWdlUHJveHkmIHBhZ2UpCiAK
IERyYWdBbmREcm9wSGFuZGxlcjo6RHJvcHBpbmdDb250ZXh0OjpEcm9wcGluZ0NvbnRleHQoR2Rr
RHJhZ0NvbnRleHQqIGdka0NvbnRleHQsIGNvbnN0IEludFBvaW50JiBwb3NpdGlvbikKICAgICA6
IGdka0NvbnRleHQoZ2RrQ29udGV4dCkKLSAgICAsIGRhdGFPYmplY3QoRGF0YU9iamVjdEd0azo6
Y3JlYXRlKCkpCiAgICAgLCBsYXN0TW90aW9uUG9zaXRpb24ocG9zaXRpb24pCi0gICAgLCBkcm9w
SGFwcGVuZWQoZmFsc2UpCisgICAgLCBzZWxlY3Rpb25EYXRhKFNlbGVjdGlvbkRhdGE6OmNyZWF0
ZSgpKQogewogfQogCkBAIC0xMDgsMTQgKzEwNSwxNCBAQCBzdGF0aWMgaW5saW5lIERyYWdPcGVy
YXRpb24gZ2RrRHJhZ0FjdGlvblRvRHJhZ09wZXJhdGlvbihHZGtEcmFnQWN0aW9uIGdka0FjdGlv
bgogICAgIHJldHVybiBzdGF0aWNfY2FzdDxEcmFnT3BlcmF0aW9uPihhY3Rpb24pOwogfQogCi12
b2lkIERyYWdBbmREcm9wSGFuZGxlcjo6c3RhcnREcmFnKFJlZjxEYXRhT2JqZWN0R3RrPiYmIHNl
bGVjdGlvbiwgRHJhZ09wZXJhdGlvbiBkcmFnT3BlcmF0aW9uLCBSZWZQdHI8U2hhcmVhYmxlQml0
bWFwPiYmIGRyYWdJbWFnZSkKK3ZvaWQgRHJhZ0FuZERyb3BIYW5kbGVyOjpzdGFydERyYWcoUmVm
PFNlbGVjdGlvbkRhdGE+JiYgc2VsZWN0aW9uLCBEcmFnT3BlcmF0aW9uIGRyYWdPcGVyYXRpb24s
IFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+JiYgZHJhZ0ltYWdlKQogewogI2lmIEdUS19DSEVDS19W
RVJTSU9OKDMsIDE2LCAwKQotICAgIG1fZHJhZ2dpbmdEYXRhT2JqZWN0ID0gV1RGTW92ZShzZWxl
Y3Rpb24pOwotICAgIEdSZWZQdHI8R3RrVGFyZ2V0TGlzdD4gdGFyZ2V0TGlzdCA9IFBhc3RlYm9h
cmRIZWxwZXI6OnNpbmdsZXRvbigpLnRhcmdldExpc3RGb3JEYXRhT2JqZWN0KCptX2RyYWdnaW5n
RGF0YU9iamVjdCk7CisgICAgbV9kcmFnZ2luZ1NlbGVjdGlvbkRhdGEgPSBXVEZNb3ZlKHNlbGVj
dGlvbik7CisgICAgR1JlZlB0cjxHdGtUYXJnZXRMaXN0PiB0YXJnZXRMaXN0ID0gUGFzdGVib2Fy
ZEhlbHBlcjo6c2luZ2xldG9uKCkudGFyZ2V0TGlzdEZvclNlbGVjdGlvbkRhdGEoKm1fZHJhZ2dp
bmdTZWxlY3Rpb25EYXRhKTsKICNlbHNlCi0gICAgUmVmUHRyPERhdGFPYmplY3RHdGs+IGRhdGFP
YmplY3QgPSBXVEZNb3ZlKHNlbGVjdGlvbik7Ci0gICAgR1JlZlB0cjxHdGtUYXJnZXRMaXN0PiB0
YXJnZXRMaXN0ID0gUGFzdGVib2FyZEhlbHBlcjo6c2luZ2xldG9uKCkudGFyZ2V0TGlzdEZvckRh
dGFPYmplY3QoKmRhdGFPYmplY3QpOworICAgIFJlZlB0cjxTZWxlY3Rpb25EYXRhPiBzZWxlY3Rp
b25EYXRhID0gV1RGTW92ZShzZWxlY3Rpb24pOworICAgIEdSZWZQdHI8R3RrVGFyZ2V0TGlzdD4g
dGFyZ2V0TGlzdCA9IFBhc3RlYm9hcmRIZWxwZXI6OnNpbmdsZXRvbigpLnRhcmdldExpc3RGb3JT
ZWxlY3Rpb25EYXRhKCpzZWxlY3Rpb25EYXRhKTsKICNlbmRpZgogCiAgICAgR1VuaXF1ZVB0cjxH
ZGtFdmVudD4gY3VycmVudEV2ZW50KGd0a19nZXRfY3VycmVudF9ldmVudCgpKTsKQEAgLTEzMiw3
ICsxMjksNyBAQCB2b2lkIERyYWdBbmREcm9wSGFuZGxlcjo6c3RhcnREcmFnKFJlZjxEYXRhT2Jq
ZWN0R3RrPiYmIHNlbGVjdGlvbiwgRHJhZ09wZXJhdGlvbgogI2Vsc2UKICAgICAvLyBXZSBkb24n
dCBoYXZlIGd0a19kcmFnX2NhbmNlbCgpIGluIEdUSysgPCAzLjE2LCBzbyB3ZSB1c2UgdGhlIG9s
ZCBjb2RlLgogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTM4NDY4Ci0gICAgbV9kcmFnZ2luZ0RhdGFPYmplY3RzLnNldChjb250ZXh0LCBXVEZNb3Zl
KGRhdGFPYmplY3QpKTsKKyAgICBtX2RyYWdnaW5nU2VsZWN0aW9uRGF0YU1hcC5zZXQoY29udGV4
dCwgV1RGTW92ZShzZWxlY3Rpb25EYXRhKSk7CiAjZW5kaWYKIAogICAgIGlmIChkcmFnSW1hZ2Up
IHsKQEAgLTE1MiwxMSArMTQ5LDExIEBAIHZvaWQgRHJhZ0FuZERyb3BIYW5kbGVyOjpmaWxsRHJh
Z0RhdGEoR2RrRHJhZ0NvbnRleHQqIGNvbnRleHQsIEd0a1NlbGVjdGlvbkRhdGEqCiAgICAgaWYg
KG1fZHJhZ0NvbnRleHQuZ2V0KCkgIT0gY29udGV4dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
QVNTRVJUKG1fZHJhZ2dpbmdEYXRhT2JqZWN0KTsKLSAgICBQYXN0ZWJvYXJkSGVscGVyOjpzaW5n
bGV0b24oKS5maWxsU2VsZWN0aW9uRGF0YShzZWxlY3Rpb25EYXRhLCBpbmZvLCAqbV9kcmFnZ2lu
Z0RhdGFPYmplY3QpOworICAgIEFTU0VSVChtX2RyYWdnaW5nU2VsZWN0aW9uRGF0YSk7CisgICAg
UGFzdGVib2FyZEhlbHBlcjo6c2luZ2xldG9uKCkuZmlsbFNlbGVjdGlvbkRhdGEoKm1fZHJhZ2dp
bmdTZWxlY3Rpb25EYXRhLCBpbmZvLCBzZWxlY3Rpb25EYXRhKTsKICNlbHNlCi0gICAgaWYgKERh
dGFPYmplY3RHdGsqIGRhdGFPYmplY3QgPSBtX2RyYWdnaW5nRGF0YU9iamVjdHMuZ2V0KGNvbnRl
eHQpKQotICAgICAgICBQYXN0ZWJvYXJkSGVscGVyOjpzaW5nbGV0b24oKS5maWxsU2VsZWN0aW9u
RGF0YShzZWxlY3Rpb25EYXRhLCBpbmZvLCAqZGF0YU9iamVjdCk7CisgICAgaWYgKGF1dG8qIHNl
bGVjdGlvbiA9IG1fZHJhZ2dpbmdTZWxlY3Rpb25EYXRhTWFwLmdldChjb250ZXh0KSkKKyAgICAg
ICAgUGFzdGVib2FyZEhlbHBlcjo6c2luZ2xldG9uKCkuZmlsbFNlbGVjdGlvbkRhdGEoKnNlbGVj
dGlvbiwgaW5mbywgc2VsZWN0aW9uRGF0YSk7CiAjZW5kaWYKIH0KIApAQCAtMTY4LDEzICsxNjUs
MTMgQEAgdm9pZCBEcmFnQW5kRHJvcEhhbmRsZXI6OmZpbmlzaERyYWcoR2RrRHJhZ0NvbnRleHQq
IGNvbnRleHQpCiAgICAgaWYgKG1fZHJhZ0NvbnRleHQuZ2V0KCkgIT0gY29udGV4dCkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgaWYgKCFtX2RyYWdnaW5nRGF0YU9iamVjdCkKKyAgICBpZiAoIW1f
ZHJhZ2dpbmdTZWxlY3Rpb25EYXRhKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2RyYWdDb250
ZXh0ID0gbnVsbHB0cjsKLSAgICBtX2RyYWdnaW5nRGF0YU9iamVjdCA9IG51bGxwdHI7CisgICAg
bV9kcmFnZ2luZ1NlbGVjdGlvbkRhdGEgPSBudWxscHRyOwogI2Vsc2UKLSAgICBpZiAoIW1fZHJh
Z2dpbmdEYXRhT2JqZWN0cy5yZW1vdmUoY29udGV4dCkpCisgICAgaWYgKCFtX2RyYWdnaW5nU2Vs
ZWN0aW9uRGF0YU1hcC5yZW1vdmUoY29udGV4dCkpCiAgICAgICAgIHJldHVybjsKICNlbmRpZgog
CkBAIC0xODYsMTQgKzE4MywxNCBAQCB2b2lkIERyYWdBbmREcm9wSGFuZGxlcjo6ZmluaXNoRHJh
ZyhHZGtEcmFnQ29udGV4dCogY29udGV4dCkKICAgICBtX3BhZ2UuZHJhZ0VuZGVkKEludFBvaW50
KHgsIHkpLCBJbnRQb2ludCh4Um9vdCwgeVJvb3QpLCBnZGtEcmFnQWN0aW9uVG9EcmFnT3BlcmF0
aW9uKGdka19kcmFnX2NvbnRleHRfZ2V0X3NlbGVjdGVkX2FjdGlvbihjb250ZXh0KSkpOwogfQog
Ci1EYXRhT2JqZWN0R3RrKiBEcmFnQW5kRHJvcEhhbmRsZXI6OmRhdGFPYmplY3RGb3JEcm9wRGF0
YShHZGtEcmFnQ29udGV4dCogY29udGV4dCwgR3RrU2VsZWN0aW9uRGF0YSogc2VsZWN0aW9uRGF0
YSwgdW5zaWduZWQgaW5mbywgSW50UG9pbnQmIHBvc2l0aW9uKQorU2VsZWN0aW9uRGF0YSogRHJh
Z0FuZERyb3BIYW5kbGVyOjpkcm9wRGF0YVNlbGVjdGlvbihHZGtEcmFnQ29udGV4dCogY29udGV4
dCwgR3RrU2VsZWN0aW9uRGF0YSogc2VsZWN0aW9uRGF0YSwgdW5zaWduZWQgaW5mbywgSW50UG9p
bnQmIHBvc2l0aW9uKQogewogICAgIERyb3BwaW5nQ29udGV4dCogZHJvcHBpbmdDb250ZXh0ID0g
bV9kcm9wcGluZ0NvbnRleHRzLmdldChjb250ZXh0KTsKICAgICBpZiAoIWRyb3BwaW5nQ29udGV4
dCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBkcm9wcGluZ0NvbnRleHQtPnBlbmRp
bmdEYXRhUmVxdWVzdHMtLTsKLSAgICBQYXN0ZWJvYXJkSGVscGVyOjpzaW5nbGV0b24oKS5maWxs
RGF0YU9iamVjdEZyb21Ecm9wRGF0YShzZWxlY3Rpb25EYXRhLCBpbmZvLCAqZHJvcHBpbmdDb250
ZXh0LT5kYXRhT2JqZWN0KTsKKyAgICBQYXN0ZWJvYXJkSGVscGVyOjpzaW5nbGV0b24oKS5maWxs
U2VsZWN0aW9uRGF0YShzZWxlY3Rpb25EYXRhLCBpbmZvLCBkcm9wcGluZ0NvbnRleHQtPnNlbGVj
dGlvbkRhdGEpOwogICAgIGlmIChkcm9wcGluZ0NvbnRleHQtPnBlbmRpbmdEYXRhUmVxdWVzdHMp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0yMDIsMjQgKzE5OSwyNCBAQCBEYXRhT2Jq
ZWN0R3RrKiBEcmFnQW5kRHJvcEhhbmRsZXI6OmRhdGFPYmplY3RGb3JEcm9wRGF0YShHZGtEcmFn
Q29udGV4dCogY29udGV4dAogICAgIHBvc2l0aW9uID0gZHJvcHBpbmdDb250ZXh0LT5sYXN0TW90
aW9uUG9zaXRpb247CiAKICAgICAvLyBJZiB0aGVyZSBhcmUgbm8gbW9yZSBwZW5kaW5nIHJlcXVl
c3RzLCBzdGFydCBzZW5kaW5nIGRyYWdnaW5nIGRhdGEgdG8gV2ViQ29yZS4KLSAgICByZXR1cm4g
ZHJvcHBpbmdDb250ZXh0LT5kYXRhT2JqZWN0LmdldCgpOworICAgIHJldHVybiBkcm9wcGluZ0Nv
bnRleHQtPnNlbGVjdGlvbkRhdGEucHRyKCk7CiB9CiAKIHZvaWQgRHJhZ0FuZERyb3BIYW5kbGVy
OjpkcmFnRW50ZXJlZChHZGtEcmFnQ29udGV4dCogY29udGV4dCwgR3RrU2VsZWN0aW9uRGF0YSog
c2VsZWN0aW9uRGF0YSwgdW5zaWduZWQgaW5mbywgdW5zaWduZWQgdGltZSkKIHsKICAgICBJbnRQ
b2ludCBwb3NpdGlvbjsKLSAgICBEYXRhT2JqZWN0R3RrKiBkYXRhT2JqZWN0ID0gZGF0YU9iamVj
dEZvckRyb3BEYXRhKGNvbnRleHQsIHNlbGVjdGlvbkRhdGEsIGluZm8sIHBvc2l0aW9uKTsKLSAg
ICBpZiAoIWRhdGFPYmplY3QpCisgICAgYXV0byogc2VsZWN0aW9uID0gZHJvcERhdGFTZWxlY3Rp
b24oY29udGV4dCwgc2VsZWN0aW9uRGF0YSwgaW5mbywgcG9zaXRpb24pOworICAgIGlmICghc2Vs
ZWN0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBEcmFnRGF0YSBkcmFnRGF0YShkYXRhT2Jq
ZWN0LCBwb3NpdGlvbiwgY29udmVydFdpZGdldFBvaW50VG9TY3JlZW5Qb2ludChtX3BhZ2Uudmll
d1dpZGdldCgpLCBwb3NpdGlvbiksIGdka0RyYWdBY3Rpb25Ub0RyYWdPcGVyYXRpb24oZ2RrX2Ry
YWdfY29udGV4dF9nZXRfYWN0aW9ucyhjb250ZXh0KSkpOworICAgIERyYWdEYXRhIGRyYWdEYXRh
KHNlbGVjdGlvbiwgcG9zaXRpb24sIGNvbnZlcnRXaWRnZXRQb2ludFRvU2NyZWVuUG9pbnQobV9w
YWdlLnZpZXdXaWRnZXQoKSwgcG9zaXRpb24pLCBnZGtEcmFnQWN0aW9uVG9EcmFnT3BlcmF0aW9u
KGdka19kcmFnX2NvbnRleHRfZ2V0X2FjdGlvbnMoY29udGV4dCkpKTsKICAgICBtX3BhZ2UucmVz
ZXRDdXJyZW50RHJhZ0luZm9ybWF0aW9uKCk7CiAgICAgbV9wYWdlLmRyYWdFbnRlcmVkKGRyYWdE
YXRhKTsKICAgICBEcmFnT3BlcmF0aW9uIG9wZXJhdGlvbiA9IG1fcGFnZS5jdXJyZW50RHJhZ09w
ZXJhdGlvbigpOwogICAgIGdka19kcmFnX3N0YXR1cyhjb250ZXh0LCBkcmFnT3BlcmF0aW9uVG9T
aW5nbGVHZGtEcmFnQWN0aW9uKG9wZXJhdGlvbiksIHRpbWUpOwogfQogCi1EYXRhT2JqZWN0R3Rr
KiBEcmFnQW5kRHJvcEhhbmRsZXI6OnJlcXVlc3REcmFnRGF0YShHZGtEcmFnQ29udGV4dCogY29u
dGV4dCwgY29uc3QgSW50UG9pbnQmIHBvc2l0aW9uLCB1bnNpZ25lZCB0aW1lKQorU2VsZWN0aW9u
RGF0YSogRHJhZ0FuZERyb3BIYW5kbGVyOjpkcmFnRGF0YVNlbGVjdGlvbihHZGtEcmFnQ29udGV4
dCogY29udGV4dCwgY29uc3QgSW50UG9pbnQmIHBvc2l0aW9uLCB1bnNpZ25lZCB0aW1lKQogewog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxEcm9wcGluZ0NvbnRleHQ+JiBkcm9wcGluZ0NvbnRleHQgPSBt
X2Ryb3BwaW5nQ29udGV4dHMuYWRkKGNvbnRleHQsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsK
ICAgICBpZiAoIWRyb3BwaW5nQ29udGV4dCkgewpAQCAtMjM3LDE2ICsyMzQsMTYgQEAgRGF0YU9i
amVjdEd0ayogRHJhZ0FuZERyb3BIYW5kbGVyOjpyZXF1ZXN0RHJhZ0RhdGEoR2RrRHJhZ0NvbnRl
eHQqIGNvbnRleHQsIGNvbnMKICAgICBpZiAoZHJvcHBpbmdDb250ZXh0LT5wZW5kaW5nRGF0YVJl
cXVlc3RzID4gMCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gZHJvcHBp
bmdDb250ZXh0LT5kYXRhT2JqZWN0LmdldCgpOworICAgIHJldHVybiBkcm9wcGluZ0NvbnRleHQt
PnNlbGVjdGlvbkRhdGEucHRyKCk7CiB9CiAKIHZvaWQgRHJhZ0FuZERyb3BIYW5kbGVyOjpkcmFn
TW90aW9uKEdka0RyYWdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRQb2ludCYgcG9zaXRpb24s
IHVuc2lnbmVkIHRpbWUpCiB7Ci0gICAgRGF0YU9iamVjdEd0ayogZGF0YU9iamVjdCA9IHJlcXVl
c3REcmFnRGF0YShjb250ZXh0LCBwb3NpdGlvbiwgdGltZSk7Ci0gICAgaWYgKCFkYXRhT2JqZWN0
KQorICAgIGF1dG8qIHNlbGVjdGlvbiA9IGRyYWdEYXRhU2VsZWN0aW9uKGNvbnRleHQsIHBvc2l0
aW9uLCB0aW1lKTsKKyAgICBpZiAoIXNlbGVjdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAg
RHJhZ0RhdGEgZHJhZ0RhdGEoZGF0YU9iamVjdCwgcG9zaXRpb24sIGNvbnZlcnRXaWRnZXRQb2lu
dFRvU2NyZWVuUG9pbnQobV9wYWdlLnZpZXdXaWRnZXQoKSwgcG9zaXRpb24pLCBnZGtEcmFnQWN0
aW9uVG9EcmFnT3BlcmF0aW9uKGdka19kcmFnX2NvbnRleHRfZ2V0X2FjdGlvbnMoY29udGV4dCkp
KTsKKyAgICBEcmFnRGF0YSBkcmFnRGF0YShzZWxlY3Rpb24sIHBvc2l0aW9uLCBjb252ZXJ0V2lk
Z2V0UG9pbnRUb1NjcmVlblBvaW50KG1fcGFnZS52aWV3V2lkZ2V0KCksIHBvc2l0aW9uKSwgZ2Rr
RHJhZ0FjdGlvblRvRHJhZ09wZXJhdGlvbihnZGtfZHJhZ19jb250ZXh0X2dldF9hY3Rpb25zKGNv
bnRleHQpKSk7CiAgICAgbV9wYWdlLmRyYWdVcGRhdGVkKGRyYWdEYXRhKTsKICAgICBEcmFnT3Bl
cmF0aW9uIG9wZXJhdGlvbiA9IG1fcGFnZS5jdXJyZW50RHJhZ09wZXJhdGlvbigpOwogICAgIGdk
a19kcmFnX3N0YXR1cyhjb250ZXh0LCBkcmFnT3BlcmF0aW9uVG9TaW5nbGVHZGtEcmFnQWN0aW9u
KG9wZXJhdGlvbiksIHRpbWUpOwpAQCAtMjc1LDcgKzI3Miw3IEBAIHZvaWQgRHJhZ0FuZERyb3BI
YW5kbGVyOjpkcmFnTGVhdmUoR2RrRHJhZ0NvbnRleHQqIGNvbnRleHQpCiAgICAgICAgICAgICAv
LyBEb24ndCBjYWxsIGRyYWdFeGl0ZWQgaWYgd2UgaGF2ZSBqdXN0IHJlY2VpdmVkIGEgZHJhZy1k
cm9wIHNpZ25hbC4gVGhpcwogICAgICAgICAgICAgLy8gaGFwcGVucyBpbiB0aGUgY2FzZSBvZiBh
IHN1Y2Nlc3NmdWwgZHJvcCBvbnRvIHRoZSB2aWV3LgogICAgICAgICAgICAgY29uc3QgSW50UG9p
bnQmIHBvc2l0aW9uID0gZHJvcHBpbmdDb250ZXh0LT5sYXN0TW90aW9uUG9zaXRpb247Ci0gICAg
ICAgICAgICBEcmFnRGF0YSBkcmFnRGF0YShkcm9wcGluZ0NvbnRleHQtPmRhdGFPYmplY3QuZ2V0
KCksIHBvc2l0aW9uLCBjb252ZXJ0V2lkZ2V0UG9pbnRUb1NjcmVlblBvaW50KG1fcGFnZS52aWV3
V2lkZ2V0KCksIHBvc2l0aW9uKSwgRHJhZ09wZXJhdGlvbk5vbmUpOworICAgICAgICAgICAgRHJh
Z0RhdGEgZHJhZ0RhdGEoZHJvcHBpbmdDb250ZXh0LT5zZWxlY3Rpb25EYXRhLnB0cigpLCBwb3Np
dGlvbiwgY29udmVydFdpZGdldFBvaW50VG9TY3JlZW5Qb2ludChtX3BhZ2Uudmlld1dpZGdldCgp
LCBwb3NpdGlvbiksIERyYWdPcGVyYXRpb25Ob25lKTsKICAgICAgICAgICAgIG1fcGFnZS5kcmFn
RXhpdGVkKGRyYWdEYXRhKTsKICAgICAgICAgICAgIG1fcGFnZS5yZXNldEN1cnJlbnREcmFnSW5m
b3JtYXRpb24oKTsKICAgICAgICAgfQpAQCAtMjkyLDExICsyODksNyBAQCBib29sIERyYWdBbmRE
cm9wSGFuZGxlcjo6ZHJvcChHZGtEcmFnQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UG9pbnQm
IHBvc2l0aW9uLAogCiAgICAgZHJvcHBpbmdDb250ZXh0LT5kcm9wSGFwcGVuZWQgPSB0cnVlOwog
Ci0gICAgRGF0YU9iamVjdEd0ayogZGF0YU9iamVjdCA9IGRyb3BwaW5nQ29udGV4dC0+ZGF0YU9i
amVjdC5nZXQoKTsKLSAgICBpZiAoIWRhdGFPYmplY3QpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIERyYWdEYXRhIGRyYWdEYXRhKGRhdGFPYmplY3QsIHBvc2l0aW9uLCBjb252ZXJ0V2lk
Z2V0UG9pbnRUb1NjcmVlblBvaW50KG1fcGFnZS52aWV3V2lkZ2V0KCksIHBvc2l0aW9uKSwgZ2Rr
RHJhZ0FjdGlvblRvRHJhZ09wZXJhdGlvbihnZGtfZHJhZ19jb250ZXh0X2dldF9hY3Rpb25zKGNv
bnRleHQpKSk7CisgICAgRHJhZ0RhdGEgZHJhZ0RhdGEoZHJvcHBpbmdDb250ZXh0LT5zZWxlY3Rp
b25EYXRhLnB0cigpLCBwb3NpdGlvbiwgY29udmVydFdpZGdldFBvaW50VG9TY3JlZW5Qb2ludCht
X3BhZ2Uudmlld1dpZGdldCgpLCBwb3NpdGlvbiksIGdka0RyYWdBY3Rpb25Ub0RyYWdPcGVyYXRp
b24oZ2RrX2RyYWdfY29udGV4dF9nZXRfYWN0aW9ucyhjb250ZXh0KSkpOwogICAgIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSBoYW5kbGU7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlQXJy
YXkgc2FuZGJveEV4dGVuc2lvbkZvclVwbG9hZDsKICAgICBtX3BhZ2UucGVyZm9ybURyYWdPcGVy
YXRpb24oZHJhZ0RhdGEsIFN0cmluZygpLCBoYW5kbGUsIHNhbmRib3hFeHRlbnNpb25Gb3JVcGxv
YWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9EcmFnQW5kRHJv
cEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvRHJhZ0FuZERyb3BIYW5k
bGVyLmgKaW5kZXggNjcyZDFjNC4uMWMxZWEzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2d0ay9EcmFnQW5kRHJvcEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZ3RrL0RyYWdBbmREcm9wSGFuZGxlci5oCkBAIC0yNyw5ICsyNyw5IEBACiAKICNp
ZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogCi0jaW5jbHVkZSA8V2ViQ29yZS9EYXRhT2JqZWN0R3Rr
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EcmFnQWN0aW9ucy5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
SW50UG9pbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NlbGVjdGlvbkRhdGEuaD4KICNpbmNsdWRl
IDxndGsvZ3RrLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KQEAgLTQwLDYgKzQwLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX0d0a1NlbGVjdGlv
bkRhdGEgR3RrU2VsZWN0aW9uRGF0YTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRHJh
Z0RhdGE7CitjbGFzcyBTZWxlY3Rpb25EYXRhOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAg
LTUyLDcgKzUzLDcgQEAgY2xhc3MgRHJhZ0FuZERyb3BIYW5kbGVyIHsKIHB1YmxpYzoKICAgICBE
cmFnQW5kRHJvcEhhbmRsZXIoV2ViUGFnZVByb3h5Jik7CiAKLSAgICB2b2lkIHN0YXJ0RHJhZyhS
ZWY8V2ViQ29yZTo6RGF0YU9iamVjdEd0az4mJiwgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiwgUmVm
UHRyPFNoYXJlYWJsZUJpdG1hcD4mJiBkcmFnSW1hZ2UpOworICAgIHZvaWQgc3RhcnREcmFnKFJl
ZjxXZWJDb3JlOjpTZWxlY3Rpb25EYXRhPiYmLCBXZWJDb3JlOjpEcmFnT3BlcmF0aW9uLCBSZWZQ
dHI8U2hhcmVhYmxlQml0bWFwPiYmIGRyYWdJbWFnZSk7CiAgICAgdm9pZCBmaWxsRHJhZ0RhdGEo
R2RrRHJhZ0NvbnRleHQqLCBHdGtTZWxlY3Rpb25EYXRhKiwgdW5zaWduZWQgaW5mbyk7CiAgICAg
dm9pZCBmaW5pc2hEcmFnKEdka0RyYWdDb250ZXh0Kik7CiAKQEAgLTY1LDI2ICs2NiwyNiBAQCBw
cml2YXRlOgogICAgIHN0cnVjdCBEcm9wcGluZ0NvbnRleHQgewogICAgICAgICBEcm9wcGluZ0Nv
bnRleHQoR2RrRHJhZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9zaXRpb24p
OwogCi0gICAgICAgIEdka0RyYWdDb250ZXh0KiBnZGtDb250ZXh0OwotICAgICAgICBSZWZQdHI8
V2ViQ29yZTo6RGF0YU9iamVjdEd0az4gZGF0YU9iamVjdDsKKyAgICAgICAgR2RrRHJhZ0NvbnRl
eHQqIGdka0NvbnRleHQgeyBudWxscHRyIH07CiAgICAgICAgIFdlYkNvcmU6OkludFBvaW50IGxh
c3RNb3Rpb25Qb3NpdGlvbjsKLSAgICAgICAgdW5zaWduZWQgcGVuZGluZ0RhdGFSZXF1ZXN0czsK
LSAgICAgICAgYm9vbCBkcm9wSGFwcGVuZWQ7CisgICAgICAgIFJlZjxXZWJDb3JlOjpTZWxlY3Rp
b25EYXRhPiBzZWxlY3Rpb25EYXRhOworICAgICAgICB1bnNpZ25lZCBwZW5kaW5nRGF0YVJlcXVl
c3RzIHsgMCB9OworICAgICAgICBib29sIGRyb3BIYXBwZW5lZCB7IGZhbHNlIH07CiAgICAgfTsK
IAotICAgIFdlYkNvcmU6OkRhdGFPYmplY3RHdGsqIGRhdGFPYmplY3RGb3JEcm9wRGF0YShHZGtE
cmFnQ29udGV4dCosIEd0a1NlbGVjdGlvbkRhdGEqLCB1bnNpZ25lZCBpbmZvLCBXZWJDb3JlOjpJ
bnRQb2ludCYgcG9zaXRpb24pOwotICAgIFdlYkNvcmU6OkRhdGFPYmplY3RHdGsqIHJlcXVlc3RE
cmFnRGF0YShHZGtEcmFnQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb3NpdGlv
biwgdW5zaWduZWQgdGltZSk7CisgICAgV2ViQ29yZTo6U2VsZWN0aW9uRGF0YSogZHJvcERhdGFT
ZWxlY3Rpb24oR2RrRHJhZ0NvbnRleHQqLCBHdGtTZWxlY3Rpb25EYXRhKiwgdW5zaWduZWQgaW5m
bywgV2ViQ29yZTo6SW50UG9pbnQmIHBvc2l0aW9uKTsKKyAgICBXZWJDb3JlOjpTZWxlY3Rpb25E
YXRhKiBkcmFnRGF0YVNlbGVjdGlvbihHZGtEcmFnQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JiBwb3NpdGlvbiwgdW5zaWduZWQgdGltZSk7CiAKICAgICBXZWJQYWdlUHJveHkmIG1f
cGFnZTsKICAgICBIYXNoTWFwPEdka0RyYWdDb250ZXh0Kiwgc3RkOjp1bmlxdWVfcHRyPERyb3Bw
aW5nQ29udGV4dD4+IG1fZHJvcHBpbmdDb250ZXh0czsKIAogI2lmIEdUS19DSEVDS19WRVJTSU9O
KDMsIDE2LCAwKQogICAgIEdSZWZQdHI8R2RrRHJhZ0NvbnRleHQ+IG1fZHJhZ0NvbnRleHQ7Ci0g
ICAgUmVmUHRyPFdlYkNvcmU6OkRhdGFPYmplY3RHdGs+IG1fZHJhZ2dpbmdEYXRhT2JqZWN0Owor
ICAgIFJlZlB0cjxXZWJDb3JlOjpTZWxlY3Rpb25EYXRhPiBtX2RyYWdnaW5nU2VsZWN0aW9uRGF0
YTsKICNlbHNlCiAgICAgLy8gV2UgZG9uJ3QgaGF2ZSBndGtfZHJhZ19jYW5jZWwoKSBpbiBHVEsr
IDwgMy4xNiwgc28gd2UgdXNlIHRoZSBvbGQgY29kZS4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzODQ2OAotICAgIEhhc2hNYXA8R2RrRHJhZ0Nv
bnRleHQqLCBSZWZQdHI8V2ViQ29yZTo6RGF0YU9iamVjdEd0az4+IG1fZHJhZ2dpbmdEYXRhT2Jq
ZWN0czsKKyAgICBIYXNoTWFwPEdka0RyYWdDb250ZXh0KiwgUmVmUHRyPFdlYkNvcmU6OlNlbGVj
dGlvbkRhdGE+PiBtX2RyYWdnaW5nU2VsZWN0aW9uRGF0YU1hcDsKICNlbmRpZgogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQYXN0ZWJvYXJkUHJveHlH
dGsuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQYXN0ZWJvYXJkUHJveHlH
dGsuY3BwCmluZGV4IGUyNWE0YTAuLmI4YzlmN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9ndGsvV2ViUGFzdGVib2FyZFByb3h5R3RrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBhc3RlYm9hcmRQcm94eUd0ay5jcHAKQEAgLTI2LDMxICsy
NiwyOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlBhc3RlYm9hcmRQcm94
eS5oIgogCi0jaW5jbHVkZSAiUGFzdGVib2FyZENvbnRlbnQuaCIKICNpbmNsdWRlICJXZWJGcmFt
ZVByb3h5LmgiCisjaW5jbHVkZSAiV2ViU2VsZWN0aW9uRGF0YS5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvUGxhdGZvcm1QYXN0ZWJvYXJkLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvVGVtcG9yYXJ5Q2hhbmdl
Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5
Ojp3cml0ZVRvQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFBh
c3RlYm9hcmRDb250ZW50JiBwYXN0ZWJvYXJkQ29udGVudCkKK3ZvaWQgV2ViUGFzdGVib2FyZFBy
b3h5Ojp3cml0ZVRvQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFdlYlNlbGVjdGlvbkRhdGEmIHNlbGVjdGlvbikKIHsKICAgICBUZW1wb3JhcnlDaGFuZ2U8V2Vi
RnJhbWVQcm94eSo+IGZyYW1lV3JpdGluZ1RvQ2xpcGJvYXJkKG1fZnJhbWVXcml0aW5nVG9DbGlw
Ym9hcmQsIG1fcHJpbWFyeVNlbGVjdGlvbk93bmVyKTsKLSAgICBQbGF0Zm9ybVBhc3RlYm9hcmQo
cGFzdGVib2FyZE5hbWUpLndyaXRlVG9DbGlwYm9hcmQocGFzdGVib2FyZENvbnRlbnQuZGF0YU9i
amVjdC5nZXQoKSwgW3RoaXNdIHsKKyAgICBQbGF0Zm9ybVBhc3RlYm9hcmQocGFzdGVib2FyZE5h
bWUpLndyaXRlVG9DbGlwYm9hcmQoc2VsZWN0aW9uLnNlbGVjdGlvbkRhdGEsIFt0aGlzXSB7CiAg
ICAgICAgIGlmIChtX2ZyYW1lV3JpdGluZ1RvQ2xpcGJvYXJkID09IG1fcHJpbWFyeVNlbGVjdGlv
bk93bmVyKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBzZXRQcmltYXJ5U2VsZWN0aW9u
T3duZXIobnVsbHB0cik7CiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViUGFzdGVib2FyZFByb3h5Ojpy
ZWFkRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBQYXN0ZWJvYXJk
Q29udGVudCYgcGFzdGVib2FyZENvbnRlbnQpCit2b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6cmVh
ZEZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgV2ViU2VsZWN0aW9u
RGF0YSYgc2VsZWN0aW9uKQogewotICAgIHBhc3RlYm9hcmRDb250ZW50ID0gUGFzdGVib2FyZENv
bnRlbnQoUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKS5yZWFkRnJvbUNsaXBib2Fy
ZCgpKTsKKyAgICBzZWxlY3Rpb24gPSBXZWJTZWxlY3Rpb25EYXRhKFBsYXRmb3JtUGFzdGVib2Fy
ZChwYXN0ZWJvYXJkTmFtZSkucmVhZEZyb21DbGlwYm9hcmQoKSk7CiB9CiAKIHZvaWQgV2ViUGFz
dGVib2FyZFByb3h5OjpzZXRQcmltYXJ5U2VsZWN0aW9uT3duZXIoV2ViRnJhbWVQcm94eSogZnJh
bWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKaW5kZXggZTA0ZGNkNS4uMzg1
NzBhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcApAQCAtNzAsNyArNzAs
NyBAQAogI2VuZGlmCiAKICNpZiBQTEFURk9STShHVEspCi0jaW5jbHVkZSAiUGFzdGVib2FyZENv
bnRlbnQuaCIKKyNpbmNsdWRlICJXZWJTZWxlY3Rpb25EYXRhLmgiCiAjZW5kaWYKIAogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0zNDYsMTcgKzM0NiwxNyBAQCBsb25nIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6Y2hhbmdlQ291bnQoKQogI2lmIFBMQVRGT1JNKEdUSykKIC8vIFBhc3RlYm9h
cmRTdHJhdGVneQogCi12b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6d3JpdGVUb0NsaXBib2Fy
ZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBEYXRhT2JqZWN0R3RrJiBkYXRh
T2JqZWN0KQordm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OndyaXRlVG9DbGlwYm9hcmQoY29u
c3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU2VsZWN0aW9uRGF0YSYgc2VsZWN0aW9u
KQogewotICAgIFBhc3RlYm9hcmRDb250ZW50IHBhc3RlYm9hcmRDb250ZW50KGRhdGFPYmplY3Qp
OwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6V3JpdGVUb0NsaXBib2FyZChwYXN0
ZWJvYXJkTmFtZSwgcGFzdGVib2FyZENvbnRlbnQpLCAwKTsKKyAgICBXZWJTZWxlY3Rpb25EYXRh
IHNlbGVjdGlvbkRhdGEoc2VsZWN0aW9uKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJv
eHk6OldyaXRlVG9DbGlwYm9hcmQocGFzdGVib2FyZE5hbWUsIHNlbGVjdGlvbkRhdGEpLCAwKTsK
IH0KIAotUmVmPERhdGFPYmplY3RHdGs+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVhZEZyb21D
bGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKK1JlZjxTZWxlY3Rpb25EYXRh
PiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYg
cGFzdGVib2FyZE5hbWUpCiB7Ci0gICAgUGFzdGVib2FyZENvbnRlbnQgcGFzdGVib2FyZENvbnRl
bnQ7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZEZyb21DbGlwYm9h
cmQocGFzdGVib2FyZE5hbWUpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkRnJv
bUNsaXBib2FyZDo6UmVwbHkocGFzdGVib2FyZENvbnRlbnQpLCAwKTsKLSAgICByZXR1cm4gV1RG
TW92ZShwYXN0ZWJvYXJkQ29udGVudC5kYXRhT2JqZWN0KTsKKyAgICBXZWJTZWxlY3Rpb25EYXRh
IHNlbGVjdGlvbjsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5OjpSZWFkRnJv
bUNsaXBib2FyZChwYXN0ZWJvYXJkTmFtZSksIE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6
OlJlYWRGcm9tQ2xpcGJvYXJkOjpSZXBseShzZWxlY3Rpb24pLCAwKTsKKyAgICByZXR1cm4gV1RG
TW92ZShzZWxlY3Rpb24uc2VsZWN0aW9uRGF0YSk7CiB9CiAKICNlbmRpZiAvLyBQTEFURk9STShH
VEspCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAppbmRleCAxNjdjNjZkLi44ZDMwMDIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKQEAgLTg3LDggKzg3LDggQEAgcHJp
dmF0ZToKICAgICBsb25nIHNldFN0cmluZ0ZvclR5cGUoY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkVHlwZSwgY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJp
ZGU7CiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspCi0gICAgdm9pZCB3cml0ZVRvQ2xpcGJvYXJk
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdlYkNvcmU6OkRhdGFPYmplY3RH
dGsmKSBvdmVycmlkZTsKLSAgICBSZWY8V2ViQ29yZTo6RGF0YU9iamVjdEd0az4gcmVhZEZyb21D
bGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkgb3ZlcnJpZGU7CisgICAgdm9p
ZCB3cml0ZVRvQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFdl
YkNvcmU6OlNlbGVjdGlvbkRhdGEmKSBvdmVycmlkZTsKKyAgICBSZWY8V2ViQ29yZTo6U2VsZWN0
aW9uRGF0YT4gcmVhZEZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkg
b3ZlcnJpZGU7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHAK
aW5kZXggMjBkMTk1Mi4uZjVjYWRjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5j
cHAKQEAgLTI5LDExICsyOSwxMCBAQAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAKICNpbmNs
dWRlICJBcmd1bWVudENvZGVyc0d0ay5oIgotI2luY2x1ZGUgIlBhc3RlYm9hcmRDb250ZW50Lmgi
CiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2lu
Y2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9EYXRhT2Jq
ZWN0R3RrLmg+CisjaW5jbHVkZSAiV2ViU2VsZWN0aW9uRGF0YS5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvRGF0YVRyYW5zZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EcmFnRGF0YS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CkBAIC02OCw3ICs2Nyw3IEBAIHZvaWQgV2Vi
RHJhZ0NsaWVudDo6c3RhcnREcmFnKERyYWdJbWFnZVJlZiBkcmFnSW1hZ2UsIGNvbnN0IEludFBv
aW50JiBjbGllbnRQb3NpCiAKICAgICBtX3BhZ2UtPndpbGxTdGFydERyYWcoKTsKIAotICAgIFBh
c3RlYm9hcmRDb250ZW50IHNlbGVjdGlvbihkYXRhVHJhbnNmZXIucGFzdGVib2FyZCgpLmRhdGFP
YmplY3QoKSk7CisgICAgV2ViU2VsZWN0aW9uRGF0YSBzZWxlY3Rpb24oZGF0YVRyYW5zZmVyLnBh
c3RlYm9hcmQoKS5zZWxlY3Rpb25EYXRhKCkpOwogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpTdGFydERyYWcoc2VsZWN0aW9uLCBkYXRhVHJhbnNmZXIuc291cmNlT3Bl
cmF0aW9uKCksIGhhbmRsZSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJFZGl0b3JDbGllbnRHdGsuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRWRpdG9yQ2xpZW50R3Rr
LmNwcAppbmRleCBjNDhiODYzLi4xNTA1Yzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJFZGl0b3JDbGllbnRHdGsuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkVkaXRvckNs
aWVudEd0ay5jcHAKQEAgLTIxLDEyICsyMSwxMCBAQAogI2luY2x1ZGUgIldlYkVkaXRvckNsaWVu
dC5oIgogCiAjaW5jbHVkZSAiUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgiCi0jaW5jbHVkZSA8V2Vi
Q29yZS9EYXRhT2JqZWN0R3RrLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRWRpdG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FdmVudE5hbWVzLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVEZXN0
cnVjdGlvbk9ic2VydmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9QYXN0ZWJvYXJkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9tYXJrdXAu
aD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRl
eCBiMGIyMmQ3Li5hY2JlNWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCkBAIC0yMTcsOSArMjE3LDggQEAKICNlbmRpZgogCiAjaWYgUExBVEZP
Uk0oR1RLKQotI2luY2x1ZGUgIlBhc3RlYm9hcmRDb250ZW50LmgiCiAjaW5jbHVkZSAiV2ViUHJp
bnRPcGVyYXRpb25HdGsuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0RhdGFPYmplY3RHdGsuaD4KKyNp
bmNsdWRlICJXZWJTZWxlY3Rpb25EYXRhLmgiCiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgogI2VuZGlm
CiAKQEAgLTMzOTcsMTQgKzMzOTYsMTQgQEAgYm9vbCBXZWJQYWdlOjpoYW5kbGVFZGl0aW5nS2V5
Ym9hcmRFdmVudChLZXlib2FyZEV2ZW50KiBldnQpCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkK
IAogI2lmIFBMQVRGT1JNKEdUSykKLXZvaWQgV2ViUGFnZTo6cGVyZm9ybURyYWdDb250cm9sbGVy
QWN0aW9uKHVpbnQ2NF90IGFjdGlvbiwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBj
b25zdCBJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIHVpbnQ2NF90IGRyYWdnaW5nU291cmNlT3Bl
cmF0aW9uTWFzaywgUGFzdGVib2FyZENvbnRlbnQmJiBzZWxlY3Rpb24sIHVpbnQzMl90IGZsYWdz
KQordm9pZCBXZWJQYWdlOjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24odWludDY0X3QgYWN0
aW9uLCBjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9i
YWxQb3NpdGlvbiwgdWludDY0X3QgZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrLCBXZWJTZWxl
Y3Rpb25EYXRhJiYgc2VsZWN0aW9uLCB1aW50MzJfdCBmbGFncykKIHsKICAgICBpZiAoIW1fcGFn
ZSkgewogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1EcmFn
Q29udHJvbGxlckFjdGlvbihEcmFnT3BlcmF0aW9uTm9uZSwgZmFsc2UsIDApKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIERyYWdEYXRhIGRyYWdEYXRhKHNlbGVjdGlvbi5kYXRhT2Jq
ZWN0LnB0cigpLCBjbGllbnRQb3NpdGlvbiwgZ2xvYmFsUG9zaXRpb24sIHN0YXRpY19jYXN0PERy
YWdPcGVyYXRpb24+KGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayksIHN0YXRpY19jYXN0PERy
YWdBcHBsaWNhdGlvbkZsYWdzPihmbGFncykpOworICAgIERyYWdEYXRhIGRyYWdEYXRhKHNlbGVj
dGlvbi5zZWxlY3Rpb25EYXRhLnB0cigpLCBjbGllbnRQb3NpdGlvbiwgZ2xvYmFsUG9zaXRpb24s
IHN0YXRpY19jYXN0PERyYWdPcGVyYXRpb24+KGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzayks
IHN0YXRpY19jYXN0PERyYWdBcHBsaWNhdGlvbkZsYWdzPihmbGFncykpOwogICAgIHN3aXRjaCAo
YWN0aW9uKSB7CiAgICAgY2FzZSBEcmFnQ29udHJvbGxlckFjdGlvbkVudGVyZWQ6IHsKICAgICAg
ICAgRHJhZ09wZXJhdGlvbiByZXNvbHZlZERyYWdPcGVyYXRpb24gPSBtX3BhZ2UtPmRyYWdDb250
cm9sbGVyKCkuZHJhZ0VudGVyZWQoZHJhZ0RhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggYWZkMzM2My4uZmI4ZjVlMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xOTksMTUgKzE5OSwxMiBA
QCBzdHJ1Y3QgTG9hZFBhcmFtZXRlcnM7CiBzdHJ1Y3QgUHJpbnRJbmZvOwogc3RydWN0IFdlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnM7CiBzdHJ1Y3QgV2ViUHJlZmVyZW5jZXNTdG9yZTsKK3N0cnVj
dCBXZWJTZWxlY3Rpb25EYXRhOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiBjbGFzcyBSZW1vdGVM
YXllclRyZWVUcmFuc2FjdGlvbjsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oR1RLKQotc3RydWN0
IFBhc3RlYm9hcmRDb250ZW50OwotI2VuZGlmCi0KICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQog
Y2xhc3MgV2ViVG91Y2hFdmVudDsKICNlbmRpZgpAQCAtNzMzLDcgKzczMCw3IEBAIHB1YmxpYzoK
IAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAjaWYgUExBVEZPUk0oR1RLKQotICAgIHZvaWQg
cGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKHVpbnQ2NF90IGFjdGlvbiwgY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZ2xv
YmFsUG9zaXRpb24sIHVpbnQ2NF90IGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaywgUGFzdGVi
b2FyZENvbnRlbnQmJiwgdWludDMyX3QgZmxhZ3MpOworICAgIHZvaWQgcGVyZm9ybURyYWdDb250
cm9sbGVyQWN0aW9uKHVpbnQ2NF90IGFjdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNs
aWVudFBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIHVp
bnQ2NF90IGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaywgV2ViU2VsZWN0aW9uRGF0YSYmLCB1
aW50MzJfdCBmbGFncyk7CiAjZWxzZQogICAgIHZvaWQgcGVyZm9ybURyYWdDb250cm9sbGVyQWN0
aW9uKHVpbnQ2NF90IGFjdGlvbiwgV2ViQ29yZTo6SW50UG9pbnQgY2xpZW50UG9zaXRpb24sIFdl
YkNvcmU6OkludFBvaW50IGdsb2JhbFBvc2l0aW9uLCB1aW50NjRfdCBkcmFnZ2luZ1NvdXJjZU9w
ZXJhdGlvbk1hc2ssIGNvbnN0IFdURjo6U3RyaW5nJiBkcmFnU3RvcmFnZU5hbWUsIHVpbnQzMl90
IGZsYWdzLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmLCBjb25zdCBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGVBcnJheSYpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDUxMTY3YWUuLjZm
YWE2YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0yMzYsNyArMjM2LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFn
ZSBMZWdhY3lSZWNlaXZlciB7CiAKICAgICAjIERyYWcgYW5kIGRyb3AuCiAjaWYgUExBVEZPUk0o
R1RLKSAmJiBFTkFCTEUoRFJBR19TVVBQT1JUKQotICAgIFBlcmZvcm1EcmFnQ29udHJvbGxlckFj
dGlvbih1aW50NjRfdCBhY3Rpb24sIFdlYkNvcmU6OkludFBvaW50IGNsaWVudFBvc2l0aW9uLCBX
ZWJDb3JlOjpJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgdWludDY0X3QgZHJhZ2dpbmdTb3VyY2VP
cGVyYXRpb25NYXNrLCBzdHJ1Y3QgV2ViS2l0OjpQYXN0ZWJvYXJkQ29udGVudCBzZWxlY3Rpb24s
IHVpbnQzMl90IGZsYWdzKQorICAgIFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbih1aW50NjRf
dCBhY3Rpb24sIFdlYkNvcmU6OkludFBvaW50IGNsaWVudFBvc2l0aW9uLCBXZWJDb3JlOjpJbnRQ
b2ludCBnbG9iYWxQb3NpdGlvbiwgdWludDY0X3QgZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNr
LCBzdHJ1Y3QgV2ViS2l0OjpXZWJTZWxlY3Rpb25EYXRhIHNlbGVjdGlvbiwgdWludDMyX3QgZmxh
Z3MpCiAjZW5kaWYKICNpZiAhUExBVEZPUk0oR1RLKSAmJiBFTkFCTEUoRFJBR19TVVBQT1JUKQog
ICAgIFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbih1aW50NjRfdCBhY3Rpb24sIFdlYkNvcmU6
OkludFBvaW50IGNsaWVudFBvc2l0aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBnbG9iYWxQb3NpdGlv
biwgdWludDY0X3QgZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrLCBTdHJpbmcgZHJhZ1N0b3Jh
Z2VOYW1lLCB1aW50MzJfdCBmbGFncywgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUg
c2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGVB
cnJheSBzYW5kYm94RXh0ZW5zaW9uc0ZvclVwbG9hZCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289545</attachid>
            <date>2016-09-22 04:17:41 -0700</date>
            <delta_ts>2016-09-22 04:20:30 -0700</delta_ts>
            <desc>Fix the build</desc>
            <filename>wk-selection-data.diff</filename>
            <type>text/plain</type>
            <size>88441</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjNGE4MTY1Li4wNzhlOWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODkg
QEAKKzIwMTYtMDktMjIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIFJlbmFtZSBEYXRhT2JqZWN0R3RrIGFzIFNlbGVjdGlvbkRhdGEK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjM4MAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERhdGFPYmpl
Y3RHdGsgcmVwcmVzZW50cyB0aGUgZGF0YSBvZiBhIHNlbGVjdGlvbiwgbGlrZSBHdGtTZWxlY3Rp
b25EYXRhLCB1c2VkIGZvciBjbGlwYm9hcmQgYW5kIGRyYWcgYWRuIGRyb3AKKyAgICAgICAgb3Bl
cmF0aW9ucy4gRGF0YSBvYmplY3QgaXMgYSB2ZXJ5IGdlbmVyaWMgbmFtZSwgYW5kIHRoZSBHdGsg
c3VmZml4IHNvdW5kcyBsaWtlIGlmIHRoaXMgaXMgdGhlIEdUSyBpbXBsZW1lbnRhdGlvbgorICAg
ICAgICBvZiBhIGdlbmVyaWMgRGF0YU9iamVjdCBjbGFzcy4KKworICAgICAgICAqIFBsYXRmb3Jt
R1RLLmNtYWtlOgorICAgICAgICAqIGVkaXRpbmcvZ3RrL0VkaXRvckd0ay5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVGcmFnbWVudEZyb21QYXN0ZWJvYXJkRGF0YSk6CisgICAgICAgICog
cGFnZS9ndGsvRHJhZ0NvbnRyb2xsZXJHdGsuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL0RyYWdE
YXRhLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRm
b3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZFN0
cmF0ZWd5Ojp+UGFzdGVib2FyZFN0cmF0ZWd5KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9QbGF0Zm9ybVBhc3RlYm9hcmQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvRHJhZ0RhdGFH
dGsuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNyZWF0ZVByaXZhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UGFzdGVib2FyZDo6Y3JlYXRlRm9yRHJhZ0FuZERyb3ApOgorICAgICAgICAoV2ViQ29yZTo6
UGFzdGVib2FyZDo6UGFzdGVib2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpz
ZWxlY3Rpb25EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OnNlbGVjdGlvbkRhdGFUeXBlRnJvbUhU
TUxDbGlwYm9hcmRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OndyaXRlVG9D
bGlwYm9hcmQpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZEZyb21DbGlwYm9h
cmQpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVTdHJpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVQbGFpblRleHQpOgorICAgICAgICAoV2ViQ29y
ZTo6UGFzdGVib2FyZDo6d3JpdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3Jp
dGVQYXN0ZWJvYXJkKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNsZWFyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNhblNtYXJ0UmVwbGFjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6
Omhhc0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6dHlwZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZFN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpQ
YXN0ZWJvYXJkOjpyZWFkRmlsZW5hbWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUGFzdGVi
b2FyZEhlbHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkSGVscGVyOjpnZXRD
bGlwYm9hcmRDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkSGVscGVyOjp0
YXJnZXRMaXN0Rm9yU2VsZWN0aW9uRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJk
SGVscGVyOjpmaWxsU2VsZWN0aW9uRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRT
ZXREYXRhOjpDbGlwYm9hcmRTZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OmdldENsaXBib2Fy
ZENvbnRlbnRzQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZEhlbHBlcjo6
d3JpdGVDbGlwYm9hcmRDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpjbGVhckNsaXBib2Fy
ZENvbnRlbnRzQ2FsbGJhY2spOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9QYXN0
ZWJvYXJkSGVscGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1BsYXRmb3JtUGFzdGVib2Fy
ZEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybVBhc3RlYm9hcmQ6OndyaXRlVG9D
bGlwYm9hcmQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1QYXN0ZWJvYXJkOjpyZWFkRnJv
bUNsaXBib2FyZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuY3BwOiBS
ZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RhdGFPYmplY3RHdGsuY3Bw
LgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YTo6c2V0VGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpTZWxlY3Rpb25EYXRhOjpzZXRVUklMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNl
bGVjdGlvbkRhdGE6OnNldFVSTCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25EYXRhOjp1
cmxMYWJlbCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25EYXRhOjpjbGVhckFsbEV4Y2Vw
dEZpbGVuYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25EYXRhOjpjbGVhckFsbCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuaDogUmVuYW1lZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EYXRhT2JqZWN0R3RrLmguCisgICAgICAgIChXZWJD
b3JlOjpTZWxlY3Rpb25EYXRhOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9u
RGF0YTo6dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25EYXRhOjpoYXNUZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGE6OmNsZWFyVGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpTZWxlY3Rpb25EYXRhOjpzZXRNYXJrdXApOgorICAgICAgICAoV2ViQ29yZTo6U2Vs
ZWN0aW9uRGF0YTo6bWFya3VwKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGE6Omhh
c01hcmt1cCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25EYXRhOjpjbGVhck1hcmt1cCk6
CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25EYXRhOjpoYXNVUkwpOgorICAgICAgICAoV2Vi
Q29yZTo6U2VsZWN0aW9uRGF0YTo6Y2xlYXJVUkwpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0
aW9uRGF0YTo6ZmlsZW5hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGE6Omhh
c1VSSUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YTo6aGFzRmlsZW5hbWVz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGE6OnNldEltYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNlbGVjdGlvbkRhdGE6OmltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVj
dGlvbkRhdGE6Omhhc0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGE6OnVu
a25vd25UeXBlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25EYXRhOjp1bmtub3du
VHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YTo6aGFzVW5rbm93blR5cGVE
YXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGE6OmNhblNtYXJ0UmVwbGFjZSk6
CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rpb25EYXRhOjp1cmwpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6U2VsZWN0aW9uRGF0YTo6dXJpTGlzdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpTZWxlY3Rpb25EYXRhOjpjbGVhclVSSUxpc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6U2VsZWN0aW9uRGF0YTo6Y2xlYXJJbWFnZSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpTZWxlY3Rpb25EYXRhOjpzZXRVbmtub3duVHlwZURhdGEpOiBEZWxldGVkLgorCiAy
MDE2LTA5LTIyICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBD
YWNoZWRSZXNvdXJjZVJlcXVlc3Qgc2hvdWxkIHN0b3JlIGEgU2VjdXJpdHlPcmlnaW4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1HVEsuY21ha2UKaW5kZXggOWRhZWZmMy4uZTZhODk2NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZv
cm1HVEsuY21ha2UKQEAgLTE0OSw5ICsxNDksMTIgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VS
Q0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MveDExL1BsYXRmb3JtRGlzcGxheVgxMS5jcHAKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy94MTEvWFVuaXF1ZVJlc291cmNlLmNwcAogCisgICAgcGxhdGZv
cm0vZ3RrL0RyYWdEYXRhR3RrLmNwcAogICAgIHBsYXRmb3JtL2d0ay9FcnJvcnNHdGsuY3BwCiAg
ICAgcGxhdGZvcm0vZ3RrL01JTUVUeXBlUmVnaXN0cnlHdGsuY3BwCisgICAgcGxhdGZvcm0vZ3Rr
L1Bhc3RlYm9hcmRHdGsuY3BwCiAgICAgcGxhdGZvcm0vZ3RrL1Njcm9sbEFuaW1hdG9yR3RrLmNw
cAorICAgIHBsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmNwcAogICAgIHBsYXRmb3JtL2d0ay9U
ZW1wb3JhcnlMaW5rU3R1YnMuY3BwCiAgICAgcGxhdGZvcm0vZ3RrL1VzZXJBZ2VudEd0ay5jcHAK
IApAQCAtMjEwLDE0ICsyMTMsMTEgQEAgbGlzdChBUFBFTkQgV2ViQ29yZVBsYXRmb3JtR1RLX1NP
VVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1hZ2VHdGsuY3BwCiAKICAgICBwbGF0
Zm9ybS9ndGsvQ3Vyc29yR3RrLmNwcAotICAgIHBsYXRmb3JtL2d0ay9EYXRhT2JqZWN0R3RrLmNw
cAotICAgIHBsYXRmb3JtL2d0ay9EcmFnRGF0YUd0ay5jcHAKICAgICBwbGF0Zm9ybS9ndGsvRHJh
Z0ltYWdlR3RrLmNwcAogICAgIHBsYXRmb3JtL2d0ay9HUmVmUHRyR3RrLmNwcAogICAgIHBsYXRm
b3JtL2d0ay9HdGtVdGlsaXRpZXMuY3BwCiAgICAgcGxhdGZvcm0vZ3RrL0d0a1ZlcnNpb25pbmcu
YwogICAgIHBsYXRmb3JtL2d0ay9Mb2NhbGl6ZWRTdHJpbmdzR3RrLmNwcAotICAgIHBsYXRmb3Jt
L2d0ay9QYXN0ZWJvYXJkR3RrLmNwcAogICAgIHBsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVy
LmNwcAogICAgIHBsYXRmb3JtL2d0ay9QbGF0Zm9ybUtleWJvYXJkRXZlbnRHdGsuY3BwCiAgICAg
cGxhdGZvcm0vZ3RrL1BsYXRmb3JtTW91c2VFdmVudEd0ay5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL0VkaXRvckd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2d0ay9FZGl0b3JHdGsuY3BwCmluZGV4IDRlYTA4NTAuLjMyMDI4MTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL0VkaXRvckd0ay5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9ndGsvRWRpdG9yR3RrLmNwcApAQCAtMjgsNyArMjgsNiBAQAogI2luY2x1
ZGUgIkVkaXRvci5oIgogCiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKLSNpbmNsdWRlICJEYXRh
T2JqZWN0R3RrLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIkZy
YW1lLmgiCiAjaW5jbHVkZSAiSFRNTEVtYmVkRWxlbWVudC5oIgpAQCAtNDEsNiArNDAsNyBAQAog
I2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgogI2luY2x1
ZGUgIlNWR0ltYWdlRWxlbWVudC5oIgorI2luY2x1ZGUgIlNlbGVjdGlvbkRhdGEuaCIKICNpbmNs
dWRlICJYTGlua05hbWVzLmgiCiAjaW5jbHVkZSAibWFya3VwLmgiCiAKQEAgLTUzLDE2ICs1Mywx
NiBAQCBzdGF0aWMgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbVBh
c3RlYm9hcmREYXRhKFBhc3RlYm9hcmQmIHBhcwogICAgIGlmICghcGFzdGVib2FyZC5oYXNEYXRh
KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgY29uc3QgYXV0byYgZGF0YU9iamVj
dCA9IHBhc3RlYm9hcmQuZGF0YU9iamVjdCgpOwotICAgIGlmIChkYXRhT2JqZWN0Lmhhc01hcmt1
cCgpICYmIGZyYW1lLmRvY3VtZW50KCkpCi0gICAgICAgIHJldHVybiBjcmVhdGVGcmFnbWVudEZy
b21NYXJrdXAoKmZyYW1lLmRvY3VtZW50KCksIGRhdGFPYmplY3QubWFya3VwKCksIGVtcHR5U3Ry
aW5nKCksIERpc2FsbG93U2NyaXB0aW5nQW5kUGx1Z2luQ29udGVudCk7CisgICAgY29uc3QgYXV0
byYgc2VsZWN0aW9uID0gcGFzdGVib2FyZC5zZWxlY3Rpb25EYXRhKCk7CisgICAgaWYgKHNlbGVj
dGlvbi5oYXNNYXJrdXAoKSAmJiBmcmFtZS5kb2N1bWVudCgpKQorICAgICAgICByZXR1cm4gY3Jl
YXRlRnJhZ21lbnRGcm9tTWFya3VwKCpmcmFtZS5kb2N1bWVudCgpLCBzZWxlY3Rpb24ubWFya3Vw
KCksIGVtcHR5U3RyaW5nKCksIERpc2FsbG93U2NyaXB0aW5nQW5kUGx1Z2luQ29udGVudCk7CiAK
ICAgICBpZiAoIWFsbG93UGxhaW5UZXh0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAg
IGlmIChkYXRhT2JqZWN0Lmhhc1RleHQoKSkgeworICAgIGlmIChzZWxlY3Rpb24uaGFzVGV4dCgp
KSB7CiAgICAgICAgIGNob3NlUGxhaW5UZXh0ID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuIGNyZWF0
ZUZyYWdtZW50RnJvbVRleHQocmFuZ2UsIGRhdGFPYmplY3QudGV4dCgpKTsKKyAgICAgICAgcmV0
dXJuIGNyZWF0ZUZyYWdtZW50RnJvbVRleHQocmFuZ2UsIHNlbGVjdGlvbi50ZXh0KCkpOwogICAg
IH0KIAogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9ndGsvRHJhZ0NvbnRyb2xsZXJHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ndGsvRHJh
Z0NvbnRyb2xsZXJHdGsuY3BwCmluZGV4IGU2NmIwZTMuLjE1ODFjNWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvZ3RrL0RyYWdDb250cm9sbGVyR3RrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2d0ay9EcmFnQ29udHJvbGxlckd0ay5jcHAKQEAgLTI2LDE2ICsyNiwxMiBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRyYWdDb250cm9sbGVyLmgiCiAKLSNp
bmNsdWRlICJEYXRhT2JqZWN0R3RrLmgiCiAjaW5jbHVkZSAiRGF0YVRyYW5zZmVyLmgiCiAjaW5j
bHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCiAjaW5jbHVk
ZSAiRHJhZ0RhdGEuaCIKICNpbmNsdWRlICJFZGl0b3IuaCIKICNpbmNsdWRlICJFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiRnJhbWUuaCIKLSNpbmNsdWRlICJGcmFtZVZpZXcuaCIKLSNpbmNsdWRlICJQ
YWdlLmgiCiAjaW5jbHVkZSAiUGFzdGVib2FyZC5oIgogI2luY2x1ZGUgIm1hcmt1cC5oIgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vRHJhZ0RhdGEuaAppbmRleCAwN2U0ZmY3Li45NDAxZWRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0RyYWdEYXRhLmgKQEAgLTUwLDkgKzUwLDkgQEAgdHlwZWRlZiBzdHJ1Y3Qg
SURhdGFPYmplY3QqIERyYWdEYXRhUmVmOwogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogI2VsaWYgUExBVEZPUk0oR1RLKQogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgRGF0YU9i
amVjdEd0azsKK2NsYXNzIFNlbGVjdGlvbkRhdGE7CiB9Ci10eXBlZGVmIFdlYkNvcmU6OkRhdGFP
YmplY3RHdGsqIERyYWdEYXRhUmVmOwordHlwZWRlZiBXZWJDb3JlOjpTZWxlY3Rpb25EYXRhKiBE
cmFnRGF0YVJlZjsKICNlbGlmIFBMQVRGT1JNKEVGTCkgfHwgUExBVEZPUk0oSU9TKQogdHlwZWRl
ZiB2b2lkKiBEcmFnRGF0YVJlZjsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2Fy
ZC5oCmluZGV4IGQyMzgyNGUuLjRmYzcwODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Bhc3RlYm9hcmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkLmgKQEAgLTUwLDEyICs1MCwxMiBAQCB0eXBlZGVmIHN0cnVjdCBIV05EX18qIEhXTkQ7CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRGF0YU9iamVjdEd0azsKIGNsYXNzIERvY3Vt
ZW50RnJhZ21lbnQ7CiBjbGFzcyBEcmFnRGF0YTsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGcmFt
ZTsKIGNsYXNzIFJhbmdlOworY2xhc3MgU2VsZWN0aW9uRGF0YTsKIGNsYXNzIFNoYXJlZEJ1ZmZl
cjsKIAogZW51bSBTaG91bGRTZXJpYWxpemVTZWxlY3RlZFRleHRGb3JEYXRhVHJhbnNmZXIgeyBE
ZWZhdWx0U2VsZWN0ZWRUZXh0VHlwZSwgSW5jbHVkZUltYWdlQWx0VGV4dEZvckRhdGFUcmFuc2Zl
ciB9OwpAQCAtMTM4LDcgKzEzOCw3IEBAIHB1YmxpYzoKIAogI2lmIFBMQVRGT1JNKEdUSykKICAg
ICBleHBsaWNpdCBQYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgbmFtZSk7Ci0gICAgZXhwbGljaXQg
UGFzdGVib2FyZChEYXRhT2JqZWN0R3RrJik7CisgICAgZXhwbGljaXQgUGFzdGVib2FyZChTZWxl
Y3Rpb25EYXRhJik7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKFdJTikKQEAgLTE4Nyw3ICsxODcs
NyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKEdUSykKLSAgICBjb25zdCBEYXRh
T2JqZWN0R3RrJiBkYXRhT2JqZWN0KCkgY29uc3Q7CisgICAgY29uc3QgU2VsZWN0aW9uRGF0YSYg
c2VsZWN0aW9uRGF0YSgpIGNvbnN0OwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UGFzdGVi
b2FyZD4gY3JlYXRlRm9yR2xvYmFsU2VsZWN0aW9uKCk7CiAjZW5kaWYKIApAQCAtMjIyLDcgKzIy
Miw3IEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oR1RLKQogICAgIHZvaWQgd3JpdGVUb0NsaXBi
b2FyZCgpOwogICAgIHZvaWQgcmVhZEZyb21DbGlwYm9hcmQoKTsKLSAgICBSZWY8RGF0YU9iamVj
dEd0az4gbV9kYXRhT2JqZWN0OworICAgIFJlZjxTZWxlY3Rpb25EYXRhPiBtX3NlbGVjdGlvbkRh
dGE7CiAgICAgU3RyaW5nIG1fbmFtZTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCmluZGV4IDYwOGJmMWQuLjBhYTljYTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmRTdHJhdGVneS5oCkBAIC0zMywxNSArMzMs
MTIgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ29sb3I7CitjbGFzcyBTZWxlY3Rp
b25EYXRhOwogY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgVVJMOwogc3RydWN0IFBhc3RlYm9h
cmRJbWFnZTsKIHN0cnVjdCBQYXN0ZWJvYXJkV2ViQ29udGVudDsKIAotI2lmIFBMQVRGT1JNKEdU
SykKLWNsYXNzIERhdGFPYmplY3RHdGs7Ci0jZW5kaWYKLQogY2xhc3MgUGFzdGVib2FyZFN0cmF0
ZWd5IHsKIHB1YmxpYzoKICNpZiBQTEFURk9STShJT1MpCkBAIC03Myw4ICs3MCw4IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIGxvbmcgc2V0U3RyaW5nRm9yVHlwZShjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIHBhc3RlYm9hcmRUeXBlLCBjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9
IDA7CiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspCi0gICAgdmlydHVhbCB2b2lkIHdyaXRlVG9D
bGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgRGF0YU9iamVjdEd0
ayYpID0gMDsKLSAgICB2aXJ0dWFsIFJlZjxEYXRhT2JqZWN0R3RrPiByZWFkRnJvbUNsaXBib2Fy
ZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHdy
aXRlVG9DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgU2VsZWN0
aW9uRGF0YSYpID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxTZWxlY3Rpb25EYXRhPiByZWFkRnJvbUNs
aXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lKSA9IDA7CiAjZW5kaWYgLy8gUExB
VEZPUk0oR1RLKQogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgflBhc3RlYm9hcmRTdHJhdGVneSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVBhc3RlYm9hcmQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFzdGVib2FyZC5oCmluZGV4IDA2
NjE2NDkuLjBiYTAyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRm
b3JtUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtUGFz
dGVib2FyZC5oCkBAIC00MywxNSArNDMsMTIgQEAgT0JKQ19DTEFTUyBVSVBhc3RlYm9hcmQ7CiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIENvbG9yOworY2xhc3MgU2VsZWN0aW9uRGF0YTsK
IGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFVSTDsKIHN0cnVjdCBQYXN0ZWJvYXJkSW1hZ2U7
CiBzdHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRlbnQ7CiAKLSNpZiBQTEFURk9STShHVEspCi1jbGFz
cyBEYXRhT2JqZWN0R3RrOwotI2VuZGlmCi0KIGNsYXNzIFBsYXRmb3JtUGFzdGVib2FyZCB7CiBw
dWJsaWM6CiAgICAgLy8gRklYTUU6IHByb2JhYmx5IHdlIGRvbid0IG5lZWQgYSBjb25zdHJ1Y3Rv
ciB0aGF0IHRha2VzIGEgcGFzdGVib2FyZCBuYW1lIGZvciBpT1MuCkBAIC04Nyw4ICs4NCw4IEBA
IHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQgY291bnQoKTsKIAogI2lmIFBMQVRGT1JN
KEdUSykKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlVG9DbGlwYm9hcmQoY29uc3QgRGF0
YU9iamVjdEd0ayYsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmIHByaW1hcnlTZWxlY3Rpb25DbGVh
cmVkKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWY8RGF0YU9iamVjdEd0az4gcmVhZEZyb21DbGlw
Ym9hcmQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlVG9DbGlwYm9hcmQoY29uc3Qg
U2VsZWN0aW9uRGF0YSYsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmIHByaW1hcnlTZWxlY3Rpb25D
bGVhcmVkKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWY8U2VsZWN0aW9uRGF0YT4gcmVhZEZyb21D
bGlwYm9hcmQoKTsKICNlbmRpZgogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL0RyYWdEYXRhR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9EcmFnRGF0YUd0ay5jcHAKaW5kZXggNTk4YzQ0NC4uZDk4N2U0MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdEYXRhR3RrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0RhdGFHdGsuY3BwCkBAIC0xNyw3ICsxNyw3IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRHJhZ0RhdGEuaCIKIAotI2luY2x1ZGUgIkRh
dGFPYmplY3RHdGsuaCIKKyNpbmNsdWRlICJTZWxlY3Rpb25EYXRhLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3Rl
Ym9hcmRHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsu
Y3BwCmluZGV4IDA3ZDljYzAuLjViMTRhYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKQEAgLTIwLDExICsyMCwxMSBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIlBhc3RlYm9hcmQuaCIKIAotI2luY2x1ZGUgIkRhdGFPYmplY3RH
dGsuaCIKICNpbmNsdWRlICJEcmFnRGF0YS5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVk
ZSAiUGFzdGVib2FyZFN0cmF0ZWd5LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJhdGVnaWVzLmgi
CisjaW5jbHVkZSAiU2VsZWN0aW9uRGF0YS5oIgogI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCkBAIC01MSwxMyArNTEsMTMgQEAgc3RkOjp1bmlxdWVf
cHRyPFBhc3RlYm9hcmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckdsb2JhbFNlbGVjdGlvbigpCiAK
IHN0ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVQcml2YXRlKCkK
IHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxQYXN0ZWJvYXJkPihEYXRhT2JqZWN0R3Rr
OjpjcmVhdGUoKSk7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oU2Vs
ZWN0aW9uRGF0YTo6Y3JlYXRlKCkpOwogfQogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKIHN0
ZDo6dW5pcXVlX3B0cjxQYXN0ZWJvYXJkPiBQYXN0ZWJvYXJkOjpjcmVhdGVGb3JEcmFnQW5kRHJv
cCgpCiB7Ci0gICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGFzdGVib2FyZD4oRGF0YU9iamVj
dEd0azo6Y3JlYXRlKCkpOworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhc3RlYm9hcmQ+
KFNlbGVjdGlvbkRhdGE6OmNyZWF0ZSgpKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFBhc3RlYm9h
cmQ+IFBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKGNvbnN0IERyYWdEYXRhJiBkcmFn
RGF0YSkKQEAgLTc2LDEzICs3NiwxMyBAQCBQYXN0ZWJvYXJkSW1hZ2U6On5QYXN0ZWJvYXJkSW1h
Z2UoKQogewogfQogCi1QYXN0ZWJvYXJkOjpQYXN0ZWJvYXJkKERhdGFPYmplY3RHdGsmIGRhdGFP
YmplY3QpCi0gICAgOiBtX2RhdGFPYmplY3QoZGF0YU9iamVjdCkKK1Bhc3RlYm9hcmQ6OlBhc3Rl
Ym9hcmQoU2VsZWN0aW9uRGF0YSYgc2VsZWN0aW9uRGF0YSkKKyAgICA6IG1fc2VsZWN0aW9uRGF0
YShzZWxlY3Rpb25EYXRhKQogewogfQogCiBQYXN0ZWJvYXJkOjpQYXN0ZWJvYXJkKGNvbnN0IFN0
cmluZyYgbmFtZSkKLSAgICA6IG1fZGF0YU9iamVjdChEYXRhT2JqZWN0R3RrOjpjcmVhdGUoKSkK
KyAgICA6IG1fc2VsZWN0aW9uRGF0YShTZWxlY3Rpb25EYXRhOjpjcmVhdGUoKSkKICAgICAsIG1f
bmFtZShuYW1lKQogewogfQpAQCAtOTEsMTIgKzkxLDEyIEBAIFBhc3RlYm9hcmQ6On5QYXN0ZWJv
YXJkKCkKIHsKIH0KIAotY29uc3QgRGF0YU9iamVjdEd0ayYgUGFzdGVib2FyZDo6ZGF0YU9iamVj
dCgpIGNvbnN0Citjb25zdCBTZWxlY3Rpb25EYXRhJiBQYXN0ZWJvYXJkOjpzZWxlY3Rpb25EYXRh
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9kYXRhT2JqZWN0LmdldCgpOworICAgIHJldHVybiBt
X3NlbGVjdGlvbkRhdGEuZ2V0KCk7CiB9CiAKLXN0YXRpYyBDbGlwYm9hcmREYXRhVHlwZSBkYXRh
T2JqZWN0VHlwZUZyb21IVE1MQ2xpcGJvYXJkVHlwZShjb25zdCBTdHJpbmcmIHJhd1R5cGUpCitz
dGF0aWMgQ2xpcGJvYXJkRGF0YVR5cGUgc2VsZWN0aW9uRGF0YVR5cGVGcm9tSFRNTENsaXBib2Fy
ZFR5cGUoY29uc3QgU3RyaW5nJiByYXdUeXBlKQogewogICAgIFN0cmluZyB0eXBlKHJhd1R5cGUu
c3RyaXBXaGl0ZVNwYWNlKCkpOwogCkBAIC0xMjQsMzEgKzEyNCwzMSBAQCB2b2lkIFBhc3RlYm9h
cmQ6OndyaXRlVG9DbGlwYm9hcmQoKQogICAgIGlmIChtX25hbWUuaXNOdWxsKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3ko
KS0+d3JpdGVUb0NsaXBib2FyZChtX25hbWUsIG1fZGF0YU9iamVjdCk7CisgICAgcGxhdGZvcm1T
dHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT53cml0ZVRvQ2xpcGJvYXJkKG1fbmFt
ZSwgbV9zZWxlY3Rpb25EYXRhKTsKIH0KIAogdm9pZCBQYXN0ZWJvYXJkOjpyZWFkRnJvbUNsaXBi
b2FyZCgpCiB7CiAgICAgaWYgKG1fbmFtZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwotICAg
IG1fZGF0YU9iamVjdCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3ko
KS0+cmVhZEZyb21DbGlwYm9hcmQobV9uYW1lKTsKKyAgICBtX3NlbGVjdGlvbkRhdGEgPSBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnJlYWRGcm9tQ2xpcGJvYXJk
KG1fbmFtZSk7CiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVTdHJpbmcoY29uc3QgU3RyaW5n
JiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpCiB7Ci0gICAgc3dpdGNoIChkYXRhT2JqZWN0VHlw
ZUZyb21IVE1MQ2xpcGJvYXJkVHlwZSh0eXBlKSkgeworICAgIHN3aXRjaCAoc2VsZWN0aW9uRGF0
YVR5cGVGcm9tSFRNTENsaXBib2FyZFR5cGUodHlwZSkpIHsKICAgICBjYXNlIENsaXBib2FyZERh
dGFUeXBlVVJJTGlzdDoKICAgICBjYXNlIENsaXBib2FyZERhdGFUeXBlVVJMOgotICAgICAgICBt
X2RhdGFPYmplY3QtPnNldFVSSUxpc3QoZGF0YSk7CisgICAgICAgIG1fc2VsZWN0aW9uRGF0YS0+
c2V0VVJJTGlzdChkYXRhKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQ2xpcGJvYXJkRGF0
YVR5cGVNYXJrdXA6Ci0gICAgICAgIG1fZGF0YU9iamVjdC0+c2V0TWFya3VwKGRhdGEpOworICAg
ICAgICBtX3NlbGVjdGlvbkRhdGEtPnNldE1hcmt1cChkYXRhKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIGNhc2UgQ2xpcGJvYXJkRGF0YVR5cGVUZXh0OgotICAgICAgICBtX2RhdGFPYmplY3QtPnNl
dFRleHQoZGF0YSk7CisgICAgICAgIG1fc2VsZWN0aW9uRGF0YS0+c2V0VGV4dChkYXRhKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIGNhc2UgQ2xpcGJvYXJkRGF0YVR5cGVVbmtub3duOgotICAgICAg
ICBtX2RhdGFPYmplY3QtPnNldFVua25vd25UeXBlRGF0YSh0eXBlLCBkYXRhKTsKKyAgICAgICAg
bV9zZWxlY3Rpb25EYXRhLT5zZXRVbmtub3duVHlwZURhdGEodHlwZSwgZGF0YSk7CiAgICAgICAg
IHJldHVybjsKICAgICBjYXNlIENsaXBib2FyZERhdGFUeXBlSW1hZ2U6CiAgICAgICAgIGJyZWFr
OwpAQCAtMTU3LDkgKzE1Nyw5IEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGVTdHJpbmcoY29uc3Qg
U3RyaW5nJiB0eXBlLCBjb25zdCBTdHJpbmcmIGRhdGEpCiAKIHZvaWQgUGFzdGVib2FyZDo6d3Jp
dGVQbGFpblRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBTbWFydFJlcGxhY2VPcHRpb24gc21hcnRS
ZXBsYWNlT3B0aW9uKQogewotICAgIG1fZGF0YU9iamVjdC0+Y2xlYXJBbGwoKTsKLSAgICBtX2Rh
dGFPYmplY3QtPnNldFRleHQodGV4dCk7Ci0gICAgbV9kYXRhT2JqZWN0LT5zZXRDYW5TbWFydFJl
cGxhY2Uoc21hcnRSZXBsYWNlT3B0aW9uID09IENhblNtYXJ0UmVwbGFjZSk7CisgICAgbV9zZWxl
Y3Rpb25EYXRhLT5jbGVhckFsbCgpOworICAgIG1fc2VsZWN0aW9uRGF0YS0+c2V0VGV4dCh0ZXh0
KTsKKyAgICBtX3NlbGVjdGlvbkRhdGEtPnNldENhblNtYXJ0UmVwbGFjZShzbWFydFJlcGxhY2VP
cHRpb24gPT0gQ2FuU21hcnRSZXBsYWNlKTsKIAogICAgIHdyaXRlVG9DbGlwYm9hcmQoKTsKIH0K
QEAgLTE2OCw1MiArMTY4LDUyIEBAIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVi
b2FyZFVSTCYgcGFzdGVib2FyZFVSTCkKIHsKICAgICBBU1NFUlQoIXBhc3RlYm9hcmRVUkwudXJs
LmlzRW1wdHkoKSk7CiAKLSAgICBtX2RhdGFPYmplY3QtPmNsZWFyQWxsKCk7Ci0gICAgbV9kYXRh
T2JqZWN0LT5zZXRVUkwocGFzdGVib2FyZFVSTC51cmwsIHBhc3RlYm9hcmRVUkwudGl0bGUpOwor
ICAgIG1fc2VsZWN0aW9uRGF0YS0+Y2xlYXJBbGwoKTsKKyAgICBtX3NlbGVjdGlvbkRhdGEtPnNl
dFVSTChwYXN0ZWJvYXJkVVJMLnVybCwgcGFzdGVib2FyZFVSTC50aXRsZSk7CiAKICAgICB3cml0
ZVRvQ2xpcGJvYXJkKCk7CiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVi
b2FyZEltYWdlJiBwYXN0ZWJvYXJkSW1hZ2UpCiB7Ci0gICAgbV9kYXRhT2JqZWN0LT5jbGVhckFs
bCgpOworICAgIG1fc2VsZWN0aW9uRGF0YS0+Y2xlYXJBbGwoKTsKICAgICBpZiAoIXBhc3RlYm9h
cmRJbWFnZS51cmwudXJsLmlzRW1wdHkoKSkgewotICAgICAgICBtX2RhdGFPYmplY3QtPnNldFVS
TChwYXN0ZWJvYXJkSW1hZ2UudXJsLnVybCwgcGFzdGVib2FyZEltYWdlLnVybC50aXRsZSk7Ci0g
ICAgICAgIG1fZGF0YU9iamVjdC0+c2V0TWFya3VwKHBhc3RlYm9hcmRJbWFnZS51cmwubWFya3Vw
KTsKKyAgICAgICAgbV9zZWxlY3Rpb25EYXRhLT5zZXRVUkwocGFzdGVib2FyZEltYWdlLnVybC51
cmwsIHBhc3RlYm9hcmRJbWFnZS51cmwudGl0bGUpOworICAgICAgICBtX3NlbGVjdGlvbkRhdGEt
PnNldE1hcmt1cChwYXN0ZWJvYXJkSW1hZ2UudXJsLm1hcmt1cCk7CiAgICAgfQotICAgIG1fZGF0
YU9iamVjdC0+c2V0SW1hZ2UocGFzdGVib2FyZEltYWdlLmltYWdlLmdldCgpKTsKKyAgICBtX3Nl
bGVjdGlvbkRhdGEtPnNldEltYWdlKHBhc3RlYm9hcmRJbWFnZS5pbWFnZS5nZXQoKSk7CiAKICAg
ICB3cml0ZVRvQ2xpcGJvYXJkKCk7CiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6d3JpdGUoY29uc3Qg
UGFzdGVib2FyZFdlYkNvbnRlbnQmIHBhc3RlYm9hcmRDb250ZW50KQogewotICAgIG1fZGF0YU9i
amVjdC0+Y2xlYXJBbGwoKTsKLSAgICBtX2RhdGFPYmplY3QtPnNldFRleHQocGFzdGVib2FyZENv
bnRlbnQudGV4dCk7Ci0gICAgbV9kYXRhT2JqZWN0LT5zZXRNYXJrdXAocGFzdGVib2FyZENvbnRl
bnQubWFya3VwKTsKLSAgICBtX2RhdGFPYmplY3QtPnNldENhblNtYXJ0UmVwbGFjZShwYXN0ZWJv
YXJkQ29udGVudC5jYW5TbWFydENvcHlPckRlbGV0ZSk7CisgICAgbV9zZWxlY3Rpb25EYXRhLT5j
bGVhckFsbCgpOworICAgIG1fc2VsZWN0aW9uRGF0YS0+c2V0VGV4dChwYXN0ZWJvYXJkQ29udGVu
dC50ZXh0KTsKKyAgICBtX3NlbGVjdGlvbkRhdGEtPnNldE1hcmt1cChwYXN0ZWJvYXJkQ29udGVu
dC5tYXJrdXApOworICAgIG1fc2VsZWN0aW9uRGF0YS0+c2V0Q2FuU21hcnRSZXBsYWNlKHBhc3Rl
Ym9hcmRDb250ZW50LmNhblNtYXJ0Q29weU9yRGVsZXRlKTsKIAogICAgIHdyaXRlVG9DbGlwYm9h
cmQoKTsKIH0KIAogdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVBhc3RlYm9hcmQoY29uc3QgUGFzdGVi
b2FyZCYgc291cmNlUGFzdGVib2FyZCkKIHsKLSAgICBjb25zdCBhdXRvJiBzb3VyY2VEYXRhT2Jq
ZWN0ID0gc291cmNlUGFzdGVib2FyZC5kYXRhT2JqZWN0KCk7Ci0gICAgbV9kYXRhT2JqZWN0LT5j
bGVhckFsbCgpOworICAgIGNvbnN0IGF1dG8mIHNvdXJjZURhdGFPYmplY3QgPSBzb3VyY2VQYXN0
ZWJvYXJkLnNlbGVjdGlvbkRhdGEoKTsKKyAgICBtX3NlbGVjdGlvbkRhdGEtPmNsZWFyQWxsKCk7
CiAKICAgICBpZiAoc291cmNlRGF0YU9iamVjdC5oYXNUZXh0KCkpCi0gICAgICAgIG1fZGF0YU9i
amVjdC0+c2V0VGV4dChzb3VyY2VEYXRhT2JqZWN0LnRleHQoKSk7CisgICAgICAgIG1fc2VsZWN0
aW9uRGF0YS0+c2V0VGV4dChzb3VyY2VEYXRhT2JqZWN0LnRleHQoKSk7CiAgICAgaWYgKHNvdXJj
ZURhdGFPYmplY3QuaGFzTWFya3VwKCkpCi0gICAgICAgIG1fZGF0YU9iamVjdC0+c2V0TWFya3Vw
KHNvdXJjZURhdGFPYmplY3QubWFya3VwKCkpOworICAgICAgICBtX3NlbGVjdGlvbkRhdGEtPnNl
dE1hcmt1cChzb3VyY2VEYXRhT2JqZWN0Lm1hcmt1cCgpKTsKICAgICBpZiAoc291cmNlRGF0YU9i
amVjdC5oYXNVUkwoKSkKLSAgICAgICAgbV9kYXRhT2JqZWN0LT5zZXRVUkwoc291cmNlRGF0YU9i
amVjdC51cmwoKSwgc291cmNlRGF0YU9iamVjdC51cmxMYWJlbCgpKTsKKyAgICAgICAgbV9zZWxl
Y3Rpb25EYXRhLT5zZXRVUkwoc291cmNlRGF0YU9iamVjdC51cmwoKSwgc291cmNlRGF0YU9iamVj
dC51cmxMYWJlbCgpKTsKICAgICBpZiAoc291cmNlRGF0YU9iamVjdC5oYXNVUklMaXN0KCkpCi0g
ICAgICAgIG1fZGF0YU9iamVjdC0+c2V0VVJJTGlzdChzb3VyY2VEYXRhT2JqZWN0LnVyaUxpc3Qo
KSk7CisgICAgICAgIG1fc2VsZWN0aW9uRGF0YS0+c2V0VVJJTGlzdChzb3VyY2VEYXRhT2JqZWN0
LnVyaUxpc3QoKSk7CiAgICAgaWYgKHNvdXJjZURhdGFPYmplY3QuaGFzSW1hZ2UoKSkKLSAgICAg
ICAgbV9kYXRhT2JqZWN0LT5zZXRJbWFnZShzb3VyY2VEYXRhT2JqZWN0LmltYWdlKCkpOworICAg
ICAgICBtX3NlbGVjdGlvbkRhdGEtPnNldEltYWdlKHNvdXJjZURhdGFPYmplY3QuaW1hZ2UoKSk7
CiAgICAgaWYgKHNvdXJjZURhdGFPYmplY3QuaGFzVW5rbm93blR5cGVEYXRhKCkpIHsKICAgICAg
ICAgZm9yIChhdXRvJiBpdCA6IHNvdXJjZURhdGFPYmplY3QudW5rbm93blR5cGVzKCkpCi0gICAg
ICAgICAgICBtX2RhdGFPYmplY3QtPnNldFVua25vd25UeXBlRGF0YShpdC5rZXksIGl0LnZhbHVl
KTsKKyAgICAgICAgICAgIG1fc2VsZWN0aW9uRGF0YS0+c2V0VW5rbm93blR5cGVEYXRhKGl0Lmtl
eSwgaXQudmFsdWUpOwogICAgIH0KIAogICAgIHdyaXRlVG9DbGlwYm9hcmQoKTsKQEAgLTIyNSwy
OCArMjI1LDI4IEBAIHZvaWQgUGFzdGVib2FyZDo6Y2xlYXIoKQogICAgIC8vIGRvZXMgbm90IGFm
ZmVjdCB3aGV0aGVyIGFueSBmaWxlcyB3ZXJlIGluY2x1ZGVkIGluIHRoZSBkcmFnLCBzbyB0aGUg
dHlwZXMKICAgICAvLyBhdHRyaWJ1dGUncyBsaXN0IG1pZ2h0IHN0aWxsIG5vdCBiZSBlbXB0eSBh
ZnRlciBjYWxsaW5nIGNsZWFyRGF0YSgpIChpdCB3b3VsZAogICAgIC8vIHN0aWxsIGNvbnRhaW4g
dGhlICJGaWxlcyIgc3RyaW5nIGlmIGFueSBmaWxlcyB3ZXJlIGluY2x1ZGVkIGluIHRoZSBkcmFn
KS4iCi0gICAgbV9kYXRhT2JqZWN0LT5jbGVhckFsbEV4Y2VwdEZpbGVuYW1lcygpOworICAgIG1f
c2VsZWN0aW9uRGF0YS0+Y2xlYXJBbGxFeGNlcHRGaWxlbmFtZXMoKTsKICAgICB3cml0ZVRvQ2xp
cGJvYXJkKCk7CiB9CiAKIHZvaWQgUGFzdGVib2FyZDo6Y2xlYXIoY29uc3QgU3RyaW5nJiB0eXBl
KQogewotICAgIHN3aXRjaCAoZGF0YU9iamVjdFR5cGVGcm9tSFRNTENsaXBib2FyZFR5cGUodHlw
ZSkpIHsKKyAgICBzd2l0Y2ggKHNlbGVjdGlvbkRhdGFUeXBlRnJvbUhUTUxDbGlwYm9hcmRUeXBl
KHR5cGUpKSB7CiAgICAgY2FzZSBDbGlwYm9hcmREYXRhVHlwZVVSSUxpc3Q6CiAgICAgY2FzZSBD
bGlwYm9hcmREYXRhVHlwZVVSTDoKLSAgICAgICAgbV9kYXRhT2JqZWN0LT5jbGVhclVSSUxpc3Qo
KTsKKyAgICAgICAgbV9zZWxlY3Rpb25EYXRhLT5jbGVhclVSSUxpc3QoKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBDbGlwYm9hcmREYXRhVHlwZU1hcmt1cDoKLSAgICAgICAgbV9kYXRhT2Jq
ZWN0LT5jbGVhck1hcmt1cCgpOworICAgICAgICBtX3NlbGVjdGlvbkRhdGEtPmNsZWFyTWFya3Vw
KCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ2xpcGJvYXJkRGF0YVR5cGVUZXh0OgotICAg
ICAgICBtX2RhdGFPYmplY3QtPmNsZWFyVGV4dCgpOworICAgICAgICBtX3NlbGVjdGlvbkRhdGEt
PmNsZWFyVGV4dCgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENsaXBib2FyZERhdGFUeXBl
SW1hZ2U6Ci0gICAgICAgIG1fZGF0YU9iamVjdC0+Y2xlYXJJbWFnZSgpOworICAgICAgICBtX3Nl
bGVjdGlvbkRhdGEtPmNsZWFySW1hZ2UoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDbGlw
Ym9hcmREYXRhVHlwZVVua25vd246Ci0gICAgICAgIG1fZGF0YU9iamVjdC0+Y2xlYXJBbGwoKTsK
KyAgICAgICAgbV9zZWxlY3Rpb25EYXRhLT5jbGVhckFsbCgpOwogICAgICAgICBicmVhazsKICAg
ICB9CiAKQEAgLTI1Niw3ICsyNTYsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OmNsZWFyKGNvbnN0IFN0
cmluZyYgdHlwZSkKIGJvb2wgUGFzdGVib2FyZDo6Y2FuU21hcnRSZXBsYWNlKCkKIHsKICAgICBy
ZWFkRnJvbUNsaXBib2FyZCgpOwotICAgIHJldHVybiBtX2RhdGFPYmplY3QtPmNhblNtYXJ0UmVw
bGFjZSgpOworICAgIHJldHVybiBtX3NlbGVjdGlvbkRhdGEtPmNhblNtYXJ0UmVwbGFjZSgpOwog
fQogCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKQEAgLTI2OCwxMyArMjY4LDEzIEBAIHZvaWQg
UGFzdGVib2FyZDo6c2V0RHJhZ0ltYWdlKERyYWdJbWFnZVJlZiwgY29uc3QgSW50UG9pbnQmKQog
dm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQpCiB7CiAgICAg
cmVhZEZyb21DbGlwYm9hcmQoKTsKLSAgICB0ZXh0LnRleHQgPSBtX2RhdGFPYmplY3QtPnRleHQo
KTsKKyAgICB0ZXh0LnRleHQgPSBtX3NlbGVjdGlvbkRhdGEtPnRleHQoKTsKIH0KIAogYm9vbCBQ
YXN0ZWJvYXJkOjpoYXNEYXRhKCkKIHsKICAgICByZWFkRnJvbUNsaXBib2FyZCgpOwotICAgIHJl
dHVybiBtX2RhdGFPYmplY3QtPmhhc1RleHQoKSB8fCBtX2RhdGFPYmplY3QtPmhhc01hcmt1cCgp
IHx8IG1fZGF0YU9iamVjdC0+aGFzVVJJTGlzdCgpIHx8IG1fZGF0YU9iamVjdC0+aGFzSW1hZ2Uo
KSB8fCBtX2RhdGFPYmplY3QtPmhhc1Vua25vd25UeXBlRGF0YSgpOworICAgIHJldHVybiBtX3Nl
bGVjdGlvbkRhdGEtPmhhc1RleHQoKSB8fCBtX3NlbGVjdGlvbkRhdGEtPmhhc01hcmt1cCgpIHx8
IG1fc2VsZWN0aW9uRGF0YS0+aGFzVVJJTGlzdCgpIHx8IG1fc2VsZWN0aW9uRGF0YS0+aGFzSW1h
Z2UoKSB8fCBtX3NlbGVjdGlvbkRhdGEtPmhhc1Vua25vd25UeXBlRGF0YSgpOwogfQogCiBWZWN0
b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjp0eXBlcygpCkBAIC0yODIsMjQgKzI4MiwyNCBAQCBWZWN0
b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjp0eXBlcygpCiAgICAgcmVhZEZyb21DbGlwYm9hcmQoKTsK
IAogICAgIFZlY3RvcjxTdHJpbmc+IHR5cGVzOwotICAgIGlmIChtX2RhdGFPYmplY3QtPmhhc1Rl
eHQoKSkgeworICAgIGlmIChtX3NlbGVjdGlvbkRhdGEtPmhhc1RleHQoKSkgewogICAgICAgICB0
eXBlcy5hcHBlbmQoQVNDSUlMaXRlcmFsKCJ0ZXh0L3BsYWluIikpOwogICAgICAgICB0eXBlcy5h
cHBlbmQoQVNDSUlMaXRlcmFsKCJUZXh0IikpOwogICAgICAgICB0eXBlcy5hcHBlbmQoQVNDSUlM
aXRlcmFsKCJ0ZXh0IikpOwogICAgIH0KIAotICAgIGlmIChtX2RhdGFPYmplY3QtPmhhc01hcmt1
cCgpKQorICAgIGlmIChtX3NlbGVjdGlvbkRhdGEtPmhhc01hcmt1cCgpKQogICAgICAgICB0eXBl
cy5hcHBlbmQoQVNDSUlMaXRlcmFsKCJ0ZXh0L2h0bWwiKSk7CiAKLSAgICBpZiAobV9kYXRhT2Jq
ZWN0LT5oYXNVUklMaXN0KCkpIHsKKyAgICBpZiAobV9zZWxlY3Rpb25EYXRhLT5oYXNVUklMaXN0
KCkpIHsKICAgICAgICAgdHlwZXMuYXBwZW5kKEFTQ0lJTGl0ZXJhbCgidGV4dC91cmktbGlzdCIp
KTsKICAgICAgICAgdHlwZXMuYXBwZW5kKEFTQ0lJTGl0ZXJhbCgiVVJMIikpOwogICAgIH0KIAot
ICAgIGlmIChtX2RhdGFPYmplY3QtPmhhc0ZpbGVuYW1lcygpKQorICAgIGlmIChtX3NlbGVjdGlv
bkRhdGEtPmhhc0ZpbGVuYW1lcygpKQogICAgICAgICB0eXBlcy5hcHBlbmQoQVNDSUlMaXRlcmFs
KCJGaWxlcyIpKTsKIAotICAgIGZvciAoYXV0byYga2V5IDogbV9kYXRhT2JqZWN0LT51bmtub3du
VHlwZXMoKS5rZXlzKCkpCisgICAgZm9yIChhdXRvJiBrZXkgOiBtX3NlbGVjdGlvbkRhdGEtPnVu
a25vd25UeXBlcygpLmtleXMoKSkKICAgICAgICAgdHlwZXMuYXBwZW5kKGtleSk7CiAKICAgICBy
ZXR1cm4gdHlwZXM7CkBAIC0zMDksMTcgKzMwOSwxNyBAQCBTdHJpbmcgUGFzdGVib2FyZDo6cmVh
ZFN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgcmVhZEZyb21DbGlwYm9hcmQoKTsK
IAotICAgIHN3aXRjaCAoZGF0YU9iamVjdFR5cGVGcm9tSFRNTENsaXBib2FyZFR5cGUodHlwZSkp
IHsKKyAgICBzd2l0Y2ggKHNlbGVjdGlvbkRhdGFUeXBlRnJvbUhUTUxDbGlwYm9hcmRUeXBlKHR5
cGUpKSB7CiAgICAgY2FzZSBDbGlwYm9hcmREYXRhVHlwZVVSSUxpc3Q6Ci0gICAgICAgIHJldHVy
biBtX2RhdGFPYmplY3QtPnVyaUxpc3QoKTsKKyAgICAgICAgcmV0dXJuIG1fc2VsZWN0aW9uRGF0
YS0+dXJpTGlzdCgpOwogICAgIGNhc2UgQ2xpcGJvYXJkRGF0YVR5cGVVUkw6Ci0gICAgICAgIHJl
dHVybiBtX2RhdGFPYmplY3QtPnVybCgpOworICAgICAgICByZXR1cm4gbV9zZWxlY3Rpb25EYXRh
LT51cmwoKTsKICAgICBjYXNlIENsaXBib2FyZERhdGFUeXBlTWFya3VwOgotICAgICAgICByZXR1
cm4gbV9kYXRhT2JqZWN0LT5tYXJrdXAoKTsKKyAgICAgICAgcmV0dXJuIG1fc2VsZWN0aW9uRGF0
YS0+bWFya3VwKCk7CiAgICAgY2FzZSBDbGlwYm9hcmREYXRhVHlwZVRleHQ6Ci0gICAgICAgIHJl
dHVybiBtX2RhdGFPYmplY3QtPnRleHQoKTsKKyAgICAgICAgcmV0dXJuIG1fc2VsZWN0aW9uRGF0
YS0+dGV4dCgpOwogICAgIGNhc2UgQ2xpcGJvYXJkRGF0YVR5cGVVbmtub3duOgotICAgICAgICBy
ZXR1cm4gbV9kYXRhT2JqZWN0LT51bmtub3duVHlwZURhdGEodHlwZSk7CisgICAgICAgIHJldHVy
biBtX3NlbGVjdGlvbkRhdGEtPnVua25vd25UeXBlRGF0YSh0eXBlKTsKICAgICBjYXNlIENsaXBi
b2FyZERhdGFUeXBlSW1hZ2U6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTMzMCw3ICszMzAs
NyBAQCBTdHJpbmcgUGFzdGVib2FyZDo6cmVhZFN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGUpCiBW
ZWN0b3I8U3RyaW5nPiBQYXN0ZWJvYXJkOjpyZWFkRmlsZW5hbWVzKCkKIHsKICAgICByZWFkRnJv
bUNsaXBib2FyZCgpOwotICAgIHJldHVybiBtX2RhdGFPYmplY3QtPmZpbGVuYW1lcygpOworICAg
IHJldHVybiBtX3NlbGVjdGlvbkRhdGEtPmZpbGVuYW1lcygpOwogfQogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5jcHAKaW5kZXggZTY3ZWZi
ZC4uYTU0NTlkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3Rl
Ym9hcmRIZWxwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJv
YXJkSGVscGVyLmNwcApAQCAtMjMsOCArMjMsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIlBhc3RlYm9hcmRIZWxwZXIuaCIKIAotI2luY2x1ZGUgIkRhdGFPYmplY3RHdGsuaCIK
ICNpbmNsdWRlICJHdGtWZXJzaW9uaW5nLmgiCisjaW5jbHVkZSAiU2VsZWN0aW9uRGF0YS5oIgog
I2luY2x1ZGUgPGd0ay9ndGsuaD4KICNpbmNsdWRlIDx3dGYvVGVtcG9yYXJ5Q2hhbmdlLmg+CiAj
aW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgpAQCAtODksNjYgKzg5LDkwIEBAIHN0YXRp
YyBTdHJpbmcgc2VsZWN0aW9uRGF0YVRvVVRGOFN0cmluZyhHdGtTZWxlY3Rpb25EYXRhKiBkYXRh
KQogICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KG1hcmt1cFN0cmluZy5nZXQoKSk7CiB9CiAK
LXZvaWQgUGFzdGVib2FyZEhlbHBlcjo6Z2V0Q2xpcGJvYXJkQ29udGVudHMoR3RrQ2xpcGJvYXJk
KiBjbGlwYm9hcmQsIERhdGFPYmplY3RHdGsmIGRhdGFPYmplY3QpCit2b2lkIFBhc3RlYm9hcmRI
ZWxwZXI6OmdldENsaXBib2FyZENvbnRlbnRzKEd0a0NsaXBib2FyZCogY2xpcGJvYXJkLCBTZWxl
Y3Rpb25EYXRhJiBzZWxlY3Rpb24pCiB7CiAgICAgaWYgKGd0a19jbGlwYm9hcmRfd2FpdF9pc190
ZXh0X2F2YWlsYWJsZShjbGlwYm9hcmQpKSB7CiAgICAgICAgIEdVbmlxdWVQdHI8Z2NoYXI+IHRl
eHREYXRhKGd0a19jbGlwYm9hcmRfd2FpdF9mb3JfdGV4dChjbGlwYm9hcmQpKTsKICAgICAgICAg
aWYgKHRleHREYXRhKQotICAgICAgICAgICAgZGF0YU9iamVjdC5zZXRUZXh0KFN0cmluZzo6ZnJv
bVVURjgodGV4dERhdGEuZ2V0KCkpKTsKKyAgICAgICAgICAgIHNlbGVjdGlvbi5zZXRUZXh0KFN0
cmluZzo6ZnJvbVVURjgodGV4dERhdGEuZ2V0KCkpKTsKICAgICB9CiAKICAgICBpZiAoZ3RrX2Ns
aXBib2FyZF93YWl0X2lzX3RhcmdldF9hdmFpbGFibGUoY2xpcGJvYXJkLCBtYXJrdXBBdG9tKSkg
ewogICAgICAgICBpZiAoR3RrU2VsZWN0aW9uRGF0YSogZGF0YSA9IGd0a19jbGlwYm9hcmRfd2Fp
dF9mb3JfY29udGVudHMoY2xpcGJvYXJkLCBtYXJrdXBBdG9tKSkgewogICAgICAgICAgICAgU3Ry
aW5nIG1hcmt1cChzZWxlY3Rpb25EYXRhVG9VVEY4U3RyaW5nKGRhdGEpKTsKICAgICAgICAgICAg
IHJlbW92ZU1hcmt1cFByZWZpeChtYXJrdXApOwotICAgICAgICAgICAgZGF0YU9iamVjdC5zZXRN
YXJrdXAobWFya3VwKTsKKyAgICAgICAgICAgIHNlbGVjdGlvbi5zZXRNYXJrdXAobWFya3VwKTsK
ICAgICAgICAgICAgIGd0a19zZWxlY3Rpb25fZGF0YV9mcmVlKGRhdGEpOwogICAgICAgICB9CiAg
ICAgfQogCiAgICAgaWYgKGd0a19jbGlwYm9hcmRfd2FpdF9pc190YXJnZXRfYXZhaWxhYmxlKGNs
aXBib2FyZCwgdXJpTGlzdEF0b20pKSB7CiAgICAgICAgIGlmIChHdGtTZWxlY3Rpb25EYXRhKiBk
YXRhID0gZ3RrX2NsaXBib2FyZF93YWl0X2Zvcl9jb250ZW50cyhjbGlwYm9hcmQsIHVyaUxpc3RB
dG9tKSkgewotICAgICAgICAgICAgZGF0YU9iamVjdC5zZXRVUklMaXN0KHNlbGVjdGlvbkRhdGFU
b1VURjhTdHJpbmcoZGF0YSkpOworICAgICAgICAgICAgc2VsZWN0aW9uLnNldFVSSUxpc3Qoc2Vs
ZWN0aW9uRGF0YVRvVVRGOFN0cmluZyhkYXRhKSk7CiAgICAgICAgICAgICBndGtfc2VsZWN0aW9u
X2RhdGFfZnJlZShkYXRhKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGRhdGFPYmplY3Quc2V0
Q2FuU21hcnRSZXBsYWNlKGd0a19jbGlwYm9hcmRfd2FpdF9pc190YXJnZXRfYXZhaWxhYmxlKGNs
aXBib2FyZCwgc21hcnRQYXN0ZUF0b20pKTsKKyAgICBzZWxlY3Rpb24uc2V0Q2FuU21hcnRSZXBs
YWNlKGd0a19jbGlwYm9hcmRfd2FpdF9pc190YXJnZXRfYXZhaWxhYmxlKGNsaXBib2FyZCwgc21h
cnRQYXN0ZUF0b20pKTsKIH0KIAotdm9pZCBQYXN0ZWJvYXJkSGVscGVyOjpmaWxsU2VsZWN0aW9u
RGF0YShHdGtTZWxlY3Rpb25EYXRhKiBzZWxlY3Rpb25EYXRhLCBndWludCBpbmZvLCBjb25zdCBE
YXRhT2JqZWN0R3RrJiBkYXRhT2JqZWN0KQorR1JlZlB0cjxHdGtUYXJnZXRMaXN0PiBQYXN0ZWJv
YXJkSGVscGVyOjp0YXJnZXRMaXN0Rm9yU2VsZWN0aW9uRGF0YShjb25zdCBTZWxlY3Rpb25EYXRh
JiBzZWxlY3Rpb24pCit7CisgICAgR1JlZlB0cjxHdGtUYXJnZXRMaXN0PiBsaXN0ID0gYWRvcHRH
UmVmKGd0a190YXJnZXRfbGlzdF9uZXcobnVsbHB0ciwgMCkpOworCisgICAgaWYgKHNlbGVjdGlv
bi5oYXNUZXh0KCkpCisgICAgICAgIGd0a190YXJnZXRfbGlzdF9hZGRfdGV4dF90YXJnZXRzKGxp
c3QuZ2V0KCksIFRhcmdldFR5cGVUZXh0KTsKKworICAgIGlmIChzZWxlY3Rpb24uaGFzTWFya3Vw
KCkpCisgICAgICAgIGd0a190YXJnZXRfbGlzdF9hZGQobGlzdC5nZXQoKSwgbWFya3VwQXRvbSwg
MCwgVGFyZ2V0VHlwZU1hcmt1cCk7CisKKyAgICBpZiAoc2VsZWN0aW9uLmhhc1VSSUxpc3QoKSkg
eworICAgICAgICBndGtfdGFyZ2V0X2xpc3RfYWRkX3VyaV90YXJnZXRzKGxpc3QuZ2V0KCksIFRh
cmdldFR5cGVVUklMaXN0KTsKKyAgICAgICAgZ3RrX3RhcmdldF9saXN0X2FkZChsaXN0LmdldCgp
LCBuZXRzY2FwZVVSTEF0b20sIDAsIFRhcmdldFR5cGVOZXRzY2FwZVVSTCk7CisgICAgfQorCisg
ICAgaWYgKHNlbGVjdGlvbi5oYXNJbWFnZSgpKQorICAgICAgICBndGtfdGFyZ2V0X2xpc3RfYWRk
X2ltYWdlX3RhcmdldHMobGlzdC5nZXQoKSwgVGFyZ2V0VHlwZUltYWdlLCBUUlVFKTsKKworICAg
IGlmIChzZWxlY3Rpb24uaGFzVW5rbm93blR5cGVEYXRhKCkpCisgICAgICAgIGd0a190YXJnZXRf
bGlzdF9hZGQobGlzdC5nZXQoKSwgdW5rbm93bkF0b20sIDAsIFRhcmdldFR5cGVVbmtub3duKTsK
KworICAgIGlmIChzZWxlY3Rpb24uY2FuU21hcnRSZXBsYWNlKCkpCisgICAgICAgIGd0a190YXJn
ZXRfbGlzdF9hZGQobGlzdC5nZXQoKSwgc21hcnRQYXN0ZUF0b20sIDAsIFRhcmdldFR5cGVTbWFy
dFBhc3RlKTsKKworICAgIHJldHVybiBsaXN0OworfQorCit2b2lkIFBhc3RlYm9hcmRIZWxwZXI6
OmZpbGxTZWxlY3Rpb25EYXRhKGNvbnN0IFNlbGVjdGlvbkRhdGEmIHNlbGVjdGlvbiwgdW5zaWdu
ZWQgaW5mbywgR3RrU2VsZWN0aW9uRGF0YSogc2VsZWN0aW9uRGF0YSkKIHsKICAgICBpZiAoaW5m
byA9PSBUYXJnZXRUeXBlVGV4dCkKLSAgICAgICAgZ3RrX3NlbGVjdGlvbl9kYXRhX3NldF90ZXh0
KHNlbGVjdGlvbkRhdGEsIGRhdGFPYmplY3QudGV4dCgpLnV0ZjgoKS5kYXRhKCksIC0xKTsKKyAg
ICAgICAgZ3RrX3NlbGVjdGlvbl9kYXRhX3NldF90ZXh0KHNlbGVjdGlvbkRhdGEsIHNlbGVjdGlv
bi50ZXh0KCkudXRmOCgpLmRhdGEoKSwgLTEpOwogCiAgICAgZWxzZSBpZiAoaW5mbyA9PSBUYXJn
ZXRUeXBlTWFya3VwKSB7CiAgICAgICAgIC8vIFNvbWUgTGludXggYXBwbGljYXRpb25zIHJlZnVz
ZSB0byBhY2NlcHQgcGFzdGVkIG1hcmt1cCB1bmxlc3MgaXQgaXMKICAgICAgICAgLy8gcHJlZml4
ZWQgYnkgYSBjb250ZW50LXR5cGUgbWV0YSB0YWcuCi0gICAgICAgIENTdHJpbmcgbWFya3VwID0g
U3RyaW5nKGdNYXJrdXBQcmVmaXggKyBkYXRhT2JqZWN0Lm1hcmt1cCgpKS51dGY4KCk7Ci0gICAg
ICAgIGd0a19zZWxlY3Rpb25fZGF0YV9zZXQoc2VsZWN0aW9uRGF0YSwgbWFya3VwQXRvbSwgOCwK
LSAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZ3VjaGFyKj4obWFya3VwLmRhdGEo
KSksIG1hcmt1cC5sZW5ndGgoKSk7CisgICAgICAgIENTdHJpbmcgbWFya3VwID0gU3RyaW5nKGdN
YXJrdXBQcmVmaXggKyBzZWxlY3Rpb24ubWFya3VwKCkpLnV0ZjgoKTsKKyAgICAgICAgZ3RrX3Nl
bGVjdGlvbl9kYXRhX3NldChzZWxlY3Rpb25EYXRhLCBtYXJrdXBBdG9tLCA4LCByZWludGVycHJl
dF9jYXN0PGNvbnN0IGd1Y2hhcio+KG1hcmt1cC5kYXRhKCkpLCBtYXJrdXAubGVuZ3RoKCkpOwog
CiAgICAgfSBlbHNlIGlmIChpbmZvID09IFRhcmdldFR5cGVVUklMaXN0KSB7Ci0gICAgICAgIENT
dHJpbmcgdXJpTGlzdCA9IGRhdGFPYmplY3QudXJpTGlzdCgpLnV0ZjgoKTsKLSAgICAgICAgZ3Rr
X3NlbGVjdGlvbl9kYXRhX3NldChzZWxlY3Rpb25EYXRhLCB1cmlMaXN0QXRvbSwgOCwKLSAgICAg
ICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZ3VjaGFyKj4odXJpTGlzdC5kYXRhKCkpLCB1
cmlMaXN0Lmxlbmd0aCgpKTsKKyAgICAgICAgQ1N0cmluZyB1cmlMaXN0ID0gc2VsZWN0aW9uLnVy
aUxpc3QoKS51dGY4KCk7CisgICAgICAgIGd0a19zZWxlY3Rpb25fZGF0YV9zZXQoc2VsZWN0aW9u
RGF0YSwgdXJpTGlzdEF0b20sIDgsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZ3VjaGFyKj4odXJp
TGlzdC5kYXRhKCkpLCB1cmlMaXN0Lmxlbmd0aCgpKTsKIAotICAgIH0gZWxzZSBpZiAoaW5mbyA9
PSBUYXJnZXRUeXBlTmV0c2NhcGVVUkwgJiYgZGF0YU9iamVjdC5oYXNVUkwoKSkgewotICAgICAg
ICBTdHJpbmcgdXJsKGRhdGFPYmplY3QudXJsKCkpOworICAgIH0gZWxzZSBpZiAoaW5mbyA9PSBU
YXJnZXRUeXBlTmV0c2NhcGVVUkwgJiYgc2VsZWN0aW9uLmhhc1VSTCgpKSB7CisgICAgICAgIFN0
cmluZyB1cmwoc2VsZWN0aW9uLnVybCgpKTsKICAgICAgICAgU3RyaW5nIHJlc3VsdCh1cmwpOwog
ICAgICAgICByZXN1bHQuYXBwZW5kKCJcbiIpOwogCi0gICAgICAgIGlmIChkYXRhT2JqZWN0Lmhh
c1RleHQoKSkKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZGF0YU9iamVjdC50ZXh0KCkpOwor
ICAgICAgICBpZiAoc2VsZWN0aW9uLmhhc1RleHQoKSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBl
bmQoc2VsZWN0aW9uLnRleHQoKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmQodXJsKTsKIAogICAgICAgICBHVW5pcXVlUHRyPGdjaGFyPiByZXN1bHREYXRhKGdfc3Ry
ZHVwKHJlc3VsdC51dGY4KCkuZGF0YSgpKSk7Ci0gICAgICAgIGd0a19zZWxlY3Rpb25fZGF0YV9z
ZXQoc2VsZWN0aW9uRGF0YSwgbmV0c2NhcGVVUkxBdG9tLCA4LAotICAgICAgICAgICAgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBndWNoYXIqPihyZXN1bHREYXRhLmdldCgpKSwgc3RybGVuKHJlc3Vs
dERhdGEuZ2V0KCkpKTsKKyAgICAgICAgZ3RrX3NlbGVjdGlvbl9kYXRhX3NldChzZWxlY3Rpb25E
YXRhLCBuZXRzY2FwZVVSTEF0b20sIDgsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZ3VjaGFyKj4o
cmVzdWx0RGF0YS5nZXQoKSksIHN0cmxlbihyZXN1bHREYXRhLmdldCgpKSk7CiAKLSAgICB9IGVs
c2UgaWYgKGluZm8gPT0gVGFyZ2V0VHlwZUltYWdlICYmIGRhdGFPYmplY3QuaGFzSW1hZ2UoKSkg
ewotICAgICAgICBHUmVmUHRyPEdka1BpeGJ1Zj4gcGl4YnVmID0gYWRvcHRHUmVmKGRhdGFPYmpl
Y3QuaW1hZ2UoKS0+Z2V0R2RrUGl4YnVmKCkpOworICAgIH0gZWxzZSBpZiAoaW5mbyA9PSBUYXJn
ZXRUeXBlSW1hZ2UgJiYgc2VsZWN0aW9uLmhhc0ltYWdlKCkpIHsKKyAgICAgICAgR1JlZlB0cjxH
ZGtQaXhidWY+IHBpeGJ1ZiA9IGFkb3B0R1JlZihzZWxlY3Rpb24uaW1hZ2UoKS0+Z2V0R2RrUGl4
YnVmKCkpOwogICAgICAgICBndGtfc2VsZWN0aW9uX2RhdGFfc2V0X3BpeGJ1ZihzZWxlY3Rpb25E
YXRhLCBwaXhidWYuZ2V0KCkpOwogCiAgICAgfSBlbHNlIGlmIChpbmZvID09IFRhcmdldFR5cGVT
bWFydFBhc3RlKQpAQCAtMTU4LDcgKzE4Miw3IEBAIHZvaWQgUGFzdGVib2FyZEhlbHBlcjo6Zmls
bFNlbGVjdGlvbkRhdGEoR3RrU2VsZWN0aW9uRGF0YSogc2VsZWN0aW9uRGF0YSwgZ3VpbnQKICAg
ICAgICAgR1ZhcmlhbnRCdWlsZGVyIGJ1aWxkZXI7CiAgICAgICAgIGdfdmFyaWFudF9idWlsZGVy
X2luaXQoJmJ1aWxkZXIsIEdfVkFSSUFOVF9UWVBFX0FSUkFZKTsKIAotICAgICAgICBmb3IgKGF1
dG8mIGl0IDogZGF0YU9iamVjdC51bmtub3duVHlwZXMoKSkgeworICAgICAgICBmb3IgKGF1dG8m
IGl0IDogc2VsZWN0aW9uLnVua25vd25UeXBlcygpKSB7CiAgICAgICAgICAgICBHVW5pcXVlUHRy
PGdjaGFyPiBkaWN0SXRlbShnX3N0cmR1cF9wcmludGYoInsnJXMnLCAnJXMnfSIsIGl0LmtleS51
dGY4KCkuZGF0YSgpLCBpdC52YWx1ZS51dGY4KCkuZGF0YSgpKSk7CiAgICAgICAgICAgICBnX3Zh
cmlhbnRfYnVpbGRlcl9hZGRfcGFyc2VkKCZidWlsZGVyLCBkaWN0SXRlbS5nZXQoKSk7CiAgICAg
ICAgIH0KQEAgLTE2OSw0NyArMTkzLDIwIEBAIHZvaWQgUGFzdGVib2FyZEhlbHBlcjo6ZmlsbFNl
bGVjdGlvbkRhdGEoR3RrU2VsZWN0aW9uRGF0YSogc2VsZWN0aW9uRGF0YSwgZ3VpbnQKICAgICB9
CiB9CiAKLUdSZWZQdHI8R3RrVGFyZ2V0TGlzdD4gUGFzdGVib2FyZEhlbHBlcjo6dGFyZ2V0TGlz
dEZvckRhdGFPYmplY3QoY29uc3QgRGF0YU9iamVjdEd0ayYgZGF0YU9iamVjdCkKLXsKLSAgICBH
UmVmUHRyPEd0a1RhcmdldExpc3Q+IGxpc3QgPSBhZG9wdEdSZWYoZ3RrX3RhcmdldF9saXN0X25l
dyhudWxscHRyLCAwKSk7Ci0KLSAgICBpZiAoZGF0YU9iamVjdC5oYXNUZXh0KCkpCi0gICAgICAg
IGd0a190YXJnZXRfbGlzdF9hZGRfdGV4dF90YXJnZXRzKGxpc3QuZ2V0KCksIFRhcmdldFR5cGVU
ZXh0KTsKLQotICAgIGlmIChkYXRhT2JqZWN0Lmhhc01hcmt1cCgpKQotICAgICAgICBndGtfdGFy
Z2V0X2xpc3RfYWRkKGxpc3QuZ2V0KCksIG1hcmt1cEF0b20sIDAsIFRhcmdldFR5cGVNYXJrdXAp
OwotCi0gICAgaWYgKGRhdGFPYmplY3QuaGFzVVJJTGlzdCgpKSB7Ci0gICAgICAgIGd0a190YXJn
ZXRfbGlzdF9hZGRfdXJpX3RhcmdldHMobGlzdC5nZXQoKSwgVGFyZ2V0VHlwZVVSSUxpc3QpOwot
ICAgICAgICBndGtfdGFyZ2V0X2xpc3RfYWRkKGxpc3QuZ2V0KCksIG5ldHNjYXBlVVJMQXRvbSwg
MCwgVGFyZ2V0VHlwZU5ldHNjYXBlVVJMKTsKLSAgICB9Ci0KLSAgICBpZiAoZGF0YU9iamVjdC5o
YXNJbWFnZSgpKQotICAgICAgICBndGtfdGFyZ2V0X2xpc3RfYWRkX2ltYWdlX3RhcmdldHMobGlz
dC5nZXQoKSwgVGFyZ2V0VHlwZUltYWdlLCBUUlVFKTsKLQotICAgIGlmIChkYXRhT2JqZWN0Lmhh
c1Vua25vd25UeXBlRGF0YSgpKQotICAgICAgICBndGtfdGFyZ2V0X2xpc3RfYWRkKGxpc3QuZ2V0
KCksIHVua25vd25BdG9tLCAwLCBUYXJnZXRUeXBlVW5rbm93bik7Ci0KLSAgICBpZiAoZGF0YU9i
amVjdC5jYW5TbWFydFJlcGxhY2UoKSkKLSAgICAgICAgZ3RrX3RhcmdldF9saXN0X2FkZChsaXN0
LmdldCgpLCBzbWFydFBhc3RlQXRvbSwgMCwgVGFyZ2V0VHlwZVNtYXJ0UGFzdGUpOwotCi0gICAg
cmV0dXJuIGxpc3Q7Ci19Ci0KLXZvaWQgUGFzdGVib2FyZEhlbHBlcjo6ZmlsbERhdGFPYmplY3RG
cm9tRHJvcERhdGEoR3RrU2VsZWN0aW9uRGF0YSogZGF0YSwgZ3VpbnQgLyogaW5mbyAqLywgRGF0
YU9iamVjdEd0ayYgZGF0YU9iamVjdCkKK3ZvaWQgUGFzdGVib2FyZEhlbHBlcjo6ZmlsbFNlbGVj
dGlvbkRhdGEoR3RrU2VsZWN0aW9uRGF0YSogZGF0YSwgdW5zaWduZWQgLyogaW5mbyAqLywgU2Vs
ZWN0aW9uRGF0YSYgc2VsZWN0aW9uKQogewogICAgIGlmICghZ3RrX3NlbGVjdGlvbl9kYXRhX2dl
dF9kYXRhKGRhdGEpKQogICAgICAgICByZXR1cm47CiAKICAgICBHZGtBdG9tIHRhcmdldCA9IGd0
a19zZWxlY3Rpb25fZGF0YV9nZXRfdGFyZ2V0KGRhdGEpOwogICAgIGlmICh0YXJnZXQgPT0gdGV4
dFBsYWluQXRvbSkKLSAgICAgICAgZGF0YU9iamVjdC5zZXRUZXh0KHNlbGVjdGlvbkRhdGFUb1VU
RjhTdHJpbmcoZGF0YSkpOworICAgICAgICBzZWxlY3Rpb24uc2V0VGV4dChzZWxlY3Rpb25EYXRh
VG9VVEY4U3RyaW5nKGRhdGEpKTsKICAgICBlbHNlIGlmICh0YXJnZXQgPT0gbWFya3VwQXRvbSkg
ewogICAgICAgICBTdHJpbmcgbWFya3VwKHNlbGVjdGlvbkRhdGFUb1VURjhTdHJpbmcoZGF0YSkp
OwogICAgICAgICByZW1vdmVNYXJrdXBQcmVmaXgobWFya3VwKTsKLSAgICAgICAgZGF0YU9iamVj
dC5zZXRNYXJrdXAobWFya3VwKTsKKyAgICAgICAgc2VsZWN0aW9uLnNldE1hcmt1cChtYXJrdXAp
OwogICAgIH0gZWxzZSBpZiAodGFyZ2V0ID09IHVyaUxpc3RBdG9tKSB7Ci0gICAgICAgIGRhdGFP
YmplY3Quc2V0VVJJTGlzdChzZWxlY3Rpb25EYXRhVG9VVEY4U3RyaW5nKGRhdGEpKTsKKyAgICAg
ICAgc2VsZWN0aW9uLnNldFVSSUxpc3Qoc2VsZWN0aW9uRGF0YVRvVVRGOFN0cmluZyhkYXRhKSk7
CiAgICAgfSBlbHNlIGlmICh0YXJnZXQgPT0gbmV0c2NhcGVVUkxBdG9tKSB7CiAgICAgICAgIFN0
cmluZyB1cmxXaXRoTGFiZWwoc2VsZWN0aW9uRGF0YVRvVVRGOFN0cmluZyhkYXRhKSk7CiAgICAg
ICAgIFZlY3RvcjxTdHJpbmc+IHBpZWNlczsKQEAgLTIxNywxMCArMjE0LDEwIEBAIHZvaWQgUGFz
dGVib2FyZEhlbHBlcjo6ZmlsbERhdGFPYmplY3RGcm9tRHJvcERhdGEoR3RrU2VsZWN0aW9uRGF0
YSogZGF0YSwgZ3VpbnQKIAogICAgICAgICAvLyBHaXZlIHByZWZlcmVuY2UgdG8gdGV4dC91cmkt
bGlzdCBoZXJlLCBhcyBpdCBjYW4gaG9sZCBtb3JlCiAgICAgICAgIC8vIHRoYW4gb25lIFVSSSBi
dXQgc3RpbGwgdGFrZSAgdGhlIGxhYmVsIGlmIHRoZXJlIGlzIG9uZS4KLSAgICAgICAgaWYgKCFk
YXRhT2JqZWN0Lmhhc1VSSUxpc3QoKSkKLSAgICAgICAgICAgIGRhdGFPYmplY3Quc2V0VVJJTGlz
dChwaWVjZXNbMF0pOworICAgICAgICBpZiAoIXNlbGVjdGlvbi5oYXNVUklMaXN0KCkpCisgICAg
ICAgICAgICBzZWxlY3Rpb24uc2V0VVJJTGlzdChwaWVjZXNbMF0pOwogICAgICAgICBpZiAocGll
Y2VzLnNpemUoKSA+IDEpCi0gICAgICAgICAgICBkYXRhT2JqZWN0LnNldFRleHQocGllY2VzWzFd
KTsKKyAgICAgICAgICAgIHNlbGVjdGlvbi5zZXRUZXh0KHBpZWNlc1sxXSk7CiAgICAgfSBlbHNl
IGlmICh0YXJnZXQgPT0gdW5rbm93bkF0b20pIHsKICAgICAgICAgR1JlZlB0cjxHVmFyaWFudD4g
dmFyaWFudCA9IGdfdmFyaWFudF9uZXdfcGFyc2VkKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
cio+KGd0a19zZWxlY3Rpb25fZGF0YV9nZXRfZGF0YShkYXRhKSkpOwogCkBAIC0yMzAsNyArMjI3
LDcgQEAgdm9pZCBQYXN0ZWJvYXJkSGVscGVyOjpmaWxsRGF0YU9iamVjdEZyb21Ecm9wRGF0YShH
dGtTZWxlY3Rpb25EYXRhKiBkYXRhLCBndWludAogCiAgICAgICAgIGdfdmFyaWFudF9pdGVyX2lu
aXQoJml0ZXIsIHZhcmlhbnQuZ2V0KCkpOwogICAgICAgICB3aGlsZSAoZ192YXJpYW50X2l0ZXJf
bmV4dCgmaXRlciwgIntzc30iLCAma2V5Lm91dFB0cigpLCAmdmFsdWUub3V0UHRyKCkpKQotICAg
ICAgICAgICAgZGF0YU9iamVjdC5zZXRVbmtub3duVHlwZURhdGEoa2V5LmdldCgpLCB2YWx1ZS5n
ZXQoKSk7CisgICAgICAgICAgICBzZWxlY3Rpb24uc2V0VW5rbm93blR5cGVEYXRhKGtleS5nZXQo
KSwgdmFsdWUuZ2V0KCkpOwogICAgIH0KIH0KIApAQCAtMjU0LDExICsyNTEsMTEgQEAgVmVjdG9y
PEdka0F0b20+IFBhc3RlYm9hcmRIZWxwZXI6OmRyb3BBdG9tc0ZvckNvbnRleHQoR3RrV2lkZ2V0
KiB3aWRnZXQsIEdka0RyYWcKICAgICByZXR1cm4gZHJvcEF0b21zOwogfQogCi1zdGF0aWMgRGF0
YU9iamVjdEd0ayogc2V0dGluZ0NsaXBib2FyZERhdGFPYmplY3QgPSAwOworc3RhdGljIFNlbGVj
dGlvbkRhdGEqIHNldHRpbmdDbGlwYm9hcmRTZWxlY3Rpb247CiAKIHN0cnVjdCBDbGlwYm9hcmRT
ZXREYXRhIHsKLSAgICBDbGlwYm9hcmRTZXREYXRhKERhdGFPYmplY3RHdGsmIGRhdGFPYmplY3Qs
IHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmIHNlbGVjdGlvbkNsZWFyZWRDYWxsYmFjaykKLSAgICAg
ICAgOiBkYXRhT2JqZWN0KGRhdGFPYmplY3QpCisgICAgQ2xpcGJvYXJkU2V0RGF0YShTZWxlY3Rp
b25EYXRhJiBzZWxlY3Rpb24sIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmIHNlbGVjdGlvbkNsZWFy
ZWRDYWxsYmFjaykKKyAgICAgICAgOiBzZWxlY3Rpb25EYXRhKHNlbGVjdGlvbikKICAgICAgICAg
LCBzZWxlY3Rpb25DbGVhcmVkQ2FsbGJhY2soV1RGTW92ZShzZWxlY3Rpb25DbGVhcmVkQ2FsbGJh
Y2spKQogICAgIHsKICAgICB9CkBAIC0yNjcsMTQgKzI2NCwxNCBAQCBzdHJ1Y3QgQ2xpcGJvYXJk
U2V0RGF0YSB7CiAgICAgewogICAgIH0KIAotICAgIFJlZjxEYXRhT2JqZWN0R3RrPiBkYXRhT2Jq
ZWN0OworICAgIFJlZjxTZWxlY3Rpb25EYXRhPiBzZWxlY3Rpb25EYXRhOwogICAgIHN0ZDo6ZnVu
Y3Rpb248dm9pZCgpPiBzZWxlY3Rpb25DbGVhcmVkQ2FsbGJhY2s7CiB9OwogCiBzdGF0aWMgdm9p
ZCBnZXRDbGlwYm9hcmRDb250ZW50c0NhbGxiYWNrKEd0a0NsaXBib2FyZCosIEd0a1NlbGVjdGlv
bkRhdGEgKnNlbGVjdGlvbkRhdGEsIGd1aW50IGluZm8sIGdwb2ludGVyIHVzZXJEYXRhKQogewog
ICAgIGF1dG8qIGRhdGEgPSBzdGF0aWNfY2FzdDxDbGlwYm9hcmRTZXREYXRhKj4odXNlckRhdGEp
OwotICAgIFBhc3RlYm9hcmRIZWxwZXI6OnNpbmdsZXRvbigpLmZpbGxTZWxlY3Rpb25EYXRhKHNl
bGVjdGlvbkRhdGEsIGluZm8sIGRhdGEtPmRhdGFPYmplY3QpOworICAgIFBhc3RlYm9hcmRIZWxw
ZXI6OnNpbmdsZXRvbigpLmZpbGxTZWxlY3Rpb25EYXRhKGRhdGEtPnNlbGVjdGlvbkRhdGEsIGlu
Zm8sIHNlbGVjdGlvbkRhdGEpOwogfQogCiBzdGF0aWMgdm9pZCBjbGVhckNsaXBib2FyZENvbnRl
bnRzQ2FsbGJhY2soR3RrQ2xpcGJvYXJkKiwgZ3BvaW50ZXIgdXNlckRhdGEpCkBAIC0yODQsMTYg
KzI4MSwxNiBAQCBzdGF0aWMgdm9pZCBjbGVhckNsaXBib2FyZENvbnRlbnRzQ2FsbGJhY2soR3Rr
Q2xpcGJvYXJkKiwgZ3BvaW50ZXIgdXNlckRhdGEpCiAgICAgICAgIGRhdGEtPnNlbGVjdGlvbkNs
ZWFyZWRDYWxsYmFjaygpOwogfQogCi12b2lkIFBhc3RlYm9hcmRIZWxwZXI6OndyaXRlQ2xpcGJv
YXJkQ29udGVudHMoR3RrQ2xpcGJvYXJkKiBjbGlwYm9hcmQsIGNvbnN0IERhdGFPYmplY3RHdGsm
IGRhdGFPYmplY3QsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmIHByaW1hcnlTZWxlY3Rpb25DbGVh
cmVkKQordm9pZCBQYXN0ZWJvYXJkSGVscGVyOjp3cml0ZUNsaXBib2FyZENvbnRlbnRzKEd0a0Ns
aXBib2FyZCogY2xpcGJvYXJkLCBjb25zdCBTZWxlY3Rpb25EYXRhJiBzZWxlY3Rpb24sIHN0ZDo6
ZnVuY3Rpb248dm9pZCgpPiYmIHByaW1hcnlTZWxlY3Rpb25DbGVhcmVkKQogewotICAgIEdSZWZQ
dHI8R3RrVGFyZ2V0TGlzdD4gbGlzdCA9IHRhcmdldExpc3RGb3JEYXRhT2JqZWN0KGRhdGFPYmpl
Y3QpOworICAgIEdSZWZQdHI8R3RrVGFyZ2V0TGlzdD4gbGlzdCA9IHRhcmdldExpc3RGb3JTZWxl
Y3Rpb25EYXRhKHNlbGVjdGlvbik7CiAKICAgICBpbnQgbnVtYmVyT2ZUYXJnZXRzOwogICAgIEd0
a1RhcmdldEVudHJ5KiB0YWJsZSA9IGd0a190YXJnZXRfdGFibGVfbmV3X2Zyb21fbGlzdChsaXN0
LmdldCgpLCAmbnVtYmVyT2ZUYXJnZXRzKTsKIAogICAgIGlmIChudW1iZXJPZlRhcmdldHMgPiAw
ICYmIHRhYmxlKSB7Ci0gICAgICAgIFRlbXBvcmFyeUNoYW5nZTxEYXRhT2JqZWN0R3RrKj4gY2hh
bmdlKHNldHRpbmdDbGlwYm9hcmREYXRhT2JqZWN0LCBjb25zdF9jYXN0PERhdGFPYmplY3RHdGsq
PigmZGF0YU9iamVjdCkpOwotICAgICAgICBhdXRvIGRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPENs
aXBib2FyZFNldERhdGE+KCpzZXR0aW5nQ2xpcGJvYXJkRGF0YU9iamVjdCwgV1RGTW92ZShwcmlt
YXJ5U2VsZWN0aW9uQ2xlYXJlZCkpOworICAgICAgICBUZW1wb3JhcnlDaGFuZ2U8U2VsZWN0aW9u
RGF0YSo+IGNoYW5nZShzZXR0aW5nQ2xpcGJvYXJkU2VsZWN0aW9uLCBjb25zdF9jYXN0PFNlbGVj
dGlvbkRhdGEqPigmc2VsZWN0aW9uKSk7CisgICAgICAgIGF1dG8gZGF0YSA9IHN0ZDo6bWFrZV91
bmlxdWU8Q2xpcGJvYXJkU2V0RGF0YT4oKnNldHRpbmdDbGlwYm9hcmRTZWxlY3Rpb24sIFdURk1v
dmUocHJpbWFyeVNlbGVjdGlvbkNsZWFyZWQpKTsKICAgICAgICAgaWYgKGd0a19jbGlwYm9hcmRf
c2V0X3dpdGhfZGF0YShjbGlwYm9hcmQsIHRhYmxlLCBudW1iZXJPZlRhcmdldHMsIGdldENsaXBi
b2FyZENvbnRlbnRzQ2FsbGJhY2ssIGNsZWFyQ2xpcGJvYXJkQ29udGVudHNDYWxsYmFjaywgZGF0
YS5nZXQoKSkpIHsKICAgICAgICAgICAgIGd0a19jbGlwYm9hcmRfc2V0X2Nhbl9zdG9yZShjbGlw
Ym9hcmQsIG51bGxwdHIsIDApOwogICAgICAgICAgICAgLy8gV2hlbiBndGtfY2xpcGJvYXJkX3Nl
dF93aXRoX2RhdGEoKSBzdWNjZWVkcyBjbGVhckNsaXBib2FyZENvbnRlbnRzQ2FsbGJhY2sgdGFr
ZXMgdGhlIG93bmVyc2hpcCBvZiBkYXRhLCBzbyB3ZSBsZWFrIGl0IGhlcmUuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEhlbHBlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuaAppbmRleCAzZjNjOGRhLi40
YTRkZTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2Fy
ZEhlbHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVs
cGVyLmgKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBE
YXRhT2JqZWN0R3RrOworY2xhc3MgU2VsZWN0aW9uRGF0YTsKIAogY2xhc3MgUGFzdGVib2FyZEhl
bHBlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGFzdGVib2FyZEhlbHBlcik7CkBAIC00
MywxMiArNDMsMTIgQEAgcHVibGljOgogICAgIGVudW0gU21hcnRQYXN0ZUluY2x1c2lvbiB7IElu
Y2x1ZGVTbWFydFBhc3RlLCBEb05vdEluY2x1ZGVTbWFydFBhc3RlIH07CiAKICAgICBHdGtUYXJn
ZXRMaXN0KiB0YXJnZXRMaXN0KCkgY29uc3Q7Ci0gICAgR1JlZlB0cjxHdGtUYXJnZXRMaXN0PiB0
YXJnZXRMaXN0Rm9yRGF0YU9iamVjdChjb25zdCBEYXRhT2JqZWN0R3RrJik7Ci0gICAgdm9pZCBm
aWxsU2VsZWN0aW9uRGF0YShHdGtTZWxlY3Rpb25EYXRhKiwgZ3VpbnQsIGNvbnN0IERhdGFPYmpl
Y3RHdGsmKTsKLSAgICB2b2lkIGZpbGxEYXRhT2JqZWN0RnJvbURyb3BEYXRhKEd0a1NlbGVjdGlv
bkRhdGEqLCBndWludCwgRGF0YU9iamVjdEd0ayYpOworICAgIEdSZWZQdHI8R3RrVGFyZ2V0TGlz
dD4gdGFyZ2V0TGlzdEZvclNlbGVjdGlvbkRhdGEoY29uc3QgU2VsZWN0aW9uRGF0YSYpOworICAg
IHZvaWQgZmlsbFNlbGVjdGlvbkRhdGEoY29uc3QgU2VsZWN0aW9uRGF0YSYsIHVuc2lnbmVkLCBH
dGtTZWxlY3Rpb25EYXRhKik7CisgICAgdm9pZCBmaWxsU2VsZWN0aW9uRGF0YShHdGtTZWxlY3Rp
b25EYXRhKiwgdW5zaWduZWQsIFNlbGVjdGlvbkRhdGEmKTsKICAgICBWZWN0b3I8R2RrQXRvbT4g
ZHJvcEF0b21zRm9yQ29udGV4dChHdGtXaWRnZXQqLCBHZGtEcmFnQ29udGV4dCopOwotICAgIHZv
aWQgd3JpdGVDbGlwYm9hcmRDb250ZW50cyhHdGtDbGlwYm9hcmQqLCBjb25zdCBEYXRhT2JqZWN0
R3RrJiwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+JiYgcHJpbWFyeVNlbGVjdGlvbkNsZWFyZWQgPSBu
dWxscHRyKTsKLSAgICB2b2lkIGdldENsaXBib2FyZENvbnRlbnRzKEd0a0NsaXBib2FyZCosIERh
dGFPYmplY3RHdGsmKTsKKyAgICB2b2lkIHdyaXRlQ2xpcGJvYXJkQ29udGVudHMoR3RrQ2xpcGJv
YXJkKiwgY29uc3QgU2VsZWN0aW9uRGF0YSYsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmIHByaW1h
cnlTZWxlY3Rpb25DbGVhcmVkID0gbnVsbHB0cik7CisgICAgdm9pZCBnZXRDbGlwYm9hcmRDb250
ZW50cyhHdGtDbGlwYm9hcmQqLCBTZWxlY3Rpb25EYXRhJik7CiAKICAgICBlbnVtIFBhc3RlYm9h
cmRUYXJnZXRUeXBlIHsgVGFyZ2V0VHlwZU1hcmt1cCwgVGFyZ2V0VHlwZVRleHQsIFRhcmdldFR5
cGVJbWFnZSwgVGFyZ2V0VHlwZVVSSUxpc3QsIFRhcmdldFR5cGVOZXRzY2FwZVVSTCwgVGFyZ2V0
VHlwZVNtYXJ0UGFzdGUsIFRhcmdldFR5cGVVbmtub3duIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QbGF0Zm9ybVBhc3RlYm9hcmRHdGsuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1BsYXRmb3JtUGFzdGVib2FyZEd0ay5jcHAKaW5kZXggMTQ5
MDk2Yy4uODQ4MWNiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bs
YXRmb3JtUGFzdGVib2FyZEd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L1BsYXRmb3JtUGFzdGVib2FyZEd0ay5jcHAKQEAgLTIwLDggKzIwLDggQEAKICNpbmNsdWRlICJQ
bGF0Zm9ybVBhc3RlYm9hcmQuaCIKIAogI2luY2x1ZGUgIkNvbG9yLmgiCi0jaW5jbHVkZSAiRGF0
YU9iamVjdEd0ay5oIgogI2luY2x1ZGUgIlBhc3RlYm9hcmRIZWxwZXIuaCIKKyNpbmNsdWRlICJT
ZWxlY3Rpb25EYXRhLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSAiVVJM
LmgiCiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgpAQCAtMzQsMTYgKzM0LDE2IEBAIFBsYXRmb3JtUGFz
dGVib2FyZDo6UGxhdGZvcm1QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
CiAgICAgQVNTRVJUKG1fY2xpcGJvYXJkKTsKIH0KIAotdm9pZCBQbGF0Zm9ybVBhc3RlYm9hcmQ6
OndyaXRlVG9DbGlwYm9hcmQoY29uc3QgRGF0YU9iamVjdEd0ayYgZGF0YU9iamVjdCwgc3RkOjpm
dW5jdGlvbjx2b2lkKCk+JiYgcHJpbWFyeVNlbGVjdGlvbkNsZWFyZWQpCit2b2lkIFBsYXRmb3Jt
UGFzdGVib2FyZDo6d3JpdGVUb0NsaXBib2FyZChjb25zdCBTZWxlY3Rpb25EYXRhJiBzZWxlY3Rp
b24sIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiYmIHByaW1hcnlTZWxlY3Rpb25DbGVhcmVkKQogewot
ICAgIFBhc3RlYm9hcmRIZWxwZXI6OnNpbmdsZXRvbigpLndyaXRlQ2xpcGJvYXJkQ29udGVudHMo
bV9jbGlwYm9hcmQsIGRhdGFPYmplY3QsIGd0a19jbGlwYm9hcmRfZ2V0KEdES19TRUxFQ1RJT05f
UFJJTUFSWSkgPT0gbV9jbGlwYm9hcmQgPyBXVEZNb3ZlKHByaW1hcnlTZWxlY3Rpb25DbGVhcmVk
KSA6IG51bGxwdHIpOworICAgIFBhc3RlYm9hcmRIZWxwZXI6OnNpbmdsZXRvbigpLndyaXRlQ2xp
cGJvYXJkQ29udGVudHMobV9jbGlwYm9hcmQsIHNlbGVjdGlvbiwgZ3RrX2NsaXBib2FyZF9nZXQo
R0RLX1NFTEVDVElPTl9QUklNQVJZKSA9PSBtX2NsaXBib2FyZCA/IFdURk1vdmUocHJpbWFyeVNl
bGVjdGlvbkNsZWFyZWQpIDogbnVsbHB0cik7CiB9CiAKLVJlZjxEYXRhT2JqZWN0R3RrPiBQbGF0
Zm9ybVBhc3RlYm9hcmQ6OnJlYWRGcm9tQ2xpcGJvYXJkKCkKK1JlZjxTZWxlY3Rpb25EYXRhPiBQ
bGF0Zm9ybVBhc3RlYm9hcmQ6OnJlYWRGcm9tQ2xpcGJvYXJkKCkKIHsKLSAgICBSZWY8RGF0YU9i
amVjdEd0az4gZGF0YU9iamVjdChEYXRhT2JqZWN0R3RrOjpjcmVhdGUoKSk7Ci0gICAgUGFzdGVi
b2FyZEhlbHBlcjo6c2luZ2xldG9uKCkuZ2V0Q2xpcGJvYXJkQ29udGVudHMobV9jbGlwYm9hcmQs
IGRhdGFPYmplY3QuZ2V0KCkpOwotICAgIHJldHVybiBkYXRhT2JqZWN0OworICAgIFJlZjxTZWxl
Y3Rpb25EYXRhPiBzZWxlY3Rpb24oU2VsZWN0aW9uRGF0YTo6Y3JlYXRlKCkpOworICAgIFBhc3Rl
Ym9hcmRIZWxwZXI6OnNpbmdsZXRvbigpLmdldENsaXBib2FyZENvbnRlbnRzKG1fY2xpcGJvYXJk
LCBzZWxlY3Rpb24uZ2V0KCkpOworICAgIHJldHVybiBzZWxlY3Rpb247CiB9CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EYXRhT2JqZWN0R3RrLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmNwcApzaW1pbGFyaXR5IGlu
ZGV4IDgwJQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRGF0YU9iamVj
dEd0ay5jcHAKcmVuYW1lIHRvIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25E
YXRhLmNwcAppbmRleCA3YTVlZjY5Li4xZTI3OTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvRGF0YU9iamVjdEd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL1NlbGVjdGlvbkRhdGEuY3BwCkBAIC0xNyw5ICsxNyw4IEBACiAgKi8KIAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRhdGFPYmplY3RHdGsuaCIKKyNpbmNsdWRlICJT
ZWxlY3Rpb25EYXRhLmgiCiAKLSNpbmNsdWRlIDxndGsvZ3RrLmg+CiAjaW5jbHVkZSA8d3RmL2ds
aWIvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CkBAIC0zMywyMyArMzIsMTMgQEAgc3RhdGljIHZv
aWQgcmVwbGFjZU5vbkJyZWFraW5nU3BhY2VXaXRoU3BhY2UoU3RyaW5nJiBzdHIpCiAgICAgc3Ry
LnJlcGxhY2UoTm9uQnJlYWtpbmdTcGFjZUNoYXJhY3RlciwgU3BhY2VDaGFyYWN0ZXIpOwogfQog
Ci1jb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgRGF0YU9iamVjdEd0azo6dW5rbm93blR5
cGVzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV91bmtub3duVHlwZURhdGE7Ci19Ci0KLXZvaWQg
RGF0YU9iamVjdEd0azo6c2V0VGV4dChjb25zdCBTdHJpbmcmIG5ld1RleHQpCit2b2lkIFNlbGVj
dGlvbkRhdGE6OnNldFRleHQoY29uc3QgU3RyaW5nJiBuZXdUZXh0KQogewogICAgIG1fdGV4dCA9
IG5ld1RleHQ7CiAgICAgcmVwbGFjZU5vbkJyZWFraW5nU3BhY2VXaXRoU3BhY2UobV90ZXh0KTsK
IH0KIAotdm9pZCBEYXRhT2JqZWN0R3RrOjpzZXRNYXJrdXAoY29uc3QgU3RyaW5nJiBuZXdNYXJr
dXApCi17Ci0gICAgbV9tYXJrdXAgPSBuZXdNYXJrdXA7Ci19Ci0KLXZvaWQgRGF0YU9iamVjdEd0
azo6c2V0VVJJTGlzdChjb25zdCBTdHJpbmcmIHVyaUxpc3RTdHJpbmcpCit2b2lkIFNlbGVjdGlv
bkRhdGE6OnNldFVSSUxpc3QoY29uc3QgU3RyaW5nJiB1cmlMaXN0U3RyaW5nKQogewogICAgIG1f
dXJpTGlzdCA9IHVyaUxpc3RTdHJpbmc7CiAKQEAgLTkwLDcgKzc5LDcgQEAgdm9pZCBEYXRhT2Jq
ZWN0R3RrOjpzZXRVUklMaXN0KGNvbnN0IFN0cmluZyYgdXJpTGlzdFN0cmluZykKICAgICB9CiB9
CiAKLXZvaWQgRGF0YU9iamVjdEd0azo6c2V0VVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIGxhYmVsKQordm9pZCBTZWxlY3Rpb25EYXRhOjpzZXRVUkwoY29uc3QgVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgbGFiZWwpCiB7CiAgICAgbV91cmwgPSB1cmw7CiAgICAgbV91cmlMaXN0ID0g
dXJsOwpAQCAtMTEwLDE3ICs5OSw3IEBAIHZvaWQgRGF0YU9iamVjdEd0azo6c2V0VVJMKGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGxhYmVsKQogICAgIHNldE1hcmt1cChtYXJrdXAudG9T
dHJpbmcoKSk7CiB9CiAKLXZvaWQgRGF0YU9iamVjdEd0azo6Y2xlYXJUZXh0KCkKLXsKLSAgICBt
X3RleHQgPSBlbXB0eVN0cmluZygpOwotfQotCi12b2lkIERhdGFPYmplY3RHdGs6OmNsZWFyTWFy
a3VwKCkKLXsKLSAgICBtX21hcmt1cCA9IGVtcHR5U3RyaW5nKCk7Ci19Ci0KLVN0cmluZyBEYXRh
T2JqZWN0R3RrOjp1cmxMYWJlbCgpIGNvbnN0Citjb25zdCBTdHJpbmcmIFNlbGVjdGlvbkRhdGE6
OnVybExhYmVsKCkgY29uc3QKIHsKICAgICBpZiAoaGFzVGV4dCgpKQogICAgICAgICByZXR1cm4g
dGV4dCgpOwpAQCAtMTI4LDI0ICsxMDcsMjUgQEAgU3RyaW5nIERhdGFPYmplY3RHdGs6OnVybExh
YmVsKCkgY29uc3QKICAgICBpZiAoaGFzVVJMKCkpCiAgICAgICAgIHJldHVybiB1cmwoKTsKIAot
ICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KIAotdm9p
ZCBEYXRhT2JqZWN0R3RrOjpjbGVhckFsbEV4Y2VwdEZpbGVuYW1lcygpCit2b2lkIFNlbGVjdGlv
bkRhdGE6OmNsZWFyQWxsRXhjZXB0RmlsZW5hbWVzKCkKIHsKLSAgICBtX3RleHQgPSBlbXB0eVN0
cmluZygpOwotICAgIG1fbWFya3VwID0gZW1wdHlTdHJpbmcoKTsKLSAgICBtX3VyaUxpc3QgPSBl
bXB0eVN0cmluZygpOwotICAgIG1fdXJsID0gVVJMKCk7Ci0gICAgbV9pbWFnZSA9IG51bGxwdHI7
CisgICAgY2xlYXJUZXh0KCk7CisgICAgY2xlYXJNYXJrdXAoKTsKKyAgICBjbGVhclVSSUxpc3Qo
KTsKKyAgICBjbGVhclVSTCgpOworICAgIGNsZWFySW1hZ2UoKTsKKwogICAgIG1fdW5rbm93blR5
cGVEYXRhLmNsZWFyKCk7CiAgICAgbV9jYW5TbWFydFJlcGxhY2UgPSBmYWxzZTsKIH0KIAotdm9p
ZCBEYXRhT2JqZWN0R3RrOjpjbGVhckFsbCgpCit2b2lkIFNlbGVjdGlvbkRhdGE6OmNsZWFyQWxs
KCkKIHsKICAgICBjbGVhckFsbEV4Y2VwdEZpbGVuYW1lcygpOwogICAgIG1fZmlsZW5hbWVzLmNs
ZWFyKCk7CiB9CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EYXRhT2JqZWN0R3RrLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5oCnNpbWlsYXJpdHkgaW5kZXggODElCnJlbmFtZSBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EYXRhT2JqZWN0R3RrLmgKcmVuYW1lIHRv
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmgKaW5kZXggMTdlOGQ3
MC4uZGE1MWRhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RhdGFP
YmplY3RHdGsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0
YS5oCkBAIC0yNiw0NiArMjYsNTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBE
YXRhT2JqZWN0R3RrIDogcHVibGljIFJlZkNvdW50ZWQ8RGF0YU9iamVjdEd0az4geworY2xhc3Mg
U2VsZWN0aW9uRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPFNlbGVjdGlvbkRhdGE+IHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPERhdGFPYmpl
Y3RHdGs+IGNyZWF0ZSgpCisgICAgc3RhdGljIFJlZjxTZWxlY3Rpb25EYXRhPiBjcmVhdGUoKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YU9iamVjdEd0ayk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlbGVjdGlvbkRhdGEpOwogICAgIH0KIAorICAgIHZv
aWQgc2V0VGV4dChjb25zdCBTdHJpbmcmKTsKKyAgICBjb25zdCBTdHJpbmcmIHRleHQoKSBjb25z
dCB7IHJldHVybiBtX3RleHQ7IH0KKyAgICBib29sIGhhc1RleHQoKSBjb25zdCB7IHJldHVybiAh
bV90ZXh0LmlzRW1wdHkoKTsgfQorICAgIHZvaWQgY2xlYXJUZXh0KCkgeyBtX3RleHQgPSBlbXB0
eVN0cmluZygpOyB9CisKKyAgICB2b2lkIHNldE1hcmt1cChjb25zdCBTdHJpbmcmIG5ld01hcmt1
cCkgeyBtX21hcmt1cCA9IG5ld01hcmt1cDsgfQorICAgIGNvbnN0IFN0cmluZyYgbWFya3VwKCkg
Y29uc3QgeyByZXR1cm4gbV9tYXJrdXA7IH0KKyAgICBib29sIGhhc01hcmt1cCgpIGNvbnN0IHsg
cmV0dXJuICFtX21hcmt1cC5pc0VtcHR5KCk7IH0KKyAgICB2b2lkIGNsZWFyTWFya3VwKCkgeyBt
X21hcmt1cCA9IGVtcHR5U3RyaW5nKCk7IH0KKworICAgIHZvaWQgc2V0VVJMKGNvbnN0IFVSTCYs
IGNvbnN0IFN0cmluZyYpOwogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91
cmw7IH0KKyAgICBjb25zdCBTdHJpbmcmIHVybExhYmVsKCkgY29uc3Q7CisgICAgYm9vbCBoYXNV
UkwoKSBjb25zdCB7IHJldHVybiAhbV91cmwuaXNFbXB0eSgpICYmIG1fdXJsLmlzVmFsaWQoKTsg
fQorICAgIHZvaWQgY2xlYXJVUkwoKSB7IG1fdXJsID0gVVJMKCk7IH0KKworICAgIHZvaWQgc2V0
VVJJTGlzdChjb25zdCBTdHJpbmcmKTsKICAgICBjb25zdCBTdHJpbmcmIHVyaUxpc3QoKSBjb25z
dCB7IHJldHVybiBtX3VyaUxpc3Q7IH0KICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5h
bWVzKCkgY29uc3QgeyByZXR1cm4gbV9maWxlbmFtZXM7IH0KLSAgICBJbWFnZSogaW1hZ2UoKSBj
b25zdCB7IHJldHVybiBtX2ltYWdlLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRJbWFnZShJbWFnZSog
bmV3SW1hZ2UpIHsgbV9pbWFnZSA9IG5ld0ltYWdlOyB9Ci0gICAgdm9pZCBzZXRVUkwoY29uc3Qg
VVJMJiwgY29uc3QgU3RyaW5nJik7Ci0gICAgYm9vbCBoYXNVbmtub3duVHlwZURhdGEoKSBjb25z
dCB7IHJldHVybiAhbV91bmtub3duVHlwZURhdGEuaXNFbXB0eSgpOyB9Ci0gICAgYm9vbCBoYXNU
ZXh0KCkgY29uc3QgeyByZXR1cm4gIW1fdGV4dC5pc0VtcHR5KCk7IH0KLSAgICBib29sIGhhc01h
cmt1cCgpIGNvbnN0IHsgcmV0dXJuICFtX21hcmt1cC5pc0VtcHR5KCk7IH0KICAgICBib29sIGhh
c1VSSUxpc3QoKSBjb25zdCB7IHJldHVybiAhbV91cmlMaXN0LmlzRW1wdHkoKTsgfQotICAgIGJv
b2wgaGFzVVJMKCkgY29uc3QgeyByZXR1cm4gIW1fdXJsLmlzRW1wdHkoKSAmJiBtX3VybC5pc1Zh
bGlkKCk7IH0KICAgICBib29sIGhhc0ZpbGVuYW1lcygpIGNvbnN0IHsgcmV0dXJuICFtX2ZpbGVu
YW1lcy5pc0VtcHR5KCk7IH0KLSAgICBib29sIGhhc0ltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9p
bWFnZTsgfQotICAgIGJvb2wgY2FuU21hcnRSZXBsYWNlKCkgY29uc3QgeyByZXR1cm4gbV9jYW5T
bWFydFJlcGxhY2U7IH0KICAgICB2b2lkIGNsZWFyVVJJTGlzdCgpIHsgbV91cmlMaXN0ID0gZW1w
dHlTdHJpbmcoKTsgfQotICAgIHZvaWQgY2xlYXJVUkwoKSB7IG1fdXJsID0gVVJMKCk7IH0KKwor
ICAgIHZvaWQgc2V0SW1hZ2UoSW1hZ2UqIG5ld0ltYWdlKSB7IG1faW1hZ2UgPSBuZXdJbWFnZTsg
fQorICAgIEltYWdlKiBpbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2UuZ2V0KCk7IH0KKyAg
ICBib29sIGhhc0ltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZTsgfQogICAgIHZvaWQgY2xl
YXJJbWFnZSgpIHsgbV9pbWFnZSA9IG51bGxwdHI7IH0KIAotICAgIFN0cmluZyB0ZXh0KCkgY29u
c3QgeyByZXR1cm4gbV90ZXh0OyB9Ci0gICAgU3RyaW5nIG1hcmt1cCgpIGNvbnN0IHsgcmV0dXJu
IG1fbWFya3VwOyB9Ci0gICAgU3RyaW5nIHVua25vd25UeXBlRGF0YShjb25zdCBTdHJpbmcmIHR5
cGUpIGNvbnN0IHsgcmV0dXJuIG1fdW5rbm93blR5cGVEYXRhLmdldCh0eXBlKTsgfQotICAgIGNv
bnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiB1bmtub3duVHlwZXMoKSBjb25zdDsKLSAgICB2
b2lkIHNldFRleHQoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9pZCBzZXRNYXJrdXAoY29uc3QgU3Ry
aW5nJik7CiAgICAgdm9pZCBzZXRVbmtub3duVHlwZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBj
b25zdCBTdHJpbmcmIGRhdGEpIHsgbV91bmtub3duVHlwZURhdGEuc2V0KHR5cGUsIGRhdGEpOyB9
Ci0gICAgdm9pZCBzZXRVUklMaXN0KGNvbnN0IFN0cmluZyYpOworICAgIFN0cmluZyB1bmtub3du
VHlwZURhdGEoY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zdCB7IHJldHVybiBtX3Vua25vd25UeXBl
RGF0YS5nZXQodHlwZSk7IH0KKyAgICBjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgdW5r
bm93blR5cGVzKCkgY29uc3QgeyByZXR1cm4gbV91bmtub3duVHlwZURhdGE7IH0KKyAgICBib29s
IGhhc1Vua25vd25UeXBlRGF0YSgpIGNvbnN0IHsgcmV0dXJuICFtX3Vua25vd25UeXBlRGF0YS5p
c0VtcHR5KCk7IH0KKwogICAgIHZvaWQgc2V0Q2FuU21hcnRSZXBsYWNlKGJvb2wgY2FuU21hcnRS
ZXBsYWNlKSB7IG1fY2FuU21hcnRSZXBsYWNlID0gY2FuU21hcnRSZXBsYWNlOyB9Ci0gICAgU3Ry
aW5nIHVybExhYmVsKCkgY29uc3Q7CisgICAgYm9vbCBjYW5TbWFydFJlcGxhY2UoKSBjb25zdCB7
IHJldHVybiBtX2NhblNtYXJ0UmVwbGFjZTsgfQogCi0gICAgdm9pZCBjbGVhckFsbEV4Y2VwdEZp
bGVuYW1lcygpOwogICAgIHZvaWQgY2xlYXJBbGwoKTsKLSAgICB2b2lkIGNsZWFyVGV4dCgpOwot
ICAgIHZvaWQgY2xlYXJNYXJrdXAoKTsKKyAgICB2b2lkIGNsZWFyQWxsRXhjZXB0RmlsZW5hbWVz
KCk7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fdGV4dDsKQEAgLTc4LDQgKzg0LDQgQEAgcHJp
dmF0ZToKICAgICBib29sIG1fY2FuU21hcnRSZXBsYWNlIHsgZmFsc2UgfTsKIH07CiAKLX0KK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA3YWNlODE3Li5hY2U1NTFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTkgQEAKKzIwMTYtMDktMjIgIENhcmxvcyBHYXJjaWEgQ2FtcG9z
ICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIFJlbmFtZSBEYXRhT2JqZWN0
R3RrIGFzIFNlbGVjdGlvbkRhdGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2MjM4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogUGxhdGZvcm1HVEsuY21ha2U6CisgICAgICAgICogU2hhcmVkL2d0ay9B
cmd1bWVudENvZGVyc0d0ay5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8U2VsZWN0
aW9uRGF0YT46OmVuY29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8U2VsZWN0aW9u
RGF0YT46OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5o
OgorICAgICAgICAqIFNoYXJlZC9ndGsvV2ViU2VsZWN0aW9uRGF0YS5jcHA6IFJlbmFtZWQgZnJv
bSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1Bhc3RlYm9hcmRDb250ZW50LmNwcC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViU2VsZWN0aW9uRGF0YTo6V2ViU2VsZWN0aW9uRGF0YSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlNlbGVjdGlvbkRhdGE6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNlbGVjdGlvbkRhdGE6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL2d0ay9XZWJTZWxlY3Rp
b25EYXRhLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1Bhc3RlYm9h
cmRDb250ZW50LmguCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6c3RhcnREcmFnKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGVyZm9ybURyYWdDb250cm9sbGVyQWN0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzdGFydERyYWcpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJv
eHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFzdGVib2FyZFByb3h5Lm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIFVJUHJvY2Vzcy9ndGsvRHJhZ0FuZERyb3BIYW5kbGVyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6RHJhZ0FuZERyb3BIYW5kbGVyOjpEcm9wcGluZ0NvbnRleHQ6OkRyb3BwaW5n
Q29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OkRyYWdBbmREcm9wSGFuZGxlcjo6c3RhcnREcmFn
KToKKyAgICAgICAgKFdlYktpdDo6RHJhZ0FuZERyb3BIYW5kbGVyOjpmaWxsRHJhZ0RhdGEpOgor
ICAgICAgICAoV2ViS2l0OjpEcmFnQW5kRHJvcEhhbmRsZXI6OmZpbmlzaERyYWcpOgorICAgICAg
ICAoV2ViS2l0OjpEcmFnQW5kRHJvcEhhbmRsZXI6OmRyb3BEYXRhU2VsZWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6RHJhZ0FuZERyb3BIYW5kbGVyOjpkcmFnRW50ZXJlZCk6CisgICAgICAgIChX
ZWJLaXQ6OkRyYWdBbmREcm9wSGFuZGxlcjo6ZHJhZ0RhdGFTZWxlY3Rpb24pOgorICAgICAgICAo
V2ViS2l0OjpEcmFnQW5kRHJvcEhhbmRsZXI6OmRyYWdNb3Rpb24pOgorICAgICAgICAoV2ViS2l0
OjpEcmFnQW5kRHJvcEhhbmRsZXI6OmRyYWdMZWF2ZSk6CisgICAgICAgIChXZWJLaXQ6OkRyYWdB
bmREcm9wSGFuZGxlcjo6ZHJvcCk6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9EcmFnQW5kRHJv
cEhhbmRsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1dlYlBhc3RlYm9hcmRQcm94eUd0
ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6d3JpdGVUb0NsaXBi
b2FyZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhc3RlYm9hcmRQcm94eTo6cmVhZEZyb21DbGlw
Ym9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXN0ZWJvYXJkUHJveHk6OnNldFByaW1hcnlT
ZWxlY3Rpb25Pd25lcik6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OndyaXRlVG9DbGlwYm9hcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRGcm9tQ2xpcGJvYXJkKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJEcmFnQ2xpZW50OjpzdGFydERyYWcpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkVkaXRvckNsaWVudEd0ay5jcHA6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
OjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW46CisKIDIwMTYtMDktMjEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjE5NDM4Nyk6IENyYXNoIG9uIGdpdGh1
Yi5jb20gaW4gSW50bERhdGVUaW1lRm9ybWF0OjpyZXNvbHZlZE9wdGlvbnMgaW4gQyBsb2NhbGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlIGIvU291cmNlL1dl
YktpdDIvUGxhdGZvcm1HVEsuY21ha2UKaW5kZXggOWVkODExNS4uNDVjMWQ5NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIv
UGxhdGZvcm1HVEsuY21ha2UKQEAgLTcxLDEyICs3MSwxMiBAQCBsaXN0KEFQUEVORCBXZWJLaXQy
X1NPVVJDRVMKICAgICBTaGFyZWQvZ3RrL05hdGl2ZVdlYk1vdXNlRXZlbnRHdGsuY3BwCiAgICAg
U2hhcmVkL2d0ay9OYXRpdmVXZWJUb3VjaEV2ZW50R3RrLmNwcAogICAgIFNoYXJlZC9ndGsvTmF0
aXZlV2ViV2hlZWxFdmVudEd0ay5jcHAKLSAgICBTaGFyZWQvZ3RrL1Bhc3RlYm9hcmRDb250ZW50
LmNwcAogICAgIFNoYXJlZC9ndGsvUHJpbnRJbmZvR3RrLmNwcAogICAgIFNoYXJlZC9ndGsvUHJv
Y2Vzc0V4ZWN1dGFibGVQYXRoR3RrLmNwcAogICAgIFNoYXJlZC9ndGsvV2ViQ29udGV4dE1lbnVJ
dGVtR3RrLmNwcAogICAgIFNoYXJlZC9ndGsvV2ViRXZlbnRGYWN0b3J5LmNwcAogICAgIFNoYXJl
ZC9ndGsvV2ViS2l0MkluaXRpYWxpemVHVEsuY3BwCisgICAgU2hhcmVkL2d0ay9XZWJTZWxlY3Rp
b25EYXRhLmNwcAogCiAgICAgU2hhcmVkL2xpbnV4L1dlYk1lbW9yeVNhbXBsZXJMaW51eC5jcHAK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0
ay5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcApp
bmRleCBlNjg2YmIzLi4zNDI2MjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
Z3RrL0FyZ3VtZW50Q29kZXJzR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3Rr
L0FyZ3VtZW50Q29kZXJzR3RrLmNwcApAQCAtMjksOSArMjksOSBAQAogI2luY2x1ZGUgIkRhdGFS
ZWZlcmVuY2UuaCIKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRlICJXZWJD
b3JlQXJndW1lbnRDb2RlcnMuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0RhdGFPYmplY3RHdGsuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
SW1hZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NlbGVjdGlvbkRhdGEuaD4KICNpbmNsdWRlIDxn
dGsvZ3RrLmg+CiAjaW5jbHVkZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgogCkBAIC02Niw0NSAr
NjYsNDUgQEAgc3RhdGljIGJvb2wgZGVjb2RlSW1hZ2UoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRy
PEltYWdlPiYgaW1hZ2UpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQXJndW1lbnRDb2Rl
cjxEYXRhT2JqZWN0R3RrPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IERhdGFPYmpl
Y3RHdGsmIGRhdGFPYmplY3QpCit2b2lkIEFyZ3VtZW50Q29kZXI8U2VsZWN0aW9uRGF0YT46OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTZWxlY3Rpb25EYXRhJiBzZWxlY3Rpb24pCiB7
Ci0gICAgYm9vbCBoYXNUZXh0ID0gZGF0YU9iamVjdC5oYXNUZXh0KCk7CisgICAgYm9vbCBoYXNU
ZXh0ID0gc2VsZWN0aW9uLmhhc1RleHQoKTsKICAgICBlbmNvZGVyIDw8IGhhc1RleHQ7CiAgICAg
aWYgKGhhc1RleHQpCi0gICAgICAgIGVuY29kZXIgPDwgZGF0YU9iamVjdC50ZXh0KCk7CisgICAg
ICAgIGVuY29kZXIgPDwgc2VsZWN0aW9uLnRleHQoKTsKIAotICAgIGJvb2wgaGFzTWFya3VwID0g
ZGF0YU9iamVjdC5oYXNNYXJrdXAoKTsKKyAgICBib29sIGhhc01hcmt1cCA9IHNlbGVjdGlvbi5o
YXNNYXJrdXAoKTsKICAgICBlbmNvZGVyIDw8IGhhc01hcmt1cDsKICAgICBpZiAoaGFzTWFya3Vw
KQotICAgICAgICBlbmNvZGVyIDw8IGRhdGFPYmplY3QubWFya3VwKCk7CisgICAgICAgIGVuY29k
ZXIgPDwgc2VsZWN0aW9uLm1hcmt1cCgpOwogCi0gICAgYm9vbCBoYXNVUkwgPSBkYXRhT2JqZWN0
Lmhhc1VSTCgpOworICAgIGJvb2wgaGFzVVJMID0gc2VsZWN0aW9uLmhhc1VSTCgpOwogICAgIGVu
Y29kZXIgPDwgaGFzVVJMOwogICAgIGlmIChoYXNVUkwpCi0gICAgICAgIGVuY29kZXIgPDwgZGF0
YU9iamVjdC51cmwoKS5zdHJpbmcoKTsKKyAgICAgICAgZW5jb2RlciA8PCBzZWxlY3Rpb24udXJs
KCkuc3RyaW5nKCk7CiAKLSAgICBib29sIGhhc1VSSUxpc3QgPSBkYXRhT2JqZWN0Lmhhc1VSSUxp
c3QoKTsKKyAgICBib29sIGhhc1VSSUxpc3QgPSBzZWxlY3Rpb24uaGFzVVJJTGlzdCgpOwogICAg
IGVuY29kZXIgPDwgaGFzVVJJTGlzdDsKICAgICBpZiAoaGFzVVJJTGlzdCkKLSAgICAgICAgZW5j
b2RlciA8PCBkYXRhT2JqZWN0LnVyaUxpc3QoKTsKKyAgICAgICAgZW5jb2RlciA8PCBzZWxlY3Rp
b24udXJpTGlzdCgpOwogCi0gICAgYm9vbCBoYXNJbWFnZSA9IGRhdGFPYmplY3QuaGFzSW1hZ2Uo
KTsKKyAgICBib29sIGhhc0ltYWdlID0gc2VsZWN0aW9uLmhhc0ltYWdlKCk7CiAgICAgZW5jb2Rl
ciA8PCBoYXNJbWFnZTsKICAgICBpZiAoaGFzSW1hZ2UpCi0gICAgICAgIGVuY29kZUltYWdlKGVu
Y29kZXIsICpkYXRhT2JqZWN0LmltYWdlKCkpOworICAgICAgICBlbmNvZGVJbWFnZShlbmNvZGVy
LCAqc2VsZWN0aW9uLmltYWdlKCkpOwogCi0gICAgYm9vbCBoYXNVbmtub3duVHlwZURhdGEgPSBk
YXRhT2JqZWN0Lmhhc1Vua25vd25UeXBlRGF0YSgpOworICAgIGJvb2wgaGFzVW5rbm93blR5cGVE
YXRhID0gc2VsZWN0aW9uLmhhc1Vua25vd25UeXBlRGF0YSgpOwogICAgIGVuY29kZXIgPDwgaGFz
VW5rbm93blR5cGVEYXRhOwogICAgIGlmIChoYXNVbmtub3duVHlwZURhdGEpCi0gICAgICAgIGVu
Y29kZXIgPDwgZGF0YU9iamVjdC51bmtub3duVHlwZXMoKTsKKyAgICAgICAgZW5jb2RlciA8PCBz
ZWxlY3Rpb24udW5rbm93blR5cGVzKCk7CiAKLSAgICBib29sIGNhblNtYXJ0UmVwbGFjZSA9IGRh
dGFPYmplY3QuY2FuU21hcnRSZXBsYWNlKCk7CisgICAgYm9vbCBjYW5TbWFydFJlcGxhY2UgPSBz
ZWxlY3Rpb24uY2FuU21hcnRSZXBsYWNlKCk7CiAgICAgZW5jb2RlciA8PCBjYW5TbWFydFJlcGxh
Y2U7CiB9CiAKLWJvb2wgQXJndW1lbnRDb2RlcjxEYXRhT2JqZWN0R3RrPjo6ZGVjb2RlKERlY29k
ZXImIGRlY29kZXIsIERhdGFPYmplY3RHdGsmIGRhdGFPYmplY3QpCitib29sIEFyZ3VtZW50Q29k
ZXI8U2VsZWN0aW9uRGF0YT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBTZWxlY3Rpb25EYXRh
JiBzZWxlY3Rpb24pCiB7Ci0gICAgZGF0YU9iamVjdC5jbGVhckFsbCgpOworICAgIHNlbGVjdGlv
bi5jbGVhckFsbCgpOwogCiAgICAgYm9vbCBoYXNUZXh0OwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoaGFzVGV4dCkpCkBAIC0xMTMsNyArMTEzLDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPERhdGFP
YmplY3RHdGs+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgRGF0YU9iamVjdEd0ayYgZGF0YU8K
ICAgICAgICAgU3RyaW5nIHRleHQ7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUodGV4dCkp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGRhdGFPYmplY3Quc2V0VGV4dCh0
ZXh0KTsKKyAgICAgICAgc2VsZWN0aW9uLnNldFRleHQodGV4dCk7CiAgICAgfQogCiAgICAgYm9v
bCBoYXNNYXJrdXA7CkBAIC0xMjMsNyArMTIzLDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPERhdGFP
YmplY3RHdGs+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgRGF0YU9iamVjdEd0ayYgZGF0YU8K
ICAgICAgICAgU3RyaW5nIG1hcmt1cDsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShtYXJr
dXApKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBkYXRhT2JqZWN0LnNldE1h
cmt1cChtYXJrdXApOworICAgICAgICBzZWxlY3Rpb24uc2V0TWFya3VwKG1hcmt1cCk7CiAgICAg
fQogCiAgICAgYm9vbCBoYXNVUkw7CkBAIC0xMzMsNyArMTMzLDcgQEAgYm9vbCBBcmd1bWVudENv
ZGVyPERhdGFPYmplY3RHdGs+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgRGF0YU9iamVjdEd0
ayYgZGF0YU8KICAgICAgICAgU3RyaW5nIHVybDsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZSh1cmwpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBkYXRhT2JqZWN0LnNl
dFVSTChVUkwoVVJMKCksIHVybCksIFN0cmluZygpKTsKKyAgICAgICAgc2VsZWN0aW9uLnNldFVS
TChVUkwoVVJMKCksIHVybCksIFN0cmluZygpKTsKICAgICB9CiAKICAgICBib29sIGhhc1VSSUxp
c3Q7CkBAIC0xNDMsNyArMTQzLDcgQEAgYm9vbCBBcmd1bWVudENvZGVyPERhdGFPYmplY3RHdGs+
OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgRGF0YU9iamVjdEd0ayYgZGF0YU8KICAgICAgICAg
U3RyaW5nIHVyaUxpc3Q7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUodXJpTGlzdCkpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGRhdGFPYmplY3Quc2V0VVJJTGlzdCh1
cmlMaXN0KTsKKyAgICAgICAgc2VsZWN0aW9uLnNldFVSSUxpc3QodXJpTGlzdCk7CiAgICAgfQog
CiAgICAgYm9vbCBoYXNJbWFnZTsKQEAgLTE1Myw3ICsxNTMsNyBAQCBib29sIEFyZ3VtZW50Q29k
ZXI8RGF0YU9iamVjdEd0az46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBEYXRhT2JqZWN0R3Rr
JiBkYXRhTwogICAgICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlOwogICAgICAgICBpZiAoIWRlY29k
ZUltYWdlKGRlY29kZXIsIGltYWdlKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgZGF0YU9iamVjdC5zZXRJbWFnZShpbWFnZS5nZXQoKSk7CisgICAgICAgIHNlbGVjdGlvbi5z
ZXRJbWFnZShpbWFnZS5nZXQoKSk7CiAgICAgfQogCiAgICAgYm9vbCBoYXNVbmtub3duVHlwZURh
dGE7CkBAIC0xNjYsMTMgKzE2NiwxMyBAQCBib29sIEFyZ3VtZW50Q29kZXI8RGF0YU9iamVjdEd0
az46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBEYXRhT2JqZWN0R3RrJiBkYXRhTwogCiAgICAg
ICAgIGF1dG8gZW5kID0gdW5rbm93blR5cGVzLmVuZCgpOwogICAgICAgICBmb3IgKGF1dG8gaXQg
PSB1bmtub3duVHlwZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICAgICAgZGF0
YU9iamVjdC5zZXRVbmtub3duVHlwZURhdGEoaXQtPmtleSwgaXQtPnZhbHVlKTsKKyAgICAgICAg
ICAgIHNlbGVjdGlvbi5zZXRVbmtub3duVHlwZURhdGEoaXQtPmtleSwgaXQtPnZhbHVlKTsKICAg
ICB9CiAKICAgICBib29sIGNhblNtYXJ0UmVwbGFjZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGNhblNtYXJ0UmVwbGFjZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBkYXRhT2JqZWN0
LnNldENhblNtYXJ0UmVwbGFjZShjYW5TbWFydFJlcGxhY2UpOworICAgIHNlbGVjdGlvbi5zZXRD
YW5TbWFydFJlcGxhY2UoY2FuU21hcnRSZXBsYWNlKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5o
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9Bcmd1bWVudENvZGVyc0d0ay5oCmluZGV4IDhl
YTk0YWMuLmYxZTc4NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvQXJn
dW1lbnRDb2RlcnNHdGsuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL0FyZ3VtZW50
Q29kZXJzR3RrLmgKQEAgLTMzLDcgKzMzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX0d0a1ByaW50U2V0
dGluZ3MgR3RrUHJpbnRTZXR0aW5nczsKIHR5cGVkZWYgc3RydWN0IF9HdGtQYWdlU2V0dXAgR3Rr
UGFnZVNldHVwOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBEYXRhT2JqZWN0R3RrOwor
Y2xhc3MgU2VsZWN0aW9uRGF0YTsKIH0KIAogbmFtZXNwYWNlIElQQyB7CkBAIC00NCw5ICs0NCw5
IEBAIGJvb2wgZGVjb2RlKERlY29kZXImLCBHUmVmUHRyPEd0a1ByaW50U2V0dGluZ3M+Jik7CiB2
b2lkIGVuY29kZShFbmNvZGVyJiwgR3RrUGFnZVNldHVwKik7CiBib29sIGRlY29kZShEZWNvZGVy
JiwgR1JlZlB0cjxHdGtQYWdlU2V0dXA+Jik7CiAKLXRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6RGF0YU9iamVjdEd0az4gewotICAgIHN0YXRpYyB2b2lkIGVuY29kZShF
bmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6RGF0YU9iamVjdEd0ayYpOwotICAgIHN0YXRpYyBib29s
IGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6RGF0YU9iamVjdEd0ayYpOwordGVtcGxhdGU8PiBz
dHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpTZWxlY3Rpb25EYXRhPiB7CisgICAgc3RhdGlj
IHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJik7Cisg
ICAgc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpTZWxlY3Rpb25EYXRhJik7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9ndGsvUGFzdGVib2FyZENvbnRlbnQuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL2d0
ay9XZWJTZWxlY3Rpb25EYXRhLmNwcApzaW1pbGFyaXR5IGluZGV4IDYwJQpyZW5hbWUgZnJvbSBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1Bhc3RlYm9hcmRDb250ZW50LmNwcApyZW5hbWUgdG8g
U291cmNlL1dlYktpdDIvU2hhcmVkL2d0ay9XZWJTZWxlY3Rpb25EYXRhLmNwcAppbmRleCAzMTA1
YzI0Li4xOWZjMjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1Bhc3Rl
Ym9hcmRDb250ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYlNlbGVj
dGlvbkRhdGEuY3BwCkBAIC0xNywzOSArMTcsMzggQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiUGFzdGVib2FyZENvbnRlbnQuaCIKKyNpbmNsdWRlICJXZWJTZWxlY3Rp
b25EYXRhLmgiCiAKICNpbmNsdWRlICJBcmd1bWVudENvZGVyc0d0ay5oIgotI2luY2x1ZGUgIkRh
dGFPYmplY3RHdGsuaCIKICNpbmNsdWRlICJEZWNvZGVyLmgiCiAjaW5jbHVkZSAiRW5jb2Rlci5o
IgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLVBh
c3RlYm9hcmRDb250ZW50OjpQYXN0ZWJvYXJkQ29udGVudCgpCi0gICAgOiBkYXRhT2JqZWN0KFdl
YkNvcmU6OkRhdGFPYmplY3RHdGs6OmNyZWF0ZSgpKQorV2ViU2VsZWN0aW9uRGF0YTo6V2ViU2Vs
ZWN0aW9uRGF0YSgpCisgICAgOiBzZWxlY3Rpb25EYXRhKFdlYkNvcmU6OlNlbGVjdGlvbkRhdGE6
OmNyZWF0ZSgpKQogewogfQogCi1QYXN0ZWJvYXJkQ29udGVudDo6UGFzdGVib2FyZENvbnRlbnQo
Y29uc3QgV2ViQ29yZTo6RGF0YU9iamVjdEd0ayYgZGF0YSkKLSAgICA6IGRhdGFPYmplY3QoY29u
c3RfY2FzdDxXZWJDb3JlOjpEYXRhT2JqZWN0R3RrJj4oZGF0YSkpCitXZWJTZWxlY3Rpb25EYXRh
OjpXZWJTZWxlY3Rpb25EYXRhKGNvbnN0IFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEmIGRhdGEpCisg
ICAgOiBzZWxlY3Rpb25EYXRhKGNvbnN0X2Nhc3Q8V2ViQ29yZTo6U2VsZWN0aW9uRGF0YSY+KGRh
dGEpKQogewogfQogCi1QYXN0ZWJvYXJkQ29udGVudDo6UGFzdGVib2FyZENvbnRlbnQoUmVmPFdl
YkNvcmU6OkRhdGFPYmplY3RHdGs+JiYgZGF0YSkKLSAgICA6IGRhdGFPYmplY3QoV1RGTW92ZShk
YXRhKSkKK1dlYlNlbGVjdGlvbkRhdGE6OldlYlNlbGVjdGlvbkRhdGEoUmVmPFdlYkNvcmU6OlNl
bGVjdGlvbkRhdGE+JiYgZGF0YSkKKyAgICA6IHNlbGVjdGlvbkRhdGEoV1RGTW92ZShkYXRhKSkK
IHsKIH0KIAotdm9pZCBQYXN0ZWJvYXJkQ29udGVudDo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5j
b2RlcikgY29uc3QKK3ZvaWQgV2ViU2VsZWN0aW9uRGF0YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKIHsKLSAgICBlbmNvZGVyIDw8IGRhdGFPYmplY3QuZ2V0KCk7CisgICAg
ZW5jb2RlciA8PCBzZWxlY3Rpb25EYXRhLmdldCgpOwogfQogCi1ib29sIFBhc3RlYm9hcmRDb250
ZW50OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBQYXN0ZWJvYXJkQ29udGVudCYgcGFz
dGVib2FyZENvbnRlbnQpCitib29sIFdlYlNlbGVjdGlvbkRhdGE6OmRlY29kZShJUEM6OkRlY29k
ZXImIGRlY29kZXIsIFdlYlNlbGVjdGlvbkRhdGEmIHNlbGVjdGlvbikKIHsKLSAgICByZXR1cm4g
ZGVjb2Rlci5kZWNvZGUocGFzdGVib2FyZENvbnRlbnQuZGF0YU9iamVjdC5nZXQoKSk7CisgICAg
cmV0dXJuIGRlY29kZXIuZGVjb2RlKHNlbGVjdGlvbi5zZWxlY3Rpb25EYXRhLmdldCgpKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvZ3RrL1Bhc3RlYm9hcmRDb250ZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dl
YlNlbGVjdGlvbkRhdGEuaApzaW1pbGFyaXR5IGluZGV4IDcwJQpyZW5hbWUgZnJvbSBTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvZ3RrL1Bhc3RlYm9hcmRDb250ZW50LmgKcmVuYW1lIHRvIFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9ndGsvV2ViU2VsZWN0aW9uRGF0YS5oCmluZGV4IDk4ZDkyNTUuLjE4ZDg1
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9ndGsvUGFzdGVib2FyZENvbnRl
bnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvZ3RrL1dlYlNlbGVjdGlvbkRhdGEuaApA
QCAtMTYsMTAgKzE2LDkgQEAKICAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKICAqLwogCi0jaWZu
ZGVmIFBhc3RlYm9hcmRDb250ZW50X2gKLSNkZWZpbmUgUGFzdGVib2FyZENvbnRlbnRfaAorI3By
YWdtYSBvbmNlCiAKLSNpbmNsdWRlICJEYXRhT2JqZWN0R3RrLmgiCisjaW5jbHVkZSA8V2ViQ29y
ZS9TZWxlY3Rpb25EYXRhLmg+CiAKIG5hbWVzcGFjZSBJUEMgewogY2xhc3MgRGVjb2RlcjsKQEAg
LTI4LDE3ICsyNywxNiBAQCBjbGFzcyBFbmNvZGVyOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAot
c3RydWN0IFBhc3RlYm9hcmRDb250ZW50IHsKLSAgICBQYXN0ZWJvYXJkQ29udGVudCgpOwotICAg
IGV4cGxpY2l0IFBhc3RlYm9hcmRDb250ZW50KGNvbnN0IFdlYkNvcmU6OkRhdGFPYmplY3RHdGsm
KTsKLSAgICBleHBsaWNpdCBQYXN0ZWJvYXJkQ29udGVudChSZWY8V2ViQ29yZTo6RGF0YU9iamVj
dEd0az4mJik7CitzdHJ1Y3QgV2ViU2VsZWN0aW9uRGF0YSB7CisgICAgV2ViU2VsZWN0aW9uRGF0
YSgpOworICAgIGV4cGxpY2l0IFdlYlNlbGVjdGlvbkRhdGEoY29uc3QgV2ViQ29yZTo6U2VsZWN0
aW9uRGF0YSYpOworICAgIGV4cGxpY2l0IFdlYlNlbGVjdGlvbkRhdGEoUmVmPFdlYkNvcmU6OlNl
bGVjdGlvbkRhdGE+JiYpOwogCi0gICAgUmVmPFdlYkNvcmU6OkRhdGFPYmplY3RHdGs+IGRhdGFP
YmplY3Q7CisgICAgUmVmPFdlYkNvcmU6OlNlbGVjdGlvbkRhdGE+IHNlbGVjdGlvbkRhdGE7CiAK
ICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKLSAgICBzdGF0aWMgYm9vbCBk
ZWNvZGUoSVBDOjpEZWNvZGVyJiwgUGFzdGVib2FyZENvbnRlbnQmKTsKKyAgICBzdGF0aWMgYm9v
bCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgV2ViU2VsZWN0aW9uRGF0YSYpOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CiAKLSNlbmRpZiAvLyBQYXN0ZWJvYXJkQ29udGVudF9oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKaW5k
ZXggYjY0OWRiOC4uODE1ODU1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcApAQCAtMjU0LDcgKzI1NCw3IEBAIHZvaWQgUGFn
ZUNsaWVudEltcGw6OmRpZENoYW5nZUNvbnRlbnRTaXplKGNvbnN0IEludFNpemUmIHNpemUpCiB9
CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQotdm9pZCBQYWdlQ2xpZW50SW1wbDo6c3RhcnRE
cmFnKFJlZjxEYXRhT2JqZWN0R3RrPiYmIHNlbGVjdGlvbiwgRHJhZ09wZXJhdGlvbiBkcmFnT3Bl
cmF0aW9uLCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYmIGRyYWdJbWFnZSkKK3ZvaWQgUGFnZUNs
aWVudEltcGw6OnN0YXJ0RHJhZyhSZWY8U2VsZWN0aW9uRGF0YT4mJiBzZWxlY3Rpb24sIERyYWdP
cGVyYXRpb24gZHJhZ09wZXJhdGlvbiwgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4mJiBkcmFnSW1h
Z2UpCiB7CiAgICAgV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVdf
QkFTRShtX3ZpZXdXaWRnZXQpOwogICAgIHdlYmtpdFdlYlZpZXdCYXNlRHJhZ0FuZERyb3BIYW5k
bGVyKHdlYlZpZXcpLnN0YXJ0RHJhZyhXVEZNb3ZlKHNlbGVjdGlvbiksIGRyYWdPcGVyYXRpb24s
IFdURk1vdmUoZHJhZ0ltYWdlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvUGFnZUNsaWVudEltcGwuaAppbmRleCBjYzE4MDlmLi44ZDRhMzEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmgKQEAgLTg2
LDcgKzg2LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIHZvaWQgc2VsZWN0aW9uRGlkQ2hhbmdl
KCkgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKLSAgICB2b2lkIHN0YXJ0RHJh
ZyhSZWY8V2ViQ29yZTo6RGF0YU9iamVjdEd0az4mJiwgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiwg
UmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4mJiBkcmFnSW1hZ2UpIG92ZXJyaWRlOworICAgIHZvaWQg
c3RhcnREcmFnKFJlZjxXZWJDb3JlOjpTZWxlY3Rpb25EYXRhPiYmLCBXZWJDb3JlOjpEcmFnT3Bl
cmF0aW9uLCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYmIGRyYWdJbWFnZSkgb3ZlcnJpZGU7CiAj
ZW5kaWYKIAogICAgIHZvaWQgZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShjb25zdCBM
YXllclRyZWVDb250ZXh0Jikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGll
bnQuaAppbmRleCBiMTc2NjM2Li5mNDNiZjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdl
Q2xpZW50LmgKQEAgLTE1Nyw3ICsxNTcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRp
ZENoYW5nZUNvbnRlbnRTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSA9IDA7CiAKICNpZiBQ
TEFURk9STShHVEspICYmIEVOQUJMRShEUkFHX1NVUFBPUlQpCi0gICAgdmlydHVhbCB2b2lkIHN0
YXJ0RHJhZyhSZWY8V2ViQ29yZTo6RGF0YU9iamVjdEd0az4mJiwgV2ViQ29yZTo6RHJhZ09wZXJh
dGlvbiwgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4mJiBkcmFnSW1hZ2UpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgc3RhcnREcmFnKFJlZjxXZWJDb3JlOjpTZWxlY3Rpb25EYXRhPiYmLCBXZWJDb3Jl
OjpEcmFnT3BlcmF0aW9uLCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYmIGRyYWdJbWFnZSkgPSAw
OwogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q3Vyc29yKGNvbnN0IFdlYkNvcmU6OkN1
cnNvciYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5k
ZXggOWE2Y2U0NS4uNGVkOGE0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKQEAgLTE1Niw3ICsxNTYsNyBAQAogI2VuZGlmCiAKICNpZiBQTEFURk9STShHVEsp
Ci0jaW5jbHVkZSAiUGFzdGVib2FyZENvbnRlbnQuaCIKKyNpbmNsdWRlICJXZWJTZWxlY3Rpb25E
YXRhLmgiCiAjZW5kaWYKIAogI2lmIFVTRShDQUlSTykKQEAgLTE3NzQsNyArMTc3NCw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJhZ0NvbnRyb2xs
ZXJBY3Rpb24gYWN0aW9uLCBEcmFnCiAgICAgICAgIG1fcHJvY2Vzcy0+YXNzdW1lUmVhZEFjY2Vz
c1RvQmFzZVVSTCh1cmwpOwogCiAgICAgQVNTRVJUKGRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpKTsK
LSAgICBQYXN0ZWJvYXJkQ29udGVudCBzZWxlY3Rpb24oKmRyYWdEYXRhLnBsYXRmb3JtRGF0YSgp
KTsKKyAgICBXZWJTZWxlY3Rpb25EYXRhIHNlbGVjdGlvbigqZHJhZ0RhdGEucGxhdGZvcm1EYXRh
KCkpOwogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGVyZm9ybURyYWdD
b250cm9sbGVyQWN0aW9uKGFjdGlvbiwgZHJhZ0RhdGEuY2xpZW50UG9zaXRpb24oKSwgZHJhZ0Rh
dGEuZ2xvYmFsUG9zaXRpb24oKSwgZHJhZ0RhdGEuZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNr
KCksIHNlbGVjdGlvbiwgZHJhZ0RhdGEuZmxhZ3MoKSksIG1fcGFnZUlEKTsKICNlbHNlCiAgICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQZXJmb3JtRHJhZ0NvbnRyb2xsZXJB
Y3Rpb24oYWN0aW9uLCBkcmFnRGF0YS5jbGllbnRQb3NpdGlvbigpLCBkcmFnRGF0YS5nbG9iYWxQ
b3NpdGlvbigpLCBkcmFnRGF0YS5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2soKSwgZHJhZ1N0
b3JhZ2VOYW1lLCBkcmFnRGF0YS5mbGFncygpLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBzYW5k
Ym94RXh0ZW5zaW9uc0ZvclVwbG9hZCksIG1fcGFnZUlEKTsKQEAgLTE3OTEsMTAgKzE3OTEsMTAg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbih1aW50
NjRfdCBkcmFnT3BlcmF0aW9uLCBib29sIG0KIH0KIAogI2lmIFBMQVRGT1JNKEdUSykKLXZvaWQg
V2ViUGFnZVByb3h5OjpzdGFydERyYWcoUGFzdGVib2FyZENvbnRlbnQmJiBzZWxlY3Rpb24sIHVp
bnQ2NF90IGRyYWdPcGVyYXRpb24sIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlJiBkcmFn
SW1hZ2VIYW5kbGUpCit2b2lkIFdlYlBhZ2VQcm94eTo6c3RhcnREcmFnKFdlYlNlbGVjdGlvbkRh
dGEmJiBzZWxlY3Rpb24sIHVpbnQ2NF90IGRyYWdPcGVyYXRpb24sIGNvbnN0IFNoYXJlYWJsZUJp
dG1hcDo6SGFuZGxlJiBkcmFnSW1hZ2VIYW5kbGUpCiB7CiAgICAgUmVmUHRyPFNoYXJlYWJsZUJp
dG1hcD4gZHJhZ0ltYWdlID0gIWRyYWdJbWFnZUhhbmRsZS5pc051bGwoKSA/IFNoYXJlYWJsZUJp
dG1hcDo6Y3JlYXRlKGRyYWdJbWFnZUhhbmRsZSkgOiBudWxscHRyOwotICAgIG1fcGFnZUNsaWVu
dC5zdGFydERyYWcoV1RGTW92ZShzZWxlY3Rpb24uZGF0YU9iamVjdCksIHN0YXRpY19jYXN0PFdl
YkNvcmU6OkRyYWdPcGVyYXRpb24+KGRyYWdPcGVyYXRpb24pLCBXVEZNb3ZlKGRyYWdJbWFnZSkp
OworICAgIG1fcGFnZUNsaWVudC5zdGFydERyYWcoV1RGTW92ZShzZWxlY3Rpb24uc2VsZWN0aW9u
RGF0YSksIHN0YXRpY19jYXN0PFdlYkNvcmU6OkRyYWdPcGVyYXRpb24+KGRyYWdPcGVyYXRpb24p
LCBXVEZNb3ZlKGRyYWdJbWFnZSkpOwogCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpEaWRTdGFydERyYWcoKSwgbV9wYWdlSUQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDlhODBjZDQuLjU3ZWQxOGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTgwOSw3ICs4MDksNyBAQCBwdWJsaWM6CiAj
ZW5kaWYKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykKLSAgICB2b2lkIHN0YXJ0RHJhZyhQYXN0
ZWJvYXJkQ29udGVudCYmLCB1aW50NjRfdCBkcmFnT3BlcmF0aW9uLCBjb25zdCBTaGFyZWFibGVC
aXRtYXA6OkhhbmRsZSYgZHJhZ0ltYWdlKTsKKyAgICB2b2lkIHN0YXJ0RHJhZyhXZWJTZWxlY3Rp
b25EYXRhJiYsIHVpbnQ2NF90IGRyYWdPcGVyYXRpb24sIGNvbnN0IFNoYXJlYWJsZUJpdG1hcDo6
SGFuZGxlJiBkcmFnSW1hZ2UpOwogI2VuZGlmCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggYWU3OWE4ZC4uMTMw
NTJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluCkBAIC0zMDgsNyArMzA4LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsK
ICNlbmRpZgogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKSAmJiBFTkFCTEUoRFJBR19TVVBQT1JU
KQotICAgIFN0YXJ0RHJhZyhzdHJ1Y3QgV2ViS2l0OjpQYXN0ZWJvYXJkQ29udGVudCBzZWxlY3Rp
b24sIHVpbnQ2NF90IGRyYWdPcGVyYXRpb24sIFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5k
bGUgZHJhZ0ltYWdlKQorICAgIFN0YXJ0RHJhZyhzdHJ1Y3QgV2ViS2l0OjpXZWJTZWxlY3Rpb25E
YXRhIHNlbGVjdGlvbiwgdWludDY0X3QgZHJhZ09wZXJhdGlvbiwgV2ViS2l0OjpTaGFyZWFibGVC
aXRtYXA6OkhhbmRsZSBkcmFnSW1hZ2UpCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKENPQ09BKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5oCmluZGV4IGU4
NDAwMzIuLjk1OGRmNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YXN0ZWJvYXJkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFzdGVi
b2FyZFByb3h5LmgKQEAgLTQyLDEwICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFz
cyBXZWJGcmFtZVByb3h5OwogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5OwotCi0jaWYgUExBVEZPUk0o
R1RLKQotY2xhc3MgUGFzdGVib2FyZENvbnRlbnQ7Ci0jZW5kaWYKK3N0cnVjdCBXZWJTZWxlY3Rp
b25EYXRhOwogCiBjbGFzcyBXZWJQYXN0ZWJvYXJkUHJveHkgOiBwdWJsaWMgSVBDOjpNZXNzYWdl
UmVjZWl2ZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYlBhc3RlYm9hcmRQcm94eSk7
CkBAIC05Miw4ICs4OSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRQYXN0ZWJvYXJkQnVmZmVy
Rm9yVHlwZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmRUeXBlLCBjb25zdCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYsIHVpbnQ2NF90IHNpemUsIHVp
bnQ2NF90JiBuZXdDaGFuZ2VDb3VudCk7CiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspCi0gICAg
dm9pZCB3cml0ZVRvQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0
IFBhc3RlYm9hcmRDb250ZW50Jik7Ci0gICAgdm9pZCByZWFkRnJvbUNsaXBib2FyZChjb25zdCBT
dHJpbmcmIHBhc3RlYm9hcmROYW1lLCBQYXN0ZWJvYXJkQ29udGVudCYpOworICAgIHZvaWQgd3Jp
dGVUb0NsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJTZWxl
Y3Rpb25EYXRhJik7CisgICAgdm9pZCByZWFkRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBXZWJTZWxlY3Rpb25EYXRhJik7CiAKICAgICBXZWJGcmFtZVByb3h5KiBt
X3ByaW1hcnlTZWxlY3Rpb25Pd25lciB7IG51bGxwdHIgfTsKICAgICBXZWJGcmFtZVByb3h5KiBt
X2ZyYW1lV3JpdGluZ1RvQ2xpcGJvYXJkIHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYXN0ZWJvYXJkUHJveHkubWVzc2FnZXMuaW4KaW5kZXgg
MTk1ZTZiMC4uNjg4NTFlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhc3RlYm9hcmRQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFzdGVib2FyZFByb3h5Lm1lc3NhZ2VzLmluCkBAIC01MCw3ICs1MCw3IEBAIG1lc3Nh
Z2VzIC0+IFdlYlBhc3RlYm9hcmRQcm94eSB7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKEdUSykK
LSAgICBXcml0ZVRvQ2xpcGJvYXJkKFN0cmluZyBwYXN0ZWJvYXJkTmFtZSwgc3RydWN0IFdlYktp
dDo6UGFzdGVib2FyZENvbnRlbnQgcGFzdGVib2FyZENvbnRlbnQpCi0gICAgUmVhZEZyb21DbGlw
Ym9hcmQoU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAtPiAoc3RydWN0IFdlYktpdDo6UGFzdGVib2Fy
ZENvbnRlbnQgcGFzdGVib2FyZENvbnRlbnQpCisgICAgV3JpdGVUb0NsaXBib2FyZChTdHJpbmcg
cGFzdGVib2FyZE5hbWUsIHN0cnVjdCBXZWJLaXQ6OldlYlNlbGVjdGlvbkRhdGEgcGFzdGVib2Fy
ZENvbnRlbnQpCisgICAgUmVhZEZyb21DbGlwYm9hcmQoU3RyaW5nIHBhc3RlYm9hcmROYW1lKSAt
PiAoc3RydWN0IFdlYktpdDo6V2ViU2VsZWN0aW9uRGF0YSBwYXN0ZWJvYXJkQ29udGVudCkKICNl
bmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9EcmFnQW5k
RHJvcEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9EcmFnQW5kRHJv
cEhhbmRsZXIuY3BwCmluZGV4IDZmMjllZjguLjM3OGZiMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9ndGsvRHJhZ0FuZERyb3BIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0RyYWdBbmREcm9wSGFuZGxlci5jcHAKQEAgLTI5LDEyICsy
OSwxMCBAQAogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAKICNpbmNsdWRlICJXZWJQYWdlUHJv
eHkuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0RhdGFPYmplY3RHdGsuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0RyYWdEYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HUmVmUHRyR3RrLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9HdGtVdGlsaXRpZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Bhc3RlYm9hcmRI
ZWxwZXIuaD4KLSNpbmNsdWRlIDxndGsvZ3RrLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4K
ICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVlUHRyLmg+CiAKQEAgLTQ5LDkgKzQ3LDggQEAgRHJh
Z0FuZERyb3BIYW5kbGVyOjpEcmFnQW5kRHJvcEhhbmRsZXIoV2ViUGFnZVByb3h5JiBwYWdlKQog
CiBEcmFnQW5kRHJvcEhhbmRsZXI6OkRyb3BwaW5nQ29udGV4dDo6RHJvcHBpbmdDb250ZXh0KEdk
a0RyYWdDb250ZXh0KiBnZGtDb250ZXh0LCBjb25zdCBJbnRQb2ludCYgcG9zaXRpb24pCiAgICAg
OiBnZGtDb250ZXh0KGdka0NvbnRleHQpCi0gICAgLCBkYXRhT2JqZWN0KERhdGFPYmplY3RHdGs6
OmNyZWF0ZSgpKQogICAgICwgbGFzdE1vdGlvblBvc2l0aW9uKHBvc2l0aW9uKQotICAgICwgZHJv
cEhhcHBlbmVkKGZhbHNlKQorICAgICwgc2VsZWN0aW9uRGF0YShTZWxlY3Rpb25EYXRhOjpjcmVh
dGUoKSkKIHsKIH0KIApAQCAtMTA4LDE0ICsxMDUsMTQgQEAgc3RhdGljIGlubGluZSBEcmFnT3Bl
cmF0aW9uIGdka0RyYWdBY3Rpb25Ub0RyYWdPcGVyYXRpb24oR2RrRHJhZ0FjdGlvbiBnZGtBY3Rp
b24KICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RHJhZ09wZXJhdGlvbj4oYWN0aW9uKTsKIH0KIAot
dm9pZCBEcmFnQW5kRHJvcEhhbmRsZXI6OnN0YXJ0RHJhZyhSZWY8RGF0YU9iamVjdEd0az4mJiBz
ZWxlY3Rpb24sIERyYWdPcGVyYXRpb24gZHJhZ09wZXJhdGlvbiwgUmVmUHRyPFNoYXJlYWJsZUJp
dG1hcD4mJiBkcmFnSW1hZ2UpCit2b2lkIERyYWdBbmREcm9wSGFuZGxlcjo6c3RhcnREcmFnKFJl
ZjxTZWxlY3Rpb25EYXRhPiYmIHNlbGVjdGlvbiwgRHJhZ09wZXJhdGlvbiBkcmFnT3BlcmF0aW9u
LCBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiYmIGRyYWdJbWFnZSkKIHsKICNpZiBHVEtfQ0hFQ0tf
VkVSU0lPTigzLCAxNiwgMCkKLSAgICBtX2RyYWdnaW5nRGF0YU9iamVjdCA9IFdURk1vdmUoc2Vs
ZWN0aW9uKTsKLSAgICBHUmVmUHRyPEd0a1RhcmdldExpc3Q+IHRhcmdldExpc3QgPSBQYXN0ZWJv
YXJkSGVscGVyOjpzaW5nbGV0b24oKS50YXJnZXRMaXN0Rm9yRGF0YU9iamVjdCgqbV9kcmFnZ2lu
Z0RhdGFPYmplY3QpOworICAgIG1fZHJhZ2dpbmdTZWxlY3Rpb25EYXRhID0gV1RGTW92ZShzZWxl
Y3Rpb24pOworICAgIEdSZWZQdHI8R3RrVGFyZ2V0TGlzdD4gdGFyZ2V0TGlzdCA9IFBhc3RlYm9h
cmRIZWxwZXI6OnNpbmdsZXRvbigpLnRhcmdldExpc3RGb3JTZWxlY3Rpb25EYXRhKCptX2RyYWdn
aW5nU2VsZWN0aW9uRGF0YSk7CiAjZWxzZQotICAgIFJlZlB0cjxEYXRhT2JqZWN0R3RrPiBkYXRh
T2JqZWN0ID0gV1RGTW92ZShzZWxlY3Rpb24pOwotICAgIEdSZWZQdHI8R3RrVGFyZ2V0TGlzdD4g
dGFyZ2V0TGlzdCA9IFBhc3RlYm9hcmRIZWxwZXI6OnNpbmdsZXRvbigpLnRhcmdldExpc3RGb3JE
YXRhT2JqZWN0KCpkYXRhT2JqZWN0KTsKKyAgICBSZWZQdHI8U2VsZWN0aW9uRGF0YT4gc2VsZWN0
aW9uRGF0YSA9IFdURk1vdmUoc2VsZWN0aW9uKTsKKyAgICBHUmVmUHRyPEd0a1RhcmdldExpc3Q+
IHRhcmdldExpc3QgPSBQYXN0ZWJvYXJkSGVscGVyOjpzaW5nbGV0b24oKS50YXJnZXRMaXN0Rm9y
U2VsZWN0aW9uRGF0YSgqc2VsZWN0aW9uRGF0YSk7CiAjZW5kaWYKIAogICAgIEdVbmlxdWVQdHI8
R2RrRXZlbnQ+IGN1cnJlbnRFdmVudChndGtfZ2V0X2N1cnJlbnRfZXZlbnQoKSk7CkBAIC0xMzIs
NyArMTI5LDcgQEAgdm9pZCBEcmFnQW5kRHJvcEhhbmRsZXI6OnN0YXJ0RHJhZyhSZWY8RGF0YU9i
amVjdEd0az4mJiBzZWxlY3Rpb24sIERyYWdPcGVyYXRpb24KICNlbHNlCiAgICAgLy8gV2UgZG9u
J3QgaGF2ZSBndGtfZHJhZ19jYW5jZWwoKSBpbiBHVEsrIDwgMy4xNiwgc28gd2UgdXNlIHRoZSBv
bGQgY29kZS4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEzODQ2OAotICAgIG1fZHJhZ2dpbmdEYXRhT2JqZWN0cy5zZXQoY29udGV4dCwgV1RGTW92
ZShkYXRhT2JqZWN0KSk7CisgICAgbV9kcmFnZ2luZ1NlbGVjdGlvbkRhdGFNYXAuc2V0KGNvbnRl
eHQsIFdURk1vdmUoc2VsZWN0aW9uRGF0YSkpOwogI2VuZGlmCiAKICAgICBpZiAoZHJhZ0ltYWdl
KSB7CkBAIC0xNTIsMTEgKzE0OSwxMSBAQCB2b2lkIERyYWdBbmREcm9wSGFuZGxlcjo6ZmlsbERy
YWdEYXRhKEdka0RyYWdDb250ZXh0KiBjb250ZXh0LCBHdGtTZWxlY3Rpb25EYXRhKgogICAgIGlm
IChtX2RyYWdDb250ZXh0LmdldCgpICE9IGNvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAotICAg
IEFTU0VSVChtX2RyYWdnaW5nRGF0YU9iamVjdCk7Ci0gICAgUGFzdGVib2FyZEhlbHBlcjo6c2lu
Z2xldG9uKCkuZmlsbFNlbGVjdGlvbkRhdGEoc2VsZWN0aW9uRGF0YSwgaW5mbywgKm1fZHJhZ2dp
bmdEYXRhT2JqZWN0KTsKKyAgICBBU1NFUlQobV9kcmFnZ2luZ1NlbGVjdGlvbkRhdGEpOworICAg
IFBhc3RlYm9hcmRIZWxwZXI6OnNpbmdsZXRvbigpLmZpbGxTZWxlY3Rpb25EYXRhKCptX2RyYWdn
aW5nU2VsZWN0aW9uRGF0YSwgaW5mbywgc2VsZWN0aW9uRGF0YSk7CiAjZWxzZQotICAgIGlmIChE
YXRhT2JqZWN0R3RrKiBkYXRhT2JqZWN0ID0gbV9kcmFnZ2luZ0RhdGFPYmplY3RzLmdldChjb250
ZXh0KSkKLSAgICAgICAgUGFzdGVib2FyZEhlbHBlcjo6c2luZ2xldG9uKCkuZmlsbFNlbGVjdGlv
bkRhdGEoc2VsZWN0aW9uRGF0YSwgaW5mbywgKmRhdGFPYmplY3QpOworICAgIGlmIChhdXRvKiBz
ZWxlY3Rpb24gPSBtX2RyYWdnaW5nU2VsZWN0aW9uRGF0YU1hcC5nZXQoY29udGV4dCkpCisgICAg
ICAgIFBhc3RlYm9hcmRIZWxwZXI6OnNpbmdsZXRvbigpLmZpbGxTZWxlY3Rpb25EYXRhKCpzZWxl
Y3Rpb24sIGluZm8sIHNlbGVjdGlvbkRhdGEpOwogI2VuZGlmCiB9CiAKQEAgLTE2OCwxMyArMTY1
LDEzIEBAIHZvaWQgRHJhZ0FuZERyb3BIYW5kbGVyOjpmaW5pc2hEcmFnKEdka0RyYWdDb250ZXh0
KiBjb250ZXh0KQogICAgIGlmIChtX2RyYWdDb250ZXh0LmdldCgpICE9IGNvbnRleHQpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGlmICghbV9kcmFnZ2luZ0RhdGFPYmplY3QpCisgICAgaWYgKCFt
X2RyYWdnaW5nU2VsZWN0aW9uRGF0YSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9kcmFnQ29u
dGV4dCA9IG51bGxwdHI7Ci0gICAgbV9kcmFnZ2luZ0RhdGFPYmplY3QgPSBudWxscHRyOworICAg
IG1fZHJhZ2dpbmdTZWxlY3Rpb25EYXRhID0gbnVsbHB0cjsKICNlbHNlCi0gICAgaWYgKCFtX2Ry
YWdnaW5nRGF0YU9iamVjdHMucmVtb3ZlKGNvbnRleHQpKQorICAgIGlmICghbV9kcmFnZ2luZ1Nl
bGVjdGlvbkRhdGFNYXAucmVtb3ZlKGNvbnRleHQpKQogICAgICAgICByZXR1cm47CiAjZW5kaWYK
IApAQCAtMTg2LDE0ICsxODMsMTQgQEAgdm9pZCBEcmFnQW5kRHJvcEhhbmRsZXI6OmZpbmlzaERy
YWcoR2RrRHJhZ0NvbnRleHQqIGNvbnRleHQpCiAgICAgbV9wYWdlLmRyYWdFbmRlZChJbnRQb2lu
dCh4LCB5KSwgSW50UG9pbnQoeFJvb3QsIHlSb290KSwgZ2RrRHJhZ0FjdGlvblRvRHJhZ09wZXJh
dGlvbihnZGtfZHJhZ19jb250ZXh0X2dldF9zZWxlY3RlZF9hY3Rpb24oY29udGV4dCkpKTsKIH0K
IAotRGF0YU9iamVjdEd0ayogRHJhZ0FuZERyb3BIYW5kbGVyOjpkYXRhT2JqZWN0Rm9yRHJvcERh
dGEoR2RrRHJhZ0NvbnRleHQqIGNvbnRleHQsIEd0a1NlbGVjdGlvbkRhdGEqIHNlbGVjdGlvbkRh
dGEsIHVuc2lnbmVkIGluZm8sIEludFBvaW50JiBwb3NpdGlvbikKK1NlbGVjdGlvbkRhdGEqIERy
YWdBbmREcm9wSGFuZGxlcjo6ZHJvcERhdGFTZWxlY3Rpb24oR2RrRHJhZ0NvbnRleHQqIGNvbnRl
eHQsIEd0a1NlbGVjdGlvbkRhdGEqIHNlbGVjdGlvbkRhdGEsIHVuc2lnbmVkIGluZm8sIEludFBv
aW50JiBwb3NpdGlvbikKIHsKICAgICBEcm9wcGluZ0NvbnRleHQqIGRyb3BwaW5nQ29udGV4dCA9
IG1fZHJvcHBpbmdDb250ZXh0cy5nZXQoY29udGV4dCk7CiAgICAgaWYgKCFkcm9wcGluZ0NvbnRl
eHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgZHJvcHBpbmdDb250ZXh0LT5wZW5k
aW5nRGF0YVJlcXVlc3RzLS07Ci0gICAgUGFzdGVib2FyZEhlbHBlcjo6c2luZ2xldG9uKCkuZmls
bERhdGFPYmplY3RGcm9tRHJvcERhdGEoc2VsZWN0aW9uRGF0YSwgaW5mbywgKmRyb3BwaW5nQ29u
dGV4dC0+ZGF0YU9iamVjdCk7CisgICAgUGFzdGVib2FyZEhlbHBlcjo6c2luZ2xldG9uKCkuZmls
bFNlbGVjdGlvbkRhdGEoc2VsZWN0aW9uRGF0YSwgaW5mbywgZHJvcHBpbmdDb250ZXh0LT5zZWxl
Y3Rpb25EYXRhKTsKICAgICBpZiAoZHJvcHBpbmdDb250ZXh0LT5wZW5kaW5nRGF0YVJlcXVlc3Rz
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMjAyLDI0ICsxOTksMjQgQEAgRGF0YU9i
amVjdEd0ayogRHJhZ0FuZERyb3BIYW5kbGVyOjpkYXRhT2JqZWN0Rm9yRHJvcERhdGEoR2RrRHJh
Z0NvbnRleHQqIGNvbnRleHQKICAgICBwb3NpdGlvbiA9IGRyb3BwaW5nQ29udGV4dC0+bGFzdE1v
dGlvblBvc2l0aW9uOwogCiAgICAgLy8gSWYgdGhlcmUgYXJlIG5vIG1vcmUgcGVuZGluZyByZXF1
ZXN0cywgc3RhcnQgc2VuZGluZyBkcmFnZ2luZyBkYXRhIHRvIFdlYkNvcmUuCi0gICAgcmV0dXJu
IGRyb3BwaW5nQ29udGV4dC0+ZGF0YU9iamVjdC5nZXQoKTsKKyAgICByZXR1cm4gZHJvcHBpbmdD
b250ZXh0LT5zZWxlY3Rpb25EYXRhLnB0cigpOwogfQogCiB2b2lkIERyYWdBbmREcm9wSGFuZGxl
cjo6ZHJhZ0VudGVyZWQoR2RrRHJhZ0NvbnRleHQqIGNvbnRleHQsIEd0a1NlbGVjdGlvbkRhdGEq
IHNlbGVjdGlvbkRhdGEsIHVuc2lnbmVkIGluZm8sIHVuc2lnbmVkIHRpbWUpCiB7CiAgICAgSW50
UG9pbnQgcG9zaXRpb247Ci0gICAgRGF0YU9iamVjdEd0ayogZGF0YU9iamVjdCA9IGRhdGFPYmpl
Y3RGb3JEcm9wRGF0YShjb250ZXh0LCBzZWxlY3Rpb25EYXRhLCBpbmZvLCBwb3NpdGlvbik7Ci0g
ICAgaWYgKCFkYXRhT2JqZWN0KQorICAgIGF1dG8qIHNlbGVjdGlvbiA9IGRyb3BEYXRhU2VsZWN0
aW9uKGNvbnRleHQsIHNlbGVjdGlvbkRhdGEsIGluZm8sIHBvc2l0aW9uKTsKKyAgICBpZiAoIXNl
bGVjdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgRHJhZ0RhdGEgZHJhZ0RhdGEoZGF0YU9i
amVjdCwgcG9zaXRpb24sIGNvbnZlcnRXaWRnZXRQb2ludFRvU2NyZWVuUG9pbnQobV9wYWdlLnZp
ZXdXaWRnZXQoKSwgcG9zaXRpb24pLCBnZGtEcmFnQWN0aW9uVG9EcmFnT3BlcmF0aW9uKGdka19k
cmFnX2NvbnRleHRfZ2V0X2FjdGlvbnMoY29udGV4dCkpKTsKKyAgICBEcmFnRGF0YSBkcmFnRGF0
YShzZWxlY3Rpb24sIHBvc2l0aW9uLCBjb252ZXJ0V2lkZ2V0UG9pbnRUb1NjcmVlblBvaW50KG1f
cGFnZS52aWV3V2lkZ2V0KCksIHBvc2l0aW9uKSwgZ2RrRHJhZ0FjdGlvblRvRHJhZ09wZXJhdGlv
bihnZGtfZHJhZ19jb250ZXh0X2dldF9hY3Rpb25zKGNvbnRleHQpKSk7CiAgICAgbV9wYWdlLnJl
c2V0Q3VycmVudERyYWdJbmZvcm1hdGlvbigpOwogICAgIG1fcGFnZS5kcmFnRW50ZXJlZChkcmFn
RGF0YSk7CiAgICAgRHJhZ09wZXJhdGlvbiBvcGVyYXRpb24gPSBtX3BhZ2UuY3VycmVudERyYWdP
cGVyYXRpb24oKTsKICAgICBnZGtfZHJhZ19zdGF0dXMoY29udGV4dCwgZHJhZ09wZXJhdGlvblRv
U2luZ2xlR2RrRHJhZ0FjdGlvbihvcGVyYXRpb24pLCB0aW1lKTsKIH0KIAotRGF0YU9iamVjdEd0
ayogRHJhZ0FuZERyb3BIYW5kbGVyOjpyZXF1ZXN0RHJhZ0RhdGEoR2RrRHJhZ0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEludFBvaW50JiBwb3NpdGlvbiwgdW5zaWduZWQgdGltZSkKK1NlbGVjdGlv
bkRhdGEqIERyYWdBbmREcm9wSGFuZGxlcjo6ZHJhZ0RhdGFTZWxlY3Rpb24oR2RrRHJhZ0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEludFBvaW50JiBwb3NpdGlvbiwgdW5zaWduZWQgdGltZSkKIHsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8RHJvcHBpbmdDb250ZXh0PiYgZHJvcHBpbmdDb250ZXh0ID0g
bV9kcm9wcGluZ0NvbnRleHRzLmFkZChjb250ZXh0LCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWU7
CiAgICAgaWYgKCFkcm9wcGluZ0NvbnRleHQpIHsKQEAgLTIzNywxNiArMjM0LDE2IEBAIERhdGFP
YmplY3RHdGsqIERyYWdBbmREcm9wSGFuZGxlcjo6cmVxdWVzdERyYWdEYXRhKEdka0RyYWdDb250
ZXh0KiBjb250ZXh0LCBjb25zCiAgICAgaWYgKGRyb3BwaW5nQ29udGV4dC0+cGVuZGluZ0RhdGFS
ZXF1ZXN0cyA+IDApCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIGRyb3Bw
aW5nQ29udGV4dC0+ZGF0YU9iamVjdC5nZXQoKTsKKyAgICByZXR1cm4gZHJvcHBpbmdDb250ZXh0
LT5zZWxlY3Rpb25EYXRhLnB0cigpOwogfQogCiB2b2lkIERyYWdBbmREcm9wSGFuZGxlcjo6ZHJh
Z01vdGlvbihHZGtEcmFnQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UG9pbnQmIHBvc2l0aW9u
LCB1bnNpZ25lZCB0aW1lKQogewotICAgIERhdGFPYmplY3RHdGsqIGRhdGFPYmplY3QgPSByZXF1
ZXN0RHJhZ0RhdGEoY29udGV4dCwgcG9zaXRpb24sIHRpbWUpOwotICAgIGlmICghZGF0YU9iamVj
dCkKKyAgICBhdXRvKiBzZWxlY3Rpb24gPSBkcmFnRGF0YVNlbGVjdGlvbihjb250ZXh0LCBwb3Np
dGlvbiwgdGltZSk7CisgICAgaWYgKCFzZWxlY3Rpb24pCiAgICAgICAgIHJldHVybjsKIAotICAg
IERyYWdEYXRhIGRyYWdEYXRhKGRhdGFPYmplY3QsIHBvc2l0aW9uLCBjb252ZXJ0V2lkZ2V0UG9p
bnRUb1NjcmVlblBvaW50KG1fcGFnZS52aWV3V2lkZ2V0KCksIHBvc2l0aW9uKSwgZ2RrRHJhZ0Fj
dGlvblRvRHJhZ09wZXJhdGlvbihnZGtfZHJhZ19jb250ZXh0X2dldF9hY3Rpb25zKGNvbnRleHQp
KSk7CisgICAgRHJhZ0RhdGEgZHJhZ0RhdGEoc2VsZWN0aW9uLCBwb3NpdGlvbiwgY29udmVydFdp
ZGdldFBvaW50VG9TY3JlZW5Qb2ludChtX3BhZ2Uudmlld1dpZGdldCgpLCBwb3NpdGlvbiksIGdk
a0RyYWdBY3Rpb25Ub0RyYWdPcGVyYXRpb24oZ2RrX2RyYWdfY29udGV4dF9nZXRfYWN0aW9ucyhj
b250ZXh0KSkpOwogICAgIG1fcGFnZS5kcmFnVXBkYXRlZChkcmFnRGF0YSk7CiAgICAgRHJhZ09w
ZXJhdGlvbiBvcGVyYXRpb24gPSBtX3BhZ2UuY3VycmVudERyYWdPcGVyYXRpb24oKTsKICAgICBn
ZGtfZHJhZ19zdGF0dXMoY29udGV4dCwgZHJhZ09wZXJhdGlvblRvU2luZ2xlR2RrRHJhZ0FjdGlv
bihvcGVyYXRpb24pLCB0aW1lKTsKQEAgLTI3NSw3ICsyNzIsNyBAQCB2b2lkIERyYWdBbmREcm9w
SGFuZGxlcjo6ZHJhZ0xlYXZlKEdka0RyYWdDb250ZXh0KiBjb250ZXh0KQogICAgICAgICAgICAg
Ly8gRG9uJ3QgY2FsbCBkcmFnRXhpdGVkIGlmIHdlIGhhdmUganVzdCByZWNlaXZlZCBhIGRyYWct
ZHJvcCBzaWduYWwuIFRoaXMKICAgICAgICAgICAgIC8vIGhhcHBlbnMgaW4gdGhlIGNhc2Ugb2Yg
YSBzdWNjZXNzZnVsIGRyb3Agb250byB0aGUgdmlldy4KICAgICAgICAgICAgIGNvbnN0IEludFBv
aW50JiBwb3NpdGlvbiA9IGRyb3BwaW5nQ29udGV4dC0+bGFzdE1vdGlvblBvc2l0aW9uOwotICAg
ICAgICAgICAgRHJhZ0RhdGEgZHJhZ0RhdGEoZHJvcHBpbmdDb250ZXh0LT5kYXRhT2JqZWN0Lmdl
dCgpLCBwb3NpdGlvbiwgY29udmVydFdpZGdldFBvaW50VG9TY3JlZW5Qb2ludChtX3BhZ2Uudmll
d1dpZGdldCgpLCBwb3NpdGlvbiksIERyYWdPcGVyYXRpb25Ob25lKTsKKyAgICAgICAgICAgIERy
YWdEYXRhIGRyYWdEYXRhKGRyb3BwaW5nQ29udGV4dC0+c2VsZWN0aW9uRGF0YS5wdHIoKSwgcG9z
aXRpb24sIGNvbnZlcnRXaWRnZXRQb2ludFRvU2NyZWVuUG9pbnQobV9wYWdlLnZpZXdXaWRnZXQo
KSwgcG9zaXRpb24pLCBEcmFnT3BlcmF0aW9uTm9uZSk7CiAgICAgICAgICAgICBtX3BhZ2UuZHJh
Z0V4aXRlZChkcmFnRGF0YSk7CiAgICAgICAgICAgICBtX3BhZ2UucmVzZXRDdXJyZW50RHJhZ0lu
Zm9ybWF0aW9uKCk7CiAgICAgICAgIH0KQEAgLTI5MiwxMSArMjg5LDcgQEAgYm9vbCBEcmFnQW5k
RHJvcEhhbmRsZXI6OmRyb3AoR2RrRHJhZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFBvaW50
JiBwb3NpdGlvbiwKIAogICAgIGRyb3BwaW5nQ29udGV4dC0+ZHJvcEhhcHBlbmVkID0gdHJ1ZTsK
IAotICAgIERhdGFPYmplY3RHdGsqIGRhdGFPYmplY3QgPSBkcm9wcGluZ0NvbnRleHQtPmRhdGFP
YmplY3QuZ2V0KCk7Ci0gICAgaWYgKCFkYXRhT2JqZWN0KQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICBEcmFnRGF0YSBkcmFnRGF0YShkYXRhT2JqZWN0LCBwb3NpdGlvbiwgY29udmVydFdp
ZGdldFBvaW50VG9TY3JlZW5Qb2ludChtX3BhZ2Uudmlld1dpZGdldCgpLCBwb3NpdGlvbiksIGdk
a0RyYWdBY3Rpb25Ub0RyYWdPcGVyYXRpb24oZ2RrX2RyYWdfY29udGV4dF9nZXRfYWN0aW9ucyhj
b250ZXh0KSkpOworICAgIERyYWdEYXRhIGRyYWdEYXRhKGRyb3BwaW5nQ29udGV4dC0+c2VsZWN0
aW9uRGF0YS5wdHIoKSwgcG9zaXRpb24sIGNvbnZlcnRXaWRnZXRQb2ludFRvU2NyZWVuUG9pbnQo
bV9wYWdlLnZpZXdXaWRnZXQoKSwgcG9zaXRpb24pLCBnZGtEcmFnQWN0aW9uVG9EcmFnT3BlcmF0
aW9uKGdka19kcmFnX2NvbnRleHRfZ2V0X2FjdGlvbnMoY29udGV4dCkpKTsKICAgICBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUgaGFuZGxlOwogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZUFy
cmF5IHNhbmRib3hFeHRlbnNpb25Gb3JVcGxvYWQ7CiAgICAgbV9wYWdlLnBlcmZvcm1EcmFnT3Bl
cmF0aW9uKGRyYWdEYXRhLCBTdHJpbmcoKSwgaGFuZGxlLCBzYW5kYm94RXh0ZW5zaW9uRm9yVXBs
b2FkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvRHJhZ0FuZERy
b3BIYW5kbGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL0RyYWdBbmREcm9wSGFu
ZGxlci5oCmluZGV4IDY3MmQxYzQuLjFjMWVhM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9ndGsvRHJhZ0FuZERyb3BIYW5kbGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2d0ay9EcmFnQW5kRHJvcEhhbmRsZXIuaApAQCAtMjcsOSArMjcsOSBAQAogCiAj
aWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKIAotI2luY2x1ZGUgPFdlYkNvcmUvRGF0YU9iamVjdEd0
ay5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ0FjdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0ludFBvaW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZWxlY3Rpb25EYXRhLmg+CiAjaW5jbHVk
ZSA8Z3RrL2d0ay5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+CkBAIC00MCw2ICs0MCw3IEBAIHR5cGVkZWYgc3RydWN0IF9HdGtTZWxlY3Rp
b25EYXRhIEd0a1NlbGVjdGlvbkRhdGE7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIERy
YWdEYXRhOworY2xhc3MgU2VsZWN0aW9uRGF0YTsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBA
IC01Miw3ICs1Myw3IEBAIGNsYXNzIERyYWdBbmREcm9wSGFuZGxlciB7CiBwdWJsaWM6CiAgICAg
RHJhZ0FuZERyb3BIYW5kbGVyKFdlYlBhZ2VQcm94eSYpOwogCi0gICAgdm9pZCBzdGFydERyYWco
UmVmPFdlYkNvcmU6OkRhdGFPYmplY3RHdGs+JiYsIFdlYkNvcmU6OkRyYWdPcGVyYXRpb24sIFJl
ZlB0cjxTaGFyZWFibGVCaXRtYXA+JiYgZHJhZ0ltYWdlKTsKKyAgICB2b2lkIHN0YXJ0RHJhZyhS
ZWY8V2ViQ29yZTo6U2VsZWN0aW9uRGF0YT4mJiwgV2ViQ29yZTo6RHJhZ09wZXJhdGlvbiwgUmVm
UHRyPFNoYXJlYWJsZUJpdG1hcD4mJiBkcmFnSW1hZ2UpOwogICAgIHZvaWQgZmlsbERyYWdEYXRh
KEdka0RyYWdDb250ZXh0KiwgR3RrU2VsZWN0aW9uRGF0YSosIHVuc2lnbmVkIGluZm8pOwogICAg
IHZvaWQgZmluaXNoRHJhZyhHZGtEcmFnQ29udGV4dCopOwogCkBAIC02NSwyNiArNjYsMjYgQEAg
cHJpdmF0ZToKICAgICBzdHJ1Y3QgRHJvcHBpbmdDb250ZXh0IHsKICAgICAgICAgRHJvcHBpbmdD
b250ZXh0KEdka0RyYWdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvc2l0aW9u
KTsKIAotICAgICAgICBHZGtEcmFnQ29udGV4dCogZ2RrQ29udGV4dDsKLSAgICAgICAgUmVmUHRy
PFdlYkNvcmU6OkRhdGFPYmplY3RHdGs+IGRhdGFPYmplY3Q7CisgICAgICAgIEdka0RyYWdDb250
ZXh0KiBnZGtDb250ZXh0IHsgbnVsbHB0ciB9OwogICAgICAgICBXZWJDb3JlOjpJbnRQb2ludCBs
YXN0TW90aW9uUG9zaXRpb247Ci0gICAgICAgIHVuc2lnbmVkIHBlbmRpbmdEYXRhUmVxdWVzdHM7
Ci0gICAgICAgIGJvb2wgZHJvcEhhcHBlbmVkOworICAgICAgICBSZWY8V2ViQ29yZTo6U2VsZWN0
aW9uRGF0YT4gc2VsZWN0aW9uRGF0YTsKKyAgICAgICAgdW5zaWduZWQgcGVuZGluZ0RhdGFSZXF1
ZXN0cyB7IDAgfTsKKyAgICAgICAgYm9vbCBkcm9wSGFwcGVuZWQgeyBmYWxzZSB9OwogICAgIH07
CiAKLSAgICBXZWJDb3JlOjpEYXRhT2JqZWN0R3RrKiBkYXRhT2JqZWN0Rm9yRHJvcERhdGEoR2Rr
RHJhZ0NvbnRleHQqLCBHdGtTZWxlY3Rpb25EYXRhKiwgdW5zaWduZWQgaW5mbywgV2ViQ29yZTo6
SW50UG9pbnQmIHBvc2l0aW9uKTsKLSAgICBXZWJDb3JlOjpEYXRhT2JqZWN0R3RrKiByZXF1ZXN0
RHJhZ0RhdGEoR2RrRHJhZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9zaXRp
b24sIHVuc2lnbmVkIHRpbWUpOworICAgIFdlYkNvcmU6OlNlbGVjdGlvbkRhdGEqIGRyb3BEYXRh
U2VsZWN0aW9uKEdka0RyYWdDb250ZXh0KiwgR3RrU2VsZWN0aW9uRGF0YSosIHVuc2lnbmVkIGlu
Zm8sIFdlYkNvcmU6OkludFBvaW50JiBwb3NpdGlvbik7CisgICAgV2ViQ29yZTo6U2VsZWN0aW9u
RGF0YSogZHJhZ0RhdGFTZWxlY3Rpb24oR2RrRHJhZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYgcG9zaXRpb24sIHVuc2lnbmVkIHRpbWUpOwogCiAgICAgV2ViUGFnZVByb3h5JiBt
X3BhZ2U7CiAgICAgSGFzaE1hcDxHZGtEcmFnQ29udGV4dCosIHN0ZDo6dW5pcXVlX3B0cjxEcm9w
cGluZ0NvbnRleHQ+PiBtX2Ryb3BwaW5nQ29udGV4dHM7CiAKICNpZiBHVEtfQ0hFQ0tfVkVSU0lP
TigzLCAxNiwgMCkKICAgICBHUmVmUHRyPEdka0RyYWdDb250ZXh0PiBtX2RyYWdDb250ZXh0Owot
ICAgIFJlZlB0cjxXZWJDb3JlOjpEYXRhT2JqZWN0R3RrPiBtX2RyYWdnaW5nRGF0YU9iamVjdDsK
KyAgICBSZWZQdHI8V2ViQ29yZTo6U2VsZWN0aW9uRGF0YT4gbV9kcmFnZ2luZ1NlbGVjdGlvbkRh
dGE7CiAjZWxzZQogICAgIC8vIFdlIGRvbid0IGhhdmUgZ3RrX2RyYWdfY2FuY2VsKCkgaW4gR1RL
KyA8IDMuMTYsIHNvIHdlIHVzZSB0aGUgb2xkIGNvZGUuCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzg0NjgKLSAgICBIYXNoTWFwPEdka0RyYWdD
b250ZXh0KiwgUmVmUHRyPFdlYkNvcmU6OkRhdGFPYmplY3RHdGs+PiBtX2RyYWdnaW5nRGF0YU9i
amVjdHM7CisgICAgSGFzaE1hcDxHZGtEcmFnQ29udGV4dCosIFJlZlB0cjxXZWJDb3JlOjpTZWxl
Y3Rpb25EYXRhPj4gbV9kcmFnZ2luZ1NlbGVjdGlvbkRhdGFNYXA7CiAjZW5kaWYKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUGFzdGVib2FyZFByb3h5
R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUGFzdGVib2FyZFByb3h5
R3RrLmNwcAppbmRleCBlMjVhNGEwLi5iOGM5ZjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZ3RrL1dlYlBhc3RlYm9hcmRQcm94eUd0ay5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQYXN0ZWJvYXJkUHJveHlHdGsuY3BwCkBAIC0yNiwzMSAr
MjYsMjggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJQYXN0ZWJvYXJkUHJv
eHkuaCIKIAotI2luY2x1ZGUgIlBhc3RlYm9hcmRDb250ZW50LmgiCiAjaW5jbHVkZSAiV2ViRnJh
bWVQcm94eS5oIgorI2luY2x1ZGUgIldlYlNlbGVjdGlvbkRhdGEuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL1BsYXRmb3JtUGFzdGVib2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5j
bHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1RlbXBvcmFyeUNoYW5n
ZS5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94
eTo6d3JpdGVUb0NsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBQ
YXN0ZWJvYXJkQ29udGVudCYgcGFzdGVib2FyZENvbnRlbnQpCit2b2lkIFdlYlBhc3RlYm9hcmRQ
cm94eTo6d3JpdGVUb0NsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBXZWJTZWxlY3Rpb25EYXRhJiBzZWxlY3Rpb24pCiB7CiAgICAgVGVtcG9yYXJ5Q2hhbmdlPFdl
YkZyYW1lUHJveHkqPiBmcmFtZVdyaXRpbmdUb0NsaXBib2FyZChtX2ZyYW1lV3JpdGluZ1RvQ2xp
cGJvYXJkLCBtX3ByaW1hcnlTZWxlY3Rpb25Pd25lcik7Ci0gICAgUGxhdGZvcm1QYXN0ZWJvYXJk
KHBhc3RlYm9hcmROYW1lKS53cml0ZVRvQ2xpcGJvYXJkKHBhc3RlYm9hcmRDb250ZW50LmRhdGFP
YmplY3QuZ2V0KCksIFt0aGlzXSB7CisgICAgUGxhdGZvcm1QYXN0ZWJvYXJkKHBhc3RlYm9hcmRO
YW1lKS53cml0ZVRvQ2xpcGJvYXJkKHNlbGVjdGlvbi5zZWxlY3Rpb25EYXRhLCBbdGhpc10gewog
ICAgICAgICBpZiAobV9mcmFtZVdyaXRpbmdUb0NsaXBib2FyZCA9PSBtX3ByaW1hcnlTZWxlY3Rp
b25Pd25lcikKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgc2V0UHJpbWFyeVNlbGVjdGlv
bk93bmVyKG51bGxwdHIpOwogICAgIH0pOwogfQogCi12b2lkIFdlYlBhc3RlYm9hcmRQcm94eTo6
cmVhZEZyb21DbGlwYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgUGFzdGVib2Fy
ZENvbnRlbnQmIHBhc3RlYm9hcmRDb250ZW50KQordm9pZCBXZWJQYXN0ZWJvYXJkUHJveHk6OnJl
YWRGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFdlYlNlbGVjdGlv
bkRhdGEmIHNlbGVjdGlvbikKIHsKLSAgICBwYXN0ZWJvYXJkQ29udGVudCA9IFBhc3RlYm9hcmRD
b250ZW50KFBsYXRmb3JtUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSkucmVhZEZyb21DbGlwYm9h
cmQoKSk7CisgICAgc2VsZWN0aW9uID0gV2ViU2VsZWN0aW9uRGF0YShQbGF0Zm9ybVBhc3RlYm9h
cmQocGFzdGVib2FyZE5hbWUpLnJlYWRGcm9tQ2xpcGJvYXJkKCkpOwogfQogCiB2b2lkIFdlYlBh
c3RlYm9hcmRQcm94eTo6c2V0UHJpbWFyeVNlbGVjdGlvbk93bmVyKFdlYkZyYW1lUHJveHkqIGZy
YW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCmluZGV4IGUwNGRjZDUuLjM4
NTcwYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKQEAgLTcwLDcgKzcw
LDcgQEAKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oR1RLKQotI2luY2x1ZGUgIlBhc3RlYm9hcmRD
b250ZW50LmgiCisjaW5jbHVkZSAiV2ViU2VsZWN0aW9uRGF0YS5oIgogI2VuZGlmCiAKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtMzQ2LDE3ICszNDYsMTcgQEAgbG9uZyBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmNoYW5nZUNvdW50KCkKICNpZiBQTEFURk9STShHVEspCiAvLyBQYXN0ZWJv
YXJkU3RyYXRlZ3kKIAotdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OndyaXRlVG9DbGlwYm9h
cmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgRGF0YU9iamVjdEd0ayYgZGF0
YU9iamVjdCkKK3ZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjp3cml0ZVRvQ2xpcGJvYXJkKGNv
bnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFNlbGVjdGlvbkRhdGEmIHNlbGVjdGlv
bikKIHsKLSAgICBQYXN0ZWJvYXJkQ29udGVudCBwYXN0ZWJvYXJkQ29udGVudChkYXRhT2JqZWN0
KTsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OldyaXRlVG9DbGlwYm9hcmQocGFz
dGVib2FyZE5hbWUsIHBhc3RlYm9hcmRDb250ZW50KSwgMCk7CisgICAgV2ViU2VsZWN0aW9uRGF0
YSBzZWxlY3Rpb25EYXRhKHNlbGVjdGlvbik7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFzdGVib2FyZFBy
b3h5OjpXcml0ZVRvQ2xpcGJvYXJkKHBhc3RlYm9hcmROYW1lLCBzZWxlY3Rpb25EYXRhKSwgMCk7
CiB9CiAKLVJlZjxEYXRhT2JqZWN0R3RrPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlYWRGcm9t
Q2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCitSZWY8U2VsZWN0aW9uRGF0
YT4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWFkRnJvbUNsaXBib2FyZChjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lKQogewotICAgIFBhc3RlYm9hcmRDb250ZW50IHBhc3RlYm9hcmRDb250
ZW50OwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYXN0ZWJvYXJkUHJveHk6OlJlYWRGcm9tQ2xpcGJv
YXJkKHBhc3RlYm9hcmROYW1lKSwgTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZEZy
b21DbGlwYm9hcmQ6OlJlcGx5KHBhc3RlYm9hcmRDb250ZW50KSwgMCk7Ci0gICAgcmV0dXJuIFdU
Rk1vdmUocGFzdGVib2FyZENvbnRlbnQuZGF0YU9iamVjdCk7CisgICAgV2ViU2VsZWN0aW9uRGF0
YSBzZWxlY3Rpb247CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhc3RlYm9hcmRQcm94eTo6UmVhZEZy
b21DbGlwYm9hcmQocGFzdGVib2FyZE5hbWUpLCBNZXNzYWdlczo6V2ViUGFzdGVib2FyZFByb3h5
OjpSZWFkRnJvbUNsaXBib2FyZDo6UmVwbHkoc2VsZWN0aW9uKSwgMCk7CisgICAgcmV0dXJuIFdU
Rk1vdmUoc2VsZWN0aW9uLnNlbGVjdGlvbkRhdGEpOwogfQogCiAjZW5kaWYgLy8gUExBVEZPUk0o
R1RLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKaW5kZXggMTY3YzY2ZC4uOGQzMDAy
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCkBAIC04Nyw4ICs4Nyw4IEBAIHBy
aXZhdGU6CiAgICAgbG9uZyBzZXRTdHJpbmdGb3JUeXBlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZFR5cGUsIGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJy
aWRlOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKQotICAgIHZvaWQgd3JpdGVUb0NsaXBib2Fy
ZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBXZWJDb3JlOjpEYXRhT2JqZWN0
R3RrJikgb3ZlcnJpZGU7Ci0gICAgUmVmPFdlYkNvcmU6OkRhdGFPYmplY3RHdGs+IHJlYWRGcm9t
Q2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpIG92ZXJyaWRlOworICAgIHZv
aWQgd3JpdGVUb0NsaXBib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBX
ZWJDb3JlOjpTZWxlY3Rpb25EYXRhJikgb3ZlcnJpZGU7CisgICAgUmVmPFdlYkNvcmU6OlNlbGVj
dGlvbkRhdGE+IHJlYWRGcm9tQ2xpcGJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUp
IG92ZXJyaWRlOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJEcmFnQ2xpZW50R3RrLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3Bw
CmluZGV4IDIwZDE5NTIuLmY1Y2FkYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsu
Y3BwCkBAIC0yOSwxMSArMjksMTAgQEAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogCiAjaW5j
bHVkZSAiQXJndW1lbnRDb2RlcnNHdGsuaCIKLSNpbmNsdWRlICJQYXN0ZWJvYXJkQ29udGVudC5o
IgogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNp
bmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRGF0YU9i
amVjdEd0ay5oPgorI2luY2x1ZGUgIldlYlNlbGVjdGlvbkRhdGEuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL0RhdGFUcmFuc2Zlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRHJhZ0RhdGEuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgpAQCAtNjgsNyArNjcsNyBAQCB2b2lkIFdl
YkRyYWdDbGllbnQ6OnN0YXJ0RHJhZyhEcmFnSW1hZ2VSZWYgZHJhZ0ltYWdlLCBjb25zdCBJbnRQ
b2ludCYgY2xpZW50UG9zaQogCiAgICAgbV9wYWdlLT53aWxsU3RhcnREcmFnKCk7CiAKLSAgICBQ
YXN0ZWJvYXJkQ29udGVudCBzZWxlY3Rpb24oZGF0YVRyYW5zZmVyLnBhc3RlYm9hcmQoKS5kYXRh
T2JqZWN0KCkpOworICAgIFdlYlNlbGVjdGlvbkRhdGEgc2VsZWN0aW9uKGRhdGFUcmFuc2Zlci5w
YXN0ZWJvYXJkKCkuc2VsZWN0aW9uRGF0YSgpKTsKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6U3RhcnREcmFnKHNlbGVjdGlvbiwgZGF0YVRyYW5zZmVyLnNvdXJjZU9w
ZXJhdGlvbigpLCBoYW5kbGUpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRWRpdG9yQ2xpZW50R3RrLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkVkaXRvckNsaWVudEd0
ay5jcHAKaW5kZXggYzQ4Yjg2My4uMTUwNWM4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRWRpdG9yQ2xpZW50R3RrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJFZGl0b3JD
bGllbnRHdGsuY3BwCkBAIC0yMSwxMiArMjEsMTAgQEAKICNpbmNsdWRlICJXZWJFZGl0b3JDbGll
bnQuaCIKIAogI2luY2x1ZGUgIlBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIgotI2luY2x1ZGUgPFdl
YkNvcmUvRGF0YU9iamVjdEd0ay5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnQuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0VkaXRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRXZlbnROYW1lcy5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lRGVz
dHJ1Y3Rpb25PYnNlcnZlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvS2V5Ym9hcmRFdmVudC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUGFzdGVib2FyZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvbWFya3Vw
Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5k
ZXggYjBiMjJkNy4uYWNiZTViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcApAQCAtMjE3LDkgKzIxNyw4IEBACiAjZW5kaWYKIAogI2lmIFBMQVRG
T1JNKEdUSykKLSNpbmNsdWRlICJQYXN0ZWJvYXJkQ29udGVudC5oIgogI2luY2x1ZGUgIldlYlBy
aW50T3BlcmF0aW9uR3RrLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9EYXRhT2JqZWN0R3RrLmg+Cisj
aW5jbHVkZSAiV2ViU2VsZWN0aW9uRGF0YS5oIgogI2luY2x1ZGUgPGd0ay9ndGsuaD4KICNlbmRp
ZgogCkBAIC0zMzk3LDE0ICszMzk2LDE0IEBAIGJvb2wgV2ViUGFnZTo6aGFuZGxlRWRpdGluZ0tl
eWJvYXJkRXZlbnQoS2V5Ym9hcmRFdmVudCogZXZ0KQogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQp
CiAKICNpZiBQTEFURk9STShHVEspCi12b2lkIFdlYlBhZ2U6OnBlcmZvcm1EcmFnQ29udHJvbGxl
ckFjdGlvbih1aW50NjRfdCBhY3Rpb24sIGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwg
Y29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCB1aW50NjRfdCBkcmFnZ2luZ1NvdXJjZU9w
ZXJhdGlvbk1hc2ssIFBhc3RlYm9hcmRDb250ZW50JiYgc2VsZWN0aW9uLCB1aW50MzJfdCBmbGFn
cykKK3ZvaWQgV2ViUGFnZTo6cGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKHVpbnQ2NF90IGFj
dGlvbiwgY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xv
YmFsUG9zaXRpb24sIHVpbnQ2NF90IGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaywgV2ViU2Vs
ZWN0aW9uRGF0YSYmIHNlbGVjdGlvbiwgdWludDMyX3QgZmxhZ3MpCiB7CiAgICAgaWYgKCFtX3Bh
Z2UpIHsKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRQZXJmb3JtRHJh
Z0NvbnRyb2xsZXJBY3Rpb24oRHJhZ09wZXJhdGlvbk5vbmUsIGZhbHNlLCAwKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBEcmFnRGF0YSBkcmFnRGF0YShzZWxlY3Rpb24uZGF0YU9i
amVjdC5wdHIoKSwgY2xpZW50UG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCBzdGF0aWNfY2FzdDxE
cmFnT3BlcmF0aW9uPihkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2spLCBzdGF0aWNfY2FzdDxE
cmFnQXBwbGljYXRpb25GbGFncz4oZmxhZ3MpKTsKKyAgICBEcmFnRGF0YSBkcmFnRGF0YShzZWxl
Y3Rpb24uc2VsZWN0aW9uRGF0YS5wdHIoKSwgY2xpZW50UG9zaXRpb24sIGdsb2JhbFBvc2l0aW9u
LCBzdGF0aWNfY2FzdDxEcmFnT3BlcmF0aW9uPihkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2sp
LCBzdGF0aWNfY2FzdDxEcmFnQXBwbGljYXRpb25GbGFncz4oZmxhZ3MpKTsKICAgICBzd2l0Y2gg
KGFjdGlvbikgewogICAgIGNhc2UgRHJhZ0NvbnRyb2xsZXJBY3Rpb25FbnRlcmVkOiB7CiAgICAg
ICAgIERyYWdPcGVyYXRpb24gcmVzb2x2ZWREcmFnT3BlcmF0aW9uID0gbV9wYWdlLT5kcmFnQ29u
dHJvbGxlcigpLmRyYWdFbnRlcmVkKGRyYWdEYXRhKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGFmZDMzNjMuLmZiOGY1ZTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTk5LDE1ICsxOTksMTIg
QEAgc3RydWN0IExvYWRQYXJhbWV0ZXJzOwogc3RydWN0IFByaW50SW5mbzsKIHN0cnVjdCBXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzOwogc3RydWN0IFdlYlByZWZlcmVuY2VzU3RvcmU7CitzdHJ1
Y3QgV2ViU2VsZWN0aW9uRGF0YTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogY2xhc3MgUmVtb3Rl
TGF5ZXJUcmVlVHJhbnNhY3Rpb247CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKEdUSykKLXN0cnVj
dCBQYXN0ZWJvYXJkQ29udGVudDsKLSNlbmRpZgotCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykK
IGNsYXNzIFdlYlRvdWNoRXZlbnQ7CiAjZW5kaWYKQEAgLTczMyw3ICs3MzAsNyBAQCBwdWJsaWM6
CiAKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogI2lmIFBMQVRGT1JNKEdUSykKLSAgICB2b2lk
IHBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbih1aW50NjRfdCBhY3Rpb24sIGNvbnN0IFdlYkNv
cmU6OkludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGds
b2JhbFBvc2l0aW9uLCB1aW50NjRfdCBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2ssIFBhc3Rl
Ym9hcmRDb250ZW50JiYsIHVpbnQzMl90IGZsYWdzKTsKKyAgICB2b2lkIHBlcmZvcm1EcmFnQ29u
dHJvbGxlckFjdGlvbih1aW50NjRfdCBhY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBj
bGllbnRQb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCB1
aW50NjRfdCBkcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2ssIFdlYlNlbGVjdGlvbkRhdGEmJiwg
dWludDMyX3QgZmxhZ3MpOwogI2Vsc2UKICAgICB2b2lkIHBlcmZvcm1EcmFnQ29udHJvbGxlckFj
dGlvbih1aW50NjRfdCBhY3Rpb24sIFdlYkNvcmU6OkludFBvaW50IGNsaWVudFBvc2l0aW9uLCBX
ZWJDb3JlOjpJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiwgdWludDY0X3QgZHJhZ2dpbmdTb3VyY2VP
cGVyYXRpb25NYXNrLCBjb25zdCBXVEY6OlN0cmluZyYgZHJhZ1N0b3JhZ2VOYW1lLCB1aW50MzJf
dCBmbGFncywgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiwgY29uc3QgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlQXJyYXkmKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCA1MTE2N2FlLi42
ZmFhNmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMjM2LDcgKzIzNiw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBh
Z2UgTGVnYWN5UmVjZWl2ZXIgewogCiAgICAgIyBEcmFnIGFuZCBkcm9wLgogI2lmIFBMQVRGT1JN
KEdUSykgJiYgRU5BQkxFKERSQUdfU1VQUE9SVCkKLSAgICBQZXJmb3JtRHJhZ0NvbnRyb2xsZXJB
Y3Rpb24odWludDY0X3QgYWN0aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBjbGllbnRQb3NpdGlvbiwg
V2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsUG9zaXRpb24sIHVpbnQ2NF90IGRyYWdnaW5nU291cmNl
T3BlcmF0aW9uTWFzaywgc3RydWN0IFdlYktpdDo6UGFzdGVib2FyZENvbnRlbnQgc2VsZWN0aW9u
LCB1aW50MzJfdCBmbGFncykKKyAgICBQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24odWludDY0
X3QgYWN0aW9uLCBXZWJDb3JlOjpJbnRQb2ludCBjbGllbnRQb3NpdGlvbiwgV2ViQ29yZTo6SW50
UG9pbnQgZ2xvYmFsUG9zaXRpb24sIHVpbnQ2NF90IGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFz
aywgc3RydWN0IFdlYktpdDo6V2ViU2VsZWN0aW9uRGF0YSBzZWxlY3Rpb24sIHVpbnQzMl90IGZs
YWdzKQogI2VuZGlmCiAjaWYgIVBMQVRGT1JNKEdUSykgJiYgRU5BQkxFKERSQUdfU1VQUE9SVCkK
ICAgICBQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24odWludDY0X3QgYWN0aW9uLCBXZWJDb3Jl
OjpJbnRQb2ludCBjbGllbnRQb3NpdGlvbiwgV2ViQ29yZTo6SW50UG9pbnQgZ2xvYmFsUG9zaXRp
b24sIHVpbnQ2NF90IGRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaywgU3RyaW5nIGRyYWdTdG9y
YWdlTmFtZSwgdWludDMyX3QgZmxhZ3MsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
IHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
QXJyYXkgc2FuZGJveEV4dGVuc2lvbnNGb3JVcGxvYWQpCg==
</data>
<flag name="review"
          id="312776"
          type_id="1"
          status="+"
          setter="zan"
    />
          </attachment>
      

    </bug>

</bugzilla>