<?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>181720</bug_id>
          
          <creation_ts>2018-01-16 23:02:46 -0800</creation_ts>
          <short_desc>[Cairo] Use one-time ShadowBlur objects when performing shadowing</short_desc>
          <delta_ts>2018-01-17 01:21:31 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>cgarcia</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1389889</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-01-16 23:02:46 -0800</bug_when>
    <thetext>[Cairo] Use one-time ShadowBlur objects when performing shadowing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389897</commentid>
    <comment_count>1</comment_count>
      <attachid>331471</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-01-16 23:15:06 -0800</bug_when>
    <thetext>Created attachment 331471
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389909</commentid>
    <comment_count>2</comment_count>
      <attachid>331471</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-01-17 00:54:21 -0800</bug_when>
    <thetext>Comment on attachment 331471
Patch

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

&gt; Source/WebCore/platform/graphics/cairo/CairoOperations.cpp:188
&gt; +    ShadowBlur shadow(FloatSize { shadowState.blur, shadowState.blur },

Do you really need to use FloatSize explicitly?

&gt; Source/WebCore/platform/graphics/cairo/CairoOperations.cpp:472
&gt; +bool ShadowState::shadowVisible() const

shadow is redundant in method name, I would use isVisible

&gt; Source/WebCore/platform/graphics/cairo/CairoOperations.cpp:477
&gt; +bool ShadowState::shadowRequired(PlatformContextCairo&amp; platformContext) const

Ditto.

&gt; Source/WebCore/platform/graphics/cairo/CairoOperations.h:116
&gt; +    float blur;

Why did you remove the initialization here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389920</commentid>
    <comment_count>3</comment_count>
      <attachid>331471</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-01-17 01:17:47 -0800</bug_when>
    <thetext>Comment on attachment 331471
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/cairo/CairoOperations.cpp:188
&gt;&gt; +    ShadowBlur shadow(FloatSize { shadowState.blur, shadowState.blur },
&gt; 
&gt; Do you really need to use FloatSize explicitly?

No, I can change it to use braces.

&gt;&gt; Source/WebCore/platform/graphics/cairo/CairoOperations.cpp:472
&gt;&gt; +bool ShadowState::shadowVisible() const
&gt; 
&gt; shadow is redundant in method name, I would use isVisible

OK.

&gt;&gt; Source/WebCore/platform/graphics/cairo/CairoOperations.h:116
&gt;&gt; +    float blur;
&gt; 
&gt; Why did you remove the initialization here?

Mistake.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389921</commentid>
    <comment_count>4</comment_count>
      <attachid>331475</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-01-17 01:19:38 -0800</bug_when>
    <thetext>Created attachment 331475
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389922</commentid>
    <comment_count>5</comment_count>
      <attachid>331475</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-01-17 01:20:57 -0800</bug_when>
    <thetext>Comment on attachment 331475
Patch for landing

Clearing flags on attachment: 331475

Committed r227051: &lt;https://trac.webkit.org/changeset/227051&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389923</commentid>
    <comment_count>6</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2018-01-17 01:21:01 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1389924</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-01-17 01:21:31 -0800</bug_when>
    <thetext>&lt;rdar://problem/36576268&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>331471</attachid>
            <date>2018-01-16 23:15:06 -0800</date>
            <delta_ts>2018-01-17 01:19:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181720-20180117081504.patch</filename>
            <type>text/plain</type>
            <size>40202</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI3MDQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDZkYTMzZDQyMmE3ZjJk
ZTBiNDZiYzNjNTM5OTE5NDhkNzg2ZjJiNS4uNjIxYjQwMTI5M2MxNjM3ZTliOTgxN2IwZDM3NmJh
MjFlMGI5NmMwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc0IEBACisyMDE4LTAxLTE2ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbQ2Fpcm9dIFVzZSBv
bmUtdGltZSBTaGFkb3dCbHVyIG9iamVjdHMgd2hlbiBwZXJmb3JtaW5nIHNoYWRvd2luZworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgxNzIwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRG9uJ3QgbWFpbnRh
aW4gYSBTaGFkb3dCbHVyIG9iamVjdCBpbiB0aGUgUGxhdGZvcm1Db250ZXh0Q2Fpcm8gY2xhc3Mu
CisgICAgICAgIEluc3RlYWQsIHVzZSB0ZW1wb3JhcnkgU2hhZG93Qmx1ciBvYmplY3RzIHdoZW5l
dmVyIHNoYWRvd2luZyBpcyBuZWVkZWQsCisgICAgICAgIHByb3ZpZGluZyBhbGwgdGhlIHNoYWRv
dyBzdGF0ZSBpbmZvcm1hdGlvbiB0byBpdCBhbmQgZHJhd2luZyBzaGFkb3cgaW50bworICAgICAg
ICB0aGUgZ2l2ZW4gR3JhcGhpY3NDb250ZXh0IG9iamVjdC4KKworICAgICAgICBTaGFkb3dCbHVy
IGNvbnN0cnVjdG9ycyBhcmUgY2xlYW5lZCB1cC4gVGhlICdzaGFkb3dzIGlnbm9yZWQnIGFyZ3Vt
ZW50CisgICAgICAgIGNhbiBub3cgYWxzbyBiZSBwcm92aWRlZCB0byB0aGUgdmFyaWFudCB0aGF0
IGFjY2VwdHMgZXhwbGljaXQgc2hhZG93CisgICAgICAgIGF0dHJpYnV0ZXMsIGJ1dCB0aGUgYXJn
dW1lbnQgaXMgZmFsc2UgYnkgZGVmYXVsdC4KKworICAgICAgICBJbiBDYWlyb09wZXJhdGlvbnMs
IHRoZSBTaGFkb3dCbHVyVXNhZ2UgZnVuY3Rpb25hbGl0eSBpcyByb2xsZWQgaW50byB0aGUKKyAg
ICAgICAgbmV3IFNoYWRvd1N0YXRlIGNsYXNzLiBTaGFkb3dTdGF0ZSBwYXJhbWV0ZXIgaXMgbm93
IHVzZWQgZm9yIG9wZXJhdGlvbnMKKyAgICAgICAgdGhhdCBtaWdodCBuZWVkIHRvIHBlcmZvcm0g
c2hhZG93IHBhaW50aW5nLiBDYWxsIHNpdGVzIGFyZSBtb2RpZmllZAorICAgICAgICBhY2NvcmRp
bmdseS4KKworICAgICAgICBDYWlybzo6U3RhdGU6OnNldFNoYWRvd1ZhbHVlcygpIGFuZCBDYWly
bzo6U3RhdGU6OmNsZWFyU2hhZG93KCkgYXJlCisgICAgICAgIHJlbW92ZWQsIHNpbmNlIHRoZSBT
aGFkb3dCbHVyIG9iamVjdCB0aGF0IHdhcyBtb2RpZmllZCB0aHJvdWdoIHRob3NlIGlzCisgICAg
ICAgIGJlaW5nIHJlbW92ZWQgZnJvbSB0aGUgUGxhdGZvcm1Db250ZXh0Q2Fpcm8gY2xhc3MuIFdl
IHN0aWxsIGhhdmUgdG8gZmxpcAorICAgICAgICB0aGUgWS1heGlzIG9mIHRoZSBzaGFkb3cgb2Zm
c2V0IGluIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaGFkb3coKQorICAgICAgICB3aGVu
IHNoYWRvd3MgYXJlIGlnbm9yaW5nIHRyYW5zZm9ybWF0aW9ucy4KKworICAgICAgICBObyBuZXcg
dGVzdHMgLS0gbm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvU2hhZG93Qmx1ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVyOjpTaGFk
b3dCbHVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhaXJvOjpkcmF3UGF0aFNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpD
YWlybzo6ZHJhd0dseXBoc1NoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6U2hhZG93
U3RhdGU6OlNoYWRvd1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpTaGFkb3dTdGF0
ZTo6c2hhZG93VmlzaWJsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6U2hhZG93
U3RhdGU6OnNoYWRvd1JlcXVpcmVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpm
aWxsUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6ZmlsbFJvdW5kZWRSZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhaXJvOjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZSk6CisgICAgICAg
IChXZWJDb3JlOjpDYWlybzo6ZmlsbFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86OnN0
cm9rZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86OnN0cm9rZVBhdGgpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2Fpcm86OmRyYXdHbHlwaHMpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86
OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6U3RhdGU6OnNldFNo
YWRvd1ZhbHVlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6U3RhdGU6OmNs
ZWFyU2hhZG93KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpTaGFkb3dCbHVy
VXNhZ2U6OlNoYWRvd0JsdXJVc2FnZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDYWly
bzo6U2hhZG93Qmx1clVzYWdlOjpyZXF1aXJlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZv
bnRDYXNjYWRlOjpkcmF3R2x5cGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9HcmFwaGljc0NvbnRleHRDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OnJlc3RvcmVQbGF0Zm9ybVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6ZmlsbFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzdHJv
a2VQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVNoYWRvdyk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsZWFyUGxhdGZvcm1TaGFkb3cpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzdHJva2VSZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1GaWxsUm91bmRlZFJlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fpcm8u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Db250ZXh0Q2Fpcm86OmRyYXdTdXJmYWNl
VG9Db250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNv
bnRleHRDYWlyby5oOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Db250ZXh0Q2Fpcm86OnNo
YWRvd0JsdXIpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRp
YVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uOjpEaXJlY3QzRFByZXNlbnRlcjo6cGFpbnRD
dXJyZW50RnJhbWUpOgorCiAyMDE4LTAxLTE2ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIENhbid0IHNjcm9sbCBpZnJhbWUgYWZ0ZXIgdG9nZ2xpbmcg
aXQgdG8gZGlzcGxheTpub25lIGFuZCBiYWNrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGJjYmQxZjBjNzI5MjVhNDc2
YzAyMGE1NTFkZmJlMDY2NDJjOGM0YzcuLjhkNjE4MDU5MTZkZTQ1MjAwOTk1YTJiMDFiZDI3NGMy
YzU2OTI1OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTgtMDEtMTYgIFphbiBEb2Jl
cnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtDYWlyb10gVXNlIG9uZS10
aW1lIFNoYWRvd0JsdXIgb2JqZWN0cyB3aGVuIHBlcmZvcm1pbmcgc2hhZG93aW5nCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODE3MjAKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9jYWlyby9T
aGFyZWFibGVCaXRtYXBDYWlyby5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1h
cDo6cGFpbnQpOgorICAgICAgICBBZGp1c3QgdGhlIFBsYXRmb3JtQ29udGV4dENhaXJvOjpkcmF3
U3VyZmFjZVRvQ29udGV4dCgpIGludm9jYXRpb24uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OmNv
bnZlcnRDYWlyb1N1cmZhY2VUb1NoYXJlYWJsZUJpdG1hcCk6IERpdHRvLgorCiAyMDE4LTAxLTE2
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
TWVyZ2Ugc3luYyBhbmQgYXN5bmMgY29kZSBwYXRocyBmb3IgZ2V0dGluZyBjb250ZXh0IG1lbnVz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCmlu
ZGV4IGM2YmFmNTIzMWJmZDFlYjMyZGUyNzFjMmFmNmI1ZDVlZTg5ZTAzNjQuLjE5MGY2YzBjOTlk
NzM2ZmYxNDQ4ZGE1ZTcwZWU0NmFhNDBhZTM1ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCkBAIC0xNjksMTIgKzE2OSwxMyBAQCBzdGF0
aWMgZmxvYXQgcmFkaXVzVG9MZWdhY3lSYWRpdXMoZmxvYXQgcmFkaXVzKQogfQogI2VuZGlmCiAK
LVNoYWRvd0JsdXI6OlNoYWRvd0JsdXIoY29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IEZs
b2F0U2l6ZSYgb2Zmc2V0LCBjb25zdCBDb2xvciYgY29sb3IpCitTaGFkb3dCbHVyOjpTaGFkb3dC
bHVyKCkgPSBkZWZhdWx0OworCitTaGFkb3dCbHVyOjpTaGFkb3dCbHVyKGNvbnN0IEZsb2F0U2l6
ZSYgcmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgY29uc3QgQ29sb3ImIGNvbG9yLCBi
b29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKQogICAgIDogbV9jb2xvcihjb2xvcikKICAgICAs
IG1fYmx1clJhZGl1cyhyYWRpdXMpCiAgICAgLCBtX29mZnNldChvZmZzZXQpCi0gICAgLCBtX2xh
eWVySW1hZ2UoMCkKLSAgICAsIG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoZmFsc2UpCisgICAg
LCBtX3NoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKQogewog
ICAgIHVwZGF0ZVNoYWRvd0JsdXJWYWx1ZXMoKTsKIH0KQEAgLTE5NSwxMyArMTk2LDYgQEAgU2hh
ZG93Qmx1cjo6U2hhZG93Qmx1cihjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUpCiAg
ICAgdXBkYXRlU2hhZG93Qmx1clZhbHVlcygpOwogfQogCi1TaGFkb3dCbHVyOjpTaGFkb3dCbHVy
KCkKLSAgICA6IG1fdHlwZShOb1NoYWRvdykKLSAgICAsIG1fYmx1clJhZGl1cygwLCAwKQotICAg
ICwgbV9zaGFkb3dzSWdub3JlVHJhbnNmb3JtcyhmYWxzZSkKLXsKLX0KLQogdm9pZCBTaGFkb3dC
bHVyOjpzZXRTaGFkb3dWYWx1ZXMoY29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IEZsb2F0
U2l6ZSYgb2Zmc2V0LCBjb25zdCBDb2xvciYgY29sb3IsIGJvb2wgaWdub3JlVHJhbnNmb3JtcykK
IHsKICAgICBtX2JsdXJSYWRpdXMgPSByYWRpdXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9TaGFkb3dCbHVyLmgKaW5kZXggMzQ4Njk0OTZhOThjZjBhYWI5ZjIzMDYwZmEw
MmYxNDE4ZmRjY2Y1Yi4uMWUyNWJmYTI1NTVjZjVjNzQ0ZTBmYmUyZTAxODZjZmUyNDAxMDhhNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuaApAQCAt
NTAsOSArNTAsOSBAQCBwdWJsaWM6CiAgICAgICAgIEJsdXJTaGFkb3cKICAgICB9OwogCi0gICAg
U2hhZG93Qmx1cihjb25zdCBGbG9hdFNpemUmIHJhZGl1cywgY29uc3QgRmxvYXRTaXplJiBvZmZz
ZXQsIGNvbnN0IENvbG9yJik7Ci0gICAgU2hhZG93Qmx1cihjb25zdCBHcmFwaGljc0NvbnRleHRT
dGF0ZSYpOwogICAgIFNoYWRvd0JsdXIoKTsKKyAgICBTaGFkb3dCbHVyKGNvbnN0IEZsb2F0U2l6
ZSYgcmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgY29uc3QgQ29sb3ImLCBib29sIHNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zID0gZmFsc2UpOworICAgIFNoYWRvd0JsdXIoY29uc3QgR3Jh
cGhpY3NDb250ZXh0U3RhdGUmKTsKIAogICAgIHZvaWQgc2V0U2hhZG93VmFsdWVzKGNvbnN0IEZs
b2F0U2l6ZSYsIGNvbnN0IEZsb2F0U2l6ZSYgLCBjb25zdCBDb2xvciYsIGJvb2wgaWdub3JlVHJh
bnNmb3JtcyA9IGZhbHNlKTsKIApAQCAtMTAwLDIwICsxMDAsMjAgQEAgcHJpdmF0ZToKICAgICBJ
bnRTaXplIGJsdXJyZWRFZGdlU2l6ZSgpIGNvbnN0OwogICAgIAogICAgIAotICAgIFNoYWRvd1R5
cGUgbV90eXBlOworICAgIFNoYWRvd1R5cGUgbV90eXBlIHsgTm9TaGFkb3cgfTsKIAogICAgIENv
bG9yIG1fY29sb3I7CiAgICAgRmxvYXRTaXplIG1fYmx1clJhZGl1czsKICAgICBGbG9hdFNpemUg
bV9vZmZzZXQ7CiAKLSAgICBJbWFnZUJ1ZmZlciogbV9sYXllckltYWdlOyAvLyBCdWZmZXIgdG8g
d2hlcmUgdGhlIHRlbXBvcmFyeSBzaGFkb3cgd2lsbCBiZSBkcmF3biB0by4KKyAgICBJbWFnZUJ1
ZmZlciogbV9sYXllckltYWdlIHsgbnVsbHB0ciB9OyAvLyBCdWZmZXIgdG8gd2hlcmUgdGhlIHRl
bXBvcmFyeSBzaGFkb3cgd2lsbCBiZSBkcmF3biB0by4KIAogICAgIEZsb2F0UmVjdCBtX3NvdXJj
ZVJlY3Q7IC8vIFN1Yi1yZWN0IG9mIG1fbGF5ZXJJbWFnZSB0aGF0IGNvbnRhaW5zIHRoZSBzaGFk
b3cgcGl4ZWxzLgogICAgIEZsb2F0UG9pbnQgbV9sYXllck9yaWdpbjsgLy8gVG9wLWxlZnQgY29y
bmVyIG9mIHRoZSAocG9zc2libHkgY2xpcHBlZCkgYm91bmRpbmcgcmVjdCB0byBkcmF3IHRoZSBz
aGFkb3cgdG8uCiAgICAgRmxvYXRTaXplIG1fbGF5ZXJTaXplOyAvLyBTaXplIG9mIG1fbGF5ZXJJ
bWFnZSBwaXhlbHMgdGhhdCBuZWVkIGJsdXJyaW5nLgogICAgIEZsb2F0U2l6ZSBtX2xheWVyQ29u
dGV4dFRyYW5zbGF0aW9uOyAvLyBUcmFuc2xhdGlvbiB0byBhcHBseSB0byBtX2xheWVyQ29udGV4
dCBmb3IgdGhlIHNoYWRvdyB0byBiZSBjb3JyZWN0bHkgY2xpcHBlZC4KIAotICAgIGJvb2wgbV9z
aGFkb3dzSWdub3JlVHJhbnNmb3JtczsKKyAgICBib29sIG1fc2hhZG93c0lnbm9yZVRyYW5zZm9y
bXMgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9u
cy5jcHAKaW5kZXggYWIzZjIzNjE3YWZhN2NlM2NlYzVhZGFhOTYwYjZkOGQ2YzMyOTViNC4uMDdl
YTRlOGNhYWYyY2Y4YTJlY2NkOGE3NWY5ODk4OWU2ZGZjOWVkMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMu
Y3BwCkBAIC02Niw5ICs2NiwxMCBAQCBlbnVtIFBhdGhEcmF3aW5nU3R5bGUgewogICAgIEZpbGxB
bmRTdHJva2UgPSBGaWxsICsgU3Ryb2tlCiB9OwogCi1zdGF0aWMgaW5saW5lIHZvaWQgZHJhd1Bh
dGhTaGFkb3coUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmls
bFNvdXJjZSYgZmlsbFNvdXJjZSwgY29uc3QgU3Ryb2tlU291cmNlJiBzdHJva2VTb3VyY2UsIEdy
YXBoaWNzQ29udGV4dCYgdGFyZ2V0Q29udGV4dCwgUGF0aERyYXdpbmdTdHlsZSBkcmF3aW5nU3R5
bGUpCitzdGF0aWMgaW5saW5lIHZvaWQgZHJhd1BhdGhTaGFkb3coUGxhdGZvcm1Db250ZXh0Q2Fp
cm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmlsbFNvdXJjZSYgZmlsbFNvdXJjZSwgY29uc3Qg
U3Ryb2tlU291cmNlJiBzdHJva2VTb3VyY2UsIGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0
ZSwgR3JhcGhpY3NDb250ZXh0JiB0YXJnZXRDb250ZXh0LCBQYXRoRHJhd2luZ1N0eWxlIGRyYXdp
bmdTdHlsZSkKIHsKLSAgICBTaGFkb3dCbHVyJiBzaGFkb3cgPSBwbGF0Zm9ybUNvbnRleHQuc2hh
ZG93Qmx1cigpOworICAgIFNoYWRvd0JsdXIgc2hhZG93KEZsb2F0U2l6ZSB7IHNoYWRvd1N0YXRl
LmJsdXIsIHNoYWRvd1N0YXRlLmJsdXIgfSwKKyAgICAgICAgc2hhZG93U3RhdGUub2Zmc2V0LCBz
aGFkb3dTdGF0ZS5jb2xvciwgc2hhZG93U3RhdGUuaWdub3JlVHJhbnNmb3Jtcyk7CiAgICAgaWYg
KHNoYWRvdy50eXBlKCkgPT0gU2hhZG93Qmx1cjo6Tm9TaGFkb3cpCiAgICAgICAgIHJldHVybjsK
IApAQCAtMTgyLDE0ICsxODMsMTQgQEAgc3RhdGljIHZvaWQgZHJhd0dseXBoc1RvQ29udGV4dChj
YWlyb190KiBjb250ZXh0LCBjYWlyb19zY2FsZWRfZm9udF90KiBzY2FsZWRGb24KICAgICB9CiB9
CiAKLXN0YXRpYyB2b2lkIGRyYXdHbHlwaHNTaGFkb3coUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBs
YXRmb3JtQ29udGV4dCwgY29uc3QgU2hhZG93Qmx1clVzYWdlJiBzaGFkb3dCbHVyVXNhZ2UsIFRl
eHREcmF3aW5nTW9kZUZsYWdzIHRleHREcmF3aW5nTW9kZSwgY29uc3QgRmxvYXRTaXplJiBzaGFk
b3dPZmZzZXQsIGNvbnN0IENvbG9yJiBzaGFkb3dDb2xvciwgY29uc3QgRmxvYXRQb2ludCYgcG9p
bnQsIGNhaXJvX3NjYWxlZF9mb250X3QqIHNjYWxlZEZvbnQsIGRvdWJsZSBzeW50aGV0aWNCb2xk
T2Zmc2V0LCBjb25zdCBWZWN0b3I8Y2Fpcm9fZ2x5cGhfdD4mIGdseXBocywgR3JhcGhpY3NDb250
ZXh0JiB0YXJnZXRDb250ZXh0KQorc3RhdGljIHZvaWQgZHJhd0dseXBoc1NoYWRvdyhQbGF0Zm9y
bUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93
U3RhdGUsIFRleHREcmF3aW5nTW9kZUZsYWdzIHRleHREcmF3aW5nTW9kZSwgY29uc3QgRmxvYXRT
aXplJiBzaGFkb3dPZmZzZXQsIGNvbnN0IENvbG9yJiBzaGFkb3dDb2xvciwgY29uc3QgRmxvYXRQ
b2ludCYgcG9pbnQsIGNhaXJvX3NjYWxlZF9mb250X3QqIHNjYWxlZEZvbnQsIGRvdWJsZSBzeW50
aGV0aWNCb2xkT2Zmc2V0LCBjb25zdCBWZWN0b3I8Y2Fpcm9fZ2x5cGhfdD4mIGdseXBocywgR3Jh
cGhpY3NDb250ZXh0JiB0YXJnZXRDb250ZXh0KQogewotICAgIFNoYWRvd0JsdXImIHNoYWRvdyA9
IHBsYXRmb3JtQ29udGV4dC5zaGFkb3dCbHVyKCk7Ci0KKyAgICBTaGFkb3dCbHVyIHNoYWRvdyhG
bG9hdFNpemUgeyBzaGFkb3dTdGF0ZS5ibHVyLCBzaGFkb3dTdGF0ZS5ibHVyIH0sCisgICAgICAg
IHNoYWRvd1N0YXRlLm9mZnNldCwgc2hhZG93U3RhdGUuY29sb3IsIHNoYWRvd1N0YXRlLmlnbm9y
ZVRyYW5zZm9ybXMpOwogICAgIGlmICghKHRleHREcmF3aW5nTW9kZSAmIFRleHRNb2RlRmlsbCkg
fHwgc2hhZG93LnR5cGUoKSA9PSBTaGFkb3dCbHVyOjpOb1NoYWRvdykKICAgICAgICAgcmV0dXJu
OwogCi0gICAgaWYgKCFzaGFkb3dCbHVyVXNhZ2UucmVxdWlyZWQocGxhdGZvcm1Db250ZXh0KSkg
eworICAgIGlmICghc2hhZG93U3RhdGUuc2hhZG93UmVxdWlyZWQocGxhdGZvcm1Db250ZXh0KSkg
ewogICAgICAgICAvLyBPcHRpbWl6ZSBub24tYmx1cnJ5IHNoYWRvd3MsIGJ5IGp1c3QgZHJhd2lu
ZyB0ZXh0IHdpdGhvdXQgdGhlIFNoYWRvd0JsdXIuCiAgICAgICAgIGNhaXJvX3QqIGNvbnRleHQg
PSBwbGF0Zm9ybUNvbnRleHQuY3IoKTsKICAgICAgICAgY2Fpcm9fc2F2ZShjb250ZXh0KTsKQEAg
LTM3NiwxNyArMzc3LDYgQEAgQWZmaW5lVHJhbnNmb3JtIGdldENUTShQbGF0Zm9ybUNvbnRleHRD
YWlybyYgcGxhdGZvcm1Db250ZXh0KQogICAgIHJldHVybiBBZmZpbmVUcmFuc2Zvcm0obS54eCwg
bS55eCwgbS54eSwgbS55eSwgbS54MCwgbS55MCk7CiB9CiAKLXZvaWQgc2V0U2hhZG93VmFsdWVz
KFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSYg
cmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgY29uc3QgQ29sb3ImIGNvbG9yLCBib29s
IGlnbm9yZVRyYW5zZm9ybXMpCi17Ci0gICAgLy8gQ2Fpcm8gZG9lc24ndCBzdXBwb3J0IHNoYWRv
d3MgbmF0aXZlbHksIHRoZXkgYXJlIGRyYXduIG1hbnVhbGx5IGluIHRoZSBkcmF3KiBmdW5jdGlv
bnMgdXNpbmcgU2hhZG93Qmx1ci4KLSAgICBwbGF0Zm9ybUNvbnRleHQuc2hhZG93Qmx1cigpLnNl
dFNoYWRvd1ZhbHVlcyhyYWRpdXMsIG9mZnNldCwgY29sb3IsIGlnbm9yZVRyYW5zZm9ybXMpOwot
fQotCi12b2lkIGNsZWFyU2hhZG93KFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRl
eHQpCi17Ci0gICAgcGxhdGZvcm1Db250ZXh0LnNoYWRvd0JsdXIoKS5jbGVhcigpOwotfQotCiBJ
bnRSZWN0IGdldENsaXBCb3VuZHMoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4
dCkKIHsKICAgICBkb3VibGUgeDEsIHgyLCB5MSwgeTI7CkBAIC00MzksMzIgKzQyOSw2IEBAIGJv
b2wgaXNBY2NlbGVyYXRlZENvbnRleHQoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29u
dGV4dCkKIAogfSAvLyBuYW1lc3BhY2UgU3RhdGUKIAotU2hhZG93Qmx1clVzYWdlOjpTaGFkb3dC
bHVyVXNhZ2UoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKQotICAgIDogc2hhZG93
Q29sb3Ioc3RhdGUuc2hhZG93Q29sb3IpCi0gICAgLCBzaGFkb3dCbHVyKHN0YXRlLnNoYWRvd0Js
dXIpCi0gICAgLCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcyhzdGF0ZS5zaGFkb3dzSWdub3JlVHJh
bnNmb3JtcykKLXsKLX0KLQotYm9vbCBTaGFkb3dCbHVyVXNhZ2U6OnJlcXVpcmVkKFBsYXRmb3Jt
Q29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQpIGNvbnN0Ci17Ci0gICAgLy8gV2UgY2FuJ3Qg
YXZvaWQgU2hhZG93Qmx1ciBpZiB0aGUgc2hhZG93IGhhcyBibHVyLgotICAgIGlmIChzaGFkb3dD
b2xvci5pc1Zpc2libGUoKSAmJiBzaGFkb3dCbHVyKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQot
ICAgIC8vIFdlIGNhbiBhdm9pZCBTaGFkb3dCbHVyIGFuZCBvcHRpbWl6ZSwgc2luY2Ugd2UncmUg
bm90IGRyYXdpbmcgb24gYQotICAgIC8vIGNhbnZhcyBhbmQgYm94IHNoYWRvd3MgYXJlIGFmZmVj
dGVkIGJ5IHRoZSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXguCi0gICAgaWYgKCFzaGFkb3dzSWdub3Jl
VHJhbnNmb3JtcykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gV2UgY2FuIGF2b2lk
IFNoYWRvd0JsdXIsIHNpbmNlIHRoZXJlIGFyZSBubyB0cmFuc2Zvcm1hdGlvbnMgdG8gYXBwbHkg
dG8gdGhlIGNhbnZhcy4KLSAgICBpZiAoU3RhdGU6OmdldENUTShwbGF0Zm9ybUNvbnRleHQpLmlz
SWRlbnRpdHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8gT3RoZXJ3aXNlLCBu
byBjaGFuY2UgYXZvaWRpbmcgU2hhZG93Qmx1ci4KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogRmls
bFNvdXJjZTo6RmlsbFNvdXJjZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUpCiB7
CiAgICAgaWYgKHN0YXRlLmZpbGxQYXR0ZXJuKSB7CkBAIC00OTcsNiArNDYxLDM4IEBAIFN0cm9r
ZVNvdXJjZTo6U3Ryb2tlU291cmNlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSkK
ICAgICAgICAgY29sb3IgPSBzdGF0ZS5zdHJva2VDb2xvcjsKIH0KIAorU2hhZG93U3RhdGU6OlNo
YWRvd1N0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSkKKyAgICA6IG9mZnNl
dChzdGF0ZS5zaGFkb3dPZmZzZXQpCisgICAgLCBibHVyKHN0YXRlLnNoYWRvd0JsdXIpCisgICAg
LCBjb2xvcihzdGF0ZS5zaGFkb3dDb2xvcikKKyAgICAsIGlnbm9yZVRyYW5zZm9ybXMoc3RhdGUu
c2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpCit7Cit9CisKK2Jvb2wgU2hhZG93U3RhdGU6OnNoYWRv
d1Zpc2libGUoKSBjb25zdAoreworICAgIHJldHVybiBjb2xvci5pc1Zpc2libGUoKSAmJiAob2Zm
c2V0LndpZHRoKCkgfHwgb2Zmc2V0LmhlaWdodCgpIHx8IGJsdXIpOworfQorCitib29sIFNoYWRv
d1N0YXRlOjpzaGFkb3dSZXF1aXJlZChQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250
ZXh0KSBjb25zdAoreworICAgIC8vIFdlIGNhbid0IGF2b2lkIFNoYWRvd0JsdXIgaWYgdGhlIHNo
YWRvdyBoYXMgYmx1ci4KKyAgICBpZiAoY29sb3IuaXNWaXNpYmxlKCkgJiYgYmx1cikKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBXZSBjYW4gYXZvaWQgU2hhZG93Qmx1ciBhbmQgb3B0
aW1pemUsIHNpbmNlIHdlJ3JlIG5vdCBkcmF3aW5nIG9uIGEKKyAgICAvLyBjYW52YXMgYW5kIGJv
eCBzaGFkb3dzIGFyZSBhZmZlY3RlZCBieSB0aGUgdHJhbnNmb3JtYXRpb24gbWF0cml4LgorICAg
IGlmICghaWdub3JlVHJhbnNmb3JtcykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8g
V2UgY2FuIGF2b2lkIFNoYWRvd0JsdXIsIHNpbmNlIHRoZXJlIGFyZSBubyB0cmFuc2Zvcm1hdGlv
bnMgdG8gYXBwbHkgdG8gdGhlIGNhbnZhcy4KKyAgICBpZiAoU3RhdGU6OmdldENUTShwbGF0Zm9y
bUNvbnRleHQpLmlzSWRlbnRpdHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8g
T3RoZXJ3aXNlLCBubyBjaGFuY2UgYXZvaWRpbmcgU2hhZG93Qmx1ci4KKyAgICByZXR1cm4gdHJ1
ZTsKK30KKwogdm9pZCBzZXRMaW5lQ2FwKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNv
bnRleHQsIExpbmVDYXAgbGluZUNhcCkKIHsKICAgICBjYWlyb19saW5lX2NhcF90IGNhaXJvQ2Fw
OwpAQCAtNTQ0LDE5ICs1NDAsMjIgQEAgdm9pZCBzZXRNaXRlckxpbWl0KFBsYXRmb3JtQ29udGV4
dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGZsb2F0IG1pdGVyTGltaXQpCiAgICAgY2Fpcm9fc2V0
X21pdGVyX2xpbWl0KHBsYXRmb3JtQ29udGV4dC5jcigpLCBtaXRlckxpbWl0KTsKIH0KIAotdm9p
ZCBmaWxsUmVjdChQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBG
bG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZpbGxTb3VyY2UmIGZpbGxTb3VyY2UsIEdyYXBoaWNzQ29u
dGV4dCYgdGFyZ2V0Q29udGV4dCkKK3ZvaWQgZmlsbFJlY3QoUGxhdGZvcm1Db250ZXh0Q2Fpcm8m
IHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGaWxsU291cmNl
JiBmaWxsU291cmNlLCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUsIEdyYXBoaWNzQ29u
dGV4dCYgdGFyZ2V0Q29udGV4dCkKIHsKICAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4
dC5jcigpOwogCiAgICAgY2Fpcm9fcmVjdGFuZ2xlKGNyLCByZWN0LngoKSwgcmVjdC55KCksIHJl
Y3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7Ci0gICAgZHJhd1BhdGhTaGFkb3cocGxhdGZvcm1D
b250ZXh0LCBmaWxsU291cmNlLCB7IH0sIHRhcmdldENvbnRleHQsIEZpbGwpOworICAgIGRyYXdQ
YXRoU2hhZG93KHBsYXRmb3JtQ29udGV4dCwgZmlsbFNvdXJjZSwgeyB9LCBzaGFkb3dTdGF0ZSwg
dGFyZ2V0Q29udGV4dCwgRmlsbCk7CiAgICAgZmlsbEN1cnJlbnRDYWlyb1BhdGgocGxhdGZvcm1D
b250ZXh0LCBmaWxsU291cmNlKTsKIH0KIAotdm9pZCBmaWxsUmVjdChQbGF0Zm9ybUNvbnRleHRD
YWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9y
JiBjb2xvciwgYm9vbCBoYXNTaGFkb3csIEdyYXBoaWNzQ29udGV4dCYgdGFyZ2V0Q29udGV4dCkK
K3ZvaWQgZmlsbFJlY3QoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29u
c3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIGNvbnN0IFNoYWRvd1N0YXRl
JiBzaGFkb3dTdGF0ZSwgR3JhcGhpY3NDb250ZXh0JiB0YXJnZXRDb250ZXh0KQogewotICAgIGlm
IChoYXNTaGFkb3cpCi0gICAgICAgIHBsYXRmb3JtQ29udGV4dC5zaGFkb3dCbHVyKCkuZHJhd1Jl
Y3RTaGFkb3codGFyZ2V0Q29udGV4dCwgRmxvYXRSb3VuZGVkUmVjdChyZWN0KSk7CisgICAgaWYg
KHNoYWRvd1N0YXRlLnNoYWRvd1Zpc2libGUoKSkgeworICAgICAgICBTaGFkb3dCbHVyIHNoYWRv
dyhGbG9hdFNpemUgeyBzaGFkb3dTdGF0ZS5ibHVyLCBzaGFkb3dTdGF0ZS5ibHVyIH0sCisgICAg
ICAgICAgICBzaGFkb3dTdGF0ZS5vZmZzZXQsIHNoYWRvd1N0YXRlLmNvbG9yLCBzaGFkb3dTdGF0
ZS5pZ25vcmVUcmFuc2Zvcm1zKTsKKyAgICAgICAgc2hhZG93LmRyYXdSZWN0U2hhZG93KHRhcmdl
dENvbnRleHQsIEZsb2F0Um91bmRlZFJlY3QocmVjdCkpOworICAgIH0KIAogICAgIGZpbGxSZWN0
V2l0aENvbG9yKHBsYXRmb3JtQ29udGV4dC5jcigpLCByZWN0LCBjb2xvcik7CiB9CkBAIC01NzAs
MTAgKzU2OSwxMyBAQCB2b2lkIGZpbGxSZWN0KFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9y
bUNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY2FpcgogICAgIGNhaXJvX2ZpbGwoY3Ip
OwogfQogCi12b2lkIGZpbGxSb3VuZGVkUmVjdChQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZv
cm1Db250ZXh0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29s
b3IsIGJvb2wgaGFzU2hhZG93LCBHcmFwaGljc0NvbnRleHQmIHRhcmdldENvbnRleHQpCit2b2lk
IGZpbGxSb3VuZGVkUmVjdChQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBj
b25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIGNvbnN0IFNo
YWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSwgR3JhcGhpY3NDb250ZXh0JiB0YXJnZXRDb250ZXh0KQog
ewotICAgIGlmIChoYXNTaGFkb3cpCi0gICAgICAgIHBsYXRmb3JtQ29udGV4dC5zaGFkb3dCbHVy
KCkuZHJhd1JlY3RTaGFkb3codGFyZ2V0Q29udGV4dCwgcmVjdCk7CisgICAgaWYgKHNoYWRvd1N0
YXRlLnNoYWRvd1Zpc2libGUoKSkgeworICAgICAgICBTaGFkb3dCbHVyIHNoYWRvdyhGbG9hdFNp
emUgeyBzaGFkb3dTdGF0ZS5ibHVyLCBzaGFkb3dTdGF0ZS5ibHVyIH0sCisgICAgICAgICAgICBz
aGFkb3dTdGF0ZS5vZmZzZXQsIHNoYWRvd1N0YXRlLmNvbG9yLCBzaGFkb3dTdGF0ZS5pZ25vcmVU
cmFuc2Zvcm1zKTsKKyAgICAgICAgc2hhZG93LmRyYXdSZWN0U2hhZG93KHRhcmdldENvbnRleHQs
IHJlY3QpOworICAgIH0KIAogICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250ZXh0LmNyKCk7
CiAgICAgY2Fpcm9fc2F2ZShjcik7CkBAIC01ODcsMTIgKzU4OSwxNSBAQCB2b2lkIGZpbGxSb3Vu
ZGVkUmVjdChQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBGbG9h
dFJvdW5kZWRSZQogICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwogfQogCi12b2lkIGZpbGxSZWN0V2l0
aFJvdW5kZWRIb2xlKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZEhvbGVSZWN0
LCBjb25zdCBGaWxsU291cmNlJiBmaWxsU291cmNlLCBjb25zdCBTaGFkb3dCbHVyVXNhZ2UmIHNo
YWRvd0JsdXJVc2FnZSwgR3JhcGhpY3NDb250ZXh0JiB0YXJnZXRDb250ZXh0KQordm9pZCBmaWxs
UmVjdFdpdGhSb3VuZGVkSG9sZShQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0
LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRI
b2xlUmVjdCwgY29uc3QgRmlsbFNvdXJjZSYgZmlsbFNvdXJjZSwgY29uc3QgU2hhZG93U3RhdGUm
IHNoYWRvd1N0YXRlLCBHcmFwaGljc0NvbnRleHQmIHRhcmdldENvbnRleHQpCiB7CiAgICAgLy8g
RklYTUU6IHRoaXMgc2hvdWxkIGxldmVyYWdlIHRoZSBzcGVjaWZpZWQgY29sb3IuCiAKLSAgICBp
ZiAoc2hhZG93Qmx1clVzYWdlLnJlcXVpcmVkKHBsYXRmb3JtQ29udGV4dCkpCi0gICAgICAgIHBs
YXRmb3JtQ29udGV4dC5zaGFkb3dCbHVyKCkuZHJhd0luc2V0U2hhZG93KHRhcmdldENvbnRleHQs
IHJlY3QsIHJvdW5kZWRIb2xlUmVjdCk7CisgICAgaWYgKHNoYWRvd1N0YXRlLnNoYWRvd1JlcXVp
cmVkKHBsYXRmb3JtQ29udGV4dCkpIHsKKyAgICAgICAgU2hhZG93Qmx1ciBzaGFkb3coRmxvYXRT
aXplIHsgc2hhZG93U3RhdGUuYmx1ciwgc2hhZG93U3RhdGUuYmx1ciB9LAorICAgICAgICAgICAg
c2hhZG93U3RhdGUub2Zmc2V0LCBzaGFkb3dTdGF0ZS5jb2xvciwgc2hhZG93U3RhdGUuaWdub3Jl
VHJhbnNmb3Jtcyk7CisgICAgICAgIHNoYWRvdy5kcmF3SW5zZXRTaGFkb3codGFyZ2V0Q29udGV4
dCwgcmVjdCwgcm91bmRlZEhvbGVSZWN0KTsKKyAgICB9CiAKICAgICBQYXRoIHBhdGg7CiAgICAg
cGF0aC5hZGRSZWN0KHJlY3QpOwpAQCAtNjA5LDM1ICs2MTQsMzUgQEAgdm9pZCBmaWxsUmVjdFdp
dGhSb3VuZGVkSG9sZShQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25z
dCBGbG9hdFIKICAgICBjYWlyb19yZXN0b3JlKGNyKTsKIH0KIAotdm9pZCBmaWxsUGF0aChQbGF0
Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBQYXRoJiBwYXRoLCBjb25z
dCBGaWxsU291cmNlJiBmaWxsU291cmNlLCBHcmFwaGljc0NvbnRleHQmIHRhcmdldENvbnRleHQp
Cit2b2lkIGZpbGxQYXRoKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNv
bnN0IFBhdGgmIHBhdGgsIGNvbnN0IEZpbGxTb3VyY2UmIGZpbGxTb3VyY2UsIGNvbnN0IFNoYWRv
d1N0YXRlJiBzaGFkb3dTdGF0ZSwgR3JhcGhpY3NDb250ZXh0JiB0YXJnZXRDb250ZXh0KQogewog
ICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250ZXh0LmNyKCk7CiAKICAgICBzZXRQYXRoT25D
YWlyb0NvbnRleHQoY3IsIHBhdGgucGxhdGZvcm1QYXRoKCktPmNvbnRleHQoKSk7Ci0gICAgZHJh
d1BhdGhTaGFkb3cocGxhdGZvcm1Db250ZXh0LCBmaWxsU291cmNlLCB7IH0sIHRhcmdldENvbnRl
eHQsIEZpbGwpOworICAgIGRyYXdQYXRoU2hhZG93KHBsYXRmb3JtQ29udGV4dCwgZmlsbFNvdXJj
ZSwgeyB9LCBzaGFkb3dTdGF0ZSwgdGFyZ2V0Q29udGV4dCwgRmlsbCk7CiAgICAgZmlsbEN1cnJl
bnRDYWlyb1BhdGgocGxhdGZvcm1Db250ZXh0LCBmaWxsU291cmNlKTsKIH0KIAotdm9pZCBzdHJv
a2VSZWN0KFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCwgZmxvYXQgbGluZVdpZHRoLCBjb25zdCBTdHJva2VTb3VyY2UmIHN0cm9rZVNv
dXJjZSwgR3JhcGhpY3NDb250ZXh0JiB0YXJnZXRDb250ZXh0KQordm9pZCBzdHJva2VSZWN0KFBs
YXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCwgZmxvYXQgbGluZVdpZHRoLCBjb25zdCBTdHJva2VTb3VyY2UmIHN0cm9rZVNvdXJjZSwgY29u
c3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0YXRlLCBHcmFwaGljc0NvbnRleHQmIHRhcmdldENvbnRl
eHQpCiB7CiAgICAgY2Fpcm9fdCogY3IgPSBwbGF0Zm9ybUNvbnRleHQuY3IoKTsKICAgICBjYWly
b19zYXZlKGNyKTsKIAogICAgIGNhaXJvX3JlY3RhbmdsZShjciwgcmVjdC54KCksIHJlY3QueSgp
LCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOwogICAgIGNhaXJvX3NldF9saW5lX3dpZHRo
KGNyLCBsaW5lV2lkdGgpOwotICAgIGRyYXdQYXRoU2hhZG93KHBsYXRmb3JtQ29udGV4dCwgeyB9
LCBzdHJva2VTb3VyY2UsIHRhcmdldENvbnRleHQsIFN0cm9rZSk7CisgICAgZHJhd1BhdGhTaGFk
b3cocGxhdGZvcm1Db250ZXh0LCB7IH0sIHN0cm9rZVNvdXJjZSwgc2hhZG93U3RhdGUsIHRhcmdl
dENvbnRleHQsIFN0cm9rZSk7CiAgICAgcGxhdGZvcm1Db250ZXh0LnByZXBhcmVGb3JTdHJva2lu
ZyhzdHJva2VTb3VyY2UsIFBsYXRmb3JtQ29udGV4dENhaXJvOjpQcmVzZXJ2ZUFscGhhKTsKICAg
ICBjYWlyb19zdHJva2UoY3IpOwogCiAgICAgY2Fpcm9fcmVzdG9yZShjcik7CiB9CiAKLXZvaWQg
c3Ryb2tlUGF0aChQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBQ
YXRoJiBwYXRoLCBjb25zdCBTdHJva2VTb3VyY2UmIHN0cm9rZVNvdXJjZSwgR3JhcGhpY3NDb250
ZXh0JiB0YXJnZXRDb250ZXh0KQordm9pZCBzdHJva2VQYXRoKFBsYXRmb3JtQ29udGV4dENhaXJv
JiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IFBhdGgmIHBhdGgsIGNvbnN0IFN0cm9rZVNvdXJjZSYg
c3Ryb2tlU291cmNlLCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUsIEdyYXBoaWNzQ29u
dGV4dCYgdGFyZ2V0Q29udGV4dCkKIHsKICAgICBjYWlyb190KiBjciA9IHBsYXRmb3JtQ29udGV4
dC5jcigpOwogCiAgICAgc2V0UGF0aE9uQ2Fpcm9Db250ZXh0KGNyLCBwYXRoLnBsYXRmb3JtUGF0
aCgpLT5jb250ZXh0KCkpOwotICAgIGRyYXdQYXRoU2hhZG93KHBsYXRmb3JtQ29udGV4dCwgeyB9
LCBzdHJva2VTb3VyY2UsIHRhcmdldENvbnRleHQsIFN0cm9rZSk7CisgICAgZHJhd1BhdGhTaGFk
b3cocGxhdGZvcm1Db250ZXh0LCB7IH0sIHN0cm9rZVNvdXJjZSwgc2hhZG93U3RhdGUsIHRhcmdl
dENvbnRleHQsIFN0cm9rZSk7CiAgICAgcGxhdGZvcm1Db250ZXh0LnByZXBhcmVGb3JTdHJva2lu
ZyhzdHJva2VTb3VyY2UsIFBsYXRmb3JtQ29udGV4dENhaXJvOjpQcmVzZXJ2ZUFscGhhKTsKICAg
ICBjYWlyb19zdHJva2UoY3IpOwogfQpAQCAtNjUzLDkgKzY1OCw5IEBAIHZvaWQgY2xlYXJSZWN0
KFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYg
cmVjdCkKICAgICBjYWlyb19yZXN0b3JlKGNyKTsKIH0KIAotdm9pZCBkcmF3R2x5cGhzKFBsYXRm
b3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZpbGxTb3VyY2UmIGZpbGxT
b3VyY2UsIGNvbnN0IFN0cm9rZVNvdXJjZSYgc3Ryb2tlU291cmNlLCBjb25zdCBTaGFkb3dCbHVy
VXNhZ2UmIHNoYWRvd0JsdXJVc2FnZSwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGNhaXJvX3Nj
YWxlZF9mb250X3QqIHNjYWxlZEZvbnQsIGRvdWJsZSBzeW50aGV0aWNCb2xkT2Zmc2V0LCBjb25z
dCBWZWN0b3I8Y2Fpcm9fZ2x5cGhfdD4mIGdseXBocywgZmxvYXQgeE9mZnNldCwgVGV4dERyYXdp
bmdNb2RlRmxhZ3MgdGV4dERyYXdpbmdNb2RlLCBmbG9hdCBzdHJva2VUaGlja25lc3MsIGNvbnN0
IEZsb2F0U2l6ZSYgc2hhZG93T2Zmc2V0LCBjb25zdCBDb2xvciYgc2hhZG93Q29sb3IsIEdyYXBo
aWNzQ29udGV4dCYgdGFyZ2V0Q29udGV4dCkKK3ZvaWQgZHJhd0dseXBocyhQbGF0Zm9ybUNvbnRl
eHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBGaWxsU291cmNlJiBmaWxsU291cmNlLCBj
b25zdCBTdHJva2VTb3VyY2UmIHN0cm9rZVNvdXJjZSwgY29uc3QgU2hhZG93U3RhdGUmIHNoYWRv
d1N0YXRlLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgY2Fpcm9fc2NhbGVkX2ZvbnRfdCogc2Nh
bGVkRm9udCwgZG91YmxlIHN5bnRoZXRpY0JvbGRPZmZzZXQsIGNvbnN0IFZlY3RvcjxjYWlyb19n
bHlwaF90PiYgZ2x5cGhzLCBmbG9hdCB4T2Zmc2V0LCBUZXh0RHJhd2luZ01vZGVGbGFncyB0ZXh0
RHJhd2luZ01vZGUsIGZsb2F0IHN0cm9rZVRoaWNrbmVzcywgY29uc3QgRmxvYXRTaXplJiBzaGFk
b3dPZmZzZXQsIGNvbnN0IENvbG9yJiBzaGFkb3dDb2xvciwgR3JhcGhpY3NDb250ZXh0JiB0YXJn
ZXRDb250ZXh0KQogewotICAgIGRyYXdHbHlwaHNTaGFkb3cocGxhdGZvcm1Db250ZXh0LCBzaGFk
b3dCbHVyVXNhZ2UsIHRleHREcmF3aW5nTW9kZSwgc2hhZG93T2Zmc2V0LCBzaGFkb3dDb2xvciwg
cG9pbnQsIHNjYWxlZEZvbnQsIHN5bnRoZXRpY0JvbGRPZmZzZXQsIGdseXBocywgdGFyZ2V0Q29u
dGV4dCk7CisgICAgZHJhd0dseXBoc1NoYWRvdyhwbGF0Zm9ybUNvbnRleHQsIHNoYWRvd1N0YXRl
LCB0ZXh0RHJhd2luZ01vZGUsIHNoYWRvd09mZnNldCwgc2hhZG93Q29sb3IsIHBvaW50LCBzY2Fs
ZWRGb250LCBzeW50aGV0aWNCb2xkT2Zmc2V0LCBnbHlwaHMsIHRhcmdldENvbnRleHQpOwogCiAg
ICAgY2Fpcm9fdCogY3IgPSBwbGF0Zm9ybUNvbnRleHQuY3IoKTsKICAgICBjYWlyb19zYXZlKGNy
KTsKQEAgLTY4Miw3ICs2ODcsNyBAQCB2b2lkIGRyYXdHbHlwaHMoUGxhdGZvcm1Db250ZXh0Q2Fp
cm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmlsbFNvdXJjZSYgZmlsbFNvdQogICAgIGNhaXJv
X3Jlc3RvcmUoY3IpOwogfQogCi12b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHRD
YWlybyYgcGxhdGZvcm1Db250ZXh0LCBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3Bl
cmF0b3IgY29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSBibGVuZE1vZGUsIEltYWdlT3JpZW50
YXRpb24gb3JpZW50YXRpb24sIEdyYXBoaWNzQ29udGV4dCYgdGFyZ2V0Q29udGV4dCkKK3ZvaWQg
ZHJhd05hdGl2ZUltYWdlKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNh
aXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciwg
QmxlbmRNb2RlIGJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgY29uc3Qg
U2hhZG93U3RhdGUmIHNoYWRvd1N0YXRlLCBHcmFwaGljc0NvbnRleHQmIHRhcmdldENvbnRleHQp
CiB7CiAgICAgcGxhdGZvcm1Db250ZXh0LnNhdmUoKTsKIApAQCAtNzA1LDcgKzcxMCw3IEBAIHZv
aWQgZHJhd05hdGl2ZUltYWdlKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQs
IGNhaXJvX3N1cmZhY2VfdCogc3VyCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBwbGF0Zm9ybUNv
bnRleHQuZHJhd1N1cmZhY2VUb0NvbnRleHQoc3VyZmFjZSwgZHN0LCBzcmNSZWN0LCB0YXJnZXRD
b250ZXh0KTsKKyAgICBwbGF0Zm9ybUNvbnRleHQuZHJhd1N1cmZhY2VUb0NvbnRleHQoc3VyZmFj
ZSwgZHN0LCBzcmNSZWN0LCBzaGFkb3dTdGF0ZSwgdGFyZ2V0Q29udGV4dCk7CiAgICAgcGxhdGZv
cm1Db250ZXh0LnJlc3RvcmUoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuaAppbmRleCAwMjZiODBiOWI4
YTRmNjY2ZDIzYmYxMzAxZDM3NWQ4ZWNmMzlmMzMzLi43YTM1MGYyOWUzNjg1NDI4NTRiMjVjN2Vj
OTA4MTE2NTgwMGE1YjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuaApAQCAtNjcsOSArNjcsNiBAQCB2b2lk
IHNldEltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBJbnRl
cnBvbGF0aW9uUXVhbGl0eSk7CiB2b2lkIHNldENUTShQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYpOwogQWZmaW5lVHJhbnNmb3JtIGdldENUTShQbGF0Zm9ybUNv
bnRleHRDYWlybyYpOwogCi12b2lkIHNldFNoYWRvd1ZhbHVlcyhQbGF0Zm9ybUNvbnRleHRDYWly
byYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IENvbG9yJiwgYm9v
bCk7Ci12b2lkIGNsZWFyU2hhZG93KFBsYXRmb3JtQ29udGV4dENhaXJvJik7Ci0KIEludFJlY3Qg
Z2V0Q2xpcEJvdW5kcyhQbGF0Zm9ybUNvbnRleHRDYWlybyYpOwogRmxvYXRSZWN0IHJvdW5kVG9E
ZXZpY2VQaXhlbHMoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjb25zdCBGbG9hdFJlY3QmKTsKIApA
QCAtMTA5LDE0ICsxMDYsMTYgQEAgc3RydWN0IFN0cm9rZVNvdXJjZSB7CiAgICAgQ29sb3IgY29s
b3I7CiB9OwogCi1zdHJ1Y3QgU2hhZG93Qmx1clVzYWdlIHsKLSAgICBleHBsaWNpdCBTaGFkb3dC
bHVyVXNhZ2UoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKTsKK3N0cnVjdCBTaGFkb3dTdGF0
ZSB7CisgICAgZXhwbGljaXQgU2hhZG93U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUm
KTsKIAotICAgIGJvb2wgcmVxdWlyZWQoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mKSBjb25zdDsKKyAg
ICBib29sIHNoYWRvd1Zpc2libGUoKSBjb25zdDsKKyAgICBib29sIHNoYWRvd1JlcXVpcmVkKFBs
YXRmb3JtQ29udGV4dENhaXJvJikgY29uc3Q7CiAKLSAgICBDb2xvciBzaGFkb3dDb2xvcjsKLSAg
ICBmbG9hdCBzaGFkb3dCbHVyIHsgMCB9OwotICAgIGJvb2wgc2hhZG93c0lnbm9yZVRyYW5zZm9y
bXMgeyBmYWxzZSB9OworICAgIEZsb2F0U2l6ZSBvZmZzZXQ7CisgICAgZmxvYXQgYmx1cjsKKyAg
ICBDb2xvciBjb2xvcjsKKyAgICBib29sIGlnbm9yZVRyYW5zZm9ybXMgeyBmYWxzZSB9OwogfTsK
IAogdm9pZCBzZXRMaW5lQ2FwKFBsYXRmb3JtQ29udGV4dENhaXJvJiwgTGluZUNhcCk7CkBAIC0x
MjQsMTkgKzEyMywxOSBAQCB2b2lkIHNldExpbmVEYXNoKFBsYXRmb3JtQ29udGV4dENhaXJvJiwg
Y29uc3QgRGFzaEFycmF5JiwgZmxvYXQpOwogdm9pZCBzZXRMaW5lSm9pbihQbGF0Zm9ybUNvbnRl
eHRDYWlybyYsIExpbmVKb2luKTsKIHZvaWQgc2V0TWl0ZXJMaW1pdChQbGF0Zm9ybUNvbnRleHRD
YWlybyYsIGZsb2F0KTsKIAotdm9pZCBmaWxsUmVjdChQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZpbGxTb3VyY2UmLCBHcmFwaGljc0NvbnRleHQmKTsKLXZv
aWQgZmlsbFJlY3QoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBDb2xvciYsIGJvb2wsIEdyYXBoaWNzQ29udGV4dCYpOwordm9pZCBmaWxsUmVjdChQbGF0Zm9y
bUNvbnRleHRDYWlybyYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZpbGxTb3VyY2UmLCBjb25z
dCBTaGFkb3dTdGF0ZSYsIEdyYXBoaWNzQ29udGV4dCYpOwordm9pZCBmaWxsUmVjdChQbGF0Zm9y
bUNvbnRleHRDYWlybyYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IENvbG9yJiwgY29uc3QgU2hh
ZG93U3RhdGUmLCBHcmFwaGljc0NvbnRleHQmKTsKIHZvaWQgZmlsbFJlY3QoUGxhdGZvcm1Db250
ZXh0Q2Fpcm8mLCBjb25zdCBGbG9hdFJlY3QmLCBjYWlyb19wYXR0ZXJuX3QqKTsKLXZvaWQgZmls
bFJvdW5kZWRSZWN0KFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY29uc3QgRmxvYXRSb3VuZGVkUmVj
dCYsIGNvbnN0IENvbG9yJiwgYm9vbCwgR3JhcGhpY3NDb250ZXh0Jik7Ci12b2lkIGZpbGxSZWN0
V2l0aFJvdW5kZWRIb2xlKFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgRmxvYXRSb3VuZGVkUmVjdCYsIGNvbnN0IEZpbGxTb3VyY2UmLCBjb25zdCBTaGFkb3dC
bHVyVXNhZ2UmLCBHcmFwaGljc0NvbnRleHQmKTsKLXZvaWQgZmlsbFBhdGgoUGxhdGZvcm1Db250
ZXh0Q2Fpcm8mLCBjb25zdCBQYXRoJiwgY29uc3QgRmlsbFNvdXJjZSYsIEdyYXBoaWNzQ29udGV4
dCYpOwotdm9pZCBzdHJva2VSZWN0KFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY29uc3QgRmxvYXRS
ZWN0JiwgZmxvYXQsIGNvbnN0IFN0cm9rZVNvdXJjZSYsIEdyYXBoaWNzQ29udGV4dCYpOwotdm9p
ZCBzdHJva2VQYXRoKFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY29uc3QgUGF0aCYsIGNvbnN0IFN0
cm9rZVNvdXJjZSYsIEdyYXBoaWNzQ29udGV4dCYpOwordm9pZCBmaWxsUm91bmRlZFJlY3QoUGxh
dGZvcm1Db250ZXh0Q2Fpcm8mLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiwgY29uc3QgQ29sb3Im
LCBjb25zdCBTaGFkb3dTdGF0ZSYsIGJvb2wsIEdyYXBoaWNzQ29udGV4dCYpOwordm9pZCBmaWxs
UmVjdFdpdGhSb3VuZGVkSG9sZShQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNvbnN0IEZsb2F0UmVj
dCYsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmLCBjb25zdCBGaWxsU291cmNlJiwgY29uc3QgU2hh
ZG93U3RhdGUmLCBHcmFwaGljc0NvbnRleHQmKTsKK3ZvaWQgZmlsbFBhdGgoUGxhdGZvcm1Db250
ZXh0Q2Fpcm8mLCBjb25zdCBQYXRoJiwgY29uc3QgRmlsbFNvdXJjZSYsIGNvbnN0IFNoYWRvd1N0
YXRlJiwgR3JhcGhpY3NDb250ZXh0Jik7Cit2b2lkIHN0cm9rZVJlY3QoUGxhdGZvcm1Db250ZXh0
Q2Fpcm8mLCBjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCwgY29uc3QgU3Ryb2tlU291cmNlJiwgY29u
c3QgU2hhZG93U3RhdGUmLCBHcmFwaGljc0NvbnRleHQmKTsKK3ZvaWQgc3Ryb2tlUGF0aChQbGF0
Zm9ybUNvbnRleHRDYWlybyYsIGNvbnN0IFBhdGgmLCBjb25zdCBTdHJva2VTb3VyY2UmLCBjb25z
dCBTaGFkb3dTdGF0ZSYsIEdyYXBoaWNzQ29udGV4dCYpOwogdm9pZCBjbGVhclJlY3QoUGxhdGZv
cm1Db250ZXh0Q2Fpcm8mLCBjb25zdCBGbG9hdFJlY3QmKTsKIAotdm9pZCBkcmF3R2x5cGhzKFBs
YXRmb3JtQ29udGV4dENhaXJvJiwgY29uc3QgRmlsbFNvdXJjZSYsIGNvbnN0IFN0cm9rZVNvdXJj
ZSYsIGNvbnN0IFNoYWRvd0JsdXJVc2FnZSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjYWlyb19zY2Fs
ZWRfZm9udF90KiwgZG91YmxlLCBjb25zdCBWZWN0b3I8Y2Fpcm9fZ2x5cGhfdD4mLCBmbG9hdCwg
VGV4dERyYXdpbmdNb2RlRmxhZ3MsIGZsb2F0LCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBDb2xv
ciYsIEdyYXBoaWNzQ29udGV4dCYpOwordm9pZCBkcmF3R2x5cGhzKFBsYXRmb3JtQ29udGV4dENh
aXJvJiwgY29uc3QgRmlsbFNvdXJjZSYsIGNvbnN0IFN0cm9rZVNvdXJjZSYsIGNvbnN0IFNoYWRv
d1N0YXRlJiwgY29uc3QgRmxvYXRQb2ludCYsIGNhaXJvX3NjYWxlZF9mb250X3QqLCBkb3VibGUs
IGNvbnN0IFZlY3RvcjxjYWlyb19nbHlwaF90PiYsIGZsb2F0LCBUZXh0RHJhd2luZ01vZGVGbGFn
cywgZmxvYXQsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IENvbG9yJiwgR3JhcGhpY3NDb250ZXh0
Jik7CiAKLXZvaWQgZHJhd05hdGl2ZUltYWdlKFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY2Fpcm9f
c3VyZmFjZV90KiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgQ29tcG9zaXRl
T3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbiwgR3JhcGhpY3NDb250ZXh0Jik7
Cit2b2lkIGRyYXdOYXRpdmVJbWFnZShQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNhaXJvX3N1cmZh
Y2VfdCosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIENvbXBvc2l0ZU9wZXJh
dG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50YXRpb24sIGNvbnN0IFNoYWRvd1N0YXRlJiwgR3Jh
cGhpY3NDb250ZXh0Jik7CiB2b2lkIGRyYXdQYXR0ZXJuKFBsYXRmb3JtQ29udGV4dENhaXJvJiwg
Y2Fpcm9fc3VyZmFjZV90KiwgY29uc3QgSW50U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IEZsb2F0UmVjdCYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBD
b21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlKTsKIAogdm9pZCBkcmF3UmVjdChQbGF0Zm9ybUNv
bnRleHRDYWlybyYsIGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0LCBjb25zdCBDb2xvciYsIFN0cm9r
ZVN0eWxlLCBjb25zdCBDb2xvciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAKaW5kZXggNTFjY2U1OWRlMmNmM2Q5NDcyYWE1
ZjRjNTM4M2I4ZThhMjM3OGFjZC4uZWYyMWViN2FiNDc1MzMzM2M3MmZhNzkwN2M4ZDU3MDBmYmQz
ZTc1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Rm9udENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9Gb250Q2Fpcm8uY3BwCkBAIC03Myw3ICs3Myw3IEBAIHZvaWQgRm9udENhc2NhZGU6OmRyYXdH
bHlwaHMoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGb250JiBmb250LCBjb25zdCBH
CiAgICAgQVNTRVJUKGNvbnRleHQuaGFzUGxhdGZvcm1Db250ZXh0KCkpOwogICAgIGF1dG8mIHN0
YXRlID0gY29udGV4dC5zdGF0ZSgpOwogICAgIENhaXJvOjpkcmF3R2x5cGhzKCpjb250ZXh0LnBs
YXRmb3JtQ29udGV4dCgpLCBDYWlybzo6RmlsbFNvdXJjZShzdGF0ZSksIENhaXJvOjpTdHJva2VT
b3VyY2Uoc3RhdGUpLAotICAgICAgICBDYWlybzo6U2hhZG93Qmx1clVzYWdlKHN0YXRlKSwgcG9p
bnQsIHNjYWxlZEZvbnQsIHN5bnRoZXRpY0JvbGRPZmZzZXQsIGdseXBocywgeE9mZnNldCwKKyAg
ICAgICAgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSwgcG9pbnQsIHNjYWxlZEZvbnQsIHN5bnRo
ZXRpY0JvbGRPZmZzZXQsIGdseXBocywgeE9mZnNldCwKICAgICAgICAgc3RhdGUudGV4dERyYXdp
bmdNb2RlLCBzdGF0ZS5zdHJva2VUaGlja25lc3MsIHN0YXRlLnNoYWRvd09mZnNldCwgc3RhdGUu
c2hhZG93Q29sb3IsIGNvbnRleHQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAK
aW5kZXggYWM2NDhiMTc2YTY5YzE5ZjM0ZmUxYjIxNjFmY2I5YzlkZTEyMmIyMC4uOWJkNTllYTlm
NTEyOTY3NWJkNmNmOTllYTZhNTBkM2FhZGRjOWU0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENh
aXJvLmNwcApAQCAtMTA5LDkgKzEwOSw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpyZXN0b3Jl
UGxhdGZvcm1TdGF0ZSgpCiB7CiAgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKICAg
ICBDYWlybzo6cmVzdG9yZSgqcGxhdGZvcm1Db250ZXh0KCkpOwotCi0gICAgQ2Fpcm86OlN0YXRl
OjpzZXRTaGFkb3dWYWx1ZXMoKnBsYXRmb3JtQ29udGV4dCgpLCBGbG9hdFNpemUgeyBtX3N0YXRl
LnNoYWRvd0JsdXIsIG1fc3RhdGUuc2hhZG93Qmx1ciB9LAotICAgICAgICBtX3N0YXRlLnNoYWRv
d09mZnNldCwgbV9zdGF0ZS5zaGFkb3dDb2xvciwgbV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNm
b3Jtcyk7CiB9CiAKIC8vIERyYXdzIGEgZmlsbGVkIHJlY3RhbmdsZSB3aXRoIGEgc3Ryb2tlZCBi
b3JkZXIuCkBAIC0xNDIsNyArMTM5LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdOYXRp
dmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYgaW1hZ2UsIGNvbnN0IEZsb2F0U2kKICAgICB9
CiAKICAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwotICAgIENhaXJvOjpkcmF3TmF0
aXZlSW1hZ2UoKnBsYXRmb3JtQ29udGV4dCgpLCBpbWFnZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1Jl
Y3QsIGNvbXBvc2l0ZU9wZXJhdG9yLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uLCAqdGhpcyk7Cisg
ICAgQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZSgqcGxhdGZvcm1Db250ZXh0KCksIGltYWdlLmdldCgp
LCBkZXN0UmVjdCwgc3JjUmVjdCwgY29tcG9zaXRlT3BlcmF0b3IsIGJsZW5kTW9kZSwgb3JpZW50
YXRpb24sIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSgpKSwgKnRoaXMpOwogfQogCiAvLyBUaGlz
IGlzIG9ubHkgdXNlZCB0byBkcmF3IGJvcmRlcnMsIHNvIHdlIHNob3VsZCBub3QgZHJhdyBzaGFk
b3dzLgpAQCAtMTkxLDcgKzE4OCw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0aChj
b25zdCBQYXRoJiBwYXRoKQogICAgIH0KIAogICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNvbnRleHQo
KSk7Ci0gICAgQ2Fpcm86OmZpbGxQYXRoKCpwbGF0Zm9ybUNvbnRleHQoKSwgcGF0aCwgQ2Fpcm86
OkZpbGxTb3VyY2Uoc3RhdGUoKSksICp0aGlzKTsKKyAgICBhdXRvJiBzdGF0ZSA9IHRoaXMtPnN0
YXRlKCk7CisgICAgQ2Fpcm86OmZpbGxQYXRoKCpwbGF0Zm9ybUNvbnRleHQoKSwgcGF0aCwgQ2Fp
cm86OkZpbGxTb3VyY2Uoc3RhdGUpLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpLCAqdGhpcyk7
CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzdHJva2VQYXRoKGNvbnN0IFBhdGgmIHBhdGgp
CkBAIC0yMDUsNyArMjAzLDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVBhdGgoY29u
c3QgUGF0aCYgcGF0aCkKICAgICB9CiAKICAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkp
OwotICAgIENhaXJvOjpzdHJva2VQYXRoKCpwbGF0Zm9ybUNvbnRleHQoKSwgcGF0aCwgQ2Fpcm86
OlN0cm9rZVNvdXJjZShzdGF0ZSgpKSwgKnRoaXMpOworICAgIGF1dG8mIHN0YXRlID0gdGhpcy0+
c3RhdGUoKTsKKyAgICBDYWlybzo6c3Ryb2tlUGF0aCgqcGxhdGZvcm1Db250ZXh0KCksIHBhdGgs
IENhaXJvOjpTdHJva2VTb3VyY2Uoc3RhdGUpLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpLCAq
dGhpcyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJl
Y3QmIHJlY3QpCkBAIC0yMTksNyArMjE4LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICB9CiAKICAgICBBU1NFUlQoaGFzUGxhdGZv
cm1Db250ZXh0KCkpOwotICAgIENhaXJvOjpmaWxsUmVjdCgqcGxhdGZvcm1Db250ZXh0KCksIHJl
Y3QsIENhaXJvOjpGaWxsU291cmNlKHN0YXRlKCkpLCAqdGhpcyk7CisgICAgYXV0byYgc3RhdGUg
PSB0aGlzLT5zdGF0ZSgpOworICAgIENhaXJvOjpmaWxsUmVjdCgqcGxhdGZvcm1Db250ZXh0KCks
IHJlY3QsIENhaXJvOjpGaWxsU291cmNlKHN0YXRlKSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRl
KSwgKnRoaXMpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxv
YXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IpCkBAIC0yMzMsNyArMjMzLDcgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3Qg
Q29sb3ImIGNvbG9yKQogICAgIH0KIAogICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNvbnRleHQoKSk7
Ci0gICAgQ2Fpcm86OmZpbGxSZWN0KCpwbGF0Zm9ybUNvbnRleHQoKSwgcmVjdCwgY29sb3IsIGhh
c1NoYWRvdygpLCAqdGhpcyk7CisgICAgQ2Fpcm86OmZpbGxSZWN0KCpwbGF0Zm9ybUNvbnRleHQo
KSwgcmVjdCwgY29sb3IsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSgpKSwgKnRoaXMpOwogfQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCkBAIC00
NTEsMzEgKzQ1MSwxNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0Q1RNKGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgdHJhbnNmb3JtKQogICAgIENhaXJvOjpTdGF0ZTo6c2V0Q1RNKCpwbGF0Zm9y
bUNvbnRleHQoKSwgdHJhbnNmb3JtKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBs
YXRmb3JtU2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBmbG9hdCBibHVyLCBjb25zdCBD
b2xvciYgY29sb3IpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaGFkb3coY29u
c3QgRmxvYXRTaXplJiBvZmZzZXQsIGZsb2F0LCBjb25zdCBDb2xvciYpCiB7Ci0gICAgaWYgKHBh
aW50aW5nRGlzYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgRmxvYXRTaXplIGFkanVz
dGVkT2Zmc2V0ID0gb2Zmc2V0OwogICAgIGlmIChtX3N0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zv
cm1zKSB7CiAgICAgICAgIC8vIE1lYW5pbmcgdGhhdCB0aGlzIGdyYXBoaWNzIGNvbnRleHQgaXMg
YXNzb2NpYXRlZCB3aXRoIGEgQ2FudmFzUmVuZGVyaW5nQ29udGV4dAogICAgICAgICAvLyBXZSBm
bGlwIHRoZSBoZWlnaHQgc2luY2UgQ0cgYW5kIEhUTUw1IENhbnZhcyBoYXZlIG9wcG9zaXRlIFkg
YXhpcwotICAgICAgICBhZGp1c3RlZE9mZnNldC5zZXRIZWlnaHQoLW9mZnNldC5oZWlnaHQoKSk7
Ci0gICAgICAgIG1fc3RhdGUuc2hhZG93T2Zmc2V0ID0gYWRqdXN0ZWRPZmZzZXQ7CisgICAgICAg
IG1fc3RhdGUuc2hhZG93T2Zmc2V0ID0geyBvZmZzZXQud2lkdGgoKSwgLW9mZnNldC5oZWlnaHQo
KSB9OwogICAgIH0KLQotICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNvbnRleHQoKSk7Ci0gICAgQ2Fp
cm86OlN0YXRlOjpzZXRTaGFkb3dWYWx1ZXMoKnBsYXRmb3JtQ29udGV4dCgpLCBGbG9hdFNpemUg
eyBibHVyLCBibHVyIH0sCi0gICAgICAgIGFkanVzdGVkT2Zmc2V0LCBjb2xvciwgbV9zdGF0ZS5z
aGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGVh
clBsYXRmb3JtU2hhZG93KCkKIHsKLSAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwotICAgIENhaXJv
OjpTdGF0ZTo6Y2xlYXJTaGFkb3coKnBsYXRmb3JtQ29udGV4dCgpKTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmJlZ2luUGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcihmbG9hdCBvcGFjaXR5
KQpAQCAtNTI2LDcgKzUxMiw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzdHJva2VSZWN0KGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCwgZmxvYXQgbGluZVdpZHRoKQogICAgIH0KIAogICAgIEFTU0VS
VChoYXNQbGF0Zm9ybUNvbnRleHQoKSk7Ci0gICAgQ2Fpcm86OnN0cm9rZVJlY3QoKnBsYXRmb3Jt
Q29udGV4dCgpLCByZWN0LCBsaW5lV2lkdGgsIENhaXJvOjpTdHJva2VTb3VyY2Uoc3RhdGUoKSks
ICp0aGlzKTsKKyAgICBhdXRvJiBzdGF0ZSA9IHRoaXMtPnN0YXRlKCk7CisgICAgQ2Fpcm86OnN0
cm9rZVJlY3QoKnBsYXRmb3JtQ29udGV4dCgpLCByZWN0LCBsaW5lV2lkdGgsIENhaXJvOjpTdHJv
a2VTb3VyY2Uoc3RhdGUpLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpLCAqdGhpcyk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRMaW5lQ2FwKExpbmVDYXAgbGluZUNhcCkKQEAgLTY2
Nyw3ICs2NTQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1GaWxsUm91bmRlZFJl
Y3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcmVjdCwgY29ucwogICAgICAgICByZXR1cm47CiAK
ICAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwotICAgIENhaXJvOjpmaWxsUm91bmRl
ZFJlY3QoKnBsYXRmb3JtQ29udGV4dCgpLCByZWN0LCBjb2xvciwgaGFzU2hhZG93KCksICp0aGlz
KTsKKyAgICBDYWlybzo6ZmlsbFJvdW5kZWRSZWN0KCpwbGF0Zm9ybUNvbnRleHQoKSwgcmVjdCwg
Y29sb3IsIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSgpKSwgKnRoaXMpOwogfQogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0JiBy
ZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByb3VuZGVkSG9sZVJlY3QsIGNvbnN0IENvbG9y
JiBjb2xvcikKQEAgLTY4Miw3ICs2NjksNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJl
Y3RXaXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdAogCiAg
ICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKICAgICBhdXRvJiBzdGF0ZSA9IHRoaXMt
PnN0YXRlKCk7Ci0gICAgQ2Fpcm86OmZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKCpwbGF0Zm9ybUNv
bnRleHQoKSwgcmVjdCwgcm91bmRlZEhvbGVSZWN0LCBDYWlybzo6RmlsbFNvdXJjZShzdGF0ZSks
IENhaXJvOjpTaGFkb3dCbHVyVXNhZ2Uoc3RhdGUpLCAqdGhpcyk7CisgICAgQ2Fpcm86OmZpbGxS
ZWN0V2l0aFJvdW5kZWRIb2xlKCpwbGF0Zm9ybUNvbnRleHQoKSwgcmVjdCwgcm91bmRlZEhvbGVS
ZWN0LCBDYWlybzo6RmlsbFNvdXJjZShzdGF0ZSksIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSks
ICp0aGlzKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKEltYWdlJiBp
bWFnZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVj
dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBv
aW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciBj
b21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4
dENhaXJvLmNwcAppbmRleCA2YTNjYzc1OGY3NmZmNjk1ZjU2OTliODgxZjljYjg4NjdkZDY0ZjU5
Li4wN2Y4Njg2ZDNhZTA5NWQ0OGQ3OGMxNTYxZjhhNzJiZGMyYzk1YTFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWly
by5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZv
cm1Db250ZXh0Q2Fpcm8uY3BwCkBAIC0xNTcsNyArMTU3LDcgQEAgc3RhdGljIHZvaWQgZHJhd1Bh
dHRlcm5Ub0NhaXJvQ29udGV4dChjYWlyb190KiBjciwgY2Fpcm9fcGF0dGVybl90KiBwYXR0ZXJu
LCBjb24KICAgICAgICAgY2Fpcm9fZmlsbChjcik7CiB9CiAKLXZvaWQgUGxhdGZvcm1Db250ZXh0
Q2Fpcm86OmRyYXdTdXJmYWNlVG9Db250ZXh0KGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgY29u
c3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBvcmlnaW5hbFNyY1JlY3Qs
IEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKK3ZvaWQgUGxhdGZvcm1Db250ZXh0Q2Fpcm86OmRy
YXdTdXJmYWNlVG9Db250ZXh0KGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBvcmlnaW5hbFNyY1JlY3QsIGNvbnN0IENh
aXJvOjpTaGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUsIEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkK
IHsKICAgICAvLyBBdm9pZCBpbnZhbGlkIGNhaXJvIG1hdHJpeCB3aXRoIHNtYWxsIHZhbHVlcy4K
ICAgICBpZiAoc3RkOjpmYWJzKGRlc3RSZWN0LndpZHRoKCkpIDwgMC41ZiB8fCBzdGQ6OmZhYnMo
ZGVzdFJlY3QuaGVpZ2h0KCkpIDwgMC41ZikKQEAgLTIxOCw3ICsyMTgsOCBAQCB2b2lkIFBsYXRm
b3JtQ29udGV4dENhaXJvOjpkcmF3U3VyZmFjZVRvQ29udGV4dChjYWlyb19zdXJmYWNlX3QqIHN1
cmZhY2UsIGNvbnN0CiAgICAgY2Fpcm9fbWF0cml4X3QgbWF0cml4ID0geyBzY2FsZVgsIDAsIDAs
IHNjYWxlWSwgbGVmdFBhZGRpbmcsIHRvcFBhZGRpbmcgfTsKICAgICBjYWlyb19wYXR0ZXJuX3Nl
dF9tYXRyaXgocGF0dGVybi5nZXQoKSwgJm1hdHJpeCk7CiAKLSAgICBTaGFkb3dCbHVyJiBzaGFk
b3cgPSBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpLT5zaGFkb3dCbHVyKCk7CisgICAgU2hhZG93
Qmx1ciBzaGFkb3coRmxvYXRTaXplIHsgc2hhZG93U3RhdGUuYmx1ciwgc2hhZG93U3RhdGUuYmx1
ciB9LAorICAgICAgICBzaGFkb3dTdGF0ZS5vZmZzZXQsIHNoYWRvd1N0YXRlLmNvbG9yLCBzaGFk
b3dTdGF0ZS5pZ25vcmVUcmFuc2Zvcm1zKTsKICAgICBpZiAoc2hhZG93LnR5cGUoKSAhPSBTaGFk
b3dCbHVyOjpOb1NoYWRvdykgewogICAgICAgICBpZiAoR3JhcGhpY3NDb250ZXh0KiBzaGFkb3dD
b250ZXh0ID0gc2hhZG93LmJlZ2luU2hhZG93TGF5ZXIoY29udGV4dCwgZGVzdFJlY3QpKSB7CiAg
ICAgICAgICAgICBkcmF3UGF0dGVyblRvQ2Fpcm9Db250ZXh0KHNoYWRvd0NvbnRleHQtPnBsYXRm
b3JtQ29udGV4dCgpLT5jcigpLCBwYXR0ZXJuLmdldCgpLCBkZXN0UmVjdCwgMSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRl
eHRDYWlyby5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZv
cm1Db250ZXh0Q2Fpcm8uaAppbmRleCAxOGRmYjUyYTAxZTg1N2U1ZTQyYWZlOTczZmM0MTZmY2Jl
NDc1MjE4Li45MTgzNjI2ZDllNTQ4NDM2YzlmMjM3YzVmZjJjMWM1NzE3OGVlM2NmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRl
eHRDYWlyby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1Bs
YXRmb3JtQ29udGV4dENhaXJvLmgKQEAgLTQwLDYgKzQwLDcgQEAgc3RydWN0IEdyYXBoaWNzQ29u
dGV4dFN0YXRlOwogbmFtZXNwYWNlIENhaXJvIHsKIHN0cnVjdCBGaWxsU291cmNlOwogc3RydWN0
IFN0cm9rZVNvdXJjZTsKK3N0cnVjdCBTaGFkb3dTdGF0ZTsKIH0KIAogLy8gTXVjaCBsaWtlIFBs
YXRmb3JtQ29udGV4dFNraWEgaW4gdGhlIFNraWEgcG9ydCwgdGhpcyBjbGFzcyBob2xkcyBpbmZv
cm1hdGlvbiB0aGF0CkBAIC01OSw3ICs2MCw2IEBAIHB1YmxpYzoKICAgICBHcmFwaGljc0NvbnRl
eHRQbGF0Zm9ybVByaXZhdGUqIGdyYXBoaWNzQ29udGV4dFByaXZhdGUoKSB7IHJldHVybiBtX2dy
YXBoaWNzQ29udGV4dFByaXZhdGU7IH0KICAgICB2b2lkIHNldEdyYXBoaWNzQ29udGV4dFByaXZh
dGUoR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKiBncmFwaGljc0NvbnRleHRQcml2YXRl
KSB7IG1fZ3JhcGhpY3NDb250ZXh0UHJpdmF0ZSA9IGdyYXBoaWNzQ29udGV4dFByaXZhdGU7IH0K
IAotICAgIFNoYWRvd0JsdXImIHNoYWRvd0JsdXIoKSB7IHJldHVybiBtX3NoYWRvd0JsdXI7IH0K
ICAgICBWZWN0b3I8ZmxvYXQ+JiBsYXllcnMoKSB7IHJldHVybiBtX2xheWVyczsgfQogCiAgICAg
dm9pZCBzYXZlKCk7CkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICBmbG9hdCBnbG9iYWxB
bHBoYSgpIGNvbnN0OwogCiAgICAgdm9pZCBwdXNoSW1hZ2VNYXNrKGNhaXJvX3N1cmZhY2VfdCos
IGNvbnN0IEZsb2F0UmVjdCYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd1N1cmZhY2VU
b0NvbnRleHQoY2Fpcm9fc3VyZmFjZV90KiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBHcmFwaGljc0NvbnRleHQmKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGRyYXdTdXJmYWNlVG9Db250ZXh0KGNhaXJvX3N1cmZhY2VfdCosIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQ2Fpcm86
OlNoYWRvd1N0YXRlJiwgR3JhcGhpY3NDb250ZXh0Jik7CiAKICAgICB2b2lkIHNldEltYWdlSW50
ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvblF1YWxpdHkpOwogICAgIEludGVycG9sYXRp
b25RdWFsaXR5IGltYWdlSW50ZXJwb2xhdGlvblF1YWxpdHkoKSBjb25zdDsKQEAgLTkzLDkgKzkz
LDYgQEAgcHJpdmF0ZToKICAgICBTdGF0ZSogbV9zdGF0ZTsKICAgICBXVEY6OlZlY3RvcjxTdGF0
ZT4gbV9zdGF0ZVN0YWNrOwogCi0gICAgLy8gR3JhcGhpY3NDb250ZXh0IGlzIHJlc3BvbnNpYmxl
IGZvciBtYW5hZ2luZyB0aGUgc3RhdGUgb2YgdGhlIFNoYWRvd0JsdXIsCi0gICAgLy8gc28gaXQg
ZG9lcyBub3QgbmVlZCB0byBiZSBvbiB0aGUgc3RhdGUgc3RhY2suCi0gICAgU2hhZG93Qmx1ciBt
X3NoYWRvd0JsdXI7CiAgICAgLy8gVHJhbnNwYXJlbmN5IGxheWVycy4KICAgICBWZWN0b3I8Zmxv
YXQ+IG1fbGF5ZXJzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91
bmRhdGlvbi5jcHAKaW5kZXggYjljZWViYzE3NWVhYzY0YzQzNGEwOTNlNGQwZTYzNTY2ZDQyMzZl
MC4uZGQ4ZDEyMzljNjc2NzcxYjA4M2I3MTQyOGU3YTczMzgzNmE3NjdlNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL01lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhRm91bmRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbi5jcHAKQEAgLTM0LDYgKzM0LDcg
QEAKICNpbmNsdWRlICJIb3N0V2luZG93LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIK
ICNpZiBVU0UoQ0FJUk8pCisjaW5jbHVkZSAiQ2Fpcm9PcGVyYXRpb25zLmgiCiAjaW5jbHVkZSAi
UGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCIKICNpbmNsdWRlIDxjYWlyby5oPgogI2VuZGlmCkBAIC0y
OTczLDcgKzI5NzQsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6
RGlyZWN0M0RQcmVzZW50ZXI6OnBhaW50Q3VycmVudEZyYW1lKFdlYgogICAgICAgICBGbG9hdFJl
Y3Qgc3JjUmVjdCgwLCAwLCB3aWR0aCwgaGVpZ2h0KTsKICAgICAgICAgaWYgKGltYWdlKSB7CiAg
ICAgICAgICAgICBXZWJDb3JlOjpQbGF0Zm9ybUNvbnRleHRDYWlybyogY3R4dCA9IGNvbnRleHQu
cGxhdGZvcm1Db250ZXh0KCk7Ci0gICAgICAgICAgICBjdHh0LT5kcmF3U3VyZmFjZVRvQ29udGV4
dChpbWFnZSwgZGVzdFJlY3QsIHNyY1JlY3QsIGNvbnRleHQpOworICAgICAgICAgICAgY3R4dC0+
ZHJhd1N1cmZhY2VUb0NvbnRleHQoaW1hZ2UsIGRlc3RSZWN0LCBzcmNSZWN0LCBDYWlybzo6U2hh
ZG93U3RhdGUoY29udGV4dC5zdGF0ZSgpKSwgY29udGV4dCk7CiAgICAgICAgICAgICBjYWlyb19z
dXJmYWNlX2Rlc3Ryb3koaW1hZ2UpOwogICAgICAgICB9CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwCmluZGV4IGIyMzcz
OWU1NTA5NTNjMGM5ZWIyMWUxZDJkOTE4NzkzN2VkYmNjOWYuLmFjYmQyMGRkNjRhNzI4Yzk0ZmY1
MWNjOGY3MDg4OTEwZDU2Mzg1ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2Nh
aXJvL1NoYXJlYWJsZUJpdG1hcENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9j
YWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRl
ICJTaGFyZWFibGVCaXRtYXAuaCIKIAogI2luY2x1ZGUgPFdlYkNvcmUvQml0bWFwSW1hZ2UuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL0NhaXJvT3BlcmF0aW9ucy5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
Q2Fpcm9VdGlsaXRpZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaD4KQEAgLTc0LDcgKzc1LDcg
QEAgdm9pZCBTaGFyZWFibGVCaXRtYXA6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
ZmxvYXQgc2NhbGVGYWN0b3IsIGNvbnN0IEkKICAgICBGbG9hdFJlY3QgZGVzdFJlY3QoZHN0UG9p
bnQsIHNyY1JlY3Quc2l6ZSgpKTsKICAgICBGbG9hdFJlY3Qgc3JjUmVjdFNjYWxlZChzcmNSZWN0
KTsKICAgICBzcmNSZWN0U2NhbGVkLnNjYWxlKHNjYWxlRmFjdG9yKTsKLSAgICBjb250ZXh0LnBs
YXRmb3JtQ29udGV4dCgpLT5kcmF3U3VyZmFjZVRvQ29udGV4dChzdXJmYWNlLmdldCgpLCBkZXN0
UmVjdCwgc3JjUmVjdFNjYWxlZCwgY29udGV4dCk7CisgICAgY29udGV4dC5wbGF0Zm9ybUNvbnRl
eHQoKS0+ZHJhd1N1cmZhY2VUb0NvbnRleHQoc3VyZmFjZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1Jl
Y3RTY2FsZWQsIENhaXJvOjpTaGFkb3dTdGF0ZShjb250ZXh0LnN0YXRlKCkpLCBjb250ZXh0KTsK
IH0KIAogUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVDYWly
b1N1cmZhY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L2d0ay9XZWJEcmFnQ2xpZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHAKaW5kZXggMDJlNjY4N2I0
ZjU5ZDk4Y2Y2NjQyYzA2ZWQ4YTA4NTdhMTQyZmNhOS4uYjZjZDFiZmU0NzA2MzgwNDg5MDg1Nzhj
ODBlMDhjMWU4Zjg3MzdjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L2d0ay9XZWJEcmFnQ2xpZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwCkBAIC0z
Myw2ICszMyw3IEBACiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94
eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViU2VsZWN0aW9uRGF0YS5oIgorI2luY2x1ZGUgPFdl
YkNvcmUvQ2Fpcm9PcGVyYXRpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EYXRhVHJhbnNmZXIu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0RyYWdEYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFw
aGljc0NvbnRleHQuaD4KQEAgLTUzLDcgKzU0LDcgQEAgc3RhdGljIFJlZlB0cjxTaGFyZWFibGVC
aXRtYXA+IGNvbnZlcnRDYWlyb1N1cmZhY2VUb1NoYXJlYWJsZUJpdG1hcChjYWlyb19zdXJmYWMK
ICAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNy
ZWF0ZVNoYXJlYWJsZShpbWFnZVNpemUsIHsgfSk7CiAgICAgYXV0byBncmFwaGljc0NvbnRleHQg
PSBiaXRtYXAtPmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwogCi0gICAgZ3JhcGhpY3NDb250ZXh0
LT5wbGF0Zm9ybUNvbnRleHQoKS0+ZHJhd1N1cmZhY2VUb0NvbnRleHQoc3VyZmFjZSwgSW50UmVj
dChJbnRQb2ludCgpLCBpbWFnZVNpemUpLCBJbnRSZWN0KEludFBvaW50KCksIGltYWdlU2l6ZSks
ICpncmFwaGljc0NvbnRleHQpOworICAgIGdyYXBoaWNzQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0
KCktPmRyYXdTdXJmYWNlVG9Db250ZXh0KHN1cmZhY2UsIEludFJlY3QoSW50UG9pbnQoKSwgaW1h
Z2VTaXplKSwgSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZVNpemUpLCBDYWlybzo6U2hhZG93U3Rh
dGUoZ3JhcGhpY3NDb250ZXh0LT5zdGF0ZSgpKSwgKmdyYXBoaWNzQ29udGV4dCk7CiAgICAgcmV0
dXJuIGJpdG1hcDsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>331475</attachid>
            <date>2018-01-17 01:19:38 -0800</date>
            <delta_ts>2018-01-17 01:19:38 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-181720-20180117101936.patch</filename>
            <type>text/plain</type>
            <size>40053</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI3MDQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDZkYTMzZDQyMmE3ZjJk
ZTBiNDZiYzNjNTM5OTE5NDhkNzg2ZjJiNS4uMDUzNTQxNTU4ZDJkMjI3NzBjNmU1NDE3MDM0ZTMy
MzA3MjE1N2FiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc0IEBACisyMDE4LTAxLTE3ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbQ2Fpcm9dIFVzZSBv
bmUtdGltZSBTaGFkb3dCbHVyIG9iamVjdHMgd2hlbiBwZXJmb3JtaW5nIHNoYWRvd2luZworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgxNzIwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgQ2FybG9zIEdhcmNpYSBDYW1wb3MuCisKKyAgICAgICAgRG9uJ3Qg
bWFpbnRhaW4gYSBTaGFkb3dCbHVyIG9iamVjdCBpbiB0aGUgUGxhdGZvcm1Db250ZXh0Q2Fpcm8g
Y2xhc3MuCisgICAgICAgIEluc3RlYWQsIHVzZSB0ZW1wb3JhcnkgU2hhZG93Qmx1ciBvYmplY3Rz
IHdoZW5ldmVyIHNoYWRvd2luZyBpcyBuZWVkZWQsCisgICAgICAgIHByb3ZpZGluZyBhbGwgdGhl
IHNoYWRvdyBzdGF0ZSBpbmZvcm1hdGlvbiB0byBpdCBhbmQgZHJhd2luZyBzaGFkb3cgaW50bwor
ICAgICAgICB0aGUgZ2l2ZW4gR3JhcGhpY3NDb250ZXh0IG9iamVjdC4KKworICAgICAgICBTaGFk
b3dCbHVyIGNvbnN0cnVjdG9ycyBhcmUgY2xlYW5lZCB1cC4gVGhlICdzaGFkb3dzIGlnbm9yZWQn
IGFyZ3VtZW50CisgICAgICAgIGNhbiBub3cgYWxzbyBiZSBwcm92aWRlZCB0byB0aGUgdmFyaWFu
dCB0aGF0IGFjY2VwdHMgZXhwbGljaXQgc2hhZG93CisgICAgICAgIGF0dHJpYnV0ZXMsIGJ1dCB0
aGUgYXJndW1lbnQgaXMgZmFsc2UgYnkgZGVmYXVsdC4KKworICAgICAgICBJbiBDYWlyb09wZXJh
dGlvbnMsIHRoZSBTaGFkb3dCbHVyVXNhZ2UgZnVuY3Rpb25hbGl0eSBpcyByb2xsZWQgaW50byB0
aGUKKyAgICAgICAgbmV3IFNoYWRvd1N0YXRlIGNsYXNzLiBTaGFkb3dTdGF0ZSBwYXJhbWV0ZXIg
aXMgbm93IHVzZWQgZm9yIG9wZXJhdGlvbnMKKyAgICAgICAgdGhhdCBtaWdodCBuZWVkIHRvIHBl
cmZvcm0gc2hhZG93IHBhaW50aW5nLiBDYWxsIHNpdGVzIGFyZSBtb2RpZmllZAorICAgICAgICBh
Y2NvcmRpbmdseS4KKworICAgICAgICBDYWlybzo6U3RhdGU6OnNldFNoYWRvd1ZhbHVlcygpIGFu
ZCBDYWlybzo6U3RhdGU6OmNsZWFyU2hhZG93KCkgYXJlCisgICAgICAgIHJlbW92ZWQsIHNpbmNl
IHRoZSBTaGFkb3dCbHVyIG9iamVjdCB0aGF0IHdhcyBtb2RpZmllZCB0aHJvdWdoIHRob3NlIGlz
CisgICAgICAgIGJlaW5nIHJlbW92ZWQgZnJvbSB0aGUgUGxhdGZvcm1Db250ZXh0Q2Fpcm8gY2xh
c3MuIFdlIHN0aWxsIGhhdmUgdG8gZmxpcAorICAgICAgICB0aGUgWS1heGlzIG9mIHRoZSBzaGFk
b3cgb2Zmc2V0IGluIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaGFkb3coKQorICAgICAg
ICB3aGVuIHNoYWRvd3MgYXJlIGlnbm9yaW5nIHRyYW5zZm9ybWF0aW9ucy4KKworICAgICAgICBO
byBuZXcgdGVzdHMgLS0gbm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dCbHVy
OjpTaGFkb3dCbHVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpkcmF3UGF0aFNoYWRvdyk6CisgICAgICAgIChXZWJD
b3JlOjpDYWlybzo6ZHJhd0dseXBoc1NoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6
U2hhZG93U3RhdGU6OlNoYWRvd1N0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpTaGFk
b3dTdGF0ZTo6aXNWaXNpYmxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpTaGFk
b3dTdGF0ZTo6aXNSZXF1aXJlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6Zmls
bFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86OmZpbGxSb3VuZGVkUmVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpDYWlybzo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q2Fpcm86OmZpbGxQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpzdHJv
a2VSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpzdHJva2VQYXRoKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhaXJvOjpkcmF3R2x5cGhzKToKKyAgICAgICAgKFdlYkNvcmU6OkNhaXJvOjpk
cmF3TmF0aXZlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86OlN0YXRlOjpzZXRTaGFk
b3dWYWx1ZXMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86OlN0YXRlOjpjbGVh
clNoYWRvdyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDYWlybzo6U2hhZG93Qmx1clVz
YWdlOjpTaGFkb3dCbHVyVXNhZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2Fpcm86
OlNoYWRvd0JsdXJVc2FnZTo6cmVxdWlyZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5oOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250
Q2FzY2FkZTo6ZHJhd0dseXBocyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
R3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpyZXN0b3JlUGxhdGZvcm1TdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQ6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OmZpbGxQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c3Ryb2tl
UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaGFkb3cpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGVhclBsYXRmb3JtU2hhZG93KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRmlsbFJvdW5kZWRSZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ29udGV4dENhaXJvOjpkcmF3U3VyZmFjZVRv
Q29udGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250
ZXh0Q2Fpcm8uaDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ29udGV4dENhaXJvOjpzaGFk
b3dCbHVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFGb3VuZGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZU1lZGlhRm91bmRhdGlvbjo6RGlyZWN0M0RQcmVzZW50ZXI6OnBhaW50Q3Vy
cmVudEZyYW1lKToKKwogMjAxOC0wMS0xNiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFw
cGxlLmNvbT4KIAogICAgICAgICBDYW4ndCBzY3JvbGwgaWZyYW1lIGFmdGVyIHRvZ2dsaW5nIGl0
IHRvIGRpc3BsYXk6bm9uZSBhbmQgYmFjawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBiY2JkMWYwYzcyOTI1YTQ3NmMw
MjBhNTUxZGZiZTA2NjQyYzhjNGM3Li41NmM4ZTRjZDA4NzQwMWEwMTMyMmM1OGUyZGQ3NGZiZTNk
NmU0ZWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE4LTAxLTE3ICBaYW4gRG9iZXJz
ZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbQ2Fpcm9dIFVzZSBvbmUtdGlt
ZSBTaGFkb3dCbHVyIG9iamVjdHMgd2hlbiBwZXJmb3JtaW5nIHNoYWRvd2luZworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgxNzIwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgQ2FybG9zIEdhcmNpYSBDYW1wb3MuCisKKyAgICAgICAgKiBTaGFyZWQvY2Fp
cm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVC
aXRtYXA6OnBhaW50KToKKyAgICAgICAgQWRqdXN0IHRoZSBQbGF0Zm9ybUNvbnRleHRDYWlybzo6
ZHJhd1N1cmZhY2VUb0NvbnRleHQoKSBpbnZvY2F0aW9uLgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0
Ojpjb252ZXJ0Q2Fpcm9TdXJmYWNlVG9TaGFyZWFibGVCaXRtYXApOiBEaXR0by4KKwogMjAxOC0w
MS0xNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAg
ICAgIE1lcmdlIHN5bmMgYW5kIGFzeW5jIGNvZGUgcGF0aHMgZm9yIGdldHRpbmcgY29udGV4dCBt
ZW51cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93
Qmx1ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNw
cAppbmRleCBjNmJhZjUyMzFiZmQxZWIzMmRlMjcxYzJhZjZiNWQ1ZWU4OWUwMzY0Li4xOTBmNmMw
Yzk5ZDczNmZmMTQ0OGRhNWU3MGVlNDZhYTQwYWUzNWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcApAQCAtMTY5LDEyICsxNjksMTMgQEAg
c3RhdGljIGZsb2F0IHJhZGl1c1RvTGVnYWN5UmFkaXVzKGZsb2F0IHJhZGl1cykKIH0KICNlbmRp
ZgogCi1TaGFkb3dCbHVyOjpTaGFkb3dCbHVyKGNvbnN0IEZsb2F0U2l6ZSYgcmFkaXVzLCBjb25z
dCBGbG9hdFNpemUmIG9mZnNldCwgY29uc3QgQ29sb3ImIGNvbG9yKQorU2hhZG93Qmx1cjo6U2hh
ZG93Qmx1cigpID0gZGVmYXVsdDsKKworU2hhZG93Qmx1cjo6U2hhZG93Qmx1cihjb25zdCBGbG9h
dFNpemUmIHJhZGl1cywgY29uc3QgRmxvYXRTaXplJiBvZmZzZXQsIGNvbnN0IENvbG9yJiBjb2xv
ciwgYm9vbCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcykKICAgICA6IG1fY29sb3IoY29sb3IpCiAg
ICAgLCBtX2JsdXJSYWRpdXMocmFkaXVzKQogICAgICwgbV9vZmZzZXQob2Zmc2V0KQotICAgICwg
bV9sYXllckltYWdlKDApCi0gICAgLCBtX3NoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKGZhbHNlKQor
ICAgICwgbV9zaGFkb3dzSWdub3JlVHJhbnNmb3JtcyhzaGFkb3dzSWdub3JlVHJhbnNmb3JtcykK
IHsKICAgICB1cGRhdGVTaGFkb3dCbHVyVmFsdWVzKCk7CiB9CkBAIC0xOTUsMTMgKzE5Niw2IEBA
IFNoYWRvd0JsdXI6OlNoYWRvd0JsdXIoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRl
KQogICAgIHVwZGF0ZVNoYWRvd0JsdXJWYWx1ZXMoKTsKIH0KIAotU2hhZG93Qmx1cjo6U2hhZG93
Qmx1cigpCi0gICAgOiBtX3R5cGUoTm9TaGFkb3cpCi0gICAgLCBtX2JsdXJSYWRpdXMoMCwgMCkK
LSAgICAsIG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoZmFsc2UpCi17Ci19Ci0KIHZvaWQgU2hh
ZG93Qmx1cjo6c2V0U2hhZG93VmFsdWVzKGNvbnN0IEZsb2F0U2l6ZSYgcmFkaXVzLCBjb25zdCBG
bG9hdFNpemUmIG9mZnNldCwgY29uc3QgQ29sb3ImIGNvbG9yLCBib29sIGlnbm9yZVRyYW5zZm9y
bXMpCiB7CiAgICAgbV9ibHVyUmFkaXVzID0gcmFkaXVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5oCmluZGV4IDM0ODY5NDk2YTk4Y2YwYWFiOWYyMzA2
MGZhMDJmMTQxOGZkY2NmNWIuLjFlMjViZmEyNTU1Y2Y1Yzc0NGUwZmJlMmUwMTg2Y2ZlMjQwMTA4
YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0Js
dXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmgK
QEAgLTUwLDkgKzUwLDkgQEAgcHVibGljOgogICAgICAgICBCbHVyU2hhZG93CiAgICAgfTsKIAot
ICAgIFNoYWRvd0JsdXIoY29uc3QgRmxvYXRTaXplJiByYWRpdXMsIGNvbnN0IEZsb2F0U2l6ZSYg
b2Zmc2V0LCBjb25zdCBDb2xvciYpOwotICAgIFNoYWRvd0JsdXIoY29uc3QgR3JhcGhpY3NDb250
ZXh0U3RhdGUmKTsKICAgICBTaGFkb3dCbHVyKCk7CisgICAgU2hhZG93Qmx1cihjb25zdCBGbG9h
dFNpemUmIHJhZGl1cywgY29uc3QgRmxvYXRTaXplJiBvZmZzZXQsIGNvbnN0IENvbG9yJiwgYm9v
bCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcyA9IGZhbHNlKTsKKyAgICBTaGFkb3dCbHVyKGNvbnN0
IEdyYXBoaWNzQ29udGV4dFN0YXRlJik7CiAKICAgICB2b2lkIHNldFNoYWRvd1ZhbHVlcyhjb25z
dCBGbG9hdFNpemUmLCBjb25zdCBGbG9hdFNpemUmICwgY29uc3QgQ29sb3ImLCBib29sIGlnbm9y
ZVRyYW5zZm9ybXMgPSBmYWxzZSk7CiAKQEAgLTEwMCwyMCArMTAwLDIwIEBAIHByaXZhdGU6CiAg
ICAgSW50U2l6ZSBibHVycmVkRWRnZVNpemUoKSBjb25zdDsKICAgICAKICAgICAKLSAgICBTaGFk
b3dUeXBlIG1fdHlwZTsKKyAgICBTaGFkb3dUeXBlIG1fdHlwZSB7IE5vU2hhZG93IH07CiAKICAg
ICBDb2xvciBtX2NvbG9yOwogICAgIEZsb2F0U2l6ZSBtX2JsdXJSYWRpdXM7CiAgICAgRmxvYXRT
aXplIG1fb2Zmc2V0OwogCi0gICAgSW1hZ2VCdWZmZXIqIG1fbGF5ZXJJbWFnZTsgLy8gQnVmZmVy
IHRvIHdoZXJlIHRoZSB0ZW1wb3Jhcnkgc2hhZG93IHdpbGwgYmUgZHJhd24gdG8uCisgICAgSW1h
Z2VCdWZmZXIqIG1fbGF5ZXJJbWFnZSB7IG51bGxwdHIgfTsgLy8gQnVmZmVyIHRvIHdoZXJlIHRo
ZSB0ZW1wb3Jhcnkgc2hhZG93IHdpbGwgYmUgZHJhd24gdG8uCiAKICAgICBGbG9hdFJlY3QgbV9z
b3VyY2VSZWN0OyAvLyBTdWItcmVjdCBvZiBtX2xheWVySW1hZ2UgdGhhdCBjb250YWlucyB0aGUg
c2hhZG93IHBpeGVscy4KICAgICBGbG9hdFBvaW50IG1fbGF5ZXJPcmlnaW47IC8vIFRvcC1sZWZ0
IGNvcm5lciBvZiB0aGUgKHBvc3NpYmx5IGNsaXBwZWQpIGJvdW5kaW5nIHJlY3QgdG8gZHJhdyB0
aGUgc2hhZG93IHRvLgogICAgIEZsb2F0U2l6ZSBtX2xheWVyU2l6ZTsgLy8gU2l6ZSBvZiBtX2xh
eWVySW1hZ2UgcGl4ZWxzIHRoYXQgbmVlZCBibHVycmluZy4KICAgICBGbG9hdFNpemUgbV9sYXll
ckNvbnRleHRUcmFuc2xhdGlvbjsgLy8gVHJhbnNsYXRpb24gdG8gYXBwbHkgdG8gbV9sYXllckNv
bnRleHQgZm9yIHRoZSBzaGFkb3cgdG8gYmUgY29ycmVjdGx5IGNsaXBwZWQuCiAKLSAgICBib29s
IG1fc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7CisgICAgYm9vbCBtX3NoYWRvd3NJZ25vcmVUcmFu
c2Zvcm1zIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9u
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJh
dGlvbnMuY3BwCmluZGV4IGFiM2YyMzYxN2FmYTdjZTNjZWM1YWRhYTk2MGI2ZDhkNmMzMjk1YjQu
LmQ4OWExZDFjYzdjMTdiNWNhYjJlN2ZhOGExYmViNTZhZWQwYjY0NTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRp
b25zLmNwcApAQCAtNjYsOSArNjYsOSBAQCBlbnVtIFBhdGhEcmF3aW5nU3R5bGUgewogICAgIEZp
bGxBbmRTdHJva2UgPSBGaWxsICsgU3Ryb2tlCiB9OwogCi1zdGF0aWMgaW5saW5lIHZvaWQgZHJh
d1BhdGhTaGFkb3coUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3Qg
RmlsbFNvdXJjZSYgZmlsbFNvdXJjZSwgY29uc3QgU3Ryb2tlU291cmNlJiBzdHJva2VTb3VyY2Us
IEdyYXBoaWNzQ29udGV4dCYgdGFyZ2V0Q29udGV4dCwgUGF0aERyYXdpbmdTdHlsZSBkcmF3aW5n
U3R5bGUpCitzdGF0aWMgaW5saW5lIHZvaWQgZHJhd1BhdGhTaGFkb3coUGxhdGZvcm1Db250ZXh0
Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmlsbFNvdXJjZSYgZmlsbFNvdXJjZSwgY29u
c3QgU3Ryb2tlU291cmNlJiBzdHJva2VTb3VyY2UsIGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dT
dGF0ZSwgR3JhcGhpY3NDb250ZXh0JiB0YXJnZXRDb250ZXh0LCBQYXRoRHJhd2luZ1N0eWxlIGRy
YXdpbmdTdHlsZSkKIHsKLSAgICBTaGFkb3dCbHVyJiBzaGFkb3cgPSBwbGF0Zm9ybUNvbnRleHQu
c2hhZG93Qmx1cigpOworICAgIFNoYWRvd0JsdXIgc2hhZG93KHsgc2hhZG93U3RhdGUuYmx1ciwg
c2hhZG93U3RhdGUuYmx1ciB9LCBzaGFkb3dTdGF0ZS5vZmZzZXQsIHNoYWRvd1N0YXRlLmNvbG9y
LCBzaGFkb3dTdGF0ZS5pZ25vcmVUcmFuc2Zvcm1zKTsKICAgICBpZiAoc2hhZG93LnR5cGUoKSA9
PSBTaGFkb3dCbHVyOjpOb1NoYWRvdykKICAgICAgICAgcmV0dXJuOwogCkBAIC0xODIsMTQgKzE4
MiwxMyBAQCBzdGF0aWMgdm9pZCBkcmF3R2x5cGhzVG9Db250ZXh0KGNhaXJvX3QqIGNvbnRleHQs
IGNhaXJvX3NjYWxlZF9mb250X3QqIHNjYWxlZEZvbgogICAgIH0KIH0KIAotc3RhdGljIHZvaWQg
ZHJhd0dseXBoc1NoYWRvdyhQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBj
b25zdCBTaGFkb3dCbHVyVXNhZ2UmIHNoYWRvd0JsdXJVc2FnZSwgVGV4dERyYXdpbmdNb2RlRmxh
Z3MgdGV4dERyYXdpbmdNb2RlLCBjb25zdCBGbG9hdFNpemUmIHNoYWRvd09mZnNldCwgY29uc3Qg
Q29sb3ImIHNoYWRvd0NvbG9yLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgY2Fpcm9fc2NhbGVk
X2ZvbnRfdCogc2NhbGVkRm9udCwgZG91YmxlIHN5bnRoZXRpY0JvbGRPZmZzZXQsIGNvbnN0IFZl
Y3RvcjxjYWlyb19nbHlwaF90PiYgZ2x5cGhzLCBHcmFwaGljc0NvbnRleHQmIHRhcmdldENvbnRl
eHQpCitzdGF0aWMgdm9pZCBkcmF3R2x5cGhzU2hhZG93KFBsYXRmb3JtQ29udGV4dENhaXJvJiBw
bGF0Zm9ybUNvbnRleHQsIGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSwgVGV4dERyYXdp
bmdNb2RlRmxhZ3MgdGV4dERyYXdpbmdNb2RlLCBjb25zdCBGbG9hdFNpemUmIHNoYWRvd09mZnNl
dCwgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgY2Fp
cm9fc2NhbGVkX2ZvbnRfdCogc2NhbGVkRm9udCwgZG91YmxlIHN5bnRoZXRpY0JvbGRPZmZzZXQs
IGNvbnN0IFZlY3RvcjxjYWlyb19nbHlwaF90PiYgZ2x5cGhzLCBHcmFwaGljc0NvbnRleHQmIHRh
cmdldENvbnRleHQpCiB7Ci0gICAgU2hhZG93Qmx1ciYgc2hhZG93ID0gcGxhdGZvcm1Db250ZXh0
LnNoYWRvd0JsdXIoKTsKLQorICAgIFNoYWRvd0JsdXIgc2hhZG93KHsgc2hhZG93U3RhdGUuYmx1
ciwgc2hhZG93U3RhdGUuYmx1ciB9LCBzaGFkb3dTdGF0ZS5vZmZzZXQsIHNoYWRvd1N0YXRlLmNv
bG9yLCBzaGFkb3dTdGF0ZS5pZ25vcmVUcmFuc2Zvcm1zKTsKICAgICBpZiAoISh0ZXh0RHJhd2lu
Z01vZGUgJiBUZXh0TW9kZUZpbGwpIHx8IHNoYWRvdy50eXBlKCkgPT0gU2hhZG93Qmx1cjo6Tm9T
aGFkb3cpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghc2hhZG93Qmx1clVzYWdlLnJlcXVp
cmVkKHBsYXRmb3JtQ29udGV4dCkpIHsKKyAgICBpZiAoIXNoYWRvd1N0YXRlLmlzUmVxdWlyZWQo
cGxhdGZvcm1Db250ZXh0KSkgewogICAgICAgICAvLyBPcHRpbWl6ZSBub24tYmx1cnJ5IHNoYWRv
d3MsIGJ5IGp1c3QgZHJhd2luZyB0ZXh0IHdpdGhvdXQgdGhlIFNoYWRvd0JsdXIuCiAgICAgICAg
IGNhaXJvX3QqIGNvbnRleHQgPSBwbGF0Zm9ybUNvbnRleHQuY3IoKTsKICAgICAgICAgY2Fpcm9f
c2F2ZShjb250ZXh0KTsKQEAgLTM3NiwxNyArMzc1LDYgQEAgQWZmaW5lVHJhbnNmb3JtIGdldENU
TShQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0KQogICAgIHJldHVybiBBZmZp
bmVUcmFuc2Zvcm0obS54eCwgbS55eCwgbS54eSwgbS55eSwgbS54MCwgbS55MCk7CiB9CiAKLXZv
aWQgc2V0U2hhZG93VmFsdWVzKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQs
IGNvbnN0IEZsb2F0U2l6ZSYgcmFkaXVzLCBjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgY29uc3Qg
Q29sb3ImIGNvbG9yLCBib29sIGlnbm9yZVRyYW5zZm9ybXMpCi17Ci0gICAgLy8gQ2Fpcm8gZG9l
c24ndCBzdXBwb3J0IHNoYWRvd3MgbmF0aXZlbHksIHRoZXkgYXJlIGRyYXduIG1hbnVhbGx5IGlu
IHRoZSBkcmF3KiBmdW5jdGlvbnMgdXNpbmcgU2hhZG93Qmx1ci4KLSAgICBwbGF0Zm9ybUNvbnRl
eHQuc2hhZG93Qmx1cigpLnNldFNoYWRvd1ZhbHVlcyhyYWRpdXMsIG9mZnNldCwgY29sb3IsIGln
bm9yZVRyYW5zZm9ybXMpOwotfQotCi12b2lkIGNsZWFyU2hhZG93KFBsYXRmb3JtQ29udGV4dENh
aXJvJiBwbGF0Zm9ybUNvbnRleHQpCi17Ci0gICAgcGxhdGZvcm1Db250ZXh0LnNoYWRvd0JsdXIo
KS5jbGVhcigpOwotfQotCiBJbnRSZWN0IGdldENsaXBCb3VuZHMoUGxhdGZvcm1Db250ZXh0Q2Fp
cm8mIHBsYXRmb3JtQ29udGV4dCkKIHsKICAgICBkb3VibGUgeDEsIHgyLCB5MSwgeTI7CkBAIC00
MzksMzIgKzQyNyw2IEBAIGJvb2wgaXNBY2NlbGVyYXRlZENvbnRleHQoUGxhdGZvcm1Db250ZXh0
Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCkKIAogfSAvLyBuYW1lc3BhY2UgU3RhdGUKIAotU2hhZG93
Qmx1clVzYWdlOjpTaGFkb3dCbHVyVXNhZ2UoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0
YXRlKQotICAgIDogc2hhZG93Q29sb3Ioc3RhdGUuc2hhZG93Q29sb3IpCi0gICAgLCBzaGFkb3dC
bHVyKHN0YXRlLnNoYWRvd0JsdXIpCi0gICAgLCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcyhzdGF0
ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcykKLXsKLX0KLQotYm9vbCBTaGFkb3dCbHVyVXNhZ2U6
OnJlcXVpcmVkKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQpIGNvbnN0Ci17
Ci0gICAgLy8gV2UgY2FuJ3QgYXZvaWQgU2hhZG93Qmx1ciBpZiB0aGUgc2hhZG93IGhhcyBibHVy
LgotICAgIGlmIChzaGFkb3dDb2xvci5pc1Zpc2libGUoKSAmJiBzaGFkb3dCbHVyKQotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLQotICAgIC8vIFdlIGNhbiBhdm9pZCBTaGFkb3dCbHVyIGFuZCBvcHRp
bWl6ZSwgc2luY2Ugd2UncmUgbm90IGRyYXdpbmcgb24gYQotICAgIC8vIGNhbnZhcyBhbmQgYm94
IHNoYWRvd3MgYXJlIGFmZmVjdGVkIGJ5IHRoZSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXguCi0gICAg
aWYgKCFzaGFkb3dzSWdub3JlVHJhbnNmb3JtcykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgLy8gV2UgY2FuIGF2b2lkIFNoYWRvd0JsdXIsIHNpbmNlIHRoZXJlIGFyZSBubyB0cmFuc2Zv
cm1hdGlvbnMgdG8gYXBwbHkgdG8gdGhlIGNhbnZhcy4KLSAgICBpZiAoU3RhdGU6OmdldENUTShw
bGF0Zm9ybUNvbnRleHQpLmlzSWRlbnRpdHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgLy8gT3RoZXJ3aXNlLCBubyBjaGFuY2UgYXZvaWRpbmcgU2hhZG93Qmx1ci4KLSAgICByZXR1
cm4gdHJ1ZTsKLX0KLQogRmlsbFNvdXJjZTo6RmlsbFNvdXJjZShjb25zdCBHcmFwaGljc0NvbnRl
eHRTdGF0ZSYgc3RhdGUpCiB7CiAgICAgaWYgKHN0YXRlLmZpbGxQYXR0ZXJuKSB7CkBAIC00OTcs
NiArNDU5LDM4IEBAIFN0cm9rZVNvdXJjZTo6U3Ryb2tlU291cmNlKGNvbnN0IEdyYXBoaWNzQ29u
dGV4dFN0YXRlJiBzdGF0ZSkKICAgICAgICAgY29sb3IgPSBzdGF0ZS5zdHJva2VDb2xvcjsKIH0K
IAorU2hhZG93U3RhdGU6OlNoYWRvd1N0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBz
dGF0ZSkKKyAgICA6IG9mZnNldChzdGF0ZS5zaGFkb3dPZmZzZXQpCisgICAgLCBibHVyKHN0YXRl
LnNoYWRvd0JsdXIpCisgICAgLCBjb2xvcihzdGF0ZS5zaGFkb3dDb2xvcikKKyAgICAsIGlnbm9y
ZVRyYW5zZm9ybXMoc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpCit7Cit9CisKK2Jvb2wg
U2hhZG93U3RhdGU6OmlzVmlzaWJsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNvbG9yLmlzVmlz
aWJsZSgpICYmIChvZmZzZXQud2lkdGgoKSB8fCBvZmZzZXQuaGVpZ2h0KCkgfHwgYmx1cik7Cit9
CisKK2Jvb2wgU2hhZG93U3RhdGU6OmlzUmVxdWlyZWQoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBs
YXRmb3JtQ29udGV4dCkgY29uc3QKK3sKKyAgICAvLyBXZSBjYW4ndCBhdm9pZCBTaGFkb3dCbHVy
IGlmIHRoZSBzaGFkb3cgaGFzIGJsdXIuCisgICAgaWYgKGNvbG9yLmlzVmlzaWJsZSgpICYmIGJs
dXIpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gV2UgY2FuIGF2b2lkIFNoYWRvd0Js
dXIgYW5kIG9wdGltaXplLCBzaW5jZSB3ZSdyZSBub3QgZHJhd2luZyBvbiBhCisgICAgLy8gY2Fu
dmFzIGFuZCBib3ggc2hhZG93cyBhcmUgYWZmZWN0ZWQgYnkgdGhlIHRyYW5zZm9ybWF0aW9uIG1h
dHJpeC4KKyAgICBpZiAoIWlnbm9yZVRyYW5zZm9ybXMpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIC8vIFdlIGNhbiBhdm9pZCBTaGFkb3dCbHVyLCBzaW5jZSB0aGVyZSBhcmUgbm8gdHJh
bnNmb3JtYXRpb25zIHRvIGFwcGx5IHRvIHRoZSBjYW52YXMuCisgICAgaWYgKFN0YXRlOjpnZXRD
VE0ocGxhdGZvcm1Db250ZXh0KS5pc0lkZW50aXR5KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIC8vIE90aGVyd2lzZSwgbm8gY2hhbmNlIGF2b2lkaW5nIFNoYWRvd0JsdXIuCisgICAg
cmV0dXJuIHRydWU7Cit9CisKIHZvaWQgc2V0TGluZUNhcChQbGF0Zm9ybUNvbnRleHRDYWlybyYg
cGxhdGZvcm1Db250ZXh0LCBMaW5lQ2FwIGxpbmVDYXApCiB7CiAgICAgY2Fpcm9fbGluZV9jYXBf
dCBjYWlyb0NhcDsKQEAgLTU0NCwxOSArNTM4LDIxIEBAIHZvaWQgc2V0TWl0ZXJMaW1pdChQbGF0
Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBmbG9hdCBtaXRlckxpbWl0KQogICAg
IGNhaXJvX3NldF9taXRlcl9saW1pdChwbGF0Zm9ybUNvbnRleHQuY3IoKSwgbWl0ZXJMaW1pdCk7
CiB9CiAKLXZvaWQgZmlsbFJlY3QoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4
dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGaWxsU291cmNlJiBmaWxsU291cmNlLCBH
cmFwaGljc0NvbnRleHQmIHRhcmdldENvbnRleHQpCit2b2lkIGZpbGxSZWN0KFBsYXRmb3JtQ29u
dGV4dENhaXJvJiBwbGF0Zm9ybUNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3Qg
RmlsbFNvdXJjZSYgZmlsbFNvdXJjZSwgY29uc3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0YXRlLCBH
cmFwaGljc0NvbnRleHQmIHRhcmdldENvbnRleHQpCiB7CiAgICAgY2Fpcm9fdCogY3IgPSBwbGF0
Zm9ybUNvbnRleHQuY3IoKTsKIAogICAgIGNhaXJvX3JlY3RhbmdsZShjciwgcmVjdC54KCksIHJl
Y3QueSgpLCByZWN0LndpZHRoKCksIHJlY3QuaGVpZ2h0KCkpOwotICAgIGRyYXdQYXRoU2hhZG93
KHBsYXRmb3JtQ29udGV4dCwgZmlsbFNvdXJjZSwgeyB9LCB0YXJnZXRDb250ZXh0LCBGaWxsKTsK
KyAgICBkcmF3UGF0aFNoYWRvdyhwbGF0Zm9ybUNvbnRleHQsIGZpbGxTb3VyY2UsIHsgfSwgc2hh
ZG93U3RhdGUsIHRhcmdldENvbnRleHQsIEZpbGwpOwogICAgIGZpbGxDdXJyZW50Q2Fpcm9QYXRo
KHBsYXRmb3JtQ29udGV4dCwgZmlsbFNvdXJjZSk7CiB9CiAKLXZvaWQgZmlsbFJlY3QoUGxhdGZv
cm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0LCBj
b25zdCBDb2xvciYgY29sb3IsIGJvb2wgaGFzU2hhZG93LCBHcmFwaGljc0NvbnRleHQmIHRhcmdl
dENvbnRleHQpCit2b2lkIGZpbGxSZWN0KFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNv
bnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBT
aGFkb3dTdGF0ZSYgc2hhZG93U3RhdGUsIEdyYXBoaWNzQ29udGV4dCYgdGFyZ2V0Q29udGV4dCkK
IHsKLSAgICBpZiAoaGFzU2hhZG93KQotICAgICAgICBwbGF0Zm9ybUNvbnRleHQuc2hhZG93Qmx1
cigpLmRyYXdSZWN0U2hhZG93KHRhcmdldENvbnRleHQsIEZsb2F0Um91bmRlZFJlY3QocmVjdCkp
OworICAgIGlmIChzaGFkb3dTdGF0ZS5pc1Zpc2libGUoKSkgeworICAgICAgICBTaGFkb3dCbHVy
IHNoYWRvdyh7IHNoYWRvd1N0YXRlLmJsdXIsIHNoYWRvd1N0YXRlLmJsdXIgfSwgc2hhZG93U3Rh
dGUub2Zmc2V0LCBzaGFkb3dTdGF0ZS5jb2xvciwgc2hhZG93U3RhdGUuaWdub3JlVHJhbnNmb3Jt
cyk7CisgICAgICAgIHNoYWRvdy5kcmF3UmVjdFNoYWRvdyh0YXJnZXRDb250ZXh0LCBGbG9hdFJv
dW5kZWRSZWN0KHJlY3QpKTsKKyAgICB9CiAKICAgICBmaWxsUmVjdFdpdGhDb2xvcihwbGF0Zm9y
bUNvbnRleHQuY3IoKSwgcmVjdCwgY29sb3IpOwogfQpAQCAtNTcwLDEwICs1NjYsMTIgQEAgdm9p
ZCBmaWxsUmVjdChQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBG
bG9hdFJlY3QmIHJlY3QsIGNhaXIKICAgICBjYWlyb19maWxsKGNyKTsKIH0KIAotdm9pZCBmaWxs
Um91bmRlZFJlY3QoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3Qg
RmxvYXRSb3VuZGVkUmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBib29sIGhhc1NoYWRv
dywgR3JhcGhpY3NDb250ZXh0JiB0YXJnZXRDb250ZXh0KQordm9pZCBmaWxsUm91bmRlZFJlY3Qo
UGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmxvYXRSb3VuZGVk
UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93
U3RhdGUsIEdyYXBoaWNzQ29udGV4dCYgdGFyZ2V0Q29udGV4dCkKIHsKLSAgICBpZiAoaGFzU2hh
ZG93KQotICAgICAgICBwbGF0Zm9ybUNvbnRleHQuc2hhZG93Qmx1cigpLmRyYXdSZWN0U2hhZG93
KHRhcmdldENvbnRleHQsIHJlY3QpOworICAgIGlmIChzaGFkb3dTdGF0ZS5pc1Zpc2libGUoKSkg
eworICAgICAgICBTaGFkb3dCbHVyIHNoYWRvdyh7IHNoYWRvd1N0YXRlLmJsdXIsIHNoYWRvd1N0
YXRlLmJsdXIgfSwgc2hhZG93U3RhdGUub2Zmc2V0LCBzaGFkb3dTdGF0ZS5jb2xvciwgc2hhZG93
U3RhdGUuaWdub3JlVHJhbnNmb3Jtcyk7CisgICAgICAgIHNoYWRvdy5kcmF3UmVjdFNoYWRvdyh0
YXJnZXRDb250ZXh0LCByZWN0KTsKKyAgICB9CiAKICAgICBjYWlyb190KiBjciA9IHBsYXRmb3Jt
Q29udGV4dC5jcigpOwogICAgIGNhaXJvX3NhdmUoY3IpOwpAQCAtNTg3LDEyICs1ODUsMTQgQEAg
dm9pZCBmaWxsUm91bmRlZFJlY3QoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4
dCwgY29uc3QgRmxvYXRSb3VuZGVkUmUKICAgICBjYWlyb19yZXN0b3JlKGNyKTsKIH0KIAotdm9p
ZCBmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1D
b250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJv
dW5kZWRIb2xlUmVjdCwgY29uc3QgRmlsbFNvdXJjZSYgZmlsbFNvdXJjZSwgY29uc3QgU2hhZG93
Qmx1clVzYWdlJiBzaGFkb3dCbHVyVXNhZ2UsIEdyYXBoaWNzQ29udGV4dCYgdGFyZ2V0Q29udGV4
dCkKK3ZvaWQgZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBs
YXRmb3JtQ29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFJvdW5kZWRS
ZWN0JiByb3VuZGVkSG9sZVJlY3QsIGNvbnN0IEZpbGxTb3VyY2UmIGZpbGxTb3VyY2UsIGNvbnN0
IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSwgR3JhcGhpY3NDb250ZXh0JiB0YXJnZXRDb250ZXh0
KQogewogICAgIC8vIEZJWE1FOiB0aGlzIHNob3VsZCBsZXZlcmFnZSB0aGUgc3BlY2lmaWVkIGNv
bG9yLgogCi0gICAgaWYgKHNoYWRvd0JsdXJVc2FnZS5yZXF1aXJlZChwbGF0Zm9ybUNvbnRleHQp
KQotICAgICAgICBwbGF0Zm9ybUNvbnRleHQuc2hhZG93Qmx1cigpLmRyYXdJbnNldFNoYWRvdyh0
YXJnZXRDb250ZXh0LCByZWN0LCByb3VuZGVkSG9sZVJlY3QpOworICAgIGlmIChzaGFkb3dTdGF0
ZS5pc1JlcXVpcmVkKHBsYXRmb3JtQ29udGV4dCkpIHsKKyAgICAgICAgU2hhZG93Qmx1ciBzaGFk
b3coeyBzaGFkb3dTdGF0ZS5ibHVyLCBzaGFkb3dTdGF0ZS5ibHVyIH0sIHNoYWRvd1N0YXRlLm9m
ZnNldCwgc2hhZG93U3RhdGUuY29sb3IsIHNoYWRvd1N0YXRlLmlnbm9yZVRyYW5zZm9ybXMpOwor
ICAgICAgICBzaGFkb3cuZHJhd0luc2V0U2hhZG93KHRhcmdldENvbnRleHQsIHJlY3QsIHJvdW5k
ZWRIb2xlUmVjdCk7CisgICAgfQogCiAgICAgUGF0aCBwYXRoOwogICAgIHBhdGguYWRkUmVjdChy
ZWN0KTsKQEAgLTYwOSwzNSArNjA5LDM1IEBAIHZvaWQgZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUo
UGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgRmxvYXRSCiAgICAg
Y2Fpcm9fcmVzdG9yZShjcik7CiB9CiAKLXZvaWQgZmlsbFBhdGgoUGxhdGZvcm1Db250ZXh0Q2Fp
cm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgUGF0aCYgcGF0aCwgY29uc3QgRmlsbFNvdXJjZSYg
ZmlsbFNvdXJjZSwgR3JhcGhpY3NDb250ZXh0JiB0YXJnZXRDb250ZXh0KQordm9pZCBmaWxsUGF0
aChQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBQYXRoJiBwYXRo
LCBjb25zdCBGaWxsU291cmNlJiBmaWxsU291cmNlLCBjb25zdCBTaGFkb3dTdGF0ZSYgc2hhZG93
U3RhdGUsIEdyYXBoaWNzQ29udGV4dCYgdGFyZ2V0Q29udGV4dCkKIHsKICAgICBjYWlyb190KiBj
ciA9IHBsYXRmb3JtQ29udGV4dC5jcigpOwogCiAgICAgc2V0UGF0aE9uQ2Fpcm9Db250ZXh0KGNy
LCBwYXRoLnBsYXRmb3JtUGF0aCgpLT5jb250ZXh0KCkpOwotICAgIGRyYXdQYXRoU2hhZG93KHBs
YXRmb3JtQ29udGV4dCwgZmlsbFNvdXJjZSwgeyB9LCB0YXJnZXRDb250ZXh0LCBGaWxsKTsKKyAg
ICBkcmF3UGF0aFNoYWRvdyhwbGF0Zm9ybUNvbnRleHQsIGZpbGxTb3VyY2UsIHsgfSwgc2hhZG93
U3RhdGUsIHRhcmdldENvbnRleHQsIEZpbGwpOwogICAgIGZpbGxDdXJyZW50Q2Fpcm9QYXRoKHBs
YXRmb3JtQ29udGV4dCwgZmlsbFNvdXJjZSk7CiB9CiAKLXZvaWQgc3Ryb2tlUmVjdChQbGF0Zm9y
bUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZs
b2F0IGxpbmVXaWR0aCwgY29uc3QgU3Ryb2tlU291cmNlJiBzdHJva2VTb3VyY2UsIEdyYXBoaWNz
Q29udGV4dCYgdGFyZ2V0Q29udGV4dCkKK3ZvaWQgc3Ryb2tlUmVjdChQbGF0Zm9ybUNvbnRleHRD
YWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IGxpbmVX
aWR0aCwgY29uc3QgU3Ryb2tlU291cmNlJiBzdHJva2VTb3VyY2UsIGNvbnN0IFNoYWRvd1N0YXRl
JiBzaGFkb3dTdGF0ZSwgR3JhcGhpY3NDb250ZXh0JiB0YXJnZXRDb250ZXh0KQogewogICAgIGNh
aXJvX3QqIGNyID0gcGxhdGZvcm1Db250ZXh0LmNyKCk7CiAgICAgY2Fpcm9fc2F2ZShjcik7CiAK
ICAgICBjYWlyb19yZWN0YW5nbGUoY3IsIHJlY3QueCgpLCByZWN0LnkoKSwgcmVjdC53aWR0aCgp
LCByZWN0LmhlaWdodCgpKTsKICAgICBjYWlyb19zZXRfbGluZV93aWR0aChjciwgbGluZVdpZHRo
KTsKLSAgICBkcmF3UGF0aFNoYWRvdyhwbGF0Zm9ybUNvbnRleHQsIHsgfSwgc3Ryb2tlU291cmNl
LCB0YXJnZXRDb250ZXh0LCBTdHJva2UpOworICAgIGRyYXdQYXRoU2hhZG93KHBsYXRmb3JtQ29u
dGV4dCwgeyB9LCBzdHJva2VTb3VyY2UsIHNoYWRvd1N0YXRlLCB0YXJnZXRDb250ZXh0LCBTdHJv
a2UpOwogICAgIHBsYXRmb3JtQ29udGV4dC5wcmVwYXJlRm9yU3Ryb2tpbmcoc3Ryb2tlU291cmNl
LCBQbGF0Zm9ybUNvbnRleHRDYWlybzo6UHJlc2VydmVBbHBoYSk7CiAgICAgY2Fpcm9fc3Ryb2tl
KGNyKTsKIAogICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwogfQogCi12b2lkIHN0cm9rZVBhdGgoUGxh
dGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3JtQ29udGV4dCwgY29uc3QgUGF0aCYgcGF0aCwgY29u
c3QgU3Ryb2tlU291cmNlJiBzdHJva2VTb3VyY2UsIEdyYXBoaWNzQ29udGV4dCYgdGFyZ2V0Q29u
dGV4dCkKK3ZvaWQgc3Ryb2tlUGF0aChQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250
ZXh0LCBjb25zdCBQYXRoJiBwYXRoLCBjb25zdCBTdHJva2VTb3VyY2UmIHN0cm9rZVNvdXJjZSwg
Y29uc3QgU2hhZG93U3RhdGUmIHNoYWRvd1N0YXRlLCBHcmFwaGljc0NvbnRleHQmIHRhcmdldENv
bnRleHQpCiB7CiAgICAgY2Fpcm9fdCogY3IgPSBwbGF0Zm9ybUNvbnRleHQuY3IoKTsKIAogICAg
IHNldFBhdGhPbkNhaXJvQ29udGV4dChjciwgcGF0aC5wbGF0Zm9ybVBhdGgoKS0+Y29udGV4dCgp
KTsKLSAgICBkcmF3UGF0aFNoYWRvdyhwbGF0Zm9ybUNvbnRleHQsIHsgfSwgc3Ryb2tlU291cmNl
LCB0YXJnZXRDb250ZXh0LCBTdHJva2UpOworICAgIGRyYXdQYXRoU2hhZG93KHBsYXRmb3JtQ29u
dGV4dCwgeyB9LCBzdHJva2VTb3VyY2UsIHNoYWRvd1N0YXRlLCB0YXJnZXRDb250ZXh0LCBTdHJv
a2UpOwogICAgIHBsYXRmb3JtQ29udGV4dC5wcmVwYXJlRm9yU3Ryb2tpbmcoc3Ryb2tlU291cmNl
LCBQbGF0Zm9ybUNvbnRleHRDYWlybzo6UHJlc2VydmVBbHBoYSk7CiAgICAgY2Fpcm9fc3Ryb2tl
KGNyKTsKIH0KQEAgLTY1Myw5ICs2NTMsOSBAQCB2b2lkIGNsZWFyUmVjdChQbGF0Zm9ybUNvbnRl
eHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgY2Fp
cm9fcmVzdG9yZShjcik7CiB9CiAKLXZvaWQgZHJhd0dseXBocyhQbGF0Zm9ybUNvbnRleHRDYWly
byYgcGxhdGZvcm1Db250ZXh0LCBjb25zdCBGaWxsU291cmNlJiBmaWxsU291cmNlLCBjb25zdCBT
dHJva2VTb3VyY2UmIHN0cm9rZVNvdXJjZSwgY29uc3QgU2hhZG93Qmx1clVzYWdlJiBzaGFkb3dC
bHVyVXNhZ2UsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBjYWlyb19zY2FsZWRfZm9udF90KiBz
Y2FsZWRGb250LCBkb3VibGUgc3ludGhldGljQm9sZE9mZnNldCwgY29uc3QgVmVjdG9yPGNhaXJv
X2dseXBoX3Q+JiBnbHlwaHMsIGZsb2F0IHhPZmZzZXQsIFRleHREcmF3aW5nTW9kZUZsYWdzIHRl
eHREcmF3aW5nTW9kZSwgZmxvYXQgc3Ryb2tlVGhpY2tuZXNzLCBjb25zdCBGbG9hdFNpemUmIHNo
YWRvd09mZnNldCwgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yLCBHcmFwaGljc0NvbnRleHQmIHRh
cmdldENvbnRleHQpCit2b2lkIGRyYXdHbHlwaHMoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRm
b3JtQ29udGV4dCwgY29uc3QgRmlsbFNvdXJjZSYgZmlsbFNvdXJjZSwgY29uc3QgU3Ryb2tlU291
cmNlJiBzdHJva2VTb3VyY2UsIGNvbnN0IFNoYWRvd1N0YXRlJiBzaGFkb3dTdGF0ZSwgY29uc3Qg
RmxvYXRQb2ludCYgcG9pbnQsIGNhaXJvX3NjYWxlZF9mb250X3QqIHNjYWxlZEZvbnQsIGRvdWJs
ZSBzeW50aGV0aWNCb2xkT2Zmc2V0LCBjb25zdCBWZWN0b3I8Y2Fpcm9fZ2x5cGhfdD4mIGdseXBo
cywgZmxvYXQgeE9mZnNldCwgVGV4dERyYXdpbmdNb2RlRmxhZ3MgdGV4dERyYXdpbmdNb2RlLCBm
bG9hdCBzdHJva2VUaGlja25lc3MsIGNvbnN0IEZsb2F0U2l6ZSYgc2hhZG93T2Zmc2V0LCBjb25z
dCBDb2xvciYgc2hhZG93Q29sb3IsIEdyYXBoaWNzQ29udGV4dCYgdGFyZ2V0Q29udGV4dCkKIHsK
LSAgICBkcmF3R2x5cGhzU2hhZG93KHBsYXRmb3JtQ29udGV4dCwgc2hhZG93Qmx1clVzYWdlLCB0
ZXh0RHJhd2luZ01vZGUsIHNoYWRvd09mZnNldCwgc2hhZG93Q29sb3IsIHBvaW50LCBzY2FsZWRG
b250LCBzeW50aGV0aWNCb2xkT2Zmc2V0LCBnbHlwaHMsIHRhcmdldENvbnRleHQpOworICAgIGRy
YXdHbHlwaHNTaGFkb3cocGxhdGZvcm1Db250ZXh0LCBzaGFkb3dTdGF0ZSwgdGV4dERyYXdpbmdN
b2RlLCBzaGFkb3dPZmZzZXQsIHNoYWRvd0NvbG9yLCBwb2ludCwgc2NhbGVkRm9udCwgc3ludGhl
dGljQm9sZE9mZnNldCwgZ2x5cGhzLCB0YXJnZXRDb250ZXh0KTsKIAogICAgIGNhaXJvX3QqIGNy
ID0gcGxhdGZvcm1Db250ZXh0LmNyKCk7CiAgICAgY2Fpcm9fc2F2ZShjcik7CkBAIC02ODIsNyAr
NjgyLDcgQEAgdm9pZCBkcmF3R2x5cGhzKFBsYXRmb3JtQ29udGV4dENhaXJvJiBwbGF0Zm9ybUNv
bnRleHQsIGNvbnN0IEZpbGxTb3VyY2UmIGZpbGxTb3UKICAgICBjYWlyb19yZXN0b3JlKGNyKTsK
IH0KIAotdm9pZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mIHBsYXRmb3Jt
Q29udGV4dCwgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RS
ZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0
ZU9wZXJhdG9yLCBCbGVuZE1vZGUgYmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0
aW9uLCBHcmFwaGljc0NvbnRleHQmIHRhcmdldENvbnRleHQpCit2b2lkIGRyYXdOYXRpdmVJbWFn
ZShQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjYWlyb19zdXJmYWNlX3Qq
IHN1cmZhY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3Jj
UmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSBibGVu
ZE1vZGUsIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24sIGNvbnN0IFNoYWRvd1N0YXRlJiBz
aGFkb3dTdGF0ZSwgR3JhcGhpY3NDb250ZXh0JiB0YXJnZXRDb250ZXh0KQogewogICAgIHBsYXRm
b3JtQ29udGV4dC5zYXZlKCk7CiAKQEAgLTcwNSw3ICs3MDUsNyBAQCB2b2lkIGRyYXdOYXRpdmVJ
bWFnZShQbGF0Zm9ybUNvbnRleHRDYWlybyYgcGxhdGZvcm1Db250ZXh0LCBjYWlyb19zdXJmYWNl
X3QqIHN1cgogICAgICAgICB9CiAgICAgfQogCi0gICAgcGxhdGZvcm1Db250ZXh0LmRyYXdTdXJm
YWNlVG9Db250ZXh0KHN1cmZhY2UsIGRzdCwgc3JjUmVjdCwgdGFyZ2V0Q29udGV4dCk7CisgICAg
cGxhdGZvcm1Db250ZXh0LmRyYXdTdXJmYWNlVG9Db250ZXh0KHN1cmZhY2UsIGRzdCwgc3JjUmVj
dCwgc2hhZG93U3RhdGUsIHRhcmdldENvbnRleHQpOwogICAgIHBsYXRmb3JtQ29udGV4dC5yZXN0
b3JlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmgKaW5kZXggMDI2YjgwYjliOGE0ZjY2NmQyM2JmMTMw
MWQzNzVkOGVjZjM5ZjMzMy4uYjY0ZGNjMmExNDNlMzk4YjhjYTYyODg1NTczOGU1YTE3MmUzNDhi
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fp
cm9PcGVyYXRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vQ2Fpcm9PcGVyYXRpb25zLmgKQEAgLTY3LDkgKzY3LDYgQEAgdm9pZCBzZXRJbWFnZUludGVy
cG9sYXRpb25RdWFsaXR5KFBsYXRmb3JtQ29udGV4dENhaXJvJiwgSW50ZXJwb2xhdGlvblF1YWxp
dHkpOwogdm9pZCBzZXRDVE0oUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mKTsKIEFmZmluZVRyYW5zZm9ybSBnZXRDVE0oUGxhdGZvcm1Db250ZXh0Q2Fpcm8mKTsK
IAotdm9pZCBzZXRTaGFkb3dWYWx1ZXMoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjb25zdCBGbG9h
dFNpemUmLCBjb25zdCBGbG9hdFNpemUmLCBjb25zdCBDb2xvciYsIGJvb2wpOwotdm9pZCBjbGVh
clNoYWRvdyhQbGF0Zm9ybUNvbnRleHRDYWlybyYpOwotCiBJbnRSZWN0IGdldENsaXBCb3VuZHMo
UGxhdGZvcm1Db250ZXh0Q2Fpcm8mKTsKIEZsb2F0UmVjdCByb3VuZFRvRGV2aWNlUGl4ZWxzKFBs
YXRmb3JtQ29udGV4dENhaXJvJiwgY29uc3QgRmxvYXRSZWN0Jik7CiAKQEAgLTEwOSwxNCArMTA2
LDE2IEBAIHN0cnVjdCBTdHJva2VTb3VyY2UgewogICAgIENvbG9yIGNvbG9yOwogfTsKIAotc3Ry
dWN0IFNoYWRvd0JsdXJVc2FnZSB7Ci0gICAgZXhwbGljaXQgU2hhZG93Qmx1clVzYWdlKGNvbnN0
IEdyYXBoaWNzQ29udGV4dFN0YXRlJik7CitzdHJ1Y3QgU2hhZG93U3RhdGUgeworICAgIGV4cGxp
Y2l0IFNoYWRvd1N0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJik7CiAKLSAgICBib29s
IHJlcXVpcmVkKFBsYXRmb3JtQ29udGV4dENhaXJvJikgY29uc3Q7CisgICAgYm9vbCBpc1Zpc2li
bGUoKSBjb25zdDsKKyAgICBib29sIGlzUmVxdWlyZWQoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mKSBj
b25zdDsKIAotICAgIENvbG9yIHNoYWRvd0NvbG9yOwotICAgIGZsb2F0IHNoYWRvd0JsdXIgeyAw
IH07Ci0gICAgYm9vbCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcyB7IGZhbHNlIH07CisgICAgRmxv
YXRTaXplIG9mZnNldDsKKyAgICBmbG9hdCBibHVyIHsgMCB9OworICAgIENvbG9yIGNvbG9yOwor
ICAgIGJvb2wgaWdub3JlVHJhbnNmb3JtcyB7IGZhbHNlIH07CiB9OwogCiB2b2lkIHNldExpbmVD
YXAoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBMaW5lQ2FwKTsKQEAgLTEyNCwxOSArMTIzLDE5IEBA
IHZvaWQgc2V0TGluZURhc2goUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjb25zdCBEYXNoQXJyYXkm
LCBmbG9hdCk7CiB2b2lkIHNldExpbmVKb2luKFBsYXRmb3JtQ29udGV4dENhaXJvJiwgTGluZUpv
aW4pOwogdm9pZCBzZXRNaXRlckxpbWl0KFBsYXRmb3JtQ29udGV4dENhaXJvJiwgZmxvYXQpOwog
Ci12b2lkIGZpbGxSZWN0KFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgRmlsbFNvdXJjZSYsIEdyYXBoaWNzQ29udGV4dCYpOwotdm9pZCBmaWxsUmVjdChQbGF0
Zm9ybUNvbnRleHRDYWlybyYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IENvbG9yJiwgYm9vbCwg
R3JhcGhpY3NDb250ZXh0Jik7Cit2b2lkIGZpbGxSZWN0KFBsYXRmb3JtQ29udGV4dENhaXJvJiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmlsbFNvdXJjZSYsIGNvbnN0IFNoYWRvd1N0YXRlJiwg
R3JhcGhpY3NDb250ZXh0Jik7Cit2b2lkIGZpbGxSZWN0KFBsYXRmb3JtQ29udGV4dENhaXJvJiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQ29sb3ImLCBjb25zdCBTaGFkb3dTdGF0ZSYsIEdyYXBo
aWNzQ29udGV4dCYpOwogdm9pZCBmaWxsUmVjdChQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNvbnN0
IEZsb2F0UmVjdCYsIGNhaXJvX3BhdHRlcm5fdCopOwotdm9pZCBmaWxsUm91bmRlZFJlY3QoUGxh
dGZvcm1Db250ZXh0Q2Fpcm8mLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiwgY29uc3QgQ29sb3Im
LCBib29sLCBHcmFwaGljc0NvbnRleHQmKTsKLXZvaWQgZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUo
UGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJvdW5k
ZWRSZWN0JiwgY29uc3QgRmlsbFNvdXJjZSYsIGNvbnN0IFNoYWRvd0JsdXJVc2FnZSYsIEdyYXBo
aWNzQ29udGV4dCYpOwotdm9pZCBmaWxsUGF0aChQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNvbnN0
IFBhdGgmLCBjb25zdCBGaWxsU291cmNlJiwgR3JhcGhpY3NDb250ZXh0Jik7Ci12b2lkIHN0cm9r
ZVJlY3QoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCwgY29u
c3QgU3Ryb2tlU291cmNlJiwgR3JhcGhpY3NDb250ZXh0Jik7Ci12b2lkIHN0cm9rZVBhdGgoUGxh
dGZvcm1Db250ZXh0Q2Fpcm8mLCBjb25zdCBQYXRoJiwgY29uc3QgU3Ryb2tlU291cmNlJiwgR3Jh
cGhpY3NDb250ZXh0Jik7Cit2b2lkIGZpbGxSb3VuZGVkUmVjdChQbGF0Zm9ybUNvbnRleHRDYWly
byYsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmLCBjb25zdCBDb2xvciYsIGNvbnN0IFNoYWRvd1N0
YXRlJiwgYm9vbCwgR3JhcGhpY3NDb250ZXh0Jik7Cit2b2lkIGZpbGxSZWN0V2l0aFJvdW5kZWRI
b2xlKFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRS
b3VuZGVkUmVjdCYsIGNvbnN0IEZpbGxTb3VyY2UmLCBjb25zdCBTaGFkb3dTdGF0ZSYsIEdyYXBo
aWNzQ29udGV4dCYpOwordm9pZCBmaWxsUGF0aChQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNvbnN0
IFBhdGgmLCBjb25zdCBGaWxsU291cmNlJiwgY29uc3QgU2hhZG93U3RhdGUmLCBHcmFwaGljc0Nv
bnRleHQmKTsKK3ZvaWQgc3Ryb2tlUmVjdChQbGF0Zm9ybUNvbnRleHRDYWlybyYsIGNvbnN0IEZs
b2F0UmVjdCYsIGZsb2F0LCBjb25zdCBTdHJva2VTb3VyY2UmLCBjb25zdCBTaGFkb3dTdGF0ZSYs
IEdyYXBoaWNzQ29udGV4dCYpOwordm9pZCBzdHJva2VQYXRoKFBsYXRmb3JtQ29udGV4dENhaXJv
JiwgY29uc3QgUGF0aCYsIGNvbnN0IFN0cm9rZVNvdXJjZSYsIGNvbnN0IFNoYWRvd1N0YXRlJiwg
R3JhcGhpY3NDb250ZXh0Jik7CiB2b2lkIGNsZWFyUmVjdChQbGF0Zm9ybUNvbnRleHRDYWlybyYs
IGNvbnN0IEZsb2F0UmVjdCYpOwogCi12b2lkIGRyYXdHbHlwaHMoUGxhdGZvcm1Db250ZXh0Q2Fp
cm8mLCBjb25zdCBGaWxsU291cmNlJiwgY29uc3QgU3Ryb2tlU291cmNlJiwgY29uc3QgU2hhZG93
Qmx1clVzYWdlJiwgY29uc3QgRmxvYXRQb2ludCYsIGNhaXJvX3NjYWxlZF9mb250X3QqLCBkb3Vi
bGUsIGNvbnN0IFZlY3RvcjxjYWlyb19nbHlwaF90PiYsIGZsb2F0LCBUZXh0RHJhd2luZ01vZGVG
bGFncywgZmxvYXQsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IENvbG9yJiwgR3JhcGhpY3NDb250
ZXh0Jik7Cit2b2lkIGRyYXdHbHlwaHMoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjb25zdCBGaWxs
U291cmNlJiwgY29uc3QgU3Ryb2tlU291cmNlJiwgY29uc3QgU2hhZG93U3RhdGUmLCBjb25zdCBG
bG9hdFBvaW50JiwgY2Fpcm9fc2NhbGVkX2ZvbnRfdCosIGRvdWJsZSwgY29uc3QgVmVjdG9yPGNh
aXJvX2dseXBoX3Q+JiwgZmxvYXQsIFRleHREcmF3aW5nTW9kZUZsYWdzLCBmbG9hdCwgY29uc3Qg
RmxvYXRTaXplJiwgY29uc3QgQ29sb3ImLCBHcmFwaGljc0NvbnRleHQmKTsKIAotdm9pZCBkcmF3
TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjYWlyb19zdXJmYWNlX3QqLCBjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRN
b2RlLCBJbWFnZU9yaWVudGF0aW9uLCBHcmFwaGljc0NvbnRleHQmKTsKK3ZvaWQgZHJhd05hdGl2
ZUltYWdlKFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY2Fpcm9fc3VyZmFjZV90KiwgY29uc3QgRmxv
YXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwg
SW1hZ2VPcmllbnRhdGlvbiwgY29uc3QgU2hhZG93U3RhdGUmLCBHcmFwaGljc0NvbnRleHQmKTsK
IHZvaWQgZHJhd1BhdHRlcm4oUGxhdGZvcm1Db250ZXh0Q2Fpcm8mLCBjYWlyb19zdXJmYWNlX3Qq
LCBjb25zdCBJbnRTaXplJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYsIENvbXBvc2l0ZU9wZXJhdG9y
LCBCbGVuZE1vZGUpOwogCiB2b2lkIGRyYXdSZWN0KFBsYXRmb3JtQ29udGV4dENhaXJvJiwgY29u
c3QgRmxvYXRSZWN0JiwgZmxvYXQsIGNvbnN0IENvbG9yJiwgU3Ryb2tlU3R5bGUsIGNvbnN0IENv
bG9yJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWly
by9Gb250Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Rm9udENhaXJvLmNwcAppbmRleCA1MWNjZTU5ZGUyY2YzZDk0NzJhYTVmNGM1MzgzYjhlOGEyMzc4
YWNkLi5lZjIxZWI3YWI0NzUzMzMzYzcyZmE3OTA3YzhkNTcwMGZiZDNlNzUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAK
QEAgLTczLDcgKzczLDcgQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEcKICAgICBBU1NFUlQoY29u
dGV4dC5oYXNQbGF0Zm9ybUNvbnRleHQoKSk7CiAgICAgYXV0byYgc3RhdGUgPSBjb250ZXh0LnN0
YXRlKCk7CiAgICAgQ2Fpcm86OmRyYXdHbHlwaHMoKmNvbnRleHQucGxhdGZvcm1Db250ZXh0KCks
IENhaXJvOjpGaWxsU291cmNlKHN0YXRlKSwgQ2Fpcm86OlN0cm9rZVNvdXJjZShzdGF0ZSksCi0g
ICAgICAgIENhaXJvOjpTaGFkb3dCbHVyVXNhZ2Uoc3RhdGUpLCBwb2ludCwgc2NhbGVkRm9udCwg
c3ludGhldGljQm9sZE9mZnNldCwgZ2x5cGhzLCB4T2Zmc2V0LAorICAgICAgICBDYWlybzo6U2hh
ZG93U3RhdGUoc3RhdGUpLCBwb2ludCwgc2NhbGVkRm9udCwgc3ludGhldGljQm9sZE9mZnNldCwg
Z2x5cGhzLCB4T2Zmc2V0LAogICAgICAgICBzdGF0ZS50ZXh0RHJhd2luZ01vZGUsIHN0YXRlLnN0
cm9rZVRoaWNrbmVzcywgc3RhdGUuc2hhZG93T2Zmc2V0LCBzdGF0ZS5zaGFkb3dDb2xvciwgY29u
dGV4dCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAppbmRleCBhYzY0OGIxNzZh
NjljMTlmMzRmZTFiMjE2MWZjYjljOWRlMTIyYjIwLi45YmQ1OWVhOWY1MTI5Njc1YmQ2Y2Y5OWVh
NmE1MGQzYWFkZGM5ZTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCkBAIC0xMDks
OSArMTA5LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnJlc3RvcmVQbGF0Zm9ybVN0YXRlKCkK
IHsKICAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwogICAgIENhaXJvOjpyZXN0b3Jl
KCpwbGF0Zm9ybUNvbnRleHQoKSk7Ci0KLSAgICBDYWlybzo6U3RhdGU6OnNldFNoYWRvd1ZhbHVl
cygqcGxhdGZvcm1Db250ZXh0KCksIEZsb2F0U2l6ZSB7IG1fc3RhdGUuc2hhZG93Qmx1ciwgbV9z
dGF0ZS5zaGFkb3dCbHVyIH0sCi0gICAgICAgIG1fc3RhdGUuc2hhZG93T2Zmc2V0LCBtX3N0YXRl
LnNoYWRvd0NvbG9yLCBtX3N0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKTsKIH0KIAogLy8g
RHJhd3MgYSBmaWxsZWQgcmVjdGFuZ2xlIHdpdGggYSBzdHJva2VkIGJvcmRlci4KQEAgLTE0Miw3
ICsxMzksNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5h
dGl2ZUltYWdlUHRyJiBpbWFnZSwgY29uc3QgRmxvYXRTaQogICAgIH0KIAogICAgIEFTU0VSVCho
YXNQbGF0Zm9ybUNvbnRleHQoKSk7Ci0gICAgQ2Fpcm86OmRyYXdOYXRpdmVJbWFnZSgqcGxhdGZv
cm1Db250ZXh0KCksIGltYWdlLmdldCgpLCBkZXN0UmVjdCwgc3JjUmVjdCwgY29tcG9zaXRlT3Bl
cmF0b3IsIGJsZW5kTW9kZSwgb3JpZW50YXRpb24sICp0aGlzKTsKKyAgICBDYWlybzo6ZHJhd05h
dGl2ZUltYWdlKCpwbGF0Zm9ybUNvbnRleHQoKSwgaW1hZ2UuZ2V0KCksIGRlc3RSZWN0LCBzcmNS
ZWN0LCBjb21wb3NpdGVPcGVyYXRvciwgYmxlbmRNb2RlLCBvcmllbnRhdGlvbiwgQ2Fpcm86OlNo
YWRvd1N0YXRlKHN0YXRlKCkpLCAqdGhpcyk7CiB9CiAKIC8vIFRoaXMgaXMgb25seSB1c2VkIHRv
IGRyYXcgYm9yZGVycywgc28gd2Ugc2hvdWxkIG5vdCBkcmF3IHNoYWRvd3MuCkBAIC0xOTEsNyAr
MTg4LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxQYXRoKGNvbnN0IFBhdGgmIHBhdGgp
CiAgICAgfQogCiAgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKLSAgICBDYWlybzo6
ZmlsbFBhdGgoKnBsYXRmb3JtQ29udGV4dCgpLCBwYXRoLCBDYWlybzo6RmlsbFNvdXJjZShzdGF0
ZSgpKSwgKnRoaXMpOworICAgIGF1dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUoKTsKKyAgICBDYWly
bzo6ZmlsbFBhdGgoKnBsYXRmb3JtQ29udGV4dCgpLCBwYXRoLCBDYWlybzo6RmlsbFNvdXJjZShz
dGF0ZSksIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSksICp0aGlzKTsKIH0KIAogdm9pZCBHcmFw
aGljc0NvbnRleHQ6OnN0cm9rZVBhdGgoY29uc3QgUGF0aCYgcGF0aCkKQEAgLTIwNSw3ICsyMDMs
OCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUGF0aChjb25zdCBQYXRoJiBwYXRoKQog
ICAgIH0KIAogICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNvbnRleHQoKSk7Ci0gICAgQ2Fpcm86OnN0
cm9rZVBhdGgoKnBsYXRmb3JtQ29udGV4dCgpLCBwYXRoLCBDYWlybzo6U3Ryb2tlU291cmNlKHN0
YXRlKCkpLCAqdGhpcyk7CisgICAgYXV0byYgc3RhdGUgPSB0aGlzLT5zdGF0ZSgpOworICAgIENh
aXJvOjpzdHJva2VQYXRoKCpwbGF0Zm9ybUNvbnRleHQoKSwgcGF0aCwgQ2Fpcm86OlN0cm9rZVNv
dXJjZShzdGF0ZSksIENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSksICp0aGlzKTsKIH0KIAogdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKQEAgLTIx
OSw3ICsyMTgsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRS
ZWN0JiByZWN0KQogICAgIH0KIAogICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNvbnRleHQoKSk7Ci0g
ICAgQ2Fpcm86OmZpbGxSZWN0KCpwbGF0Zm9ybUNvbnRleHQoKSwgcmVjdCwgQ2Fpcm86OkZpbGxT
b3VyY2Uoc3RhdGUoKSksICp0aGlzKTsKKyAgICBhdXRvJiBzdGF0ZSA9IHRoaXMtPnN0YXRlKCk7
CisgICAgQ2Fpcm86OmZpbGxSZWN0KCpwbGF0Zm9ybUNvbnRleHQoKSwgcmVjdCwgQ2Fpcm86OkZp
bGxTb3VyY2Uoc3RhdGUpLCBDYWlybzo6U2hhZG93U3RhdGUoc3RhdGUpLCAqdGhpcyk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNv
bnN0IENvbG9yJiBjb2xvcikKQEAgLTIzMyw3ICsyMzMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IpCiAg
ICAgfQogCiAgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKLSAgICBDYWlybzo6Zmls
bFJlY3QoKnBsYXRmb3JtQ29udGV4dCgpLCByZWN0LCBjb2xvciwgaGFzU2hhZG93KCksICp0aGlz
KTsKKyAgICBDYWlybzo6ZmlsbFJlY3QoKnBsYXRmb3JtQ29udGV4dCgpLCByZWN0LCBjb2xvciwg
Q2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKCkpLCAqdGhpcyk7CiB9CiAKIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpjbGlwKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKQEAgLTQ1MSwzMSArNDUxLDE3IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRDVE0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFu
c2Zvcm0pCiAgICAgQ2Fpcm86OlN0YXRlOjpzZXRDVE0oKnBsYXRmb3JtQ29udGV4dCgpLCB0cmFu
c2Zvcm0pOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaGFkb3coY29u
c3QgRmxvYXRTaXplJiBvZmZzZXQsIGZsb2F0IGJsdXIsIGNvbnN0IENvbG9yJiBjb2xvcikKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVNoYWRvdyhjb25zdCBGbG9hdFNpemUmIG9m
ZnNldCwgZmxvYXQsIGNvbnN0IENvbG9yJikKIHsKLSAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBGbG9hdFNpemUgYWRqdXN0ZWRPZmZzZXQgPSBvZmZz
ZXQ7CiAgICAgaWYgKG1fc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpIHsKICAgICAgICAg
Ly8gTWVhbmluZyB0aGF0IHRoaXMgZ3JhcGhpY3MgY29udGV4dCBpcyBhc3NvY2lhdGVkIHdpdGgg
YSBDYW52YXNSZW5kZXJpbmdDb250ZXh0CiAgICAgICAgIC8vIFdlIGZsaXAgdGhlIGhlaWdodCBz
aW5jZSBDRyBhbmQgSFRNTDUgQ2FudmFzIGhhdmUgb3Bwb3NpdGUgWSBheGlzCi0gICAgICAgIGFk
anVzdGVkT2Zmc2V0LnNldEhlaWdodCgtb2Zmc2V0LmhlaWdodCgpKTsKLSAgICAgICAgbV9zdGF0
ZS5zaGFkb3dPZmZzZXQgPSBhZGp1c3RlZE9mZnNldDsKKyAgICAgICAgbV9zdGF0ZS5zaGFkb3dP
ZmZzZXQgPSB7IG9mZnNldC53aWR0aCgpLCAtb2Zmc2V0LmhlaWdodCgpIH07CiAgICAgfQotCi0g
ICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKLSAgICBDYWlybzo6U3RhdGU6OnNldFNo
YWRvd1ZhbHVlcygqcGxhdGZvcm1Db250ZXh0KCksIEZsb2F0U2l6ZSB7IGJsdXIsIGJsdXIgfSwK
LSAgICAgICAgYWRqdXN0ZWRPZmZzZXQsIGNvbG9yLCBtX3N0YXRlLnNoYWRvd3NJZ25vcmVUcmFu
c2Zvcm1zKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsZWFyUGxhdGZvcm1TaGFkb3co
KQogewotICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IEFTU0VSVChoYXNQbGF0Zm9ybUNvbnRleHQoKSk7Ci0gICAgQ2Fpcm86OlN0YXRlOjpjbGVhclNo
YWRvdygqcGxhdGZvcm1Db250ZXh0KCkpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6YmVn
aW5QbGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVyKGZsb2F0IG9wYWNpdHkpCkBAIC01MjYsNyArNTEy
LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVJlY3QoY29uc3QgRmxvYXRSZWN0JiBy
ZWN0LCBmbG9hdCBsaW5lV2lkdGgpCiAgICAgfQogCiAgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29u
dGV4dCgpKTsKLSAgICBDYWlybzo6c3Ryb2tlUmVjdCgqcGxhdGZvcm1Db250ZXh0KCksIHJlY3Qs
IGxpbmVXaWR0aCwgQ2Fpcm86OlN0cm9rZVNvdXJjZShzdGF0ZSgpKSwgKnRoaXMpOworICAgIGF1
dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUoKTsKKyAgICBDYWlybzo6c3Ryb2tlUmVjdCgqcGxhdGZv
cm1Db250ZXh0KCksIHJlY3QsIGxpbmVXaWR0aCwgQ2Fpcm86OlN0cm9rZVNvdXJjZShzdGF0ZSks
IENhaXJvOjpTaGFkb3dTdGF0ZShzdGF0ZSksICp0aGlzKTsKIH0KIAogdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OnNldExpbmVDYXAoTGluZUNhcCBsaW5lQ2FwKQpAQCAtNjY3LDcgKzY1NCw3IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJv
dW5kZWRSZWN0JiByZWN0LCBjb25zCiAgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VSVChoYXNQ
bGF0Zm9ybUNvbnRleHQoKSk7Ci0gICAgQ2Fpcm86OmZpbGxSb3VuZGVkUmVjdCgqcGxhdGZvcm1D
b250ZXh0KCksIHJlY3QsIGNvbG9yLCBoYXNTaGFkb3coKSwgKnRoaXMpOworICAgIENhaXJvOjpm
aWxsUm91bmRlZFJlY3QoKnBsYXRmb3JtQ29udGV4dCgpLCByZWN0LCBjb2xvciwgQ2Fpcm86OlNo
YWRvd1N0YXRlKHN0YXRlKCkpLCAqdGhpcyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpm
aWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0
Um91bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yKQpAQCAtNjgy
LDcgKzY2OSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9s
ZShjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0CiAKICAgICBBU1NFUlQoaGFzUGxh
dGZvcm1Db250ZXh0KCkpOwogICAgIGF1dG8mIHN0YXRlID0gdGhpcy0+c3RhdGUoKTsKLSAgICBD
YWlybzo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoKnBsYXRmb3JtQ29udGV4dCgpLCByZWN0LCBy
b3VuZGVkSG9sZVJlY3QsIENhaXJvOjpGaWxsU291cmNlKHN0YXRlKSwgQ2Fpcm86OlNoYWRvd0Js
dXJVc2FnZShzdGF0ZSksICp0aGlzKTsKKyAgICBDYWlybzo6ZmlsbFJlY3RXaXRoUm91bmRlZEhv
bGUoKnBsYXRmb3JtQ29udGV4dCgpLCByZWN0LCByb3VuZGVkSG9sZVJlY3QsIENhaXJvOjpGaWxs
U291cmNlKHN0YXRlKSwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSwgKnRoaXMpOwogfQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdHRlcm4oSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25z
dCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9y
LCBCbGVuZE1vZGUgYmxlbmRNb2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fpcm8uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fpcm8uY3BwCmluZGV4
IDZhM2NjNzU4Zjc2ZmY2OTVmNTY5OWI4ODFmOWNiODg2N2RkNjRmNTkuLjk5Yjg4MmZhMTk3MDQ4
MWQ0YTZkZmZkZjQ4MDdkMWY2M2M1NzVkY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5j
cHAKQEAgLTE1Nyw3ICsxNTcsNyBAQCBzdGF0aWMgdm9pZCBkcmF3UGF0dGVyblRvQ2Fpcm9Db250
ZXh0KGNhaXJvX3QqIGNyLCBjYWlyb19wYXR0ZXJuX3QqIHBhdHRlcm4sIGNvbgogICAgICAgICBj
YWlyb19maWxsKGNyKTsKIH0KIAotdm9pZCBQbGF0Zm9ybUNvbnRleHRDYWlybzo6ZHJhd1N1cmZh
Y2VUb0NvbnRleHQoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIG9yaWdpbmFsU3JjUmVjdCwgR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0KQordm9pZCBQbGF0Zm9ybUNvbnRleHRDYWlybzo6ZHJhd1N1cmZhY2VUb0NvbnRl
eHQoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIG9yaWdpbmFsU3JjUmVjdCwgY29uc3QgQ2Fpcm86OlNoYWRvd1N0YXRl
JiBzaGFkb3dTdGF0ZSwgR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogewogICAgIC8vIEF2b2lk
IGludmFsaWQgY2Fpcm8gbWF0cml4IHdpdGggc21hbGwgdmFsdWVzLgogICAgIGlmIChzdGQ6OmZh
YnMoZGVzdFJlY3Qud2lkdGgoKSkgPCAwLjVmIHx8IHN0ZDo6ZmFicyhkZXN0UmVjdC5oZWlnaHQo
KSkgPCAwLjVmKQpAQCAtMjE4LDcgKzIxOCw3IEBAIHZvaWQgUGxhdGZvcm1Db250ZXh0Q2Fpcm86
OmRyYXdTdXJmYWNlVG9Db250ZXh0KGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgY29uc3QKICAg
ICBjYWlyb19tYXRyaXhfdCBtYXRyaXggPSB7IHNjYWxlWCwgMCwgMCwgc2NhbGVZLCBsZWZ0UGFk
ZGluZywgdG9wUGFkZGluZyB9OwogICAgIGNhaXJvX3BhdHRlcm5fc2V0X21hdHJpeChwYXR0ZXJu
LmdldCgpLCAmbWF0cml4KTsKIAotICAgIFNoYWRvd0JsdXImIHNoYWRvdyA9IGNvbnRleHQucGxh
dGZvcm1Db250ZXh0KCktPnNoYWRvd0JsdXIoKTsKKyAgICBTaGFkb3dCbHVyIHNoYWRvdyh7IHNo
YWRvd1N0YXRlLmJsdXIsIHNoYWRvd1N0YXRlLmJsdXIgfSwgc2hhZG93U3RhdGUub2Zmc2V0LCBz
aGFkb3dTdGF0ZS5jb2xvciwgc2hhZG93U3RhdGUuaWdub3JlVHJhbnNmb3Jtcyk7CiAgICAgaWYg
KHNoYWRvdy50eXBlKCkgIT0gU2hhZG93Qmx1cjo6Tm9TaGFkb3cpIHsKICAgICAgICAgaWYgKEdy
YXBoaWNzQ29udGV4dCogc2hhZG93Q29udGV4dCA9IHNoYWRvdy5iZWdpblNoYWRvd0xheWVyKGNv
bnRleHQsIGRlc3RSZWN0KSkgewogICAgICAgICAgICAgZHJhd1BhdHRlcm5Ub0NhaXJvQ29udGV4
dChzaGFkb3dDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgcGF0dGVybi5nZXQoKSwg
ZGVzdFJlY3QsIDEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL1BsYXRmb3JtQ29udGV4dENhaXJvLmgKaW5kZXggMThkZmI1MmEwMWU4
NTdlNWU0MmFmZTk3M2ZjNDE2ZmNiZTQ3NTIxOC4uOTE4MzYyNmQ5ZTU0ODQzNmM5ZjIzN2M1ZmYy
YzFjNTcxNzhlZTNjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vUGxhdGZvcm1Db250ZXh0Q2Fpcm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9QbGF0Zm9ybUNvbnRleHRDYWlyby5oCkBAIC00MCw2ICs0MCw3
IEBAIHN0cnVjdCBHcmFwaGljc0NvbnRleHRTdGF0ZTsKIG5hbWVzcGFjZSBDYWlybyB7CiBzdHJ1
Y3QgRmlsbFNvdXJjZTsKIHN0cnVjdCBTdHJva2VTb3VyY2U7CitzdHJ1Y3QgU2hhZG93U3RhdGU7
CiB9CiAKIC8vIE11Y2ggbGlrZSBQbGF0Zm9ybUNvbnRleHRTa2lhIGluIHRoZSBTa2lhIHBvcnQs
IHRoaXMgY2xhc3MgaG9sZHMgaW5mb3JtYXRpb24gdGhhdApAQCAtNTksNyArNjAsNiBAQCBwdWJs
aWM6CiAgICAgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKiBncmFwaGljc0NvbnRleHRQ
cml2YXRlKCkgeyByZXR1cm4gbV9ncmFwaGljc0NvbnRleHRQcml2YXRlOyB9CiAgICAgdm9pZCBz
ZXRHcmFwaGljc0NvbnRleHRQcml2YXRlKEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZSog
Z3JhcGhpY3NDb250ZXh0UHJpdmF0ZSkgeyBtX2dyYXBoaWNzQ29udGV4dFByaXZhdGUgPSBncmFw
aGljc0NvbnRleHRQcml2YXRlOyB9CiAKLSAgICBTaGFkb3dCbHVyJiBzaGFkb3dCbHVyKCkgeyBy
ZXR1cm4gbV9zaGFkb3dCbHVyOyB9CiAgICAgVmVjdG9yPGZsb2F0PiYgbGF5ZXJzKCkgeyByZXR1
cm4gbV9sYXllcnM7IH0KIAogICAgIHZvaWQgc2F2ZSgpOwpAQCAtNjgsNyArNjgsNyBAQCBwdWJs
aWM6CiAgICAgZmxvYXQgZ2xvYmFsQWxwaGEoKSBjb25zdDsKIAogICAgIHZvaWQgcHVzaEltYWdl
TWFzayhjYWlyb19zdXJmYWNlX3QqLCBjb25zdCBGbG9hdFJlY3QmKTsKLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGRyYXdTdXJmYWNlVG9Db250ZXh0KGNhaXJvX3N1cmZhY2VfdCosIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgR3JhcGhpY3NDb250
ZXh0Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3U3VyZmFjZVRvQ29udGV4dChjYWly
b19zdXJmYWNlX3QqLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IENhaXJvOjpTaGFkb3dTdGF0ZSYsIEdyYXBoaWNzQ29udGV4dCYpOwog
CiAgICAgdm9pZCBzZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRpb25RdWFs
aXR5KTsKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5
KCkgY29uc3Q7CkBAIC05Myw5ICs5Myw2IEBAIHByaXZhdGU6CiAgICAgU3RhdGUqIG1fc3RhdGU7
CiAgICAgV1RGOjpWZWN0b3I8U3RhdGU+IG1fc3RhdGVTdGFjazsKIAotICAgIC8vIEdyYXBoaWNz
Q29udGV4dCBpcyByZXNwb25zaWJsZSBmb3IgbWFuYWdpbmcgdGhlIHN0YXRlIG9mIHRoZSBTaGFk
b3dCbHVyLAotICAgIC8vIHNvIGl0IGRvZXMgbm90IG5lZWQgdG8gYmUgb24gdGhlIHN0YXRlIHN0
YWNrLgotICAgIFNoYWRvd0JsdXIgbV9zaGFkb3dCbHVyOwogICAgIC8vIFRyYW5zcGFyZW5jeSBs
YXllcnMuCiAgICAgVmVjdG9yPGZsb2F0PiBtX2xheWVyczsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFG
b3VuZGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRp
YVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwCmluZGV4IGI5Y2VlYmMxNzVlYWM2NGM0
MzRhMDkzZTRkMGU2MzU2NmQ0MjM2ZTAuLmRkOGQxMjM5YzY3Njc3MWIwODNiNzE0MjhlN2E3MzM4
MzZhNzY3ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9NZWRpYVBsYXllclByaXZhdGVNZWRpYUZvdW5kYXRp
b24uY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSG9zdFdpbmRvdy5oIgogI2luY2x1
ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaWYgVVNFKENBSVJPKQorI2luY2x1ZGUgIkNhaXJvT3Bl
cmF0aW9ucy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dENhaXJvLmgiCiAjaW5jbHVkZSA8
Y2Fpcm8uaD4KICNlbmRpZgpAQCAtMjk3Myw3ICsyOTc0LDcgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVNZWRpYUZvdW5kYXRpb246OkRpcmVjdDNEUHJlc2VudGVyOjpwYWludEN1cnJlbnRGcmFt
ZShXZWIKICAgICAgICAgRmxvYXRSZWN0IHNyY1JlY3QoMCwgMCwgd2lkdGgsIGhlaWdodCk7CiAg
ICAgICAgIGlmIChpbWFnZSkgewogICAgICAgICAgICAgV2ViQ29yZTo6UGxhdGZvcm1Db250ZXh0
Q2Fpcm8qIGN0eHQgPSBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpOwotICAgICAgICAgICAgY3R4
dC0+ZHJhd1N1cmZhY2VUb0NvbnRleHQoaW1hZ2UsIGRlc3RSZWN0LCBzcmNSZWN0LCBjb250ZXh0
KTsKKyAgICAgICAgICAgIGN0eHQtPmRyYXdTdXJmYWNlVG9Db250ZXh0KGltYWdlLCBkZXN0UmVj
dCwgc3JjUmVjdCwgQ2Fpcm86OlNoYWRvd1N0YXRlKGNvbnRleHQuc3RhdGUoKSksIGNvbnRleHQp
OwogICAgICAgICAgICAgY2Fpcm9fc3VyZmFjZV9kZXN0cm95KGltYWdlKTsKICAgICAgICAgfQog
I2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJp
dG1hcENhaXJvLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NhaXJvL1NoYXJlYWJsZUJpdG1h
cENhaXJvLmNwcAppbmRleCBiMjM3MzllNTUwOTUzYzBjOWViMjFlMWQyZDkxODc5MzdlZGJjYzlm
Li5hY2JkMjBkZDY0YTcyOGM5NGZmNTFjYzhmNzA4ODkxMGQ1NjM4NTgyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9jYWlyby9TaGFyZWFibGVCaXRtYXBDYWlyby5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvY2Fpcm8vU2hhcmVhYmxlQml0bWFwQ2Fpcm8uY3BwCkBAIC0y
OSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAKICNpbmNsdWRlIDxX
ZWJDb3JlL0JpdG1hcEltYWdlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9DYWlyb09wZXJhdGlvbnMu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0NhaXJvVXRpbGl0aWVzLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9HcmFwaGljc0NvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtQ29udGV4dENh
aXJvLmg+CkBAIC03NCw3ICs3NSw3IEBAIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpwYWludChHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNjYWxlRmFjdG9yLCBjb25zdCBJCiAgICAgRmxv
YXRSZWN0IGRlc3RSZWN0KGRzdFBvaW50LCBzcmNSZWN0LnNpemUoKSk7CiAgICAgRmxvYXRSZWN0
IHNyY1JlY3RTY2FsZWQoc3JjUmVjdCk7CiAgICAgc3JjUmVjdFNjYWxlZC5zY2FsZShzY2FsZUZh
Y3Rvcik7Ci0gICAgY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKS0+ZHJhd1N1cmZhY2VUb0NvbnRl
eHQoc3VyZmFjZS5nZXQoKSwgZGVzdFJlY3QsIHNyY1JlY3RTY2FsZWQsIGNvbnRleHQpOworICAg
IGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCktPmRyYXdTdXJmYWNlVG9Db250ZXh0KHN1cmZhY2Uu
Z2V0KCksIGRlc3RSZWN0LCBzcmNSZWN0U2NhbGVkLCBDYWlybzo6U2hhZG93U3RhdGUoY29udGV4
dC5zdGF0ZSgpKSwgY29udGV4dCk7CiB9CiAKIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IFNoYXJl
YWJsZUJpdG1hcDo6Y3JlYXRlQ2Fpcm9TdXJmYWNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvZ3RrL1dlYkRyYWdDbGllbnRH
dGsuY3BwCmluZGV4IDAyZTY2ODdiNGY1OWQ5OGNmNjY0MmMwNmVkOGEwODU3YTE0MmZjYTkuLmI2
Y2QxYmZlNDcwNjM4MDQ4OTA4NTc4YzgwZTA4YzFlOGY4NzM3YzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9ndGsvV2ViRHJhZ0NsaWVudEd0ay5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ay9XZWJE
cmFnQ2xpZW50R3RrLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIldlYlBhZ2UuaCIK
ICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlNlbGVjdGlv
bkRhdGEuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NhaXJvT3BlcmF0aW9ucy5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvRGF0YVRyYW5zZmVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EcmFnRGF0YS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CkBAIC01Myw3ICs1NCw3IEBAIHN0
YXRpYyBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBjb252ZXJ0Q2Fpcm9TdXJmYWNlVG9TaGFyZWFi
bGVCaXRtYXAoY2Fpcm9fc3VyZmFjCiAgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFw
ID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoaW1hZ2VTaXplLCB7IH0pOwogICAg
IGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gYml0bWFwLT5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsK
IAotICAgIGdyYXBoaWNzQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmRyYXdTdXJmYWNlVG9D
b250ZXh0KHN1cmZhY2UsIEludFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VTaXplKSwgSW50UmVjdChJ
bnRQb2ludCgpLCBpbWFnZVNpemUpLCAqZ3JhcGhpY3NDb250ZXh0KTsKKyAgICBncmFwaGljc0Nv
bnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5kcmF3U3VyZmFjZVRvQ29udGV4dChzdXJmYWNlLCBJ
bnRSZWN0KEludFBvaW50KCksIGltYWdlU2l6ZSksIEludFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VT
aXplKSwgQ2Fpcm86OlNoYWRvd1N0YXRlKGdyYXBoaWNzQ29udGV4dC0+c3RhdGUoKSksICpncmFw
aGljc0NvbnRleHQpOwogICAgIHJldHVybiBiaXRtYXA7CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>