<?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>179290</bug_id>
          
          <creation_ts>2017-11-04 16:27:21 -0700</creation_ts>
          <short_desc>Move code that maps a CompositeOperator and BlendMode to a CGBlendMode into a helper function</short_desc>
          <delta_ts>2017-11-15 12:10:54 -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="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>darin</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1368401</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-11-04 16:27:21 -0700</bug_when>
    <thetext>Move code that maps a CompositeOperator and BlendMode to a CGBlendMode into a helper function</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368403</commentid>
    <comment_count>1</comment_count>
      <attachid>326050</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-11-04 16:28:25 -0700</bug_when>
    <thetext>Created attachment 326050
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368417</commentid>
    <comment_count>2</comment_count>
      <attachid>326056</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-11-04 18:46:38 -0700</bug_when>
    <thetext>Created attachment 326056
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368418</commentid>
    <comment_count>3</comment_count>
      <attachid>326057</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-11-04 18:47:26 -0700</bug_when>
    <thetext>Created attachment 326057
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368419</commentid>
    <comment_count>4</comment_count>
      <attachid>326057</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-11-04 19:35:17 -0700</bug_when>
    <thetext>Comment on attachment 326057
Patch

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

&gt; Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp:140
&gt; +static CGBlendMode compositeAndBlendToCGBlendMode(CompositeOperator compositeOperator, BlendMode blendMode)

Since this is C++ I don’t think we really need to restate what the arguments are in the function name. I think this should be called something like selectCGBlendMode.

I think it’s a little strange that it ignores the composite operator when the blend mode is something other than normal. It’s hard to understand why that’s OK. I’m sure there is a good reason. I would love to have a comment explaining it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368420</commentid>
    <comment_count>5</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-11-04 20:14:13 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #4)
&gt; Comment on attachment 326057 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=326057&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp:140
&gt; &gt; +static CGBlendMode compositeAndBlendToCGBlendMode(CompositeOperator compositeOperator, BlendMode blendMode)
&gt; 
&gt; Since this is C++ I don’t think we really need to restate what the arguments
&gt; are in the function name. I think this should be called something like
&gt; selectCGBlendMode.

I&apos;ll change it.

&gt; I think it’s a little strange that it ignores the composite operator when
&gt; the blend mode is something other than normal. It’s hard to understand why
&gt; that’s OK. I’m sure there is a good reason. I would love to have a comment
&gt; explaining it.

Yeah. I&apos;m not sure why we distinguish between CompositeOperator and BlendMode throughout the WebKit code; it seems like some spec purity modeled after https://www.w3.org/TR/compositing-1. CG smooshes them into one enum.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1368424</commentid>
    <comment_count>6</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-11-04 22:40:55 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/224465/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1372098</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-11-15 12:10:54 -0800</bug_when>
    <thetext>&lt;rdar://problem/35567092&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>326050</attachid>
            <date>2017-11-04 16:28:25 -0700</date>
            <delta_ts>2017-11-04 18:46:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179290-20171104162824.patch</filename>
            <type>text/plain</type>
            <size>8712</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0NDUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzk4NDFmYmFmYTJhMzFm
OGQ1ZDFhMmI2YzdjOWJkMjM3MjllYzgzOS4uM2E4YjEzNTIxYzhmMGQ3NjFlYjJiNDlmOTRmODEw
ZTI1NjU4ODFkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE5IEBACiAyMDE3LTExLTA0ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCisgICAgICAgIE1vdmUgY29kZSB0
aGF0IG1hcHMgYSBDb21wb3NpdGVPcGVyYXRvciBhbmQgQmxlbmRNb2RlIHRvIGEgQ0dCbGVuZE1v
ZGUgaW50byBhIGhlbHBlciBmdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTc5MjkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTW92ZSB0aGUgY29kZSwgYW5kIHVzZSBuZXN0ZWQgc3dpdGNoIHJh
dGhlciB0aGFuIGNvbmRpdGlvbmFscy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzVHlwZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb21wb3NpdGVBbmRCbGVuZFRvQ0dCbGVu
ZE1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUNv
bXBvc2l0ZU9wZXJhdGlvbik6CisKKzIwMTctMTEtMDQgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZy
YXNlckBhcHBsZS5jb20+CisKICAgICAgICAgQWRkIGEgR3JhcGhpY3NDb250ZXh0SW1wbCBhbmQg
dXNlIGl0IGZvciBEaXNwYXlMaXN0OjpSZWNvcmRlcgogICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5Mjg2CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuaAppbmRleCBjZTQ0MzNlNGM0OGIxOTgyNWU3
Y2E1ZGY4NzQ5OThhNGRmMTM2ODYxLi4xMjQxN2FkZWE3MzYxYzlmMTI4ZGI1OWU3MDNlMzM1Njhj
OGRmYjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc1R5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NUeXBlcy5oCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZu
ZGVmIEdyYXBoaWNzVHlwZXNfaAotI2RlZmluZSBHcmFwaGljc1R5cGVzX2gKKyNwcmFnbWEgb25j
ZQogCiAjaW5jbHVkZSAiV2luZFJ1bGUuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAt
MTIxLDQgKzEyMCwzIEBAIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChXVEY6OlRleHRTdHJlYW0mLCBMaW5lSm9pbik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKaW5kZXggZmMyOTFlMmVjYmNkMjZiNjFmZTVjZTI5
MDBhODRhNWZjODczZDZlNy4uMGVlODM1MTJiZmFiMTgwNDQ1M2E1MWZlZWY4M2FlODE5M2VlODFk
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhp
Y3NDb250ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dENHLmNwcApAQCAtMTM3LDYgKzEzNyw4MCBAQCBzdGF0aWMgSW50ZXJw
b2xhdGlvblF1YWxpdHkgY29udmVydEludGVycG9sYXRpb25RdWFsaXR5KENHSW50ZXJwb2xhdGlv
blF1YWxpdHkgcQogICAgIHJldHVybiBJbnRlcnBvbGF0aW9uRGVmYXVsdDsKIH0KIAorc3RhdGlj
IENHQmxlbmRNb2RlIGNvbXBvc2l0ZUFuZEJsZW5kVG9DR0JsZW5kTW9kZShDb21wb3NpdGVPcGVy
YXRvciBjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3sKKyAgICBzd2l0
Y2ggKGJsZW5kTW9kZSkgeworICAgIGNhc2UgQmxlbmRNb2RlTm9ybWFsOgorICAgICAgICBzd2l0
Y2ggKGNvbXBvc2l0ZU9wZXJhdG9yKSB7CisgICAgICAgIGNhc2UgQ29tcG9zaXRlQ2xlYXI6Cisg
ICAgICAgICAgICByZXR1cm4ga0NHQmxlbmRNb2RlQ2xlYXI7CisgICAgICAgIGNhc2UgQ29tcG9z
aXRlQ29weToKKyAgICAgICAgICAgIHJldHVybiBrQ0dCbGVuZE1vZGVDb3B5OworICAgICAgICBj
YXNlIENvbXBvc2l0ZVNvdXJjZU92ZXI6CisgICAgICAgICAgICByZXR1cm4ga0NHQmxlbmRNb2Rl
Tm9ybWFsOworICAgICAgICBjYXNlIENvbXBvc2l0ZVNvdXJjZUluOgorICAgICAgICAgICAgcmV0
dXJuIGtDR0JsZW5kTW9kZVNvdXJjZUluOworICAgICAgICBjYXNlIENvbXBvc2l0ZVNvdXJjZU91
dDoKKyAgICAgICAgICAgIHJldHVybiBrQ0dCbGVuZE1vZGVTb3VyY2VPdXQ7CisgICAgICAgIGNh
c2UgQ29tcG9zaXRlU291cmNlQXRvcDoKKyAgICAgICAgICAgIHJldHVybiBrQ0dCbGVuZE1vZGVT
b3VyY2VBdG9wOworICAgICAgICBjYXNlIENvbXBvc2l0ZURlc3RpbmF0aW9uT3ZlcjoKKyAgICAg
ICAgICAgIHJldHVybiBrQ0dCbGVuZE1vZGVEZXN0aW5hdGlvbk92ZXI7CisgICAgICAgIGNhc2Ug
Q29tcG9zaXRlRGVzdGluYXRpb25JbjoKKyAgICAgICAgICAgIHJldHVybiBrQ0dCbGVuZE1vZGVE
ZXN0aW5hdGlvbkluOworICAgICAgICBjYXNlIENvbXBvc2l0ZURlc3RpbmF0aW9uT3V0OgorICAg
ICAgICAgICAgcmV0dXJuIGtDR0JsZW5kTW9kZURlc3RpbmF0aW9uT3V0OworICAgICAgICBjYXNl
IENvbXBvc2l0ZURlc3RpbmF0aW9uQXRvcDoKKyAgICAgICAgICAgIHJldHVybiBrQ0dCbGVuZE1v
ZGVEZXN0aW5hdGlvbkF0b3A7CisgICAgICAgIGNhc2UgQ29tcG9zaXRlWE9SOgorICAgICAgICAg
ICAgcmV0dXJuIGtDR0JsZW5kTW9kZVhPUjsKKyAgICAgICAgY2FzZSBDb21wb3NpdGVQbHVzRGFy
a2VyOgorICAgICAgICAgICAgcmV0dXJuIGtDR0JsZW5kTW9kZVBsdXNEYXJrZXI7CisgICAgICAg
IGNhc2UgQ29tcG9zaXRlUGx1c0xpZ2h0ZXI6CisgICAgICAgICAgICByZXR1cm4ga0NHQmxlbmRN
b2RlUGx1c0xpZ2h0ZXI7CisgICAgICAgIGNhc2UgQ29tcG9zaXRlRGlmZmVyZW5jZToKKyAgICAg
ICAgICAgIHJldHVybiBrQ0dCbGVuZE1vZGVEaWZmZXJlbmNlOworICAgICAgICB9CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgQmxlbmRNb2RlTXVsdGlwbHk6CisgICAgICAgIHJldHVybiBrQ0dC
bGVuZE1vZGVNdWx0aXBseTsKKyAgICBjYXNlIEJsZW5kTW9kZVNjcmVlbjoKKyAgICAgICAgcmV0
dXJuIGtDR0JsZW5kTW9kZVNjcmVlbjsKKyAgICBjYXNlIEJsZW5kTW9kZU92ZXJsYXk6CisgICAg
ICAgIHJldHVybiBrQ0dCbGVuZE1vZGVPdmVybGF5OworICAgIGNhc2UgQmxlbmRNb2RlRGFya2Vu
OgorICAgICAgICByZXR1cm4ga0NHQmxlbmRNb2RlRGFya2VuOworICAgIGNhc2UgQmxlbmRNb2Rl
TGlnaHRlbjoKKyAgICAgICAgcmV0dXJuIGtDR0JsZW5kTW9kZUxpZ2h0ZW47CisgICAgY2FzZSBC
bGVuZE1vZGVDb2xvckRvZGdlOgorICAgICAgICByZXR1cm4ga0NHQmxlbmRNb2RlQ29sb3JEb2Rn
ZTsKKyAgICBjYXNlIEJsZW5kTW9kZUNvbG9yQnVybjoKKyAgICAgICAgcmV0dXJuIGtDR0JsZW5k
TW9kZUNvbG9yQnVybjsKKyAgICBjYXNlIEJsZW5kTW9kZUhhcmRMaWdodDoKKyAgICAgICAgcmV0
dXJuIGtDR0JsZW5kTW9kZUhhcmRMaWdodDsKKyAgICBjYXNlIEJsZW5kTW9kZVNvZnRMaWdodDoK
KyAgICAgICAgcmV0dXJuIGtDR0JsZW5kTW9kZVNvZnRMaWdodDsKKyAgICBjYXNlIEJsZW5kTW9k
ZURpZmZlcmVuY2U6CisgICAgICAgIHJldHVybiBrQ0dCbGVuZE1vZGVEaWZmZXJlbmNlOworICAg
IGNhc2UgQmxlbmRNb2RlRXhjbHVzaW9uOgorICAgICAgICByZXR1cm4ga0NHQmxlbmRNb2RlRXhj
bHVzaW9uOworICAgIGNhc2UgQmxlbmRNb2RlSHVlOgorICAgICAgICByZXR1cm4ga0NHQmxlbmRN
b2RlSHVlOworICAgIGNhc2UgQmxlbmRNb2RlU2F0dXJhdGlvbjoKKyAgICAgICAgcmV0dXJuIGtD
R0JsZW5kTW9kZVNhdHVyYXRpb247CisgICAgY2FzZSBCbGVuZE1vZGVDb2xvcjoKKyAgICAgICAg
cmV0dXJuIGtDR0JsZW5kTW9kZUNvbG9yOworICAgIGNhc2UgQmxlbmRNb2RlTHVtaW5vc2l0eToK
KyAgICAgICAgcmV0dXJuIGtDR0JsZW5kTW9kZUx1bWlub3NpdHk7CisgICAgY2FzZSBCbGVuZE1v
ZGVQbHVzRGFya2VyOgorICAgICAgICByZXR1cm4ga0NHQmxlbmRNb2RlUGx1c0RhcmtlcjsKKyAg
ICBjYXNlIEJsZW5kTW9kZVBsdXNMaWdodGVyOgorICAgICAgICByZXR1cm4ga0NHQmxlbmRNb2Rl
UGx1c0xpZ2h0ZXI7CisgICAgfQorCisgICAgcmV0dXJuIGtDR0JsZW5kTW9kZU5vcm1hbDsKK30K
Kwogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtSW5pdChDR0NvbnRleHRSZWYgY2dDb250
ZXh0KQogewogICAgIGlmICghY2dDb250ZXh0KQpAQCAtMTczNCwxMTcgKzE4MDgsMTMgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtQWxwaGEoZmxvYXQgYWxwaGEpCiAgICAgQ0dD
b250ZXh0U2V0QWxwaGEocGxhdGZvcm1Db250ZXh0KCksIGFscGhhKTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHQ6OnNldFBsYXRmb3JtQ29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJh
dG9yIG1vZGUsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0
UGxhdGZvcm1Db21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3Bl
cmF0b3IsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQo
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsK
LQotICAgIENHQmxlbmRNb2RlIHRhcmdldCA9IGtDR0JsZW5kTW9kZU5vcm1hbDsKLSAgICBpZiAo
YmxlbmRNb2RlICE9IEJsZW5kTW9kZU5vcm1hbCkgewotICAgICAgICBzd2l0Y2ggKGJsZW5kTW9k
ZSkgewotICAgICAgICBjYXNlIEJsZW5kTW9kZU11bHRpcGx5OgotICAgICAgICAgICAgdGFyZ2V0
ID0ga0NHQmxlbmRNb2RlTXVsdGlwbHk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBCbGVuZE1vZGVTY3JlZW46Ci0gICAgICAgICAgICB0YXJnZXQgPSBrQ0dCbGVuZE1vZGVTY3Jl
ZW47Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBCbGVuZE1vZGVPdmVybGF5Ogot
ICAgICAgICAgICAgdGFyZ2V0ID0ga0NHQmxlbmRNb2RlT3ZlcmxheTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIEJsZW5kTW9kZURhcmtlbjoKLSAgICAgICAgICAgIHRhcmdldCA9
IGtDR0JsZW5kTW9kZURhcmtlbjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEJs
ZW5kTW9kZUxpZ2h0ZW46Ci0gICAgICAgICAgICB0YXJnZXQgPSBrQ0dCbGVuZE1vZGVMaWdodGVu
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQmxlbmRNb2RlQ29sb3JEb2RnZToK
LSAgICAgICAgICAgIHRhcmdldCA9IGtDR0JsZW5kTW9kZUNvbG9yRG9kZ2U7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBCbGVuZE1vZGVDb2xvckJ1cm46Ci0gICAgICAgICAgICB0
YXJnZXQgPSBrQ0dCbGVuZE1vZGVDb2xvckJ1cm47Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBCbGVuZE1vZGVIYXJkTGlnaHQ6Ci0gICAgICAgICAgICB0YXJnZXQgPSBrQ0dCbGVu
ZE1vZGVIYXJkTGlnaHQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBCbGVuZE1v
ZGVTb2Z0TGlnaHQ6Ci0gICAgICAgICAgICB0YXJnZXQgPSBrQ0dCbGVuZE1vZGVTb2Z0TGlnaHQ7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBCbGVuZE1vZGVEaWZmZXJlbmNlOgot
ICAgICAgICAgICAgdGFyZ2V0ID0ga0NHQmxlbmRNb2RlRGlmZmVyZW5jZTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIEJsZW5kTW9kZUV4Y2x1c2lvbjoKLSAgICAgICAgICAgIHRh
cmdldCA9IGtDR0JsZW5kTW9kZUV4Y2x1c2lvbjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIEJsZW5kTW9kZUh1ZToKLSAgICAgICAgICAgIHRhcmdldCA9IGtDR0JsZW5kTW9kZUh1
ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEJsZW5kTW9kZVNhdHVyYXRpb246
Ci0gICAgICAgICAgICB0YXJnZXQgPSBrQ0dCbGVuZE1vZGVTYXR1cmF0aW9uOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQmxlbmRNb2RlQ29sb3I6Ci0gICAgICAgICAgICB0YXJn
ZXQgPSBrQ0dCbGVuZE1vZGVDb2xvcjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IEJsZW5kTW9kZUx1bWlub3NpdHk6Ci0gICAgICAgICAgICB0YXJnZXQgPSBrQ0dCbGVuZE1vZGVM
dW1pbm9zaXR5OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQmxlbmRNb2RlUGx1
c0RhcmtlcjoKLSAgICAgICAgICAgIHRhcmdldCA9IGtDR0JsZW5kTW9kZVBsdXNEYXJrZXI7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBCbGVuZE1vZGVQbHVzTGlnaHRlcjoKLSAg
ICAgICAgICAgIHRhcmdldCA9IGtDR0JsZW5kTW9kZVBsdXNMaWdodGVyOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgIH0gZWxzZSB7Ci0gICAgICAgIHN3aXRjaCAobW9kZSkgewotICAgICAgICBjYXNlIENvbXBv
c2l0ZUNsZWFyOgotICAgICAgICAgICAgdGFyZ2V0ID0ga0NHQmxlbmRNb2RlQ2xlYXI7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDb21wb3NpdGVDb3B5OgotICAgICAgICAgICAg
dGFyZ2V0ID0ga0NHQmxlbmRNb2RlQ29weTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIENvbXBvc2l0ZVNvdXJjZU92ZXI6Ci0gICAgICAgICAgICAvLyBrQ0dCbGVuZE1vZGVOb3Jt
YWwKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENvbXBvc2l0ZVNvdXJjZUluOgot
ICAgICAgICAgICAgdGFyZ2V0ID0ga0NHQmxlbmRNb2RlU291cmNlSW47Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBDb21wb3NpdGVTb3VyY2VPdXQ6Ci0gICAgICAgICAgICB0YXJn
ZXQgPSBrQ0dCbGVuZE1vZGVTb3VyY2VPdXQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBDb21wb3NpdGVTb3VyY2VBdG9wOgotICAgICAgICAgICAgdGFyZ2V0ID0ga0NHQmxlbmRN
b2RlU291cmNlQXRvcDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENvbXBvc2l0
ZURlc3RpbmF0aW9uT3ZlcjoKLSAgICAgICAgICAgIHRhcmdldCA9IGtDR0JsZW5kTW9kZURlc3Rp
bmF0aW9uT3ZlcjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENvbXBvc2l0ZURl
c3RpbmF0aW9uSW46Ci0gICAgICAgICAgICB0YXJnZXQgPSBrQ0dCbGVuZE1vZGVEZXN0aW5hdGlv
bkluOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ29tcG9zaXRlRGVzdGluYXRp
b25PdXQ6Ci0gICAgICAgICAgICB0YXJnZXQgPSBrQ0dCbGVuZE1vZGVEZXN0aW5hdGlvbk91dDsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENvbXBvc2l0ZURlc3RpbmF0aW9uQXRv
cDoKLSAgICAgICAgICAgIHRhcmdldCA9IGtDR0JsZW5kTW9kZURlc3RpbmF0aW9uQXRvcDsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENvbXBvc2l0ZVhPUjoKLSAgICAgICAgICAg
IHRhcmdldCA9IGtDR0JsZW5kTW9kZVhPUjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIENvbXBvc2l0ZVBsdXNEYXJrZXI6Ci0gICAgICAgICAgICB0YXJnZXQgPSBrQ0dCbGVuZE1v
ZGVQbHVzRGFya2VyOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ29tcG9zaXRl
UGx1c0xpZ2h0ZXI6Ci0gICAgICAgICAgICB0YXJnZXQgPSBrQ0dCbGVuZE1vZGVQbHVzTGlnaHRl
cjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENvbXBvc2l0ZURpZmZlcmVuY2U6
Ci0gICAgICAgICAgICB0YXJnZXQgPSBrQ0dCbGVuZE1vZGVEaWZmZXJlbmNlOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgQ0dDb250ZXh0U2V0QmxlbmRNb2RlKHBs
YXRmb3JtQ29udGV4dCgpLCB0YXJnZXQpOworICAgIENHQ29udGV4dFNldEJsZW5kTW9kZShwbGF0
Zm9ybUNvbnRleHQoKSwgY29tcG9zaXRlQW5kQmxlbmRUb0NHQmxlbmRNb2RlKGNvbXBvc2l0ZU9w
ZXJhdG9yLCBibGVuZE1vZGUpKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3Jt
QXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>326056</attachid>
            <date>2017-11-04 18:46:38 -0700</date>
            <delta_ts>2017-11-04 18:46:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179290-20171104184637.patch</filename>
            <type>text/plain</type>
            <size>89253</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0NDUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjFhZTMxYmEzZGZiZDhj
Yjc1NmJmMGJmNDI4YWMzZWZkZWIzZGRhNC4uM2E4YjEzNTIxYzhmMGQ3NjFlYjJiNDlmOTRmODEw
ZTI1NjU4ODFkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4NSBAQAorMjAxNy0xMS0wNCAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIGNvZGUg
dGhhdCBtYXBzIGEgQ29tcG9zaXRlT3BlcmF0b3IgYW5kIEJsZW5kTW9kZSB0byBhIENHQmxlbmRN
b2RlIGludG8gYSBoZWxwZXIgZnVuY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3OTI5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE1vdmUgdGhlIGNvZGUsIGFuZCB1c2UgbmVzdGVkIHN3aXRjaCBy
YXRoZXIgdGhhbiBjb25kaXRpb25hbHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc1R5cGVzLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3ND
b250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29tcG9zaXRlQW5kQmxlbmRUb0NHQmxl
bmRNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1D
b21wb3NpdGVPcGVyYXRpb24pOgorCisyMDE3LTExLTA0ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5m
cmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIEdyYXBoaWNzQ29udGV4dEltcGwgYW5k
IHVzZSBpdCBmb3IgRGlzcGF5TGlzdDo6UmVjb3JkZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTI4NgorCisgICAgICAgIFJldmlld2VkIGJ5IFNh
bSBXZWluaWcuCisKKyAgICAgICAgU3RhcnQgbW92aW5nIHRvd2FyZHMgYSBtb2RlbCB3aGVuIEdy
YXBoaWNzQ29udGV4dCBoYXMgYSBwb2ludGVyIHRvIGFuIGltcGxlbWVudGF0aW9uCisgICAgICAg
ICgicGltcGwiKSBieSBhZGRpbmcgR3JhcGhpY3NDb250ZXh0SW1wbCwgYW5kIGNvbnZlcnRpbmcg
ZGlzcGxheSBsaXN0IHJlY29yZGluZyB0bworICAgICAgICBiZSBhbiBpbXBsZW1lbnRhdGlvbiBv
ZiBhIEdyYXBoaWNzQ29udGV4dEltcGwuCisKKyAgICAgICAgTm8gYmVoYXZpb3IgY2hhbmdlLgor
CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0OjpE
aXNwbGF5TGlzdERyYXdpbmdDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpH
cmFwaGljc0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzYXZl
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cmVzdG9yZSk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZVRoaWNrbmVzcyk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZVN0eWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tlQ29sb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpzZXRMZWdhY3lTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpjbGVhclNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OnNldEZpbGxDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6c2V0U2hvdWxkQW50aWFsaWFzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6c2V0U2hvdWxkU21vb3RoRm9udHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0OjpzZXRTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpzZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tlUGF0dGVybik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tlR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OnNldEZpbGxHcmFkaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjplbmRUcmFuc3BhcmVuY3lMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OmRyYXdHbHlwaHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpkcmF3SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpk
cmF3VGlsZWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFRl
eHREcmF3aW5nTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0QWxwaGEpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRDb21wb3NpdGVPcGVyYXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXREcmF3THVtaW5hbmNlTWFzayk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmFwcGx5RGV2aWNlU2NhbGVGYWN0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsRWxsaXBzZSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnN0cm9rZUVsbGlwc2UpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpoYXNQbGF0Zm9ybUNvbnRleHQgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpwYWludGluZ0Rpc2FibGVkIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RGlzcGxheUxpc3RSZWNvcmRlcik6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmlzUmVjb3JkaW5nIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJ
bXBsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRJbXBsOjpH
cmFwaGljc0NvbnRleHRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dElt
cGw6On5HcmFwaGljc0NvbnRleHRJbXBsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHRJbXBsLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0SW1wbDo6Z3JhcGhpY3NDb250ZXh0IGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NMYXllckNBOjpyZWN1cnNpdmVDb21taXRDaGFuZ2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OmdldENUTSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OnNhdmVQbGF0Zm9ybVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6cmVzdG9yZVBsYXRmb3JtU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpkcmF3UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OmRyYXdMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0VsbGlw
c2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0aCk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVBhdGgpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OmNsaXApOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpj
bGlwUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsaXBCb3VuZHMg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZXNGb3JU
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cm91bmRUb0RldmljZVBp
eGVscyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnRyYW5zbGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU3Ryb2tlVGhpY2tu
ZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TdHJv
a2VTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNvbmNhdENUTSk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldENUTSk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmJlZ2luUGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcik6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmVuZFBsYXRmb3JtVHJhbnNwYXJl
bmN5TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGVhclJlY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzdHJva2VSZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0TGluZUNhcCk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldExpbmVEYXNoKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6c2V0TGluZUpvaW4pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpzZXRNaXRlckxpbWl0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6Y2xpcE91dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnJvdGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNjYWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1GaWxsUm91bmRlZFJlY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaG91bGRBbnRpYWxpYXMpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUltYWdlSW50ZXJw
b2xhdGlvblF1YWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojppc0Fj
Y2VsZXJhdGVkQ29udGV4dCBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
R3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpzYXZlUGxhdGZvcm1TdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OnJlc3RvcmVQbGF0Zm9ybVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6ZHJhd05hdGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
ZHJhd1BhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3UmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0VsbGlwc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjphcHBseVN0cm9rZVBhdHRlcm4pOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjphcHBseUZpbGxQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdGgpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpmaWxsUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OnN0cm9rZVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtRmlsbFJvdW5k
ZWRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3RXaXRo
Um91bmRlZEhvbGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGlwKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dCk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNsaXBQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6Y2xpcEJvdW5kcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OmJlZ2luUGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcik6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmVuZFBsYXRmb3JtVHJhbnNwYXJlbmN5TGF5ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVNoYWRvdyk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldE1pdGVyTGltaXQpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGVhclJlY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpzdHJva2VSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6c2V0TGluZUNhcCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OnNldExpbmVEYXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0
TGluZUpvaW4pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzY2FsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnJvdGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OnRyYW5zbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OmNvbmNhdENUTSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OnNldENUTSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmdldENUTSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnJvdW5kVG9EZXZpY2VQ
aXhlbHMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZXNGb3JU
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0VVJMRm9yUmVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldElzQ0FMYXllckNvbnRleHQp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojppc0NBTGF5ZXJDb250ZXh0IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0SXNBY2NlbGVyYXRl
ZENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojppc0FjY2VsZXJh
dGVkQ29udGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNl
dFBsYXRmb3JtVGV4dERyYXdpbmdNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6c2V0UGxhdGZvcm1TdHJva2VDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OnNldFBsYXRmb3JtU3Ryb2tlVGhpY2tuZXNzKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1GaWxsQ29sb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVNob3VsZEFudGlhbGlhcyk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU2hvdWxkU21vb3RoRm9udHMp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUFscGhhKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1Db21wb3NpdGVP
cGVyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUFw
cGx5RGV2aWNlU2NhbGVGYWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpwbGF0Zm9ybUZpbGxFbGxpcHNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6cGxhdGZvcm1TdHJva2VFbGxpcHNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDo6c2V0RGVzdGluYXRpb25Gb3JSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6YWRkRGVzdGluYXRpb25BdFBvaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6ZHJhd0ZvY3VzUmluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpSZWNvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6UmVjb3JkZXI6OnVwZGF0ZUl0ZW1FeHRlbnQgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpleHRlbnRGcm9tTG9jYWxCb3VuZHMgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6Oml0
ZW1Db3VudCBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lOjpwYWludCk6CisKIDIwMTctMTEtMDMgIFlvdWVu
biBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBTZXJ2aWNl
V29ya2VyQ29udGFpbmVyLmdldFJlZ2lzdHJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBkNzg2OTll
ZGVkNzg4M2U1MjE5MWM3OTA3NDJmNGJmNWYyMjFlNWYyLi5kMmUxZWY3ZGE5NzZkYzk3MjFlYzQ4
NzRjYTBiNzE2ZGU1MTYwZTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTUwNSw2ICsxNTA1LDcgQEAg
cGxhdGZvcm0vZ3JhcGhpY3MvR2VvbWV0cnlVdGlsaXRpZXMuY3BwCiBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFkaWVudC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0dyYWRpZW50SW1hZ2UuY3BwCiBwbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCitwbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHRJbXBsLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAK
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXJUcmFuc2Zvcm0uY3BwCiBwbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0xheWVyVXBkYXRlci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxYTAzMTFjMWYwNzUxNjk3YzA1
YTMyNjg1MDljNTRjMDQ2YWU5MjBjLi4wNzYwZjAzMTNiYTVkZDRlNDI0MzU2MWNjZmRlY2Q3MmNl
YjA4NDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC01MzQ5LDYgKzUzNDksOCBAQAogCQkwQzQ1MzQyNjEwQ0RCQkZBMDA4Njkx
NTcgLyogSlNXZWJHTFVuaWZvcm1Mb2NhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU1dlYkdMVW5pZm9ybUxvY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBFNzA1OEVEMUJDNUJDMTkwMDQ1QTUwNyAvKiBTZWFyY2hQb3B1cE1lbnVDb2NvYS5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNlYXJjaFBvcHVwTWVu
dUNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRTcwNThGMzFCQzVDQ0Q3
MDA0NUE1MDcgLyogU2VhcmNoUG9wdXBNZW51Q29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VhcmNo
UG9wdXBNZW51Q29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwMDEyM0Yx
RkFEODdENjAwNTMxRDc2IC8qIEdyYXBoaWNzQ29udGV4dEltcGwuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
R3JhcGhpY3NDb250ZXh0SW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjAw
MTI0MDFGQUQ4ODEwMDA1MzFENzYgLyogR3JhcGhpY3NDb250ZXh0SW1wbC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHRJbXBsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEYwM0MwNzMxODg0Njk1RTAwQTVGOENBIC8qIFN5c3RlbU1lbW9yeS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTeXN0ZW1NZW1vcnkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEYwOTlEMDYxN0I5NjhBMTAwRkY4NEI5IC8qIFdlYkNvcmVUeXBl
ZEFycmF5Q29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjA5OUQwNzE3Qjk2OEExMDBGRjg0QjkgLyogV2ViQ29yZVR5cGVkQXJyYXlDb250
cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvcmVUeXBlZEFy
cmF5Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjI2MzQsNiAr
MjI2MzYsOCBAQAogCQkJCTZFMjFDNkJGMTEyNjMzODUwMEE3QkUwMiAvKiBHcmFwaGljc0NvbnRl
eHQzRC5jcHAgKi8sCiAJCQkJNDlDN0I5RkIxMDQyRDM2NTAwMDlENDQ3IC8qIEdyYXBoaWNzQ29u
dGV4dDNELmggKi8sCiAJCQkJN0MzMzBBMDExREY4RkFDNjAwRDMzOTVDIC8qIEdyYXBoaWNzQ29u
dGV4dDNEQXR0cmlidXRlcy5oICovLAorCQkJCTBGMDAxMjQwMUZBRDg4MTAwMDUzMUQ3NiAvKiBH
cmFwaGljc0NvbnRleHRJbXBsLmNwcCAqLywKKwkJCQkwRjAwMTIzRjFGQUQ4N0Q2MDA1MzFENzYg
LyogR3JhcGhpY3NDb250ZXh0SW1wbC5oICovLAogCQkJCTBGNTgwQjA5MEYxMkEyNjkwMDUxRDY4
OSAvKiBHcmFwaGljc0xheWVyLmNwcCAqLywKIAkJCQkwRjU4MEIwQTBGMTJBMjY5MDA1MUQ2ODkg
LyogR3JhcGhpY3NMYXllci5oICovLAogCQkJCTBGNTgwQjBCMEYxMkEyNjkwMDUxRDY4OSAvKiBH
cmFwaGljc0xheWVyQ2xpZW50LmggKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAppbmRleCA0YTEwYWUxNTg5Yjhl
ZjhkMzJkNDc2ZGI3N2M5MDMxZDA4ODk0NDQ3Li4yOTZhZGYyYTc5MmU1Yjc4MGMzZGE3MWM3OGU2
Y2IxZWIxODQ2ZThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKQEAgLTg5LDExICs4OSwxMiBAQCBzdHJ1Y3Qg
RGlzcGxheUxpc3REcmF3aW5nQ29udGV4dCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgR3JhcGhpY3NDb250ZXh0IGNvbnRleHQ7Ci0gICAgRGlzcGxheUxpc3Q6
OlJlY29yZGVyIHJlY29yZGVyOwogICAgIERpc3BsYXlMaXN0OjpEaXNwbGF5TGlzdCBkaXNwbGF5
TGlzdDsKICAgICAKICAgICBEaXNwbGF5TGlzdERyYXdpbmdDb250ZXh0KGNvbnN0IEZsb2F0UmVj
dCYgY2xpcCkKLSAgICAgICAgOiByZWNvcmRlcihjb250ZXh0LCBkaXNwbGF5TGlzdCwgY2xpcCwg
QWZmaW5lVHJhbnNmb3JtKCkpCisgICAgICAgIDogY29udGV4dChbJl0oR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0KSB7CisgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxEaXNwbGF5
TGlzdDo6UmVjb3JkZXI+KGNvbnRleHQsIGRpc3BsYXlMaXN0LCBjbGlwLCBBZmZpbmVUcmFuc2Zv
cm0oKSk7CisgICAgICAgIH0pCiAgICAgewogICAgIH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCA0MzZkZjU0
YzUzYzlkZWE4YWZmMDk3NzA1YmRjYjU4MTc4MmQ0NDYyLi42NDNkNDA0ZjNhNzc5YzU2MGJiZGZh
NGNjZTE0ZjBiNjYyYjdmNzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTI4LDkgKzI4LDkgQEAKIAogI2luY2x1
ZGUgIkJpZGlSZXNvbHZlci5oIgogI2luY2x1ZGUgIkJpdG1hcEltYWdlLmgiCi0jaW5jbHVkZSAi
RGlzcGxheUxpc3RSZWNvcmRlci5oIgogI2luY2x1ZGUgIkZsb2F0Um91bmRlZFJlY3QuaCIKICNp
bmNsdWRlICJHcmFkaWVudC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEltcGwuaCIKICNp
bmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJS
b3VuZGVkUmVjdC5oIgpAQCAtMzM2LDYgKzMzNiwxMSBAQCBHcmFwaGljc0NvbnRleHQ6OkdyYXBo
aWNzQ29udGV4dChQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCogcGxhdGZvcm1HcmFwaGljc0NvbnRl
eAogICAgIHBsYXRmb3JtSW5pdChwbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCk7CiB9CiAKK0dyYXBo
aWNzQ29udGV4dDo6R3JhcGhpY3NDb250ZXh0KGNvbnN0IEdyYXBoaWNzQ29udGV4dEltcGxGYWN0
b3J5JiBmYWN0b3J5RnVuY3Rpb24pCisgICAgOiBtX2ltcGwoZmFjdG9yeUZ1bmN0aW9uKCp0aGlz
KSkKK3sKK30KKwogR3JhcGhpY3NDb250ZXh0Ojp+R3JhcGhpY3NDb250ZXh0KCkKIHsKICAgICBB
U1NFUlQobV9zdGFjay5pc0VtcHR5KCkpOwpAQCAtMzUwLDggKzM1NSw4IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpzYXZlKCkKIAogICAgIG1fc3RhY2suYXBwZW5kKG1fc3RhdGUpOwogCi0gICAg
aWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT5zYXZl
KCk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPnNhdmUoKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtMzc2LDggKzM4MSw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpyZXN0b3JlKCkKICAgICBpZiAobV9zdGFjay5pc0VtcHR5KCkpCiAgICAgICAgIG1fc3RhY2su
Y2xlYXIoKTsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxp
c3RSZWNvcmRlci0+cmVzdG9yZSgpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBs
LT5yZXN0b3JlKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQwNyw4ICs0MTIsOCBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1JhaXNlZEVsbGlwc2UoY29uc3QgRmxvYXRSZWN0
JiByZWN0LCBjb25zdCBDb2xvciYgZWxsaQogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFN0cm9r
ZVRoaWNrbmVzcyhmbG9hdCB0aGlja25lc3MpCiB7CiAgICAgbV9zdGF0ZS5zdHJva2VUaGlja25l
c3MgPSB0aGlja25lc3M7Ci0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNw
bGF5TGlzdFJlY29yZGVyLT51cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0
ZTo6U3Ryb2tlVGhpY2tuZXNzQ2hhbmdlKTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1f
aW1wbC0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVRo
aWNrbmVzc0NoYW5nZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQxOCw4ICs0MjMs
OCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tlVGhpY2tuZXNzKGZsb2F0IHRoaWNr
bmVzcykKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VTdHlsZShTdHJva2VTdHlsZSBz
dHlsZSkKIHsKICAgICBtX3N0YXRlLnN0cm9rZVN0eWxlID0gc3R5bGU7Ci0gICAgaWYgKGlzUmVj
b3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT51cGRhdGVTdGF0ZSht
X3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlU3R5bGVDaGFuZ2UpOworICAgIGlm
IChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT51cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6U3Ryb2tlU3R5bGVDaGFuZ2UpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIHNldFBsYXRmb3JtU3Ryb2tlU3R5bGUoc3R5bGUpOwpAQCAtNDMwLDggKzQzNSw4IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VDb2xvcihjb25zdCBDb2xvciYgY29sb3Ip
CiAgICAgbV9zdGF0ZS5zdHJva2VDb2xvciA9IGNvbG9yOwogICAgIG1fc3RhdGUuc3Ryb2tlR3Jh
ZGllbnQgPSBudWxscHRyOwogICAgIG1fc3RhdGUuc3Ryb2tlUGF0dGVybiA9IG51bGxwdHI7Ci0g
ICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT51
cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFu
Z2UpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT51cGRhdGVTdGF0ZShtX3N0
YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlQ29sb3JDaGFuZ2UpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIHNldFBsYXRmb3JtU3Ryb2tlQ29sb3IoY29sb3IpOwpAQCAtNDQ1
LDggKzQ1MCw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTaGFkb3coY29uc3QgRmxvYXRT
aXplJiBvZmZzZXQsIGZsb2F0IGJsdXIsIGNvbnN0IENvbG9yCiAjaWYgVVNFKENHKQogICAgIG1f
c3RhdGUuc2hhZG93c1VzZUxlZ2FjeVJhZGl1cyA9IGZhbHNlOwogI2VuZGlmCi0gICAgaWYgKGlz
UmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT51cGRhdGVTdGF0
ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93Q2hhbmdlKTsKKyAgICBpZiAo
bV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3ND
b250ZXh0U3RhdGU6OlNoYWRvd0NoYW5nZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
c2V0UGxhdGZvcm1TaGFkb3cob2Zmc2V0LCBibHVyLCBjb2xvcik7CkBAIC00NjAsOCArNDY1LDgg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldExlZ2FjeVNoYWRvdyhjb25zdCBGbG9hdFNpemUm
IG9mZnNldCwgZmxvYXQgYmx1ciwgY29uc3QKICNpZiBVU0UoQ0cpCiAgICAgbV9zdGF0ZS5zaGFk
b3dzVXNlTGVnYWN5UmFkaXVzID0gdHJ1ZTsKICNlbmRpZgotICAgIGlmIChpc1JlY29yZGluZygp
KSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+dXBkYXRlU3RhdGUobV9zdGF0ZSwg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd0NoYW5nZSk7CisgICAgaWYgKG1faW1wbCkgewor
ICAgICAgICBtX2ltcGwtPnVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpTaGFkb3dDaGFuZ2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIHNldFBsYXRmb3Jt
U2hhZG93KG9mZnNldCwgYmx1ciwgY29sb3IpOwpAQCAtNDc2LDggKzQ4MSw4IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpjbGVhclNoYWRvdygpCiAgICAgbV9zdGF0ZS5zaGFkb3dzVXNlTGVnYWN5
UmFkaXVzID0gZmFsc2U7CiAjZW5kaWYKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAg
ICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+Y2xlYXJTaGFkb3coKTsKKyAgICBpZiAobV9pbXBs
KSB7CisgICAgICAgIG1faW1wbC0+Y2xlYXJTaGFkb3coKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICBjbGVhclBsYXRmb3JtU2hhZG93KCk7CkBAIC01MTYsOCArNTIxLDggQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQ6OnNldEZpbGxDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiAgICAgbV9z
dGF0ZS5maWxsR3JhZGllbnQgPSBudWxscHRyOwogICAgIG1fc3RhdGUuZmlsbFBhdHRlcm4gPSBu
dWxscHRyOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlz
dFJlY29yZGVyLT51cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6Rmls
bENvbG9yQ2hhbmdlKTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+dXBkYXRl
U3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxDb2xvckNoYW5nZSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTUyNywxNiArNTMyLDE2IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpzZXRGaWxsQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OnNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKGJvb2wgc2hhZG93c0lnbm9yZVRy
YW5zZm9ybXMpCiB7CiAgICAgbV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcyA9IHNoYWRv
d3NJZ25vcmVUcmFuc2Zvcm1zOwotICAgIGlmIChpc1JlY29yZGluZygpKQotICAgICAgICBtX2Rp
c3BsYXlMaXN0UmVjb3JkZXItPnVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTaGFkb3dzSWdub3JlVHJhbnNmb3Jtc0NoYW5nZSk7CisgICAgaWYgKG1faW1wbCkKKyAg
ICAgICAgbV9pbXBsLT51cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6
U2hhZG93c0lnbm9yZVRyYW5zZm9ybXNDaGFuZ2UpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6c2V0U2hvdWxkQW50aWFsaWFzKGJvb2wgc2hvdWxkQW50aWFsaWFzKQogewogICAgIG1fc3Rh
dGUuc2hvdWxkQW50aWFsaWFzID0gc2hvdWxkQW50aWFsaWFzOwogCi0gICAgaWYgKGlzUmVjb3Jk
aW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT51cGRhdGVTdGF0ZShtX3N0
YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkQW50aWFsaWFzQ2hhbmdlKTsKKyAgICBp
ZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OlNob3VsZEFudGlhbGlhc0NoYW5nZSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTU0Nyw4ICs1NTIsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0U2hv
dWxkU21vb3RoRm9udHMoYm9vbCBzaG91bGRTbW9vdGhGb250cykKIHsKICAgICBtX3N0YXRlLnNo
b3VsZFNtb290aEZvbnRzID0gc2hvdWxkU21vb3RoRm9udHM7CiAgICAgCi0gICAgaWYgKGlzUmVj
b3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT51cGRhdGVTdGF0ZSht
X3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU21vb3RoRm9udHNDaGFuZ2UpOwor
ICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT51cGRhdGVTdGF0ZShtX3N0YXRlLCBH
cmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU21vb3RoRm9udHNDaGFuZ2UpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIApAQCAtNTU4LDggKzU2Myw4IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpzZXRTaG91bGRTbW9vdGhGb250cyhib29sIHNob3VsZFNtb290aEZvbnRzKQogdm9pZCBH
cmFwaGljc0NvbnRleHQ6OnNldFNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyhib29sIHNob3Vs
ZFN1YnBpeGVsUXVhbnRpemVGb250cykKIHsKICAgICBtX3N0YXRlLnNob3VsZFN1YnBpeGVsUXVh
bnRpemVGb250cyA9IHNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250czsKLSAgICBpZiAoaXNSZWNv
cmRpbmcoKSkKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT51cGRhdGVTdGF0ZShtX3N0
YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hh
bmdlKTsKKyAgICBpZiAobV9pbXBsKQorICAgICAgICBtX2ltcGwtPnVwZGF0ZVN0YXRlKG1fc3Rh
dGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHNDaGFu
Z2UpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVh
bGl0eShJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbWFnZUludGVycG9sYXRpb25RdWFsaXR5KQpAQCAt
NTY5LDggKzU3NCw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRJbWFnZUludGVycG9sYXRp
b25RdWFsaXR5KEludGVycG9sYXRpb25RdWFsaXR5IGltYWdlSW50CiAgICAgaWYgKHBhaW50aW5n
RGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsK
LSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT51cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFw
aGljc0NvbnRleHRTdGF0ZTo6SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eUNoYW5nZSk7CisgICAg
aWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPnVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpJbWFnZUludGVycG9sYXRpb25RdWFsaXR5Q2hhbmdlKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtNTgxLDQ1ICs1ODYsNDUgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OnNldFN0cm9rZVBhdHRlcm4oUmVmPFBhdHRlcm4+JiYgcGF0dGVybikKIHsKICAgICBt
X3N0YXRlLnN0cm9rZUdyYWRpZW50ID0gbnVsbHB0cjsKICAgICBtX3N0YXRlLnN0cm9rZVBhdHRl
cm4gPSBXVEZNb3ZlKHBhdHRlcm4pOwotICAgIGlmIChpc1JlY29yZGluZygpKQotICAgICAgICBt
X2Rpc3BsYXlMaXN0UmVjb3JkZXItPnVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpTdHJva2VQYXR0ZXJuQ2hhbmdlKTsKKyAgICBpZiAobV9pbXBsKQorICAgICAgICBt
X2ltcGwtPnVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VQ
YXR0ZXJuQ2hhbmdlKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxQYXR0ZXJu
KFJlZjxQYXR0ZXJuPiYmIHBhdHRlcm4pCiB7CiAgICAgbV9zdGF0ZS5maWxsR3JhZGllbnQgPSBu
dWxscHRyOwogICAgIG1fc3RhdGUuZmlsbFBhdHRlcm4gPSBXVEZNb3ZlKHBhdHRlcm4pOwotICAg
IGlmIChpc1JlY29yZGluZygpKQotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPnVwZGF0
ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUGF0dGVybkNoYW5nZSk7
CisgICAgaWYgKG1faW1wbCkKKyAgICAgICAgbV9pbXBsLT51cGRhdGVTdGF0ZShtX3N0YXRlLCBH
cmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFBhdHRlcm5DaGFuZ2UpOwogfQogCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6c2V0U3Ryb2tlR3JhZGllbnQoUmVmPEdyYWRpZW50PiYmIGdyYWRpZW50KQog
ewogICAgIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQgPSBXVEZNb3ZlKGdyYWRpZW50KTsKICAgICBt
X3N0YXRlLnN0cm9rZVBhdHRlcm4gPSBudWxscHRyOwotICAgIGlmIChpc1JlY29yZGluZygpKQot
ICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPnVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTdHJva2VHcmFkaWVudENoYW5nZSk7CisgICAgaWYgKG1faW1wbCkK
KyAgICAgICAgbV9pbXBsLT51cGRhdGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0
ZTo6U3Ryb2tlR3JhZGllbnRDaGFuZ2UpOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0
RmlsbFJ1bGUoV2luZFJ1bGUgZmlsbFJ1bGUpCiB7CiAgICAgbV9zdGF0ZS5maWxsUnVsZSA9IGZp
bGxSdWxlOwotICAgIGlmIChpc1JlY29yZGluZygpKQotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVj
b3JkZXItPnVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUnVs
ZUNoYW5nZSk7CisgICAgaWYgKG1faW1wbCkKKyAgICAgICAgbV9pbXBsLT51cGRhdGVTdGF0ZSht
X3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFJ1bGVDaGFuZ2UpOwogfQogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbEdyYWRpZW50KFJlZjxHcmFkaWVudD4mJiBncmFkaWVu
dCkKIHsKICAgICBtX3N0YXRlLmZpbGxHcmFkaWVudCA9IFdURk1vdmUoZ3JhZGllbnQpOwogICAg
IG1fc3RhdGUuZmlsbFBhdHRlcm4gPSBudWxscHRyOwotICAgIGlmIChpc1JlY29yZGluZygpKQot
ICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPnVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpGaWxsR3JhZGllbnRDaGFuZ2UpOyAvLyBGSVhNRTogYWxzbyBmaWxs
IHBhdHRlcm4/CisgICAgaWYgKG1faW1wbCkKKyAgICAgICAgbV9pbXBsLT51cGRhdGVTdGF0ZSht
X3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbEdyYWRpZW50Q2hhbmdlKTsgLy8gRklY
TUU6IGFsc28gZmlsbCBwYXR0ZXJuPwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6YmVnaW5U
cmFuc3BhcmVuY3lMYXllcihmbG9hdCBvcGFjaXR5KQogewotICAgIGlmIChpc1JlY29yZGluZygp
KSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+YmVnaW5UcmFuc3BhcmVuY3lMYXll
cihvcGFjaXR5KTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+YmVnaW5UcmFu
c3BhcmVuY3lMYXllcihvcGFjaXR5KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBiZWdp
blBsYXRmb3JtVHJhbnNwYXJlbmN5TGF5ZXIob3BhY2l0eSk7CkBAIC02MjgsOCArNjMzLDggQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoZmxvYXQgb3BhY2l0
eSkKIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmVuZFRyYW5zcGFyZW5jeUxheWVyKCkKIHsKLSAg
ICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPmVu
ZFRyYW5zcGFyZW5jeUxheWVyKCk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwt
PmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgZW5k
UGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcigpOwpAQCAtNjUxLDggKzY1Niw4IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpkcmF3R2x5cGhzKGNvbnN0IEZvbnRDYXNjYWRlJiBmb250Q2FzY2FkZSwg
Y29uc3QgRm9udCYgZm9uCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJl
Y29yZGVyLT5kcmF3R2x5cGhzKGZvbnQsIGJ1ZmZlciwgZnJvbSwgbnVtR2x5cGhzLCBwb2ludCwg
Zm9udENhc2NhZGUuZm9udERlc2NyaXB0aW9uKCkuZm9udFNtb290aGluZygpKTsKKyAgICBpZiAo
bV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+ZHJhd0dseXBocyhmb250LCBidWZmZXIsIGZyb20s
IG51bUdseXBocywgcG9pbnQsIGZvbnRDYXNjYWRlLmZvbnREZXNjcmlwdGlvbigpLmZvbnRTbW9v
dGhpbmcoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTcyMiw4ICs3MjcsOCBAQCBJ
bWFnZURyYXdSZXN1bHQgR3JhcGhpY3NDb250ZXh0OjpkcmF3SW1hZ2UoSW1hZ2UmIGltYWdlLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RpbgogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAg
ICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZE5vdGhpbmc7CiAKLSAgICBpZiAoaXNSZWNv
cmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPmRyYXdJbWFnZShpbWFn
ZSwgZGVzdGluYXRpb24sIHNvdXJjZSwgaW1hZ2VQYWludGluZ09wdGlvbnMpOworICAgIGlmICht
X2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5kcmF3SW1hZ2UoaW1hZ2UsIGRlc3RpbmF0aW9uLCBz
b3VyY2UsIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKICAgICAgICAgcmV0dXJuIEltYWdlRHJhd1Jl
c3VsdDo6RGlkUmVjb3JkOwogICAgIH0KIApAQCAtNzM2LDggKzc0MSw4IEBAIEltYWdlRHJhd1Jl
c3VsdCBHcmFwaGljc0NvbnRleHQ6OmRyYXdUaWxlZEltYWdlKEltYWdlJiBpbWFnZSwgY29uc3Qg
RmxvYXRSZWN0JiBkCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJu
IEltYWdlRHJhd1Jlc3VsdDo6RGlkTm90aGluZzsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7
Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+ZHJhd1RpbGVkSW1hZ2UoaW1hZ2UsIGRl
c3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTaXplLCBzcGFjaW5nLCBpbWFnZVBhaW50aW5nT3B0aW9u
cyk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPmRyYXdUaWxlZEltYWdlKGlt
YWdlLCBkZXN0aW5hdGlvbiwgc291cmNlLCB0aWxlU2l6ZSwgc3BhY2luZywgaW1hZ2VQYWludGlu
Z09wdGlvbnMpOwogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpEaWRSZWNvcmQ7CiAg
ICAgfQogCkBAIC03NTEsOCArNzU2LDggQEAgSW1hZ2VEcmF3UmVzdWx0IEdyYXBoaWNzQ29udGV4
dDo6ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFJlY3QmIGQKICAgICBp
ZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gSW1hZ2VEcmF3UmVzdWx0OjpE
aWROb3RoaW5nOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5
TGlzdFJlY29yZGVyLT5kcmF3VGlsZWRJbWFnZShpbWFnZSwgZGVzdGluYXRpb24sIHNvdXJjZSwg
dGlsZVNjYWxlRmFjdG9yLCBoUnVsZSwgdlJ1bGUsIGltYWdlUGFpbnRpbmdPcHRpb25zKTsKKyAg
ICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+ZHJhd1RpbGVkSW1hZ2UoaW1hZ2UsIGRl
c3RpbmF0aW9uLCBzb3VyY2UsIHRpbGVTY2FsZUZhY3RvciwgaFJ1bGUsIHZSdWxlLCBpbWFnZVBh
aW50aW5nT3B0aW9ucyk7CiAgICAgICAgIHJldHVybiBJbWFnZURyYXdSZXN1bHQ6OkRpZFJlY29y
ZDsKICAgICB9CiAKQEAgLTg0OCw4ICs4NTMsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0
VGV4dERyYXdpbmdNb2RlKFRleHREcmF3aW5nTW9kZUZsYWdzIG1vZGUpCiAgICAgaWYgKHBhaW50
aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkp
IHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT51cGRhdGVTdGF0ZShtX3N0YXRlLCBH
cmFwaGljc0NvbnRleHRTdGF0ZTo6VGV4dERyYXdpbmdNb2RlQ2hhbmdlKTsKKyAgICBpZiAobV9p
bXBsKSB7CisgICAgICAgIG1faW1wbC0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhpY3NDb250
ZXh0U3RhdGU6OlRleHREcmF3aW5nTW9kZUNoYW5nZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgc2V0UGxhdGZvcm1UZXh0RHJhd2luZ01vZGUobW9kZSk7CkBAIC04NjAsOCArODY1LDgg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwg
R3JhZGllbnQmIGdyYWRpZW50KQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxp
c3RSZWNvcmRlci0+ZmlsbFJlY3QocmVjdCwgZ3JhZGllbnQpOworICAgIGlmIChtX2ltcGwpIHsK
KyAgICAgICAgbV9pbXBsLT5maWxsUmVjdChyZWN0LCBncmFkaWVudCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKQEAgLTg3Myw4ICs4NzgsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Zmls
bFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3IsIENvbXBvcwog
ICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChp
c1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+ZmlsbFJlY3Qo
cmVjdCwgY29sb3IsIG9wLCBibGVuZE1vZGUpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAg
bV9pbXBsLT5maWxsUmVjdChyZWN0LCBjb2xvciwgb3AsIGJsZW5kTW9kZSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTg4OSw4ICs4OTQsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJlY3QsIGNvbnN0IENvbG9y
JgogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlm
IChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+ZmlsbFJv
dW5kZWRSZWN0KHJlY3QsIGNvbG9yLCBibGVuZE1vZGUpOworICAgIGlmIChtX2ltcGwpIHsKKyAg
ICAgICAgbV9pbXBsLT5maWxsUm91bmRlZFJlY3QocmVjdCwgY29sb3IsIGJsZW5kTW9kZSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTkzMiw4ICs5MzcsOCBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgSW50UmVjdCYgcmVjdCwgY29u
c3QgRmxvYXRSbwogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldEFscGhhKGZsb2F0IGFscGhhKQog
ewogICAgIG1fc3RhdGUuYWxwaGEgPSBhbHBoYTsKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewot
ICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPnVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpBbHBoYUNoYW5nZSk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAg
ICBtX2ltcGwtPnVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpBbHBo
YUNoYW5nZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgc2V0UGxhdGZvcm1BbHBoYShh
bHBoYSk7CkBAIC05NDMsOCArOTQ4LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldENvbXBv
c2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRpb24KIHsKICAg
ICBtX3N0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yID0gY29tcG9zaXRlT3BlcmF0aW9uOwogICAgIG1f
c3RhdGUuYmxlbmRNb2RlID0gYmxlbmRNb2RlOwotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0g
ICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+dXBkYXRlU3RhdGUobV9zdGF0ZSwgR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OkNvbXBvc2l0ZU9wZXJhdGlvbkNoYW5nZSk7CisgICAgaWYgKG1faW1w
bCkgeworICAgICAgICBtX2ltcGwtPnVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpDb21wb3NpdGVPcGVyYXRpb25DaGFuZ2UpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIHNldFBsYXRmb3JtQ29tcG9zaXRlT3BlcmF0aW9uKGNvbXBvc2l0ZU9wZXJhdGlvbiwg
YmxlbmRNb2RlKTsKQEAgLTk1Myw4ICs5NTgsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0
Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdGlvbgog
dm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldERyYXdMdW1pbmFuY2VNYXNrKGJvb2wgZHJhd0x1bWlu
YW5jZU1hc2spCiB7CiAgICAgbV9zdGF0ZS5kcmF3THVtaW5hbmNlTWFzayA9IGRyYXdMdW1pbmFu
Y2VNYXNrOwotICAgIGlmIChpc1JlY29yZGluZygpKQotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVj
b3JkZXItPnVwZGF0ZVN0YXRlKG1fc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpEcmF3THVt
aW5hbmNlTWFza0NoYW5nZSk7CisgICAgaWYgKG1faW1wbCkKKyAgICAgICAgbV9pbXBsLT51cGRh
dGVTdGF0ZShtX3N0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6RHJhd0x1bWluYW5jZU1hc2tD
aGFuZ2UpOwogfQogCiAjaWYgIVVTRShDRykgJiYgIVVTRShESVJFQ1QyRCkKQEAgLTEwMjIsOCAr
MTAyNyw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjphcHBseURldmljZVNjYWxlRmFjdG9yKGZs
b2F0IGRldmljZVNjYWxlRmFjdG9yKQogewogICAgIHNjYWxlKGRldmljZVNjYWxlRmFjdG9yKTsK
IAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRl
ci0+YXBwbHlEZXZpY2VTY2FsZUZhY3RvcihkZXZpY2VTY2FsZUZhY3Rvcik7CisgICAgaWYgKG1f
aW1wbCkgeworICAgICAgICBtX2ltcGwtPmFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZGV2aWNlU2Nh
bGVGYWN0b3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMDQ1LDggKzEwNTAsOCBA
QCBGbG9hdFNpemUgR3JhcGhpY3NDb250ZXh0OjpzY2FsZUZhY3RvckZvckRyYXdpbmcoY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29ucwogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbEVs
bGlwc2UoY29uc3QgRmxvYXRSZWN0JiBlbGxpcHNlKQogewotICAgIGlmIChpc1JlY29yZGluZygp
KSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+ZmlsbEVsbGlwc2UoZWxsaXBzZSk7
CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPmZpbGxFbGxpcHNlKGVsbGlwc2Up
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMDU1LDggKzEwNjAsOCBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6ZmlsbEVsbGlwc2UoY29uc3QgRmxvYXRSZWN0JiBlbGxpcHNlKQogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlRWxsaXBzZShjb25zdCBGbG9hdFJlY3QmIGVsbGlw
c2UpCiB7Ci0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJl
Y29yZGVyLT5zdHJva2VFbGxpcHNlKGVsbGlwc2UpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAg
ICAgbV9pbXBsLT5zdHJva2VFbGxpcHNlKGVsbGlwc2UpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5oCmluZGV4IDIzNzNkMDM2MDJjMDk4NzRjNWRlZTRiNDI1MzEyOGQzZjE3YjYxZWUuLjkx
M2M0NjM4ZjM4MWFlODU4MTc3YTM4YTJmYzlkNTk5MDYwYTI4NTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC04MCw2ICs4
MCw3IEBAIGNvbnN0IGludCBjTWlzc3BlbGxpbmdMaW5lUGF0dGVybkdhcFdpZHRoID0gMTsKIGNs
YXNzIEFmZmluZVRyYW5zZm9ybTsKIGNsYXNzIEZsb2F0Um91bmRlZFJlY3Q7CiBjbGFzcyBHcmFk
aWVudDsKK2NsYXNzIEdyYXBoaWNzQ29udGV4dEltcGw7CiBjbGFzcyBHcmFwaGljc0NvbnRleHRQ
bGF0Zm9ybVByaXZhdGU7CiBjbGFzcyBJbWFnZUJ1ZmZlcjsKIGNsYXNzIEludFJlY3Q7CkBAIC0y
NTEsNiArMjUyLDEwIEBAIGNsYXNzIEdyYXBoaWNzQ29udGV4dCB7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoR3JhcGhpY3NDb250ZXh0KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0KFBsYXRmb3JtR3JhcGhpY3ND
b250ZXh0Kik7CisgICAgCisgICAgdXNpbmcgR3JhcGhpY3NDb250ZXh0SW1wbEZhY3RvcnkgPSBX
VEY6OkZ1bmN0aW9uPHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHRJbXBsPihHcmFwaGlj
c0NvbnRleHQmKT47CisgICAgV0VCQ09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0KGNvbnN0IEdy
YXBoaWNzQ29udGV4dEltcGxGYWN0b3J5Jik7CisKICAgICBHcmFwaGljc0NvbnRleHQoKSA9IGRl
ZmF1bHQ7CiAgICAgV0VCQ09SRV9FWFBPUlQgfkdyYXBoaWNzQ29udGV4dCgpOwogICAgIApAQCAt
MjYwLDE0ICsyNjUsMTIgQEAgcHVibGljOgogICAgIH07CiAgICAgR3JhcGhpY3NDb250ZXh0KE5v
blBhaW50aW5nUmVhc29ucyk7CiAKKyAgICBib29sIGhhc1BsYXRmb3JtQ29udGV4dCgpIGNvbnN0
IHsgcmV0dXJuIG1fZGF0YTsgfQogICAgIFdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtR3JhcGhpY3ND
b250ZXh0KiBwbGF0Zm9ybUNvbnRleHQoKSBjb25zdDsKIAotICAgIGJvb2wgcGFpbnRpbmdEaXNh
YmxlZCgpIGNvbnN0IHsgcmV0dXJuICFtX2RhdGEgJiYgIWlzUmVjb3JkaW5nKCk7IH0KKyAgICBi
b29sIHBhaW50aW5nRGlzYWJsZWQoKSBjb25zdCB7IHJldHVybiAhbV9kYXRhICYmICFtX2ltcGw7
IH0KICAgICBib29sIHVwZGF0aW5nQ29udHJvbFRpbnRzKCkgY29uc3QgeyByZXR1cm4gbV9ub25Q
YWludGluZ1JlYXNvbnMgPT0gTm9uUGFpbnRpbmdSZWFzb25zOjpVcGRhdGluZ0NvbnRyb2xUaW50
czsgfQogCi0gICAgdm9pZCBzZXREaXNwbGF5TGlzdFJlY29yZGVyKERpc3BsYXlMaXN0OjpSZWNv
cmRlciogcmVjb3JkZXIpIHsgbV9kaXNwbGF5TGlzdFJlY29yZGVyID0gcmVjb3JkZXI7IH0KLSAg
ICBib29sIGlzUmVjb3JkaW5nKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5TGlzdFJlY29yZGVy
OyB9Ci0KICAgICB2b2lkIHNldFN0cm9rZVRoaWNrbmVzcyhmbG9hdCk7CiAgICAgZmxvYXQgc3Ry
b2tlVGhpY2tuZXNzKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zdHJva2VUaGlja25lc3M7IH0K
IApAQCAtNjQwLDcgKzY0Myw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPEZsb2F0UG9pbnQ+IGNl
bnRlckxpbmVBbmRDdXRPZmZDb3JuZXJzKGJvb2wgaXNWZXJ0aWNhbExpbmUsIGZsb2F0IGNvcm5l
cldpZHRoLCBGbG9hdFBvaW50IHBvaW50MSwgRmxvYXRQb2ludCBwb2ludDIpIGNvbnN0OwogCiAg
ICAgR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlKiBtX2RhdGEgeyBudWxscHRyIH07Ci0g
ICAgRGlzcGxheUxpc3Q6OlJlY29yZGVyKiBtX2Rpc3BsYXlMaXN0UmVjb3JkZXIgeyBudWxscHRy
IH07CisgICAgc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dEltcGw+IG1faW1wbDsKIAog
ICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlIG1fc3RhdGU7CiAgICAgVmVjdG9yPEdyYXBoaWNzQ29u
dGV4dFN0YXRlLCAxPiBtX3N0YWNrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMTZlY2Jl
NDg3ZjEyNzMwYzkzMzJmYTExMDc2YzI2NzkxNzdmZTZiCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5jcHAKQEAg
LTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0SW1wbC5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dyYXBoaWNzQ29udGV4dEltcGw6OkdyYXBoaWNz
Q29udGV4dEltcGwoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mKQorICAgIDogbV9ncmFwaGljc0NvbnRleHQoY29udGV4dCkK
K3sKK30KKworR3JhcGhpY3NDb250ZXh0SW1wbDo6fkdyYXBoaWNzQ29udGV4dEltcGwoKQorewor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzNiNDAw
YzQzNWQ1NzZkNzA0ZGQ4ZTk1ZTRjNzBiZjA2MmZkMTE2ZgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaApAQCAt
MCwwICsxLDEwOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdyYXBoaWNzQ29udGV4dEltcGwgeworICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEdyYXBoaWNzQ29udGV4dEltcGwpOworcHVibGljOgorICAgIEdyYXBo
aWNzQ29udGV4dEltcGwoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBpbml0aWFs
Q2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJik7CisgICAgdmlydHVhbCB+R3JhcGhpY3NDb250
ZXh0SW1wbCgpOworCisgICAgR3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0NvbnRleHQoKSBjb25z
dCB7IHJldHVybiBtX2dyYXBoaWNzQ29udGV4dDsgfQorCisgICAgdmlydHVhbCB2b2lkIHVwZGF0
ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlN0YXRlQ2hhbmdlRmxhZ3MpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJTaGFkb3coKSA9
IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TGluZUNhcChMaW5lQ2FwKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHNldExpbmVEYXNoKGNvbnN0IERhc2hBcnJheSYsIGZsb2F0IGRhc2hPZmZzZXQp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TGluZUpvaW4oTGluZUpvaW4pID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0TWl0ZXJMaW1pdChmbG9hdCkgPSAwOworCisgICAgdmlydHVhbCB2b2lk
IGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbFJl
Y3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQ29sb3ImKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIEdyYWRpZW50JikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBDb2xvciYsIENvbXBvc2l0ZU9w
ZXJhdG9yLCBCbGVuZE1vZGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZmlsbFJvdW5kZWRSZWN0
KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmLCBjb25zdCBDb2xvciYsIEJsZW5kTW9kZSkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBGbG9hdFJlY3Qm
LCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByb3VuZGVkSG9sZVJlY3QsIGNvbnN0IENvbG9yJikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBmaWxsUGF0aChjb25zdCBQYXRoJikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBmaWxsRWxsaXBzZShjb25zdCBGbG9hdFJlY3QmKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHN0cm9rZVJlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQgbGluZVdpZHRoKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHN0cm9rZVBhdGgoY29uc3QgUGF0aCYpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgc3Ryb2tlRWxsaXBzZShjb25zdCBGbG9hdFJlY3QmKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGNsZWFyUmVjdChjb25zdCBGbG9hdFJlY3QmKSA9IDA7CisKKyNpZiBVU0UoQ0cpCisg
ICAgdmlydHVhbCB2b2lkIGFwcGx5U3Ryb2tlUGF0dGVybigpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgYXBwbHlGaWxsUGF0dGVybigpID0gMDsKKyNlbmRpZgorCisgICAgdmlydHVhbCB2b2lkIGRy
YXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyJiwgdW5zaWduZWQgZnJvbSwg
dW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBhbmNob3JQb2ludCwgRm9udFNt
b290aGluZ01vZGUpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBkcmF3SW1hZ2UoSW1hZ2UmLCBj
b25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRyYXdUaWxl
ZEltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRQ
b2ludCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTaXplLCBjb25zdCBGbG9hdFNpemUm
IHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24s
IGNvbnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBGbG9hdFNpemUmIHRpbGVTY2FsZUZhY3Rv
ciwgSW1hZ2U6OlRpbGVSdWxlIGhSdWxlLCBJbWFnZTo6VGlsZVJ1bGUgdlJ1bGUsIGNvbnN0IElt
YWdlUGFpbnRpbmdPcHRpb25zJikgPSAwOworI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKQorICAg
IHZpcnR1YWwgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25z
dCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3Jp
ZW50YXRpb24pID0gMDsKKyNlbmRpZgorICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihJbWFn
ZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZs
b2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSA9IEJsZW5kTW9k
ZU5vcm1hbCkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGRyYXdSZWN0KGNvbnN0IEZsb2F0UmVj
dCYsIGZsb2F0IGJvcmRlclRoaWNrbmVzcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3TGlu
ZShjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgZHJhd0xpbmVzRm9yVGV4dChjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRGFzaEFycmF5
JiB3aWR0aHMsIGJvb2wgcHJpbnRpbmcsIGJvb2wgZG91YmxlTGluZXMsIGZsb2F0IHN0cm9rZVRo
aWNrbmVzcykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3TGluZUZvckRvY3VtZW50TWFya2Vy
KGNvbnN0IEZsb2F0UG9pbnQmLCBmbG9hdCB3aWR0aCwgR3JhcGhpY3NDb250ZXh0OjpEb2N1bWVu
dE1hcmtlckxpbmVTdHlsZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3RWxsaXBzZShjb25z
dCBGbG9hdFJlY3QmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRyYXdQYXRoKGNvbnN0IFBhdGgm
KSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0ZvY3VzUmluZyhjb25zdCBQYXRoJiwgZmxv
YXQgd2lkdGgsIGZsb2F0IG9mZnNldCwgY29uc3QgQ29sb3ImKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGRyYXdGb2N1c1JpbmcoY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mLCBmbG9hdCB3aWR0aCwg
ZmxvYXQgb2Zmc2V0LCBjb25zdCBDb2xvciYpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBzYXZl
KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZXN0b3JlKCkgPSAwOworCisgICAgdmlydHVhbCB2
b2lkIHRyYW5zbGF0ZShmbG9hdCB4LCBmbG9hdCB5KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJv
dGF0ZShmbG9hdCBhbmdsZUluUmFkaWFucykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzY2FsZShj
b25zdCBGbG9hdFNpemUmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvbmNhdENUTShjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5UcmFuc3BhcmVu
Y3lMYXllcihmbG9hdCBvcGFjaXR5KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGVuZFRyYW5zcGFy
ZW5jeUxheWVyKCkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGNsaXAoY29uc3QgRmxvYXRSZWN0
JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjbGlwT3V0KGNvbnN0IEZsb2F0UmVjdCYpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgY2xpcE91dChjb25zdCBQYXRoJikgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBjbGlwUGF0aChjb25zdCBQYXRoJiwgV2luZFJ1bGUpID0gMDsKKyAgICAKKyAgICB2aXJ0
dWFsIHZvaWQgYXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCkgPSAwOworCitwcml2YXRlOgor
ICAgIGZyaWVuZCBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CisgICAgR3JhcGhpY3NDb250ZXh0JiBt
X2dyYXBoaWNzQ29udGV4dDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuaAppbmRleCBjZTQ0
MzNlNGM0OGIxOTgyNWU3Y2E1ZGY4NzQ5OThhNGRmMTM2ODYxLi4xMjQxN2FkZWE3MzYxYzlmMTI4
ZGI1OWU3MDNlMzM1NjhjOGRmYjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5oCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKICAqLwogCi0jaWZuZGVmIEdyYXBoaWNzVHlwZXNfaAotI2RlZmluZSBHcmFwaGljc1R5cGVz
X2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiV2luZFJ1bGUuaCIKICNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgpAQCAtMTIxLDQgKzEyMCwzIEBAIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBMaW5lSm9pbik7CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCBlYTkzY2M1Zjg5NTli
ZDEyYjFjMmRjNGY5MmI2Nzk4M2E5NzJhNTZlLi42ZTE1ZjA0NjY1MDNhMzRiNjI3ZGIwMDBiYWVl
OWFlYjg5ZWJhZDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTE1NTAsOSArMTU1MCw5IEBAIHZvaWQg
R3JhcGhpY3NMYXllckNBOjpyZWN1cnNpdmVDb21taXRDaGFuZ2VzKGNvbnN0IENvbW1pdFN0YXRl
JiBjb21taXRTdGF0ZSwgY29uCiAgICAgICAgIAogICAgICAgICBGbG9hdFJlY3QgaW5pdGlhbENs
aXAoYm91bmRzT3JpZ2luKCksIHNpemUoKSk7CiAKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0IGNv
bnRleHQ7Ci0gICAgICAgIC8vIFRoZSBSZWNvcmRlciBpcyBsYXJnZSwgc28gaGVhcC1hbGxvY2F0
ZS4KLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0OjpSZWNvcmRlcj4gcmVjb3Jk
ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXlMaXN0OjpSZWNvcmRlcj4oY29udGV4dCwgKm1f
ZGlzcGxheUxpc3QsIGluaXRpYWxDbGlwLCBBZmZpbmVUcmFuc2Zvcm0oKSk7CisgICAgICAgIEdy
YXBoaWNzQ29udGV4dCBjb250ZXh0KFsmXShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIHsKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPERpc3BsYXlMaXN0OjpSZWNvcmRlcj4o
Y29udGV4dCwgKm1fZGlzcGxheUxpc3QsIGluaXRpYWxDbGlwLCBBZmZpbmVUcmFuc2Zvcm0oKSk7
CisgICAgICAgIH0pOwogICAgICAgICBwYWludEdyYXBoaWNzTGF5ZXJDb250ZW50cyhjb250ZXh0
LCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBzaXplKCkpKTsKICAgICB9CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRD
YWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGlj
c0NvbnRleHRDYWlyby5jcHAKaW5kZXggZTM2YTY0N2IyYTBiMzI4M2RiMzlhNWQ2NGNhZTVjNGZh
YzJmM2QyYi4uYWU3MWE2ZmQ1ZDJjZmIzMzQ0YWU1MzkxNjI2M2ZiYzdlNjQ1MmU2NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250
ZXh0Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcApAQCAtMTk1LDcgKzE5NSw3IEBAIEFmZmluZVRyYW5z
Zm9ybSBHcmFwaGljc0NvbnRleHQ6OmdldENUTShJbmNsdWRlRGV2aWNlU2NhbGUpIGNvbnN0CiAg
ICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIEFmZmluZVRyYW5zZm9y
bSgpOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKKyAgICBpZiAobV9pbXBsKSB7CiAgICAg
ICAgIFdURkxvZ0Fsd2F5cygiR3JhcGhpY3NDb250ZXh0OjpnZXRDVE0oKSBpcyBub3QgeWV0IGNv
bXBhdGlibGUgd2l0aCByZWNvcmRpbmcgY29udGV4dHMuIik7CiAgICAgICAgIHJldHVybiBBZmZp
bmVUcmFuc2Zvcm0oKTsKICAgICB9CkBAIC0yMTMsMTQgKzIxMywxNCBAQCBQbGF0Zm9ybUNvbnRl
eHRDYWlybyogR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUNvbnRleHQoKSBjb25zdAogCiB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6c2F2ZVBsYXRmb3JtU3RhdGUoKQogewotICAgIEFTU0VSVCghaXNS
ZWNvcmRpbmcoKSk7CisgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKICAgICBwbGF0
Zm9ybUNvbnRleHQoKS0+c2F2ZSgpOwogICAgIG1fZGF0YS0+c2F2ZSgpOwogfQogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6cmVzdG9yZVBsYXRmb3JtU3RhdGUoKQogewotICAgIEFTU0VSVCghaXNS
ZWNvcmRpbmcoKSk7CisgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKICAgICBwbGF0
Zm9ybUNvbnRleHQoKS0+cmVzdG9yZSgpOwogICAgIG1fZGF0YS0+cmVzdG9yZSgpOwogCkBAIC0y
MzYsOCArMjM2LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdSZWN0KGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKQogICAgIGlmIChwYWludGluZ0Rpc2Fi
bGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAg
ICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+ZHJhd1JlY3QocmVjdCwgYm9yZGVyVGhpY2tuZXNz
KTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+ZHJhd1JlY3QocmVjdCwgYm9y
ZGVyVGhpY2tuZXNzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjY1LDggKzI2NSw4
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1h
Z2VQdHImIGltYWdlLCBjb25zdCBGbG9hdFNpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9k
aXNwbGF5TGlzdFJlY29yZGVyLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVz
dFJlY3QsIHNyY1JlY3QsIG9wLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uKTsKKyAgICBpZiAobV9p
bXBsKSB7CisgICAgICAgIG1faW1wbC0+ZHJhd05hdGl2ZUltYWdlKGltYWdlLCBpbWFnZVNpemUs
IGRlc3RSZWN0LCBzcmNSZWN0LCBvcCwgYmxlbmRNb2RlLCBvcmllbnRhdGlvbik7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTMwNSw4ICszMDUsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZHJhd0xpbmUoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQxLCBjb25zdCBGbG9hdFBvaW50JiBw
b2ludAogICAgIGlmIChzdHJva2VTdHlsZSgpID09IE5vU3Ryb2tlKQogICAgICAgICByZXR1cm47
CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3Jk
ZXItPmRyYXdMaW5lKHBvaW50MSwgcG9pbnQyKTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAg
IG1faW1wbC0+ZHJhd0xpbmUocG9pbnQxLCBwb2ludDIpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC0zNzQsOCArMzc0LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdFbGxpcHNl
KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3Bs
YXlMaXN0UmVjb3JkZXItPmRyYXdFbGxpcHNlKHJlY3QpOworICAgIGlmIChtX2ltcGwpIHsKKyAg
ICAgICAgbV9pbXBsLT5kcmF3RWxsaXBzZShyZWN0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApAQCAtNDA2LDggKzQwNiw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0aChjb25z
dCBQYXRoJiBwYXRoKQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkgfHwgcGF0aC5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAg
IG1fZGlzcGxheUxpc3RSZWNvcmRlci0+ZmlsbFBhdGgocGF0aCk7CisgICAgaWYgKG1faW1wbCkg
eworICAgICAgICBtX2ltcGwtPmZpbGxQYXRoKHBhdGgpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC00MjEsOCArNDIxLDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVBhdGgo
Y29uc3QgUGF0aCYgcGF0aCkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpIHx8IHBhdGguaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAg
ICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPnN0cm9rZVBhdGgocGF0aCk7CisgICAgaWYgKG1f
aW1wbCkgeworICAgICAgICBtX2ltcGwtPnN0cm9rZVBhdGgocGF0aCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKQEAgLTQzNiw4ICs0MzYsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Zmls
bFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1f
ZGlzcGxheUxpc3RSZWNvcmRlci0+ZmlsbFJlY3QocmVjdCk7CisgICAgaWYgKG1faW1wbCkgewor
ICAgICAgICBtX2ltcGwtPmZpbGxSZWN0KHJlY3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC00NTEsOCArNDUxLDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgQ29sb3ImIGNvbG9yKQogICAgIGlmIChwYWludGluZ0Rp
c2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0g
ICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+ZmlsbFJlY3QocmVjdCwgY29sb3IpOworICAg
IGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5maWxsUmVjdChyZWN0LCBjb2xvcik7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ2Nyw4ICs0NjcsOCBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6Y2xpcChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgaWYgKHBhaW50aW5nRGlz
YWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAg
ICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT5jbGlwKHJlY3QpOworICAgIGlmIChtX2ltcGwp
IHsKKyAgICAgICAgbV9pbXBsLT5jbGlwKHJlY3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC00OTQsOCArNDk0LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBQYXRoKGNvbnN0
IFBhdGgmIHBhdGgsIFdpbmRSdWxlIGNsaXBSdWxlKQogICAgIGlmIChwYWludGluZ0Rpc2FibGVk
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAg
IG1fZGlzcGxheUxpc3RSZWNvcmRlci0+Y2xpcFBhdGgocGF0aCwgY2xpcFJ1bGUpOworICAgIGlm
IChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5jbGlwUGF0aChwYXRoLCBjbGlwUnVsZSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTUyNyw3ICs1MjcsNyBAQCBJbnRSZWN0IEdyYXBo
aWNzQ29udGV4dDo6Y2xpcEJvdW5kcygpIGNvbnN0CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQo
KSkKICAgICAgICAgcmV0dXJuIEludFJlY3QoKTsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7
CisgICAgaWYgKG1faW1wbCkgewogICAgICAgICBXVEZMb2dBbHdheXMoIkdldHRpbmcgdGhlIGNs
aXAgYm91bmRzIG5vdCB5ZXQgc3VwcG9ydGVkIHdpdGggZGlzcGxheSBsaXN0cyIpOwogICAgICAg
ICByZXR1cm4gSW50UmVjdCgtMjA0OCwgLTIwNDgsIDQwOTYsIDQwOTYpOyAvLyBGSVhNRTogZGlz
cGxheSBsaXN0cy4KICAgICB9CkBAIC02MzUsOCArNjM1LDggQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmRyYXdMaW5lc0ZvclRleHQoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGNvbnN0IERhc2hB
cnJheSYKICAgICBpZiAod2lkdGhzLnNpemUoKSA8PSAwKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPmRy
YXdMaW5lc0ZvclRleHQocG9pbnQsIHdpZHRocywgcHJpbnRpbmcsIGRvdWJsZVVuZGVybGluZXMs
IHN0cm9rZVRoaWNrbmVzcygpKTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+
ZHJhd0xpbmVzRm9yVGV4dChwb2ludCwgd2lkdGhzLCBwcmludGluZywgZG91YmxlVW5kZXJsaW5l
cywgc3Ryb2tlVGhpY2tuZXNzKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC03MDAs
NyArNzAwLDcgQEAgRmxvYXRSZWN0IEdyYXBoaWNzQ29udGV4dDo6cm91bmRUb0RldmljZVBpeGVs
cyhjb25zdCBGbG9hdFJlY3QmIGZyZWN0LCBSb3VuZGluZ00KICAgICBpZiAocGFpbnRpbmdEaXNh
YmxlZCgpKQogICAgICAgICByZXR1cm4gZnJlY3Q7CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkg
eworICAgIGlmIChtX2ltcGwpIHsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJHcmFwaGljc0NvbnRl
eHQ6OnJvdW5kVG9EZXZpY2VQaXhlbHMoKSBpcyBub3QgeWV0IGNvbXBhdGlibGUgd2l0aCByZWNv
cmRpbmcgY29udGV4dHMuIik7CiAgICAgICAgIHJldHVybiBmcmVjdDsKICAgICB9CkBAIC03NDUs
OCArNzQ1LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnRyYW5zbGF0ZShmbG9hdCB4LCBmbG9h
dCB5KQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+dHJh
bnNsYXRlKHgsIHkpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT50cmFuc2xh
dGUoeCwgeSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTc3Miw3ICs3NzIsNyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TdHJva2VUaGlja25lc3MoZmxvYXQgc3Ry
b2tlVGhpY2tuZXNzKQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIEFTU0VSVCghaXNSZWNvcmRpbmcoKSk7CisgICAgQVNTRVJUKGhhc1BsYXRmb3Jt
Q29udGV4dCgpKTsKIAogICAgIGNhaXJvX3NldF9saW5lX3dpZHRoKHBsYXRmb3JtQ29udGV4dCgp
LT5jcigpLCBzdHJva2VUaGlja25lc3MpOwogfQpAQCAtNzg1LDcgKzc4NSw3IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybVN0cm9rZVN0eWxlKFN0cm9rZVN0eWxlIHN0cm9rZVN0
eWxlKQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IEFTU0VSVCghaXNSZWNvcmRpbmcoKSk7CisgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgp
KTsKIAogICAgIHN3aXRjaCAoc3Ryb2tlU3R5bGUpIHsKICAgICBjYXNlIE5vU3Ryb2tlOgpAQCAt
ODE2LDggKzgxNiw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpjb25jYXRDVE0oY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNw
bGF5TGlzdFJlY29yZGVyLT5jb25jYXRDVE0odHJhbnNmb3JtKTsKKyAgICBpZiAobV9pbXBsKSB7
CisgICAgICAgIG1faW1wbC0+Y29uY2F0Q1RNKHRyYW5zZm9ybSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTgzMiw3ICs4MzIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0Q1RN
KGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtKQogICAgIGlmIChwYWludGluZ0Rpc2Fi
bGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7CisgICAg
aWYgKG1faW1wbCkgewogICAgICAgICBXVEZMb2dBbHdheXMoIkdyYXBoaWNzQ29udGV4dDo6c2V0
Q1RNKCkgaXMgbm90IGNvbXBhdGlibGUgd2l0aCByZWNvcmRpbmcgY29udGV4dHMuIik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CkBAIC04NzQsNyArODc0LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRl
eHQ6OmJlZ2luUGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcihmbG9hdCBvcGFjaXR5KQogICAgIGlm
IChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVCghaXNS
ZWNvcmRpbmcoKSk7CisgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKIAogICAgIGNh
aXJvX3QqIGNyID0gcGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CiAgICAgY2Fpcm9fcHVzaF9ncm91
cChjcik7CkBAIC04ODYsNyArODg2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmVuZFBsYXRm
b3JtVHJhbnNwYXJlbmN5TGF5ZXIoKQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIEFTU0VSVCghaXNSZWNvcmRpbmcoKSk7CisgICAgQVNTRVJUKGhh
c1BsYXRmb3JtQ29udGV4dCgpKTsKIAogICAgIGNhaXJvX3QqIGNyID0gcGxhdGZvcm1Db250ZXh0
KCktPmNyKCk7CiAKQEAgLTkwNSw4ICs5MDUsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xl
YXJSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBt
X2Rpc3BsYXlMaXN0UmVjb3JkZXItPmNsZWFyUmVjdChyZWN0KTsKKyAgICBpZiAobV9pbXBsKSB7
CisgICAgICAgIG1faW1wbC0+Y2xlYXJSZWN0KHJlY3QpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC05MjQsOCArOTI0LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVJlY3Qo
Y29uc3QgRmxvYXRSZWN0JiByZWN0LCBmbG9hdCB3aWR0aCkKICAgICBpZiAocGFpbnRpbmdEaXNh
YmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAg
ICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPnN0cm9rZVJlY3QocmVjdCwgd2lkdGgpOworICAg
IGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5zdHJva2VSZWN0KHJlY3QsIHdpZHRoKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtOTQyLDggKzk0Miw4IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpzZXRMaW5lQ2FwKExpbmVDYXAgbGluZUNhcCkKICAgICBpZiAocGFpbnRpbmdE
aXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewot
ICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPnNldExpbmVDYXAobGluZUNhcCk7CisgICAg
aWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPnNldExpbmVDYXAobGluZUNhcCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTk3Niw4ICs5NzYsOCBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6c2V0TGluZURhc2goY29uc3QgRGFzaEFycmF5JiBkYXNoZXMsIGZsb2F0IGRhc2hPZmZz
ZXQpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
aWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT5zZXRM
aW5lRGFzaChkYXNoZXMsIGRhc2hPZmZzZXQpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAg
bV9pbXBsLT5zZXRMaW5lRGFzaChkYXNoZXMsIGRhc2hPZmZzZXQpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC05OTIsOCArOTkyLDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldExp
bmVKb2luKExpbmVKb2luIGxpbmVKb2luKQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlz
cGxheUxpc3RSZWNvcmRlci0+c2V0TGluZUpvaW4obGluZUpvaW4pOworICAgIGlmIChtX2ltcGwp
IHsKKyAgICAgICAgbV9pbXBsLT5zZXRMaW5lSm9pbihsaW5lSm9pbik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKQEAgLTEwMTcsOSArMTAxNyw5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpz
ZXRNaXRlckxpbWl0KGZsb2F0IG1pdGVyKQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7CisgICAgaWYgKG1faW1w
bCkgewogICAgICAgICAvLyBNYXliZSB0aGlzIHNob3VsZCBiZSBwYXJ0IG9mIHRoZSBzdGF0ZS4K
LSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT5zZXRNaXRlckxpbWl0KG1pdGVyKTsKKyAg
ICAgICAgbV9pbXBsLT5zZXRNaXRlckxpbWl0KG1pdGVyKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtMTA0OSw4ICsxMDQ5LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXBPdXQo
Y29uc3QgUGF0aCYgcGF0aCkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0
UmVjb3JkZXItPmNsaXBPdXQocGF0aCk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2lt
cGwtPmNsaXBPdXQocGF0aCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEwNzEsOCAr
MTA3MSw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpyb3RhdGUoZmxvYXQgcmFkaWFucykKICAg
ICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNS
ZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3JkZXItPnJvdGF0ZShyYWRp
YW5zKTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+cm90YXRlKHJhZGlhbnMp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMDg1LDggKzEwODUsOCBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6c2NhbGUoY29uc3QgRmxvYXRTaXplJiBzaXplKQogICAgIGlmIChwYWlu
dGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChpc1JlY29yZGluZygp
KSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+c2NhbGUoc2l6ZSk7CisgICAgaWYg
KG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPnNjYWxlKHNpemUpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC0xMDk5LDggKzEwOTksOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xp
cE91dChjb25zdCBGbG9hdFJlY3QmIHIpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNw
bGF5TGlzdFJlY29yZGVyLT5jbGlwT3V0KHIpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAg
bV9pbXBsLT5jbGlwT3V0KHIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMTIwLDcg
KzExMjAsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1GaWxsUm91bmRlZFJlY3Qo
Y29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcmVjdCwgY29ucwogICAgIGlmIChwYWludGluZ0Rpc2Fi
bGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVCghaXNSZWNvcmRpbmcoKSk7Cisg
ICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKIAogICAgIGlmIChoYXNTaGFkb3coKSkK
ICAgICAgICAgcGxhdGZvcm1Db250ZXh0KCktPnNoYWRvd0JsdXIoKS5kcmF3UmVjdFNoYWRvdygq
dGhpcywgcmVjdCk7CkBAIC0xMTQwLDggKzExNDAsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZmlsbFJlY3RXaXRoUm91bmRlZEhvbGUoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9h
dAogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkgfHwgIWNvbG9yLmlzVmFsaWQoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5
TGlzdFJlY29yZGVyLT5maWxsUmVjdFdpdGhSb3VuZGVkSG9sZShyZWN0LCByb3VuZGVkSG9sZVJl
Y3QsIGNvbG9yKTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+ZmlsbFJlY3RX
aXRoUm91bmRlZEhvbGUocmVjdCwgcm91bmRlZEhvbGVSZWN0LCBjb2xvcik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTExNjcsOCArMTE2Nyw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpkcmF3UGF0dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
aWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT5kcmF3
UGF0dGVybihpbWFnZSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFz
ZSwgc3BhY2luZywgb3AsIGJsZW5kTW9kZSk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBt
X2ltcGwtPmRyYXdQYXR0ZXJuKGltYWdlLCBkZXN0UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFu
c2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcCwgYmxlbmRNb2RlKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtMTE4NSw3ICsxMTg1LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBs
YXRmb3JtU2hvdWxkQW50aWFsaWFzKGJvb2wgZW5hYmxlKQogICAgIGlmIChwYWludGluZ0Rpc2Fi
bGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVCghaXNSZWNvcmRpbmcoKSk7Cisg
ICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKIAogICAgIC8vIFdoZW4gdHJ1ZSwgdXNl
IHRoZSBkZWZhdWx0IENhaXJvIGJhY2tlbmQgYW50aWFsaWFzIG1vZGUgKHVzdWFsbHkgdGhpcwog
ICAgIC8vIGVuYWJsZXMgc3RhbmRhcmQgJ2dyYXlzY2FsZScgYW50aWFsaWFzaW5nKTsgZmFsc2Ug
dG8gZXhwbGljaXRseSBkaXNhYmxlCkBAIC0xMTk1LDE0ICsxMTk1LDE0IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpzZXRQbGF0Zm9ybVNob3VsZEFudGlhbGlhcyhib29sIGVuYWJsZSkKIAogdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtSW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShJ
bnRlcnBvbGF0aW9uUXVhbGl0eSBxdWFsaXR5KQogewotICAgIEFTU0VSVCghaXNSZWNvcmRpbmco
KSk7CisgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKIAogICAgIHBsYXRmb3JtQ29u
dGV4dCgpLT5zZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KHF1YWxpdHkpOwogfQogCiBib29s
IEdyYXBoaWNzQ29udGV4dDo6aXNBY2NlbGVyYXRlZENvbnRleHQoKSBjb25zdAogewotICAgIGlm
IChpc1JlY29yZGluZygpKQorICAgIGlmICghaGFzUGxhdGZvcm1Db250ZXh0KCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiBjYWlyb19zdXJmYWNlX2dldF90eXBlKGNhaXJv
X2dldF90YXJnZXQocGxhdGZvcm1Db250ZXh0KCktPmNyKCkpKSA9PSBDQUlST19TVVJGQUNFX1RZ
UEVfR0w7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9H
cmFwaGljc0NvbnRleHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHRDRy5jcHAKaW5kZXggN2NmYWZjZTQzNGZhYWViYTI1OWNlOTA4MmE3
Zjc4ZjkzMDJhMTFhYy4uMGVlODM1MTJiZmFiMTgwNDQ1M2E1MWZlZWY4M2FlODE5M2VlODFkMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3ND
b250ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dy
YXBoaWNzQ29udGV4dENHLmNwcApAQCAtMTM3LDYgKzEzNyw4MCBAQCBzdGF0aWMgSW50ZXJwb2xh
dGlvblF1YWxpdHkgY29udmVydEludGVycG9sYXRpb25RdWFsaXR5KENHSW50ZXJwb2xhdGlvblF1
YWxpdHkgcQogICAgIHJldHVybiBJbnRlcnBvbGF0aW9uRGVmYXVsdDsKIH0KIAorc3RhdGljIENH
QmxlbmRNb2RlIGNvbXBvc2l0ZUFuZEJsZW5kVG9DR0JsZW5kTW9kZShDb21wb3NpdGVPcGVyYXRv
ciBjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3sKKyAgICBzd2l0Y2gg
KGJsZW5kTW9kZSkgeworICAgIGNhc2UgQmxlbmRNb2RlTm9ybWFsOgorICAgICAgICBzd2l0Y2gg
KGNvbXBvc2l0ZU9wZXJhdG9yKSB7CisgICAgICAgIGNhc2UgQ29tcG9zaXRlQ2xlYXI6CisgICAg
ICAgICAgICByZXR1cm4ga0NHQmxlbmRNb2RlQ2xlYXI7CisgICAgICAgIGNhc2UgQ29tcG9zaXRl
Q29weToKKyAgICAgICAgICAgIHJldHVybiBrQ0dCbGVuZE1vZGVDb3B5OworICAgICAgICBjYXNl
IENvbXBvc2l0ZVNvdXJjZU92ZXI6CisgICAgICAgICAgICByZXR1cm4ga0NHQmxlbmRNb2RlTm9y
bWFsOworICAgICAgICBjYXNlIENvbXBvc2l0ZVNvdXJjZUluOgorICAgICAgICAgICAgcmV0dXJu
IGtDR0JsZW5kTW9kZVNvdXJjZUluOworICAgICAgICBjYXNlIENvbXBvc2l0ZVNvdXJjZU91dDoK
KyAgICAgICAgICAgIHJldHVybiBrQ0dCbGVuZE1vZGVTb3VyY2VPdXQ7CisgICAgICAgIGNhc2Ug
Q29tcG9zaXRlU291cmNlQXRvcDoKKyAgICAgICAgICAgIHJldHVybiBrQ0dCbGVuZE1vZGVTb3Vy
Y2VBdG9wOworICAgICAgICBjYXNlIENvbXBvc2l0ZURlc3RpbmF0aW9uT3ZlcjoKKyAgICAgICAg
ICAgIHJldHVybiBrQ0dCbGVuZE1vZGVEZXN0aW5hdGlvbk92ZXI7CisgICAgICAgIGNhc2UgQ29t
cG9zaXRlRGVzdGluYXRpb25JbjoKKyAgICAgICAgICAgIHJldHVybiBrQ0dCbGVuZE1vZGVEZXN0
aW5hdGlvbkluOworICAgICAgICBjYXNlIENvbXBvc2l0ZURlc3RpbmF0aW9uT3V0OgorICAgICAg
ICAgICAgcmV0dXJuIGtDR0JsZW5kTW9kZURlc3RpbmF0aW9uT3V0OworICAgICAgICBjYXNlIENv
bXBvc2l0ZURlc3RpbmF0aW9uQXRvcDoKKyAgICAgICAgICAgIHJldHVybiBrQ0dCbGVuZE1vZGVE
ZXN0aW5hdGlvbkF0b3A7CisgICAgICAgIGNhc2UgQ29tcG9zaXRlWE9SOgorICAgICAgICAgICAg
cmV0dXJuIGtDR0JsZW5kTW9kZVhPUjsKKyAgICAgICAgY2FzZSBDb21wb3NpdGVQbHVzRGFya2Vy
OgorICAgICAgICAgICAgcmV0dXJuIGtDR0JsZW5kTW9kZVBsdXNEYXJrZXI7CisgICAgICAgIGNh
c2UgQ29tcG9zaXRlUGx1c0xpZ2h0ZXI6CisgICAgICAgICAgICByZXR1cm4ga0NHQmxlbmRNb2Rl
UGx1c0xpZ2h0ZXI7CisgICAgICAgIGNhc2UgQ29tcG9zaXRlRGlmZmVyZW5jZToKKyAgICAgICAg
ICAgIHJldHVybiBrQ0dCbGVuZE1vZGVEaWZmZXJlbmNlOworICAgICAgICB9CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgQmxlbmRNb2RlTXVsdGlwbHk6CisgICAgICAgIHJldHVybiBrQ0dCbGVu
ZE1vZGVNdWx0aXBseTsKKyAgICBjYXNlIEJsZW5kTW9kZVNjcmVlbjoKKyAgICAgICAgcmV0dXJu
IGtDR0JsZW5kTW9kZVNjcmVlbjsKKyAgICBjYXNlIEJsZW5kTW9kZU92ZXJsYXk6CisgICAgICAg
IHJldHVybiBrQ0dCbGVuZE1vZGVPdmVybGF5OworICAgIGNhc2UgQmxlbmRNb2RlRGFya2VuOgor
ICAgICAgICByZXR1cm4ga0NHQmxlbmRNb2RlRGFya2VuOworICAgIGNhc2UgQmxlbmRNb2RlTGln
aHRlbjoKKyAgICAgICAgcmV0dXJuIGtDR0JsZW5kTW9kZUxpZ2h0ZW47CisgICAgY2FzZSBCbGVu
ZE1vZGVDb2xvckRvZGdlOgorICAgICAgICByZXR1cm4ga0NHQmxlbmRNb2RlQ29sb3JEb2RnZTsK
KyAgICBjYXNlIEJsZW5kTW9kZUNvbG9yQnVybjoKKyAgICAgICAgcmV0dXJuIGtDR0JsZW5kTW9k
ZUNvbG9yQnVybjsKKyAgICBjYXNlIEJsZW5kTW9kZUhhcmRMaWdodDoKKyAgICAgICAgcmV0dXJu
IGtDR0JsZW5kTW9kZUhhcmRMaWdodDsKKyAgICBjYXNlIEJsZW5kTW9kZVNvZnRMaWdodDoKKyAg
ICAgICAgcmV0dXJuIGtDR0JsZW5kTW9kZVNvZnRMaWdodDsKKyAgICBjYXNlIEJsZW5kTW9kZURp
ZmZlcmVuY2U6CisgICAgICAgIHJldHVybiBrQ0dCbGVuZE1vZGVEaWZmZXJlbmNlOworICAgIGNh
c2UgQmxlbmRNb2RlRXhjbHVzaW9uOgorICAgICAgICByZXR1cm4ga0NHQmxlbmRNb2RlRXhjbHVz
aW9uOworICAgIGNhc2UgQmxlbmRNb2RlSHVlOgorICAgICAgICByZXR1cm4ga0NHQmxlbmRNb2Rl
SHVlOworICAgIGNhc2UgQmxlbmRNb2RlU2F0dXJhdGlvbjoKKyAgICAgICAgcmV0dXJuIGtDR0Js
ZW5kTW9kZVNhdHVyYXRpb247CisgICAgY2FzZSBCbGVuZE1vZGVDb2xvcjoKKyAgICAgICAgcmV0
dXJuIGtDR0JsZW5kTW9kZUNvbG9yOworICAgIGNhc2UgQmxlbmRNb2RlTHVtaW5vc2l0eToKKyAg
ICAgICAgcmV0dXJuIGtDR0JsZW5kTW9kZUx1bWlub3NpdHk7CisgICAgY2FzZSBCbGVuZE1vZGVQ
bHVzRGFya2VyOgorICAgICAgICByZXR1cm4ga0NHQmxlbmRNb2RlUGx1c0RhcmtlcjsKKyAgICBj
YXNlIEJsZW5kTW9kZVBsdXNMaWdodGVyOgorICAgICAgICByZXR1cm4ga0NHQmxlbmRNb2RlUGx1
c0xpZ2h0ZXI7CisgICAgfQorCisgICAgcmV0dXJuIGtDR0JsZW5kTW9kZU5vcm1hbDsKK30KKwog
dm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtSW5pdChDR0NvbnRleHRSZWYgY2dDb250ZXh0
KQogewogICAgIGlmICghY2dDb250ZXh0KQpAQCAtMTY1LDcgKzIzOSw3IEBAIENHQ29udGV4dFJl
ZiBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtQ29udGV4dCgpIGNvbnN0CiB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6c2F2ZVBsYXRmb3JtU3RhdGUoKQogewogICAgIEFTU0VSVCghcGFpbnRpbmdEaXNh
YmxlZCgpKTsKLSAgICBBU1NFUlQoIWlzUmVjb3JkaW5nKCkpOworICAgIEFTU0VSVChoYXNQbGF0
Zm9ybUNvbnRleHQoKSk7CiAKICAgICAvLyBOb3RlOiBEbyBub3QgdXNlIHRoaXMgZnVuY3Rpb24g
d2l0aGluIHRoaXMgY2xhc3MgaW1wbGVtZW50YXRpb24sIHNpbmNlIHdlIHdhbnQgdG8gYXZvaWQg
dGhlIGV4dHJhCiAgICAgLy8gc2F2ZSBvZiB0aGUgc2Vjb25kYXJ5IGNvbnRleHQgKGluIEdyYXBo
aWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNHLmgpLgpAQCAtMTc2LDcgKzI1MCw3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpzYXZlUGxhdGZvcm1TdGF0ZSgpCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6cmVzdG9yZVBsYXRmb3JtU3RhdGUoKQogewogICAgIEFTU0VSVCghcGFpbnRpbmdEaXNhYmxl
ZCgpKTsKLSAgICBBU1NFUlQoIWlzUmVjb3JkaW5nKCkpOworICAgIEFTU0VSVChoYXNQbGF0Zm9y
bUNvbnRleHQoKSk7CiAKICAgICAvLyBOb3RlOiBEbyBub3QgdXNlIHRoaXMgZnVuY3Rpb24gd2l0
aGluIHRoaXMgY2xhc3MgaW1wbGVtZW50YXRpb24sIHNpbmNlIHdlIHdhbnQgdG8gYXZvaWQgdGhl
IGV4dHJhCiAgICAgLy8gcmVzdG9yZSBvZiB0aGUgc2Vjb25kYXJ5IGNvbnRleHQgKGluIEdyYXBo
aWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNHLmgpLgpAQCAtMTkwLDggKzI2NCw4IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpkcmF3TmF0aXZlSW1hZ2UoY29uc3QgUmV0YWluUHRyPENHSW1hZ2VS
ZWY+JiBpbWFnZSwgY29uc3QKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0
UmVjb3JkZXItPmRyYXdOYXRpdmVJbWFnZShpbWFnZSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3Jj
UmVjdCwgb3AsIGJsZW5kTW9kZSwgb3JpZW50YXRpb24pOworICAgIGlmIChtX2ltcGwpIHsKKyAg
ICAgICAgbV9pbXBsLT5kcmF3TmF0aXZlSW1hZ2UoaW1hZ2UsIGltYWdlU2l6ZSwgZGVzdFJlY3Qs
IHNyY1JlY3QsIG9wLCBibGVuZE1vZGUsIG9yaWVudGF0aW9uKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtMzI1LDggKzM5OSw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UGF0
dGVybihJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0CiAgICAg
aWYgKHBhaW50aW5nRGlzYWJsZWQoKSB8fCAhcGF0dGVyblRyYW5zZm9ybS5pc0ludmVydGlibGUo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAg
bV9kaXNwbGF5TGlzdFJlY29yZGVyLT5kcmF3UGF0dGVybihpbWFnZSwgZGVzdFJlY3QsIHRpbGVS
ZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3AsIGJsZW5kTW9kZSk7Cisg
ICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPmRyYXdQYXR0ZXJuKGltYWdlLCBkZXN0
UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcCwgYmxl
bmRNb2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDMwLDggKzUwNCw4IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0
IGJvcmRlclRoaWNrbmVzcykKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0
UmVjb3JkZXItPmRyYXdSZWN0KHJlY3QsIGJvcmRlclRoaWNrbmVzcyk7CisgICAgaWYgKG1faW1w
bCkgeworICAgICAgICBtX2ltcGwtPmRyYXdSZWN0KHJlY3QsIGJvcmRlclRoaWNrbmVzcyk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ2OCw4ICs1NDIsOCBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZHJhd0xpbmUoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQxLCBjb25zdCBGbG9hdFBv
aW50JiBwb2ludAogICAgIGlmIChzdHJva2VTdHlsZSgpID09IE5vU3Ryb2tlKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0
UmVjb3JkZXItPmRyYXdMaW5lKHBvaW50MSwgcG9pbnQyKTsKKyAgICBpZiAobV9pbXBsKSB7Cisg
ICAgICAgIG1faW1wbC0+ZHJhd0xpbmUocG9pbnQxLCBwb2ludDIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC01MzMsOCArNjA3LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdF
bGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBt
X2Rpc3BsYXlMaXN0UmVjb3JkZXItPmRyYXdFbGxpcHNlKHJlY3QpOworICAgIGlmIChtX2ltcGwp
IHsKKyAgICAgICAgbV9pbXBsLT5kcmF3RWxsaXBzZShyZWN0KTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtNTQ4LDggKzYyMiw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjphcHBseVN0
cm9rZVBhdHRlcm4oKQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNv
cmRlci0+YXBwbHlTdHJva2VQYXR0ZXJuKCk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBt
X2ltcGwtPmFwcGx5U3Ryb2tlUGF0dGVybigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC01NzIsOCArNjQ2LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmFwcGx5RmlsbFBhdHRlcm4o
KQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlm
IChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+YXBwbHlG
aWxsUGF0dGVybigpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5hcHBseUZp
bGxQYXR0ZXJuKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTYyMyw4ICs2OTcsOCBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1BhdGgoY29uc3QgUGF0aCYgcGF0aCkKICAgICBp
ZiAocGFpbnRpbmdEaXNhYmxlZCgpIHx8IHBhdGguaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0UmVjb3Jk
ZXItPmRyYXdQYXRoKHBhdGgpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5k
cmF3UGF0aChwYXRoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjU3LDggKzczMSw4
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0aChjb25zdCBQYXRoJiBwYXRoKQogICAg
IGlmIChwYWludGluZ0Rpc2FibGVkKCkgfHwgcGF0aC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNv
cmRlci0+ZmlsbFBhdGgocGF0aCk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwt
PmZpbGxQYXRoKHBhdGgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC03MjAsOCArNzk0
LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVBhdGgoY29uc3QgUGF0aCYgcGF0aCkK
ICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpIHx8IHBhdGguaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0
UmVjb3JkZXItPnN0cm9rZVBhdGgocGF0aCk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBt
X2ltcGwtPnN0cm9rZVBhdGgocGF0aCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTc4
Miw4ICs4NTYsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvYXRS
ZWN0JiByZWN0KQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRl
ci0+ZmlsbFJlY3QocmVjdCk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPmZp
bGxSZWN0KHJlY3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC04MzUsOCArOTA5LDgg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwg
Y29uc3QgQ29sb3ImIGNvbG9yKQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxp
c3RSZWNvcmRlci0+ZmlsbFJlY3QocmVjdCwgY29sb3IpOworICAgIGlmIChtX2ltcGwpIHsKKyAg
ICAgICAgbV9pbXBsLT5maWxsUmVjdChyZWN0LCBjb2xvcik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTg3MCw3ICs5NDQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1G
aWxsUm91bmRlZFJlY3QoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcmVjdCwgY29ucwogICAgIGlm
IChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBBU1NFUlQo
IWlzUmVjb3JkaW5nKCkpOworICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNvbnRleHQoKSk7CiAKICAg
ICBDR0NvbnRleHRSZWYgY29udGV4dCA9IHBsYXRmb3JtQ29udGV4dCgpOwogICAgIENvbG9yIG9s
ZEZpbGxDb2xvciA9IGZpbGxDb2xvcigpOwpAQCAtOTEzLDggKzk4Nyw4IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBGbG9hdFJlY3QmIHJlY3Qs
IGNvbnN0IEZsb2F0CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29y
ZGVyLT5maWxsUmVjdFdpdGhSb3VuZGVkSG9sZShyZWN0LCByb3VuZGVkSG9sZVJlY3QsIGNvbG9y
KTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+ZmlsbFJlY3RXaXRoUm91bmRl
ZEhvbGUocmVjdCwgcm91bmRlZEhvbGVSZWN0LCBjb2xvcik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTk1OSw4ICsxMDMzLDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXAoY29u
c3QgRmxvYXRSZWN0JiByZWN0KQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlzcGxheUxp
c3RSZWNvcmRlci0+Y2xpcChyZWN0KTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1w
bC0+Y2xpcChyZWN0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtOTczLDggKzEwNDcs
OCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcE91dChjb25zdCBGbG9hdFJlY3QmIHJlY3Qp
CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYg
KGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT5jbGlwT3V0
KHJlY3QpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5jbGlwT3V0KHJlY3Qp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05OTUsOCArMTA2OSw4IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpjbGlwT3V0KGNvbnN0IFBhdGgmIHBhdGgpCiAgICAgaWYgKHBhaW50aW5n
RGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsK
LSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT5jbGlwT3V0KHBhdGgpOworICAgIGlmICht
X2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5jbGlwT3V0KHBhdGgpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC0xMDEyLDggKzEwODYsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xp
cFBhdGgoY29uc3QgUGF0aCYgcGF0aCwgV2luZFJ1bGUgY2xpcFJ1bGUpCiAgICAgaWYgKHBhaW50
aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkp
IHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT5jbGlwUGF0aChwYXRoLCBjbGlwUnVs
ZSk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPmNsaXBQYXRoKHBhdGgsIGNs
aXBSdWxlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTAzOCw3ICsxMTEyLDcgQEAg
SW50UmVjdCBHcmFwaGljc0NvbnRleHQ6OmNsaXBCb3VuZHMoKSBjb25zdAogICAgIGlmIChwYWlu
dGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybiBJbnRSZWN0KCk7CiAKLSAgICBpZiAoaXNS
ZWNvcmRpbmcoKSkgeworICAgIGlmIChtX2ltcGwpIHsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJH
ZXR0aW5nIHRoZSBjbGlwIGJvdW5kcyBub3QgeWV0IHN1cHBvcnRlZCB3aXRoIGRpc3BsYXkgbGlz
dHMiKTsKICAgICAgICAgcmV0dXJuIEludFJlY3QoLTIwNDgsIC0yMDQ4LCA0MDk2LCA0MDk2KTsg
Ly8gRklYTUU6IGRpc3BsYXkgbGlzdHMuCiAgICAgfQpAQCAtMTA1MSw3ICsxMTI1LDcgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmJlZ2luUGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcihmbG9hdCBv
cGFjaXR5KQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIEFTU0VSVCghaXNSZWNvcmRpbmcoKSk7CisgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4
dCgpKTsKIAogICAgIHNhdmUoKTsKIApAQCAtMTA2Niw3ICsxMTQwLDcgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmVuZFBsYXRmb3JtVHJhbnNwYXJlbmN5TGF5ZXIoKQogICAgIGlmIChwYWludGlu
Z0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVCghaXNSZWNvcmRpbmco
KSk7CisgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKIAogICAgIENHQ29udGV4dFJl
ZiBjb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAgICAgQ0dDb250ZXh0RW5kVHJhbnNwYXJl
bmN5TGF5ZXIoY29udGV4dCk7CkBAIC0xMTEyLDcgKzExODYsNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6c2V0UGxhdGZvcm1TaGFkb3coY29uc3QgRmxvYXRTaXplJiBvZmZzZXQsIGZsb2F0IGJs
dXIsIGNvbgogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIEFTU0VSVCghaXNSZWNvcmRpbmcoKSk7CisgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4
dCgpKTsKICAgICAKICAgICAvLyBGSVhNRTogd2UgY291bGQgYXZvaWQgdGhlIHNoYWRvdyBzZXR1
cCBjb3N0IHdoZW4gd2Uga25vdyB3ZSdsbCByZW5kZXIgdGhlIHNoYWRvdyBvdXJzZWx2ZXMuCiAK
QEAgLTExNjQsOSArMTIzOCw5IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRNaXRlckxpbWl0
KGZsb2F0IGxpbWl0KQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7CisgICAgaWYgKG1faW1wbCkgewogICAgICAg
ICAvLyBNYXliZSB0aGlzIHNob3VsZCBiZSBwYXJ0IG9mIHRoZSBzdGF0ZS4KLSAgICAgICAgbV9k
aXNwbGF5TGlzdFJlY29yZGVyLT5zZXRNaXRlckxpbWl0KGxpbWl0KTsKKyAgICAgICAgbV9pbXBs
LT5zZXRNaXRlckxpbWl0KGxpbWl0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTE3
OCw4ICsxMjUyLDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsZWFyUmVjdChjb25zdCBGbG9h
dFJlY3QmIHIpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVy
LT5jbGVhclJlY3Qocik7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwtPmNsZWFy
UmVjdChyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTE5MSw4ICsxMjY1LDggQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBm
bG9hdCBsaW5lV2lkdGgpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJl
Y29yZGVyLT5zdHJva2VSZWN0KHJlY3QsIGxpbmVXaWR0aCk7CisgICAgaWYgKG1faW1wbCkgewor
ICAgICAgICBtX2ltcGwtPnN0cm9rZVJlY3QocmVjdCwgbGluZVdpZHRoKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtMTI2MSw4ICsxMzM1LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OnNldExpbmVDYXAoTGluZUNhcCBjYXApCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNw
bGF5TGlzdFJlY29yZGVyLT5zZXRMaW5lQ2FwKGNhcCk7CisgICAgaWYgKG1faW1wbCkgeworICAg
ICAgICBtX2ltcGwtPnNldExpbmVDYXAoY2FwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtMTI4NCw4ICsxMzU4LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldExpbmVEYXNoKGNv
bnN0IERhc2hBcnJheSYgZGFzaGVzLCBmbG9hdCBkYXNoT2Zmc2V0KQogICAgIGlmIChwYWludGlu
Z0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7
Ci0gICAgICAgIG1fZGlzcGxheUxpc3RSZWNvcmRlci0+c2V0TGluZURhc2goZGFzaGVzLCBkYXNo
T2Zmc2V0KTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+c2V0TGluZURhc2go
ZGFzaGVzLCBkYXNoT2Zmc2V0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTMwNCw4
ICsxMzc4LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldExpbmVKb2luKExpbmVKb2luIGpv
aW4pCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
aWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT5zZXRM
aW5lSm9pbihqb2luKTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+c2V0TGlu
ZUpvaW4oam9pbik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEzMzIsOCArMTQwNiw4
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzY2FsZShjb25zdCBGbG9hdFNpemUmIHNpemUpCiAg
ICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGlz
UmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT5zY2FsZShzaXpl
KTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAgICAgIG1faW1wbC0+c2NhbGUoc2l6ZSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEzNDcsOCArMTQyMSw4IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0Ojpyb3RhdGUoZmxvYXQgYW5nbGUpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9k
aXNwbGF5TGlzdFJlY29yZGVyLT5yb3RhdGUoYW5nbGUpOworICAgIGlmIChtX2ltcGwpIHsKKyAg
ICAgICAgbV9pbXBsLT5yb3RhdGUoYW5nbGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC0xMzYyLDggKzE0MzYsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6dHJhbnNsYXRlKGZsb2F0
IHgsIGZsb2F0IHkpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29y
ZGVyLT50cmFuc2xhdGUoeCwgeSk7CisgICAgaWYgKG1faW1wbCkgeworICAgICAgICBtX2ltcGwt
PnRyYW5zbGF0ZSh4LCB5KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTM3Nyw4ICsx
NDUxLDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNvbmNhdENUTShjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHRyYW5zZm9ybSkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgewotICAgICAgICBtX2Rpc3BsYXlMaXN0
UmVjb3JkZXItPmNvbmNhdENUTSh0cmFuc2Zvcm0pOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAg
ICAgbV9pbXBsLT5jb25jYXRDVE0odHJhbnNmb3JtKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApAQCAtMTM5Miw3ICsxNDY2LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldENUTShjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNSZWNvcmRpbmcoKSkgeworICAgIGlmICht
X2ltcGwpIHsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJHcmFwaGljc0NvbnRleHQ6OnNldENUTSgp
IGlzIG5vdCBjb21wYXRpYmxlIHdpdGggcmVjb3JkaW5nIGNvbnRleHRzLiIpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQpAQCAtMTQwNyw3ICsxNDgxLDcgQEAgQWZmaW5lVHJhbnNmb3JtIEdyYXBo
aWNzQ29udGV4dDo6Z2V0Q1RNKEluY2x1ZGVEZXZpY2VTY2FsZSBpbmNsdWRlU2NhbGUpIGNvbnN0
CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIEFmZmluZVRyYW5z
Zm9ybSgpOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKKyAgICBpZiAobV9pbXBsKSB7CiAg
ICAgICAgIFdURkxvZ0Fsd2F5cygiR3JhcGhpY3NDb250ZXh0OjpnZXRDVE0oKSBpcyBub3QgeWV0
IGNvbXBhdGlibGUgd2l0aCByZWNvcmRpbmcgY29udGV4dHMuIik7CiAgICAgICAgIHJldHVybiBB
ZmZpbmVUcmFuc2Zvcm0oKTsKICAgICB9CkBAIC0xNDI2LDcgKzE1MDAsNyBAQCBGbG9hdFJlY3Qg
R3JhcGhpY3NDb250ZXh0Ojpyb3VuZFRvRGV2aWNlUGl4ZWxzKGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCwgUm91bmRpbmdNbwogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVy
biByZWN0OwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKKyAgICBpZiAobV9pbXBsKSB7CiAg
ICAgICAgIFdURkxvZ0Fsd2F5cygiR3JhcGhpY3NDb250ZXh0Ojpyb3VuZFRvRGV2aWNlUGl4ZWxz
KCkgaXMgbm90IHlldCBjb21wYXRpYmxlIHdpdGggcmVjb3JkaW5nIGNvbnRleHRzLiIpOwogICAg
ICAgICByZXR1cm4gcmVjdDsKICAgICB9CkBAIC0xNDg5LDggKzE1NjMsOCBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd0xpbmVzRm9yVGV4dChjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgY29u
c3QgRGFzaEFycmF5JgogICAgIGlmICghd2lkdGhzLnNpemUoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVy
LT5kcmF3TGluZXNGb3JUZXh0KHBvaW50LCB3aWR0aHMsIHByaW50aW5nLCBkb3VibGVMaW5lcywg
c3Ryb2tlVGhpY2tuZXNzKCkpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5k
cmF3TGluZXNGb3JUZXh0KHBvaW50LCB3aWR0aHMsIHByaW50aW5nLCBkb3VibGVMaW5lcywgc3Ry
b2tlVGhpY2tuZXNzKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xNTUwLDcgKzE2
MjQsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0VVJMRm9yUmVjdChjb25zdCBVUkwmIGxp
bmssIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIHsKKyAgICBpZiAo
bV9pbXBsKSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiR3JhcGhpY3NDb250ZXh0OjpzZXRVUkxG
b3JSZWN0KCkgaXMgbm90IHlldCBjb21wYXRpYmxlIHdpdGggcmVjb3JkaW5nIGNvbnRleHRzLiIp
OwogICAgICAgICByZXR1cm47IC8vIEZJWE1FIGZvciBkaXNwbGF5IGxpc3RzLgogICAgIH0KQEAg
LTE2MDMsNyArMTY3Nyw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRJc0NBTGF5ZXJDb250
ZXh0KGJvb2wgaXNMYXllckNvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEZJWE1F
Ci0gICAgaWYgKGlzUmVjb3JkaW5nKCkpCisgICAgaWYgKG1faW1wbCkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgaWYgKGlzTGF5ZXJDb250ZXh0KQpAQCAtMTYxOCw3ICsxNjkyLDcgQEAgYm9vbCBH
cmFwaGljc0NvbnRleHQ6OmlzQ0FMYXllckNvbnRleHQoKSBjb25zdAogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICAvLyBGSVhNRQotICAgIGlmIChpc1JlY29yZGluZygpKQorICAgIGlmICht
X2ltcGwpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiBtX2RhdGEtPm1fY29u
dGV4dEZsYWdzICYgSXNMYXllckNHQ29udGV4dDsKQEAgLTE2MzAsNyArMTcwNCw3IEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpzZXRJc0FjY2VsZXJhdGVkQ29udGV4dChib29sIGlzQWNjZWxlcmF0
ZWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEZJWE1FCi0gICAgaWYgKGlzUmVjb3JkaW5n
KCkpCisgICAgaWYgKG1faW1wbCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGlzQWNjZWxl
cmF0ZWQpCkBAIC0xNjQ1LDcgKzE3MTksNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dDo6aXNBY2Nl
bGVyYXRlZENvbnRleHQoKSBjb25zdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBG
SVhNRQotICAgIGlmIChpc1JlY29yZGluZygpKQorICAgIGlmIChtX2ltcGwpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIHJldHVybiBtX2RhdGEtPm1fY29udGV4dEZsYWdzICYgSXNBY2Nl
bGVyYXRlZENHQ29udGV4dDsKQEAgLTE2NTYsNyArMTczMCw3IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpzZXRQbGF0Zm9ybVRleHREcmF3aW5nTW9kZShUZXh0RHJhd2luZ01vZGVGbGFncyBtb2Rl
KQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFT
U0VSVCghaXNSZWNvcmRpbmcoKSk7CisgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsK
IAogICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAgICAgc3dp
dGNoIChtb2RlKSB7CkBAIC0xNjc5LDcgKzE3NTMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
c2V0UGxhdGZvcm1TdHJva2VDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiAgICAgaWYgKHBhaW50
aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKCFpc1JlY29yZGlu
ZygpKTsKKyAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwogCiAgICAgc2V0Q0dTdHJv
a2VDb2xvcihwbGF0Zm9ybUNvbnRleHQoKSwgY29sb3IpOwogfQpAQCAtMTY4OSw3ICsxNzYzLDcg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU3Ryb2tlVGhpY2tuZXNzKGZsb2F0
IHRoaWNrbmVzcykKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBBU1NFUlQoIWlzUmVjb3JkaW5nKCkpOworICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNv
bnRleHQoKSk7CiAKICAgICBDR0NvbnRleHRTZXRMaW5lV2lkdGgocGxhdGZvcm1Db250ZXh0KCks
IHN0ZDo6bWF4KHRoaWNrbmVzcywgMC5mKSk7CiB9CkBAIC0xNjk5LDcgKzE3NzMsNyBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1GaWxsQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9y
KQogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFT
U0VSVCghaXNSZWNvcmRpbmcoKSk7CisgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsK
IAogICAgIHNldENHRmlsbENvbG9yKHBsYXRmb3JtQ29udGV4dCgpLCBjb2xvcik7CiB9CkBAIC0x
NzA5LDcgKzE3ODMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaG91bGRB
bnRpYWxpYXMoYm9vbCBlbmFibGUpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKCFpc1JlY29yZGluZygpKTsKKyAgICBBU1NFUlQoaGFz
UGxhdGZvcm1Db250ZXh0KCkpOwogCiAgICAgQ0dDb250ZXh0U2V0U2hvdWxkQW50aWFsaWFzKHBs
YXRmb3JtQ29udGV4dCgpLCBlbmFibGUpOwogfQpAQCAtMTcxOSw3ICsxNzkzLDcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU2hvdWxkU21vb3RoRm9udHMoYm9vbCBlbmFibGUp
CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNT
RVJUKCFpc1JlY29yZGluZygpKTsKKyAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwog
CiAgICAgQ0dDb250ZXh0U2V0U2hvdWxkU21vb3RoRm9udHMocGxhdGZvcm1Db250ZXh0KCksIGVu
YWJsZSk7CiB9CkBAIC0xNzI5LDEyMiArMTgwMywxOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
c2V0UGxhdGZvcm1BbHBoYShmbG9hdCBhbHBoYSkKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBBU1NFUlQoIWlzUmVjb3JkaW5nKCkpOworICAgIEFT
U0VSVChoYXNQbGF0Zm9ybUNvbnRleHQoKSk7CiAKICAgICBDR0NvbnRleHRTZXRBbHBoYShwbGF0
Zm9ybUNvbnRleHQoKSwgYWxwaGEpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxh
dGZvcm1Db21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlT3BlcmF0b3IgbW9kZSwgQmxlbmRNb2Rl
IGJsZW5kTW9kZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUNvbXBvc2l0ZU9w
ZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlIGJs
ZW5kTW9kZSkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBBU1NFUlQoIWlzUmVjb3JkaW5nKCkpOwotCi0gICAgQ0dCbGVuZE1vZGUgdGFyZ2V0
ID0ga0NHQmxlbmRNb2RlTm9ybWFsOwotICAgIGlmIChibGVuZE1vZGUgIT0gQmxlbmRNb2RlTm9y
bWFsKSB7Ci0gICAgICAgIHN3aXRjaCAoYmxlbmRNb2RlKSB7Ci0gICAgICAgIGNhc2UgQmxlbmRN
b2RlTXVsdGlwbHk6Ci0gICAgICAgICAgICB0YXJnZXQgPSBrQ0dCbGVuZE1vZGVNdWx0aXBseTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEJsZW5kTW9kZVNjcmVlbjoKLSAgICAg
ICAgICAgIHRhcmdldCA9IGtDR0JsZW5kTW9kZVNjcmVlbjsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIEJsZW5kTW9kZU92ZXJsYXk6Ci0gICAgICAgICAgICB0YXJnZXQgPSBrQ0dC
bGVuZE1vZGVPdmVybGF5OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQmxlbmRN
b2RlRGFya2VuOgotICAgICAgICAgICAgdGFyZ2V0ID0ga0NHQmxlbmRNb2RlRGFya2VuOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQmxlbmRNb2RlTGlnaHRlbjoKLSAgICAgICAg
ICAgIHRhcmdldCA9IGtDR0JsZW5kTW9kZUxpZ2h0ZW47Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBCbGVuZE1vZGVDb2xvckRvZGdlOgotICAgICAgICAgICAgdGFyZ2V0ID0ga0NH
QmxlbmRNb2RlQ29sb3JEb2RnZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEJs
ZW5kTW9kZUNvbG9yQnVybjoKLSAgICAgICAgICAgIHRhcmdldCA9IGtDR0JsZW5kTW9kZUNvbG9y
QnVybjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEJsZW5kTW9kZUhhcmRMaWdo
dDoKLSAgICAgICAgICAgIHRhcmdldCA9IGtDR0JsZW5kTW9kZUhhcmRMaWdodDsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIEJsZW5kTW9kZVNvZnRMaWdodDoKLSAgICAgICAgICAg
IHRhcmdldCA9IGtDR0JsZW5kTW9kZVNvZnRMaWdodDsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIEJsZW5kTW9kZURpZmZlcmVuY2U6Ci0gICAgICAgICAgICB0YXJnZXQgPSBrQ0dC
bGVuZE1vZGVEaWZmZXJlbmNlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQmxl
bmRNb2RlRXhjbHVzaW9uOgotICAgICAgICAgICAgdGFyZ2V0ID0ga0NHQmxlbmRNb2RlRXhjbHVz
aW9uOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQmxlbmRNb2RlSHVlOgotICAg
ICAgICAgICAgdGFyZ2V0ID0ga0NHQmxlbmRNb2RlSHVlOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgQmxlbmRNb2RlU2F0dXJhdGlvbjoKLSAgICAgICAgICAgIHRhcmdldCA9IGtD
R0JsZW5kTW9kZVNhdHVyYXRpb247Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBC
bGVuZE1vZGVDb2xvcjoKLSAgICAgICAgICAgIHRhcmdldCA9IGtDR0JsZW5kTW9kZUNvbG9yOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQmxlbmRNb2RlTHVtaW5vc2l0eToKLSAg
ICAgICAgICAgIHRhcmdldCA9IGtDR0JsZW5kTW9kZUx1bWlub3NpdHk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBCbGVuZE1vZGVQbHVzRGFya2VyOgotICAgICAgICAgICAgdGFy
Z2V0ID0ga0NHQmxlbmRNb2RlUGx1c0RhcmtlcjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIEJsZW5kTW9kZVBsdXNMaWdodGVyOgotICAgICAgICAgICAgdGFyZ2V0ID0ga0NHQmxl
bmRNb2RlUGx1c0xpZ2h0ZXI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgc3dp
dGNoIChtb2RlKSB7Ci0gICAgICAgIGNhc2UgQ29tcG9zaXRlQ2xlYXI6Ci0gICAgICAgICAgICB0
YXJnZXQgPSBrQ0dCbGVuZE1vZGVDbGVhcjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIENvbXBvc2l0ZUNvcHk6Ci0gICAgICAgICAgICB0YXJnZXQgPSBrQ0dCbGVuZE1vZGVDb3B5
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ29tcG9zaXRlU291cmNlT3ZlcjoK
LSAgICAgICAgICAgIC8vIGtDR0JsZW5kTW9kZU5vcm1hbAotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgQ29tcG9zaXRlU291cmNlSW46Ci0gICAgICAgICAgICB0YXJnZXQgPSBrQ0dC
bGVuZE1vZGVTb3VyY2VJbjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENvbXBv
c2l0ZVNvdXJjZU91dDoKLSAgICAgICAgICAgIHRhcmdldCA9IGtDR0JsZW5kTW9kZVNvdXJjZU91
dDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENvbXBvc2l0ZVNvdXJjZUF0b3A6
Ci0gICAgICAgICAgICB0YXJnZXQgPSBrQ0dCbGVuZE1vZGVTb3VyY2VBdG9wOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ29tcG9zaXRlRGVzdGluYXRpb25PdmVyOgotICAgICAg
ICAgICAgdGFyZ2V0ID0ga0NHQmxlbmRNb2RlRGVzdGluYXRpb25PdmVyOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgQ29tcG9zaXRlRGVzdGluYXRpb25JbjoKLSAgICAgICAgICAg
IHRhcmdldCA9IGtDR0JsZW5kTW9kZURlc3RpbmF0aW9uSW47Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBDb21wb3NpdGVEZXN0aW5hdGlvbk91dDoKLSAgICAgICAgICAgIHRhcmdl
dCA9IGtDR0JsZW5kTW9kZURlc3RpbmF0aW9uT3V0OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgQ29tcG9zaXRlRGVzdGluYXRpb25BdG9wOgotICAgICAgICAgICAgdGFyZ2V0ID0g
a0NHQmxlbmRNb2RlRGVzdGluYXRpb25BdG9wOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgQ29tcG9zaXRlWE9SOgotICAgICAgICAgICAgdGFyZ2V0ID0ga0NHQmxlbmRNb2RlWE9S
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ29tcG9zaXRlUGx1c0RhcmtlcjoK
LSAgICAgICAgICAgIHRhcmdldCA9IGtDR0JsZW5kTW9kZVBsdXNEYXJrZXI7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBDb21wb3NpdGVQbHVzTGlnaHRlcjoKLSAgICAgICAgICAg
IHRhcmdldCA9IGtDR0JsZW5kTW9kZVBsdXNMaWdodGVyOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgQ29tcG9zaXRlRGlmZmVyZW5jZToKLSAgICAgICAgICAgIHRhcmdldCA9IGtD
R0JsZW5kTW9kZURpZmZlcmVuY2U7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAg
IH0KLSAgICBDR0NvbnRleHRTZXRCbGVuZE1vZGUocGxhdGZvcm1Db250ZXh0KCksIHRhcmdldCk7
CisgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKKyAgICBDR0NvbnRleHRTZXRCbGVu
ZE1vZGUocGxhdGZvcm1Db250ZXh0KCksIGNvbXBvc2l0ZUFuZEJsZW5kVG9DR0JsZW5kTW9kZShj
b21wb3NpdGVPcGVyYXRvciwgYmxlbmRNb2RlKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpwbGF0Zm9ybUFwcGx5RGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3Ip
CkBAIC0xODUyLDcgKzE4MjIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1BcHBs
eURldmljZVNjYWxlRmFjdG9yKGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKQogICAgIGlmIChwYWlu
dGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVCghaXNSZWNvcmRp
bmcoKSk7CisgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsKIAogICAgIC8vIENvcmVH
cmFwaGljcyBleHBlY3RzIHRoZSBiYXNlIENUTSBvZiBhIEhpRFBJIGNvbnRleHQgdG8gaGF2ZSB0
aGUgc2NhbGUgZmFjdG9yIGFwcGxpZWQgdG8gaXQuCiAgICAgLy8gRmFpbGluZyB0byBjaGFuZ2Ug
dGhlIGJhc2UgbGV2ZWwgQ1RNIHdpbGwgY2F1c2UgY2VydGFpbiBDRyBmZWF0dXJlcywgc3VjaCBh
cyBmb2N1cyByaW5ncywKQEAgLTE4NjUsNyArMTgzNSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpwbGF0Zm9ybUZpbGxFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYgZWxsaXBzZSkKICAgICBpZiAo
cGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBBU1NFUlQoIWlzUmVj
b3JkaW5nKCkpOworICAgIEFTU0VSVChoYXNQbGF0Zm9ybUNvbnRleHQoKSk7CiAKICAgICAvLyBD
R0NvbnRleHRGaWxsRWxsaXBzZUluUmVjdCBvbmx5IHN1cHBvcnRzIHNvbGlkIGNvbG9ycy4KICAg
ICBpZiAobV9zdGF0ZS5maWxsR3JhZGllbnQgfHwgbV9zdGF0ZS5maWxsUGF0dGVybikgewpAQCAt
MTg4Miw3ICsxODUyLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtU3Ryb2tlRWxs
aXBzZShjb25zdCBGbG9hdFJlY3QmIGVsbGlwc2UpCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKCFpc1JlY29yZGluZygpKTsKKyAgICBB
U1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOwogCiAgICAgLy8gQ0dDb250ZXh0U3Ryb2tlRWxs
aXBzZUluUmVjdCBvbmx5IHN1cHBvcnRzIHNvbGlkIGNvbG9ycy4KICAgICBpZiAobV9zdGF0ZS5z
dHJva2VHcmFkaWVudCB8fCBtX3N0YXRlLnN0cm9rZVBhdHRlcm4pIHsKQEAgLTE5MDQsNiArMTg3
NCw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXREZXN0aW5hdGlvbkZvclJlY3QoY29uc3Qg
U3RyaW5nJiBuYW1lLCBjb25zdCBGbG9hdFJlY3QmCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQo
KSkKICAgICAgICAgcmV0dXJuOwogCisgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsK
KwogICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7CiAKICAgICBG
bG9hdFJlY3QgcmVjdCA9IGRlc3RSZWN0OwpAQCAtMTkxOCw2ICsxODkwLDggQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OmFkZERlc3RpbmF0aW9uQXRQb2ludChjb25zdCBTdHJpbmcmIG5hbWUsIGNv
bnN0IEZsb2F0UG9pbnQKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1
cm47CiAKKyAgICBBU1NFUlQoaGFzUGxhdGZvcm1Db250ZXh0KCkpOworCiAgICAgQ0dDb250ZXh0
UmVmIGNvbnRleHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsKIAogICAgIENHUG9pbnQgdHJhbnNmb3Jt
ZWRQb2ludCA9IENHUG9pbnRBcHBseUFmZmluZVRyYW5zZm9ybShwb3NpdGlvbiwgQ0dDb250ZXh0
R2V0Q1RNKGNvbnRleHQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0Q29jb2EubW0KaW5kZXggMWMwYTc2
MDg2Njg1MDRiZTE4MzE4ZWE5NzE0MzUzYTllYWIxODlmNC4uMzNjNDgwMGM2ODYyMGQ2OTEzYTc5
NGEyY2M0NWU3NTgzOGMxYzRkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0Q29jb2EubW0KQEAgLTEx
OSw4ICsxMTksOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ZvY3VzUmluZyhjb25zdCBQ
YXRoJiBwYXRoLCBmbG9hdCB3aWR0aCwgZmxvYXQgb2Zmc2V0LAogICAgIGlmIChwYWludGluZ0Rp
c2FibGVkKCkgfHwgcGF0aC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGlz
UmVjb3JkaW5nKCkpIHsKLSAgICAgICAgbV9kaXNwbGF5TGlzdFJlY29yZGVyLT5kcmF3Rm9jdXNS
aW5nKHBhdGgsIHdpZHRoLCBvZmZzZXQsIGNvbG9yKTsKKyAgICBpZiAobV9pbXBsKSB7CisgICAg
ICAgIG1faW1wbC0+ZHJhd0ZvY3VzUmluZyhwYXRoLCB3aWR0aCwgb2Zmc2V0LCBjb2xvcik7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lkIEdyYXBoaWNz
Q29udGV4dDo6ZHJhd0ZvY3VzUmluZyhjb25zdCBQYXRoJiBwYXRoLCBkb3VibGUgdGltZU9mZnNl
dCwgYm9vbCYgbgogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkgfHwgcGF0aC5pc051bGwoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIC8vIEZJWE1FOiBpbXBs
ZW1lbnQgYW5pbWF0ZWQgZm9jdXMgcmluZyBkcmF3aW5nLgorICAgIGlmIChtX2ltcGwpIC8vIEZJ
WE1FOiBpbXBsZW1lbnQgYW5pbWF0ZWQgZm9jdXMgcmluZyBkcmF3aW5nLgogICAgICAgICByZXR1
cm47CiAKICAgICBuZWVkc1JlZHJhdyA9IGRyYXdGb2N1c1JpbmdUb0NvbnRleHRBdFRpbWUocGxh
dGZvcm1Db250ZXh0KCksIHBhdGgucGxhdGZvcm1QYXRoKCksIHRpbWVPZmZzZXQpOwpAQCAtMTUw
LDcgKzE1MCw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Rm9jdXNSaW5nKGNvbnN0IFZl
Y3RvcjxGbG9hdFJlY3Q+JiByZWN0cywgZG91YmxlIHRpbWVPCiAgICAgaWYgKHBhaW50aW5nRGlz
YWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGlzUmVjb3JkaW5nKCkpIC8vIEZJ
WE1FOiBpbXBsZW1lbnQgYW5pbWF0ZWQgZm9jdXMgcmluZyBkcmF3aW5nLgorICAgIGlmIChtX2lt
cGwpIC8vIEZJWE1FOiBpbXBsZW1lbnQgYW5pbWF0ZWQgZm9jdXMgcmluZyBkcmF3aW5nLgogICAg
ICAgICByZXR1cm47CiAKICAgICBSZXRhaW5QdHI8Q0dNdXRhYmxlUGF0aFJlZj4gZm9jdXNSaW5n
UGF0aCA9IGFkb3B0Q0YoQ0dQYXRoQ3JlYXRlTXV0YWJsZSgpKTsKQEAgLTE2Nyw4ICsxNjcsOCBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ZvY3VzUmluZyhjb25zdCBWZWN0b3I8RmxvYXRS
ZWN0PiYgcmVjdHMsIGZsb2F0IHdpZHRoLAogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGlmIChpc1JlY29yZGluZygpKSB7Ci0gICAgICAgIG1fZGlz
cGxheUxpc3RSZWNvcmRlci0+ZHJhd0ZvY3VzUmluZyhyZWN0cywgd2lkdGgsIG9mZnNldCwgY29s
b3IpOworICAgIGlmIChtX2ltcGwpIHsKKyAgICAgICAgbV9pbXBsLT5kcmF3Rm9jdXNSaW5nKHJl
Y3RzLCB3aWR0aCwgb2Zmc2V0LCBjb2xvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCAzN2JkNDFlNmZiYTlj
MTQxNDBlYTQ0Nzk2NTJmYWVkMWExZTc3MTFjLi5kODc2MWJlZjk0NzEzMGM0MGY5YjAzMmFiN2Nh
YThkOTRlODIzZTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3Bw
CkBAIC0zNywxMSArMzcsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIERpc3Bs
YXlMaXN0IHsKIAogUmVjb3JkZXI6OlJlY29yZGVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
RGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0LCBjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIGJhc2VDVE0pCi0gICAgOiBtX2dyYXBoaWNzQ29udGV4dChj
b250ZXh0KQorICAgIDogR3JhcGhpY3NDb250ZXh0SW1wbChjb250ZXh0LCBpbml0aWFsQ2xpcCwg
YmFzZUNUTSkKICAgICAsIG1fZGlzcGxheUxpc3QoZGlzcGxheUxpc3QpCiB7CiAgICAgTE9HX1dJ
VEhfU1RSRUFNKERpc3BsYXlMaXN0cywgc3RyZWFtIDw8ICJcblJlY29yZGluZyB3aXRoIGNsaXAg
IiA8PCBpbml0aWFsQ2xpcCk7Ci0gICAgbV9ncmFwaGljc0NvbnRleHQuc2V0RGlzcGxheUxpc3RS
ZWNvcmRlcih0aGlzKTsKICAgICBtX3N0YXRlU3RhY2suYXBwZW5kKENvbnRleHRTdGF0ZShiYXNl
Q1RNLCBpbml0aWFsQ2xpcCkpOwogfQogCkBAIC0zNzQsNyArMzczLDcgQEAgSXRlbSYgUmVjb3Jk
ZXI6OmFwcGVuZEl0ZW0oUmVmPEl0ZW0+JiYgaXRlbSkKIAogdm9pZCBSZWNvcmRlcjo6dXBkYXRl
SXRlbUV4dGVudChEcmF3aW5nSXRlbSYgaXRlbSkgY29uc3QKIHsKLSAgICBpZiAoc3RkOjpvcHRp
b25hbDxGbG9hdFJlY3Q+IHJlY3QgPSBpdGVtLmxvY2FsQm91bmRzKG1fZ3JhcGhpY3NDb250ZXh0
KSkKKyAgICBpZiAoc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IHJlY3QgPSBpdGVtLmxvY2FsQm91
bmRzKGdyYXBoaWNzQ29udGV4dCgpKSkKICAgICAgICAgaXRlbS5zZXRFeHRlbnQoZXh0ZW50RnJv
bUxvY2FsQm91bmRzKHJlY3QudmFsdWUoKSkpOwogfQogCkBAIC0zOTYsNyArMzk1LDcgQEAgRmxv
YXRSZWN0IFJlY29yZGVyOjpleHRlbnRGcm9tTG9jYWxCb3VuZHMoY29uc3QgRmxvYXRSZWN0JiBy
ZWN0KSBjb25zdAogICAgIEZsb2F0U2l6ZSBzaGFkb3dPZmZzZXQ7CiAgICAgZmxvYXQgc2hhZG93
UmFkaXVzOwogICAgIENvbG9yIHNoYWRvd0NvbG9yOwotICAgIGlmIChtX2dyYXBoaWNzQ29udGV4
dC5nZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dSYWRpdXMsIHNoYWRvd0NvbG9yKSkgewor
ICAgIGlmIChncmFwaGljc0NvbnRleHQoKS5nZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dS
YWRpdXMsIHNoYWRvd0NvbG9yKSkgewogICAgICAgICBGbG9hdFJlY3Qgc2hhZG93RXh0ZW50PSBi
b3VuZHM7CiAgICAgICAgIHNoYWRvd0V4dGVudC5tb3ZlKHNoYWRvd09mZnNldCk7CiAgICAgICAg
IHNoYWRvd0V4dGVudC5pbmZsYXRlKHNoYWRvd1BhaW50aW5nRXh0ZW50KHNoYWRvd1JhZGl1cykp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXggNmEyOTAyMzM0Nzcx
NjBmNDUwOTk5ZDFlMjM0ZGJmMjkyMjA3ODAwNS4uZjllNDlhNTkwYjljYjgxMDk5YzQyMzBiYTcw
OGRlNDMyNDBiZDEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBA
IC0yNiw3ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkRpc3BsYXlMaXN0Lmgi
Ci0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiIC8vIEZvciBJbnRlcnBvbGF0aW9uUXVhbGl0
eS4KKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRJbXBsLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIg
Ly8gRm9yIEltYWdlOjpUaWxlUnVsZS4KICNpbmNsdWRlICJUZXh0RmxhZ3MuaCIKICNpbmNsdWRl
IDx3dGYvTm9uY29weWFibGUuaD4KQEAgLTQ3LDc5ICs0Nyw3OSBAQCBuYW1lc3BhY2UgRGlzcGxh
eUxpc3QgewogCiBjbGFzcyBEcmF3aW5nSXRlbTsKIAotY2xhc3MgUmVjb3JkZXIgeworY2xhc3Mg
UmVjb3JkZXIgOiBwdWJsaWMgR3JhcGhpY3NDb250ZXh0SW1wbCB7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoUmVjb3JkZXIpOwogcHVibGljOgogICAgIFJlY29yZGVyKEdyYXBoaWNzQ29udGV4
dCYsIERpc3BsYXlMaXN0JiwgY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJik7Ci0gICAgflJlY29yZGVyKCk7Ci0KLSAgICB2b2lkIHVwZGF0ZVN0YXRl
KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRl
Q2hhbmdlRmxhZ3MpOwotICAgIHZvaWQgY2xlYXJTaGFkb3coKTsKLQotICAgIHZvaWQgc2V0TGlu
ZUNhcChMaW5lQ2FwKTsKLSAgICB2b2lkIHNldExpbmVEYXNoKGNvbnN0IERhc2hBcnJheSYsIGZs
b2F0IGRhc2hPZmZzZXQpOwotICAgIHZvaWQgc2V0TGluZUpvaW4oTGluZUpvaW4pOwotICAgIHZv
aWQgc2V0TWl0ZXJMaW1pdChmbG9hdCk7Ci0KLSAgICB2b2lkIGZpbGxSZWN0KGNvbnN0IEZsb2F0
UmVjdCYpOwotICAgIHZvaWQgZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQ29sb3Im
KTsKLSAgICB2b2lkIGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIEdyYWRpZW50Jik7Ci0gICAg
dm9pZCBmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBDb2xvciYsIENvbXBvc2l0ZU9w
ZXJhdG9yLCBCbGVuZE1vZGUpOwotICAgIHZvaWQgZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0
Um91bmRlZFJlY3QmLCBjb25zdCBDb2xvciYsIEJsZW5kTW9kZSk7Ci0gICAgdm9pZCBmaWxsUmVj
dFdpdGhSb3VuZGVkSG9sZShjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0
JiByb3VuZGVkSG9sZVJlY3QsIGNvbnN0IENvbG9yJik7Ci0gICAgdm9pZCBmaWxsUGF0aChjb25z
dCBQYXRoJik7Ci0gICAgdm9pZCBmaWxsRWxsaXBzZShjb25zdCBGbG9hdFJlY3QmKTsKLSAgICB2
b2lkIHN0cm9rZVJlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQgbGluZVdpZHRoKTsKLSAgICB2
b2lkIHN0cm9rZVBhdGgoY29uc3QgUGF0aCYpOwotICAgIHZvaWQgc3Ryb2tlRWxsaXBzZShjb25z
dCBGbG9hdFJlY3QmKTsKLSAgICB2b2lkIGNsZWFyUmVjdChjb25zdCBGbG9hdFJlY3QmKTsKKyAg
ICB2aXJ0dWFsIH5SZWNvcmRlcigpOworCisgICAgc2l6ZV90IGl0ZW1Db3VudCgpIGNvbnN0IHsg
cmV0dXJuIG1fZGlzcGxheUxpc3QuaXRlbUNvdW50KCk7IH0KKworcHJpdmF0ZToKKyAgICB2b2lk
IHVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0
U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpIG92ZXJyaWRlOworICAgIHZvaWQgY2xlYXJTaGFkb3co
KSBvdmVycmlkZTsKKworICAgIHZvaWQgc2V0TGluZUNhcChMaW5lQ2FwKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHNldExpbmVEYXNoKGNvbnN0IERhc2hBcnJheSYsIGZsb2F0IGRhc2hPZmZzZXQpIG92
ZXJyaWRlOworICAgIHZvaWQgc2V0TGluZUpvaW4oTGluZUpvaW4pIG92ZXJyaWRlOworICAgIHZv
aWQgc2V0TWl0ZXJMaW1pdChmbG9hdCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIGZpbGxSZWN0KGNv
bnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOworICAgIHZvaWQgZmlsbFJlY3QoY29uc3QgRmxvYXRS
ZWN0JiwgY29uc3QgQ29sb3ImKSBvdmVycmlkZTsKKyAgICB2b2lkIGZpbGxSZWN0KGNvbnN0IEZs
b2F0UmVjdCYsIEdyYWRpZW50Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaWxsUmVjdChjb25zdCBG
bG9hdFJlY3QmLCBjb25zdCBDb2xvciYsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpIG92
ZXJyaWRlOworICAgIHZvaWQgZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZsb2F0Um91bmRlZFJlY3Qm
LCBjb25zdCBDb2xvciYsIEJsZW5kTW9kZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBmaWxsUmVjdFdp
dGhSb3VuZGVkSG9sZShjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiBy
b3VuZGVkSG9sZVJlY3QsIGNvbnN0IENvbG9yJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaWxsUGF0
aChjb25zdCBQYXRoJikgb3ZlcnJpZGU7CisgICAgdm9pZCBmaWxsRWxsaXBzZShjb25zdCBGbG9h
dFJlY3QmKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0cm9rZVJlY3QoY29uc3QgRmxvYXRSZWN0Jiwg
ZmxvYXQgbGluZVdpZHRoKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0cm9rZVBhdGgoY29uc3QgUGF0
aCYpIG92ZXJyaWRlOworICAgIHZvaWQgc3Ryb2tlRWxsaXBzZShjb25zdCBGbG9hdFJlY3QmKSBv
dmVycmlkZTsKKyAgICB2b2lkIGNsZWFyUmVjdChjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsK
IAogI2lmIFVTRShDRykKLSAgICB2b2lkIGFwcGx5U3Ryb2tlUGF0dGVybigpOwotICAgIHZvaWQg
YXBwbHlGaWxsUGF0dGVybigpOworICAgIHZvaWQgYXBwbHlTdHJva2VQYXR0ZXJuKCkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBhcHBseUZpbGxQYXR0ZXJuKCkgb3ZlcnJpZGU7CiAjZW5kaWYKIAotICAg
IHZvaWQgZHJhd0dseXBocyhjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXImLCB1bnNpZ25l
ZCBmcm9tLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hvclBvaW50
LCBGb250U21vb3RoaW5nTW9kZSk7CisgICAgdm9pZCBkcmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBj
b25zdCBHbHlwaEJ1ZmZlciYsIHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIG51bUdseXBocywgY29u
c3QgRmxvYXRQb2ludCYgYW5jaG9yUG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlKSBvdmVycmlkZTsK
IAotICAgIHZvaWQgZHJhd0ltYWdlKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlv
biwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJik7
Ci0gICAgdm9pZCBkcmF3VGlsZWRJbWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGlu
YXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6
ZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYp
OwotICAgIHZvaWQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3Rp
bmF0aW9uLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2Nh
bGVGYWN0b3IsIEltYWdlOjpUaWxlUnVsZSBoUnVsZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlLCBj
b25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpOworICAgIHZvaWQgZHJhd0ltYWdlKEltYWdlJiwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3VGlsZWRJ
bWFnZShJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEZsb2F0UG9p
bnQmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2l6ZSwgY29uc3QgRmxvYXRTaXplJiBz
cGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOworICAgIHZvaWQg
ZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RpbmF0aW9uLCBjb25z
dCBGbG9hdFJlY3QmIHNvdXJjZSwgY29uc3QgRmxvYXRTaXplJiB0aWxlU2NhbGVGYWN0b3IsIElt
YWdlOjpUaWxlUnVsZSBoUnVsZSwgSW1hZ2U6OlRpbGVSdWxlIHZSdWxlLCBjb25zdCBJbWFnZVBh
aW50aW5nT3B0aW9ucyYpIG92ZXJyaWRlOwogI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKQotICAg
IHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRT
aXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9yaWVudGF0aW9u
KTsKKyAgICB2b2lkIGRyYXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0
IEZsb2F0U2l6ZSYgc2VsZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZs
b2F0UmVjdCYgc3JjUmVjdCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmll
bnRhdGlvbikgb3ZlcnJpZGU7CiAjZW5kaWYKLSAgICB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRT
aXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9y
bWFsKTsKKyAgICB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0
UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBj
b25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3Np
dGVPcGVyYXRvciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsKSBvdmVycmlkZTsKIAotICAg
IHZvaWQgZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKTsK
LSAgICB2b2lkIGRyYXdMaW5lKGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50Jik7
Ci0gICAgdm9pZCBkcmF3TGluZXNGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBEYXNo
QXJyYXkmIHdpZHRocywgYm9vbCBwcmludGluZywgYm9vbCBkb3VibGVMaW5lcywgZmxvYXQgc3Ry
b2tlVGhpY2tuZXNzKTsKLSAgICB2b2lkIGRyYXdMaW5lRm9yRG9jdW1lbnRNYXJrZXIoY29uc3Qg
RmxvYXRQb2ludCYsIGZsb2F0IHdpZHRoLCBHcmFwaGljc0NvbnRleHQ6OkRvY3VtZW50TWFya2Vy
TGluZVN0eWxlKTsKLSAgICB2b2lkIGRyYXdFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYpOwotICAg
IHZvaWQgZHJhd1BhdGgoY29uc3QgUGF0aCYpOworICAgIHZvaWQgZHJhd1JlY3QoY29uc3QgRmxv
YXRSZWN0JiwgZmxvYXQgYm9yZGVyVGhpY2tuZXNzKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdM
aW5lKGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50Jikgb3ZlcnJpZGU7CisgICAg
dm9pZCBkcmF3TGluZXNGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBEYXNoQXJyYXkm
IHdpZHRocywgYm9vbCBwcmludGluZywgYm9vbCBkb3VibGVMaW5lcywgZmxvYXQgc3Ryb2tlVGhp
Y2tuZXNzKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdMaW5lRm9yRG9jdW1lbnRNYXJrZXIoY29u
c3QgRmxvYXRQb2ludCYsIGZsb2F0IHdpZHRoLCBHcmFwaGljc0NvbnRleHQ6OkRvY3VtZW50TWFy
a2VyTGluZVN0eWxlKSBvdmVycmlkZTsKKyAgICB2b2lkIGRyYXdFbGxpcHNlKGNvbnN0IEZsb2F0
UmVjdCYpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd1BhdGgoY29uc3QgUGF0aCYpIG92ZXJyaWRl
OwogCi0gICAgdm9pZCBkcmF3Rm9jdXNSaW5nKGNvbnN0IFBhdGgmLCBmbG9hdCB3aWR0aCwgZmxv
YXQgb2Zmc2V0LCBjb25zdCBDb2xvciYpOwotICAgIHZvaWQgZHJhd0ZvY3VzUmluZyhjb25zdCBW
ZWN0b3I8RmxvYXRSZWN0PiYsIGZsb2F0IHdpZHRoLCBmbG9hdCBvZmZzZXQsIGNvbnN0IENvbG9y
Jik7CisgICAgdm9pZCBkcmF3Rm9jdXNSaW5nKGNvbnN0IFBhdGgmLCBmbG9hdCB3aWR0aCwgZmxv
YXQgb2Zmc2V0LCBjb25zdCBDb2xvciYpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd0ZvY3VzUmlu
Zyhjb25zdCBWZWN0b3I8RmxvYXRSZWN0PiYsIGZsb2F0IHdpZHRoLCBmbG9hdCBvZmZzZXQsIGNv
bnN0IENvbG9yJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHNhdmUoKTsKLSAgICB2b2lkIHJlc3Rv
cmUoKTsKKyAgICB2b2lkIHNhdmUoKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlc3RvcmUoKSBvdmVy
cmlkZTsKIAotICAgIHZvaWQgdHJhbnNsYXRlKGZsb2F0IHgsIGZsb2F0IHkpOwotICAgIHZvaWQg
cm90YXRlKGZsb2F0IGFuZ2xlSW5SYWRpYW5zKTsKLSAgICB2b2lkIHNjYWxlKGNvbnN0IEZsb2F0
U2l6ZSYpOwotICAgIHZvaWQgY29uY2F0Q1RNKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOworICAg
IHZvaWQgdHJhbnNsYXRlKGZsb2F0IHgsIGZsb2F0IHkpIG92ZXJyaWRlOworICAgIHZvaWQgcm90
YXRlKGZsb2F0IGFuZ2xlSW5SYWRpYW5zKSBvdmVycmlkZTsKKyAgICB2b2lkIHNjYWxlKGNvbnN0
IEZsb2F0U2l6ZSYpIG92ZXJyaWRlOworICAgIHZvaWQgY29uY2F0Q1RNKGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBiZWdpblRyYW5zcGFyZW5jeUxheWVyKGZs
b2F0IG9wYWNpdHkpOwotICAgIHZvaWQgZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKKyAgICB2b2lk
IGJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoZmxvYXQgb3BhY2l0eSkgb3ZlcnJpZGU7CisgICAgdm9p
ZCBlbmRUcmFuc3BhcmVuY3lMYXllcigpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBjbGlwKGNvbnN0
IEZsb2F0UmVjdCYpOwotICAgIHZvaWQgY2xpcE91dChjb25zdCBGbG9hdFJlY3QmKTsKLSAgICB2
b2lkIGNsaXBPdXQoY29uc3QgUGF0aCYpOwotICAgIHZvaWQgY2xpcFBhdGgoY29uc3QgUGF0aCYs
IFdpbmRSdWxlKTsKKyAgICB2b2lkIGNsaXAoY29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBjbGlwT3V0KGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJyaWRlOworICAgIHZvaWQgY2xp
cE91dChjb25zdCBQYXRoJikgb3ZlcnJpZGU7CisgICAgdm9pZCBjbGlwUGF0aChjb25zdCBQYXRo
JiwgV2luZFJ1bGUpIG92ZXJyaWRlOwogICAgIAotICAgIHZvaWQgYXBwbHlEZXZpY2VTY2FsZUZh
Y3RvcihmbG9hdCk7CisgICAgdm9pZCBhcHBseURldmljZVNjYWxlRmFjdG9yKGZsb2F0KSBvdmVy
cmlkZTsKIAotICAgIHNpemVfdCBpdGVtQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlM
aXN0Lml0ZW1Db3VudCgpOyB9Ci0KLXByaXZhdGU6CiAgICAgSXRlbSYgYXBwZW5kSXRlbShSZWY8
SXRlbT4mJik7CiAgICAgdm9pZCB3aWxsQXBwZW5kSXRlbShjb25zdCBJdGVtJik7CiAKQEAgLTE2
MSw3ICsxNjEsNiBAQCBwcml2YXRlOgogICAgIGNvbnN0IENvbnRleHRTdGF0ZSYgY3VycmVudFN0
YXRlKCkgY29uc3Q7CiAgICAgQ29udGV4dFN0YXRlJiBjdXJyZW50U3RhdGUoKTsKIAotICAgIEdy
YXBoaWNzQ29udGV4dCYgbV9ncmFwaGljc0NvbnRleHQ7CiAgICAgRGlzcGxheUxpc3QmIG1fZGlz
cGxheUxpc3Q7CiAKICAgICBWZWN0b3I8Q29udGV4dFN0YXRlLCAzMj4gbV9zdGF0ZVN0YWNrOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNz
Q29udGV4dENHV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9H
cmFwaGljc0NvbnRleHRDR1dpbi5jcHAKaW5kZXggOTY4ZGNkOWEwNWU3NjMyMGEzOTQxM2Q0NWQw
MjEwOTg5MDhlMzg0My4uYWZiZmVhMDA1YTRjMzlkMDU3ZTg0YzE4N2NjMmU1N2VlNTM2YTVjZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNz
Q29udGV4dENHV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vR3JhcGhpY3NDb250ZXh0Q0dXaW4uY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgVVNFKENH
KQogCiAjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0SW1wbC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNHLmgi
CiAjaW5jbHVkZSAiUGF0aC5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGhlbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
LmNwcAppbmRleCBkYjdjOGY3MGU1ZWQ4MGQ0ODY4MjI4MDQ4ODI0ZDQ3ODUwODllNDkxLi45Nzhl
OTVjYzAxZmM2YjM1ZjM2OGNiM2RiN2U2YjU3ZmZmMjJiMzQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKQEAgLTI4Myw3ICsyODMsNyBAQCBib29sIFJlbmRlclRo
ZW1lOjpwYWludChjb25zdCBSZW5kZXJCb3gmIGJveCwgQ29udHJvbFN0YXRlcyYgY29udHJvbFN0
YXRlcywgY29ucwogICAgIGlmIChwYWludEluZm8uY29udGV4dCgpLnBhaW50aW5nRGlzYWJsZWQo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKFVOTElLRUxZKHBhaW50SW5mby5j
b250ZXh0KCkuaXNSZWNvcmRpbmcoKSkpCisgICAgaWYgKFVOTElLRUxZKCFwYWludEluZm8uY29u
dGV4dCgpLmhhc1BsYXRmb3JtQ29udGV4dCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgQ29udHJvbFBhcnQgcGFydCA9IGJveC5zdHlsZSgpLmFwcGVhcmFuY2UoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>326057</attachid>
            <date>2017-11-04 18:47:26 -0700</date>
            <delta_ts>2017-11-04 19:35:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179290-20171104184725.patch</filename>
            <type>text/plain</type>
            <size>8712</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0NDUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzk4NDFmYmFmYTJhMzFm
OGQ1ZDFhMmI2YzdjOWJkMjM3MjllYzgzOS4uM2E4YjEzNTIxYzhmMGQ3NjFlYjJiNDlmOTRmODEw
ZTI1NjU4ODFkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE5IEBACiAyMDE3LTExLTA0ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCisgICAgICAgIE1vdmUgY29kZSB0
aGF0IG1hcHMgYSBDb21wb3NpdGVPcGVyYXRvciBhbmQgQmxlbmRNb2RlIHRvIGEgQ0dCbGVuZE1v
ZGUgaW50byBhIGhlbHBlciBmdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTc5MjkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTW92ZSB0aGUgY29kZSwgYW5kIHVzZSBuZXN0ZWQgc3dpdGNoIHJh
dGhlciB0aGFuIGNvbmRpdGlvbmFscy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzVHlwZXMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb21wb3NpdGVBbmRCbGVuZFRvQ0dCbGVu
ZE1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUNv
bXBvc2l0ZU9wZXJhdGlvbik6CisKKzIwMTctMTEtMDQgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZy
YXNlckBhcHBsZS5jb20+CisKICAgICAgICAgQWRkIGEgR3JhcGhpY3NDb250ZXh0SW1wbCBhbmQg
dXNlIGl0IGZvciBEaXNwYXlMaXN0OjpSZWNvcmRlcgogICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5Mjg2CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuaAppbmRleCBjZTQ0MzNlNGM0OGIxOTgyNWU3
Y2E1ZGY4NzQ5OThhNGRmMTM2ODYxLi4xMjQxN2FkZWE3MzYxYzlmMTI4ZGI1OWU3MDNlMzM1Njhj
OGRmYjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc1R5cGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NUeXBlcy5oCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZu
ZGVmIEdyYXBoaWNzVHlwZXNfaAotI2RlZmluZSBHcmFwaGljc1R5cGVzX2gKKyNwcmFnbWEgb25j
ZQogCiAjaW5jbHVkZSAiV2luZFJ1bGUuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAt
MTIxLDQgKzEyMCwzIEBAIFdFQkNPUkVfRVhQT1JUIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChXVEY6OlRleHRTdHJlYW0mLCBMaW5lSm9pbik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKaW5kZXggZmMyOTFlMmVjYmNkMjZiNjFmZTVjZTI5
MDBhODRhNWZjODczZDZlNy4uMGVlODM1MTJiZmFiMTgwNDQ1M2E1MWZlZWY4M2FlODE5M2VlODFk
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhp
Y3NDb250ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0dyYXBoaWNzQ29udGV4dENHLmNwcApAQCAtMTM3LDYgKzEzNyw4MCBAQCBzdGF0aWMgSW50ZXJw
b2xhdGlvblF1YWxpdHkgY29udmVydEludGVycG9sYXRpb25RdWFsaXR5KENHSW50ZXJwb2xhdGlv
blF1YWxpdHkgcQogICAgIHJldHVybiBJbnRlcnBvbGF0aW9uRGVmYXVsdDsKIH0KIAorc3RhdGlj
IENHQmxlbmRNb2RlIGNvbXBvc2l0ZUFuZEJsZW5kVG9DR0JsZW5kTW9kZShDb21wb3NpdGVPcGVy
YXRvciBjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKK3sKKyAgICBzd2l0
Y2ggKGJsZW5kTW9kZSkgeworICAgIGNhc2UgQmxlbmRNb2RlTm9ybWFsOgorICAgICAgICBzd2l0
Y2ggKGNvbXBvc2l0ZU9wZXJhdG9yKSB7CisgICAgICAgIGNhc2UgQ29tcG9zaXRlQ2xlYXI6Cisg
ICAgICAgICAgICByZXR1cm4ga0NHQmxlbmRNb2RlQ2xlYXI7CisgICAgICAgIGNhc2UgQ29tcG9z
aXRlQ29weToKKyAgICAgICAgICAgIHJldHVybiBrQ0dCbGVuZE1vZGVDb3B5OworICAgICAgICBj
YXNlIENvbXBvc2l0ZVNvdXJjZU92ZXI6CisgICAgICAgICAgICByZXR1cm4ga0NHQmxlbmRNb2Rl
Tm9ybWFsOworICAgICAgICBjYXNlIENvbXBvc2l0ZVNvdXJjZUluOgorICAgICAgICAgICAgcmV0
dXJuIGtDR0JsZW5kTW9kZVNvdXJjZUluOworICAgICAgICBjYXNlIENvbXBvc2l0ZVNvdXJjZU91
dDoKKyAgICAgICAgICAgIHJldHVybiBrQ0dCbGVuZE1vZGVTb3VyY2VPdXQ7CisgICAgICAgIGNh
c2UgQ29tcG9zaXRlU291cmNlQXRvcDoKKyAgICAgICAgICAgIHJldHVybiBrQ0dCbGVuZE1vZGVT
b3VyY2VBdG9wOworICAgICAgICBjYXNlIENvbXBvc2l0ZURlc3RpbmF0aW9uT3ZlcjoKKyAgICAg
ICAgICAgIHJldHVybiBrQ0dCbGVuZE1vZGVEZXN0aW5hdGlvbk92ZXI7CisgICAgICAgIGNhc2Ug
Q29tcG9zaXRlRGVzdGluYXRpb25JbjoKKyAgICAgICAgICAgIHJldHVybiBrQ0dCbGVuZE1vZGVE
ZXN0aW5hdGlvbkluOworICAgICAgICBjYXNlIENvbXBvc2l0ZURlc3RpbmF0aW9uT3V0OgorICAg
ICAgICAgICAgcmV0dXJuIGtDR0JsZW5kTW9kZURlc3RpbmF0aW9uT3V0OworICAgICAgICBjYXNl
IENvbXBvc2l0ZURlc3RpbmF0aW9uQXRvcDoKKyAgICAgICAgICAgIHJldHVybiBrQ0dCbGVuZE1v
ZGVEZXN0aW5hdGlvbkF0b3A7CisgICAgICAgIGNhc2UgQ29tcG9zaXRlWE9SOgorICAgICAgICAg
ICAgcmV0dXJuIGtDR0JsZW5kTW9kZVhPUjsKKyAgICAgICAgY2FzZSBDb21wb3NpdGVQbHVzRGFy
a2VyOgorICAgICAgICAgICAgcmV0dXJuIGtDR0JsZW5kTW9kZVBsdXNEYXJrZXI7CisgICAgICAg
IGNhc2UgQ29tcG9zaXRlUGx1c0xpZ2h0ZXI6CisgICAgICAgICAgICByZXR1cm4ga0NHQmxlbmRN
b2RlUGx1c0xpZ2h0ZXI7CisgICAgICAgIGNhc2UgQ29tcG9zaXRlRGlmZmVyZW5jZToKKyAgICAg
ICAgICAgIHJldHVybiBrQ0dCbGVuZE1vZGVEaWZmZXJlbmNlOworICAgICAgICB9CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgQmxlbmRNb2RlTXVsdGlwbHk6CisgICAgICAgIHJldHVybiBrQ0dC
bGVuZE1vZGVNdWx0aXBseTsKKyAgICBjYXNlIEJsZW5kTW9kZVNjcmVlbjoKKyAgICAgICAgcmV0
dXJuIGtDR0JsZW5kTW9kZVNjcmVlbjsKKyAgICBjYXNlIEJsZW5kTW9kZU92ZXJsYXk6CisgICAg
ICAgIHJldHVybiBrQ0dCbGVuZE1vZGVPdmVybGF5OworICAgIGNhc2UgQmxlbmRNb2RlRGFya2Vu
OgorICAgICAgICByZXR1cm4ga0NHQmxlbmRNb2RlRGFya2VuOworICAgIGNhc2UgQmxlbmRNb2Rl
TGlnaHRlbjoKKyAgICAgICAgcmV0dXJuIGtDR0JsZW5kTW9kZUxpZ2h0ZW47CisgICAgY2FzZSBC
bGVuZE1vZGVDb2xvckRvZGdlOgorICAgICAgICByZXR1cm4ga0NHQmxlbmRNb2RlQ29sb3JEb2Rn
ZTsKKyAgICBjYXNlIEJsZW5kTW9kZUNvbG9yQnVybjoKKyAgICAgICAgcmV0dXJuIGtDR0JsZW5k
TW9kZUNvbG9yQnVybjsKKyAgICBjYXNlIEJsZW5kTW9kZUhhcmRMaWdodDoKKyAgICAgICAgcmV0
dXJuIGtDR0JsZW5kTW9kZUhhcmRMaWdodDsKKyAgICBjYXNlIEJsZW5kTW9kZVNvZnRMaWdodDoK
KyAgICAgICAgcmV0dXJuIGtDR0JsZW5kTW9kZVNvZnRMaWdodDsKKyAgICBjYXNlIEJsZW5kTW9k
ZURpZmZlcmVuY2U6CisgICAgICAgIHJldHVybiBrQ0dCbGVuZE1vZGVEaWZmZXJlbmNlOworICAg
IGNhc2UgQmxlbmRNb2RlRXhjbHVzaW9uOgorICAgICAgICByZXR1cm4ga0NHQmxlbmRNb2RlRXhj
bHVzaW9uOworICAgIGNhc2UgQmxlbmRNb2RlSHVlOgorICAgICAgICByZXR1cm4ga0NHQmxlbmRN
b2RlSHVlOworICAgIGNhc2UgQmxlbmRNb2RlU2F0dXJhdGlvbjoKKyAgICAgICAgcmV0dXJuIGtD
R0JsZW5kTW9kZVNhdHVyYXRpb247CisgICAgY2FzZSBCbGVuZE1vZGVDb2xvcjoKKyAgICAgICAg
cmV0dXJuIGtDR0JsZW5kTW9kZUNvbG9yOworICAgIGNhc2UgQmxlbmRNb2RlTHVtaW5vc2l0eToK
KyAgICAgICAgcmV0dXJuIGtDR0JsZW5kTW9kZUx1bWlub3NpdHk7CisgICAgY2FzZSBCbGVuZE1v
ZGVQbHVzRGFya2VyOgorICAgICAgICByZXR1cm4ga0NHQmxlbmRNb2RlUGx1c0RhcmtlcjsKKyAg
ICBjYXNlIEJsZW5kTW9kZVBsdXNMaWdodGVyOgorICAgICAgICByZXR1cm4ga0NHQmxlbmRNb2Rl
UGx1c0xpZ2h0ZXI7CisgICAgfQorCisgICAgcmV0dXJuIGtDR0JsZW5kTW9kZU5vcm1hbDsKK30K
Kwogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtSW5pdChDR0NvbnRleHRSZWYgY2dDb250
ZXh0KQogewogICAgIGlmICghY2dDb250ZXh0KQpAQCAtMTczNCwxMTcgKzE4MDgsMTMgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtQWxwaGEoZmxvYXQgYWxwaGEpCiAgICAgQ0dD
b250ZXh0U2V0QWxwaGEocGxhdGZvcm1Db250ZXh0KCksIGFscGhhKTsKIH0KIAotdm9pZCBHcmFw
aGljc0NvbnRleHQ6OnNldFBsYXRmb3JtQ29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJh
dG9yIG1vZGUsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0
UGxhdGZvcm1Db21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3Bl
cmF0b3IsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQo
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKGhhc1BsYXRmb3JtQ29udGV4dCgpKTsK
LQotICAgIENHQmxlbmRNb2RlIHRhcmdldCA9IGtDR0JsZW5kTW9kZU5vcm1hbDsKLSAgICBpZiAo
YmxlbmRNb2RlICE9IEJsZW5kTW9kZU5vcm1hbCkgewotICAgICAgICBzd2l0Y2ggKGJsZW5kTW9k
ZSkgewotICAgICAgICBjYXNlIEJsZW5kTW9kZU11bHRpcGx5OgotICAgICAgICAgICAgdGFyZ2V0
ID0ga0NHQmxlbmRNb2RlTXVsdGlwbHk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBCbGVuZE1vZGVTY3JlZW46Ci0gICAgICAgICAgICB0YXJnZXQgPSBrQ0dCbGVuZE1vZGVTY3Jl
ZW47Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBCbGVuZE1vZGVPdmVybGF5Ogot
ICAgICAgICAgICAgdGFyZ2V0ID0ga0NHQmxlbmRNb2RlT3ZlcmxheTsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIEJsZW5kTW9kZURhcmtlbjoKLSAgICAgICAgICAgIHRhcmdldCA9
IGtDR0JsZW5kTW9kZURhcmtlbjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEJs
ZW5kTW9kZUxpZ2h0ZW46Ci0gICAgICAgICAgICB0YXJnZXQgPSBrQ0dCbGVuZE1vZGVMaWdodGVu
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQmxlbmRNb2RlQ29sb3JEb2RnZToK
LSAgICAgICAgICAgIHRhcmdldCA9IGtDR0JsZW5kTW9kZUNvbG9yRG9kZ2U7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBCbGVuZE1vZGVDb2xvckJ1cm46Ci0gICAgICAgICAgICB0
YXJnZXQgPSBrQ0dCbGVuZE1vZGVDb2xvckJ1cm47Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBCbGVuZE1vZGVIYXJkTGlnaHQ6Ci0gICAgICAgICAgICB0YXJnZXQgPSBrQ0dCbGVu
ZE1vZGVIYXJkTGlnaHQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBCbGVuZE1v
ZGVTb2Z0TGlnaHQ6Ci0gICAgICAgICAgICB0YXJnZXQgPSBrQ0dCbGVuZE1vZGVTb2Z0TGlnaHQ7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBCbGVuZE1vZGVEaWZmZXJlbmNlOgot
ICAgICAgICAgICAgdGFyZ2V0ID0ga0NHQmxlbmRNb2RlRGlmZmVyZW5jZTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIEJsZW5kTW9kZUV4Y2x1c2lvbjoKLSAgICAgICAgICAgIHRh
cmdldCA9IGtDR0JsZW5kTW9kZUV4Y2x1c2lvbjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIEJsZW5kTW9kZUh1ZToKLSAgICAgICAgICAgIHRhcmdldCA9IGtDR0JsZW5kTW9kZUh1
ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEJsZW5kTW9kZVNhdHVyYXRpb246
Ci0gICAgICAgICAgICB0YXJnZXQgPSBrQ0dCbGVuZE1vZGVTYXR1cmF0aW9uOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQmxlbmRNb2RlQ29sb3I6Ci0gICAgICAgICAgICB0YXJn
ZXQgPSBrQ0dCbGVuZE1vZGVDb2xvcjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IEJsZW5kTW9kZUx1bWlub3NpdHk6Ci0gICAgICAgICAgICB0YXJnZXQgPSBrQ0dCbGVuZE1vZGVM
dW1pbm9zaXR5OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQmxlbmRNb2RlUGx1
c0RhcmtlcjoKLSAgICAgICAgICAgIHRhcmdldCA9IGtDR0JsZW5kTW9kZVBsdXNEYXJrZXI7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBCbGVuZE1vZGVQbHVzTGlnaHRlcjoKLSAg
ICAgICAgICAgIHRhcmdldCA9IGtDR0JsZW5kTW9kZVBsdXNMaWdodGVyOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgIH0gZWxzZSB7Ci0gICAgICAgIHN3aXRjaCAobW9kZSkgewotICAgICAgICBjYXNlIENvbXBv
c2l0ZUNsZWFyOgotICAgICAgICAgICAgdGFyZ2V0ID0ga0NHQmxlbmRNb2RlQ2xlYXI7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDb21wb3NpdGVDb3B5OgotICAgICAgICAgICAg
dGFyZ2V0ID0ga0NHQmxlbmRNb2RlQ29weTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIENvbXBvc2l0ZVNvdXJjZU92ZXI6Ci0gICAgICAgICAgICAvLyBrQ0dCbGVuZE1vZGVOb3Jt
YWwKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENvbXBvc2l0ZVNvdXJjZUluOgot
ICAgICAgICAgICAgdGFyZ2V0ID0ga0NHQmxlbmRNb2RlU291cmNlSW47Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBDb21wb3NpdGVTb3VyY2VPdXQ6Ci0gICAgICAgICAgICB0YXJn
ZXQgPSBrQ0dCbGVuZE1vZGVTb3VyY2VPdXQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBDb21wb3NpdGVTb3VyY2VBdG9wOgotICAgICAgICAgICAgdGFyZ2V0ID0ga0NHQmxlbmRN
b2RlU291cmNlQXRvcDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENvbXBvc2l0
ZURlc3RpbmF0aW9uT3ZlcjoKLSAgICAgICAgICAgIHRhcmdldCA9IGtDR0JsZW5kTW9kZURlc3Rp
bmF0aW9uT3ZlcjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENvbXBvc2l0ZURl
c3RpbmF0aW9uSW46Ci0gICAgICAgICAgICB0YXJnZXQgPSBrQ0dCbGVuZE1vZGVEZXN0aW5hdGlv
bkluOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ29tcG9zaXRlRGVzdGluYXRp
b25PdXQ6Ci0gICAgICAgICAgICB0YXJnZXQgPSBrQ0dCbGVuZE1vZGVEZXN0aW5hdGlvbk91dDsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENvbXBvc2l0ZURlc3RpbmF0aW9uQXRv
cDoKLSAgICAgICAgICAgIHRhcmdldCA9IGtDR0JsZW5kTW9kZURlc3RpbmF0aW9uQXRvcDsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENvbXBvc2l0ZVhPUjoKLSAgICAgICAgICAg
IHRhcmdldCA9IGtDR0JsZW5kTW9kZVhPUjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIENvbXBvc2l0ZVBsdXNEYXJrZXI6Ci0gICAgICAgICAgICB0YXJnZXQgPSBrQ0dCbGVuZE1v
ZGVQbHVzRGFya2VyOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ29tcG9zaXRl
UGx1c0xpZ2h0ZXI6Ci0gICAgICAgICAgICB0YXJnZXQgPSBrQ0dCbGVuZE1vZGVQbHVzTGlnaHRl
cjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENvbXBvc2l0ZURpZmZlcmVuY2U6
Ci0gICAgICAgICAgICB0YXJnZXQgPSBrQ0dCbGVuZE1vZGVEaWZmZXJlbmNlOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgQ0dDb250ZXh0U2V0QmxlbmRNb2RlKHBs
YXRmb3JtQ29udGV4dCgpLCB0YXJnZXQpOworICAgIENHQ29udGV4dFNldEJsZW5kTW9kZShwbGF0
Zm9ybUNvbnRleHQoKSwgY29tcG9zaXRlQW5kQmxlbmRUb0NHQmxlbmRNb2RlKGNvbXBvc2l0ZU9w
ZXJhdG9yLCBibGVuZE1vZGUpKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3Jt
QXBwbHlEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBkZXZpY2VTY2FsZUZhY3RvcikK
</data>
<flag name="review"
          id="345432"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>