<?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>164496</bug_id>
          
          <creation_ts>2016-11-07 16:55:03 -0800</creation_ts>
          <short_desc>[SVG] Start moving special casing of SVG out of the bindings - SVGAngle</short_desc>
          <delta_ts>2016-11-13 18:49:47 -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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>164704</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1248898</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-11-07 16:55:03 -0800</bug_when>
    <thetext>[SVG] Start moving special casing of SVG out of the bindings - SVGAngle</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1248905</commentid>
    <comment_count>1</comment_count>
      <attachid>294104</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-11-07 17:27:22 -0800</bug_when>
    <thetext>Created attachment 294104
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1248906</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-07 17:29:10 -0800</bug_when>
    <thetext>Attachment 294104 did not pass style-queue:


ERROR: Source/WebCore/svg/SVGAngleValue.h:37:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/svg/SVGAngleValue.h:38:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/svg/SVGAngleValue.h:39:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/svg/SVGAngleValue.h:40:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/svg/SVGAngleValue.h:41:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
Total errors found: 5 in 31 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1248969</commentid>
    <comment_count>3</comment_count>
      <attachid>294104</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-11-07 22:06:28 -0800</bug_when>
    <thetext>Comment on attachment 294104
Patch

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

&gt; Source/WebCore/svg/SVGAngle.h:40
&gt; +    static Ref&lt;SVGAngle&gt; create(SVGAnimatedProperty* animatedProperty, SVGPropertyRole role, SVGAngleValue&amp; value)

Does this first argument need to be a pointer rather than a reference?

&gt; Source/WebCore/svg/SVGAngle.h:140
&gt; +    SVGAngle(SVGAngleValue initialValue)

explicit?

&gt; Source/WebCore/svg/SVGAngleValue.h:34
&gt; +class SVGAngleValue {
&gt; +    WTF_MAKE_FAST_ALLOCATED;

Why WTF_MAKE_FAST_ALLOCATED? Who allocates these on the heap?

&gt; Source/WebCore/svg/SVGAngleValue.h:42
&gt; +    enum Type {
&gt; +        SVG_ANGLETYPE_UNKNOWN = 0,
&gt; +        SVG_ANGLETYPE_UNSPECIFIED = 1,
&gt; +        SVG_ANGLETYPE_DEG = 2,
&gt; +        SVG_ANGLETYPE_RAD = 3,
&gt; +        SVG_ANGLETYPE_GRAD = 4
&gt; +    };

Annoying to repeat this enum as SVGAngleValue::Type and as SVGAngle::SVGAngleType. Would be bad if the two ever got out of sync. Any ideas on how to avoid that?

&gt; Source/WebCore/svg/SVGPathSegList.h:31
&gt;  class SVGElement;
&gt; +template&lt;typename T&gt; class SVGPropertyTearOff;

Blank line here so the templates are in a separate paragraph from the classes?

&gt; Source/WebCore/svg/SVGStringList.h:30
&gt;  class SVGElement;
&gt; +template&lt;typename T&gt; class SVGPropertyTearOff;

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249068</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-11-08 09:39:11 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 294104 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=294104&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/svg/SVGAngle.h:40
&gt; &gt; +    static Ref&lt;SVGAngle&gt; create(SVGAnimatedProperty* animatedProperty, SVGPropertyRole role, SVGAngleValue&amp; value)
&gt; 
&gt; Does this first argument need to be a pointer rather than a reference?

Good question. I am duplicating the interface of SVGPropertyTearOff here, so I didn&apos;t want to change anything like that. I&apos;ll find out before landing.

&gt; 
&gt; &gt; Source/WebCore/svg/SVGAngle.h:140
&gt; &gt; +    SVGAngle(SVGAngleValue initialValue)
&gt; 
&gt; explicit?

Will change.

&gt; 
&gt; &gt; Source/WebCore/svg/SVGAngleValue.h:34
&gt; &gt; +class SVGAngleValue {
&gt; &gt; +    WTF_MAKE_FAST_ALLOCATED;
&gt; 
&gt; Why WTF_MAKE_FAST_ALLOCATED? Who allocates these on the heap?

SVGPropertyTearOff (and therefore SVGAngle) allocates these. See the SVGPropertyTearOff constructor that takes a const PropertyType*.

&gt; 
&gt; &gt; Source/WebCore/svg/SVGAngleValue.h:42
&gt; &gt; +    enum Type {
&gt; &gt; +        SVG_ANGLETYPE_UNKNOWN = 0,
&gt; &gt; +        SVG_ANGLETYPE_UNSPECIFIED = 1,
&gt; &gt; +        SVG_ANGLETYPE_DEG = 2,
&gt; &gt; +        SVG_ANGLETYPE_RAD = 3,
&gt; &gt; +        SVG_ANGLETYPE_GRAD = 4
&gt; &gt; +    };
&gt; 
&gt; Annoying to repeat this enum as SVGAngleValue::Type and as
&gt; SVGAngle::SVGAngleType. Would be bad if the two ever got out of sync. Any
&gt; ideas on how to avoid that?

I was really sad about this. I tried a few things, like trying to use a using statement to re-export the enum in another place.  I think I will probably need to update the bindings to be able to look in an alternate place for these.

&gt; 
&gt; &gt; Source/WebCore/svg/SVGPathSegList.h:31
&gt; &gt;  class SVGElement;
&gt; &gt; +template&lt;typename T&gt; class SVGPropertyTearOff;
&gt; 
&gt; Blank line here so the templates are in a separate paragraph from the
&gt; classes?

Ok.

&gt; 
&gt; &gt; Source/WebCore/svg/SVGStringList.h:30
&gt; &gt;  class SVGElement;
&gt; &gt; +template&lt;typename T&gt; class SVGPropertyTearOff;
&gt; 
&gt; Ditto.

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249445</commentid>
    <comment_count>5</comment_count>
      <attachid>294271</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-11-09 12:58:02 -0800</bug_when>
    <thetext>Created attachment 294271
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249446</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-09 13:00:29 -0800</bug_when>
    <thetext>Attachment 294271 did not pass style-queue:


ERROR: Source/WebCore/svg/SVGAngleValue.h:33:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/svg/SVGAngleValue.h:34:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/svg/SVGAngleValue.h:35:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/svg/SVGAngleValue.h:36:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/svg/SVGAngleValue.h:37:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
Total errors found: 5 in 31 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249477</commentid>
    <comment_count>7</comment_count>
      <attachid>294271</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-09 13:33:46 -0800</bug_when>
    <thetext>Comment on attachment 294271
Patch

Clearing flags on attachment: 294271

Committed r208480: &lt;http://trac.webkit.org/changeset/208480&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249478</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-09 13:33:49 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294104</attachid>
            <date>2016-11-07 17:27:22 -0800</date>
            <delta_ts>2016-11-09 12:57:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164496-20161107172314.patch</filename>
            <type>text/plain</type>
            <size>81623</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwODQyMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNSBAQAorMjAxNi0xMS0wNyAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFtTVkddIFN0YXJ0IG1vdmluZyBzcGVj
aWFsIGNhc2luZyBvZiBTVkcgb3V0IG9mIHRoZSBiaW5kaW5ncyAtIFNWR0FuZ2xlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ0OTYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGVyZSBpcyBxdWl0ZSBh
IGJpdCBvZiBzcGVjaWFsIGNhc2luZyBvZiBTVkcgdHlwZXMgaW4gdGhlIGJpbmRpbmdzIHRoYXQg
YWRkcworICAgICAgICBhIGxvdCBvZiBjb21wbGV4aXR5IGFuZCBpcyByZWxhdGl2ZWx5IGZyYWdp
bGUsIGFzIGl0IGlzIGJhc2VkIG9uIHR5cGUgbmFtaW5nLgorCisgICAgICAgIEluc3RlYWQgb2Yg
a2VlcGluZyB0aGUgY29tcGxleGl0eSBpbiB0aGUgYmluZGluZ3MsIEkgYW0gZ29pbmcgdG8gbW92
ZSBpdCBpbnRvCisgICAgICAgIHRoZSBpbXBsZW1lbnRhdGlvbiwgd2hlcmUgaXQgaGFzIGFsc28g
bG9uZ2VkIHRvIGJlLiAKKworICAgICAgICBTdGFydGluZyBzbWFsbCwgd2l0aCBqdXN0IFNWR0Fu
Z2xlLiBJdCBoYXMgYmVlbiBzcGxpdCBpbiB0d28sIHdpdGggdGhlIGV4aXN0aW5nCisgICAgICAg
IFNWR0FuZ2xlIGJlaW5nIHJlbmFtZWQgU1ZHQW5nbGVWYWx1ZSwgYW5kIHRoZSBib3VuZCBpbnN0
YW5jZSwgd2hpY2ggdXNlZCB0byBiZSBuYW1lCisgICAgICAgIFNWR1Byb3BlcnR5VGVhck9mZjxT
VkdBbmdsZT4sIHRha2luZyB0aGUgbmFtZSBTVkdBbmdsZSAoYW5kIGluaGVyaXRpbmcgZnJvbSAK
KyAgICAgICAgU1ZHUHJvcGVydHlUZWFyT2ZmPFNWR0FuZ2xlVmFsdWU+KS4KKworICAgICAgICAq
IENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgQWRkIFNWR0FuZ2xlVmFsdWUuY3BwCisKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG06CisgICAgICAgIFJlbW92ZSBTVkdBbmdsZSBhcyBh
IHNwZWNpYWwgY2FzZS4KKworICAgICAgICAqIHN2Zy9TVkdBbmdsZS5jcHA6IFJlbW92ZWQuCisg
ICAgICAgICogc3ZnL1NWR0FuZ2xlLmg6CisgICAgICAgIEFkZGVkLiBJbXBsZW1lbnRzIHRoZSBT
VkdBbmdsZSBpbnRlcmZhY2UgZXhwbGljaXRseSwgZ2V0dGluZyB0bworICAgICAgICB0aGUgU1ZH
QW5nbGVWYWx1ZSB0aHJvdWdoIHByb3BlcnR5UmVmZXJlbmNlKCkuCisKKyAgICAgICAgKiBzdmcv
U1ZHQW5nbGUuaWRsOgorICAgICAgICAqIHN2Zy9TVkdBbmdsZVZhbHVlLmNwcDogQ29waWVkIGZy
b20gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuZ2xlLmNwcC4KKyAgICAgICAgKiBzdmcvU1ZHQW5n
bGVWYWx1ZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5nbGUuaC4KKyAg
ICAgICAgTW92ZSBvbGQgU1ZHQW5nbGUgaW1wbGVtZW50YXRpb24gdG8gU1ZHQW5nbGVWYWx1ZS4K
KworICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZEFuZ2xlLmNwcDoKKyAgICAgICAgUmVwbGFjZSBT
VkdBbmdsZSB1c2FnZSB3aXRoIFNWR0FuZ2xlVmFsdWUuCisKKyAgICAgICAgKiBzdmcvU1ZHQW5p
bWF0ZWRBbmdsZS5oOgorICAgICAgICBTd2l0Y2ggU1ZHQW5pbWF0ZWRBbmdsZSB0byBiZSBhIHR5
cGUgYWxpYXMuIFRoaXMgcmVtYWlucyBTVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZjxTVkdBbmds
ZT4KKyAgICAgICAgYXMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmYgaGFzIGJlZW4gY2hhbmdl
ZCB0byB0YWtlIHRoZSBUZWFyT2ZmIHR5cGUgYXMgaXRzIHBhcmFtZXRlci4KKworICAgICAgICAq
IHN2Zy9TVkdBbmltYXRlZExlbmd0aC5oOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZFByZXNl
cnZlQXNwZWN0UmF0aW8uaDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRSZWN0Lmg6CisgICAg
ICAgIFN3aXRjaCB0byB1c2luZyB0eXBlIGFsaWFzZXMgYW5kIHBhc3MgdGhlIFRlYXJPZmYgdG8g
U1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmYuCisKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRU
eXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlQW5nbGVB
bmRFbnVtZXJhdGlvbik6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkVHlwZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRUeXBlOjphbmdsZUFuZEVudW1lcmF0aW9uKToKKyAgICAg
ICAgVXNlIFNWR0FuZ2xlVmFsdWUuCisKKyAgICAgICAgKiBzdmcvU1ZHQ29tcG9uZW50VHJhbnNm
ZXJGdW5jdGlvbkVsZW1lbnQuaDoKKyAgICAgICAgQWRkIG1pc3NpbmcgaW5jbHVkZSBvZiBTVkdF
bGVtZW50LmggKG5lZWQgYmVjYXVzZSBpdCByZW1vdmVkIGZyb20gU1ZHUHJvcGVydHlUZWFyT2Zm
KS4KKworICAgICAgICAqIHN2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR01hcmtlckVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR01hcmtlckVsZW1lbnQ6OnNldE9yaWVudCk6CisgICAgICAgIFN3aXRjaCB0byB0YWtlIGFu
IFNWR0FuZ2xlVmFsdWUuCisKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckVsZW1lbnQ6OnNl
dE9yaWVudFRvQW5nbGUpOgorICAgICAgICBVcGRhdGUgdG8gcHVsbCB0aGUgdmFsdWUgb3V0IHZp
YSBwcm9wZXJ0eVJlZmVyZW5jZSgpLgorCisgICAgICAgICogc3ZnL1NWR01hcmtlckVsZW1lbnQu
aDoKKyAgICAgICAgU3dpdGNoIHRvIHRha2UgYW4gU1ZHQW5nbGVWYWx1ZS4KKworICAgICAgICAq
IHN2Zy9TVkdMZW5ndGhMaXN0Lmg6CisgICAgICAgICogc3ZnL1NWR051bWJlckxpc3QuaDoKKyAg
ICAgICAgKiBzdmcvU1ZHUGF0aFNlZ0xpc3QuaDoKKyAgICAgICAgKiBzdmcvU1ZHUG9pbnRMaXN0
Lmg6CisgICAgICAgICogc3ZnL1NWR1N0cmluZ0xpc3QuaDoKKyAgICAgICAgKiBzdmcvU1ZHVHJh
bnNmb3JtTGlzdC5oOgorICAgICAgICBTd2l0Y2ggdG8gdXNpbmcgdHlwZSBhbGlhc2VzIGluIFNW
R1Byb3BlcnR5VHJhaXRzIGFuZCBhZGQgYW4gYWxpYXMgZm9yCisgICAgICAgIExpc3RJdGVtVGVh
ck9mZi4KKworICAgICAgICAqIHN2Zy9TVkdTVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1NWR0VsZW1lbnQ6OmNyZWF0ZVNWR0FuZ2xlKToKKyAgICAgICAgKiBzdmcvU1ZHU1ZH
RWxlbWVudC5oOgorICAgICAgICBDaGFuZ2UgY3JlYXRlU1ZHQW5nbGUgdG8gcmV0dXJuIGEgUmVm
PFNWR0FuZ2xlPiBhbmQgY3JlYXRlIG9uZS4KKworICAgICAgICAqIHN2Zy9TVkdTVkdFbGVtZW50
LmlkbDoKKyAgICAgICAgQW5ub3RhdGUgSURMIHRvIGluZGljYXRlIHRoYXQgYSBuZXcgdmFsdWUg
aXMgYmVpbmcgcmV0dXJuZWQuCisKKyAgICAgICAgKiBzdmcvU1ZHVHJhbnNmb3JtLmNwcDoKKyAg
ICAgICAgUmVtb3ZlIHVubmVjZXNzYXJ5IGluY2x1ZGUgb2YgU1ZHQW5nbGUuaC4KKworICAgICAg
ICAqIHN2Zy9TVkdWaWV3U3BlYy5jcHA6CisgICAgICAgIEFkZCBtaXNzaW5nIGluY2x1ZGUgb2Yg
U1ZHRWxlbWVudC5oIChuZWVkIGJlY2F1c2UgaXQgcmVtb3ZlZCBmcm9tIFNWR1Byb3BlcnR5VGVh
ck9mZikuCisKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5VGVh
ck9mZi5oOgorICAgICAgICBDaGFuZ2UgdG8gYmUgcGFyYW1ldGVyaXplZCBvbiB0aGUgVGVhck9m
ZlR5cGUsIHJhdGhlciB0aGFuIHRoZSBQcm9wZXJ0eVR5cGUgaXRzZWxmLiBHZXQgdGhlCisgICAg
ICAgIFByb3BlcnR5IHR5cGUgZnJvbSB0aGUgVGVhck9mZlR5cGUuCisKKyAgICAgICAgKiBzdmcv
cHJvcGVydGllcy9TVkdMaXN0UHJvcGVydHkuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9T
VkdMaXN0UHJvcGVydHlUZWFyT2ZmLmg6CisgICAgICAgIEZpeCBhc3N1bXB0aW9uIHRoYXQgYWxs
IFRlYXJPZmZUeXBlcyBhcmUganVzdCBhIFNWR1Byb3BlcnR5VGVhck9mZiB0ZW1wbGF0aXplZCBv
biBhIHByb3BlcnR5CisgICAgICAgIHR5cGUuIFRoaXMgaXMgbm8gbG9uZ2VyIHRydWUgZm9yIFNW
R0FuZ2xlLiBJbnN0ZWFkLCBnZXQgdGhlIFRlYXJPZmZUeXBlIGZvciBsaXN0cyB2aWEgU1ZHUHJv
cGVydHlUcmFpdHMuCisKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRlYXJP
ZmYuaDoKKyAgICAgICAgTWFrZSB0aGUgUHJvcGVydHlUeXBlIGF2YWlsYWJsZSBieSBleHBvc2lu
ZyBpdCBhcyBhIHR5cGUgYWxpYXMuCisKIDIwMTYtMTEtMDcgIFJ5YW4gSGFkZGFkICA8cnlhbmhh
ZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIwODM4
Mi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMDg0MjIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjY3OSw3ICsyNjc5LDcg
QEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHN2Zy9TVkdBbHRHbHlwaERlZkVsZW1lbnQuY3Bw
CiAgICAgc3ZnL1NWR0FsdEdseXBoRWxlbWVudC5jcHAKICAgICBzdmcvU1ZHQWx0R2x5cGhJdGVt
RWxlbWVudC5jcHAKLSAgICBzdmcvU1ZHQW5nbGUuY3BwCisgICAgc3ZnL1NWR0FuZ2xlVmFsdWUu
Y3BwCiAgICAgc3ZnL1NWR0FuaW1hdGVDb2xvckVsZW1lbnQuY3BwCiAgICAgc3ZnL1NWR0FuaW1h
dGVFbGVtZW50LmNwcAogICAgIHN2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuY3BwCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiAyMDg0MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE1NjQsMTAgKzE1NjQsMTAgQEAKIAkJNDE2
MkE0NTcxMDExNDY0NzAwREZGM0VEIC8qIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2MkE0NTUx
MDExNDY0NzAwREZGM0VEIC8qIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuY3BwICovOyB9
OwogCQk0MTYyQTQ1ODEwMTE0NjQ3MDBERkYzRUQgLyogSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxT
Y29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE2
MkE0NTYxMDExNDY0NzAwREZGM0VEIC8qIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGUuaCAq
LzsgfTsKIAkJNDE2RTI5QTYxMDJGQTk2MjAwN0ZDMTRFIC8qIFdvcmtlclJlcG9ydGluZ1Byb3h5
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTZFMjlB
NTEwMkZBOTYyMDA3RkMxNEUgLyogV29ya2VyUmVwb3J0aW5nUHJveHkuaCAqLzsgfTsKKwkJNDE2
RTZGRTgxQkJEMTJERjAwMEEzRjY0IC8qIFJlYWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNEODA2
MUJCMzExMEQwMEI3NjREOSAvKiBSZWFkYWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2RTZGRTgx
QkJEMTJERjAwMEE2MDIzIC8qIEZldGNoSW50ZXJuYWxzQnVpbHRpbnMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNEODA2MUJCMzExMEQwMEI3NjRC
OSAvKiBGZXRjaEludGVybmFsc0J1aWx0aW5zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2RTZGRTgxQkJEMTJERjAwMEE2MDMzIC8qIFN0cmVh
bUludGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5QjAzRDgwNjFCQjMxMTBEMDBCNzY0QzkgLyogU3RyZWFtSW50ZXJuYWxzQnVp
bHRpbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owot
CQk0MTZFNkZFODFCQkQxMkRGMDAwQTNGNjQgLyogUmVhZGFibGVCeXRlU3RyZWFtSW50ZXJuYWxz
QnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDlCMDNEODA2MUJCMzExMEQwMEI3NjREOSAvKiBSZWFkYWJsZUJ5dGVTdHJlYW1JbnRlcm5hbHNC
dWlsdGlucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
Ci0JCTQxNkU2RkU4MUJCRDEyREYwMDBBNjA0MyAvKiBSZWFkYWJsZVN0cmVhbUludGVybmFsc0J1
aWx0aW5zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
QjAzRDgwNjFCQjMxMTBEMDBCNzNGNjQgLyogUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlu
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQx
NkU2RkU4MUJCRDEyREYwMDBBNjA0MyAvKiBSZWFkYWJsZUJ5dGVTdHJlYW1JbnRlcm5hbHNCdWls
dGlucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUIw
M0Q4MDYxQkIzMTEwRDAwQjczRjY0IC8qIFJlYWRhYmxlQnl0ZVN0cmVhbUludGVybmFsc0J1aWx0
aW5zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NDE2RTZGRTgxQkJEMTJERjAwMEE2MDUzIC8qIFdyaXRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRp
bnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNE
ODA2MUJCMzExMEQwMEI3NjRFOSAvKiBXcml0YWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2RTZG
RTkxQkJEMTJFNTAwMEE2MDQzIC8qIFJlYWRhYmxlU3RyZWFtQnVpbHRpbnMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCMDNEODA2MUJCMzExMEQwMEI3
NjREOCAvKiBSZWFkYWJsZVN0cmVhbUJ1aWx0aW5zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDE2RTZGRTkxQkJEMTJFNTAwMEE2MDUzIC8qIFdy
aXRhYmxlU3RyZWFtQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDlCMDNEODA2MUJCMzExMEQwMEI3NjRFOCAvKiBXcml0YWJsZVN0cmVhbUJ1
aWx0aW5zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTI1OTAsOCArMjU5MCw4IEBACiAJCTZCNjkzQTJFMUM1MUE4MkUwMEIwM0JFRiAvKiBSZXNv
dXJjZUxvYWRPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNkI2OTNBMkQxQzUxQTgyRTAwQjAzQkVGIC8qIFJlc291cmNlTG9hZE9ic2VydmVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNkI2
OTNBMzQxQzUxQTk1RDAwQjAzQkVGIC8qIFJlc291cmNlTG9hZE9ic2VydmVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZCNjkzQTMzMUM1MUE5NUQw
MEIwM0JFRiAvKiBSZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAgKi87IH07CiAJCTZDNEM5NkRFMUFE
NDQ4MzUwMDM2M0Y2NCAvKiBKU1JlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0Qzk2REExQUQ0NDgz
NTAwMzYzRjY0IC8qIEpTUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlci5jcHAgKi87IH07Ci0J
CTZDNEM5NkRGMUFENDQ4MzUwMDM2M0Y2NCAvKiBKU1JlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xs
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNEM5
NkRCMUFENDQ4MzUwMDM2M0Y2NCAvKiBKU1JlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIuaCAq
LzsgfTsKIAkJNkM0Qzk2REUxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTUmVhZGFibGVTdHJlYW1EZWZh
dWx0Q29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2QzRDOTZEQTFBRDQ0ODM1MDAzNjVBNTAgLyogSlNSZWFkYWJsZVN0cmVhbURlZmF1
bHRDb250cm9sbGVyLmNwcCAqLzsgfTsKKwkJNkM0Qzk2REYxQUQ0NDgzNTAwMzYzRjY0IC8qIEpT
UmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNkM0Qzk2REIxQUQ0NDgzNTAwMzYzRjY0IC8qIEpTUmVhZGFi
bGVCeXRlU3RyZWFtQ29udHJvbGxlci5oICovOyB9OwogCQk2QzRDOTZERjFBRDQ0ODM1MDAzNjVB
NTAgLyogSlNSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzRDOTZEQjFBRDQ0ODM1MDAzNjVBNTAg
LyogSlNSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmggKi87IH07CiAJCTZDNjM4ODk1
QTk2Q0NFRTUwQzhDOTQ2QyAvKiBDYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QzYzODg5M0E5NkND
RUU1MEM4Qzk0NkMgLyogQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0SW5pdGlhdG9ycy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTZDNjM4ODk2QTk2Q0NF
RTUwQzhDOTQ2QyAvKiBDYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDNjM4ODk0QTk2Q0NFRTUw
QzhDOTQ2QyAvKiBDYWNoZWRSZXNvdXJjZVJlcXVlc3RJbml0aWF0b3JzLmNwcCAqLzsgfTsKQEAg
LTI4MzYsNiArMjgzNiw4IEBACiAJCTdDNzk0MUU0MUM1NkMyOTMwMEE0QzU4RSAvKiBEYXRhRGV0
ZWN0b3JzQ29yZVNvZnRMaW5rLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0M3OTQxRTIxQzU2QzI5MzAwQTRDNThFIC8qIERhdGFEZXRlY3RvcnNDb3Jl
U29mdExpbmsubW0gKi87IH07CiAJCTdDNzk0MUU1MUM1NkMyOTMwMEE0QzU4RSAvKiBEYXRhRGV0
ZWN0b3JzQ29yZVNvZnRMaW5rLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3Qzc5NDFFMzFDNTZDMjkzMDBBNEM1OEUgLyogRGF0YURldGVjdG9yc0NvcmVT
b2Z0TGluay5oICovOyB9OwogCQk3QzgzREU4NjFEMDRDQzVEMDBGRUJDRjMgLyogU3ByaW5nU29s
dmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qzgz
REU4NTFEMDRDQkQ0MDBGRUJDRjMgLyogU3ByaW5nU29sdmVyLmggKi87IH07CisJCTdDOEYyMjQw
MUREMTU4NjYwMEU5MkRBMyAvKiBTVkdBbmdsZVZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOEYyMjNFMUREMTU4NjYwMEU5MkRBMyAvKiBT
VkdBbmdsZVZhbHVlLmNwcCAqLzsgfTsKKwkJN0M4RjIyNDExREQxNTg2NjAwRTkyREEzIC8qIFNW
R0FuZ2xlVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdDOEYyMjNGMUREMTU4NjYwMEU5MkRBMyAvKiBTVkdBbmdsZVZhbHVlLmggKi87IH07CiAJ
CTdDOTNGMzQ5MUFBNkJBNUUwMEE5OEJBQiAvKiBDb21waWxlZENvbnRlbnRFeHRlbnNpb24uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M5M0YzNDcx
QUE2QkE1RTAwQTk4QkFCIC8qIENvbXBpbGVkQ29udGVudEV4dGVuc2lvbi5jcHAgKi87IH07CiAJ
CTdDOTNGMzRBMUFBNkJBNUUwMEE5OEJBQiAvKiBDb21waWxlZENvbnRlbnRFeHRlbnNpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOTNGMzQ4MUFB
NkJBNUUwMEE5OEJBQiAvKiBDb21waWxlZENvbnRlbnRFeHRlbnNpb24uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QzkzRjM0RDFBQTZCRjA3MDBB
OThCQUIgLyogQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOTNGMzRCMUFBNkJGMDcwMEE5OEJBQiAvKiBD
b250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuY3BwICovOyB9OwpAQCAtNDQ2OCw3ICs0NDcwLDYgQEAK
IAkJQjIyMjc5NzIwRDAwQkYyMjAwNzFCNzgyIC8qIFJhZGlhbEdyYWRpZW50QXR0cmlidXRlcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc3REMw
RDAwQkYxRjAwNzFCNzgyIC8qIFJhZGlhbEdyYWRpZW50QXR0cmlidXRlcy5oICovOyB9OwogCQlC
MjIyNzk3MzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHQUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc3REQwRDAwQkYxRjAwNzFCNzgy
IC8qIFNWR0FFbGVtZW50LmNwcCAqLzsgfTsKIAkJQjIyMjc5NzQwRDAwQkYyMjAwNzFCNzgyIC8q
IFNWR0FFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCMjIyNzdERTBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHQUVsZW1lbnQuaCAqLzsgfTsKLQkJ
QjIyMjc5NzYwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0FuZ2xlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3N0UwMEQwMEJGMUYwMDcxQjc4MiAv
KiBTVkdBbmdsZS5jcHAgKi87IH07CiAJCUIyMjI3OTc3MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdB
bmdsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIy
Mjc3RTEwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FuZ2xlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQjIyMjc5NzkwRDAwQkYyMjAwNzFCNzgyIC8q
IFNWR0FuaW1hdGVDb2xvckVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQjIyMjc3RTMwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVD
b2xvckVsZW1lbnQuY3BwICovOyB9OwogCQlCMjIyNzk3QTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZH
QW5pbWF0ZUNvbG9yRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQjIyMjc3RTQwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVDb2xvckVs
ZW1lbnQuaCAqLzsgfTsKQEAgLTk3ODIsOCArOTc4Myw4IEBACiAJCTZCNjkzQTJEMUM1MUE4MkUw
MEIwM0JFRiAvKiBSZXNvdXJjZUxvYWRPYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZXNvdXJjZUxvYWRPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk2QjY5M0EzMzFDNTFBOTVEMDBCMDNCRUYgLyogUmVzb3VyY2VMb2FkT2JzZXJ2ZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2QzRDOTZEQTFBRDQ0ODM1
MDAzNjNGNjQgLyogSlNSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTZDNEM5NkRCMUFENDQ4MzUwMDM2
M0Y2NCAvKiBKU1JlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTZDNEM5NkRBMUFENDQ4MzUwMDM2NUE1MCAvKiBKU1Jl
YWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkM0Qzk2REIxQUQ0NDgzNTAwMzYzRjY0IC8qIEpT
UmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU1JlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNkM0Qzk2REIxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTUmVhZGFibGVTdHJl
YW1EZWZhdWx0Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U1JlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNkM2Mzg4OTNBOTZDQ0VFNTBDOEM5NDZDIC8qIENhY2hlZFJlc291cmNlUmVxdWVz
dEluaXRpYXRvcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhY2hlZFJl
c291cmNlUmVxdWVzdEluaXRpYXRvcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NkM2Mzg4OTRBOTZDQ0VFNTBDOEM5NDZDIC8qIENhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRv
cnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhY2hlZFJlc291
cmNlUmVxdWVzdEluaXRpYXRvcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTAxOTcsNiArMTAxOTgsOCBAQAogCQk3Qzc5NDFFMjFDNTZDMjkzMDBBNEM1OEUgLyogRGF0YURl
dGVjdG9yc0NvcmVTb2Z0TGluay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IERhdGFEZXRlY3RvcnNDb3JlU29mdExpbmsubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdDNzk0MUUzMUM1NkMyOTMwMEE0QzU4RSAvKiBEYXRhRGV0ZWN0b3JzQ29yZVNv
ZnRMaW5rLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFEZXRlY3RvcnND
b3JlU29mdExpbmsuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M4M0RFODUxRDA0
Q0JENDAwRkVCQ0YzIC8qIFNwcmluZ1NvbHZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTcHJpbmdTb2x2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0M4
RjIyM0UxREQxNTg2NjAwRTkyREEzIC8qIFNWR0FuZ2xlVmFsdWUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHQW5nbGVWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTdDOEYyMjNGMUREMTU4NjYwMEU5MkRBMyAvKiBTVkdBbmdsZVZhbHVl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuZ2xlVmFsdWUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M5M0YzNDcxQUE2QkE1RTAwQTk4QkFCIC8qIENv
bXBpbGVkQ29udGVudEV4dGVuc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBDb21waWxlZENvbnRlbnRFeHRlbnNpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3QzkzRjM0ODFBQTZCQTVFMDBBOThCQUIgLyogQ29tcGlsZWRDb250ZW50RXh0
ZW5zaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbXBpbGVkQ29udGVu
dEV4dGVuc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzkzRjM0QjFBQTZC
RjA3MDBBOThCQUIgLyogQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbnRlbnRFeHRlbnNpb25Db21waWxlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTE3NSw4ICsxMTE3OCw4IEBACiAJCTk5MDhC
MEYwMUJDQUNGOTEwMEVEM0Y2NCAvKiBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyLmpzICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gUmVhZGFibGVCeXRlU3RyZWFt
Q29udHJvbGxlci5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTkwOEIwRjExQkNB
Q0Y5MTAwRUQwRjU1IC8qIFN0cmVhbUludGVybmFscy5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
amF2YXNjcmlwdDsgcGF0aCA9IFN0cmVhbUludGVybmFscy5qczsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTkwOEIwRjExQkNBQ0Y5MTAwRUQwRjY1IC8qIFJlYWRhYmxlU3RyZWFtSW50
ZXJuYWxzLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gUmVhZGFi
bGVTdHJlYW1JbnRlcm5hbHMuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTk5MDhC
MEYxMUJDQUNGOTEwMEVEM0Y2NCAvKiBSZWFkYWJsZUJ5dGVTdHJlYW1JbnRlcm5hbHMuanMgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBSZWFkYWJsZUJ5dGVTdHJlYW1J
bnRlcm5hbHMuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5MDhCMEYxMUJDQUNG
OTEwMEVEMEY3NSAvKiBXcml0YWJsZVN0cmVhbUludGVybmFscy5qcyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IFdyaXRhYmxlU3RyZWFtSW50ZXJuYWxzLmpzOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OTA4QjBGMTFCQ0FDRjkxMDBFRDNGNjQgLyogUmVh
ZGFibGVCeXRlU3RyZWFtSW50ZXJuYWxzLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2Ny
aXB0OyBwYXRoID0gUmVhZGFibGVCeXRlU3RyZWFtSW50ZXJuYWxzLmpzOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5OTA4QjBGMjFCQ0FDRjkxMDBFRDBGNjUgLyogUmVhZGFibGVTdHJl
YW1EZWZhdWx0UmVhZGVyLmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRo
ID0gUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyLmpzOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5OTA4QjBGMzFCQ0FDRkZFMDBFRDBGNjUgLyogQnl0ZUxlbmd0aFF1ZXVpbmdTdHJh
dGVneUJ1aWx0aW5zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJ5
dGVMZW5ndGhRdWV1aW5nU3RyYXRlZ3lCdWlsdGlucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTk5MDhCMEY1MUJDQUQwN0QwMEVEMEY2NSAvKiBCeXRlTGVuZ3RoUXVldWluZ1N0
cmF0ZWd5QnVpbHRpbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnl0ZUxl
bmd0aFF1ZXVpbmdTdHJhdGVneUJ1aWx0aW5zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xMTE4NCwxNSArMTExODcsMTMgQEAKIAkJOTkwOEIwRjcxQkNBRDA3RDAwRUQwRjY1IC8q
IENvdW50UXVldWluZ1N0cmF0ZWd5QnVpbHRpbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ291bnRRdWV1aW5nU3RyYXRlZ3lCdWlsdGlucy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5OTA4QjBGOTFCQ0FEMDdEMDBFRDBGNjUgLyogUmVhZGFibGVTdHJlYW1C
dWlsdGlucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWFkYWJs
ZVN0cmVhbUJ1aWx0aW5zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTkwOEIw
RjkxQkNBRDA3RDAwRUQwRjc1IC8qIFdyaXRhYmxlU3RyZWFtQnVpbHRpbnMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV3JpdGFibGVTdHJlYW1CdWlsdGlucy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTk5MDhCMEZBMUJDQUQwN0QwMEVEM0Y2NCAv
KiBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyQnVpbHRpbnMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlckJ1aWx0
aW5zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTkwOEIwRkIxQkNBRDA3RDAw
RUQzRjY0IC8qIFJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXJCdWlsdGlucy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFkYWJsZUJ5dGVTdHJlYW1Db250cm9sbGVyQnVp
bHRpbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTkwOEIwRkExQkNBRDA3RDAw
RUQwRjY1IC8qIFJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXJCdWlsdGlucy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWFkYWJsZVN0cmVhbURlZmF1bHRD
b250cm9sbGVyQnVpbHRpbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTA4
QjBGQjFCQ0FEMDdEMDBFRDBGNjUgLyogUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlckJ1
aWx0aW5zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlYWRhYmxlU3RyZWFt
RGVmYXVsdENvbnRyb2xsZXJCdWlsdGlucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5OTA4QjBGRDFCQ0FEMDdEMDBFRDBGNDUgLyogRmV0Y2hJbnRlcm5hbHNCdWlsdGlucy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGZXRjaEludGVybmFsc0J1aWx0
aW5zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTkwOEIwRkQxQkNBRDA3RDAw
RUQwRjU1IC8qIFN0cmVhbUludGVybmFsc0J1aWx0aW5zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmVhbUludGVybmFsc0J1aWx0aW5zLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTkwOEIwRkQxQkNBRDA3RDAwRUQzRjY0IC8qIFJlYWRhYmxl
Qnl0ZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFJlYWRhYmxlQnl0ZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTkwOEIwRkQxQkNBRDA3RDAwRUQwRjY1IC8qIFJl
YWRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5MDhCMEZEMUJDQUQwN0QwMEVEMEY3NSAvKiBXcml0
YWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdyaXRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk5OTA4QjBGRDFCQ0FEMDdEMDBFRDNGNjQgLyogUmVhZGFi
bGVCeXRlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmVhZGFibGVCeXRlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTA4QjBGRTFCQ0FEMDdEMDBFRDBGNjUgLyog
UmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyQnVpbHRpbnMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyQnVpbHRpbnMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTA4QjBGRjFCQ0FEMDdEMDBFRDBG
NjUgLyogUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyQnVpbHRpbnMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyQnVpbHRpbnMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTkyMDM5ODAxOEI5NUJDNjAwQjM5QUY5
IC8qIFVzZXJJbnB1dEJyaWRnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBVc2VySW5wdXRCcmlkZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTEyMzAsMTAgKzExMjMxLDEwIEBACiAJCTlBNTI4RTgyMTdEN0Y1MkYwMEFBOTUxOCAvKiBGbG9h
dGluZ09iamVjdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmxvYXRpbmdP
YmplY3RzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlBQjFGMzdFMThFMjQ4OUEw
MDUzNDc0MyAvKiBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOUFCMUYzN0YxOEUyNDg5QTAwNTM0NzQzIC8qIENTU1RvTGVuZ3Ro
Q29udmVyc2lvbkRhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Q1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTlCMDNEODA2MUJCMzExMEQwMEI3M0Y2NCAvKiBSZWFkYWJsZUJ5dGVTdHJlYW1JbnRlcm5h
bHNCdWlsdGlucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFkYWJsZUJ5
dGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5QjAzRDgwNjFCQjMxMTBEMDBCNzY0QjkgLyogRmV0Y2hJbnRlcm5hbHNCdWlsdGlucy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGZXRjaEludGVybmFsc0J1aWx0aW5zLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMDNEODA2MUJCMzExMEQwMEI3NjRDOSAv
KiBTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5QjAzRDgwNjFCQjMxMTBEMDBCNzY0RDggLyogUmVhZGFibGVTdHJlYW1CdWlsdGlucy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWFkYWJsZVN0cmVhbUJ1aWx0aW5z
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTlCMDNEODA2MUJCMzExMEQwMEI3M0Y2
NCAvKiBSZWFkYWJsZUJ5dGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZWFkYWJsZUJ5dGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjAzRDgwNjFCQjMxMTBEMDBCNzY0RDkg
LyogUmVhZGFibGVTdHJlYW1JbnRlcm5hbHNCdWlsdGlucy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSZWFkYWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCMDNEODA2MUJCMzExMEQwMEI3NjRFOCAvKiBXcml0YWJs
ZVN0cmVhbUJ1aWx0aW5zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdyaXRh
YmxlU3RyZWFtQnVpbHRpbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUIwM0Q4
MDYxQkIzMTEwRDAwQjc2NEU5IC8qIFdyaXRhYmxlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV3JpdGFibGVTdHJlYW1JbnRlcm5hbHNC
dWlsdGlucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTIwNTMsNyArMTIwNTQs
NiBAQAogCQlCMjIyNzdERDBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHQUVsZW1lbnQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR0FFbGVtZW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjIyMjc3REUwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FF
bGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBRWxlbWVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjIyNzdERjBEMDBCRjFGMDA3MUI3ODIg
LyogU1ZHQUVsZW1lbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTVkdBRWxlbWVudC5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUIyMjI3N0UwMEQwMEJGMUYwMDcxQjc4
MiAvKiBTVkdBbmdsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U1ZHQW5nbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjIyNzdFMTBEMDBC
RjFGMDA3MUI3ODIgLyogU1ZHQW5nbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNWR0FuZ2xlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyMjI3N0UyMEQw
MEJGMUYwMDcxQjc4MiAvKiBTVkdBbmdsZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNW
R0FuZ2xlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjIyMjc3RTMwRDAwQkYx
RjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVDb2xvckVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR0FuaW1hdGVDb2xvckVsZW1lbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTczMzMsOCArMTczMzMsNiBAQAogCQkJCTQ0QTI4QUFF
MTJERkI4QkYwMEFFOTIzQiAvKiBNYXRoTUxOYW1lcy5oICovLAogCQkJCTcxRTIxODM4MTczNTlG
QjgwMDZFNkU0RCAvKiBQbHVnSW5zUmVzb3VyY2VzLmggKi8sCiAJCQkJNzFFMjE4MzkxNzM1OUZC
ODAwNkU2RTREIC8qIFBsdWdJbnNSZXNvdXJjZXNEYXRhLmNwcCAqLywKLQkJCQk5OTA4QjBGQTFC
Q0FEMDdEMDA3NjNGNjQgLyogUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlckJ1aWx0aW5zLmNw
cCAqLywKLQkJCQk5OTA4QjBGQjFCQ0FEMDdEMDA3NjNGNjQgLyogUmVhZGFibGVCeXRlU3RyZWFt
Q29udHJvbGxlckJ1aWx0aW5zLmggKi8sCiAJCQkJOTkwOEIwRkQxQkNBRDA3RDAwRUQzRjY0IC8q
IFJlYWRhYmxlQnl0ZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmNwcCAqLywKIAkJCQk5QjAzRDgw
NjFCQjMxMTBEMDBCNzNGNjQgLyogUmVhZGFibGVCeXRlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMu
aCAqLywKIAkJCQk5OTA4QjBGOTFCQ0FEMDdEMDBFRDBGNjUgLyogUmVhZGFibGVTdHJlYW1CdWls
dGlucy5jcHAgKi8sCkBAIC0yMDY3Miw5ICsyMDY3MCwxMCBAQAogCQkJCTI0RDkxMkI0MTNDQTlB
NjkwMEQyMTkxNSAvKiBTVkdBbHRHbHlwaEl0ZW1FbGVtZW50LmNwcCAqLywKIAkJCQkyNEQ5MTJC
NTEzQ0E5QTY5MDBEMjE5MTUgLyogU1ZHQWx0R2x5cGhJdGVtRWxlbWVudC5oICovLAogCQkJCTI0
RDkxMkI2MTNDQTlBNjkwMEQyMTkxNSAvKiBTVkdBbHRHbHlwaEl0ZW1FbGVtZW50LmlkbCAqLywK
LQkJCQlCMjIyNzdFMDBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHQW5nbGUuY3BwICovLAogCQkJCUIy
MjI3N0UxMEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdBbmdsZS5oICovLAogCQkJCUIyMjI3N0UyMEQw
MEJGMUYwMDcxQjc4MiAvKiBTVkdBbmdsZS5pZGwgKi8sCisJCQkJN0M4RjIyM0UxREQxNTg2NjAw
RTkyREEzIC8qIFNWR0FuZ2xlVmFsdWUuY3BwICovLAorCQkJCTdDOEYyMjNGMUREMTU4NjYwMEU5
MkRBMyAvKiBTVkdBbmdsZVZhbHVlLmggKi8sCiAJCQkJQjIyMjc3RTMwRDAwQkYxRjAwNzFCNzgy
IC8qIFNWR0FuaW1hdGVDb2xvckVsZW1lbnQuY3BwICovLAogCQkJCUIyMjI3N0U0MEQwMEJGMUYw
MDcxQjc4MiAvKiBTVkdBbmltYXRlQ29sb3JFbGVtZW50LmggKi8sCiAJCQkJQjIyMjc3RTUwRDAw
QkYxRjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVDb2xvckVsZW1lbnQuaWRsICovLApAQCAtMjUwNzcs
NyArMjUwNzYsNiBAQAogCQkJCUJDMUJERjI1MTU2QzE4QzcwMDFDMTI0MyAvKiBET01FcnJvci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMkVENjA5QkQxMTQ1QjA3MTAwQzg2ODRFIC8qIERPTUZvcm1E
YXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODE4NUYzQjA5NzY1NzY2MDA1ODI2RDkgLyogRE9N
SW1wbGVtZW50YXRpb24uaCBpbiBIZWFkZXJzICovLAotCQkJCUUzNUNBMTRFMURCQzNBNDIwMEY4
MzUxNiAvKiBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlFMzE1MEVBNzFEQTcyMTkzMDAxOTQwMTIgLyogRE9NSklUSGVscGVycy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTlDNkU0RTQwRDc0NUUwNTAwNjQ0MkU5IC8qIERPTU1pbWVUeXBlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBOUM2RTRFODBENzQ1RTE4MDA2NDQyRTkgLyogRE9NTWltZVR5cGVBcnJh
eS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjA0OCw2ICsyNjA0Niw3IEBACiAJCQkJODlGNjBDREEx
NTgwOUQ3NjAwNzVFMTU3IC8qIEpTU3RvcmFnZUluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
RjUwMjZBMTAyQkE5NDMwMDY2RjM5QSAvKiBKU1N0eWxlTWVkaWEuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDRTAxMzlCMEMwQkVGMTgwMDQzODYwQSAvKiBKU1N0eWxlU2hlZXQuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTdDOEYyMjQxMUREMTU4NjYwMEU5MkRBMyAvKiBTVkdBbmdsZVZhbHVlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBRDcyNkZFRTE2REExMUJDMDAzQTRFNkQgLyogSlNTdHlsZVNoZWV0
Q3VzdG9tLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODRFQkQ4MzBDQjhDOTc3MDAwNzk2MDkgLyog
SlNTdHlsZVNoZWV0TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTcxRjIxODkxREE1N0M1NDAw
NUM5RUZEIC8qIEpTU3VidGxlQ3J5cHRvLmggaW4gSGVhZGVycyAqLywKQEAgLTI2NzkxLDkgKzI2
NzkwLDkgQEAKIAkJCQlGNTVCM0RDRTEyNTFGMTJEMDAzRUYyNjkgLyogUmFuZ2VJbnB1dFR5cGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTZFODRFOUUxMTc2NjhCRjEwMDgxNUI2OCAvKiBSYXN0ZXJT
aGFwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg0RDgyN0MxMUQzMzNFRDAwOTcyOTkwIC8qIFJh
d0RhdGFEb2N1bWVudFBhcnNlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNDE2RTZGRTgxQkJEMTJE
RjAwMEEzRjY0IC8qIFJlYWRhYmxlQnl0ZVN0cmVhbUludGVybmFsc0J1aWx0aW5zLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk0MTZFNkZFODFCQkQxMkRGMDAwQTNGNjQgLyogUmVhZGFibGVTdHJlYW1J
bnRlcm5hbHNCdWlsdGlucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE2RTZGRTkxQkJEMTJFNTAw
MEE2MDQzIC8qIFJlYWRhYmxlU3RyZWFtQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovLAotCQkJCTQx
NkU2RkU4MUJCRDEyREYwMDBBNjA0MyAvKiBSZWFkYWJsZVN0cmVhbUludGVybmFsc0J1aWx0aW5z
LmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTZFNkZFODFCQkQxMkRGMDAwQTYwNDMgLyogUmVhZGFi
bGVCeXRlU3RyZWFtSW50ZXJuYWxzQnVpbHRpbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEMzE2
MDNDMTJCMDI2NzYwMEMxQTM1OSAvKiBSZWFsdGltZUFuYWx5c2VyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0QTRGNjU3MTFBQTk5N0YxMDBFMzhDREQgLyogUmVhbHRpbWVNZWRpYVNvdXJjZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNEE0RjY1NzIxQUE5OTdGMTAwRTM4Q0REIC8qIFJlYWx0aW1lTWVk
aWFTb3VyY2VDYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovLApAQCAtMjg4MzQsNyArMjg4MzMs
NiBAQAogCQkJCUJDMUJERjI0MTU2QzE4ODMwMDFDMTI0MyAvKiBET01FcnJvci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkyRUQ2MDlCQzExNDVCMDcxMDBDODY4NEUgLyogRE9NRm9ybURhdGEuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQTgxODVGM0UwOTc2NTc2NjAwNTgyNkQ5IC8qIERPTUltcGxl
bWVudGF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUUzNUNBMTREMURCQzNBM0YwMEY4MzUx
NiAvKiBET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE5QzZFNEUzMEQ3NDVFMDUwMDY0NDJFOSAvKiBET01NaW1lVHlwZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBOUM2RTRFNzBENzQ1RTE4MDA2NDQyRTkgLyogRE9NTWltZVR5cGVBcnJheS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk1MkI2QzlDMjE1RTNGNERGMDA2OTBCMDUgLyogRE9NTmFtZWRG
bG93Q29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMwOTEzLDcgKzMwOTExLDYgQEAK
IAkJCQkyNEQ5MTJCMDEzQ0E5QTFGMDBEMjE5MTUgLyogU1ZHQWx0R2x5cGhEZWZFbGVtZW50LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTY1NjUzRjJEMEQ5NzI3RDIwMENBOTcyMyAvKiBTVkdBbHRH
bHlwaEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjREOTEyQjcxM0NBOUE2OTAwRDIx
OTE1IC8qIFNWR0FsdEdseXBoSXRlbUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQjIy
Mjc5NzYwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0FuZ2xlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUIyMjI3OTc5MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdBbmltYXRlQ29sb3JFbGVtZW50LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTQzNjJDN0I5MTNBQzZGMUEwMDM0NEJFQiAvKiBTVkdBbmltYXRl
ZEFuZ2xlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQzMUEzMDg4MTNCOEY5NzgwMDc3OTFFNCAv
KiBTVkdBbmltYXRlZEJvb2xlYW4uY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zMTExOCw2ICszMTEx
NSw3IEBACiAJCQkJQ0VDQURGQ0QxNTM3NzkxRDAwRTM3MDY4IC8qIFRleHRJbnNlcnRpb25CYXNl
Q29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzMwOUUxQjA5OUU2NDkyMDA1NkU1ODEg
LyogVGV4dEl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0RDk4OEI2MTdCRkVCMjEw
MDg0RkI4OCAvKiBUZXh0Tm9kZVRyYXZlcnNhbC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QzhG
MjI0MDFERDE1ODY2MDBFOTJEQTMgLyogU1ZHQW5nbGVWYWx1ZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxQzE4REE1ODE4MUFGNkE1MDBDNEVGMjIgLyogVGV4dFBhaW50ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRTRDOTFBMTAxODAyMzQzOTAwQTE3RjZEIC8qIFRleHRQYWludFN0eWxlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTkzRjE5QTlEMDgyNDVFNTkwMDFFOUFCQyAvKiBUZXh0UmVz
b3VyY2VEZWNvZGVyLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQkocmV2aXNpb24gMjA4NDIyKQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTksNyArMTE5LDYgQEAgbXkgJXN2Z0F0dHJpYnV0ZXNJbkhUTUxIYXNo
ID0gKAogKTsKIAogbXkgJXN2Z1R5cGVOZWVkaW5nVGVhck9mZiA9ICgKLSAgICAiU1ZHQW5nbGUi
ID0+ICJTVkdQcm9wZXJ0eVRlYXJPZmY8U1ZHQW5nbGU+IiwKICAgICAiU1ZHTGVuZ3RoIiA9PiAi
U1ZHUHJvcGVydHlUZWFyT2ZmPFNWR0xlbmd0aD4iLAogICAgICJTVkdMZW5ndGhMaXN0IiA9PiAi
U1ZHTGlzdFByb3BlcnR5VGVhck9mZjxTVkdMZW5ndGhMaXN0PiIsCiAgICAgIlNWR01hdHJpeCIg
PT4gIlNWR1Byb3BlcnR5VGVhck9mZjxTVkdNYXRyaXg+IiwKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmdsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
Z2xlLmNwcAkocmV2aXNpb24gMjA4NDIyKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuZ2xl
LmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDIwNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDA0LCAyMDA1LCAyMDA3LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBr
ZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IFJvYiBCdWlzIDxidWlz
QGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIw
MTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICog
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJT
VkdBbmdsZS5oIgotCi0jaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIlNWR1Bh
cnNlclV0aWxpdGllcy5oIgotI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+Ci0jaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nVmlldy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWZsb2F0IFNW
R0FuZ2xlOjp2YWx1ZSgpIGNvbnN0Ci17Ci0gICAgc3dpdGNoIChtX3VuaXRUeXBlKSB7Ci0gICAg
Y2FzZSBTVkdfQU5HTEVUWVBFX0dSQUQ6Ci0gICAgICAgIHJldHVybiBncmFkMmRlZyhtX3ZhbHVl
SW5TcGVjaWZpZWRVbml0cyk7Ci0gICAgY2FzZSBTVkdfQU5HTEVUWVBFX1JBRDoKLSAgICAgICAg
cmV0dXJuIHJhZDJkZWcobV92YWx1ZUluU3BlY2lmaWVkVW5pdHMpOwotICAgIGNhc2UgU1ZHX0FO
R0xFVFlQRV9VTlNQRUNJRklFRDoKLSAgICBjYXNlIFNWR19BTkdMRVRZUEVfVU5LTk9XTjoKLSAg
ICBjYXNlIFNWR19BTkdMRVRZUEVfREVHOgotICAgICAgICByZXR1cm4gbV92YWx1ZUluU3BlY2lm
aWVkVW5pdHM7Ci0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiAw
OwotfQotCi12b2lkIFNWR0FuZ2xlOjpzZXRWYWx1ZShmbG9hdCB2YWx1ZSkKLXsKLSAgICBzd2l0
Y2ggKG1fdW5pdFR5cGUpIHsKLSAgICBjYXNlIFNWR19BTkdMRVRZUEVfR1JBRDoKLSAgICAgICAg
bV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgPSBkZWcyZ3JhZCh2YWx1ZSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICBjYXNlIFNWR19BTkdMRVRZUEVfUkFEOgotICAgICAgICBtX3ZhbHVlSW5TcGVjaWZp
ZWRVbml0cyA9IGRlZzJyYWQodmFsdWUpOwotICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBTVkdf
QU5HTEVUWVBFX1VOU1BFQ0lGSUVEOgotICAgIGNhc2UgU1ZHX0FOR0xFVFlQRV9VTktOT1dOOgot
ICAgIGNhc2UgU1ZHX0FOR0xFVFlQRV9ERUc6Ci0gICAgICAgIG1fdmFsdWVJblNwZWNpZmllZFVu
aXRzID0gdmFsdWU7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci19Ci0KLVN0cmluZyBTVkdBbmdsZTo6dmFsdWVBc1N0cmluZygpIGNvbnN0Ci17Ci0g
ICAgc3dpdGNoIChtX3VuaXRUeXBlKSB7Ci0gICAgY2FzZSBTVkdfQU5HTEVUWVBFX0RFRzoKLSAg
ICAgICAgcmV0dXJuIFN0cmluZzo6bnVtYmVyKG1fdmFsdWVJblNwZWNpZmllZFVuaXRzKSArICJk
ZWciOwotICAgIGNhc2UgU1ZHX0FOR0xFVFlQRV9SQUQ6Ci0gICAgICAgIHJldHVybiBTdHJpbmc6
Om51bWJlcihtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cykgKyAicmFkIjsKLSAgICBjYXNlIFNWR19B
TkdMRVRZUEVfR1JBRDoKLSAgICAgICAgcmV0dXJuIFN0cmluZzo6bnVtYmVyKG1fdmFsdWVJblNw
ZWNpZmllZFVuaXRzKSArICJncmFkIjsKLSAgICBjYXNlIFNWR19BTkdMRVRZUEVfVU5TUEVDSUZJ
RUQ6Ci0gICAgY2FzZSBTVkdfQU5HTEVUWVBFX1VOS05PV046Ci0gICAgICAgIHJldHVybiBTdHJp
bmc6Om51bWJlcihtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyk7Ci0gICAgfQotCi0gICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIFN0cmluZygpOwotfQotCi1zdGF0aWMgaW5saW5l
IFNWR0FuZ2xlOjpTVkdBbmdsZVR5cGUgcGFyc2VBbmdsZVR5cGUoY29uc3QgVUNoYXIqIHB0ciwg
Y29uc3QgVUNoYXIqIGVuZCkKLXsKLSAgICBzd2l0Y2ggKGVuZCAtIHB0cikgewotICAgIGNhc2Ug
MDoKLSAgICAgICAgcmV0dXJuIFNWR0FuZ2xlOjpTVkdfQU5HTEVUWVBFX1VOU1BFQ0lGSUVEOwot
ICAgIGNhc2UgMzoKLSAgICAgICAgaWYgKHB0clswXSA9PSAnZCcgJiYgcHRyWzFdID09ICdlJyAm
JiBwdHJbMl0gPT0gJ2cnKQotICAgICAgICAgICAgcmV0dXJuIFNWR0FuZ2xlOjpTVkdfQU5HTEVU
WVBFX0RFRzsKLSAgICAgICAgaWYgKHB0clswXSA9PSAncicgJiYgcHRyWzFdID09ICdhJyAmJiBw
dHJbMl0gPT0gJ2QnKQotICAgICAgICAgICAgcmV0dXJuIFNWR0FuZ2xlOjpTVkdfQU5HTEVUWVBF
X1JBRDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSA0OgotICAgICAgICBpZiAocHRyWzBdID09
ICdnJyAmJiBwdHJbMV0gPT0gJ3InICYmIHB0clsyXSA9PSAnYScgJiYgcHRyWzNdID09ICdkJykK
LSAgICAgICAgICAgIHJldHVybiBTVkdBbmdsZTo6U1ZHX0FOR0xFVFlQRV9HUkFEOwotICAgICAg
ICBicmVhazsKLSAgICB9Ci0gICAgcmV0dXJuIFNWR0FuZ2xlOjpTVkdfQU5HTEVUWVBFX1VOS05P
V047Ci19Ci0KLUV4Y2VwdGlvbk9yPHZvaWQ+IFNWR0FuZ2xlOjpzZXRWYWx1ZUFzU3RyaW5nKGNv
bnN0IFN0cmluZyYgdmFsdWUpCi17Ci0gICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkgewotICAgICAg
ICBtX3VuaXRUeXBlID0gU1ZHX0FOR0xFVFlQRV9VTlNQRUNJRklFRDsKLSAgICAgICAgcmV0dXJu
IHsgfTsKLSAgICB9Ci0KLSAgICBhdXRvIHVwY29udmVydGVkQ2hhcmFjdGVycyA9IFN0cmluZ1Zp
ZXcodmFsdWUpLnVwY29udmVydGVkQ2hhcmFjdGVycygpOwotICAgIGNvbnN0IFVDaGFyKiBwdHIg
PSB1cGNvbnZlcnRlZENoYXJhY3RlcnM7Ci0gICAgY29uc3QgVUNoYXIqIGVuZCA9IHB0ciArIHZh
bHVlLmxlbmd0aCgpOwotCi0gICAgZmxvYXQgdmFsdWVJblNwZWNpZmllZFVuaXRzID0gMDsKLSAg
ICBpZiAoIXBhcnNlTnVtYmVyKHB0ciwgZW5kLCB2YWx1ZUluU3BlY2lmaWVkVW5pdHMsIGZhbHNl
KSkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNZTlRBWF9FUlIgfTsKLQotICAgIGF1dG8g
dW5pdFR5cGUgPSBwYXJzZUFuZ2xlVHlwZShwdHIsIGVuZCk7Ci0gICAgaWYgKHVuaXRUeXBlID09
IFNWR19BTkdMRVRZUEVfVU5LTk9XTikKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNZTlRB
WF9FUlIgfTsKLQotICAgIG1fdW5pdFR5cGUgPSB1bml0VHlwZTsKLSAgICBtX3ZhbHVlSW5TcGVj
aWZpZWRVbml0cyA9IHZhbHVlSW5TcGVjaWZpZWRVbml0czsKLSAgICByZXR1cm4geyB9OwotfQot
Ci1FeGNlcHRpb25Pcjx2b2lkPiBTVkdBbmdsZTo6bmV3VmFsdWVTcGVjaWZpZWRVbml0cyh1bnNp
Z25lZCBzaG9ydCB1bml0VHlwZSwgZmxvYXQgdmFsdWVJblNwZWNpZmllZFVuaXRzKQotewotICAg
IGlmICh1bml0VHlwZSA9PSBTVkdfQU5HTEVUWVBFX1VOS05PV04gfHwgdW5pdFR5cGUgPiBTVkdf
QU5HTEVUWVBFX0dSQUQpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOT1RfU1VQUE9SVEVE
X0VSUiB9OwotCi0gICAgbV91bml0VHlwZSA9IHN0YXRpY19jYXN0PFNWR0FuZ2xlVHlwZT4odW5p
dFR5cGUpOwotICAgIG1fdmFsdWVJblNwZWNpZmllZFVuaXRzID0gdmFsdWVJblNwZWNpZmllZFVu
aXRzOwotICAgIHJldHVybiB7IH07Ci19Ci0KLUV4Y2VwdGlvbk9yPHZvaWQ+IFNWR0FuZ2xlOjpj
b252ZXJ0VG9TcGVjaWZpZWRVbml0cyh1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSkKLXsKLSAgICBp
ZiAodW5pdFR5cGUgPT0gU1ZHX0FOR0xFVFlQRV9VTktOT1dOIHx8IG1fdW5pdFR5cGUgPT0gU1ZH
X0FOR0xFVFlQRV9VTktOT1dOIHx8IHVuaXRUeXBlID4gU1ZHX0FOR0xFVFlQRV9HUkFEKQotICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTk9UX1NVUFBPUlRFRF9FUlIgfTsKLQotICAgIGlmICh1
bml0VHlwZSA9PSBtX3VuaXRUeXBlKQotICAgICAgICByZXR1cm4geyB9OwotCi0gICAgc3dpdGNo
IChtX3VuaXRUeXBlKSB7Ci0gICAgY2FzZSBTVkdfQU5HTEVUWVBFX1JBRDoKLSAgICAgICAgc3dp
dGNoICh1bml0VHlwZSkgewotICAgICAgICBjYXNlIFNWR19BTkdMRVRZUEVfR1JBRDoKLSAgICAg
ICAgICAgIG1fdmFsdWVJblNwZWNpZmllZFVuaXRzID0gcmFkMmdyYWQobV92YWx1ZUluU3BlY2lm
aWVkVW5pdHMpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU1ZHX0FOR0xFVFlQ
RV9VTlNQRUNJRklFRDoKLSAgICAgICAgY2FzZSBTVkdfQU5HTEVUWVBFX0RFRzoKLSAgICAgICAg
ICAgIG1fdmFsdWVJblNwZWNpZmllZFVuaXRzID0gcmFkMmRlZyhtX3ZhbHVlSW5TcGVjaWZpZWRV
bml0cyk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTVkdfQU5HTEVUWVBFX1JB
RDoKLSAgICAgICAgY2FzZSBTVkdfQU5HTEVUWVBFX1VOS05PV046Ci0gICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgU1ZHX0FOR0xFVFlQRV9HUkFEOgotICAgICAgICBzd2l0Y2ggKHVu
aXRUeXBlKSB7Ci0gICAgICAgIGNhc2UgU1ZHX0FOR0xFVFlQRV9SQUQ6Ci0gICAgICAgICAgICBt
X3ZhbHVlSW5TcGVjaWZpZWRVbml0cyA9IGdyYWQycmFkKG1fdmFsdWVJblNwZWNpZmllZFVuaXRz
KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNWR19BTkdMRVRZUEVfVU5TUEVD
SUZJRUQ6Ci0gICAgICAgIGNhc2UgU1ZHX0FOR0xFVFlQRV9ERUc6Ci0gICAgICAgICAgICBtX3Zh
bHVlSW5TcGVjaWZpZWRVbml0cyA9IGdyYWQyZGVnKG1fdmFsdWVJblNwZWNpZmllZFVuaXRzKTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNWR19BTkdMRVRZUEVfR1JBRDoKLSAg
ICAgICAgY2FzZSBTVkdfQU5HTEVUWVBFX1VOS05PV046Ci0gICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgU1ZHX0FOR0xFVFlQRV9VTlNQRUNJRklFRDoKLSAgICAgICAgLy8gU3BlYzog
Rm9yIGFuZ2xlcywgYSB1bml0bGVzcyB2YWx1ZSBpcyB0cmVhdGVkIHRoZSBzYW1lIGFzIGlmIGRl
Z3JlZXMgd2VyZSBzcGVjaWZpZWQuCi0gICAgY2FzZSBTVkdfQU5HTEVUWVBFX0RFRzoKLSAgICAg
ICAgc3dpdGNoICh1bml0VHlwZSkgewotICAgICAgICBjYXNlIFNWR19BTkdMRVRZUEVfUkFEOgot
ICAgICAgICAgICAgbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgPSBkZWcycmFkKG1fdmFsdWVJblNw
ZWNpZmllZFVuaXRzKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNWR19BTkdM
RVRZUEVfR1JBRDoKLSAgICAgICAgICAgIG1fdmFsdWVJblNwZWNpZmllZFVuaXRzID0gZGVnMmdy
YWQobV92YWx1ZUluU3BlY2lmaWVkVW5pdHMpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgU1ZHX0FOR0xFVFlQRV9VTlNQRUNJRklFRDoKLSAgICAgICAgY2FzZSBTVkdfQU5HTEVU
WVBFX0RFRzoKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNWR19BTkdMRVRZUEVf
VU5LTk9XTjoKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTVkdfQU5HTEVUWVBF
X1VOS05PV046Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBicmVhazsK
LSAgICB9Ci0KLSAgICBtX3VuaXRUeXBlID0gc3RhdGljX2Nhc3Q8U1ZHQW5nbGVUeXBlPih1bml0
VHlwZSk7Ci0KLSAgICByZXR1cm4geyB9OwotfQotCi19CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5nbGUuY3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVv
bC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9w
ZXJ0eQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuZ2xlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuZ2xlLmgJKHJldmlzaW9uIDIwODQyMikKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmdsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMSwxMyArMjEsMTMg
QEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgotI2luY2x1ZGUg
IlNWR1Byb3BlcnR5VHJhaXRzLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1
ZGUgIlNWR0FuZ2xlVmFsdWUuaCIKKyNpbmNsdWRlICJTVkdQcm9wZXJ0eVRlYXJPZmYuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBTVkdBbmdsZSB7Ci0gICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CitjbGFzcyBTVkdBbmdsZSA6IHB1YmxpYyBTVkdQcm9wZXJ0eVRlYXJPZmY8
U1ZHQW5nbGVWYWx1ZT4gewogcHVibGljOgogICAgIGVudW0gU1ZHQW5nbGVUeXBlIHsKICAgICAg
ICAgU1ZHX0FOR0xFVFlQRV9VTktOT1dOID0gMCwKQEAgLTM3LDI4ICszNywxMTUgQEAgcHVibGlj
OgogICAgICAgICBTVkdfQU5HTEVUWVBFX0dSQUQgPSA0CiAgICAgfTsKIAotICAgIFNWR0FuZ2xl
VHlwZSB1bml0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5pdFR5cGU7IH0KLQotICAgIHZvaWQg
c2V0VmFsdWUoZmxvYXQpOwotICAgIGZsb2F0IHZhbHVlKCkgY29uc3Q7Ci0KLSAgICB2b2lkIHNl
dFZhbHVlSW5TcGVjaWZpZWRVbml0cyhmbG9hdCB2YWx1ZUluU3BlY2lmaWVkVW5pdHMpIHsgbV92
YWx1ZUluU3BlY2lmaWVkVW5pdHMgPSB2YWx1ZUluU3BlY2lmaWVkVW5pdHM7IH0KLSAgICBmbG9h
dCB2YWx1ZUluU3BlY2lmaWVkVW5pdHMoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlSW5TcGVjaWZp
ZWRVbml0czsgfQotCi0gICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0VmFsdWVBc1N0cmluZyhjb25z
dCBTdHJpbmcmKTsKLSAgICBTdHJpbmcgdmFsdWVBc1N0cmluZygpIGNvbnN0OwotCi0gICAgRXhj
ZXB0aW9uT3I8dm9pZD4gbmV3VmFsdWVTcGVjaWZpZWRVbml0cyh1bnNpZ25lZCBzaG9ydCB1bml0
VHlwZSwgZmxvYXQgdmFsdWVJblNwZWNpZmllZFVuaXRzKTsKLSAgICBFeGNlcHRpb25Pcjx2b2lk
PiBjb252ZXJ0VG9TcGVjaWZpZWRVbml0cyh1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSk7CisgICAg
c3RhdGljIFJlZjxTVkdBbmdsZT4gY3JlYXRlKFNWR0FuaW1hdGVkUHJvcGVydHkqIGFuaW1hdGVk
UHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xlLCBTVkdBbmdsZVZhbHVlJiB2YWx1ZSkKKyAg
ICB7CisgICAgICAgIEFTU0VSVChhbmltYXRlZFByb3BlcnR5KTsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU1ZHQW5nbGUoYW5pbWF0ZWRQcm9wZXJ0eSwgcm9sZSwgdmFsdWUpKTsKKyAg
ICB9CisKKyAgICBzdGF0aWMgUmVmPFNWR0FuZ2xlPiBjcmVhdGUoU1ZHQW5nbGVWYWx1ZSBpbml0
aWFsVmFsdWUgPSB7IH0pCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdB
bmdsZShpbml0aWFsVmFsdWUpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBz
dGF0aWMgRXhjZXB0aW9uT3I8UmVmPFNWR0FuZ2xlPj4gY3JlYXRlKEV4Y2VwdGlvbk9yPFQ+JiYg
aW5pdGlhbFZhbHVlKQorICAgIHsKKyAgICAgICAgaWYgKGluaXRpYWxWYWx1ZS5oYXNFeGNlcHRp
b24oKSkKKyAgICAgICAgICAgIHJldHVybiBpbml0aWFsVmFsdWUucmVsZWFzZUV4Y2VwdGlvbigp
OworICAgICAgICByZXR1cm4gY3JlYXRlKGluaXRpYWxWYWx1ZS5yZWxlYXNlUmV0dXJuVmFsdWUo
KSk7CisgICAgfQorCisgICAgU1ZHQW5nbGVWYWx1ZTo6VHlwZSB1bml0VHlwZSgpCisgICAgewor
ICAgICAgICByZXR1cm4gcHJvcGVydHlSZWZlcmVuY2UoKS51bml0VHlwZSgpOworICAgIH0KKwor
ICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFZhbHVlRm9yQmluZGluZ3MoZmxvYXQgdmFsdWUpCisg
ICAgeworICAgICAgICBpZiAoaXNSZWFkT25seSgpKQorICAgICAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IE5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUiB9OworCisgICAgICAgIHByb3BlcnR5
UmVmZXJlbmNlKCkuc2V0VmFsdWUodmFsdWUpOworICAgICAgICBjb21taXRDaGFuZ2UoKTsKKwor
ICAgICAgICByZXR1cm4geyB9OworICAgIH0KKyAgICAKKyAgICBmbG9hdCB2YWx1ZUZvckJpbmRp
bmdzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBwcm9wZXJ0eVJlZmVyZW5jZSgpLnZhbHVlKCk7
CisgICAgfQorCisgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0VmFsdWVJblNwZWNpZmllZFVuaXRz
KGZsb2F0IHZhbHVlSW5TcGVjaWZpZWRVbml0cykKKyAgICB7CisgICAgICAgIGlmIChpc1JlYWRP
bmx5KCkpCisgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTk9fTU9ESUZJQ0FUSU9OX0FM
TE9XRURfRVJSIH07CisKKyAgICAgICAgcHJvcGVydHlSZWZlcmVuY2UoKS5zZXRWYWx1ZUluU3Bl
Y2lmaWVkVW5pdHModmFsdWVJblNwZWNpZmllZFVuaXRzKTsKKyAgICAgICAgY29tbWl0Q2hhbmdl
KCk7CisgICAgICAgIAorICAgICAgICByZXR1cm4geyB9OworICAgIH0KKyAgICAKKyAgICBmbG9h
dCB2YWx1ZUluU3BlY2lmaWVkVW5pdHMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHByb3BlcnR5
UmVmZXJlbmNlKCkudmFsdWVJblNwZWNpZmllZFVuaXRzKCk7CisgICAgfQorCisgICAgRXhjZXB0
aW9uT3I8dm9pZD4gc2V0VmFsdWVBc1N0cmluZyhjb25zdCBTdHJpbmcmIHZhbHVlKQorICAgIHsK
KyAgICAgICAgaWYgKGlzUmVhZE9ubHkoKSkKKyAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlIgfTsKKworICAgICAgICBhdXRvIHJlc3VsdCA9
IHByb3BlcnR5UmVmZXJlbmNlKCkuc2V0VmFsdWVBc1N0cmluZyh2YWx1ZSk7CisgICAgICAgIGlm
IChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAg
ICAgICAKKyAgICAgICAgY29tbWl0Q2hhbmdlKCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgfQorCisgICAgU3RyaW5nIHZhbHVlQXNTdHJpbmcoKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHByb3BlcnR5UmVmZXJlbmNlKCkudmFsdWVBc1N0cmluZygpOworICAgIH0KKworICAgIEV4Y2Vw
dGlvbk9yPHZvaWQ+IG5ld1ZhbHVlU3BlY2lmaWVkVW5pdHModW5zaWduZWQgc2hvcnQgdW5pdFR5
cGUsIGZsb2F0IHZhbHVlSW5TcGVjaWZpZWRVbml0cykKKyAgICB7CisgICAgICAgIGlmIChpc1Jl
YWRPbmx5KCkpCisgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTk9fTU9ESUZJQ0FUSU9O
X0FMTE9XRURfRVJSIH07CisKKyAgICAgICAgYXV0byByZXN1bHQgPSBwcm9wZXJ0eVJlZmVyZW5j
ZSgpLm5ld1ZhbHVlU3BlY2lmaWVkVW5pdHModW5pdFR5cGUsIHZhbHVlSW5TcGVjaWZpZWRVbml0
cyk7CisgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1
cm4gcmVzdWx0OworICAgICAgICAKKyAgICAgICAgY29tbWl0Q2hhbmdlKCk7CisgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgfQorICAgIAorICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGNvbnZlcnRU
b1NwZWNpZmllZFVuaXRzKHVuc2lnbmVkIHNob3J0IHVuaXRUeXBlKQorICAgIHsKKyAgICAgICAg
aWYgKGlzUmVhZE9ubHkoKSkKKyAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOT19NT0RJ
RklDQVRJT05fQUxMT1dFRF9FUlIgfTsKKworICAgICAgICBhdXRvIHJlc3VsdCA9IHByb3BlcnR5
UmVmZXJlbmNlKCkuY29udmVydFRvU3BlY2lmaWVkVW5pdHModW5pdFR5cGUpOworICAgICAgICBp
ZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICAgICAgCisgICAgICAgIGNvbW1pdENoYW5nZSgpOworICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgIH0KIAogcHJpdmF0ZToKLSAgICBTVkdBbmdsZVR5cGUgbV91bml0VHlwZSB7IFNWR19BTkdM
RVRZUEVfVU5TUEVDSUZJRUQgfTsKLSAgICBmbG9hdCBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyB7
IDAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPFNWR0FuZ2xl
PiB7Ci0gICAgc3RhdGljIFNWR0FuZ2xlIGluaXRpYWxWYWx1ZSgpIHsgcmV0dXJuIFNWR0FuZ2xl
KCk7IH0KLSAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFNWR0FuZ2xlJiB0eXBlKSB7
IHJldHVybiB0eXBlLnZhbHVlQXNTdHJpbmcoKTsgfQorICAgIFNWR0FuZ2xlKFNWR0FuZ2xlVmFs
dWUgaW5pdGlhbFZhbHVlKQorICAgICAgICA6IFNWR1Byb3BlcnR5VGVhck9mZjxTVkdBbmdsZVZh
bHVlPihpbml0aWFsVmFsdWUpCisgICAgeworICAgIH0KKworICAgIFNWR0FuZ2xlKFNWR0FuaW1h
dGVkUHJvcGVydHkqIGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xlLCBTVkdB
bmdsZVZhbHVlJiB2YWx1ZSkKKyAgICAgICAgOiBTVkdQcm9wZXJ0eVRlYXJPZmY8U1ZHQW5nbGVW
YWx1ZT4oYW5pbWF0ZWRQcm9wZXJ0eSwgcm9sZSwgdmFsdWUpCisgICAgeworICAgIH0KIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmds
ZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuZ2xlLmlkbAkocmV2
aXNpb24gMjA4NDIyKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuZ2xlLmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMjksOCArMjksOCBAQCBpbnRlcmZhY2UgU1ZHQW5nbGUgeyAKICAgICBjb25z
dCB1bnNpZ25lZCBzaG9ydCBTVkdfQU5HTEVUWVBFX0dSQUQgPSA0OwogCiAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIHVuc2lnbmVkIHNob3J0IHVuaXRUeXBlOwotICAgIGF0dHJpYnV0ZSB1bnJlc3Ry
aWN0ZWQgZmxvYXQgdmFsdWU7Ci0gICAgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBmbG9hdCB2YWx1
ZUluU3BlY2lmaWVkVW5pdHM7CisgICAgW1NldHRlck1heVRocm93RXhjZXB0aW9uLCBJbXBsZW1l
bnRlZEFzPXZhbHVlRm9yQmluZGluZ3NdIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZmxvYXQgdmFs
dWU7CisgICAgW1NldHRlck1heVRocm93RXhjZXB0aW9uXSBhdHRyaWJ1dGUgdW5yZXN0cmljdGVk
IGZsb2F0IHZhbHVlSW5TcGVjaWZpZWRVbml0czsKIAogICAgIFtTZXR0ZXJNYXlUaHJvd0V4Y2Vw
dGlvbl0gYXR0cmlidXRlIERPTVN0cmluZyB2YWx1ZUFzU3RyaW5nOwogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5nbGVWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuZ2xlVmFsdWUuY3BwCShyZXZpc2lvbiAyMDg0MjIpCShmcm9tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmdsZS5jcHA6MjA4NDIyKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuZ2xlVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjA0IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA3LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8
emltbWVybWFubkBrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2IFJv
YiBCdWlzIDxidWlzQGtkZS5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlv
biBMaW1pdGVkIDIwMTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAq
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJTVkdBbmdsZS5oIgorCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2lu
Y2x1ZGUgIlNWR1BhcnNlclV0aWxpdGllcy5oIgorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2Zsb2F0IFNWR0FuZ2xlOjp2YWx1ZSgpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtX3VuaXRU
eXBlKSB7CisgICAgY2FzZSBTVkdfQU5HTEVUWVBFX0dSQUQ6CisgICAgICAgIHJldHVybiBncmFk
MmRlZyhtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyk7CisgICAgY2FzZSBTVkdfQU5HTEVUWVBFX1JB
RDoKKyAgICAgICAgcmV0dXJuIHJhZDJkZWcobV92YWx1ZUluU3BlY2lmaWVkVW5pdHMpOworICAg
IGNhc2UgU1ZHX0FOR0xFVFlQRV9VTlNQRUNJRklFRDoKKyAgICBjYXNlIFNWR19BTkdMRVRZUEVf
VU5LTk9XTjoKKyAgICBjYXNlIFNWR19BTkdMRVRZUEVfREVHOgorICAgICAgICByZXR1cm4gbV92
YWx1ZUluU3BlY2lmaWVkVW5pdHM7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIHJldHVybiAwOworfQorCit2b2lkIFNWR0FuZ2xlOjpzZXRWYWx1ZShmbG9hdCB2YWx1ZSkK
K3sKKyAgICBzd2l0Y2ggKG1fdW5pdFR5cGUpIHsKKyAgICBjYXNlIFNWR19BTkdMRVRZUEVfR1JB
RDoKKyAgICAgICAgbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgPSBkZWcyZ3JhZCh2YWx1ZSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICBjYXNlIFNWR19BTkdMRVRZUEVfUkFEOgorICAgICAgICBtX3Zh
bHVlSW5TcGVjaWZpZWRVbml0cyA9IGRlZzJyYWQodmFsdWUpOworICAgICAgICByZXR1cm47Cisg
ICAgY2FzZSBTVkdfQU5HTEVUWVBFX1VOU1BFQ0lGSUVEOgorICAgIGNhc2UgU1ZHX0FOR0xFVFlQ
RV9VTktOT1dOOgorICAgIGNhc2UgU1ZHX0FOR0xFVFlQRV9ERUc6CisgICAgICAgIG1fdmFsdWVJ
blNwZWNpZmllZFVuaXRzID0gdmFsdWU7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK1N0cmluZyBTVkdBbmdsZTo6dmFsdWVBc1N0cmluZygp
IGNvbnN0Cit7CisgICAgc3dpdGNoIChtX3VuaXRUeXBlKSB7CisgICAgY2FzZSBTVkdfQU5HTEVU
WVBFX0RFRzoKKyAgICAgICAgcmV0dXJuIFN0cmluZzo6bnVtYmVyKG1fdmFsdWVJblNwZWNpZmll
ZFVuaXRzKSArICJkZWciOworICAgIGNhc2UgU1ZHX0FOR0xFVFlQRV9SQUQ6CisgICAgICAgIHJl
dHVybiBTdHJpbmc6Om51bWJlcihtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cykgKyAicmFkIjsKKyAg
ICBjYXNlIFNWR19BTkdMRVRZUEVfR1JBRDoKKyAgICAgICAgcmV0dXJuIFN0cmluZzo6bnVtYmVy
KG1fdmFsdWVJblNwZWNpZmllZFVuaXRzKSArICJncmFkIjsKKyAgICBjYXNlIFNWR19BTkdMRVRZ
UEVfVU5TUEVDSUZJRUQ6CisgICAgY2FzZSBTVkdfQU5HTEVUWVBFX1VOS05PV046CisgICAgICAg
IHJldHVybiBTdHJpbmc6Om51bWJlcihtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyk7CisgICAgfQor
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitz
dGF0aWMgaW5saW5lIFNWR0FuZ2xlOjpTVkdBbmdsZVR5cGUgcGFyc2VBbmdsZVR5cGUoY29uc3Qg
VUNoYXIqIHB0ciwgY29uc3QgVUNoYXIqIGVuZCkKK3sKKyAgICBzd2l0Y2ggKGVuZCAtIHB0cikg
eworICAgIGNhc2UgMDoKKyAgICAgICAgcmV0dXJuIFNWR0FuZ2xlOjpTVkdfQU5HTEVUWVBFX1VO
U1BFQ0lGSUVEOworICAgIGNhc2UgMzoKKyAgICAgICAgaWYgKHB0clswXSA9PSAnZCcgJiYgcHRy
WzFdID09ICdlJyAmJiBwdHJbMl0gPT0gJ2cnKQorICAgICAgICAgICAgcmV0dXJuIFNWR0FuZ2xl
OjpTVkdfQU5HTEVUWVBFX0RFRzsKKyAgICAgICAgaWYgKHB0clswXSA9PSAncicgJiYgcHRyWzFd
ID09ICdhJyAmJiBwdHJbMl0gPT0gJ2QnKQorICAgICAgICAgICAgcmV0dXJuIFNWR0FuZ2xlOjpT
VkdfQU5HTEVUWVBFX1JBRDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSA0OgorICAgICAgICBp
ZiAocHRyWzBdID09ICdnJyAmJiBwdHJbMV0gPT0gJ3InICYmIHB0clsyXSA9PSAnYScgJiYgcHRy
WzNdID09ICdkJykKKyAgICAgICAgICAgIHJldHVybiBTVkdBbmdsZTo6U1ZHX0FOR0xFVFlQRV9H
UkFEOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIFNWR0FuZ2xlOjpTVkdfQU5H
TEVUWVBFX1VOS05PV047Cit9CisKK0V4Y2VwdGlvbk9yPHZvaWQ+IFNWR0FuZ2xlOjpzZXRWYWx1
ZUFzU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgaWYgKHZhbHVlLmlzRW1wdHko
KSkgeworICAgICAgICBtX3VuaXRUeXBlID0gU1ZHX0FOR0xFVFlQRV9VTlNQRUNJRklFRDsKKyAg
ICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICBhdXRvIHVwY29udmVydGVkQ2hhcmFjdGVy
cyA9IFN0cmluZ1ZpZXcodmFsdWUpLnVwY29udmVydGVkQ2hhcmFjdGVycygpOworICAgIGNvbnN0
IFVDaGFyKiBwdHIgPSB1cGNvbnZlcnRlZENoYXJhY3RlcnM7CisgICAgY29uc3QgVUNoYXIqIGVu
ZCA9IHB0ciArIHZhbHVlLmxlbmd0aCgpOworCisgICAgZmxvYXQgdmFsdWVJblNwZWNpZmllZFVu
aXRzID0gMDsKKyAgICBpZiAoIXBhcnNlTnVtYmVyKHB0ciwgZW5kLCB2YWx1ZUluU3BlY2lmaWVk
VW5pdHMsIGZhbHNlKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNZTlRBWF9FUlIgfTsK
KworICAgIGF1dG8gdW5pdFR5cGUgPSBwYXJzZUFuZ2xlVHlwZShwdHIsIGVuZCk7CisgICAgaWYg
KHVuaXRUeXBlID09IFNWR19BTkdMRVRZUEVfVU5LTk9XTikKKyAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IFNZTlRBWF9FUlIgfTsKKworICAgIG1fdW5pdFR5cGUgPSB1bml0VHlwZTsKKyAgICBt
X3ZhbHVlSW5TcGVjaWZpZWRVbml0cyA9IHZhbHVlSW5TcGVjaWZpZWRVbml0czsKKyAgICByZXR1
cm4geyB9OworfQorCitFeGNlcHRpb25Pcjx2b2lkPiBTVkdBbmdsZTo6bmV3VmFsdWVTcGVjaWZp
ZWRVbml0cyh1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSwgZmxvYXQgdmFsdWVJblNwZWNpZmllZFVu
aXRzKQoreworICAgIGlmICh1bml0VHlwZSA9PSBTVkdfQU5HTEVUWVBFX1VOS05PV04gfHwgdW5p
dFR5cGUgPiBTVkdfQU5HTEVUWVBFX0dSQUQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBO
T1RfU1VQUE9SVEVEX0VSUiB9OworCisgICAgbV91bml0VHlwZSA9IHN0YXRpY19jYXN0PFNWR0Fu
Z2xlVHlwZT4odW5pdFR5cGUpOworICAgIG1fdmFsdWVJblNwZWNpZmllZFVuaXRzID0gdmFsdWVJ
blNwZWNpZmllZFVuaXRzOworICAgIHJldHVybiB7IH07Cit9CisKK0V4Y2VwdGlvbk9yPHZvaWQ+
IFNWR0FuZ2xlOjpjb252ZXJ0VG9TcGVjaWZpZWRVbml0cyh1bnNpZ25lZCBzaG9ydCB1bml0VHlw
ZSkKK3sKKyAgICBpZiAodW5pdFR5cGUgPT0gU1ZHX0FOR0xFVFlQRV9VTktOT1dOIHx8IG1fdW5p
dFR5cGUgPT0gU1ZHX0FOR0xFVFlQRV9VTktOT1dOIHx8IHVuaXRUeXBlID4gU1ZHX0FOR0xFVFlQ
RV9HUkFEKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTk9UX1NVUFBPUlRFRF9FUlIgfTsK
KworICAgIGlmICh1bml0VHlwZSA9PSBtX3VuaXRUeXBlKQorICAgICAgICByZXR1cm4geyB9Owor
CisgICAgc3dpdGNoIChtX3VuaXRUeXBlKSB7CisgICAgY2FzZSBTVkdfQU5HTEVUWVBFX1JBRDoK
KyAgICAgICAgc3dpdGNoICh1bml0VHlwZSkgeworICAgICAgICBjYXNlIFNWR19BTkdMRVRZUEVf
R1JBRDoKKyAgICAgICAgICAgIG1fdmFsdWVJblNwZWNpZmllZFVuaXRzID0gcmFkMmdyYWQobV92
YWx1ZUluU3BlY2lmaWVkVW5pdHMpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
U1ZHX0FOR0xFVFlQRV9VTlNQRUNJRklFRDoKKyAgICAgICAgY2FzZSBTVkdfQU5HTEVUWVBFX0RF
RzoKKyAgICAgICAgICAgIG1fdmFsdWVJblNwZWNpZmllZFVuaXRzID0gcmFkMmRlZyhtX3ZhbHVl
SW5TcGVjaWZpZWRVbml0cyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTVkdf
QU5HTEVUWVBFX1JBRDoKKyAgICAgICAgY2FzZSBTVkdfQU5HTEVUWVBFX1VOS05PV046CisgICAg
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU1ZHX0FOR0xFVFlQRV9HUkFEOgorICAgICAg
ICBzd2l0Y2ggKHVuaXRUeXBlKSB7CisgICAgICAgIGNhc2UgU1ZHX0FOR0xFVFlQRV9SQUQ6Cisg
ICAgICAgICAgICBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyA9IGdyYWQycmFkKG1fdmFsdWVJblNw
ZWNpZmllZFVuaXRzKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNWR19BTkdM
RVRZUEVfVU5TUEVDSUZJRUQ6CisgICAgICAgIGNhc2UgU1ZHX0FOR0xFVFlQRV9ERUc6CisgICAg
ICAgICAgICBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyA9IGdyYWQyZGVnKG1fdmFsdWVJblNwZWNp
ZmllZFVuaXRzKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNWR19BTkdMRVRZ
UEVfR1JBRDoKKyAgICAgICAgY2FzZSBTVkdfQU5HTEVUWVBFX1VOS05PV046CisgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgU1ZHX0FOR0xFVFlQRV9VTlNQRUNJRklFRDoKKyAgICAg
ICAgLy8gU3BlYzogRm9yIGFuZ2xlcywgYSB1bml0bGVzcyB2YWx1ZSBpcyB0cmVhdGVkIHRoZSBz
YW1lIGFzIGlmIGRlZ3JlZXMgd2VyZSBzcGVjaWZpZWQuCisgICAgY2FzZSBTVkdfQU5HTEVUWVBF
X0RFRzoKKyAgICAgICAgc3dpdGNoICh1bml0VHlwZSkgeworICAgICAgICBjYXNlIFNWR19BTkdM
RVRZUEVfUkFEOgorICAgICAgICAgICAgbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgPSBkZWcycmFk
KG1fdmFsdWVJblNwZWNpZmllZFVuaXRzKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIFNWR19BTkdMRVRZUEVfR1JBRDoKKyAgICAgICAgICAgIG1fdmFsdWVJblNwZWNpZmllZFVu
aXRzID0gZGVnMmdyYWQobV92YWx1ZUluU3BlY2lmaWVkVW5pdHMpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgU1ZHX0FOR0xFVFlQRV9VTlNQRUNJRklFRDoKKyAgICAgICAgY2Fz
ZSBTVkdfQU5HTEVUWVBFX0RFRzoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNW
R19BTkdMRVRZUEVfVU5LTk9XTjoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBT
VkdfQU5HTEVUWVBFX1VOS05PV046CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICBicmVhazsKKyAgICB9CisKKyAgICBtX3VuaXRUeXBlID0gc3RhdGljX2Nhc3Q8U1ZHQW5n
bGVUeXBlPih1bml0VHlwZSk7CisKKyAgICByZXR1cm4geyB9OworfQorCit9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5nbGVWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuZ2xlVmFsdWUuY3BwCShyZXZpc2lvbiAyMDg0MjIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5nbGVWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwLDcgKzIw
LDcgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU1ZHQW5nbGUuaCIK
KyNpbmNsdWRlICJTVkdBbmdsZVZhbHVlLmgiCiAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgi
CiAjaW5jbHVkZSAiU1ZHUGFyc2VyVXRpbGl0aWVzLmgiCkBAIC0yOSw3ICsyOSw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotZmxvYXQgU1ZHQW5nbGU6OnZhbHVlKCkgY29uc3QKK2Zsb2F0
IFNWR0FuZ2xlVmFsdWU6OnZhbHVlKCkgY29uc3QKIHsKICAgICBzd2l0Y2ggKG1fdW5pdFR5cGUp
IHsKICAgICBjYXNlIFNWR19BTkdMRVRZUEVfR1JBRDoKQEAgLTQ1LDcgKzQ1LDcgQEAgZmxvYXQg
U1ZHQW5nbGU6OnZhbHVlKCkgY29uc3QKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBTVkdBbmds
ZTo6c2V0VmFsdWUoZmxvYXQgdmFsdWUpCit2b2lkIFNWR0FuZ2xlVmFsdWU6OnNldFZhbHVlKGZs
b2F0IHZhbHVlKQogewogICAgIHN3aXRjaCAobV91bml0VHlwZSkgewogICAgIGNhc2UgU1ZHX0FO
R0xFVFlQRV9HUkFEOgpAQCAtNjMsNyArNjMsNyBAQCB2b2lkIFNWR0FuZ2xlOjpzZXRWYWx1ZShm
bG9hdCB2YWx1ZSkKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotU3RyaW5nIFNWR0Fu
Z2xlOjp2YWx1ZUFzU3RyaW5nKCkgY29uc3QKK1N0cmluZyBTVkdBbmdsZVZhbHVlOjp2YWx1ZUFz
U3RyaW5nKCkgY29uc3QKIHsKICAgICBzd2l0Y2ggKG1fdW5pdFR5cGUpIHsKICAgICBjYXNlIFNW
R19BTkdMRVRZUEVfREVHOgpAQCAtODEsMjYgKzgxLDI2IEBAIFN0cmluZyBTVkdBbmdsZTo6dmFs
dWVBc1N0cmluZygpIGNvbnN0CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi1zdGF0aWMgaW5s
aW5lIFNWR0FuZ2xlOjpTVkdBbmdsZVR5cGUgcGFyc2VBbmdsZVR5cGUoY29uc3QgVUNoYXIqIHB0
ciwgY29uc3QgVUNoYXIqIGVuZCkKK3N0YXRpYyBpbmxpbmUgU1ZHQW5nbGVWYWx1ZTo6VHlwZSBw
YXJzZUFuZ2xlVHlwZShjb25zdCBVQ2hhciogcHRyLCBjb25zdCBVQ2hhciogZW5kKQogewogICAg
IHN3aXRjaCAoZW5kIC0gcHRyKSB7CiAgICAgY2FzZSAwOgotICAgICAgICByZXR1cm4gU1ZHQW5n
bGU6OlNWR19BTkdMRVRZUEVfVU5TUEVDSUZJRUQ7CisgICAgICAgIHJldHVybiBTVkdBbmdsZVZh
bHVlOjpTVkdfQU5HTEVUWVBFX1VOU1BFQ0lGSUVEOwogICAgIGNhc2UgMzoKICAgICAgICAgaWYg
KHB0clswXSA9PSAnZCcgJiYgcHRyWzFdID09ICdlJyAmJiBwdHJbMl0gPT0gJ2cnKQotICAgICAg
ICAgICAgcmV0dXJuIFNWR0FuZ2xlOjpTVkdfQU5HTEVUWVBFX0RFRzsKKyAgICAgICAgICAgIHJl
dHVybiBTVkdBbmdsZVZhbHVlOjpTVkdfQU5HTEVUWVBFX0RFRzsKICAgICAgICAgaWYgKHB0clsw
XSA9PSAncicgJiYgcHRyWzFdID09ICdhJyAmJiBwdHJbMl0gPT0gJ2QnKQotICAgICAgICAgICAg
cmV0dXJuIFNWR0FuZ2xlOjpTVkdfQU5HTEVUWVBFX1JBRDsKKyAgICAgICAgICAgIHJldHVybiBT
VkdBbmdsZVZhbHVlOjpTVkdfQU5HTEVUWVBFX1JBRDsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSA0OgogICAgICAgICBpZiAocHRyWzBdID09ICdnJyAmJiBwdHJbMV0gPT0gJ3InICYmIHB0clsy
XSA9PSAnYScgJiYgcHRyWzNdID09ICdkJykKLSAgICAgICAgICAgIHJldHVybiBTVkdBbmdsZTo6
U1ZHX0FOR0xFVFlQRV9HUkFEOworICAgICAgICAgICAgcmV0dXJuIFNWR0FuZ2xlVmFsdWU6OlNW
R19BTkdMRVRZUEVfR1JBRDsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIHJldHVybiBTVkdB
bmdsZTo6U1ZHX0FOR0xFVFlQRV9VTktOT1dOOworICAgIHJldHVybiBTVkdBbmdsZVZhbHVlOjpT
VkdfQU5HTEVUWVBFX1VOS05PV047CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IFNWR0FuZ2xlOjpz
ZXRWYWx1ZUFzU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCitFeGNlcHRpb25Pcjx2b2lkPiBT
VkdBbmdsZVZhbHVlOjpzZXRWYWx1ZUFzU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAg
ICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkgewogICAgICAgICBtX3VuaXRUeXBlID0gU1ZHX0FOR0xF
VFlQRV9VTlNQRUNJRklFRDsKQEAgLTEyNCwxNyArMTI0LDE3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+
IFNWR0FuZ2xlOjpzZXRWYWx1ZUFzU3QKICAgICByZXR1cm4geyB9OwogfQogCi1FeGNlcHRpb25P
cjx2b2lkPiBTVkdBbmdsZTo6bmV3VmFsdWVTcGVjaWZpZWRVbml0cyh1bnNpZ25lZCBzaG9ydCB1
bml0VHlwZSwgZmxvYXQgdmFsdWVJblNwZWNpZmllZFVuaXRzKQorRXhjZXB0aW9uT3I8dm9pZD4g
U1ZHQW5nbGVWYWx1ZTo6bmV3VmFsdWVTcGVjaWZpZWRVbml0cyh1bnNpZ25lZCBzaG9ydCB1bml0
VHlwZSwgZmxvYXQgdmFsdWVJblNwZWNpZmllZFVuaXRzKQogewogICAgIGlmICh1bml0VHlwZSA9
PSBTVkdfQU5HTEVUWVBFX1VOS05PV04gfHwgdW5pdFR5cGUgPiBTVkdfQU5HTEVUWVBFX0dSQUQp
CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOT1RfU1VQUE9SVEVEX0VSUiB9OwogCi0gICAg
bV91bml0VHlwZSA9IHN0YXRpY19jYXN0PFNWR0FuZ2xlVHlwZT4odW5pdFR5cGUpOworICAgIG1f
dW5pdFR5cGUgPSBzdGF0aWNfY2FzdDxUeXBlPih1bml0VHlwZSk7CiAgICAgbV92YWx1ZUluU3Bl
Y2lmaWVkVW5pdHMgPSB2YWx1ZUluU3BlY2lmaWVkVW5pdHM7CiAgICAgcmV0dXJuIHsgfTsKIH0K
IAotRXhjZXB0aW9uT3I8dm9pZD4gU1ZHQW5nbGU6OmNvbnZlcnRUb1NwZWNpZmllZFVuaXRzKHVu
c2lnbmVkIHNob3J0IHVuaXRUeXBlKQorRXhjZXB0aW9uT3I8dm9pZD4gU1ZHQW5nbGVWYWx1ZTo6
Y29udmVydFRvU3BlY2lmaWVkVW5pdHModW5zaWduZWQgc2hvcnQgdW5pdFR5cGUpCiB7CiAgICAg
aWYgKHVuaXRUeXBlID09IFNWR19BTkdMRVRZUEVfVU5LTk9XTiB8fCBtX3VuaXRUeXBlID09IFNW
R19BTkdMRVRZUEVfVU5LTk9XTiB8fCB1bml0VHlwZSA+IFNWR19BTkdMRVRZUEVfR1JBRCkKICAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5PVF9TVVBQT1JURURfRVJSIH07CkBAIC0xOTYsNyAr
MTk2LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gU1ZHQW5nbGU6OmNvbnZlcnRUb1NwZQogICAgICAg
ICBicmVhazsKICAgICB9CiAKLSAgICBtX3VuaXRUeXBlID0gc3RhdGljX2Nhc3Q8U1ZHQW5nbGVU
eXBlPih1bml0VHlwZSk7CisgICAgbV91bml0VHlwZSA9IHN0YXRpY19jYXN0PFR5cGU+KHVuaXRU
eXBlKTsKIAogICAgIHJldHVybiB7IH07CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5nbGVWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmdsZVZh
bHVlLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuZ2xlVmFsdWUu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBv
bmNlCisKKyNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgorI2luY2x1ZGUgIlNWR1Byb3BlcnR5VHJh
aXRzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU1ZHQW5nbGVWYWx1ZSB7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgZW51bSBUeXBlIHsKKyAg
ICAgICAgU1ZHX0FOR0xFVFlQRV9VTktOT1dOID0gMCwKKyAgICAgICAgU1ZHX0FOR0xFVFlQRV9V
TlNQRUNJRklFRCA9IDEsCisgICAgICAgIFNWR19BTkdMRVRZUEVfREVHID0gMiwKKyAgICAgICAg
U1ZHX0FOR0xFVFlQRV9SQUQgPSAzLAorICAgICAgICBTVkdfQU5HTEVUWVBFX0dSQUQgPSA0Cisg
ICAgfTsKKworICAgIFR5cGUgdW5pdFR5cGUoKSBjb25zdCB7IHJldHVybiBtX3VuaXRUeXBlOyB9
CisKKyAgICB2b2lkIHNldFZhbHVlKGZsb2F0KTsKKyAgICBmbG9hdCB2YWx1ZSgpIGNvbnN0Owor
CisgICAgdm9pZCBzZXRWYWx1ZUluU3BlY2lmaWVkVW5pdHMoZmxvYXQgdmFsdWVJblNwZWNpZmll
ZFVuaXRzKSB7IG1fdmFsdWVJblNwZWNpZmllZFVuaXRzID0gdmFsdWVJblNwZWNpZmllZFVuaXRz
OyB9CisgICAgZmxvYXQgdmFsdWVJblNwZWNpZmllZFVuaXRzKCkgY29uc3QgeyByZXR1cm4gbV92
YWx1ZUluU3BlY2lmaWVkVW5pdHM7IH0KKworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFZhbHVl
QXNTdHJpbmcoY29uc3QgU3RyaW5nJik7CisgICAgU3RyaW5nIHZhbHVlQXNTdHJpbmcoKSBjb25z
dDsKKworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IG5ld1ZhbHVlU3BlY2lmaWVkVW5pdHModW5zaWdu
ZWQgc2hvcnQgdW5pdFR5cGUsIGZsb2F0IHZhbHVlSW5TcGVjaWZpZWRVbml0cyk7CisgICAgRXhj
ZXB0aW9uT3I8dm9pZD4gY29udmVydFRvU3BlY2lmaWVkVW5pdHModW5zaWduZWQgc2hvcnQgdW5p
dFR5cGUpOworCitwcml2YXRlOgorICAgIFR5cGUgbV91bml0VHlwZSB7IFNWR19BTkdMRVRZUEVf
VU5TUEVDSUZJRUQgfTsKKyAgICBmbG9hdCBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyB7IDAgfTsK
K307CisKK3RlbXBsYXRlPD4gc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPFNWR0FuZ2xlVmFsdWU+
IHsKKyAgICBzdGF0aWMgU1ZHQW5nbGVWYWx1ZSBpbml0aWFsVmFsdWUoKSB7IHJldHVybiBTVkdB
bmdsZVZhbHVlKCk7IH0KKyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFNWR0FuZ2xl
VmFsdWUmIHR5cGUpIHsgcmV0dXJuIHR5cGUudmFsdWVBc1N0cmluZygpOyB9Cit9OworCit9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRBbmdsZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQW5nbGUuY3BwCShyZXZpc2lvbiAyMDg0
MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRBbmdsZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMyLDEwICszMiwxMCBAQCBTVkdBbmltYXRlZEFuZ2xlQW5pbWF0b3I6OlNWR0Fu
aW1hdGVkQW5nCiAKIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVk
QW5nbGVBbmltYXRvcjo6Y29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykK
IHsKLSAgICBhdXRvIGFuaW1hdGVkVHlwZSA9IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlQW5nbGVB
bmRFbnVtZXJhdGlvbihzdGQ6Om1ha2VfdW5pcXVlPHN0ZDo6cGFpcjxTVkdBbmdsZSwgdW5zaWdu
ZWQ+PigpKTsKLSAgICBzdGQ6OnBhaXI8U1ZHQW5nbGUsIHVuc2lnbmVkPiYgYW5pbWF0ZWRQYWly
ID0gYW5pbWF0ZWRUeXBlLT5hbmdsZUFuZEVudW1lcmF0aW9uKCk7CisgICAgYXV0byBhbmltYXRl
ZFR5cGUgPSBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZUFuZ2xlQW5kRW51bWVyYXRpb24oc3RkOjpt
YWtlX3VuaXF1ZTxzdGQ6OnBhaXI8U1ZHQW5nbGVWYWx1ZSwgdW5zaWduZWQ+PigpKTsKKyAgICBh
dXRvJiBhbmltYXRlZFBhaXIgPSBhbmltYXRlZFR5cGUtPmFuZ2xlQW5kRW51bWVyYXRpb24oKTsK
IAotICAgIFNWR0FuZ2xlIGFuZ2xlOworICAgIFNWR0FuZ2xlVmFsdWUgYW5nbGU7CiAgICAgU1ZH
TWFya2VyT3JpZW50VHlwZSBvcmllbnRUeXBlID0gU1ZHUHJvcGVydHlUcmFpdHM8U1ZHTWFya2Vy
T3JpZW50VHlwZT46OmZyb21TdHJpbmcoc3RyaW5nLCBhbmdsZSk7CiAgICAgaWYgKG9yaWVudFR5
cGUgPiAwKQogICAgICAgICBhbmltYXRlZFBhaXIuc2Vjb25kID0gb3JpZW50VHlwZTsKQEAgLTc1
LDEzICs3NSwxMyBAQCB2b2lkIFNWR0FuaW1hdGVkQW5nbGVBbmltYXRvcjo6YWRkQW5pbWF0CiAg
ICAgQVNTRVJUKGZyb20tPnR5cGUoKSA9PSBBbmltYXRlZEFuZ2xlKTsKICAgICBBU1NFUlQoZnJv
bS0+dHlwZSgpID09IHRvLT50eXBlKCkpOwogCi0gICAgY29uc3Qgc3RkOjpwYWlyPFNWR0FuZ2xl
LCB1bnNpZ25lZD4mIGZyb21BbmdsZUFuZEVudW1lcmF0aW9uID0gZnJvbS0+YW5nbGVBbmRFbnVt
ZXJhdGlvbigpOwotICAgIHN0ZDo6cGFpcjxTVkdBbmdsZSwgdW5zaWduZWQ+JiB0b0FuZ2xlQW5k
RW51bWVyYXRpb24gPSB0by0+YW5nbGVBbmRFbnVtZXJhdGlvbigpOworICAgIGNvbnN0IGF1dG8m
IGZyb21BbmdsZUFuZEVudW1lcmF0aW9uID0gZnJvbS0+YW5nbGVBbmRFbnVtZXJhdGlvbigpOwor
ICAgIGF1dG8mIHRvQW5nbGVBbmRFbnVtZXJhdGlvbiA9IHRvLT5hbmdsZUFuZEVudW1lcmF0aW9u
KCk7CiAgICAgLy8gT25seSByZXNwZWN0IGJ5IGFuaW1hdGlvbnMsIGlmIGZyb20gYW5kIGJ5IGFy
ZSBib3RoIHNwZWNpZmllZCBpbiBhbmdsZXMgKGFuZCBub3QgZWcuICdhdXRvJykuCiAgICAgaWYg
KGZyb21BbmdsZUFuZEVudW1lcmF0aW9uLnNlY29uZCAhPSB0b0FuZ2xlQW5kRW51bWVyYXRpb24u
c2Vjb25kIHx8IGZyb21BbmdsZUFuZEVudW1lcmF0aW9uLnNlY29uZCAhPSBTVkdNYXJrZXJPcmll
bnRBbmdsZSkKICAgICAgICAgcmV0dXJuOwotICAgIGNvbnN0IFNWR0FuZ2xlJiBmcm9tQW5nbGUg
PSBmcm9tQW5nbGVBbmRFbnVtZXJhdGlvbi5maXJzdDsKLSAgICBTVkdBbmdsZSYgdG9BbmdsZSA9
IHRvQW5nbGVBbmRFbnVtZXJhdGlvbi5maXJzdDsKKyAgICBjb25zdCBhdXRvJiBmcm9tQW5nbGUg
PSBmcm9tQW5nbGVBbmRFbnVtZXJhdGlvbi5maXJzdDsKKyAgICBhdXRvJiB0b0FuZ2xlID0gdG9B
bmdsZUFuZEVudW1lcmF0aW9uLmZpcnN0OwogICAgIHRvQW5nbGUuc2V0VmFsdWUodG9BbmdsZS52
YWx1ZSgpICsgZnJvbUFuZ2xlLnZhbHVlKCkpOwogfQogCkBAIC05MCwxMCArOTAsMTAgQEAgdm9p
ZCBTVkdBbmltYXRlZEFuZ2xlQW5pbWF0b3I6OmNhbGN1bGF0ZQogICAgIEFTU0VSVChtX2FuaW1h
dGlvbkVsZW1lbnQpOwogICAgIEFTU0VSVChtX2NvbnRleHRFbGVtZW50KTsKIAotICAgIGNvbnN0
IHN0ZDo6cGFpcjxTVkdBbmdsZSwgdW5zaWduZWQ+JiBmcm9tQW5nbGVBbmRFbnVtZXJhdGlvbiA9
IG1fYW5pbWF0aW9uRWxlbWVudC0+YW5pbWF0aW9uTW9kZSgpID09IFRvQW5pbWF0aW9uID8gYW5p
bWF0ZWQtPmFuZ2xlQW5kRW51bWVyYXRpb24oKSA6IGZyb20tPmFuZ2xlQW5kRW51bWVyYXRpb24o
KTsKLSAgICBjb25zdCBzdGQ6OnBhaXI8U1ZHQW5nbGUsIHVuc2lnbmVkPiYgdG9BbmdsZUFuZEVu
dW1lcmF0aW9uID0gdG8tPmFuZ2xlQW5kRW51bWVyYXRpb24oKTsKLSAgICBjb25zdCBzdGQ6OnBh
aXI8U1ZHQW5nbGUsIHVuc2lnbmVkPiYgdG9BdEVuZE9mRHVyYXRpb25BbmdsZUFuZEVudW1lcmF0
aW9uID0gdG9BdEVuZE9mRHVyYXRpb24tPmFuZ2xlQW5kRW51bWVyYXRpb24oKTsKLSAgICBzdGQ6
OnBhaXI8U1ZHQW5nbGUsIHVuc2lnbmVkPiYgYW5pbWF0ZWRBbmdsZUFuZEVudW1lcmF0aW9uID0g
YW5pbWF0ZWQtPmFuZ2xlQW5kRW51bWVyYXRpb24oKTsKKyAgICBjb25zdCBhdXRvJiBmcm9tQW5n
bGVBbmRFbnVtZXJhdGlvbiA9IG1fYW5pbWF0aW9uRWxlbWVudC0+YW5pbWF0aW9uTW9kZSgpID09
IFRvQW5pbWF0aW9uID8gYW5pbWF0ZWQtPmFuZ2xlQW5kRW51bWVyYXRpb24oKSA6IGZyb20tPmFu
Z2xlQW5kRW51bWVyYXRpb24oKTsKKyAgICBhdXRvJiB0b0FuZ2xlQW5kRW51bWVyYXRpb24gPSB0
by0+YW5nbGVBbmRFbnVtZXJhdGlvbigpOworICAgIGF1dG8mIHRvQXRFbmRPZkR1cmF0aW9uQW5n
bGVBbmRFbnVtZXJhdGlvbiA9IHRvQXRFbmRPZkR1cmF0aW9uLT5hbmdsZUFuZEVudW1lcmF0aW9u
KCk7CisgICAgYXV0byYgYW5pbWF0ZWRBbmdsZUFuZEVudW1lcmF0aW9uID0gYW5pbWF0ZWQtPmFu
Z2xlQW5kRW51bWVyYXRpb24oKTsKIAogICAgIGlmIChmcm9tQW5nbGVBbmRFbnVtZXJhdGlvbi5z
ZWNvbmQgIT0gdG9BbmdsZUFuZEVudW1lcmF0aW9uLnNlY29uZCkgewogICAgICAgICAvLyBEaXNj
cmV0ZSBhbmltYXRpb24gLSBubyBsaW5lYXIgaW50ZXJwb2xhdGlvbiBwb3NzaWJsZSBiZXR3ZWVu
IHZhbHVlcyAoZS5nLiBhdXRvIHRvIGFuZ2xlKS4KQEAgLTExNyw4ICsxMTcsOCBAQCB2b2lkIFNW
R0FuaW1hdGVkQW5nbGVBbmltYXRvcjo6Y2FsY3VsYXRlCiAgICAgICAgIC8vIFJlZ3VsYXIgZnJv
bSBhbmdsZSB0byBhbmdsZSBhbmltYXRpb24sIHdpdGggc3VwcG9ydCBmb3Igc21vb3RoIGludGVy
cG9sYXRpb24sIGFuZCBhZGRpdGl2ZSBhbmQgYWNjdW11bGF0ZWQgYW5pbWF0aW9uLgogICAgICAg
ICBhbmltYXRlZEFuZ2xlQW5kRW51bWVyYXRpb24uc2Vjb25kID0gU1ZHTWFya2VyT3JpZW50QW5n
bGU7CiAKLSAgICAgICAgU1ZHQW5nbGUmIGFuaW1hdGVkU1ZHQW5nbGUgPSBhbmltYXRlZEFuZ2xl
QW5kRW51bWVyYXRpb24uZmlyc3Q7Ci0gICAgICAgIGNvbnN0IFNWR0FuZ2xlJiB0b0F0RW5kT2ZE
dXJhdGlvblNWR0FuZ2xlID0gdG9BdEVuZE9mRHVyYXRpb25BbmdsZUFuZEVudW1lcmF0aW9uLmZp
cnN0OworICAgICAgICBhdXRvJiBhbmltYXRlZFNWR0FuZ2xlID0gYW5pbWF0ZWRBbmdsZUFuZEVu
dW1lcmF0aW9uLmZpcnN0OworICAgICAgICBjb25zdCBhdXRvJiB0b0F0RW5kT2ZEdXJhdGlvblNW
R0FuZ2xlID0gdG9BdEVuZE9mRHVyYXRpb25BbmdsZUFuZEVudW1lcmF0aW9uLmZpcnN0OwogICAg
ICAgICBmbG9hdCBhbmltYXRlZEFuZ2xlID0gYW5pbWF0ZWRTVkdBbmdsZS52YWx1ZSgpOwogICAg
ICAgICBtX2FuaW1hdGlvbkVsZW1lbnQtPmFuaW1hdGVBZGRpdGl2ZU51bWJlcihwZXJjZW50YWdl
LCByZXBlYXRDb3VudCwgZnJvbUFuZ2xlQW5kRW51bWVyYXRpb24uZmlyc3QudmFsdWUoKSwgdG9B
bmdsZUFuZEVudW1lcmF0aW9uLmZpcnN0LnZhbHVlKCksIHRvQXRFbmRPZkR1cmF0aW9uU1ZHQW5n
bGUudmFsdWUoKSwgYW5pbWF0ZWRBbmdsZSk7CiAgICAgICAgIGFuaW1hdGVkU1ZHQW5nbGUuc2V0
VmFsdWUoYW5pbWF0ZWRBbmdsZSk7CkBAIC0xMzYsOSArMTM2LDkgQEAgdm9pZCBTVkdBbmltYXRl
ZEFuZ2xlQW5pbWF0b3I6OmNhbGN1bGF0ZQogCiBmbG9hdCBTVkdBbmltYXRlZEFuZ2xlQW5pbWF0
b3I6OmNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3Ry
aW5nJiB0b1N0cmluZykKIHsKLSAgICBTVkdBbmdsZSBmcm9tID0gU1ZHQW5nbGUoKTsKKyAgICBh
dXRvIGZyb20gPSBTVkdBbmdsZVZhbHVlKCk7CiAgICAgZnJvbS5zZXRWYWx1ZUFzU3RyaW5nKGZy
b21TdHJpbmcpOwotICAgIFNWR0FuZ2xlIHRvID0gU1ZHQW5nbGUoKTsKKyAgICBhdXRvIHRvID0g
U1ZHQW5nbGVWYWx1ZSgpOwogICAgIHRvLnNldFZhbHVlQXNTdHJpbmcodG9TdHJpbmcpOwogICAg
IHJldHVybiBmYWJzZih0by52YWx1ZSgpIC0gZnJvbS52YWx1ZSgpKTsKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEFuZ2xlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVkQW5nbGUuaAkocmV2aXNpb24gMjA4NDIyKQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQW5nbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTEg
KzI2LDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdHlwZWRlZiBTVkdBbmltYXRlZFBy
b3BlcnR5VGVhck9mZjxTVkdBbmdsZT4gU1ZHQW5pbWF0ZWRBbmdsZTsKK3VzaW5nIFNWR0FuaW1h
dGVkQW5nbGUgPSBTVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZjxTVkdBbmdsZT47CiAKIC8vIEhl
bHBlciBtYWNyb3MgdG8gZGVjbGFyZS9kZWZpbmUgYSBTVkdBbmltYXRlZEFuZ2xlIG9iamVjdC4g
U1ZHQW5pbWF0ZWRBbmdsZSBpcyBvbmx5IHVzZWQgaW4gdGhlIFNWRyBET00gZm9yIFNWR01hcmtl
ckVsZW1lbnQuCiAjZGVmaW5lIERFQ0xBUkVfQU5JTUFURURfQU5HTEUoVXBwZXJQcm9wZXJ0eSwg
TG93ZXJQcm9wZXJ0eSkgXAotREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdBbmltYXRlZEFu
Z2xlLCBTVkdBbmdsZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSwgKQorREVDTEFSRV9B
TklNQVRFRF9QUk9QRVJUWShTVkdBbmltYXRlZEFuZ2xlLCBTVkdBbmdsZVZhbHVlLCBVcHBlclBy
b3BlcnR5LCBMb3dlclByb3BlcnR5LCApCiAKIC8vIE9ubHkgdXNlZCBmb3IgU1ZHTWFya2VyRWxl
bWVudHMgb3JpZW50QXR0ciwgd2hpY2ggbWFwcyB0byBTVkdBbmltYXRlZEFuZ2xlIG9yaWVudEFu
Z2xlIGFuZCBTVkdBbmltYXRlZEVudW1lcmF0aW9uIG9yaWVudFR5cGUuCiAjZGVmaW5lIERFRklO
RV9BTklNQVRFRF9BTkdMRV9BTkRfRU5VTUVSQVRJT04oT3duZXJUeXBlLCBET01BdHRyaWJ1dGUs
IFNWR0RPTUF0dHJpYnV0ZUlkZW50aWZpZXIsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkp
IFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aC5oCShyZXZpc2lvbiAy
MDg0MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGguaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsNyArMjYsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXR5cGVk
ZWYgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmY8U1ZHTGVuZ3RoPiBTVkdBbmltYXRlZExlbmd0
aDsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFNWR1Byb3BlcnR5VGVhck9mZjsKKwordXNp
bmcgU1ZHQW5pbWF0ZWRMZW5ndGggPSBTVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZjxTVkdQcm9w
ZXJ0eVRlYXJPZmY8U1ZHTGVuZ3RoPj47CiAKIC8vIEhlbHBlciBtYWNyb3MgdG8gZGVjbGFyZS9k
ZWZpbmUgYSBTVkdBbmltYXRlZExlbmd0aCBvYmplY3QKICNkZWZpbmUgREVDTEFSRV9BTklNQVRF
RF9MRU5HVEgoVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXApJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpby5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8uaAkocmV2
aXNpb24gMjA4NDIyKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUHJlc2VydmVB
c3BlY3RSYXRpby5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw5IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotdHlwZWRlZiBTVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZjxTVkdQcmVz
ZXJ2ZUFzcGVjdFJhdGlvPiBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW87Cit0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBjbGFzcyBTVkdQcm9wZXJ0eVRlYXJPZmY7CisKK3VzaW5nIFNWR0FuaW1h
dGVkUHJlc2VydmVBc3BlY3RSYXRpbyA9IFNWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmPFNWR1By
b3BlcnR5VGVhck9mZjxTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvPj47CiAKIC8vIEhlbHBlciBtYWNy
b3MgdG8gZGVjbGFyZS9kZWZpbmUgYSBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8gb2Jq
ZWN0CiAjZGVmaW5lIERFQ0xBUkVfQU5JTUFURURfUFJFU0VSVkVBU1BFQ1RSQVRJTyhVcHBlclBy
b3BlcnR5LCBMb3dlclByb3BlcnR5KSBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZWRSZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVk
UmVjdC5oCShyZXZpc2lvbiAyMDg0MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWRSZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDkgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi10eXBlZGVmIFNWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmPEZsb2F0UmVjdD4g
U1ZHQW5pbWF0ZWRSZWN0OwordGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgU1ZHUHJvcGVydHlU
ZWFyT2ZmOworCit1c2luZyBTVkdBbmltYXRlZFJlY3QgPSBTVkdBbmltYXRlZFByb3BlcnR5VGVh
ck9mZjxTVkdQcm9wZXJ0eVRlYXJPZmY8RmxvYXRSZWN0Pj47CiAKIC8vIEhlbHBlciBtYWNyb3Mg
dG8gZGVjbGFyZS9kZWZpbmUgYSBTVkdBbmltYXRlZFJlY3Qgb2JqZWN0CiAjZGVmaW5lIERFQ0xB
UkVfQU5JTUFURURfUkVDVChVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KSBcCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmNwcAkocmV2aXNpb24gMjA4NDIyKQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTkwLDcgKzkwLDcgQEAgU1ZHQW5pbWF0ZWRUeXBlOjp+U1ZHQW5pbWF0ZWRUeXBlKCkKICAgICB9
CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkVHlwZTo6
Y3JlYXRlQW5nbGVBbmRFbnVtZXJhdGlvbihzdGQ6OnVuaXF1ZV9wdHI8c3RkOjpwYWlyPFNWR0Fu
Z2xlLCB1bnNpZ25lZD4+IGFuZ2xlQW5kRW51bWVyYXRpb24pCitzdGQ6OnVuaXF1ZV9wdHI8U1ZH
QW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZUFuZ2xlQW5kRW51bWVyYXRpb24o
c3RkOjp1bmlxdWVfcHRyPHN0ZDo6cGFpcjxTVkdBbmdsZVZhbHVlLCB1bnNpZ25lZD4+IGFuZ2xl
QW5kRW51bWVyYXRpb24pCiB7CiAgICAgQVNTRVJUKGFuZ2xlQW5kRW51bWVyYXRpb24pOwogICAg
IGF1dG8gYW5pbWF0ZWRUeXBlID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdBbmltYXRlZFR5cGU+KEFu
aW1hdGVkQW5nbGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuaAkocmV2
aXNpb24gMjA4NDIyKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yMSw3ICsyMSw3IEBACiAjZGVmaW5lIFNWR0FuaW1hdGVkVHlwZV9o
CiAKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKLSNpbmNsdWRlICJTVkdBbmdsZS5oIgorI2luY2x1
ZGUgIlNWR0FuZ2xlVmFsdWUuaCIKICNpbmNsdWRlICJTVkdDb2xvci5oIgogI2luY2x1ZGUgIlNW
R0xlbmd0aC5oIgogI2luY2x1ZGUgIlNWR0xlbmd0aExpc3QuaCIKQEAgLTQxLDcgKzQxLDcgQEAg
cHVibGljOgogICAgIFNWR0FuaW1hdGVkVHlwZShBbmltYXRlZFByb3BlcnR5VHlwZSk7CiAgICAg
dmlydHVhbCB+U1ZHQW5pbWF0ZWRUeXBlKCk7CiAKLSAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlQW5nbGVBbmRFbnVtZXJhdGlvbihzdGQ6OnVuaXF1ZV9w
dHI8c3RkOjpwYWlyPFNWR0FuZ2xlLCB1bnNpZ25lZD4+KTsKKyAgICBzdGF0aWMgc3RkOjp1bmlx
dWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlQW5nbGVBbmRFbnVtZXJhdGlvbihzdGQ6OnVu
aXF1ZV9wdHI8c3RkOjpwYWlyPFNWR0FuZ2xlVmFsdWUsIHVuc2lnbmVkPj4pOwogICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVCb29sZWFuKHN0ZDo6dW5p
cXVlX3B0cjxib29sPik7CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5
cGU+IGNyZWF0ZUNvbG9yKHN0ZDo6dW5pcXVlX3B0cjxDb2xvcj4pOwogICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVFbnVtZXJhdGlvbihzdGQ6OnVuaXF1
ZV9wdHI8dW5zaWduZWQ+KTsKQEAgLTYzLDcgKzYzLDcgQEAgcHVibGljOgogICAgIEFuaW1hdGVk
UHJvcGVydHlUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KIAogICAgIC8vIE5v
bi1tdXRhYmxlIGFjY2Vzc29ycy4KLSAgICBjb25zdCBzdGQ6OnBhaXI8U1ZHQW5nbGUsIHVuc2ln
bmVkPiYgYW5nbGVBbmRFbnVtZXJhdGlvbigpIGNvbnN0CisgICAgY29uc3Qgc3RkOjpwYWlyPFNW
R0FuZ2xlVmFsdWUsIHVuc2lnbmVkPiYgYW5nbGVBbmRFbnVtZXJhdGlvbigpIGNvbnN0CiAgICAg
ewogICAgICAgICBBU1NFUlQobV90eXBlID09IEFuaW1hdGVkQW5nbGUpOwogICAgICAgICByZXR1
cm4gKm1fZGF0YS5hbmdsZUFuZEVudW1lcmF0aW9uOwpAQCAtMTY2LDcgKzE2Niw3IEBAIHB1Ymxp
YzoKICAgICB9CiAKICAgICAvLyBNdXRhYmxlIGFjY2Vzc29ycy4KLSAgICBzdGQ6OnBhaXI8U1ZH
QW5nbGUsIHVuc2lnbmVkPiYgYW5nbGVBbmRFbnVtZXJhdGlvbigpCisgICAgc3RkOjpwYWlyPFNW
R0FuZ2xlVmFsdWUsIHVuc2lnbmVkPiYgYW5nbGVBbmRFbnVtZXJhdGlvbigpCiAgICAgewogICAg
ICAgICBBU1NFUlQobV90eXBlID09IEFuaW1hdGVkQW5nbGUpOwogICAgICAgICByZXR1cm4gKm1f
ZGF0YS5hbmdsZUFuZEVudW1lcmF0aW9uOwpAQCAtMjgwLDcgKzI4MCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIHN0ZDo6cGFpcjxTVkdBbmdsZSwgdW5zaWdu
ZWQ+KiBhbmdsZUFuZEVudW1lcmF0aW9uOworICAgICAgICBzdGQ6OnBhaXI8U1ZHQW5nbGVWYWx1
ZSwgdW5zaWduZWQ+KiBhbmdsZUFuZEVudW1lcmF0aW9uOwogICAgICAgICBib29sKiBib29sZWFu
OwogICAgICAgICBDb2xvciogY29sb3I7CiAgICAgICAgIHVuc2lnbmVkKiBlbnVtZXJhdGlvbjsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFu
c2ZlckZ1bmN0aW9uRWxlbWVudC5oCShyZXZpc2lvbiAyMDg0MjIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIlNWR0FuaW1hdGVkRW51bWVyYXRpb24uaCIK
ICNpbmNsdWRlICJTVkdBbmltYXRlZE51bWJlci5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkTnVt
YmVyTGlzdC5oIgorI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoTGlzdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhMaXN0LmgJKHJldmlzaW9uIDIwODQyMikK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMZW5ndGhMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTI1LDYgKzI1LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBjbGFzcyBTVkdQcm9wZXJ0eVRlYXJPZmY7CisKIGNsYXNzIFNWR0xlbmd0aExpc3QgZmlu
YWwgOiBwdWJsaWMgVmVjdG9yPFNWR0xlbmd0aD4gewogcHVibGljOgogICAgIHZvaWQgcGFyc2Uo
Y29uc3QgU3RyaW5nJiB2YWx1ZSwgU1ZHTGVuZ3RoTW9kZSk7CkBAIC0zMiw3ICszNCw4IEBAIHB1
YmxpYzoKIH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPFNWR0xlbmd0
aExpc3Q+IHsKLSAgICB0eXBlZGVmIFNWR0xlbmd0aCBMaXN0SXRlbVR5cGU7CisgICAgdXNpbmcg
TGlzdEl0ZW1UeXBlID0gU1ZHTGVuZ3RoOworICAgIHVzaW5nIExpc3RJdGVtVGVhck9mZiA9IFNW
R1Byb3BlcnR5VGVhck9mZjxTVkdMZW5ndGg+OwogCiAgICAgc3RhdGljIFNWR0xlbmd0aExpc3Qg
aW5pdGlhbFZhbHVlKCkgeyByZXR1cm4gU1ZHTGVuZ3RoTGlzdCgpOyB9CiAgICAgc3RhdGljIFN0
cmluZyB0b1N0cmluZyhjb25zdCBTVkdMZW5ndGhMaXN0JiB0eXBlKSB7IHJldHVybiB0eXBlLnZh
bHVlQXNTdHJpbmcoKTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50
LmNwcAkocmV2aXNpb24gMjA4NDIyKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBTVkdNYXJr
ZXJFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjbwogICAgIH0KIAogICAgIGlmIChuYW1lID09IFNW
R05hbWVzOjpvcmllbnRBdHRyKSB7Ci0gICAgICAgIFNWR0FuZ2xlIGFuZ2xlOworICAgICAgICBT
VkdBbmdsZVZhbHVlIGFuZ2xlOwogICAgICAgICBhdXRvIG9yaWVudFR5cGUgPSBTVkdQcm9wZXJ0
eVRyYWl0czxTVkdNYXJrZXJPcmllbnRUeXBlPjo6ZnJvbVN0cmluZyh2YWx1ZSwgYW5nbGUpOwog
ICAgICAgICBpZiAob3JpZW50VHlwZSA+IDApCiAgICAgICAgICAgICBzZXRPcmllbnRUeXBlQmFz
ZVZhbHVlKG9yaWVudFR5cGUpOwpAQCAtMTg5LDcgKzE4OSw3IEBAIHZvaWQgU1ZHTWFya2VyRWxl
bWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGMKICAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xheW91dCgp
OwogfQogCi12b2lkIFNWR01hcmtlckVsZW1lbnQ6OnNldE9yaWVudChTVkdNYXJrZXJPcmllbnRU
eXBlIG9yaWVudFR5cGUsIGNvbnN0IFNWR0FuZ2xlJiBhbmdsZSkKK3ZvaWQgU1ZHTWFya2VyRWxl
bWVudDo6c2V0T3JpZW50KFNWR01hcmtlck9yaWVudFR5cGUgb3JpZW50VHlwZSwgY29uc3QgU1ZH
QW5nbGVWYWx1ZSYgYW5nbGUpCiB7CiAgICAgc2V0T3JpZW50VHlwZUJhc2VWYWx1ZShvcmllbnRU
eXBlKTsKICAgICBzZXRPcmllbnRBbmdsZUJhc2VWYWx1ZShhbmdsZSk7CkBAIC0yMDYsOSArMjA2
LDkgQEAgdm9pZCBTVkdNYXJrZXJFbGVtZW50OjpzZXRPcmllbnRUb0F1dG8oKQogICAgIHNldE9y
aWVudChTVkdNYXJrZXJPcmllbnRBdXRvLCB7IH0pOwogfQogCi12b2lkIFNWR01hcmtlckVsZW1l
bnQ6OnNldE9yaWVudFRvQW5nbGUoY29uc3QgU1ZHQW5nbGUmIGFuZ2xlKQordm9pZCBTVkdNYXJr
ZXJFbGVtZW50OjpzZXRPcmllbnRUb0FuZ2xlKFNWR0FuZ2xlJiBhbmdsZSkKIHsKLSAgICBzZXRP
cmllbnQoU1ZHTWFya2VyT3JpZW50QW5nbGUsIGFuZ2xlKTsKKyAgICBzZXRPcmllbnQoU1ZHTWFy
a2VyT3JpZW50QW5nbGUsIGFuZ2xlLnByb3BlcnR5UmVmZXJlbmNlKCkpOwogfQogCiBSZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gU1ZHTWFya2VyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVy
KFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmgJKHJldmlzaW9uIDIwODQyMikKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTg2
LDcgKzg2LDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U1ZHTQogCiAg
ICAgLy8gdG9TdHJpbmcgaXMgbm90IG5lZWRlZCwgc3luY2hyb25pemVPcmllbnRUeXBlKCkgaGFu
ZGxlcyB0aGlzIG9uIGl0cyBvd24uCiAKLSAgICBzdGF0aWMgU1ZHTWFya2VyT3JpZW50VHlwZSBm
cm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUsIFNWR0FuZ2xlJiBhbmdsZSkKKyAgICBzdGF0
aWMgU1ZHTWFya2VyT3JpZW50VHlwZSBmcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUsIFNW
R0FuZ2xlVmFsdWUmIGFuZ2xlKQogICAgIHsKICAgICAgICAgaWYgKHZhbHVlID09ICJhdXRvIikK
ICAgICAgICAgICAgIHJldHVybiBTVkdNYXJrZXJPcmllbnRBdXRvOwpAQCAtMTIyLDcgKzEyMiw3
IEBAIHB1YmxpYzoKICAgICBBZmZpbmVUcmFuc2Zvcm0gdmlld0JveFRvVmlld1RyYW5zZm9ybShm
bG9hdCB2aWV3V2lkdGgsIGZsb2F0IHZpZXdIZWlnaHQpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRP
cmllbnRUb0F1dG8oKTsKLSAgICB2b2lkIHNldE9yaWVudFRvQW5nbGUoY29uc3QgU1ZHQW5nbGUm
KTsKKyAgICB2b2lkIHNldE9yaWVudFRvQW5nbGUoU1ZHQW5nbGUmKTsKIAogICAgIHN0YXRpYyBj
b25zdCBTVkdQcm9wZXJ0eUluZm8qIG9yaWVudFR5cGVQcm9wZXJ0eUluZm8oKTsKIApAQCAtMTQx
LDcgKzE0MSw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMo
KSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZvaWQgc2V0T3JpZW50KFNWR01hcmtlck9yaWVudFR5
cGUsIGNvbnN0IFNWR0FuZ2xlJik7CisgICAgdm9pZCBzZXRPcmllbnQoU1ZHTWFya2VyT3JpZW50
VHlwZSwgY29uc3QgU1ZHQW5nbGVWYWx1ZSYpOwogCiAgICAgdm9pZCBzeW5jaHJvbml6ZU9yaWVu
dFR5cGUoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR051bWJlckxpc3QuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTnVtYmVyTGlzdC5oCShyZXZpc2lvbiAy
MDg0MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTnVtYmVyTGlzdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNSw2ICsyNSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordGVtcGxhdGU8
dHlwZW5hbWUgVD4gY2xhc3MgU1ZHUHJvcGVydHlUZWFyT2ZmOworCiBjbGFzcyBTVkdOdW1iZXJM
aXN0IGZpbmFsIDogcHVibGljIFZlY3RvcjxmbG9hdD4gewogcHVibGljOgogICAgIHZvaWQgcGFy
c2UoY29uc3QgU3RyaW5nJik7CkBAIC0zMiwxMCArMzQsMTEgQEAgcHVibGljOgogfTsKIAogdGVt
cGxhdGU8PiBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U1ZHTnVtYmVyTGlzdD4gewotICAgIHR5
cGVkZWYgZmxvYXQgTGlzdEl0ZW1UeXBlOwotCiAgICAgc3RhdGljIFNWR051bWJlckxpc3QgaW5p
dGlhbFZhbHVlKCkgeyByZXR1cm4gU1ZHTnVtYmVyTGlzdCgpOyB9CiAgICAgc3RhdGljIFN0cmlu
ZyB0b1N0cmluZyhjb25zdCBTVkdOdW1iZXJMaXN0JiB0eXBlKSB7IHJldHVybiB0eXBlLnZhbHVl
QXNTdHJpbmcoKTsgfQorCisgICAgdXNpbmcgTGlzdEl0ZW1UeXBlID0gZmxvYXQ7CisgICAgdXNp
bmcgTGlzdEl0ZW1UZWFyT2ZmID0gU1ZHUHJvcGVydHlUZWFyT2ZmPGZsb2F0PjsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2Vn
TGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdC5o
CShyZXZpc2lvbiAyMDg0MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3Qu
aAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBTVkdFbGVtZW50OwordGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgU1ZHUHJvcGVy
dHlUZWFyT2ZmOwogCiBjbGFzcyBTVkdQYXRoU2VnTGlzdCA6IHB1YmxpYyBWZWN0b3I8UmVmUHRy
PFNWR1BhdGhTZWc+PiB7CiBwdWJsaWM6CkBAIC00Nyw3ICs0OCw5IEBAIHByaXZhdGU6CiAKIHRl
bXBsYXRlPD4gc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPFNWR1BhdGhTZWdMaXN0PiB7CiAgICAg
c3RhdGljIFNWR1BhdGhTZWdMaXN0IGluaXRpYWxWYWx1ZSgpIHsgcmV0dXJuIFNWR1BhdGhTZWdM
aXN0KFBhdGhTZWdVbmRlZmluZWRSb2xlKTsgfQotICAgIHR5cGVkZWYgUmVmUHRyPFNWR1BhdGhT
ZWc+IExpc3RJdGVtVHlwZTsKKworICAgIHVzaW5nIExpc3RJdGVtVHlwZSA9IFJlZlB0cjxTVkdQ
YXRoU2VnPjsKKyAgICB1c2luZyBMaXN0SXRlbVRlYXJPZmYgPSBTVkdQcm9wZXJ0eVRlYXJPZmY8
UmVmUHRyPFNWR1BhdGhTZWc+PjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2ludExpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHUG9pbnRMaXN0LmgJKHJldmlzaW9uIDIwODQyMikKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdQb2ludExpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsOCBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIFNW
R1Byb3BlcnR5VGVhck9mZjsKKwogY2xhc3MgU1ZHUG9pbnRMaXN0IGZpbmFsIDogcHVibGljIFZl
Y3RvcjxTVkdQb2ludD4gewogcHVibGljOgogICAgIFN0cmluZyB2YWx1ZUFzU3RyaW5nKCkgY29u
c3Q7CkBAIC0zMyw3ICszNSw5IEBAIHB1YmxpYzoKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgU1ZHUHJv
cGVydHlUcmFpdHM8U1ZHUG9pbnRMaXN0PiB7CiAgICAgc3RhdGljIFNWR1BvaW50TGlzdCBpbml0
aWFsVmFsdWUoKSB7IHJldHVybiBTVkdQb2ludExpc3QoKTsgfQotICAgIHR5cGVkZWYgU1ZHUG9p
bnQgTGlzdEl0ZW1UeXBlOworCisgICAgdXNpbmcgTGlzdEl0ZW1UeXBlID0gU1ZHUG9pbnQ7Cisg
ICAgdXNpbmcgTGlzdEl0ZW1UZWFyT2ZmID0gU1ZHUHJvcGVydHlUZWFyT2ZmPFNWR1BvaW50PjsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdTVkdFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZH
RWxlbWVudC5jcHAJKHJldmlzaW9uIDIwODQyMikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdT
VkdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUg
IlJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgog
I2luY2x1ZGUgIlNNSUxUaW1lQ29udGFpbmVyLmgiCisjaW5jbHVkZSAiU1ZHQW5nbGUuaCIKICNp
bmNsdWRlICJTVkdWaWV3RWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR1ZpZXdTcGVjLmgiCiAjaW5j
bHVkZSAiU3RhdGljTm9kZUxpc3QuaCIKQEAgLTM1MCw5ICszNTEsOSBAQCBTVkdMZW5ndGggU1ZH
U1ZHRWxlbWVudDo6Y3JlYXRlU1ZHTGVuZ3RoCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotU1ZHQW5n
bGUgU1ZHU1ZHRWxlbWVudDo6Y3JlYXRlU1ZHQW5nbGUoKQorUmVmPFNWR0FuZ2xlPiBTVkdTVkdF
bGVtZW50OjpjcmVhdGVTVkdBbmdsZSgpCiB7Ci0gICAgcmV0dXJuIHsgfTsKKyAgICByZXR1cm4g
U1ZHQW5nbGU6OmNyZWF0ZSgpOwogfQogCiBTVkdQb2ludCBTVkdTVkdFbGVtZW50OjpjcmVhdGVT
VkdQb2ludCgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmgJKHJldmlzaW9uIDIw
ODQyMikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMzLDYgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTVkdB
bmdsZTsKIGNsYXNzIFNWR1ZpZXdTcGVjOwogY2xhc3MgU01JTFRpbWVDb250YWluZXI7CiAKQEAg
LTkwLDcgKzkxLDcgQEAgcHVibGljOiAvLyBET00KIAogICAgIHN0YXRpYyBmbG9hdCBjcmVhdGVT
VkdOdW1iZXIoKTsKICAgICBzdGF0aWMgU1ZHTGVuZ3RoIGNyZWF0ZVNWR0xlbmd0aCgpOwotICAg
IHN0YXRpYyBTVkdBbmdsZSBjcmVhdGVTVkdBbmdsZSgpOworICAgIHN0YXRpYyBSZWY8U1ZHQW5n
bGU+IGNyZWF0ZVNWR0FuZ2xlKCk7CiAgICAgc3RhdGljIFNWR1BvaW50IGNyZWF0ZVNWR1BvaW50
KCk7CiAgICAgc3RhdGljIFNWR01hdHJpeCBjcmVhdGVTVkdNYXRyaXgoKTsKICAgICBzdGF0aWMg
RmxvYXRSZWN0IGNyZWF0ZVNWR1JlY3QoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdT
VkdFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxl
bWVudC5pZGwJKHJldmlzaW9uIDIwODQyMikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdF
bGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQCBpbnRlcmZhY2UgU1ZH
U1ZHRWxlbWVudCA6IFNWR0dyYXBoaWNzRWxlCiAKICAgICBTVkdOdW1iZXIgY3JlYXRlU1ZHTnVt
YmVyKCk7CiAgICAgU1ZHTGVuZ3RoIGNyZWF0ZVNWR0xlbmd0aCgpOwotICAgIFNWR0FuZ2xlIGNy
ZWF0ZVNWR0FuZ2xlKCk7CisgICAgW05ld09iamVjdF0gU1ZHQW5nbGUgY3JlYXRlU1ZHQW5nbGUo
KTsKICAgICBTVkdQb2ludCBjcmVhdGVTVkdQb2ludCgpOwogICAgIFNWR01hdHJpeCBjcmVhdGVT
VkdNYXRyaXgoKTsKICAgICBTVkdSZWN0IGNyZWF0ZVNWR1JlY3QoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdTdHJpbmdMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1N0cmluZ0xpc3QuaAkocmV2aXNpb24gMjA4NDIyKQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1N0cmluZ0xpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTVkdFbGVtZW50OwordGVtcGxhdGU8dHlwZW5hbWUg
VD4gY2xhc3MgU1ZHUHJvcGVydHlUZWFyT2ZmOwogCiBjbGFzcyBTVkdTdHJpbmdMaXN0IGZpbmFs
IDogcHVibGljIFZlY3RvcjxTdHJpbmc+IHsKIHB1YmxpYzoKQEAgLTQ4LDcgKzQ5LDggQEAgcHJp
dmF0ZToKIH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPFNWR1N0cmlu
Z0xpc3Q+IHsKLSAgICB0eXBlZGVmIFN0cmluZyBMaXN0SXRlbVR5cGU7CisgICAgdXNpbmcgTGlz
dEl0ZW1UeXBlID0gU3RyaW5nOworICAgIHVzaW5nIExpc3RJdGVtVGVhck9mZiA9IFNWR1Byb3Bl
cnR5VGVhck9mZjxTdHJpbmc+OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybS5jcHAJKHJldmlzaW9uIDIwODQyMikKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsy
NCw2IEBACiAjaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAiRmxvYXRQb2lu
dC5oIgogI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgotI2luY2x1ZGUgIlNWR0FuZ2xlLmgiCiAjaW5j
bHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVHJhbnNmb3JtTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdUcmFuc2Zvcm1MaXN0LmgJKHJldmlzaW9uIDIwODQyMikKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdUcmFuc2Zvcm1MaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDggQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBjbGFzcyBTVkdQ
cm9wZXJ0eVRlYXJPZmY7CisKIGNsYXNzIFNWR1RyYW5zZm9ybUxpc3QgZmluYWwgOiBwdWJsaWMg
VmVjdG9yPFNWR1RyYW5zZm9ybSwgMT4gewogcHVibGljOgogICAgIFNWR1RyYW5zZm9ybSBjcmVh
dGVTVkdUcmFuc2Zvcm1Gcm9tTWF0cml4KGNvbnN0IFNWR01hdHJpeCYpIGNvbnN0OwpAQCAtNDAs
NyArNDIsOSBAQCBwdWJsaWM6CiB0ZW1wbGF0ZTw+IHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxT
VkdUcmFuc2Zvcm1MaXN0PiB7CiAgICAgc3RhdGljIFNWR1RyYW5zZm9ybUxpc3QgaW5pdGlhbFZh
bHVlKCkgeyByZXR1cm4gU1ZHVHJhbnNmb3JtTGlzdCgpOyB9CiAgICAgc3RhdGljIFN0cmluZyB0
b1N0cmluZyhjb25zdCBTVkdUcmFuc2Zvcm1MaXN0JiB0eXBlKSB7IHJldHVybiB0eXBlLnZhbHVl
QXNTdHJpbmcoKTsgfQotICAgIHR5cGVkZWYgU1ZHVHJhbnNmb3JtIExpc3RJdGVtVHlwZTsKKwor
ICAgIHVzaW5nIExpc3RJdGVtVHlwZSA9IFNWR1RyYW5zZm9ybTsKKyAgICB1c2luZyBMaXN0SXRl
bVRlYXJPZmYgPSBTVkdQcm9wZXJ0eVRlYXJPZmY8U1ZHVHJhbnNmb3JtPjsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3U3BlYy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdTcGVjLmNwcAkocmV2
aXNpb24gMjA4NDIyKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdTcGVjLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjIsNiArMjIsNyBAQAogCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNp
bmNsdWRlICJTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QuaCIKKyNpbmNsdWRlICJTVkdFbGVtZW50
LmgiCiAjaW5jbHVkZSAiU1ZHRml0VG9WaWV3Qm94LmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIK
ICNpbmNsdWRlICJTVkdQYXJzZXJVdGlsaXRpZXMuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmYu
aAkocmV2aXNpb24gMjA4NDIyKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
QW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmYuaAkod29ya2luZyBjb3B5KQpAQCAtMTgsMTkgKzE4LDE5
IEBACiAgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KICAqLwogCi0jaWZuZGVmIFNWR0Fu
aW1hdGVkUHJvcGVydHlUZWFyT2ZmX2gKLSNkZWZpbmUgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJP
ZmZfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJTVkdBbmltYXRlZFByb3BlcnR5LmgiCiAj
aW5jbHVkZSAiU1ZHUHJvcGVydHlUZWFyT2ZmLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
dGVtcGxhdGU8dHlwZW5hbWUgUHJvcGVydHlUeXBlPgordGVtcGxhdGU8dHlwZW5hbWUgVD4KIGNs
YXNzIFNWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVk
UHJvcGVydHkgewogcHVibGljOgotICAgIHR5cGVkZWYgU1ZHUHJvcGVydHlUZWFyT2ZmPFByb3Bl
cnR5VHlwZT4gUHJvcGVydHlUZWFyT2ZmOwotICAgIHR5cGVkZWYgUHJvcGVydHlUeXBlIENvbnRl
bnRUeXBlOworICAgIHVzaW5nIFByb3BlcnR5VGVhck9mZiA9IFQ7CisgICAgdXNpbmcgUHJvcGVy
dHlUeXBlID0gdHlwZW5hbWUgUHJvcGVydHlUZWFyT2ZmOjpQcm9wZXJ0eVR5cGU7CisgICAgdXNp
bmcgQ29udGVudFR5cGUgPSBQcm9wZXJ0eVR5cGU7CiAKICAgICBSZWZQdHI8UHJvcGVydHlUZWFy
T2ZmPiBiYXNlVmFsKCkKICAgICB7CkBAIC02MiwxMCArNjIsMTAgQEAgcHVibGljOgogICAgICAg
ICAgICAgbV9hbmltVmFsID0gbnVsbHB0cjsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmPFNWR0Fu
aW1hdGVkUHJvcGVydHlUZWFyT2ZmPFByb3BlcnR5VHlwZT4+IGNyZWF0ZShTVkdFbGVtZW50KiBj
b250ZXh0RWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgQW5pbWF0
ZWRQcm9wZXJ0eVR5cGUgYW5pbWF0ZWRQcm9wZXJ0eVR5cGUsIFByb3BlcnR5VHlwZSYgcHJvcGVy
dHkpCisgICAgc3RhdGljIFJlZjxTVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZjxQcm9wZXJ0eVRl
YXJPZmY+PiBjcmVhdGUoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQsIGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIEFuaW1hdGVkUHJvcGVydHlUeXBlIGFuaW1hdGVkUHJvcGVy
dHlUeXBlLCBQcm9wZXJ0eVR5cGUmIHByb3BlcnR5KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNv
bnRleHRFbGVtZW50KTsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eVRlYXJPZmY8UHJvcGVydHlUeXBlPihjb250ZXh0RWxlbWVudCwgYXR0cmlidXRlTmFt
ZSwgYW5pbWF0ZWRQcm9wZXJ0eVR5cGUsIHByb3BlcnR5KSk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFNWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmPFByb3BlcnR5VGVhck9mZj4oY29u
dGV4dEVsZW1lbnQsIGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkUHJvcGVydHlUeXBlLCBwcm9wZXJ0
eSkpOwogICAgIH0KIAogICAgIFByb3BlcnR5VHlwZSYgY3VycmVudEFuaW1hdGVkVmFsdWUoKQpA
QCAtMTIxLDUgKzEyMSwzIEBAIHByaXZhdGU6CiB9OwogCiB9Ci0KLSNlbmRpZiAvLyBTVkdBbmlt
YXRlZFByb3BlcnR5VGVhck9mZl9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGll
cy9TVkdMaXN0UHJvcGVydHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvcHJv
cGVydGllcy9TVkdMaXN0UHJvcGVydHkuaAkocmV2aXNpb24gMjA4NDIyKQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHTGlzdFByb3BlcnR5LmgJKHdvcmtpbmcgY29weSkKQEAg
LTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHR5cGVkZWYgU1ZHTGlzdFByb3BlcnR5PFByb3Bl
cnR5VHlwZT4gU2VsZjsKIAogICAgIHVzaW5nIExpc3RJdGVtVHlwZSA9IHR5cGVuYW1lIFNWR1By
b3BlcnR5VHJhaXRzPFByb3BlcnR5VHlwZT46Okxpc3RJdGVtVHlwZTsKLSAgICB1c2luZyBMaXN0
SXRlbVRlYXJPZmYgPSBTVkdQcm9wZXJ0eVRlYXJPZmY8TGlzdEl0ZW1UeXBlPjsKKyAgICB1c2lu
ZyBMaXN0SXRlbVRlYXJPZmYgPSB0eXBlbmFtZSBTVkdQcm9wZXJ0eVRyYWl0czxQcm9wZXJ0eVR5
cGU+OjpMaXN0SXRlbVRlYXJPZmY7CiAgICAgdXNpbmcgUHRyTGlzdEl0ZW1UZWFyT2ZmID0gUmVm
UHRyPExpc3RJdGVtVGVhck9mZj47CiAgICAgdXNpbmcgQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFy
T2ZmID0gU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmPFByb3BlcnR5VHlwZT47CiAgICAg
dXNpbmcgTGlzdFdyYXBwZXJDYWNoZSA9IHR5cGVuYW1lIEFuaW1hdGVkTGlzdFByb3BlcnR5VGVh
ck9mZjo6TGlzdFdyYXBwZXJDYWNoZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR0xpc3RQcm9wZXJ0eVRlYXJPZmYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvcHJvcGVydGllcy9TVkdMaXN0UHJvcGVydHlUZWFyT2ZmLmgJKHJldmlzaW9uIDIwODQy
MikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0xpc3RQcm9wZXJ0eVRlYXJP
ZmYuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsMTQgKzI2LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIHRlbXBsYXRlPHR5cGVuYW1lIFByb3BlcnR5VHlwZT4KIGNsYXNzIFNWR0xpc3RQcm9wZXJ0
eVRlYXJPZmYgOiBwdWJsaWMgU1ZHTGlzdFByb3BlcnR5PFByb3BlcnR5VHlwZT4gewogcHVibGlj
OgotICAgIHR5cGVkZWYgU1ZHTGlzdFByb3BlcnR5PFByb3BlcnR5VHlwZT4gQmFzZTsKLSAgICB0
eXBlZGVmIFNWR0xpc3RQcm9wZXJ0eVRlYXJPZmY8UHJvcGVydHlUeXBlPiBTZWxmOworICAgIHVz
aW5nIEJhc2UgPSBTVkdMaXN0UHJvcGVydHk8UHJvcGVydHlUeXBlPjsKKyAgICB1c2luZyBTZWxm
ID0gU1ZHTGlzdFByb3BlcnR5VGVhck9mZjxQcm9wZXJ0eVR5cGU+OwogCi0gICAgdHlwZWRlZiB0
eXBlbmFtZSBTVkdQcm9wZXJ0eVRyYWl0czxQcm9wZXJ0eVR5cGU+OjpMaXN0SXRlbVR5cGUgTGlz
dEl0ZW1UeXBlOwotICAgIHR5cGVkZWYgU1ZHUHJvcGVydHlUZWFyT2ZmPExpc3RJdGVtVHlwZT4g
TGlzdEl0ZW1UZWFyT2ZmOwotICAgIHR5cGVkZWYgUmVmUHRyPExpc3RJdGVtVGVhck9mZj4gUHRy
TGlzdEl0ZW1UZWFyT2ZmOwotICAgIHR5cGVkZWYgU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFy
T2ZmPFByb3BlcnR5VHlwZT4gQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmOwotICAgIHR5cGVk
ZWYgdHlwZW5hbWUgU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmPFByb3BlcnR5VHlwZT46
Okxpc3RXcmFwcGVyQ2FjaGUgTGlzdFdyYXBwZXJDYWNoZTsKKyAgICB1c2luZyBMaXN0SXRlbVR5
cGUgPSB0eXBlbmFtZSBTVkdQcm9wZXJ0eVRyYWl0czxQcm9wZXJ0eVR5cGU+OjpMaXN0SXRlbVR5
cGU7CisgICAgdXNpbmcgTGlzdEl0ZW1UZWFyT2ZmID0gdHlwZW5hbWUgU1ZHUHJvcGVydHlUcmFp
dHM8UHJvcGVydHlUeXBlPjo6TGlzdEl0ZW1UZWFyT2ZmOworICAgIHVzaW5nIFB0ckxpc3RJdGVt
VGVhck9mZiA9IFJlZlB0cjxMaXN0SXRlbVRlYXJPZmY+OworICAgIHVzaW5nIEFuaW1hdGVkTGlz
dFByb3BlcnR5VGVhck9mZiA9IFNWR0FuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZjxQcm9wZXJ0
eVR5cGU+OworICAgIHVzaW5nIExpc3RXcmFwcGVyQ2FjaGUgPSB0eXBlbmFtZSBTVkdBbmltYXRl
ZExpc3RQcm9wZXJ0eVRlYXJPZmY8UHJvcGVydHlUeXBlPjo6TGlzdFdyYXBwZXJDYWNoZTsKIAog
ICAgIHVzaW5nIEJhc2U6Om1fcm9sZTsKICAgICB1c2luZyBCYXNlOjptX3ZhbHVlczsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5VGVhck9mZi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5VGVhck9m
Zi5oCShyZXZpc2lvbiAyMDg0MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9T
VkdQcm9wZXJ0eVRlYXJPZmYuaAkod29ya2luZyBjb3B5KQpAQCAtMjAsMjIgKzIwLDI1IEBACiAK
ICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRlICJTVkdB
bmltYXRlZFByb3BlcnR5LmgiCi0jaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgogI2luY2x1ZGUgIlNW
R1Byb3BlcnR5LmgiCiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitjbGFzcyBTVkdFbGVtZW50OworCiBjbGFzcyBTVkdQcm9wZXJ0eVRlYXJPZmZCYXNl
IDogcHVibGljIFNWR1Byb3BlcnR5IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNo
V3JhcHBlcigpID0gMDsKIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFByb3BlcnR5VHlwZT4KK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+CiBjbGFzcyBTVkdQcm9wZXJ0eVRlYXJPZmYgOiBwdWJsaWMgU1ZH
UHJvcGVydHlUZWFyT2ZmQmFzZSB7CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiBTVkdQcm9wZXJ0eVRl
YXJPZmY8UHJvcGVydHlUeXBlPiBTZWxmOworICAgIHVzaW5nIFByb3BlcnR5VHlwZSA9IFQ7Cisg
ICAgdXNpbmcgU2VsZiA9IFNWR1Byb3BlcnR5VGVhck9mZjxQcm9wZXJ0eVR5cGU+OwogCiAgICAg
Ly8gVXNlZCBmb3IgY2hpbGQgdHlwZXMgKGJhc2VWYWwvYW5pbVZhbCkgb2YgYSBTVkdBbmltYXRl
ZCogcHJvcGVydHkgKGZvciBleGFtcGxlOiBTVkdBbmltYXRlZExlbmd0aDo6YmFzZVZhbCgpKS4K
ICAgICAvLyBBbHNvIHVzZWQgZm9yIGxpc3QgdGVhciBvZmZzIChmb3IgZXhhbXBsZTogdGV4dC54
LmJhc2VWYWwuZ2V0SXRlbSgwKSkuCkBAIC01Niw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VsZihpbml0aWFsVmFsdWUpKTsKICAgICB9CiAKLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPFNlbGY+PiBjcmVhdGUo
RXhjZXB0aW9uT3I8VD4mJiBpbml0aWFsVmFsdWUpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4g
c3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxTZWxmPj4gY3JlYXRlKEV4Y2VwdGlvbk9yPFU+JiYgaW5p
dGlhbFZhbHVlKQogICAgIHsKICAgICAgICAgaWYgKGluaXRpYWxWYWx1ZS5oYXNFeGNlcHRpb24o
KSkKICAgICAgICAgICAgIHJldHVybiBpbml0aWFsVmFsdWUucmVsZWFzZUV4Y2VwdGlvbigpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294271</attachid>
            <date>2016-11-09 12:58:02 -0800</date>
            <delta_ts>2016-11-09 13:33:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164496-20161109125351.patch</filename>
            <type>text/plain</type>
            <size>67064</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwODQ1OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNSBAQAorMjAxNi0xMS0wOSAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFtTVkddIFN0YXJ0IG1vdmluZyBzcGVj
aWFsIGNhc2luZyBvZiBTVkcgb3V0IG9mIHRoZSBiaW5kaW5ncyAtIFNWR0FuZ2xlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ0OTYKKworICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBUaGVyZSBpcyBxdWl0ZSBhIGJp
dCBvZiBzcGVjaWFsIGNhc2luZyBvZiBTVkcgdHlwZXMgaW4gdGhlIGJpbmRpbmdzIHRoYXQgYWRk
cworICAgICAgICBhIGxvdCBvZiBjb21wbGV4aXR5IGFuZCBpcyByZWxhdGl2ZWx5IGZyYWdpbGUs
IGFzIGl0IGlzIGJhc2VkIG9uIHR5cGUgbmFtaW5nLgorCisgICAgICAgIEluc3RlYWQgb2Yga2Vl
cGluZyB0aGUgY29tcGxleGl0eSBpbiB0aGUgYmluZGluZ3MsIEkgYW0gZ29pbmcgdG8gbW92ZSBp
dCBpbnRvCisgICAgICAgIHRoZSBpbXBsZW1lbnRhdGlvbiwgd2hlcmUgaXQgaGFzIGFsc28gbG9u
Z2VkIHRvIGJlLiAKKworICAgICAgICBTdGFydGluZyBzbWFsbCwgd2l0aCBqdXN0IFNWR0FuZ2xl
LiBJdCBoYXMgYmVlbiBzcGxpdCBpbiB0d28sIHdpdGggdGhlIGV4aXN0aW5nCisgICAgICAgIFNW
R0FuZ2xlIGJlaW5nIHJlbmFtZWQgU1ZHQW5nbGVWYWx1ZSwgYW5kIHRoZSBib3VuZCBpbnN0YW5j
ZSwgd2hpY2ggdXNlZCB0byBiZSBuYW1lCisgICAgICAgIFNWR1Byb3BlcnR5VGVhck9mZjxTVkdB
bmdsZT4sIHRha2luZyB0aGUgbmFtZSBTVkdBbmdsZSAoYW5kIGluaGVyaXRpbmcgZnJvbSAKKyAg
ICAgICAgU1ZHUHJvcGVydHlUZWFyT2ZmPFNWR0FuZ2xlVmFsdWU+KS4KKworICAgICAgICAqIENN
YWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgQWRkIFNWR0FuZ2xlVmFsdWUuY3BwCisKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3IucG06CisgICAgICAgIFJlbW92ZSBTVkdBbmdsZSBhcyBhIHNw
ZWNpYWwgY2FzZS4KKworICAgICAgICAqIHN2Zy9TVkdBbmdsZS5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogc3ZnL1NWR0FuZ2xlLmg6CisgICAgICAgIEFkZGVkLiBJbXBsZW1lbnRzIHRoZSBTVkdB
bmdsZSBpbnRlcmZhY2UgZXhwbGljaXRseSwgZ2V0dGluZyB0bworICAgICAgICB0aGUgU1ZHQW5n
bGVWYWx1ZSB0aHJvdWdoIHByb3BlcnR5UmVmZXJlbmNlKCkuCisKKyAgICAgICAgKiBzdmcvU1ZH
QW5nbGUuaWRsOgorICAgICAgICAqIHN2Zy9TVkdBbmdsZVZhbHVlLmNwcDogQ29waWVkIGZyb20g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuZ2xlLmNwcC4KKyAgICAgICAgKiBzdmcvU1ZHQW5nbGVW
YWx1ZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5nbGUuaC4KKyAgICAg
ICAgTW92ZSBvbGQgU1ZHQW5nbGUgaW1wbGVtZW50YXRpb24gdG8gU1ZHQW5nbGVWYWx1ZS4KKwor
ICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZEFuZ2xlLmNwcDoKKyAgICAgICAgUmVwbGFjZSBTVkdB
bmdsZSB1c2FnZSB3aXRoIFNWR0FuZ2xlVmFsdWUuCisKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0
ZWRBbmdsZS5oOgorICAgICAgICBTd2l0Y2ggU1ZHQW5pbWF0ZWRBbmdsZSB0byBiZSBhIHR5cGUg
YWxpYXMuIFRoaXMgcmVtYWlucyBTVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZjxTVkdBbmdsZT4K
KyAgICAgICAgYXMgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmYgaGFzIGJlZW4gY2hhbmdlZCB0
byB0YWtlIHRoZSBUZWFyT2ZmIHR5cGUgYXMgaXRzIHBhcmFtZXRlci4KKworICAgICAgICAqIHN2
Zy9TVkdBbmltYXRlZExlbmd0aC5oOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZFByZXNlcnZl
QXNwZWN0UmF0aW8uaDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRSZWN0Lmg6CisgICAgICAg
IFN3aXRjaCB0byB1c2luZyB0eXBlIGFsaWFzZXMgYW5kIHBhc3MgdGhlIFRlYXJPZmYgdG8gU1ZH
QW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmYuCisKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRUeXBl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlQW5nbGVBbmRF
bnVtZXJhdGlvbik6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkVHlwZS5oOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHQW5pbWF0ZWRUeXBlOjphbmdsZUFuZEVudW1lcmF0aW9uKToKKyAgICAgICAg
VXNlIFNWR0FuZ2xlVmFsdWUuCisKKyAgICAgICAgKiBzdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJG
dW5jdGlvbkVsZW1lbnQuaDoKKyAgICAgICAgQWRkIG1pc3NpbmcgaW5jbHVkZSBvZiBTVkdFbGVt
ZW50LmggKG5lZWQgYmVjYXVzZSBpdCByZW1vdmVkIGZyb20gU1ZHUHJvcGVydHlUZWFyT2ZmKS4K
KworICAgICAgICAqIHN2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR01hcmtlckVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R01hcmtlckVsZW1lbnQ6OnNldE9yaWVudCk6CisgICAgICAgIFN3aXRjaCB0byB0YWtlIGFuIFNW
R0FuZ2xlVmFsdWUuCisKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckVsZW1lbnQ6OnNldE9y
aWVudFRvQW5nbGUpOgorICAgICAgICBVcGRhdGUgdG8gcHVsbCB0aGUgdmFsdWUgb3V0IHZpYSBw
cm9wZXJ0eVJlZmVyZW5jZSgpLgorCisgICAgICAgICogc3ZnL1NWR01hcmtlckVsZW1lbnQuaDoK
KyAgICAgICAgU3dpdGNoIHRvIHRha2UgYW4gU1ZHQW5nbGVWYWx1ZS4KKworICAgICAgICAqIHN2
Zy9TVkdMZW5ndGhMaXN0Lmg6CisgICAgICAgICogc3ZnL1NWR051bWJlckxpc3QuaDoKKyAgICAg
ICAgKiBzdmcvU1ZHUGF0aFNlZ0xpc3QuaDoKKyAgICAgICAgKiBzdmcvU1ZHUG9pbnRMaXN0Lmg6
CisgICAgICAgICogc3ZnL1NWR1N0cmluZ0xpc3QuaDoKKyAgICAgICAgKiBzdmcvU1ZHVHJhbnNm
b3JtTGlzdC5oOgorICAgICAgICBTd2l0Y2ggdG8gdXNpbmcgdHlwZSBhbGlhc2VzIGluIFNWR1By
b3BlcnR5VHJhaXRzIGFuZCBhZGQgYW4gYWxpYXMgZm9yCisgICAgICAgIExpc3RJdGVtVGVhck9m
Zi4KKworICAgICAgICAqIHN2Zy9TVkdTVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1NWR0VsZW1lbnQ6OmNyZWF0ZVNWR0FuZ2xlKToKKyAgICAgICAgKiBzdmcvU1ZHU1ZHRWxl
bWVudC5oOgorICAgICAgICBDaGFuZ2UgY3JlYXRlU1ZHQW5nbGUgdG8gcmV0dXJuIGEgUmVmPFNW
R0FuZ2xlPiBhbmQgY3JlYXRlIG9uZS4KKworICAgICAgICAqIHN2Zy9TVkdTVkdFbGVtZW50Lmlk
bDoKKyAgICAgICAgQW5ub3RhdGUgSURMIHRvIGluZGljYXRlIHRoYXQgYSBuZXcgdmFsdWUgaXMg
YmVpbmcgcmV0dXJuZWQuCisKKyAgICAgICAgKiBzdmcvU1ZHVHJhbnNmb3JtLmNwcDoKKyAgICAg
ICAgUmVtb3ZlIHVubmVjZXNzYXJ5IGluY2x1ZGUgb2YgU1ZHQW5nbGUuaC4KKworICAgICAgICAq
IHN2Zy9TVkdWaWV3U3BlYy5jcHA6CisgICAgICAgIEFkZCBtaXNzaW5nIGluY2x1ZGUgb2YgU1ZH
RWxlbWVudC5oIChuZWVkIGJlY2F1c2UgaXQgcmVtb3ZlZCBmcm9tIFNWR1Byb3BlcnR5VGVhck9m
ZikuCisKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5VGVhck9m
Zi5oOgorICAgICAgICBDaGFuZ2UgdG8gYmUgcGFyYW1ldGVyaXplZCBvbiB0aGUgVGVhck9mZlR5
cGUsIHJhdGhlciB0aGFuIHRoZSBQcm9wZXJ0eVR5cGUgaXRzZWxmLiBHZXQgdGhlCisgICAgICAg
IFByb3BlcnR5IHR5cGUgZnJvbSB0aGUgVGVhck9mZlR5cGUuCisKKyAgICAgICAgKiBzdmcvcHJv
cGVydGllcy9TVkdMaXN0UHJvcGVydHkuaDoKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdM
aXN0UHJvcGVydHlUZWFyT2ZmLmg6CisgICAgICAgIEZpeCBhc3N1bXB0aW9uIHRoYXQgYWxsIFRl
YXJPZmZUeXBlcyBhcmUganVzdCBhIFNWR1Byb3BlcnR5VGVhck9mZiB0ZW1wbGF0aXplZCBvbiBh
IHByb3BlcnR5CisgICAgICAgIHR5cGUuIFRoaXMgaXMgbm8gbG9uZ2VyIHRydWUgZm9yIFNWR0Fu
Z2xlLiBJbnN0ZWFkLCBnZXQgdGhlIFRlYXJPZmZUeXBlIGZvciBsaXN0cyB2aWEgU1ZHUHJvcGVy
dHlUcmFpdHMuCisKKyAgICAgICAgKiBzdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRlYXJPZmYu
aDoKKyAgICAgICAgTWFrZSB0aGUgUHJvcGVydHlUeXBlIGF2YWlsYWJsZSBieSBleHBvc2luZyBp
dCBhcyBhIHR5cGUgYWxpYXMuCisKIDIwMTYtMTEtMDkgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRz
QGFwcGxlLmNvbT4KIAogICAgICAgICBbTW9kZXJuIE1lZGlhIENvbnRyb2xzXSBVSSBMaWJyYXJ5
OiBTdGF0dXNMYWJlbApJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIwODQ1OCkK
KysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yNjc5
LDcgKzI2NzksNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgc3ZnL1NWR0FsdEdseXBoRGVm
RWxlbWVudC5jcHAKICAgICBzdmcvU1ZHQWx0R2x5cGhFbGVtZW50LmNwcAogICAgIHN2Zy9TVkdB
bHRHbHlwaEl0ZW1FbGVtZW50LmNwcAotICAgIHN2Zy9TVkdBbmdsZS5jcHAKKyAgICBzdmcvU1ZH
QW5nbGVWYWx1ZS5jcHAKICAgICBzdmcvU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudC5jcHAKICAgICBz
dmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwCiAgICAgc3ZnL1NWR0FuaW1hdGVFbGVtZW50QmFzZS5j
cHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHJldmlzaW9uIDIwODQ1OCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjgzNiw2ICsyODM2LDcg
QEAKIAkJN0M3OTQxRTQxQzU2QzI5MzAwQTRDNThFIC8qIERhdGFEZXRlY3RvcnNDb3JlU29mdExp
bmsubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qzc5
NDFFMjFDNTZDMjkzMDBBNEM1OEUgLyogRGF0YURldGVjdG9yc0NvcmVTb2Z0TGluay5tbSAqLzsg
fTsKIAkJN0M3OTQxRTUxQzU2QzI5MzAwQTRDNThFIC8qIERhdGFEZXRlY3RvcnNDb3JlU29mdExp
bmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNzk0
MUUzMUM1NkMyOTMwMEE0QzU4RSAvKiBEYXRhRGV0ZWN0b3JzQ29yZVNvZnRMaW5rLmggKi87IH07
CiAJCTdDODNERTg2MUQwNENDNUQwMEZFQkNGMyAvKiBTcHJpbmdTb2x2ZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDODNERTg1MUQwNENCRDQwMEZF
QkNGMyAvKiBTcHJpbmdTb2x2ZXIuaCAqLzsgfTsKKwkJN0M4RjIyNDQxREQzQzJGNjAwRTkyREEz
IC8qIFNWR0FuZ2xlVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0M4RjIyNDIxREQzQjNCOTAwRTkyREEzIC8qIFNWR0FuZ2xlVmFsdWUuY3Bw
ICovOyB9OwogCQk3QzkzRjM0OTFBQTZCQTVFMDBBOThCQUIgLyogQ29tcGlsZWRDb250ZW50RXh0
ZW5zaW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdDOTNGMzQ3MUFBNkJBNUUwMEE5OEJBQiAvKiBDb21waWxlZENvbnRlbnRFeHRlbnNpb24uY3Bw
ICovOyB9OwogCQk3QzkzRjM0QTFBQTZCQTVFMDBBOThCQUIgLyogQ29tcGlsZWRDb250ZW50RXh0
ZW5zaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QzkzRjM0ODFBQTZCQTVFMDBBOThCQUIgLyogQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0M5M0YzNEQx
QUE2QkYwNzAwQTk4QkFCIC8qIENvbnRlbnRFeHRlbnNpb25Db21waWxlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzkzRjM0QjFBQTZCRjA3MDBB
OThCQUIgLyogQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmNwcCAqLzsgfTsKQEAgLTQ0NjksNyAr
NDQ3MCw2IEBACiAJCUIyMjI3OTcyMEQwMEJGMjIwMDcxQjc4MiAvKiBSYWRpYWxHcmFkaWVudEF0
dHJpYnV0ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEIyMjI3N0RDMEQwMEJGMUYwMDcxQjc4MiAvKiBSYWRpYWxHcmFkaWVudEF0dHJpYnV0ZXMuaCAq
LzsgfTsKIAkJQjIyMjc5NzMwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR0FFbGVtZW50LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3N0REMEQwMEJG
MUYwMDcxQjc4MiAvKiBTVkdBRWxlbWVudC5jcHAgKi87IH07CiAJCUIyMjI3OTc0MEQwMEJGMjIw
MDcxQjc4MiAvKiBTVkdBRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQjIyMjc3REUwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FFbGVtZW50Lmgg
Ki87IH07Ci0JCUIyMjI3OTc2MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdBbmdsZS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzdFMDBEMDBCRjFG
MDA3MUI3ODIgLyogU1ZHQW5nbGUuY3BwICovOyB9OwogCQlCMjIyNzk3NzBEMDBCRjIyMDA3MUI3
ODIgLyogU1ZHQW5nbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEIyMjI3N0UxMEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdBbmdsZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUIyMjI3OTc5MEQwMEJGMjIw
MDcxQjc4MiAvKiBTVkdBbmltYXRlQ29sb3JFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3N0UzMEQwMEJGMUYwMDcxQjc4MiAvKiBT
VkdBbmltYXRlQ29sb3JFbGVtZW50LmNwcCAqLzsgfTsKIAkJQjIyMjc5N0EwRDAwQkYyMjAwNzFC
NzgyIC8qIFNWR0FuaW1hdGVDb2xvckVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3N0U0MEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdBbmlt
YXRlQ29sb3JFbGVtZW50LmggKi87IH07CkBAIC0xMDIwNSw2ICsxMDIwNSw4IEBACiAJCTdDNzk0
MUUyMUM1NkMyOTMwMEE0QzU4RSAvKiBEYXRhRGV0ZWN0b3JzQ29yZVNvZnRMaW5rLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRGF0YURldGVjdG9yc0NvcmVTb2Z0
TGluay5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M3OTQxRTMxQzU2QzI5MzAw
QTRDNThFIC8qIERhdGFEZXRlY3RvcnNDb3JlU29mdExpbmsuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRGF0YURldGVjdG9yc0NvcmVTb2Z0TGluay5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QzgzREU4NTFEMDRDQkQ0MDBGRUJDRjMgLyogU3ByaW5nU29sdmVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNwcmluZ1NvbHZlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzhGMjI0MjFERDNCM0I5MDBFOTJEQTMgLyogU1ZH
QW5nbGVWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdB
bmdsZVZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0M4RjIyNDMxREQz
QjNCOTAwRTkyREEzIC8qIFNWR0FuZ2xlVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU1ZHQW5nbGVWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
QzkzRjM0NzFBQTZCQTVFMDBBOThCQUIgLyogQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbXBpbGVkQ29udGVudEV4dGVu
c2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDOTNGMzQ4MUFBNkJBNUUw
MEE5OEJBQiAvKiBDb21waWxlZENvbnRlbnRFeHRlbnNpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTdDOTNGMzRCMUFBNkJGMDcwMEE5OEJBQiAvKiBDb250ZW50RXh0ZW5z
aW9uQ29tcGlsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29u
dGVudEV4dGVuc2lvbkNvbXBpbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTEyMDYwLDcgKzEyMDYyLDYgQEAKIAkJQjIyMjc3REQwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FF
bGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdBRWxl
bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyMjI3N0RFMEQwMEJGMUYw
MDcxQjc4MiAvKiBTVkdBRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU1ZHQUVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjIyMjc3REYw
RDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FFbGVtZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gU1ZHQUVsZW1lbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCMjIyNzdF
MDBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHQW5nbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNWR0FuZ2xlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQjIyMjc3RTEwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FuZ2xlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTVkdBbmdsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCMjIyNzdFMjBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHQW5nbGUuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBTVkdBbmdsZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUIyMjI3N0UzMEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdBbmltYXRlQ29sb3JFbGVtZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdBbmltYXRlQ29sb3JFbGVt
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNjg1LDkgKzIwNjg2LDEw
IEBACiAJCQkJMjREOTEyQjQxM0NBOUE2OTAwRDIxOTE1IC8qIFNWR0FsdEdseXBoSXRlbUVsZW1l
bnQuY3BwICovLAogCQkJCTI0RDkxMkI1MTNDQTlBNjkwMEQyMTkxNSAvKiBTVkdBbHRHbHlwaEl0
ZW1FbGVtZW50LmggKi8sCiAJCQkJMjREOTEyQjYxM0NBOUE2OTAwRDIxOTE1IC8qIFNWR0FsdEds
eXBoSXRlbUVsZW1lbnQuaWRsICovLAotCQkJCUIyMjI3N0UwMEQwMEJGMUYwMDcxQjc4MiAvKiBT
VkdBbmdsZS5jcHAgKi8sCiAJCQkJQjIyMjc3RTEwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FuZ2xl
LmggKi8sCiAJCQkJQjIyMjc3RTIwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FuZ2xlLmlkbCAqLywK
KwkJCQk3QzhGMjI0MjFERDNCM0I5MDBFOTJEQTMgLyogU1ZHQW5nbGVWYWx1ZS5jcHAgKi8sCisJ
CQkJN0M4RjIyNDMxREQzQjNCOTAwRTkyREEzIC8qIFNWR0FuZ2xlVmFsdWUuaCAqLywKIAkJCQlC
MjIyNzdFMzBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudC5jcHAgKi8s
CiAJCQkJQjIyMjc3RTQwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVDb2xvckVsZW1lbnQu
aCAqLywKIAkJCQlCMjIyNzdFNTBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZUNvbG9yRWxl
bWVudC5pZGwgKi8sCkBAIC0zMDkyNSw3ICszMDkyNyw2IEBACiAJCQkJMjREOTEyQjAxM0NBOUEx
RjAwRDIxOTE1IC8qIFNWR0FsdEdseXBoRGVmRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk2NTY1M0YyRDBEOTcyN0QyMDBDQTk3MjMgLyogU1ZHQWx0R2x5cGhFbGVtZW50LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTI0RDkxMkI3MTNDQTlBNjkwMEQyMTkxNSAvKiBTVkdBbHRHbHlwaEl0
ZW1FbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUIyMjI3OTc2MEQwMEJGMjIwMDcxQjc4
MiAvKiBTVkdBbmdsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyNzk3OTBEMDBCRjIyMDA3
MUI3ODIgLyogU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0
MzYyQzdCOTEzQUM2RjFBMDAzNDRCRUIgLyogU1ZHQW5pbWF0ZWRBbmdsZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk0MzFBMzA4ODEzQjhGOTc4MDA3NzkxRTQgLyogU1ZHQW5pbWF0ZWRCb29sZWFu
LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzExMzAsNiArMzExMzEsNyBAQAogCQkJCUNFQ0FERkNE
MTUzNzc5MUQwMEUzNzA2OCAvKiBUZXh0SW5zZXJ0aW9uQmFzZUNvbW1hbmQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOTMzMDlFMUIwOTlFNjQ5MjAwNTZFNTgxIC8qIFRleHRJdGVyYXRvci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlFNEQ5ODhCNjE3QkZFQjIxMDA4NEZCODggLyogVGV4dE5vZGVU
cmF2ZXJzYWwuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0M4RjIyNDQxREQzQzJGNjAwRTkyREEz
IC8qIFNWR0FuZ2xlVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUMxOERBNTgxODFBRjZB
NTAwQzRFRjIyIC8qIFRleHRQYWludGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUU0QzkxQTEw
MTgwMjM0MzkwMEExN0Y2RCAvKiBUZXh0UGFpbnRTdHlsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk5M0YxOUE5RDA4MjQ1RTU5MDAxRTlBQkMgLyogVGV4dFJlc291cmNlRGVjb2Rlci5jcHAgaW4g
U291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvci5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3IucG0JKHJldmlzaW9uIDIwODQ1OCkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQkod29ya2luZyBjb3B5KQpAQCAtMTE5LDcg
KzExOSw2IEBAIG15ICVzdmdBdHRyaWJ1dGVzSW5IVE1MSGFzaCA9ICgKICk7CiAKIG15ICVzdmdU
eXBlTmVlZGluZ1RlYXJPZmYgPSAoCi0gICAgIlNWR0FuZ2xlIiA9PiAiU1ZHUHJvcGVydHlUZWFy
T2ZmPFNWR0FuZ2xlPiIsCiAgICAgIlNWR0xlbmd0aCIgPT4gIlNWR1Byb3BlcnR5VGVhck9mZjxT
VkdMZW5ndGg+IiwKICAgICAiU1ZHTGVuZ3RoTGlzdCIgPT4gIlNWR0xpc3RQcm9wZXJ0eVRlYXJP
ZmY8U1ZHTGVuZ3RoTGlzdD4iLAogICAgICJTVkdNYXRyaXgiID0+ICJTVkdQcm9wZXJ0eVRlYXJP
ZmY8U1ZHTWF0cml4PiIsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWxsSW5PbmUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbGxJbk9uZS5jcHAJKHJldmlz
aW9uIDIwODQ1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbGxJbk9uZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI5LDcgKzI5LDYgQEAKICNpbmNsdWRlICJTVkdBbHRHbHlwaERlZkVsZW1l
bnQuY3BwIgogI2luY2x1ZGUgIlNWR0FsdEdseXBoRWxlbWVudC5jcHAiCiAjaW5jbHVkZSAiU1ZH
QWx0R2x5cGhJdGVtRWxlbWVudC5jcHAiCi0jaW5jbHVkZSAiU1ZHQW5nbGUuY3BwIgogI2luY2x1
ZGUgIlNWR0FuaW1hdGVDb2xvckVsZW1lbnQuY3BwIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVFbGVt
ZW50LmNwcCIKICNpbmNsdWRlICJTVkdBbmltYXRlRWxlbWVudEJhc2UuY3BwIgpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuZ2xlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5nbGUuY3BwCShyZXZpc2lvbiAyMDg0NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQW5nbGUuY3BwCShub25leGlzdGVudCkKQEAgLTEsMjA0ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDcsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6
aW1tZXJtYW5uQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgUm9i
IEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9u
IExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwot
ICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
LSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoK
LSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICog
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIlNWR0FuZ2xlLmgiCi0KLSNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0jaW5j
bHVkZSAiU1ZHUGFyc2VyVXRpbGl0aWVzLmgiCi0jaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4K
LSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotZmxvYXQgU1ZHQW5nbGU6OnZhbHVlKCkgY29uc3QKLXsKLSAgICBzd2l0Y2ggKG1fdW5pdFR5
cGUpIHsKLSAgICBjYXNlIFNWR19BTkdMRVRZUEVfR1JBRDoKLSAgICAgICAgcmV0dXJuIGdyYWQy
ZGVnKG1fdmFsdWVJblNwZWNpZmllZFVuaXRzKTsKLSAgICBjYXNlIFNWR19BTkdMRVRZUEVfUkFE
OgotICAgICAgICByZXR1cm4gcmFkMmRlZyhtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyk7Ci0gICAg
Y2FzZSBTVkdfQU5HTEVUWVBFX1VOU1BFQ0lGSUVEOgotICAgIGNhc2UgU1ZHX0FOR0xFVFlQRV9V
TktOT1dOOgotICAgIGNhc2UgU1ZHX0FOR0xFVFlQRV9ERUc6Ci0gICAgICAgIHJldHVybiBtX3Zh
bHVlSW5TcGVjaWZpZWRVbml0czsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgcmV0dXJuIDA7Ci19Ci0KLXZvaWQgU1ZHQW5nbGU6OnNldFZhbHVlKGZsb2F0IHZhbHVlKQot
ewotICAgIHN3aXRjaCAobV91bml0VHlwZSkgewotICAgIGNhc2UgU1ZHX0FOR0xFVFlQRV9HUkFE
OgotICAgICAgICBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyA9IGRlZzJncmFkKHZhbHVlKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIGNhc2UgU1ZHX0FOR0xFVFlQRV9SQUQ6Ci0gICAgICAgIG1fdmFs
dWVJblNwZWNpZmllZFVuaXRzID0gZGVnMnJhZCh2YWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICBjYXNlIFNWR19BTkdMRVRZUEVfVU5TUEVDSUZJRUQ6Ci0gICAgY2FzZSBTVkdfQU5HTEVUWVBF
X1VOS05PV046Ci0gICAgY2FzZSBTVkdfQU5HTEVUWVBFX0RFRzoKLSAgICAgICAgbV92YWx1ZUlu
U3BlY2lmaWVkVW5pdHMgPSB2YWx1ZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLX0KLQotU3RyaW5nIFNWR0FuZ2xlOjp2YWx1ZUFzU3RyaW5nKCkg
Y29uc3QKLXsKLSAgICBzd2l0Y2ggKG1fdW5pdFR5cGUpIHsKLSAgICBjYXNlIFNWR19BTkdMRVRZ
UEVfREVHOgotICAgICAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIobV92YWx1ZUluU3BlY2lmaWVk
VW5pdHMpICsgImRlZyI7Ci0gICAgY2FzZSBTVkdfQU5HTEVUWVBFX1JBRDoKLSAgICAgICAgcmV0
dXJuIFN0cmluZzo6bnVtYmVyKG1fdmFsdWVJblNwZWNpZmllZFVuaXRzKSArICJyYWQiOwotICAg
IGNhc2UgU1ZHX0FOR0xFVFlQRV9HUkFEOgotICAgICAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIo
bV92YWx1ZUluU3BlY2lmaWVkVW5pdHMpICsgImdyYWQiOwotICAgIGNhc2UgU1ZHX0FOR0xFVFlQ
RV9VTlNQRUNJRklFRDoKLSAgICBjYXNlIFNWR19BTkdMRVRZUEVfVU5LTk9XTjoKLSAgICAgICAg
cmV0dXJuIFN0cmluZzo6bnVtYmVyKG1fdmFsdWVJblNwZWNpZmllZFVuaXRzKTsKLSAgICB9Ci0K
LSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19Ci0KLXN0
YXRpYyBpbmxpbmUgU1ZHQW5nbGU6OlNWR0FuZ2xlVHlwZSBwYXJzZUFuZ2xlVHlwZShjb25zdCBV
Q2hhciogcHRyLCBjb25zdCBVQ2hhciogZW5kKQotewotICAgIHN3aXRjaCAoZW5kIC0gcHRyKSB7
Ci0gICAgY2FzZSAwOgotICAgICAgICByZXR1cm4gU1ZHQW5nbGU6OlNWR19BTkdMRVRZUEVfVU5T
UEVDSUZJRUQ7Ci0gICAgY2FzZSAzOgotICAgICAgICBpZiAocHRyWzBdID09ICdkJyAmJiBwdHJb
MV0gPT0gJ2UnICYmIHB0clsyXSA9PSAnZycpCi0gICAgICAgICAgICByZXR1cm4gU1ZHQW5nbGU6
OlNWR19BTkdMRVRZUEVfREVHOwotICAgICAgICBpZiAocHRyWzBdID09ICdyJyAmJiBwdHJbMV0g
PT0gJ2EnICYmIHB0clsyXSA9PSAnZCcpCi0gICAgICAgICAgICByZXR1cm4gU1ZHQW5nbGU6OlNW
R19BTkdMRVRZUEVfUkFEOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIDQ6Ci0gICAgICAgIGlm
IChwdHJbMF0gPT0gJ2cnICYmIHB0clsxXSA9PSAncicgJiYgcHRyWzJdID09ICdhJyAmJiBwdHJb
M10gPT0gJ2QnKQotICAgICAgICAgICAgcmV0dXJuIFNWR0FuZ2xlOjpTVkdfQU5HTEVUWVBFX0dS
QUQ7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICByZXR1cm4gU1ZHQW5nbGU6OlNWR19BTkdM
RVRZUEVfVU5LTk9XTjsKLX0KLQotRXhjZXB0aW9uT3I8dm9pZD4gU1ZHQW5nbGU6OnNldFZhbHVl
QXNTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKLXsKLSAgICBpZiAodmFsdWUuaXNFbXB0eSgp
KSB7Ci0gICAgICAgIG1fdW5pdFR5cGUgPSBTVkdfQU5HTEVUWVBFX1VOU1BFQ0lGSUVEOwotICAg
ICAgICByZXR1cm4geyB9OwotICAgIH0KLQotICAgIGF1dG8gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJz
ID0gU3RyaW5nVmlldyh2YWx1ZSkudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCk7Ci0gICAgY29uc3Qg
VUNoYXIqIHB0ciA9IHVwY29udmVydGVkQ2hhcmFjdGVyczsKLSAgICBjb25zdCBVQ2hhciogZW5k
ID0gcHRyICsgdmFsdWUubGVuZ3RoKCk7Ci0KLSAgICBmbG9hdCB2YWx1ZUluU3BlY2lmaWVkVW5p
dHMgPSAwOwotICAgIGlmICghcGFyc2VOdW1iZXIocHRyLCBlbmQsIHZhbHVlSW5TcGVjaWZpZWRV
bml0cywgZmFsc2UpKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU1lOVEFYX0VSUiB9Owot
Ci0gICAgYXV0byB1bml0VHlwZSA9IHBhcnNlQW5nbGVUeXBlKHB0ciwgZW5kKTsKLSAgICBpZiAo
dW5pdFR5cGUgPT0gU1ZHX0FOR0xFVFlQRV9VTktOT1dOKQotICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgU1lOVEFYX0VSUiB9OwotCi0gICAgbV91bml0VHlwZSA9IHVuaXRUeXBlOwotICAgIG1f
dmFsdWVJblNwZWNpZmllZFVuaXRzID0gdmFsdWVJblNwZWNpZmllZFVuaXRzOwotICAgIHJldHVy
biB7IH07Ci19Ci0KLUV4Y2VwdGlvbk9yPHZvaWQ+IFNWR0FuZ2xlOjpuZXdWYWx1ZVNwZWNpZmll
ZFVuaXRzKHVuc2lnbmVkIHNob3J0IHVuaXRUeXBlLCBmbG9hdCB2YWx1ZUluU3BlY2lmaWVkVW5p
dHMpCi17Ci0gICAgaWYgKHVuaXRUeXBlID09IFNWR19BTkdMRVRZUEVfVU5LTk9XTiB8fCB1bml0
VHlwZSA+IFNWR19BTkdMRVRZUEVfR1JBRCkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5P
VF9TVVBQT1JURURfRVJSIH07Ci0KLSAgICBtX3VuaXRUeXBlID0gc3RhdGljX2Nhc3Q8U1ZHQW5n
bGVUeXBlPih1bml0VHlwZSk7Ci0gICAgbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgPSB2YWx1ZUlu
U3BlY2lmaWVkVW5pdHM7Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotRXhjZXB0aW9uT3I8dm9pZD4g
U1ZHQW5nbGU6OmNvbnZlcnRUb1NwZWNpZmllZFVuaXRzKHVuc2lnbmVkIHNob3J0IHVuaXRUeXBl
KQotewotICAgIGlmICh1bml0VHlwZSA9PSBTVkdfQU5HTEVUWVBFX1VOS05PV04gfHwgbV91bml0
VHlwZSA9PSBTVkdfQU5HTEVUWVBFX1VOS05PV04gfHwgdW5pdFR5cGUgPiBTVkdfQU5HTEVUWVBF
X0dSQUQpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOT1RfU1VQUE9SVEVEX0VSUiB9Owot
Ci0gICAgaWYgKHVuaXRUeXBlID09IG1fdW5pdFR5cGUpCi0gICAgICAgIHJldHVybiB7IH07Ci0K
LSAgICBzd2l0Y2ggKG1fdW5pdFR5cGUpIHsKLSAgICBjYXNlIFNWR19BTkdMRVRZUEVfUkFEOgot
ICAgICAgICBzd2l0Y2ggKHVuaXRUeXBlKSB7Ci0gICAgICAgIGNhc2UgU1ZHX0FOR0xFVFlQRV9H
UkFEOgotICAgICAgICAgICAgbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgPSByYWQyZ3JhZChtX3Zh
bHVlSW5TcGVjaWZpZWRVbml0cyk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBT
VkdfQU5HTEVUWVBFX1VOU1BFQ0lGSUVEOgotICAgICAgICBjYXNlIFNWR19BTkdMRVRZUEVfREVH
OgotICAgICAgICAgICAgbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgPSByYWQyZGVnKG1fdmFsdWVJ
blNwZWNpZmllZFVuaXRzKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNWR19B
TkdMRVRZUEVfUkFEOgotICAgICAgICBjYXNlIFNWR19BTkdMRVRZUEVfVU5LTk9XTjoKLSAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IH0KLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTVkdfQU5HTEVUWVBFX0dSQUQ6Ci0gICAgICAg
IHN3aXRjaCAodW5pdFR5cGUpIHsKLSAgICAgICAgY2FzZSBTVkdfQU5HTEVUWVBFX1JBRDoKLSAg
ICAgICAgICAgIG1fdmFsdWVJblNwZWNpZmllZFVuaXRzID0gZ3JhZDJyYWQobV92YWx1ZUluU3Bl
Y2lmaWVkVW5pdHMpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU1ZHX0FOR0xF
VFlQRV9VTlNQRUNJRklFRDoKLSAgICAgICAgY2FzZSBTVkdfQU5HTEVUWVBFX0RFRzoKLSAgICAg
ICAgICAgIG1fdmFsdWVJblNwZWNpZmllZFVuaXRzID0gZ3JhZDJkZWcobV92YWx1ZUluU3BlY2lm
aWVkVW5pdHMpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU1ZHX0FOR0xFVFlQ
RV9HUkFEOgotICAgICAgICBjYXNlIFNWR19BTkdMRVRZUEVfVU5LTk9XTjoKLSAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAg
ICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTVkdfQU5HTEVUWVBFX1VOU1BFQ0lGSUVEOgotICAgICAg
ICAvLyBTcGVjOiBGb3IgYW5nbGVzLCBhIHVuaXRsZXNzIHZhbHVlIGlzIHRyZWF0ZWQgdGhlIHNh
bWUgYXMgaWYgZGVncmVlcyB3ZXJlIHNwZWNpZmllZC4KLSAgICBjYXNlIFNWR19BTkdMRVRZUEVf
REVHOgotICAgICAgICBzd2l0Y2ggKHVuaXRUeXBlKSB7Ci0gICAgICAgIGNhc2UgU1ZHX0FOR0xF
VFlQRV9SQUQ6Ci0gICAgICAgICAgICBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyA9IGRlZzJyYWQo
bV92YWx1ZUluU3BlY2lmaWVkVW5pdHMpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgU1ZHX0FOR0xFVFlQRV9HUkFEOgotICAgICAgICAgICAgbV92YWx1ZUluU3BlY2lmaWVkVW5p
dHMgPSBkZWcyZ3JhZChtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBTVkdfQU5HTEVUWVBFX1VOU1BFQ0lGSUVEOgotICAgICAgICBjYXNl
IFNWR19BTkdMRVRZUEVfREVHOgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU1ZH
X0FOR0xFVFlQRV9VTktOT1dOOgotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLSAgICBjYXNlIFNW
R19BTkdMRVRZUEVfVU5LTk9XTjoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIH0KLQotICAgIG1fdW5pdFR5cGUgPSBzdGF0aWNfY2FzdDxTVkdBbmds
ZVR5cGU+KHVuaXRUeXBlKTsKLQotICAgIHJldHVybiB7IH07Ci19Ci0KLX0KClByb3BlcnR5IGNo
YW5nZXMgb246IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmdsZS5jcHAKX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxl
dGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5nbGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5nbGUuaAkocmV2aXNpb24gMjA4NDU4
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuZ2xlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
MzQgKzEsMzkgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDcsIDIwMDgg
Tmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUsIDIwMDYgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENvcHlyaWdodCAo
QykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCiAgKgotICogVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
Ci0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KLQogI3ByYWdt
YSBvbmNlCiAKLSNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgotI2luY2x1ZGUgIlNWR1Byb3BlcnR5
VHJhaXRzLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIlNWR0FuZ2xl
VmFsdWUuaCIKKyNpbmNsdWRlICJTVkdQcm9wZXJ0eVRlYXJPZmYuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBTVkdBbmdsZSB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CitjbGFzcyBTVkdBbmdsZSA6IHB1YmxpYyBTVkdQcm9wZXJ0eVRlYXJPZmY8U1ZHQW5nbGVWYWx1
ZT4gewogcHVibGljOgorICAgIC8vIEZJWE1FOiBUaGlzIGlzIGR1cGxpY2F0ZWQgaW4gU1ZHQW5n
bGVWYWx1ZS4gV2Ugc2hvdWxkIGZpbmQgc29tZXdheSB0byBoYXZlCisgICAgLy8gb25seSBvbmUg
Y29weSwgYnV0IGZvciBub3csIHRoaXMgb25lIGlzIG5lZWRlZCB0byBzYXRpc2Z5IHRoZSBiaW5k
aW5ncy4KICAgICBlbnVtIFNWR0FuZ2xlVHlwZSB7CiAgICAgICAgIFNWR19BTkdMRVRZUEVfVU5L
Tk9XTiA9IDAsCiAgICAgICAgIFNWR19BTkdMRVRZUEVfVU5TUEVDSUZJRUQgPSAxLApAQCAtMzcs
MjggKzQyLDEyNSBAQCBwdWJsaWM6CiAgICAgICAgIFNWR19BTkdMRVRZUEVfR1JBRCA9IDQKICAg
ICB9OwogCi0gICAgU1ZHQW5nbGVUeXBlIHVuaXRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV91bml0
VHlwZTsgfQotCi0gICAgdm9pZCBzZXRWYWx1ZShmbG9hdCk7Ci0gICAgZmxvYXQgdmFsdWUoKSBj
b25zdDsKLQotICAgIHZvaWQgc2V0VmFsdWVJblNwZWNpZmllZFVuaXRzKGZsb2F0IHZhbHVlSW5T
cGVjaWZpZWRVbml0cykgeyBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyA9IHZhbHVlSW5TcGVjaWZp
ZWRVbml0czsgfQotICAgIGZsb2F0IHZhbHVlSW5TcGVjaWZpZWRVbml0cygpIGNvbnN0IHsgcmV0
dXJuIG1fdmFsdWVJblNwZWNpZmllZFVuaXRzOyB9Ci0KLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBz
ZXRWYWx1ZUFzU3RyaW5nKGNvbnN0IFN0cmluZyYpOwotICAgIFN0cmluZyB2YWx1ZUFzU3RyaW5n
KCkgY29uc3Q7Ci0KLSAgICBFeGNlcHRpb25Pcjx2b2lkPiBuZXdWYWx1ZVNwZWNpZmllZFVuaXRz
KHVuc2lnbmVkIHNob3J0IHVuaXRUeXBlLCBmbG9hdCB2YWx1ZUluU3BlY2lmaWVkVW5pdHMpOwot
ICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGNvbnZlcnRUb1NwZWNpZmllZFVuaXRzKHVuc2lnbmVkIHNo
b3J0IHVuaXRUeXBlKTsKKyAgICBzdGF0aWMgUmVmPFNWR0FuZ2xlPiBjcmVhdGUoU1ZHQW5pbWF0
ZWRQcm9wZXJ0eSogYW5pbWF0ZWRQcm9wZXJ0eSwgU1ZHUHJvcGVydHlSb2xlIHJvbGUsIFNWR0Fu
Z2xlVmFsdWUmIHZhbHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGFuaW1hdGVkUHJvcGVydHkp
OworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdBbmdsZShhbmltYXRlZFByb3BlcnR5
LCByb2xlLCB2YWx1ZSkpOworICAgIH0KKworICAgIHN0YXRpYyBSZWY8U1ZHQW5nbGU+IGNyZWF0
ZShjb25zdCBTVkdBbmdsZVZhbHVlJiBpbml0aWFsVmFsdWUgPSB7IH0pCisgICAgeworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdBbmdsZShpbml0aWFsVmFsdWUpKTsKKyAgICB9CisK
KyAgICBzdGF0aWMgUmVmPFNWR0FuZ2xlPiBjcmVhdGUoY29uc3QgU1ZHQW5nbGVWYWx1ZSogaW5p
dGlhbFZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHQW5nbGUo
aW5pdGlhbFZhbHVlKSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGlj
IEV4Y2VwdGlvbk9yPFJlZjxTVkdBbmdsZT4+IGNyZWF0ZShFeGNlcHRpb25PcjxUPiYmIGluaXRp
YWxWYWx1ZSkKKyAgICB7CisgICAgICAgIGlmIChpbml0aWFsVmFsdWUuaGFzRXhjZXB0aW9uKCkp
CisgICAgICAgICAgICByZXR1cm4gaW5pdGlhbFZhbHVlLnJlbGVhc2VFeGNlcHRpb24oKTsKKyAg
ICAgICAgcmV0dXJuIGNyZWF0ZShpbml0aWFsVmFsdWUucmVsZWFzZVJldHVyblZhbHVlKCkpOwor
ICAgIH0KKworICAgIFNWR0FuZ2xlVmFsdWU6OlR5cGUgdW5pdFR5cGUoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHByb3BlcnR5UmVmZXJlbmNlKCkudW5pdFR5cGUoKTsKKyAgICB9CisKKyAgICBF
eGNlcHRpb25Pcjx2b2lkPiBzZXRWYWx1ZUZvckJpbmRpbmdzKGZsb2F0IHZhbHVlKQorICAgIHsK
KyAgICAgICAgaWYgKGlzUmVhZE9ubHkoKSkKKyAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlIgfTsKKworICAgICAgICBwcm9wZXJ0eVJlZmVy
ZW5jZSgpLnNldFZhbHVlKHZhbHVlKTsKKyAgICAgICAgY29tbWl0Q2hhbmdlKCk7CisKKyAgICAg
ICAgcmV0dXJuIHsgfTsKKyAgICB9CisgICAgCisgICAgZmxvYXQgdmFsdWVGb3JCaW5kaW5ncygp
CisgICAgeworICAgICAgICByZXR1cm4gcHJvcGVydHlSZWZlcmVuY2UoKS52YWx1ZSgpOworICAg
IH0KKworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFZhbHVlSW5TcGVjaWZpZWRVbml0cyhmbG9h
dCB2YWx1ZUluU3BlY2lmaWVkVW5pdHMpCisgICAgeworICAgICAgICBpZiAoaXNSZWFkT25seSgp
KQorICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5PX01PRElGSUNBVElPTl9BTExPV0VE
X0VSUiB9OworCisgICAgICAgIHByb3BlcnR5UmVmZXJlbmNlKCkuc2V0VmFsdWVJblNwZWNpZmll
ZFVuaXRzKHZhbHVlSW5TcGVjaWZpZWRVbml0cyk7CisgICAgICAgIGNvbW1pdENoYW5nZSgpOwor
ICAgICAgICAKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisgICAgCisgICAgZmxvYXQgdmFs
dWVJblNwZWNpZmllZFVuaXRzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBwcm9wZXJ0eVJlZmVy
ZW5jZSgpLnZhbHVlSW5TcGVjaWZpZWRVbml0cygpOworICAgIH0KKworICAgIEV4Y2VwdGlvbk9y
PHZvaWQ+IHNldFZhbHVlQXNTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKKyAgICB7CisgICAg
ICAgIGlmIChpc1JlYWRPbmx5KCkpCisgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTk9f
TU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSIH07CisKKyAgICAgICAgYXV0byByZXN1bHQgPSBwcm9w
ZXJ0eVJlZmVyZW5jZSgpLnNldFZhbHVlQXNTdHJpbmcodmFsdWUpOworICAgICAgICBpZiAocmVz
dWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAg
CisgICAgICAgIGNvbW1pdENoYW5nZSgpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0K
KworICAgIFN0cmluZyB2YWx1ZUFzU3RyaW5nKCkKKyAgICB7CisgICAgICAgIHJldHVybiBwcm9w
ZXJ0eVJlZmVyZW5jZSgpLnZhbHVlQXNTdHJpbmcoKTsKKyAgICB9CisKKyAgICBFeGNlcHRpb25P
cjx2b2lkPiBuZXdWYWx1ZVNwZWNpZmllZFVuaXRzKHVuc2lnbmVkIHNob3J0IHVuaXRUeXBlLCBm
bG9hdCB2YWx1ZUluU3BlY2lmaWVkVW5pdHMpCisgICAgeworICAgICAgICBpZiAoaXNSZWFkT25s
eSgpKQorICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5PX01PRElGSUNBVElPTl9BTExP
V0VEX0VSUiB9OworCisgICAgICAgIGF1dG8gcmVzdWx0ID0gcHJvcGVydHlSZWZlcmVuY2UoKS5u
ZXdWYWx1ZVNwZWNpZmllZFVuaXRzKHVuaXRUeXBlLCB2YWx1ZUluU3BlY2lmaWVkVW5pdHMpOwor
ICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICAgICAgCisgICAgICAgIGNvbW1pdENoYW5nZSgpOworICAgICAgICByZXR1cm4g
cmVzdWx0OworICAgIH0KKyAgICAKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBjb252ZXJ0VG9TcGVj
aWZpZWRVbml0cyh1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSkKKyAgICB7CisgICAgICAgIGlmIChp
c1JlYWRPbmx5KCkpCisgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTk9fTU9ESUZJQ0FU
SU9OX0FMTE9XRURfRVJSIH07CisKKyAgICAgICAgYXV0byByZXN1bHQgPSBwcm9wZXJ0eVJlZmVy
ZW5jZSgpLmNvbnZlcnRUb1NwZWNpZmllZFVuaXRzKHVuaXRUeXBlKTsKKyAgICAgICAgaWYgKHJl
c3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAg
IAorICAgICAgICBjb21taXRDaGFuZ2UoKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9
CiAKIHByaXZhdGU6Ci0gICAgU1ZHQW5nbGVUeXBlIG1fdW5pdFR5cGUgeyBTVkdfQU5HTEVUWVBF
X1VOU1BFQ0lGSUVEIH07Ci0gICAgZmxvYXQgbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgeyAwIH07
Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxTVkdBbmdsZT4gewot
ICAgIHN0YXRpYyBTVkdBbmdsZSBpbml0aWFsVmFsdWUoKSB7IHJldHVybiBTVkdBbmdsZSgpOyB9
Ci0gICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBTVkdBbmdsZSYgdHlwZSkgeyByZXR1
cm4gdHlwZS52YWx1ZUFzU3RyaW5nKCk7IH0KKyAgICBTVkdBbmdsZShTVkdBbmltYXRlZFByb3Bl
cnR5KiBhbmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJvbGUgcm9sZSwgU1ZHQW5nbGVWYWx1
ZSYgdmFsdWUpCisgICAgICAgIDogU1ZHUHJvcGVydHlUZWFyT2ZmPFNWR0FuZ2xlVmFsdWU+KGFu
aW1hdGVkUHJvcGVydHksIHJvbGUsIHZhbHVlKQorICAgIHsKKyAgICB9CisKKyAgICBleHBsaWNp
dCBTVkdBbmdsZShjb25zdCBTVkdBbmdsZVZhbHVlJiBpbml0aWFsVmFsdWUpCisgICAgICAgIDog
U1ZHUHJvcGVydHlUZWFyT2ZmPFNWR0FuZ2xlVmFsdWU+KGluaXRpYWxWYWx1ZSkKKyAgICB7Cisg
ICAgfQorCisgICAgZXhwbGljaXQgU1ZHQW5nbGUoY29uc3QgU1ZHQW5nbGVWYWx1ZSogaW5pdGlh
bFZhbHVlKQorICAgICAgICA6IFNWR1Byb3BlcnR5VGVhck9mZjxTVkdBbmdsZVZhbHVlPihpbml0
aWFsVmFsdWUpCisgICAgeworICAgIH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKClBy
b3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmdsZS5oCl9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuZ2xl
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5nbGUuaWRsCShyZXZp
c2lvbiAyMDg0NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5nbGUuaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC0yOSw4ICsyOSw4IEBAIGludGVyZmFjZSBTVkdBbmdsZSB7IAogICAgIGNvbnN0
IHVuc2lnbmVkIHNob3J0IFNWR19BTkdMRVRZUEVfR1JBRCA9IDQ7CiAKICAgICByZWFkb25seSBh
dHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgdW5pdFR5cGU7Ci0gICAgYXR0cmlidXRlIHVucmVzdHJp
Y3RlZCBmbG9hdCB2YWx1ZTsKLSAgICBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGZsb2F0IHZhbHVl
SW5TcGVjaWZpZWRVbml0czsKKyAgICBbU2V0dGVyTWF5VGhyb3dFeGNlcHRpb24sIEltcGxlbWVu
dGVkQXM9dmFsdWVGb3JCaW5kaW5nc10gYXR0cmlidXRlIHVucmVzdHJpY3RlZCBmbG9hdCB2YWx1
ZTsKKyAgICBbU2V0dGVyTWF5VGhyb3dFeGNlcHRpb25dIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQg
ZmxvYXQgdmFsdWVJblNwZWNpZmllZFVuaXRzOwogCiAgICAgW1NldHRlck1heVRocm93RXhjZXB0
aW9uXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHZhbHVlQXNTdHJpbmc7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmdsZVZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5nbGVWYWx1ZS5jcHAJKHJldmlzaW9uIDIwODQ1OCkJKGZyb20gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuZ2xlLmNwcDoyMDg0NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5nbGVWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMDQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDcsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6
aW1tZXJtYW5uQGtkZS5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgUm9i
IEJ1aXMgPGJ1aXNAa2RlLm9yZz4KKyAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9u
IExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwor
ICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK
KyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICog
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlNWR0FuZ2xlLmgiCisKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5j
bHVkZSAiU1ZHUGFyc2VyVXRpbGl0aWVzLmgiCisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworZmxvYXQgU1ZHQW5nbGU6OnZhbHVlKCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKG1fdW5pdFR5
cGUpIHsKKyAgICBjYXNlIFNWR19BTkdMRVRZUEVfR1JBRDoKKyAgICAgICAgcmV0dXJuIGdyYWQy
ZGVnKG1fdmFsdWVJblNwZWNpZmllZFVuaXRzKTsKKyAgICBjYXNlIFNWR19BTkdMRVRZUEVfUkFE
OgorICAgICAgICByZXR1cm4gcmFkMmRlZyhtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyk7CisgICAg
Y2FzZSBTVkdfQU5HTEVUWVBFX1VOU1BFQ0lGSUVEOgorICAgIGNhc2UgU1ZHX0FOR0xFVFlQRV9V
TktOT1dOOgorICAgIGNhc2UgU1ZHX0FOR0xFVFlQRV9ERUc6CisgICAgICAgIHJldHVybiBtX3Zh
bHVlSW5TcGVjaWZpZWRVbml0czsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgU1ZHQW5nbGU6OnNldFZhbHVlKGZsb2F0IHZhbHVlKQor
eworICAgIHN3aXRjaCAobV91bml0VHlwZSkgeworICAgIGNhc2UgU1ZHX0FOR0xFVFlQRV9HUkFE
OgorICAgICAgICBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyA9IGRlZzJncmFkKHZhbHVlKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIGNhc2UgU1ZHX0FOR0xFVFlQRV9SQUQ6CisgICAgICAgIG1fdmFs
dWVJblNwZWNpZmllZFVuaXRzID0gZGVnMnJhZCh2YWx1ZSk7CisgICAgICAgIHJldHVybjsKKyAg
ICBjYXNlIFNWR19BTkdMRVRZUEVfVU5TUEVDSUZJRUQ6CisgICAgY2FzZSBTVkdfQU5HTEVUWVBF
X1VOS05PV046CisgICAgY2FzZSBTVkdfQU5HTEVUWVBFX0RFRzoKKyAgICAgICAgbV92YWx1ZUlu
U3BlY2lmaWVkVW5pdHMgPSB2YWx1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKK30KKworU3RyaW5nIFNWR0FuZ2xlOjp2YWx1ZUFzU3RyaW5nKCkg
Y29uc3QKK3sKKyAgICBzd2l0Y2ggKG1fdW5pdFR5cGUpIHsKKyAgICBjYXNlIFNWR19BTkdMRVRZ
UEVfREVHOgorICAgICAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIobV92YWx1ZUluU3BlY2lmaWVk
VW5pdHMpICsgImRlZyI7CisgICAgY2FzZSBTVkdfQU5HTEVUWVBFX1JBRDoKKyAgICAgICAgcmV0
dXJuIFN0cmluZzo6bnVtYmVyKG1fdmFsdWVJblNwZWNpZmllZFVuaXRzKSArICJyYWQiOworICAg
IGNhc2UgU1ZHX0FOR0xFVFlQRV9HUkFEOgorICAgICAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIo
bV92YWx1ZUluU3BlY2lmaWVkVW5pdHMpICsgImdyYWQiOworICAgIGNhc2UgU1ZHX0FOR0xFVFlQ
RV9VTlNQRUNJRklFRDoKKyAgICBjYXNlIFNWR19BTkdMRVRZUEVfVU5LTk9XTjoKKyAgICAgICAg
cmV0dXJuIFN0cmluZzo6bnVtYmVyKG1fdmFsdWVJblNwZWNpZmllZFVuaXRzKTsKKyAgICB9CisK
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK3N0
YXRpYyBpbmxpbmUgU1ZHQW5nbGU6OlNWR0FuZ2xlVHlwZSBwYXJzZUFuZ2xlVHlwZShjb25zdCBV
Q2hhciogcHRyLCBjb25zdCBVQ2hhciogZW5kKQoreworICAgIHN3aXRjaCAoZW5kIC0gcHRyKSB7
CisgICAgY2FzZSAwOgorICAgICAgICByZXR1cm4gU1ZHQW5nbGU6OlNWR19BTkdMRVRZUEVfVU5T
UEVDSUZJRUQ7CisgICAgY2FzZSAzOgorICAgICAgICBpZiAocHRyWzBdID09ICdkJyAmJiBwdHJb
MV0gPT0gJ2UnICYmIHB0clsyXSA9PSAnZycpCisgICAgICAgICAgICByZXR1cm4gU1ZHQW5nbGU6
OlNWR19BTkdMRVRZUEVfREVHOworICAgICAgICBpZiAocHRyWzBdID09ICdyJyAmJiBwdHJbMV0g
PT0gJ2EnICYmIHB0clsyXSA9PSAnZCcpCisgICAgICAgICAgICByZXR1cm4gU1ZHQW5nbGU6OlNW
R19BTkdMRVRZUEVfUkFEOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDQ6CisgICAgICAgIGlm
IChwdHJbMF0gPT0gJ2cnICYmIHB0clsxXSA9PSAncicgJiYgcHRyWzJdID09ICdhJyAmJiBwdHJb
M10gPT0gJ2QnKQorICAgICAgICAgICAgcmV0dXJuIFNWR0FuZ2xlOjpTVkdfQU5HTEVUWVBFX0dS
QUQ7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gU1ZHQW5nbGU6OlNWR19BTkdM
RVRZUEVfVU5LTk9XTjsKK30KKworRXhjZXB0aW9uT3I8dm9pZD4gU1ZHQW5nbGU6OnNldFZhbHVl
QXNTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUuaXNFbXB0eSgp
KSB7CisgICAgICAgIG1fdW5pdFR5cGUgPSBTVkdfQU5HTEVUWVBFX1VOU1BFQ0lGSUVEOworICAg
ICAgICByZXR1cm4geyB9OworICAgIH0KKworICAgIGF1dG8gdXBjb252ZXJ0ZWRDaGFyYWN0ZXJz
ID0gU3RyaW5nVmlldyh2YWx1ZSkudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCk7CisgICAgY29uc3Qg
VUNoYXIqIHB0ciA9IHVwY29udmVydGVkQ2hhcmFjdGVyczsKKyAgICBjb25zdCBVQ2hhciogZW5k
ID0gcHRyICsgdmFsdWUubGVuZ3RoKCk7CisKKyAgICBmbG9hdCB2YWx1ZUluU3BlY2lmaWVkVW5p
dHMgPSAwOworICAgIGlmICghcGFyc2VOdW1iZXIocHRyLCBlbmQsIHZhbHVlSW5TcGVjaWZpZWRV
bml0cywgZmFsc2UpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU1lOVEFYX0VSUiB9Owor
CisgICAgYXV0byB1bml0VHlwZSA9IHBhcnNlQW5nbGVUeXBlKHB0ciwgZW5kKTsKKyAgICBpZiAo
dW5pdFR5cGUgPT0gU1ZHX0FOR0xFVFlQRV9VTktOT1dOKQorICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgU1lOVEFYX0VSUiB9OworCisgICAgbV91bml0VHlwZSA9IHVuaXRUeXBlOworICAgIG1f
dmFsdWVJblNwZWNpZmllZFVuaXRzID0gdmFsdWVJblNwZWNpZmllZFVuaXRzOworICAgIHJldHVy
biB7IH07Cit9CisKK0V4Y2VwdGlvbk9yPHZvaWQ+IFNWR0FuZ2xlOjpuZXdWYWx1ZVNwZWNpZmll
ZFVuaXRzKHVuc2lnbmVkIHNob3J0IHVuaXRUeXBlLCBmbG9hdCB2YWx1ZUluU3BlY2lmaWVkVW5p
dHMpCit7CisgICAgaWYgKHVuaXRUeXBlID09IFNWR19BTkdMRVRZUEVfVU5LTk9XTiB8fCB1bml0
VHlwZSA+IFNWR19BTkdMRVRZUEVfR1JBRCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5P
VF9TVVBQT1JURURfRVJSIH07CisKKyAgICBtX3VuaXRUeXBlID0gc3RhdGljX2Nhc3Q8U1ZHQW5n
bGVUeXBlPih1bml0VHlwZSk7CisgICAgbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgPSB2YWx1ZUlu
U3BlY2lmaWVkVW5pdHM7CisgICAgcmV0dXJuIHsgfTsKK30KKworRXhjZXB0aW9uT3I8dm9pZD4g
U1ZHQW5nbGU6OmNvbnZlcnRUb1NwZWNpZmllZFVuaXRzKHVuc2lnbmVkIHNob3J0IHVuaXRUeXBl
KQoreworICAgIGlmICh1bml0VHlwZSA9PSBTVkdfQU5HTEVUWVBFX1VOS05PV04gfHwgbV91bml0
VHlwZSA9PSBTVkdfQU5HTEVUWVBFX1VOS05PV04gfHwgdW5pdFR5cGUgPiBTVkdfQU5HTEVUWVBF
X0dSQUQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOT1RfU1VQUE9SVEVEX0VSUiB9Owor
CisgICAgaWYgKHVuaXRUeXBlID09IG1fdW5pdFR5cGUpCisgICAgICAgIHJldHVybiB7IH07CisK
KyAgICBzd2l0Y2ggKG1fdW5pdFR5cGUpIHsKKyAgICBjYXNlIFNWR19BTkdMRVRZUEVfUkFEOgor
ICAgICAgICBzd2l0Y2ggKHVuaXRUeXBlKSB7CisgICAgICAgIGNhc2UgU1ZHX0FOR0xFVFlQRV9H
UkFEOgorICAgICAgICAgICAgbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgPSByYWQyZ3JhZChtX3Zh
bHVlSW5TcGVjaWZpZWRVbml0cyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBT
VkdfQU5HTEVUWVBFX1VOU1BFQ0lGSUVEOgorICAgICAgICBjYXNlIFNWR19BTkdMRVRZUEVfREVH
OgorICAgICAgICAgICAgbV92YWx1ZUluU3BlY2lmaWVkVW5pdHMgPSByYWQyZGVnKG1fdmFsdWVJ
blNwZWNpZmllZFVuaXRzKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNWR19B
TkdMRVRZUEVfUkFEOgorICAgICAgICBjYXNlIFNWR19BTkdMRVRZUEVfVU5LTk9XTjoKKyAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTVkdfQU5HTEVUWVBFX0dSQUQ6CisgICAgICAg
IHN3aXRjaCAodW5pdFR5cGUpIHsKKyAgICAgICAgY2FzZSBTVkdfQU5HTEVUWVBFX1JBRDoKKyAg
ICAgICAgICAgIG1fdmFsdWVJblNwZWNpZmllZFVuaXRzID0gZ3JhZDJyYWQobV92YWx1ZUluU3Bl
Y2lmaWVkVW5pdHMpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU1ZHX0FOR0xF
VFlQRV9VTlNQRUNJRklFRDoKKyAgICAgICAgY2FzZSBTVkdfQU5HTEVUWVBFX0RFRzoKKyAgICAg
ICAgICAgIG1fdmFsdWVJblNwZWNpZmllZFVuaXRzID0gZ3JhZDJkZWcobV92YWx1ZUluU3BlY2lm
aWVkVW5pdHMpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU1ZHX0FOR0xFVFlQ
RV9HUkFEOgorICAgICAgICBjYXNlIFNWR19BTkdMRVRZUEVfVU5LTk9XTjoKKyAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBTVkdfQU5HTEVUWVBFX1VOU1BFQ0lGSUVEOgorICAgICAg
ICAvLyBTcGVjOiBGb3IgYW5nbGVzLCBhIHVuaXRsZXNzIHZhbHVlIGlzIHRyZWF0ZWQgdGhlIHNh
bWUgYXMgaWYgZGVncmVlcyB3ZXJlIHNwZWNpZmllZC4KKyAgICBjYXNlIFNWR19BTkdMRVRZUEVf
REVHOgorICAgICAgICBzd2l0Y2ggKHVuaXRUeXBlKSB7CisgICAgICAgIGNhc2UgU1ZHX0FOR0xF
VFlQRV9SQUQ6CisgICAgICAgICAgICBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyA9IGRlZzJyYWQo
bV92YWx1ZUluU3BlY2lmaWVkVW5pdHMpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgU1ZHX0FOR0xFVFlQRV9HUkFEOgorICAgICAgICAgICAgbV92YWx1ZUluU3BlY2lmaWVkVW5p
dHMgPSBkZWcyZ3JhZChtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cyk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBTVkdfQU5HTEVUWVBFX1VOU1BFQ0lGSUVEOgorICAgICAgICBjYXNl
IFNWR19BTkdMRVRZUEVfREVHOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU1ZH
X0FOR0xFVFlQRV9VTktOT1dOOgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIFNW
R19BTkdMRVRZUEVfVU5LTk9XTjoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKworICAgIG1fdW5pdFR5cGUgPSBzdGF0aWNfY2FzdDxTVkdBbmds
ZVR5cGU+KHVuaXRUeXBlKTsKKworICAgIHJldHVybiB7IH07Cit9CisKK30KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmdsZVZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQW5nbGVWYWx1ZS5jcHAJKHJldmlzaW9uIDIwODQ1OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmdsZVZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAsNyArMjAs
NyBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTVkdBbmdsZS5oIgor
I2luY2x1ZGUgIlNWR0FuZ2xlVmFsdWUuaCIKIAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIK
ICNpbmNsdWRlICJTVkdQYXJzZXJVdGlsaXRpZXMuaCIKQEAgLTI5LDcgKzI5LDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1mbG9hdCBTVkdBbmdsZTo6dmFsdWUoKSBjb25zdAorZmxvYXQg
U1ZHQW5nbGVWYWx1ZTo6dmFsdWUoKSBjb25zdAogewogICAgIHN3aXRjaCAobV91bml0VHlwZSkg
ewogICAgIGNhc2UgU1ZHX0FOR0xFVFlQRV9HUkFEOgpAQCAtNDUsNyArNDUsNyBAQCBmbG9hdCBT
VkdBbmdsZTo6dmFsdWUoKSBjb25zdAogICAgIHJldHVybiAwOwogfQogCi12b2lkIFNWR0FuZ2xl
OjpzZXRWYWx1ZShmbG9hdCB2YWx1ZSkKK3ZvaWQgU1ZHQW5nbGVWYWx1ZTo6c2V0VmFsdWUoZmxv
YXQgdmFsdWUpCiB7CiAgICAgc3dpdGNoIChtX3VuaXRUeXBlKSB7CiAgICAgY2FzZSBTVkdfQU5H
TEVUWVBFX0dSQUQ6CkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgU1ZHQW5nbGU6OnNldFZhbHVlKGZs
b2F0IHZhbHVlKQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1TdHJpbmcgU1ZHQW5n
bGU6OnZhbHVlQXNTdHJpbmcoKSBjb25zdAorU3RyaW5nIFNWR0FuZ2xlVmFsdWU6OnZhbHVlQXNT
dHJpbmcoKSBjb25zdAogewogICAgIHN3aXRjaCAobV91bml0VHlwZSkgewogICAgIGNhc2UgU1ZH
X0FOR0xFVFlQRV9ERUc6CkBAIC04MSwyNiArODEsMjYgQEAgU3RyaW5nIFNWR0FuZ2xlOjp2YWx1
ZUFzU3RyaW5nKCkgY29uc3QKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLXN0YXRpYyBpbmxp
bmUgU1ZHQW5nbGU6OlNWR0FuZ2xlVHlwZSBwYXJzZUFuZ2xlVHlwZShjb25zdCBVQ2hhciogcHRy
LCBjb25zdCBVQ2hhciogZW5kKQorc3RhdGljIGlubGluZSBTVkdBbmdsZVZhbHVlOjpUeXBlIHBh
cnNlQW5nbGVUeXBlKGNvbnN0IFVDaGFyKiBwdHIsIGNvbnN0IFVDaGFyKiBlbmQpCiB7CiAgICAg
c3dpdGNoIChlbmQgLSBwdHIpIHsKICAgICBjYXNlIDA6Ci0gICAgICAgIHJldHVybiBTVkdBbmds
ZTo6U1ZHX0FOR0xFVFlQRV9VTlNQRUNJRklFRDsKKyAgICAgICAgcmV0dXJuIFNWR0FuZ2xlVmFs
dWU6OlNWR19BTkdMRVRZUEVfVU5TUEVDSUZJRUQ7CiAgICAgY2FzZSAzOgogICAgICAgICBpZiAo
cHRyWzBdID09ICdkJyAmJiBwdHJbMV0gPT0gJ2UnICYmIHB0clsyXSA9PSAnZycpCi0gICAgICAg
ICAgICByZXR1cm4gU1ZHQW5nbGU6OlNWR19BTkdMRVRZUEVfREVHOworICAgICAgICAgICAgcmV0
dXJuIFNWR0FuZ2xlVmFsdWU6OlNWR19BTkdMRVRZUEVfREVHOwogICAgICAgICBpZiAocHRyWzBd
ID09ICdyJyAmJiBwdHJbMV0gPT0gJ2EnICYmIHB0clsyXSA9PSAnZCcpCi0gICAgICAgICAgICBy
ZXR1cm4gU1ZHQW5nbGU6OlNWR19BTkdMRVRZUEVfUkFEOworICAgICAgICAgICAgcmV0dXJuIFNW
R0FuZ2xlVmFsdWU6OlNWR19BTkdMRVRZUEVfUkFEOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IDQ6CiAgICAgICAgIGlmIChwdHJbMF0gPT0gJ2cnICYmIHB0clsxXSA9PSAncicgJiYgcHRyWzJd
ID09ICdhJyAmJiBwdHJbM10gPT0gJ2QnKQotICAgICAgICAgICAgcmV0dXJuIFNWR0FuZ2xlOjpT
VkdfQU5HTEVUWVBFX0dSQUQ7CisgICAgICAgICAgICByZXR1cm4gU1ZHQW5nbGVWYWx1ZTo6U1ZH
X0FOR0xFVFlQRV9HUkFEOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgcmV0dXJuIFNWR0Fu
Z2xlOjpTVkdfQU5HTEVUWVBFX1VOS05PV047CisgICAgcmV0dXJuIFNWR0FuZ2xlVmFsdWU6OlNW
R19BTkdMRVRZUEVfVU5LTk9XTjsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gU1ZHQW5nbGU6OnNl
dFZhbHVlQXNTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK0V4Y2VwdGlvbk9yPHZvaWQ+IFNW
R0FuZ2xlVmFsdWU6OnNldFZhbHVlQXNTdHJpbmcoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAg
ICBpZiAodmFsdWUuaXNFbXB0eSgpKSB7CiAgICAgICAgIG1fdW5pdFR5cGUgPSBTVkdfQU5HTEVU
WVBFX1VOU1BFQ0lGSUVEOwpAQCAtMTI0LDE3ICsxMjQsMTcgQEAgRXhjZXB0aW9uT3I8dm9pZD4g
U1ZHQW5nbGU6OnNldFZhbHVlQXNTdAogICAgIHJldHVybiB7IH07CiB9CiAKLUV4Y2VwdGlvbk9y
PHZvaWQ+IFNWR0FuZ2xlOjpuZXdWYWx1ZVNwZWNpZmllZFVuaXRzKHVuc2lnbmVkIHNob3J0IHVu
aXRUeXBlLCBmbG9hdCB2YWx1ZUluU3BlY2lmaWVkVW5pdHMpCitFeGNlcHRpb25Pcjx2b2lkPiBT
VkdBbmdsZVZhbHVlOjpuZXdWYWx1ZVNwZWNpZmllZFVuaXRzKHVuc2lnbmVkIHNob3J0IHVuaXRU
eXBlLCBmbG9hdCB2YWx1ZUluU3BlY2lmaWVkVW5pdHMpCiB7CiAgICAgaWYgKHVuaXRUeXBlID09
IFNWR19BTkdMRVRZUEVfVU5LTk9XTiB8fCB1bml0VHlwZSA+IFNWR19BTkdMRVRZUEVfR1JBRCkK
ICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5PVF9TVVBQT1JURURfRVJSIH07CiAKLSAgICBt
X3VuaXRUeXBlID0gc3RhdGljX2Nhc3Q8U1ZHQW5nbGVUeXBlPih1bml0VHlwZSk7CisgICAgbV91
bml0VHlwZSA9IHN0YXRpY19jYXN0PFR5cGU+KHVuaXRUeXBlKTsKICAgICBtX3ZhbHVlSW5TcGVj
aWZpZWRVbml0cyA9IHZhbHVlSW5TcGVjaWZpZWRVbml0czsKICAgICByZXR1cm4geyB9OwogfQog
Ci1FeGNlcHRpb25Pcjx2b2lkPiBTVkdBbmdsZTo6Y29udmVydFRvU3BlY2lmaWVkVW5pdHModW5z
aWduZWQgc2hvcnQgdW5pdFR5cGUpCitFeGNlcHRpb25Pcjx2b2lkPiBTVkdBbmdsZVZhbHVlOjpj
b252ZXJ0VG9TcGVjaWZpZWRVbml0cyh1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSkKIHsKICAgICBp
ZiAodW5pdFR5cGUgPT0gU1ZHX0FOR0xFVFlQRV9VTktOT1dOIHx8IG1fdW5pdFR5cGUgPT0gU1ZH
X0FOR0xFVFlQRV9VTktOT1dOIHx8IHVuaXRUeXBlID4gU1ZHX0FOR0xFVFlQRV9HUkFEKQogICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTk9UX1NVUFBPUlRFRF9FUlIgfTsKQEAgLTE5Niw3ICsx
OTYsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBTVkdBbmdsZTo6Y29udmVydFRvU3BlCiAgICAgICAg
IGJyZWFrOwogICAgIH0KIAotICAgIG1fdW5pdFR5cGUgPSBzdGF0aWNfY2FzdDxTVkdBbmdsZVR5
cGU+KHVuaXRUeXBlKTsKKyAgICBtX3VuaXRUeXBlID0gc3RhdGljX2Nhc3Q8VHlwZT4odW5pdFR5
cGUpOwogCiAgICAgcmV0dXJuIHsgfTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmdsZVZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuZ2xlVmFs
dWUuaAkocmV2aXNpb24gMjA4NDU4KQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5nbGUu
aDoyMDg0NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5nbGVWYWx1ZS5oCSh3b3JraW5n
IGNvcHkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5nbGVWYWx1ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmdsZVZhbHVlLmgJKHJldmlzaW9uIDIwODQ1
OCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmdsZVZhbHVlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDEwICsyNiwxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNWR0Fu
Z2xlIHsKK2NsYXNzIFNWR0FuZ2xlVmFsdWUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogcHVibGljOgotICAgIGVudW0gU1ZHQW5nbGVUeXBlIHsKKyAgICBlbnVtIFR5cGUgewogICAg
ICAgICBTVkdfQU5HTEVUWVBFX1VOS05PV04gPSAwLAogICAgICAgICBTVkdfQU5HTEVUWVBFX1VO
U1BFQ0lGSUVEID0gMSwKICAgICAgICAgU1ZHX0FOR0xFVFlQRV9ERUcgPSAyLApAQCAtMzcsNyAr
MzcsNyBAQCBwdWJsaWM6CiAgICAgICAgIFNWR19BTkdMRVRZUEVfR1JBRCA9IDQKICAgICB9Owog
Ci0gICAgU1ZHQW5nbGVUeXBlIHVuaXRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV91bml0VHlwZTsg
fQorICAgIFR5cGUgdW5pdFR5cGUoKSBjb25zdCB7IHJldHVybiBtX3VuaXRUeXBlOyB9CiAKICAg
ICB2b2lkIHNldFZhbHVlKGZsb2F0KTsKICAgICBmbG9hdCB2YWx1ZSgpIGNvbnN0OwpAQCAtNTIs
MTMgKzUyLDEzIEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBjb252ZXJ0VG9TcGVj
aWZpZWRVbml0cyh1bnNpZ25lZCBzaG9ydCB1bml0VHlwZSk7CiAKIHByaXZhdGU6Ci0gICAgU1ZH
QW5nbGVUeXBlIG1fdW5pdFR5cGUgeyBTVkdfQU5HTEVUWVBFX1VOU1BFQ0lGSUVEIH07CisgICAg
VHlwZSBtX3VuaXRUeXBlIHsgU1ZHX0FOR0xFVFlQRV9VTlNQRUNJRklFRCB9OwogICAgIGZsb2F0
IG1fdmFsdWVJblNwZWNpZmllZFVuaXRzIHsgMCB9OwogfTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3Qg
U1ZHUHJvcGVydHlUcmFpdHM8U1ZHQW5nbGU+IHsKLSAgICBzdGF0aWMgU1ZHQW5nbGUgaW5pdGlh
bFZhbHVlKCkgeyByZXR1cm4gU1ZHQW5nbGUoKTsgfQotICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJp
bmcoY29uc3QgU1ZHQW5nbGUmIHR5cGUpIHsgcmV0dXJuIHR5cGUudmFsdWVBc1N0cmluZygpOyB9
Cit0ZW1wbGF0ZTw+IHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxTVkdBbmdsZVZhbHVlPiB7Cisg
ICAgc3RhdGljIFNWR0FuZ2xlVmFsdWUgaW5pdGlhbFZhbHVlKCkgeyByZXR1cm4gU1ZHQW5nbGVW
YWx1ZSgpOyB9CisgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBTVkdBbmdsZVZhbHVl
JiB0eXBlKSB7IHJldHVybiB0eXBlLnZhbHVlQXNTdHJpbmcoKTsgfQogfTsKIAotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQW5n
bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEFuZ2xl
LmNwcAkocmV2aXNpb24gMjA4NDU4KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVk
QW5nbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxMCArMzIsMTAgQEAgU1ZHQW5pbWF0ZWRB
bmdsZUFuaW1hdG9yOjpTVkdBbmltYXRlZEFuZwogCiBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0
ZWRUeXBlPiBTVkdBbmltYXRlZEFuZ2xlQW5pbWF0b3I6OmNvbnN0cnVjdEZyb21TdHJpbmcoY29u
c3QgU3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAgYXV0byBhbmltYXRlZFR5cGUgPSBTVkdBbmltYXRl
ZFR5cGU6OmNyZWF0ZUFuZ2xlQW5kRW51bWVyYXRpb24oc3RkOjptYWtlX3VuaXF1ZTxzdGQ6OnBh
aXI8U1ZHQW5nbGUsIHVuc2lnbmVkPj4oKSk7Ci0gICAgc3RkOjpwYWlyPFNWR0FuZ2xlLCB1bnNp
Z25lZD4mIGFuaW1hdGVkUGFpciA9IGFuaW1hdGVkVHlwZS0+YW5nbGVBbmRFbnVtZXJhdGlvbigp
OworICAgIGF1dG8gYW5pbWF0ZWRUeXBlID0gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVBbmdsZUFu
ZEVudW1lcmF0aW9uKHN0ZDo6bWFrZV91bmlxdWU8c3RkOjpwYWlyPFNWR0FuZ2xlVmFsdWUsIHVu
c2lnbmVkPj4oKSk7CisgICAgYXV0byYgYW5pbWF0ZWRQYWlyID0gYW5pbWF0ZWRUeXBlLT5hbmds
ZUFuZEVudW1lcmF0aW9uKCk7CiAKLSAgICBTVkdBbmdsZSBhbmdsZTsKKyAgICBTVkdBbmdsZVZh
bHVlIGFuZ2xlOwogICAgIFNWR01hcmtlck9yaWVudFR5cGUgb3JpZW50VHlwZSA9IFNWR1Byb3Bl
cnR5VHJhaXRzPFNWR01hcmtlck9yaWVudFR5cGU+Ojpmcm9tU3RyaW5nKHN0cmluZywgYW5nbGUp
OwogICAgIGlmIChvcmllbnRUeXBlID4gMCkKICAgICAgICAgYW5pbWF0ZWRQYWlyLnNlY29uZCA9
IG9yaWVudFR5cGU7CkBAIC03NSwxMyArNzUsMTMgQEAgdm9pZCBTVkdBbmltYXRlZEFuZ2xlQW5p
bWF0b3I6OmFkZEFuaW1hdAogICAgIEFTU0VSVChmcm9tLT50eXBlKCkgPT0gQW5pbWF0ZWRBbmds
ZSk7CiAgICAgQVNTRVJUKGZyb20tPnR5cGUoKSA9PSB0by0+dHlwZSgpKTsKIAotICAgIGNvbnN0
IHN0ZDo6cGFpcjxTVkdBbmdsZSwgdW5zaWduZWQ+JiBmcm9tQW5nbGVBbmRFbnVtZXJhdGlvbiA9
IGZyb20tPmFuZ2xlQW5kRW51bWVyYXRpb24oKTsKLSAgICBzdGQ6OnBhaXI8U1ZHQW5nbGUsIHVu
c2lnbmVkPiYgdG9BbmdsZUFuZEVudW1lcmF0aW9uID0gdG8tPmFuZ2xlQW5kRW51bWVyYXRpb24o
KTsKKyAgICBjb25zdCBhdXRvJiBmcm9tQW5nbGVBbmRFbnVtZXJhdGlvbiA9IGZyb20tPmFuZ2xl
QW5kRW51bWVyYXRpb24oKTsKKyAgICBhdXRvJiB0b0FuZ2xlQW5kRW51bWVyYXRpb24gPSB0by0+
YW5nbGVBbmRFbnVtZXJhdGlvbigpOwogICAgIC8vIE9ubHkgcmVzcGVjdCBieSBhbmltYXRpb25z
LCBpZiBmcm9tIGFuZCBieSBhcmUgYm90aCBzcGVjaWZpZWQgaW4gYW5nbGVzIChhbmQgbm90IGVn
LiAnYXV0bycpLgogICAgIGlmIChmcm9tQW5nbGVBbmRFbnVtZXJhdGlvbi5zZWNvbmQgIT0gdG9B
bmdsZUFuZEVudW1lcmF0aW9uLnNlY29uZCB8fCBmcm9tQW5nbGVBbmRFbnVtZXJhdGlvbi5zZWNv
bmQgIT0gU1ZHTWFya2VyT3JpZW50QW5nbGUpCiAgICAgICAgIHJldHVybjsKLSAgICBjb25zdCBT
VkdBbmdsZSYgZnJvbUFuZ2xlID0gZnJvbUFuZ2xlQW5kRW51bWVyYXRpb24uZmlyc3Q7Ci0gICAg
U1ZHQW5nbGUmIHRvQW5nbGUgPSB0b0FuZ2xlQW5kRW51bWVyYXRpb24uZmlyc3Q7CisgICAgY29u
c3QgYXV0byYgZnJvbUFuZ2xlID0gZnJvbUFuZ2xlQW5kRW51bWVyYXRpb24uZmlyc3Q7CisgICAg
YXV0byYgdG9BbmdsZSA9IHRvQW5nbGVBbmRFbnVtZXJhdGlvbi5maXJzdDsKICAgICB0b0FuZ2xl
LnNldFZhbHVlKHRvQW5nbGUudmFsdWUoKSArIGZyb21BbmdsZS52YWx1ZSgpKTsKIH0KIApAQCAt
OTAsMTAgKzkwLDEwIEBAIHZvaWQgU1ZHQW5pbWF0ZWRBbmdsZUFuaW1hdG9yOjpjYWxjdWxhdGUK
ICAgICBBU1NFUlQobV9hbmltYXRpb25FbGVtZW50KTsKICAgICBBU1NFUlQobV9jb250ZXh0RWxl
bWVudCk7CiAKLSAgICBjb25zdCBzdGQ6OnBhaXI8U1ZHQW5nbGUsIHVuc2lnbmVkPiYgZnJvbUFu
Z2xlQW5kRW51bWVyYXRpb24gPSBtX2FuaW1hdGlvbkVsZW1lbnQtPmFuaW1hdGlvbk1vZGUoKSA9
PSBUb0FuaW1hdGlvbiA/IGFuaW1hdGVkLT5hbmdsZUFuZEVudW1lcmF0aW9uKCkgOiBmcm9tLT5h
bmdsZUFuZEVudW1lcmF0aW9uKCk7Ci0gICAgY29uc3Qgc3RkOjpwYWlyPFNWR0FuZ2xlLCB1bnNp
Z25lZD4mIHRvQW5nbGVBbmRFbnVtZXJhdGlvbiA9IHRvLT5hbmdsZUFuZEVudW1lcmF0aW9uKCk7
Ci0gICAgY29uc3Qgc3RkOjpwYWlyPFNWR0FuZ2xlLCB1bnNpZ25lZD4mIHRvQXRFbmRPZkR1cmF0
aW9uQW5nbGVBbmRFbnVtZXJhdGlvbiA9IHRvQXRFbmRPZkR1cmF0aW9uLT5hbmdsZUFuZEVudW1l
cmF0aW9uKCk7Ci0gICAgc3RkOjpwYWlyPFNWR0FuZ2xlLCB1bnNpZ25lZD4mIGFuaW1hdGVkQW5n
bGVBbmRFbnVtZXJhdGlvbiA9IGFuaW1hdGVkLT5hbmdsZUFuZEVudW1lcmF0aW9uKCk7CisgICAg
Y29uc3QgYXV0byYgZnJvbUFuZ2xlQW5kRW51bWVyYXRpb24gPSBtX2FuaW1hdGlvbkVsZW1lbnQt
PmFuaW1hdGlvbk1vZGUoKSA9PSBUb0FuaW1hdGlvbiA/IGFuaW1hdGVkLT5hbmdsZUFuZEVudW1l
cmF0aW9uKCkgOiBmcm9tLT5hbmdsZUFuZEVudW1lcmF0aW9uKCk7CisgICAgYXV0byYgdG9Bbmds
ZUFuZEVudW1lcmF0aW9uID0gdG8tPmFuZ2xlQW5kRW51bWVyYXRpb24oKTsKKyAgICBhdXRvJiB0
b0F0RW5kT2ZEdXJhdGlvbkFuZ2xlQW5kRW51bWVyYXRpb24gPSB0b0F0RW5kT2ZEdXJhdGlvbi0+
YW5nbGVBbmRFbnVtZXJhdGlvbigpOworICAgIGF1dG8mIGFuaW1hdGVkQW5nbGVBbmRFbnVtZXJh
dGlvbiA9IGFuaW1hdGVkLT5hbmdsZUFuZEVudW1lcmF0aW9uKCk7CiAKICAgICBpZiAoZnJvbUFu
Z2xlQW5kRW51bWVyYXRpb24uc2Vjb25kICE9IHRvQW5nbGVBbmRFbnVtZXJhdGlvbi5zZWNvbmQp
IHsKICAgICAgICAgLy8gRGlzY3JldGUgYW5pbWF0aW9uIC0gbm8gbGluZWFyIGludGVycG9sYXRp
b24gcG9zc2libGUgYmV0d2VlbiB2YWx1ZXMgKGUuZy4gYXV0byB0byBhbmdsZSkuCkBAIC0xMTcs
OCArMTE3LDggQEAgdm9pZCBTVkdBbmltYXRlZEFuZ2xlQW5pbWF0b3I6OmNhbGN1bGF0ZQogICAg
ICAgICAvLyBSZWd1bGFyIGZyb20gYW5nbGUgdG8gYW5nbGUgYW5pbWF0aW9uLCB3aXRoIHN1cHBv
cnQgZm9yIHNtb290aCBpbnRlcnBvbGF0aW9uLCBhbmQgYWRkaXRpdmUgYW5kIGFjY3VtdWxhdGVk
IGFuaW1hdGlvbi4KICAgICAgICAgYW5pbWF0ZWRBbmdsZUFuZEVudW1lcmF0aW9uLnNlY29uZCA9
IFNWR01hcmtlck9yaWVudEFuZ2xlOwogCi0gICAgICAgIFNWR0FuZ2xlJiBhbmltYXRlZFNWR0Fu
Z2xlID0gYW5pbWF0ZWRBbmdsZUFuZEVudW1lcmF0aW9uLmZpcnN0OwotICAgICAgICBjb25zdCBT
VkdBbmdsZSYgdG9BdEVuZE9mRHVyYXRpb25TVkdBbmdsZSA9IHRvQXRFbmRPZkR1cmF0aW9uQW5n
bGVBbmRFbnVtZXJhdGlvbi5maXJzdDsKKyAgICAgICAgYXV0byYgYW5pbWF0ZWRTVkdBbmdsZSA9
IGFuaW1hdGVkQW5nbGVBbmRFbnVtZXJhdGlvbi5maXJzdDsKKyAgICAgICAgY29uc3QgYXV0byYg
dG9BdEVuZE9mRHVyYXRpb25TVkdBbmdsZSA9IHRvQXRFbmRPZkR1cmF0aW9uQW5nbGVBbmRFbnVt
ZXJhdGlvbi5maXJzdDsKICAgICAgICAgZmxvYXQgYW5pbWF0ZWRBbmdsZSA9IGFuaW1hdGVkU1ZH
QW5nbGUudmFsdWUoKTsKICAgICAgICAgbV9hbmltYXRpb25FbGVtZW50LT5hbmltYXRlQWRkaXRp
dmVOdW1iZXIocGVyY2VudGFnZSwgcmVwZWF0Q291bnQsIGZyb21BbmdsZUFuZEVudW1lcmF0aW9u
LmZpcnN0LnZhbHVlKCksIHRvQW5nbGVBbmRFbnVtZXJhdGlvbi5maXJzdC52YWx1ZSgpLCB0b0F0
RW5kT2ZEdXJhdGlvblNWR0FuZ2xlLnZhbHVlKCksIGFuaW1hdGVkQW5nbGUpOwogICAgICAgICBh
bmltYXRlZFNWR0FuZ2xlLnNldFZhbHVlKGFuaW1hdGVkQW5nbGUpOwpAQCAtMTM2LDkgKzEzNiw5
IEBAIHZvaWQgU1ZHQW5pbWF0ZWRBbmdsZUFuaW1hdG9yOjpjYWxjdWxhdGUKIAogZmxvYXQgU1ZH
QW5pbWF0ZWRBbmdsZUFuaW1hdG9yOjpjYWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmIGZy
b21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpCiB7Ci0gICAgU1ZHQW5nbGUgZnJvbSA9
IFNWR0FuZ2xlKCk7CisgICAgYXV0byBmcm9tID0gU1ZHQW5nbGVWYWx1ZSgpOwogICAgIGZyb20u
c2V0VmFsdWVBc1N0cmluZyhmcm9tU3RyaW5nKTsKLSAgICBTVkdBbmdsZSB0byA9IFNWR0FuZ2xl
KCk7CisgICAgYXV0byB0byA9IFNWR0FuZ2xlVmFsdWUoKTsKICAgICB0by5zZXRWYWx1ZUFzU3Ry
aW5nKHRvU3RyaW5nKTsKICAgICByZXR1cm4gZmFic2YodG8udmFsdWUoKSAtIGZyb20udmFsdWUo
KSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRBbmdsZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEFuZ2xlLmgJKHJldmlzaW9u
IDIwODQ1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEFuZ2xlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI2LDExICsyNiwxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXR5
cGVkZWYgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmY8U1ZHQW5nbGU+IFNWR0FuaW1hdGVkQW5n
bGU7Cit1c2luZyBTVkdBbmltYXRlZEFuZ2xlID0gU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmY8
U1ZHQW5nbGU+OwogCiAvLyBIZWxwZXIgbWFjcm9zIHRvIGRlY2xhcmUvZGVmaW5lIGEgU1ZHQW5p
bWF0ZWRBbmdsZSBvYmplY3QuIFNWR0FuaW1hdGVkQW5nbGUgaXMgb25seSB1c2VkIGluIHRoZSBT
VkcgRE9NIGZvciBTVkdNYXJrZXJFbGVtZW50LgogI2RlZmluZSBERUNMQVJFX0FOSU1BVEVEX0FO
R0xFKFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpIFwKLURFQ0xBUkVfQU5JTUFURURfUFJP
UEVSVFkoU1ZHQW5pbWF0ZWRBbmdsZSwgU1ZHQW5nbGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJv
cGVydHksICkKK0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFkoU1ZHQW5pbWF0ZWRBbmdsZSwgU1ZH
QW5nbGVWYWx1ZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSwgKQogCiAvLyBPbmx5IHVz
ZWQgZm9yIFNWR01hcmtlckVsZW1lbnRzIG9yaWVudEF0dHIsIHdoaWNoIG1hcHMgdG8gU1ZHQW5p
bWF0ZWRBbmdsZSBvcmllbnRBbmdsZSBhbmQgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBvcmllbnRU
eXBlLgogI2RlZmluZSBERUZJTkVfQU5JTUFURURfQU5HTEVfQU5EX0VOVU1FUkFUSU9OKE93bmVy
VHlwZSwgRE9NQXR0cmlidXRlLCBTVkdET01BdHRyaWJ1dGVJZGVudGlmaWVyLCBVcHBlclByb3Bl
cnR5LCBMb3dlclByb3BlcnR5KSBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWRMZW5ndGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRM
ZW5ndGguaAkocmV2aXNpb24gMjA4NDU4KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVkTGVuZ3RoLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDcgKzI2LDEwIEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotdHlwZWRlZiBTVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZjxTVkdMZW5n
dGg+IFNWR0FuaW1hdGVkTGVuZ3RoOwordGVtcGxhdGU8dHlwZW5hbWUgVD4gCitjbGFzcyBTVkdQ
cm9wZXJ0eVRlYXJPZmY7CisKK3VzaW5nIFNWR0FuaW1hdGVkTGVuZ3RoID0gU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eVRlYXJPZmY8U1ZHUHJvcGVydHlUZWFyT2ZmPFNWR0xlbmd0aD4+OwogCiAvLyBIZWxw
ZXIgbWFjcm9zIHRvIGRlY2xhcmUvZGVmaW5lIGEgU1ZHQW5pbWF0ZWRMZW5ndGggb2JqZWN0CiAj
ZGVmaW5lIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVy
dHkpIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0
UmF0aW8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQcmVz
ZXJ2ZUFzcGVjdFJhdGlvLmgJKHJldmlzaW9uIDIwODQ1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8uaAkod29ya2luZyBjb3B5KQpAQCAtMjYs
NyArMjYsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10eXBlZGVmIFNWR0FuaW1hdGVk
UHJvcGVydHlUZWFyT2ZmPFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8+IFNWR0FuaW1hdGVkUHJlc2Vy
dmVBc3BlY3RSYXRpbzsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IAorY2xhc3MgU1ZHUHJvcGVydHlU
ZWFyT2ZmOworCit1c2luZyBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8gPSBTVkdBbmlt
YXRlZFByb3BlcnR5VGVhck9mZjxTVkdQcm9wZXJ0eVRlYXJPZmY8U1ZHUHJlc2VydmVBc3BlY3RS
YXRpbz4+OwogCiAvLyBIZWxwZXIgbWFjcm9zIHRvIGRlY2xhcmUvZGVmaW5lIGEgU1ZHQW5pbWF0
ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvIG9iamVjdAogI2RlZmluZSBERUNMQVJFX0FOSU1BVEVEX1BS
RVNFUlZFQVNQRUNUUkFUSU8oVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXApJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUmVjdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFJlY3QuaAkocmV2aXNpb24gMjA4NDU4KQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUmVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3
ICsyNywxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXR5cGVkZWYgU1ZHQW5pbWF0ZWRQ
cm9wZXJ0eVRlYXJPZmY8RmxvYXRSZWN0PiBTVkdBbmltYXRlZFJlY3Q7Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiAKK2NsYXNzIFNWR1Byb3BlcnR5VGVhck9mZjsKKwordXNpbmcgU1ZHQW5pbWF0ZWRS
ZWN0ID0gU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmY8U1ZHUHJvcGVydHlUZWFyT2ZmPEZsb2F0
UmVjdD4+OwogCiAvLyBIZWxwZXIgbWFjcm9zIHRvIGRlY2xhcmUvZGVmaW5lIGEgU1ZHQW5pbWF0
ZWRSZWN0IG9iamVjdAogI2RlZmluZSBERUNMQVJFX0FOSU1BVEVEX1JFQ1QoVXBwZXJQcm9wZXJ0
eSwgTG93ZXJQcm9wZXJ0eSkgXApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVk
VHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlw
ZS5jcHAJKHJldmlzaW9uIDIwODQ1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
ZFR5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MCw3ICs5MCw3IEBAIFNWR0FuaW1hdGVkVHlw
ZTo6flNWR0FuaW1hdGVkVHlwZSgpCiAgICAgfQogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5p
bWF0ZWRUeXBlPiBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZUFuZ2xlQW5kRW51bWVyYXRpb24oc3Rk
Ojp1bmlxdWVfcHRyPHN0ZDo6cGFpcjxTVkdBbmdsZSwgdW5zaWduZWQ+PiBhbmdsZUFuZEVudW1l
cmF0aW9uKQorc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRUeXBl
OjpjcmVhdGVBbmdsZUFuZEVudW1lcmF0aW9uKHN0ZDo6dW5pcXVlX3B0cjxzdGQ6OnBhaXI8U1ZH
QW5nbGVWYWx1ZSwgdW5zaWduZWQ+PiBhbmdsZUFuZEVudW1lcmF0aW9uKQogewogICAgIEFTU0VS
VChhbmdsZUFuZEVudW1lcmF0aW9uKTsKICAgICBhdXRvIGFuaW1hdGVkVHlwZSA9IHN0ZDo6bWFr
ZV91bmlxdWU8U1ZHQW5pbWF0ZWRUeXBlPihBbmltYXRlZEFuZ2xlKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmgJKHJldmlzaW9uIDIwODQ1OCkKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjEsNyArMjEsNyBA
QAogI2RlZmluZSBTVkdBbmltYXRlZFR5cGVfaAogCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCi0j
aW5jbHVkZSAiU1ZHQW5nbGUuaCIKKyNpbmNsdWRlICJTVkdBbmdsZVZhbHVlLmgiCiAjaW5jbHVk
ZSAiU1ZHQ29sb3IuaCIKICNpbmNsdWRlICJTVkdMZW5ndGguaCIKICNpbmNsdWRlICJTVkdMZW5n
dGhMaXN0LmgiCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICBTVkdBbmltYXRlZFR5cGUo
QW5pbWF0ZWRQcm9wZXJ0eVR5cGUpOwogICAgIHZpcnR1YWwgflNWR0FuaW1hdGVkVHlwZSgpOwog
Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZUFuZ2xl
QW5kRW51bWVyYXRpb24oc3RkOjp1bmlxdWVfcHRyPHN0ZDo6cGFpcjxTVkdBbmdsZSwgdW5zaWdu
ZWQ+Pik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0
ZUFuZ2xlQW5kRW51bWVyYXRpb24oc3RkOjp1bmlxdWVfcHRyPHN0ZDo6cGFpcjxTVkdBbmdsZVZh
bHVlLCB1bnNpZ25lZD4+KTsKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVk
VHlwZT4gY3JlYXRlQm9vbGVhbihzdGQ6OnVuaXF1ZV9wdHI8Ym9vbD4pOwogICAgIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVDb2xvcihzdGQ6OnVuaXF1ZV9w
dHI8Q29sb3I+KTsKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4g
Y3JlYXRlRW51bWVyYXRpb24oc3RkOjp1bmlxdWVfcHRyPHVuc2lnbmVkPik7CkBAIC02Myw3ICs2
Myw3IEBAIHB1YmxpYzoKICAgICBBbmltYXRlZFByb3BlcnR5VHlwZSB0eXBlKCkgY29uc3QgeyBy
ZXR1cm4gbV90eXBlOyB9CiAKICAgICAvLyBOb24tbXV0YWJsZSBhY2Nlc3NvcnMuCi0gICAgY29u
c3Qgc3RkOjpwYWlyPFNWR0FuZ2xlLCB1bnNpZ25lZD4mIGFuZ2xlQW5kRW51bWVyYXRpb24oKSBj
b25zdAorICAgIGNvbnN0IHN0ZDo6cGFpcjxTVkdBbmdsZVZhbHVlLCB1bnNpZ25lZD4mIGFuZ2xl
QW5kRW51bWVyYXRpb24oKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBB
bmltYXRlZEFuZ2xlKTsKICAgICAgICAgcmV0dXJuICptX2RhdGEuYW5nbGVBbmRFbnVtZXJhdGlv
bjsKQEAgLTE2Niw3ICsxNjYsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgLy8gTXV0YWJsZSBh
Y2Nlc3NvcnMuCi0gICAgc3RkOjpwYWlyPFNWR0FuZ2xlLCB1bnNpZ25lZD4mIGFuZ2xlQW5kRW51
bWVyYXRpb24oKQorICAgIHN0ZDo6cGFpcjxTVkdBbmdsZVZhbHVlLCB1bnNpZ25lZD4mIGFuZ2xl
QW5kRW51bWVyYXRpb24oKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBBbmltYXRl
ZEFuZ2xlKTsKICAgICAgICAgcmV0dXJuICptX2RhdGEuYW5nbGVBbmRFbnVtZXJhdGlvbjsKQEAg
LTI4MCw3ICsyODAsNyBAQCBwcml2YXRlOgogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAg
ICBzdGQ6OnBhaXI8U1ZHQW5nbGUsIHVuc2lnbmVkPiogYW5nbGVBbmRFbnVtZXJhdGlvbjsKKyAg
ICAgICAgc3RkOjpwYWlyPFNWR0FuZ2xlVmFsdWUsIHVuc2lnbmVkPiogYW5nbGVBbmRFbnVtZXJh
dGlvbjsKICAgICAgICAgYm9vbCogYm9vbGVhbjsKICAgICAgICAgQ29sb3IqIGNvbG9yOwogICAg
ICAgICB1bnNpZ25lZCogZW51bWVyYXRpb247CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Q29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuaAkocmV2aXNp
b24gMjA4NDU4KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVu
Y3Rpb25FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRl
ICJTVkdBbmltYXRlZEVudW1lcmF0aW9uLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWROdW1iZXIu
aCIKICNpbmNsdWRlICJTVkdBbmltYXRlZE51bWJlckxpc3QuaCIKKyNpbmNsdWRlICJTVkdFbGVt
ZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0xlbmd0aExpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVu
Z3RoTGlzdC5oCShyZXZpc2lvbiAyMDg0NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVu
Z3RoTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw5IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAordGVtcGxhdGU8dHlwZW5hbWUgVD4gCitjbGFzcyBTVkdQcm9wZXJ0eVRlYXJP
ZmY7CisKIGNsYXNzIFNWR0xlbmd0aExpc3QgZmluYWwgOiBwdWJsaWMgVmVjdG9yPFNWR0xlbmd0
aD4gewogcHVibGljOgogICAgIHZvaWQgcGFyc2UoY29uc3QgU3RyaW5nJiB2YWx1ZSwgU1ZHTGVu
Z3RoTW9kZSk7CkBAIC0zMiw3ICszNSw4IEBAIHB1YmxpYzoKIH07CiAKIHRlbXBsYXRlPD4gc3Ry
dWN0IFNWR1Byb3BlcnR5VHJhaXRzPFNWR0xlbmd0aExpc3Q+IHsKLSAgICB0eXBlZGVmIFNWR0xl
bmd0aCBMaXN0SXRlbVR5cGU7CisgICAgdXNpbmcgTGlzdEl0ZW1UeXBlID0gU1ZHTGVuZ3RoOwor
ICAgIHVzaW5nIExpc3RJdGVtVGVhck9mZiA9IFNWR1Byb3BlcnR5VGVhck9mZjxTVkdMZW5ndGg+
OwogCiAgICAgc3RhdGljIFNWR0xlbmd0aExpc3QgaW5pdGlhbFZhbHVlKCkgeyByZXR1cm4gU1ZH
TGVuZ3RoTGlzdCgpOyB9CiAgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBTVkdMZW5n
dGhMaXN0JiB0eXBlKSB7IHJldHVybiB0eXBlLnZhbHVlQXNTdHJpbmcoKTsgfQpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcAkocmV2aXNpb24gMjA4NDU4KQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMzIsNyArMTMyLDcgQEAgdm9pZCBTVkdNYXJrZXJFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShj
bwogICAgIH0KIAogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjpvcmllbnRBdHRyKSB7Ci0gICAg
ICAgIFNWR0FuZ2xlIGFuZ2xlOworICAgICAgICBTVkdBbmdsZVZhbHVlIGFuZ2xlOwogICAgICAg
ICBhdXRvIG9yaWVudFR5cGUgPSBTVkdQcm9wZXJ0eVRyYWl0czxTVkdNYXJrZXJPcmllbnRUeXBl
Pjo6ZnJvbVN0cmluZyh2YWx1ZSwgYW5nbGUpOwogICAgICAgICBpZiAob3JpZW50VHlwZSA+IDAp
CiAgICAgICAgICAgICBzZXRPcmllbnRUeXBlQmFzZVZhbHVlKG9yaWVudFR5cGUpOwpAQCAtMTg5
LDcgKzE4OSw3IEBAIHZvaWQgU1ZHTWFya2VyRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGMKICAg
ICAgICAgb2JqZWN0LT5zZXROZWVkc0xheW91dCgpOwogfQogCi12b2lkIFNWR01hcmtlckVsZW1l
bnQ6OnNldE9yaWVudChTVkdNYXJrZXJPcmllbnRUeXBlIG9yaWVudFR5cGUsIGNvbnN0IFNWR0Fu
Z2xlJiBhbmdsZSkKK3ZvaWQgU1ZHTWFya2VyRWxlbWVudDo6c2V0T3JpZW50KFNWR01hcmtlck9y
aWVudFR5cGUgb3JpZW50VHlwZSwgY29uc3QgU1ZHQW5nbGVWYWx1ZSYgYW5nbGUpCiB7CiAgICAg
c2V0T3JpZW50VHlwZUJhc2VWYWx1ZShvcmllbnRUeXBlKTsKICAgICBzZXRPcmllbnRBbmdsZUJh
c2VWYWx1ZShhbmdsZSk7CkBAIC0yMDYsOSArMjA2LDkgQEAgdm9pZCBTVkdNYXJrZXJFbGVtZW50
OjpzZXRPcmllbnRUb0F1dG8oKQogICAgIHNldE9yaWVudChTVkdNYXJrZXJPcmllbnRBdXRvLCB7
IH0pOwogfQogCi12b2lkIFNWR01hcmtlckVsZW1lbnQ6OnNldE9yaWVudFRvQW5nbGUoY29uc3Qg
U1ZHQW5nbGUmIGFuZ2xlKQordm9pZCBTVkdNYXJrZXJFbGVtZW50OjpzZXRPcmllbnRUb0FuZ2xl
KFNWR0FuZ2xlJiBhbmdsZSkKIHsKLSAgICBzZXRPcmllbnQoU1ZHTWFya2VyT3JpZW50QW5nbGUs
IGFuZ2xlKTsKKyAgICBzZXRPcmllbnQoU1ZHTWFya2VyT3JpZW50QW5nbGUsIGFuZ2xlLnByb3Bl
cnR5UmVmZXJlbmNlKCkpOwogfQogCiBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHTWFya2Vy
RWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0
IFJlbmRlclRyZWVQb3NpdGlvbiYpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2Vy
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVt
ZW50LmgJKHJldmlzaW9uIDIwODQ1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJF
bGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTg2LDcgKzg2LDcgQEAgdGVtcGxhdGU8PiBzdHJ1
Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U1ZHTQogCiAgICAgLy8gdG9TdHJpbmcgaXMgbm90IG5lZWRl
ZCwgc3luY2hyb25pemVPcmllbnRUeXBlKCkgaGFuZGxlcyB0aGlzIG9uIGl0cyBvd24uCiAKLSAg
ICBzdGF0aWMgU1ZHTWFya2VyT3JpZW50VHlwZSBmcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYgdmFs
dWUsIFNWR0FuZ2xlJiBhbmdsZSkKKyAgICBzdGF0aWMgU1ZHTWFya2VyT3JpZW50VHlwZSBmcm9t
U3RyaW5nKGNvbnN0IFN0cmluZyYgdmFsdWUsIFNWR0FuZ2xlVmFsdWUmIGFuZ2xlKQogICAgIHsK
ICAgICAgICAgaWYgKHZhbHVlID09ICJhdXRvIikKICAgICAgICAgICAgIHJldHVybiBTVkdNYXJr
ZXJPcmllbnRBdXRvOwpAQCAtMTIyLDcgKzEyMiw3IEBAIHB1YmxpYzoKICAgICBBZmZpbmVUcmFu
c2Zvcm0gdmlld0JveFRvVmlld1RyYW5zZm9ybShmbG9hdCB2aWV3V2lkdGgsIGZsb2F0IHZpZXdI
ZWlnaHQpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRPcmllbnRUb0F1dG8oKTsKLSAgICB2b2lkIHNl
dE9yaWVudFRvQW5nbGUoY29uc3QgU1ZHQW5nbGUmKTsKKyAgICB2b2lkIHNldE9yaWVudFRvQW5n
bGUoU1ZHQW5nbGUmKTsKIAogICAgIHN0YXRpYyBjb25zdCBTVkdQcm9wZXJ0eUluZm8qIG9yaWVu
dFR5cGVQcm9wZXJ0eUluZm8oKTsKIApAQCAtMTQxLDcgKzE0MSw3IEBAIHByaXZhdGU6CiAKICAg
ICBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZv
aWQgc2V0T3JpZW50KFNWR01hcmtlck9yaWVudFR5cGUsIGNvbnN0IFNWR0FuZ2xlJik7CisgICAg
dm9pZCBzZXRPcmllbnQoU1ZHTWFya2VyT3JpZW50VHlwZSwgY29uc3QgU1ZHQW5nbGVWYWx1ZSYp
OwogCiAgICAgdm9pZCBzeW5jaHJvbml6ZU9yaWVudFR5cGUoKTsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR051bWJlckxpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHTnVtYmVyTGlzdC5oCShyZXZpc2lvbiAyMDg0NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHTnVtYmVyTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw5IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAordGVtcGxhdGU8dHlwZW5hbWUgVD4gCitjbGFzcyBTVkdQcm9w
ZXJ0eVRlYXJPZmY7CisKIGNsYXNzIFNWR051bWJlckxpc3QgZmluYWwgOiBwdWJsaWMgVmVjdG9y
PGZsb2F0PiB7CiBwdWJsaWM6CiAgICAgdm9pZCBwYXJzZShjb25zdCBTdHJpbmcmKTsKQEAgLTMy
LDEwICszNSwxMSBAQCBwdWJsaWM6CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBTVkdQcm9wZXJ0
eVRyYWl0czxTVkdOdW1iZXJMaXN0PiB7Ci0gICAgdHlwZWRlZiBmbG9hdCBMaXN0SXRlbVR5cGU7
Ci0KICAgICBzdGF0aWMgU1ZHTnVtYmVyTGlzdCBpbml0aWFsVmFsdWUoKSB7IHJldHVybiBTVkdO
dW1iZXJMaXN0KCk7IH0KICAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFNWR051bWJl
ckxpc3QmIHR5cGUpIHsgcmV0dXJuIHR5cGUudmFsdWVBc1N0cmluZygpOyB9CisKKyAgICB1c2lu
ZyBMaXN0SXRlbVR5cGUgPSBmbG9hdDsKKyAgICB1c2luZyBMaXN0SXRlbVRlYXJPZmYgPSBTVkdQ
cm9wZXJ0eVRlYXJPZmY8ZmxvYXQ+OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0LmgJKHJldmlzaW9uIDIwODQ1OCkKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2
ICsyOSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU1ZHRWxlbWVudDsKIAordGVt
cGxhdGU8dHlwZW5hbWUgVD4gCitjbGFzcyBTVkdQcm9wZXJ0eVRlYXJPZmY7CisKIGNsYXNzIFNW
R1BhdGhTZWdMaXN0IDogcHVibGljIFZlY3RvcjxSZWZQdHI8U1ZHUGF0aFNlZz4+IHsKIHB1Ymxp
YzoKICAgICBleHBsaWNpdCBTVkdQYXRoU2VnTGlzdChTVkdQYXRoU2VnUm9sZSByb2xlKQpAQCAt
NDcsNyArNTAsOSBAQCBwcml2YXRlOgogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBTVkdQcm9wZXJ0eVRy
YWl0czxTVkdQYXRoU2VnTGlzdD4gewogICAgIHN0YXRpYyBTVkdQYXRoU2VnTGlzdCBpbml0aWFs
VmFsdWUoKSB7IHJldHVybiBTVkdQYXRoU2VnTGlzdChQYXRoU2VnVW5kZWZpbmVkUm9sZSk7IH0K
LSAgICB0eXBlZGVmIFJlZlB0cjxTVkdQYXRoU2VnPiBMaXN0SXRlbVR5cGU7CisKKyAgICB1c2lu
ZyBMaXN0SXRlbVR5cGUgPSBSZWZQdHI8U1ZHUGF0aFNlZz47CisgICAgdXNpbmcgTGlzdEl0ZW1U
ZWFyT2ZmID0gU1ZHUHJvcGVydHlUZWFyT2ZmPFJlZlB0cjxTVkdQYXRoU2VnPj47CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9pbnRM
aXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvaW50TGlzdC5oCShy
ZXZpc2lvbiAyMDg0NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9pbnRMaXN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCit0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiAKK2NsYXNzIFNWR1Byb3BlcnR5VGVhck9mZjsKKwogY2xhc3Mg
U1ZHUG9pbnRMaXN0IGZpbmFsIDogcHVibGljIFZlY3RvcjxTVkdQb2ludD4gewogcHVibGljOgog
ICAgIFN0cmluZyB2YWx1ZUFzU3RyaW5nKCkgY29uc3Q7CkBAIC0zMyw3ICszNiw5IEBAIHB1Ymxp
YzoKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U1ZHUG9pbnRMaXN0PiB7
CiAgICAgc3RhdGljIFNWR1BvaW50TGlzdCBpbml0aWFsVmFsdWUoKSB7IHJldHVybiBTVkdQb2lu
dExpc3QoKTsgfQotICAgIHR5cGVkZWYgU1ZHUG9pbnQgTGlzdEl0ZW1UeXBlOworCisgICAgdXNp
bmcgTGlzdEl0ZW1UeXBlID0gU1ZHUG9pbnQ7CisgICAgdXNpbmcgTGlzdEl0ZW1UZWFyT2ZmID0g
U1ZHUHJvcGVydHlUZWFyT2ZmPFNWR1BvaW50PjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAJKHJldmlzaW9uIDIwODQ1
OCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIlJlbmRlclNWR1ZpZXdwb3J0Q29udGFpbmVy
LmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlNNSUxUaW1lQ29udGFpbmVy
LmgiCisjaW5jbHVkZSAiU1ZHQW5nbGUuaCIKICNpbmNsdWRlICJTVkdWaWV3RWxlbWVudC5oIgog
I2luY2x1ZGUgIlNWR1ZpZXdTcGVjLmgiCiAjaW5jbHVkZSAiU3RhdGljTm9kZUxpc3QuaCIKQEAg
LTM1MCw5ICszNTEsOSBAQCBTVkdMZW5ndGggU1ZHU1ZHRWxlbWVudDo6Y3JlYXRlU1ZHTGVuZ3Ro
CiAgICAgcmV0dXJuIHsgfTsKIH0KIAotU1ZHQW5nbGUgU1ZHU1ZHRWxlbWVudDo6Y3JlYXRlU1ZH
QW5nbGUoKQorUmVmPFNWR0FuZ2xlPiBTVkdTVkdFbGVtZW50OjpjcmVhdGVTVkdBbmdsZSgpCiB7
Ci0gICAgcmV0dXJuIHsgfTsKKyAgICByZXR1cm4gU1ZHQW5nbGU6OmNyZWF0ZSgpOwogfQogCiBT
VkdQb2ludCBTVkdTVkdFbGVtZW50OjpjcmVhdGVTVkdQb2ludCgpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdTVkdFbGVtZW50LmgJKHJldmlzaW9uIDIwODQ1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdTVkdFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTVkdBbmdsZTsKIGNsYXNzIFNWR1ZpZXdTcGVjOwog
Y2xhc3MgU01JTFRpbWVDb250YWluZXI7CiAKQEAgLTkwLDcgKzkxLDcgQEAgcHVibGljOiAvLyBE
T00KIAogICAgIHN0YXRpYyBmbG9hdCBjcmVhdGVTVkdOdW1iZXIoKTsKICAgICBzdGF0aWMgU1ZH
TGVuZ3RoIGNyZWF0ZVNWR0xlbmd0aCgpOwotICAgIHN0YXRpYyBTVkdBbmdsZSBjcmVhdGVTVkdB
bmdsZSgpOworICAgIHN0YXRpYyBSZWY8U1ZHQW5nbGU+IGNyZWF0ZVNWR0FuZ2xlKCk7CiAgICAg
c3RhdGljIFNWR1BvaW50IGNyZWF0ZVNWR1BvaW50KCk7CiAgICAgc3RhdGljIFNWR01hdHJpeCBj
cmVhdGVTVkdNYXRyaXgoKTsKICAgICBzdGF0aWMgRmxvYXRSZWN0IGNyZWF0ZVNWR1JlY3QoKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5pZGwJKHJldmlzaW9uIDIwODQ1OCkK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpA
QCAtNjQsNyArNjQsNyBAQCBpbnRlcmZhY2UgU1ZHU1ZHRWxlbWVudCA6IFNWR0dyYXBoaWNzRWxl
CiAKICAgICBTVkdOdW1iZXIgY3JlYXRlU1ZHTnVtYmVyKCk7CiAgICAgU1ZHTGVuZ3RoIGNyZWF0
ZVNWR0xlbmd0aCgpOwotICAgIFNWR0FuZ2xlIGNyZWF0ZVNWR0FuZ2xlKCk7CisgICAgW05ld09i
amVjdF0gU1ZHQW5nbGUgY3JlYXRlU1ZHQW5nbGUoKTsKICAgICBTVkdQb2ludCBjcmVhdGVTVkdQ
b2ludCgpOwogICAgIFNWR01hdHJpeCBjcmVhdGVTVkdNYXRyaXgoKTsKICAgICBTVkdSZWN0IGNy
ZWF0ZVNWR1JlY3QoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHJpbmdMaXN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0cmluZ0xpc3QuaAkocmV2aXNp
b24gMjA4NDU4KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0cmluZ0xpc3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsNiArMjgsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNW
R0VsZW1lbnQ7CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IAorY2xhc3MgU1ZHUHJvcGVydHlUZWFy
T2ZmOworCiBjbGFzcyBTVkdTdHJpbmdMaXN0IGZpbmFsIDogcHVibGljIFZlY3RvcjxTdHJpbmc+
IHsKIHB1YmxpYzoKICAgICBTVkdTdHJpbmdMaXN0KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJp
YnV0ZU5hbWUpCkBAIC00OCw3ICs1MSw4IEBAIHByaXZhdGU6CiB9OwogCiB0ZW1wbGF0ZTw+IHN0
cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxTVkdTdHJpbmdMaXN0PiB7Ci0gICAgdHlwZWRlZiBTdHJp
bmcgTGlzdEl0ZW1UeXBlOworICAgIHVzaW5nIExpc3RJdGVtVHlwZSA9IFN0cmluZzsKKyAgICB1
c2luZyBMaXN0SXRlbVRlYXJPZmYgPSBTVkdQcm9wZXJ0eVRlYXJPZmY8U3RyaW5nPjsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFu
c2Zvcm0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm0u
Y3BwCShyZXZpc2lvbiAyMDg0NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3Jt
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNiBAQAogI2luY2x1ZGUgIkZsb2F0Q29u
dmVyc2lvbi5oIgogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJGbG9hdFNpemUu
aCIKLSNpbmNsdWRlICJTVkdBbmdsZS5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAj
aW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
QnVpbGRlci5oPgpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybUxpc3QuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtTGlzdC5oCShyZXZp
c2lvbiAyMDg0NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtTGlzdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
dGVtcGxhdGU8dHlwZW5hbWUgVD4gCitjbGFzcyBTVkdQcm9wZXJ0eVRlYXJPZmY7CisKIGNsYXNz
IFNWR1RyYW5zZm9ybUxpc3QgZmluYWwgOiBwdWJsaWMgVmVjdG9yPFNWR1RyYW5zZm9ybSwgMT4g
ewogcHVibGljOgogICAgIFNWR1RyYW5zZm9ybSBjcmVhdGVTVkdUcmFuc2Zvcm1Gcm9tTWF0cml4
KGNvbnN0IFNWR01hdHJpeCYpIGNvbnN0OwpAQCAtNDAsNyArNDMsOSBAQCBwdWJsaWM6CiB0ZW1w
bGF0ZTw+IHN0cnVjdCBTVkdQcm9wZXJ0eVRyYWl0czxTVkdUcmFuc2Zvcm1MaXN0PiB7CiAgICAg
c3RhdGljIFNWR1RyYW5zZm9ybUxpc3QgaW5pdGlhbFZhbHVlKCkgeyByZXR1cm4gU1ZHVHJhbnNm
b3JtTGlzdCgpOyB9CiAgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBTVkdUcmFuc2Zv
cm1MaXN0JiB0eXBlKSB7IHJldHVybiB0eXBlLnZhbHVlQXNTdHJpbmcoKTsgfQotICAgIHR5cGVk
ZWYgU1ZHVHJhbnNmb3JtIExpc3RJdGVtVHlwZTsKKworICAgIHVzaW5nIExpc3RJdGVtVHlwZSA9
IFNWR1RyYW5zZm9ybTsKKyAgICB1c2luZyBMaXN0SXRlbVRlYXJPZmYgPSBTVkdQcm9wZXJ0eVRl
YXJPZmY8U1ZHVHJhbnNmb3JtPjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3U3BlYy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1ZpZXdTcGVjLmNwcAkocmV2aXNpb24gMjA4NDU4KQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1ZpZXdTcGVjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIsNiArMjIs
NyBAQAogCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZFRyYW5z
Zm9ybUxpc3QuaCIKKyNpbmNsdWRlICJTVkdFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHRml0VG9W
aWV3Qm94LmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTVkdQYXJzZXJVdGls
aXRpZXMuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVk
UHJvcGVydHlUZWFyT2ZmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL3Byb3Bl
cnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmYuaAkocmV2aXNpb24gMjA4NDU4KQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmYu
aAkod29ya2luZyBjb3B5KQpAQCAtMTgsMTkgKzE4LDE5IEBACiAgKiBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KICAqLwogCi0jaWZuZGVmIFNWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmX2gK
LSNkZWZpbmUgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmZfaAorI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlICJTVkdBbmltYXRlZFByb3BlcnR5LmgiCiAjaW5jbHVkZSAiU1ZHUHJvcGVydHlUZWFy
T2ZmLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdGVtcGxhdGU8dHlwZW5hbWUgUHJvcGVy
dHlUeXBlPgordGVtcGxhdGU8dHlwZW5hbWUgVD4KIGNsYXNzIFNWR0FuaW1hdGVkUHJvcGVydHlU
ZWFyT2ZmIGZpbmFsIDogcHVibGljIFNWR0FuaW1hdGVkUHJvcGVydHkgewogcHVibGljOgotICAg
IHR5cGVkZWYgU1ZHUHJvcGVydHlUZWFyT2ZmPFByb3BlcnR5VHlwZT4gUHJvcGVydHlUZWFyT2Zm
OwotICAgIHR5cGVkZWYgUHJvcGVydHlUeXBlIENvbnRlbnRUeXBlOworICAgIHVzaW5nIFByb3Bl
cnR5VGVhck9mZiA9IFQ7CisgICAgdXNpbmcgUHJvcGVydHlUeXBlID0gdHlwZW5hbWUgUHJvcGVy
dHlUZWFyT2ZmOjpQcm9wZXJ0eVR5cGU7CisgICAgdXNpbmcgQ29udGVudFR5cGUgPSBQcm9wZXJ0
eVR5cGU7CiAKICAgICBSZWZQdHI8UHJvcGVydHlUZWFyT2ZmPiBiYXNlVmFsKCkKICAgICB7CkBA
IC02MiwxMCArNjIsMTAgQEAgcHVibGljOgogICAgICAgICAgICAgbV9hbmltVmFsID0gbnVsbHB0
cjsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmPFNWR0FuaW1hdGVkUHJvcGVydHlUZWFyT2ZmPFBy
b3BlcnR5VHlwZT4+IGNyZWF0ZShTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgQW5pbWF0ZWRQcm9wZXJ0eVR5cGUgYW5pbWF0ZWRQ
cm9wZXJ0eVR5cGUsIFByb3BlcnR5VHlwZSYgcHJvcGVydHkpCisgICAgc3RhdGljIFJlZjxTVkdB
bmltYXRlZFByb3BlcnR5VGVhck9mZjxQcm9wZXJ0eVRlYXJPZmY+PiBjcmVhdGUoU1ZHRWxlbWVu
dCogY29udGV4dEVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIEFu
aW1hdGVkUHJvcGVydHlUeXBlIGFuaW1hdGVkUHJvcGVydHlUeXBlLCBQcm9wZXJ0eVR5cGUmIHBy
b3BlcnR5KQogICAgIHsKICAgICAgICAgQVNTRVJUKGNvbnRleHRFbGVtZW50KTsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmY8UHJvcGVydHlU
eXBlPihjb250ZXh0RWxlbWVudCwgYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWRQcm9wZXJ0eVR5cGUs
IHByb3BlcnR5KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR0FuaW1hdGVkUHJv
cGVydHlUZWFyT2ZmPFByb3BlcnR5VGVhck9mZj4oY29udGV4dEVsZW1lbnQsIGF0dHJpYnV0ZU5h
bWUsIGFuaW1hdGVkUHJvcGVydHlUeXBlLCBwcm9wZXJ0eSkpOwogICAgIH0KIAogICAgIFByb3Bl
cnR5VHlwZSYgY3VycmVudEFuaW1hdGVkVmFsdWUoKQpAQCAtMTIxLDUgKzEyMSwzIEBAIHByaXZh
dGU6CiB9OwogCiB9Ci0KLSNlbmRpZiAvLyBTVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZl9oCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdMaXN0UHJvcGVydHkuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdMaXN0UHJvcGVydHku
aAkocmV2aXNpb24gMjA4NDU4KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZH
TGlzdFByb3BlcnR5LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgog
ICAgIHR5cGVkZWYgU1ZHTGlzdFByb3BlcnR5PFByb3BlcnR5VHlwZT4gU2VsZjsKIAogICAgIHVz
aW5nIExpc3RJdGVtVHlwZSA9IHR5cGVuYW1lIFNWR1Byb3BlcnR5VHJhaXRzPFByb3BlcnR5VHlw
ZT46Okxpc3RJdGVtVHlwZTsKLSAgICB1c2luZyBMaXN0SXRlbVRlYXJPZmYgPSBTVkdQcm9wZXJ0
eVRlYXJPZmY8TGlzdEl0ZW1UeXBlPjsKKyAgICB1c2luZyBMaXN0SXRlbVRlYXJPZmYgPSB0eXBl
bmFtZSBTVkdQcm9wZXJ0eVRyYWl0czxQcm9wZXJ0eVR5cGU+OjpMaXN0SXRlbVRlYXJPZmY7CiAg
ICAgdXNpbmcgUHRyTGlzdEl0ZW1UZWFyT2ZmID0gUmVmUHRyPExpc3RJdGVtVGVhck9mZj47CiAg
ICAgdXNpbmcgQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmID0gU1ZHQW5pbWF0ZWRMaXN0UHJv
cGVydHlUZWFyT2ZmPFByb3BlcnR5VHlwZT47CiAgICAgdXNpbmcgTGlzdFdyYXBwZXJDYWNoZSA9
IHR5cGVuYW1lIEFuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZjo6TGlzdFdyYXBwZXJDYWNoZTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0xpc3RQcm9wZXJ0eVRlYXJP
ZmYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdMaXN0
UHJvcGVydHlUZWFyT2ZmLmgJKHJldmlzaW9uIDIwODQ1OCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR0xpc3RQcm9wZXJ0eVRlYXJPZmYuaAkod29ya2luZyBjb3B5KQpAQCAt
MjYsMTQgKzI2LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHRlbXBsYXRlPHR5cGVuYW1lIFBy
b3BlcnR5VHlwZT4KIGNsYXNzIFNWR0xpc3RQcm9wZXJ0eVRlYXJPZmYgOiBwdWJsaWMgU1ZHTGlz
dFByb3BlcnR5PFByb3BlcnR5VHlwZT4gewogcHVibGljOgotICAgIHR5cGVkZWYgU1ZHTGlzdFBy
b3BlcnR5PFByb3BlcnR5VHlwZT4gQmFzZTsKLSAgICB0eXBlZGVmIFNWR0xpc3RQcm9wZXJ0eVRl
YXJPZmY8UHJvcGVydHlUeXBlPiBTZWxmOworICAgIHVzaW5nIEJhc2UgPSBTVkdMaXN0UHJvcGVy
dHk8UHJvcGVydHlUeXBlPjsKKyAgICB1c2luZyBTZWxmID0gU1ZHTGlzdFByb3BlcnR5VGVhck9m
ZjxQcm9wZXJ0eVR5cGU+OwogCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBTVkdQcm9wZXJ0eVRyYWl0
czxQcm9wZXJ0eVR5cGU+OjpMaXN0SXRlbVR5cGUgTGlzdEl0ZW1UeXBlOwotICAgIHR5cGVkZWYg
U1ZHUHJvcGVydHlUZWFyT2ZmPExpc3RJdGVtVHlwZT4gTGlzdEl0ZW1UZWFyT2ZmOwotICAgIHR5
cGVkZWYgUmVmUHRyPExpc3RJdGVtVGVhck9mZj4gUHRyTGlzdEl0ZW1UZWFyT2ZmOwotICAgIHR5
cGVkZWYgU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmPFByb3BlcnR5VHlwZT4gQW5pbWF0
ZWRMaXN0UHJvcGVydHlUZWFyT2ZmOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgU1ZHQW5pbWF0ZWRM
aXN0UHJvcGVydHlUZWFyT2ZmPFByb3BlcnR5VHlwZT46Okxpc3RXcmFwcGVyQ2FjaGUgTGlzdFdy
YXBwZXJDYWNoZTsKKyAgICB1c2luZyBMaXN0SXRlbVR5cGUgPSB0eXBlbmFtZSBTVkdQcm9wZXJ0
eVRyYWl0czxQcm9wZXJ0eVR5cGU+OjpMaXN0SXRlbVR5cGU7CisgICAgdXNpbmcgTGlzdEl0ZW1U
ZWFyT2ZmID0gdHlwZW5hbWUgU1ZHUHJvcGVydHlUcmFpdHM8UHJvcGVydHlUeXBlPjo6TGlzdEl0
ZW1UZWFyT2ZmOworICAgIHVzaW5nIFB0ckxpc3RJdGVtVGVhck9mZiA9IFJlZlB0cjxMaXN0SXRl
bVRlYXJPZmY+OworICAgIHVzaW5nIEFuaW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZiA9IFNWR0Fu
aW1hdGVkTGlzdFByb3BlcnR5VGVhck9mZjxQcm9wZXJ0eVR5cGU+OworICAgIHVzaW5nIExpc3RX
cmFwcGVyQ2FjaGUgPSB0eXBlbmFtZSBTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmY8UHJv
cGVydHlUeXBlPjo6TGlzdFdyYXBwZXJDYWNoZTsKIAogICAgIHVzaW5nIEJhc2U6Om1fcm9sZTsK
ICAgICB1c2luZyBCYXNlOjptX3ZhbHVlczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9wcm9w
ZXJ0aWVzL1NWR1Byb3BlcnR5VGVhck9mZi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5VGVhck9mZi5oCShyZXZpc2lvbiAyMDg0NTgpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eVRlYXJPZmYuaAkod29y
a2luZyBjb3B5KQpAQCAtMjAsMjIgKzIwLDI1IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVk
ZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZFByb3BlcnR5LmgiCi0jaW5j
bHVkZSAiU1ZHRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR1Byb3BlcnR5LmgiCiAjaW5jbHVkZSA8
d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBTVkdFbGVtZW50
OworCiBjbGFzcyBTVkdQcm9wZXJ0eVRlYXJPZmZCYXNlIDogcHVibGljIFNWR1Byb3BlcnR5IHsK
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoV3JhcHBlcigpID0gMDsKIH07CiAKLXRl
bXBsYXRlPHR5cGVuYW1lIFByb3BlcnR5VHlwZT4KK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CiBjbGFz
cyBTVkdQcm9wZXJ0eVRlYXJPZmYgOiBwdWJsaWMgU1ZHUHJvcGVydHlUZWFyT2ZmQmFzZSB7CiBw
dWJsaWM6Ci0gICAgdHlwZWRlZiBTVkdQcm9wZXJ0eVRlYXJPZmY8UHJvcGVydHlUeXBlPiBTZWxm
OworICAgIHVzaW5nIFByb3BlcnR5VHlwZSA9IFQ7CisgICAgdXNpbmcgU2VsZiA9IFNWR1Byb3Bl
cnR5VGVhck9mZjxQcm9wZXJ0eVR5cGU+OwogCiAgICAgLy8gVXNlZCBmb3IgY2hpbGQgdHlwZXMg
KGJhc2VWYWwvYW5pbVZhbCkgb2YgYSBTVkdBbmltYXRlZCogcHJvcGVydHkgKGZvciBleGFtcGxl
OiBTVkdBbmltYXRlZExlbmd0aDo6YmFzZVZhbCgpKS4KICAgICAvLyBBbHNvIHVzZWQgZm9yIGxp
c3QgdGVhciBvZmZzIChmb3IgZXhhbXBsZTogdGV4dC54LmJhc2VWYWwuZ2V0SXRlbSgwKSkuCkBA
IC01Niw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2Vs
Zihpbml0aWFsVmFsdWUpKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0
aWMgRXhjZXB0aW9uT3I8UmVmPFNlbGY+PiBjcmVhdGUoRXhjZXB0aW9uT3I8VD4mJiBpbml0aWFs
VmFsdWUpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxT
ZWxmPj4gY3JlYXRlKEV4Y2VwdGlvbk9yPFU+JiYgaW5pdGlhbFZhbHVlKQogICAgIHsKICAgICAg
ICAgaWYgKGluaXRpYWxWYWx1ZS5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVybiBp
bml0aWFsVmFsdWUucmVsZWFzZUV4Y2VwdGlvbigpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>