<?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>188328</bug_id>
          
          <creation_ts>2018-08-03 20:24:46 -0700</creation_ts>
          <short_desc>Shrink size of PropertyCondition by packing UniquedStringImpl* and Kind</short_desc>
          <delta_ts>2018-08-07 16:22:22 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>saam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1447877</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-08-03 20:24:46 -0700</bug_when>
    <thetext>Shrink size of PropertyCondition by packing UniquedStringImpl* and Kind</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447881</commentid>
    <comment_count>1</comment_count>
      <attachid>346580</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-08-03 20:39:11 -0700</bug_when>
    <thetext>Created attachment 346580
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447884</commentid>
    <comment_count>2</comment_count>
      <attachid>346580</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-08-03 21:10:53 -0700</bug_when>
    <thetext>Comment on attachment 346580
Patch

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

&gt; Source/WTF/wtf/PointerWithType.h:33
&gt; +// The goal of this class is folding a pointer and 1 byte value into 8 bytes in both 32bit and 64bit architectures.
&gt; +// 32bit architecture just has a pair of byte and pointer, which should be 8 bytes. In 64bit, we use upper 16 bits.

Currently we do not consider about environments using 5-level page tables.
Even it is used, we can still use this strategy if we fold 8bits into upper 4bits (unused part of virtual address) and lower 4bits (alignment bits).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447891</commentid>
    <comment_count>3</comment_count>
      <attachid>346580</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-08-03 22:53:19 -0700</bug_when>
    <thetext>Comment on attachment 346580
Patch

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

&gt; Source/WTF/ChangeLog:7
&gt; +

You should explain the type you’re adding here

&gt; Source/WTF/wtf/PointerWithType.h:35
&gt; +template&lt;typename PointerType, typename Type&gt;

Do we want to static assert that Type is trivially constructable or maybe even that it’s integral?

&gt; Source/WTF/wtf/PointerWithType.h:36
&gt; +class PointerWithType {

The “WithType” feels like the wrong name here. It reads to me as if you’re describing the type of the pointer. Maybe we can come up with a more descriptive name, some ideas:
- PointerTuple
- CompactPointerTuple

&gt; Source/WTF/wtf/PointerWithType.h:38
&gt; +    static_assert(sizeof(Type) == 1, &quot;&quot;);

Seems like you’d allow up to 2 bytes.

&gt; Source/WTF/wtf/PointerWithType.h:42
&gt; +#if USE(JSVALUE64)

I think more accurately you want this conditionalized on sizeof(void*) == 8

There are 64_32 architectures where pointers are 4 bytes

&gt; Source/WTF/wtf/PointerWithType.h:48
&gt; +    PointerType pointer() const { return bitwise_cast&lt;PointerType&gt;(m_data &amp; 0x0000FFFFFFFFFFFFULL); }

This could be where things go wrong on 64_32 archs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447906</commentid>
    <comment_count>4</comment_count>
      <attachid>346580</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-08-04 05:25:44 -0700</bug_when>
    <thetext>Comment on attachment 346580
Patch

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

&gt;&gt; Source/WTF/ChangeLog:7
&gt;&gt; +
&gt; 
&gt; You should explain the type you’re adding here

Added.

&gt;&gt; Source/WTF/wtf/PointerWithType.h:35
&gt;&gt; +template&lt;typename PointerType, typename Type&gt;
&gt; 
&gt; Do we want to static assert that Type is trivially constructable or maybe even that it’s integral?

Sounds nice. I&apos;ll use `std::is_integral`.

&gt;&gt; Source/WTF/wtf/PointerWithType.h:36
&gt;&gt; +class PointerWithType {
&gt; 
&gt; The “WithType” feels like the wrong name here. It reads to me as if you’re describing the type of the pointer. Maybe we can come up with a more descriptive name, some ideas:
&gt; - PointerTuple
&gt; - CompactPointerTuple

CompactPointerTuple sounds good. Fixed.

&gt;&gt; Source/WTF/wtf/PointerWithType.h:38
&gt;&gt; +    static_assert(sizeof(Type) == 1, &quot;&quot;);
&gt; 
&gt; Seems like you’d allow up to 2 bytes.

While JSValue typically only takes JSCells which are allocated from JS heap, this type can take arbitrary pointer.
If our architecture starts using 5-level page tables, we may see 57bit effective addresses in this type.
I would like to keep this size since I want to support x86_64 5-level page table too where the effective pointer bits are 57bits.
I&apos;ve reworked this patch to support it.

&gt;&gt; Source/WTF/wtf/PointerWithType.h:42
&gt;&gt; +#if USE(JSVALUE64)
&gt; 
&gt; I think more accurately you want this conditionalized on sizeof(void*) == 8
&gt; 
&gt; There are 64_32 architectures where pointers are 4 bytes

I&apos;ve added a new `CPU(ADDRESS64)` and `CPU(ADDRESS32)` in Platform.h to switch the implementation.

&gt;&gt; Source/WTF/wtf/PointerWithType.h:48
&gt;&gt; +    PointerType pointer() const { return bitwise_cast&lt;PointerType&gt;(m_data &amp; 0x0000FFFFFFFFFFFFULL); }
&gt; 
&gt; This could be where things go wrong on 64_32 archs

OK, I&apos;ve switched the implementation based on actual address width.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447907</commentid>
    <comment_count>5</comment_count>
      <attachid>346586</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-08-04 05:32:06 -0700</bug_when>
    <thetext>Created attachment 346586
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447908</commentid>
    <comment_count>6</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-08-04 05:34:25 -0700</bug_when>
    <thetext>Attachment 346586 did not pass style-queue:


ERROR: Source/WTF/wtf/CompactPointerTuple.h:42:  The parameter name &quot;&gt;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 7 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>1447909</commentid>
    <comment_count>7</comment_count>
      <attachid>346587</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-08-04 05:45:01 -0700</bug_when>
    <thetext>Created attachment 346587
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447910</commentid>
    <comment_count>8</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-08-04 05:48:13 -0700</bug_when>
    <thetext>Attachment 346587 did not pass style-queue:


ERROR: Source/WTF/wtf/CompactPointerTuple.h:42:  The parameter name &quot;&gt;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 8 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>1447911</commentid>
    <comment_count>9</comment_count>
      <attachid>346588</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-08-04 05:54:05 -0700</bug_when>
    <thetext>Created attachment 346588
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447912</commentid>
    <comment_count>10</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-08-04 05:57:11 -0700</bug_when>
    <thetext>Attachment 346588 did not pass style-queue:


ERROR: Source/WTF/wtf/CompactPointerTuple.h:42:  The parameter name &quot;&gt;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 8 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>1448410</commentid>
    <comment_count>11</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-08-07 02:11:14 -0700</bug_when>
    <thetext>Ping?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1448550</commentid>
    <comment_count>12</comment_count>
      <attachid>346580</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-08-07 13:36:18 -0700</bug_when>
    <thetext>Comment on attachment 346580
Patch

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

&gt;&gt;&gt; Source/WTF/wtf/PointerWithType.h:38
&gt;&gt;&gt; +    static_assert(sizeof(Type) == 1, &quot;&quot;);
&gt;&gt; 
&gt;&gt; Seems like you’d allow up to 2 bytes.
&gt; 
&gt; While JSValue typically only takes JSCells which are allocated from JS heap, this type can take arbitrary pointer.
&gt; If our architecture starts using 5-level page tables, we may see 57bit effective addresses in this type.
&gt; I would like to keep this size since I want to support x86_64 5-level page table too where the effective pointer bits are 57bits.
&gt; I&apos;ve reworked this patch to support it.

That&apos;s fine, but a lot of things would probably break on such architecture. Probably at least:
- JSCells
- DFG::Edge</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1448557</commentid>
    <comment_count>13</comment_count>
      <attachid>346588</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-08-07 13:59:37 -0700</bug_when>
    <thetext>Comment on attachment 346588
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:8
&gt; +        Shrinking the size of PropertyCondition affects so much on memory consumption.

&quot;affects so much on memory consumption&quot; =&gt; &quot;can improve memory consumption by a lot&quot;

&gt; Source/JavaScriptCore/ChangeLog:11
&gt; +        in their member.

in their member =&gt; as a member field

&gt; Source/WTF/ChangeLog:8
&gt; +        This patch adds CompactPointerTuple, which can pack a pointer and 8bit value into 16bytes.

16bytes =&gt; 8bytes

&gt; Source/WTF/wtf/CompactPointerTuple.h:36
&gt; +// In 64bit, we use the upper 5 bits and lower 3 bits (zero due to alignment) since these bits are safe to use even
&gt; +// with 5-level page tables where the effective pointer width is 57bits.

It seems more likely that we&apos;d want to use this with something where alignof &lt; sizeof(void*) (e.g, char*) than worrying about 57bit pointers.

&gt; Source/WTF/wtf/CompactPointerTuple.h:49
&gt; +    static constexpr uint64_t encodeType(uint8_t type)

Is the goal for this encoding to make retrieving the pointer a single instruction?

&gt; Source/WTF/wtf/CompactPointerTuple.h:65
&gt; +        : m_data(bitwise_cast&lt;uint64_t&gt;(pointer) | encodeType(static_cast&lt;uint8_t&gt;(type)))

Let&apos;s debug assert bottom 3 bits are zero if we stick with the alignof assertion

&gt; Source/WTF/wtf/CompactPointerTuple.h:72
&gt; +        m_data = bitwise_cast&lt;uint64_t&gt;(pointer) | (m_data &amp; typeMask);

ditto with asserting bottom 3 bits.

Style nit: This also may be more straight forward as an abstraction:

m_data = CompactPointerTuple(pointer, type()).m_data

&gt; Source/WTF/wtf/CompactPointerTuple.h:78
&gt; +        m_data = (m_data &amp; pointerMask) | encodeType(static_cast&lt;uint8_t&gt;(type));

Style nit: This may be more straight forward as an abstraction:
m_data = CompactPointerTuple(pointer(), type).m_data</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1448623</commentid>
    <comment_count>14</comment_count>
      <attachid>346588</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-08-07 16:18:34 -0700</bug_when>
    <thetext>Comment on attachment 346588
Patch

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

Thank you!

&gt;&gt; Source/JavaScriptCore/ChangeLog:8
&gt;&gt; +        Shrinking the size of PropertyCondition affects so much on memory consumption.
&gt; 
&gt; &quot;affects so much on memory consumption&quot; =&gt; &quot;can improve memory consumption by a lot&quot;

Fixed.

&gt;&gt; Source/JavaScriptCore/ChangeLog:11
&gt;&gt; +        in their member.
&gt; 
&gt; in their member =&gt; as a member field

Fixed.

&gt;&gt; Source/WTF/ChangeLog:8
&gt;&gt; +        This patch adds CompactPointerTuple, which can pack a pointer and 8bit value into 16bytes.
&gt; 
&gt; 16bytes =&gt; 8bytes

Oops, nice, fixed.

&gt;&gt; Source/WTF/wtf/CompactPointerTuple.h:36
&gt;&gt; +// with 5-level page tables where the effective pointer width is 57bits.
&gt; 
&gt; It seems more likely that we&apos;d want to use this with something where alignof &lt; sizeof(void*) (e.g, char*) than worrying about 57bit pointers.

Currently, we only use a type with 8bytes alignment. Note that we can extend this class to support 2bytes alignment class by storing 7bits in upper side and 1bit in lower side.
I think we can relax that when we need to support the other types having smaller alignment requirement.

&gt;&gt; Source/WTF/wtf/CompactPointerTuple.h:49
&gt;&gt; +    static constexpr uint64_t encodeType(uint8_t type)
&gt; 
&gt; Is the goal for this encoding to make retrieving the pointer a single instruction?

Yes, encoding a type into a data that can be OR-ed to a pointer as much as efficient.

&gt;&gt; Source/WTF/wtf/CompactPointerTuple.h:65
&gt;&gt; +        : m_data(bitwise_cast&lt;uint64_t&gt;(pointer) | encodeType(static_cast&lt;uint8_t&gt;(type)))
&gt; 
&gt; Let&apos;s debug assert bottom 3 bits are zero if we stick with the alignof assertion

Added.

&gt;&gt; Source/WTF/wtf/CompactPointerTuple.h:72
&gt;&gt; +        m_data = bitwise_cast&lt;uint64_t&gt;(pointer) | (m_data &amp; typeMask);
&gt; 
&gt; ditto with asserting bottom 3 bits.
&gt; 
&gt; Style nit: This also may be more straight forward as an abstraction:
&gt; 
&gt; m_data = CompactPointerTuple(pointer, type()).m_data

Nice, fixed.

&gt;&gt; Source/WTF/wtf/CompactPointerTuple.h:78
&gt;&gt; +        m_data = (m_data &amp; pointerMask) | encodeType(static_cast&lt;uint8_t&gt;(type));
&gt; 
&gt; Style nit: This may be more straight forward as an abstraction:
&gt; m_data = CompactPointerTuple(pointer(), type).m_data

Nice, fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1448625</commentid>
    <comment_count>15</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-08-07 16:21:13 -0700</bug_when>
    <thetext>Committed r234677: &lt;https://trac.webkit.org/changeset/234677&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1448626</commentid>
    <comment_count>16</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-08-07 16:22:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/43025966&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>346580</attachid>
            <date>2018-08-03 20:39:11 -0700</date>
            <delta_ts>2018-08-04 05:32:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188328-20180804123910.patch</filename>
            <type>text/plain</type>
            <size>17994</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0NTU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
Y2U3MmEyMWQzZmI1OGI4YjQzNjA2ZWIyMGVlMDY0Zjc2NTBhNDcyLi5iNTdjMjJkYjU2Y2FkNDYz
ZWYzZDhhZTYxYjFlYWE0MmRkNjI4NWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0OCBAQAorMjAxOC0wOC0wMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBTaHJpbmsgc2l6ZSBvZiBQcm9wZXJ0eUNvbmRpdGlvbiBieSBwYWNr
aW5nIFVuaXF1ZWRTdHJpbmdJbXBsKiBhbmQgS2luZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4MzI4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgU2hyaW5raW5nIHRoZSBzaXplIG9mIFByb3BlcnR5Q29u
ZGl0aW9uIGFmZmVjdHMgc28gbXVjaCBvbiBtZW1vcnkgY29uc3VtcHRpb24uCisgICAgICAgIEZv
ciBleGFtcGxlLCBjbm4uY29tIGNhbiBzaG93IDcwMDAgcGVyc2lzdGVudCBTdHJ1Y3R1cmVTdHVi
Q2xlYXJpbmdXYXRjaHBvaW50CisgICAgICAgIGFuZCA2MDAwIExMSW50UHJvdG90eXBlTG9hZEFk
YXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludCB3aGljaCBoYXZlIFByb3BlcnR5Q29uZGl0aW9uCisg
ICAgICAgIGluIHRoZWlyIG1lbWJlci4KKworICAgICAgICBUaGlzIHBhdGNoIHNocmlua3MgdGhl
IHNpemUgb2YgUHJvcGVydHlDb25kaXRpb24gYnkgcGFja2luZyBVbmlxdWVkU3RyaW5nSW1wbCog
YW5kCisgICAgICAgIFByb3BlcnR5Q29uZGl0aW9uOjpLaW5kIGludG8gdWludDY0X3QgZGF0YSBp
biA2NGJpdCBhcmNoaXRlY3R1cmUuIFNpbmNlIG91ciBhZGRyZXNzCisgICAgICAgIGFyZSB3aXRo
aW4gNDhiaXQsIHdlIGNhbiBwdXQgUHJvcGVydHlDb25kaXRpb246OktpbmQgaW4gdGhpcyB1bnVz
ZWQgYml0cy4KKyAgICAgICAgVG8gbWFrZSBpdCBlYXN5LCB3ZSBhZGQgV1RGOjpQb2ludGVyV2l0
aFR5cGU8UG9pbnRlclR5cGUsIFR5cGU+LCB3aGljaCBhdXRvbWF0aWNhbGx5CisgICAgICAgIGZv
bGRzIGEgcG9pbnRlciBhbmQgMWJ5dGUgdHlwZSBpbnRvIDY0Yml0IGRhdGEuCisKKyAgICAgICAg
VGhpcyBjaGFuZ2Ugc2hyaW5rcyBQcm9wZXJ0eUNvbmRpdGlvbiBmcm9tIDI0Ynl0ZXMgdG8gMTZi
eXRlcy4KKworICAgICAgICAqIGJ5dGVjb2RlL1Byb3BlcnR5Q29uZGl0aW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6UHJvcGVydHlDb25kaXRpb246OmR1bXBJbkNvbnRleHQgY29uc3QpOgorICAgICAg
ICAoSlNDOjpQcm9wZXJ0eUNvbmRpdGlvbjo6aXNTdGlsbFZhbGlkQXNzdW1pbmdJbXB1cmVQcm9w
ZXJ0eVdhdGNocG9pbnQgY29uc3QpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eUNvbmRpdGlvbjo6
dmFsaWRpdHlSZXF1aXJlc0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludCBjb25zdCk6CisgICAgICAg
IChKU0M6OlByb3BlcnR5Q29uZGl0aW9uOjppc1N0aWxsVmFsaWQgY29uc3QpOgorICAgICAgICAo
SlNDOjpQcm9wZXJ0eUNvbmRpdGlvbjo6aXNXYXRjaGFibGVXaGVuVmFsaWQgY29uc3QpOgorICAg
ICAgICAqIGJ5dGVjb2RlL1Byb3BlcnR5Q29uZGl0aW9uLmg6CisgICAgICAgIChKU0M6OlByb3Bl
cnR5Q29uZGl0aW9uOjpQcm9wZXJ0eUNvbmRpdGlvbik6CisgICAgICAgIChKU0M6OlByb3BlcnR5
Q29uZGl0aW9uOjpwcmVzZW5jZVdpdGhvdXRCYXJyaWVyKToKKyAgICAgICAgKEpTQzo6UHJvcGVy
dHlDb25kaXRpb246OmFic2VuY2VXaXRob3V0QmFycmllcik6CisgICAgICAgIChKU0M6OlByb3Bl
cnR5Q29uZGl0aW9uOjphYnNlbmNlT2ZTZXRFZmZlY3RXaXRob3V0QmFycmllcik6CisgICAgICAg
IChKU0M6OlByb3BlcnR5Q29uZGl0aW9uOjplcXVpdmFsZW5jZVdpdGhvdXRCYXJyaWVyKToKKyAg
ICAgICAgKEpTQzo6UHJvcGVydHlDb25kaXRpb246Omhhc1Byb3RvdHlwZVdpdGhvdXRCYXJyaWVy
KToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlDb25kaXRpb246Om9wZXJhdG9yIGJvb2wgY29uc3Qp
OgorICAgICAgICAoSlNDOjpQcm9wZXJ0eUNvbmRpdGlvbjo6a2luZCBjb25zdCk6CisgICAgICAg
IChKU0M6OlByb3BlcnR5Q29uZGl0aW9uOjp1aWQgY29uc3QpOgorICAgICAgICAoSlNDOjpQcm9w
ZXJ0eUNvbmRpdGlvbjo6aGFzT2Zmc2V0IGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlD
b25kaXRpb246Omhhc0F0dHJpYnV0ZXMgY29uc3QpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eUNv
bmRpdGlvbjo6aGFzUHJvdG90eXBlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlDb25k
aXRpb246Omhhc1JlcXVpcmVkVmFsdWUgY29uc3QpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eUNv
bmRpdGlvbjo6aGFzaCBjb25zdCk6CisgICAgICAgIChKU0M6OlByb3BlcnR5Q29uZGl0aW9uOjpv
cGVyYXRvcj09IGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlDb25kaXRpb246OmlzSGFz
aFRhYmxlRGVsZXRlZFZhbHVlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlDb25kaXRp
b246OndhdGNoaW5nUmVxdWlyZXNSZXBsYWNlbWVudFdhdGNocG9pbnQgY29uc3QpOgorCiAyMDE4
LTA4LTAyICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIFJlYWRp
bmcgaW5zdHJ1Y3Rpb25Qb2ludGVyIGZyb20gUGxhdGZvcm1SZWdpc3RlcnMgbWF5IGZhaWwgd2hl
biB1c2luZyBwb2ludGVyIHByb2ZpbGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCBiZGZlOWJlZDdhODRmODZjMGQzOWEzNGVh
MjdlYjUzNmYzZjE2ZjU2Li5mM2FlMGEyOTBjYzZlZTIyZjQ4NjkxZTM2MDZkM2Y0YmIzYTYyZGM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE4LTA4LTAzICBZdXN1a2UgU3V6dWtpICA8dXRhdGFu
ZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFNocmluayBzaXplIG9mIFByb3BlcnR5Q29uZGl0
aW9uIGJ5IHBhY2tpbmcgVW5pcXVlZFN0cmluZ0ltcGwqIGFuZCBLaW5kCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODgzMjgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiB3dGYvUG9pbnRlcldpdGhUeXBlLmg6IEFkZGVkLgorICAgICAgICAoV1RGOjpQ
b2ludGVyV2l0aFR5cGU6OlBvaW50ZXJXaXRoVHlwZSk6CisgICAgICAgIChXVEY6OlBvaW50ZXJX
aXRoVHlwZTo6cG9pbnRlciBjb25zdCk6CisgICAgICAgIChXVEY6OlBvaW50ZXJXaXRoVHlwZTo6
c2V0UG9pbnRlcik6CisgICAgICAgIChXVEY6OlBvaW50ZXJXaXRoVHlwZTo6dHlwZSBjb25zdCk6
CisgICAgICAgIChXVEY6OlBvaW50ZXJXaXRoVHlwZTo6c2V0VHlwZSk6CisKIDIwMTgtMDgtMDIg
IFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVhZGluZyBpbnN0
cnVjdGlvblBvaW50ZXIgZnJvbSBQbGF0Zm9ybVJlZ2lzdGVycyBtYXkgZmFpbCB3aGVuIHVzaW5n
IHBvaW50ZXIgdGFnZ2luZwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1Byb3BlcnR5Q29uZGl0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Qcm9wZXJ0eUNvbmRpdGlvbi5jcHAKaW5kZXggNDM2MzRiZTA5YWZiY2NmNzIyMjZhNzkzMTA1
NzRjN2YzYzJiZTI0Ny4uM2RlYjQ0Yzc1ZmZkZmYwYjk2YjRkNjFiODQxOTJiMWJkMjE0NzcwOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb3BlcnR5Q29uZGl0
aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvcGVydHlDb25k
aXRpb24uY3BwCkBAIC00MywxOSArNDMsMTkgQEAgdm9pZCBQcm9wZXJ0eUNvbmRpdGlvbjo6ZHVt
cEluQ29udGV4dChQcmludFN0cmVhbSYgb3V0LCBEdW1wQ29udGV4dCogY29udGV4dCkgY28KICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBzd2l0Y2ggKG1fa2luZCkgeworICAgIHN3
aXRjaCAobV9oZWFkZXIudHlwZSgpKSB7CiAgICAgY2FzZSBQcmVzZW5jZToKLSAgICAgICAgb3V0
LnByaW50KG1fa2luZCwgIiBvZiAiLCBtX3VpZCwgIiBhdCAiLCBvZmZzZXQoKSwgIiB3aXRoIGF0
dHJpYnV0ZXMgIiwgYXR0cmlidXRlcygpKTsKKyAgICAgICAgb3V0LnByaW50KG1faGVhZGVyLnR5
cGUoKSwgIiBvZiAiLCBtX2hlYWRlci5wb2ludGVyKCksICIgYXQgIiwgb2Zmc2V0KCksICIgd2l0
aCBhdHRyaWJ1dGVzICIsIGF0dHJpYnV0ZXMoKSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNl
IEFic2VuY2U6CiAgICAgY2FzZSBBYnNlbmNlT2ZTZXRFZmZlY3Q6Ci0gICAgICAgIG91dC5wcmlu
dChtX2tpbmQsICIgb2YgIiwgbV91aWQsICIgd2l0aCBwcm90b3R5cGUgIiwgaW5Db250ZXh0KEpT
VmFsdWUocHJvdG90eXBlKCkpLCBjb250ZXh0KSk7CisgICAgICAgIG91dC5wcmludChtX2hlYWRl
ci50eXBlKCksICIgb2YgIiwgbV9oZWFkZXIucG9pbnRlcigpLCAiIHdpdGggcHJvdG90eXBlICIs
IGluQ29udGV4dChKU1ZhbHVlKHByb3RvdHlwZSgpKSwgY29udGV4dCkpOwogICAgICAgICByZXR1
cm47CiAgICAgY2FzZSBFcXVpdmFsZW5jZToKLSAgICAgICAgb3V0LnByaW50KG1fa2luZCwgIiBv
ZiAiLCBtX3VpZCwgIiB3aXRoICIsIGluQ29udGV4dChyZXF1aXJlZFZhbHVlKCksIGNvbnRleHQp
KTsKKyAgICAgICAgb3V0LnByaW50KG1faGVhZGVyLnR5cGUoKSwgIiBvZiAiLCBtX2hlYWRlci5w
b2ludGVyKCksICIgd2l0aCAiLCBpbkNvbnRleHQocmVxdWlyZWRWYWx1ZSgpLCBjb250ZXh0KSk7
CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIEhhc1Byb3RvdHlwZToKLSAgICAgICAgb3V0LnBy
aW50KG1fa2luZCwgIiB3aXRoIHByb3RvdHlwZSAiLCBpbkNvbnRleHQoSlNWYWx1ZShwcm90b3R5
cGUoKSksIGNvbnRleHQpKTsKKyAgICAgICAgb3V0LnByaW50KG1faGVhZGVyLnR5cGUoKSwgIiB3
aXRoIHByb3RvdHlwZSAiLCBpbkNvbnRleHQoSlNWYWx1ZShwcm90b3R5cGUoKSksIGNvbnRleHQp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwpAQCAtODEsNyArODEsNyBAQCBib29sIFByb3BlcnR5Q29uZGl0aW9uOjppc1N0aWxsVmFs
aWRBc3N1bWluZ0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludCgKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIAotICAgIHN3aXRjaCAobV9raW5kKSB7CisgICAgc3dpdGNoIChtX2hlYWRlci50
eXBlKCkpIHsKICAgICBjYXNlIFByZXNlbmNlOgogICAgIGNhc2UgQWJzZW5jZToKICAgICBjYXNl
IEFic2VuY2VPZlNldEVmZmVjdDoKQEAgLTEwMiw3ICsxMDIsNyBAQCBib29sIFByb3BlcnR5Q29u
ZGl0aW9uOjppc1N0aWxsVmFsaWRBc3N1bWluZ0ltcHVyZVByb3BlcnR5V2F0Y2hwb2ludCgKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogICAgIAotICAgIHN3aXRjaCAobV9raW5kKSB7CisgICAgc3dp
dGNoIChtX2hlYWRlci50eXBlKCkpIHsKICAgICBjYXNlIFByZXNlbmNlOiB7CiAgICAgICAgIHVu
c2lnbmVkIGN1cnJlbnRBdHRyaWJ1dGVzOwogICAgICAgICBQcm9wZXJ0eU9mZnNldCBjdXJyZW50
T2Zmc2V0ID0gc3RydWN0dXJlLT5nZXRDb25jdXJyZW50bHkodWlkKCksIGN1cnJlbnRBdHRyaWJ1
dGVzKTsKQEAgLTI1OSw3ICsyNTksNyBAQCBib29sIFByb3BlcnR5Q29uZGl0aW9uOjp2YWxpZGl0
eVJlcXVpcmVzSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KFN0cnVjdHVyZSogc3RydQogICAgIGlm
ICghKnRoaXMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBzd2l0Y2ggKG1fa2lu
ZCkgeworICAgIHN3aXRjaCAobV9oZWFkZXIudHlwZSgpKSB7CiAgICAgY2FzZSBQcmVzZW5jZToK
ICAgICBjYXNlIEFic2VuY2U6CiAgICAgY2FzZSBFcXVpdmFsZW5jZToKQEAgLTI4MSw3ICsyODEs
NyBAQCBib29sIFByb3BlcnR5Q29uZGl0aW9uOjppc1N0aWxsVmFsaWQoU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIEpTT2JqZWN0KiBiYXNlKSBjb25zdAogICAgIC8vIEN1cnJlbnRseSB3ZSBhc3N1bWUg
dGhhdCBhbiBpbXB1cmUgcHJvcGVydHkgY2FuIGNhdXNlIGEgcHJvcGVydHkgdG8gYXBwZWFyLCBh
bmQgY2FuIGFsc28KICAgICAvLyAic2hhZG93IiBhbiBleGlzdGluZyBKUyBwcm9wZXJ0eSBvbiB0
aGUgc2FtZSBvYmplY3QuIEhlbmNlIGl0IGFmZmVjdHMgYm90aCBwcmVzZW5jZSBhbmQKICAgICAv
LyBhYnNlbmNlLiBJdCBkb2Vzbid0IGFmZmVjdCBBYnNlbmNlT2ZTZXRFZmZlY3QgYmVjYXVzZSBp
bXB1cmUgcHJvcGVydGllcyBhcmVuJ3QgZXZlciBzZXR0ZXJzLgotICAgIHN3aXRjaCAobV9raW5k
KSB7CisgICAgc3dpdGNoIChtX2hlYWRlci50eXBlKCkpIHsKICAgICBjYXNlIEFic2VuY2U6CiAg
ICAgICAgIGlmIChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkuZ2V0T3duUHJvcGVydHlTbG90SXNJbXB1
cmUoKSB8fCBzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkuZ2V0T3duUHJvcGVydHlTbG90SXNJbXB1cmVG
b3JQcm9wZXJ0eUFic2VuY2UoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTMwNCw3
ICszMDQsNyBAQCBib29sIFByb3BlcnR5Q29uZGl0aW9uOjppc1dhdGNoYWJsZVdoZW5WYWxpZCgK
ICAgICBpZiAoc3RydWN0dXJlLT50cmFuc2l0aW9uV2F0Y2hwb2ludFNldEhhc0JlZW5JbnZhbGlk
YXRlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgc3dpdGNoIChtX2tpbmQp
IHsKKyAgICBzd2l0Y2ggKG1faGVhZGVyLnR5cGUoKSkgewogICAgIGNhc2UgRXF1aXZhbGVuY2U6
IHsKICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXRDb25jdXJy
ZW50bHkodWlkKCkpOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Qcm9wZXJ0eUNvbmRpdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1Byb3BlcnR5Q29uZGl0aW9uLmgKaW5kZXggZTJmNmIxZjIyNjQ3ZTM0NTgxZjVhZTdl
NGM0YzgwY2ZjODNiMjBhNy4uNjU3YjY3ZDc0NjJjYTRhMDJiOGFlODkxNjgwYmYyMTI3OGI4YjA4
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb3BlcnR5Q29u
ZGl0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb3BlcnR5Q29u
ZGl0aW9uLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvUG9pbnRlcldpdGhUeXBlLmg+CiAK
IG5hbWVzcGFjZSBKU0MgewogCkBAIC0zNCwyNCArMzUsMjQgQEAgY2xhc3MgVHJhY2tlZFJlZmVy
ZW5jZXM7CiAKIGNsYXNzIFByb3BlcnR5Q29uZGl0aW9uIHsKIHB1YmxpYzoKLSAgICBlbnVtIEtp
bmQgeworICAgIGVudW0gS2luZCA6IHVpbnQ4X3QgewogICAgICAgICBQcmVzZW5jZSwKICAgICAg
ICAgQWJzZW5jZSwKICAgICAgICAgQWJzZW5jZU9mU2V0RWZmZWN0LAogICAgICAgICBFcXVpdmFs
ZW5jZSwgLy8gQW4gYWRhcHRpdmUgd2F0Y2hwb2ludCBvbiB0aGlzIHdpbGwgYmUgYSBwYWlyIG9m
IHdhdGNocG9pbnRzLCBhbmQgd2hlbiB0aGUgc3RydWN0dXJlIHRyYW5zaXRpb25zLCB3ZSB3aWxs
IHNldCB0aGUgcmVwbGFjZW1lbnQgd2F0Y2hwb2ludCBvbiB0aGUgbmV3IHN0cnVjdHVyZS4KICAg
ICAgICAgSGFzUHJvdG90eXBlCiAgICAgfTsKKworICAgIHVzaW5nIEhlYWRlciA9IFBvaW50ZXJX
aXRoVHlwZTxVbmlxdWVkU3RyaW5nSW1wbCosIEtpbmQ+OwogICAgIAogICAgIFByb3BlcnR5Q29u
ZGl0aW9uKCkKLSAgICAgICAgOiBtX3VpZChudWxscHRyKQotICAgICAgICAsIG1fa2luZChQcmVz
ZW5jZSkKKyAgICAgICAgOiBtX2hlYWRlcihudWxscHRyLCBQcmVzZW5jZSkKICAgICB7CiAgICAg
ICAgIG1lbXNldCgmdSwgMCwgc2l6ZW9mKHUpKTsKICAgICB9CiAgICAgCiAgICAgUHJvcGVydHlD
b25kaXRpb24oV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQotICAgICAgICA6IG1fdWlk
KG51bGxwdHIpCi0gICAgICAgICwgbV9raW5kKEFic2VuY2UpCisgICAgICAgIDogbV9oZWFkZXIo
bnVsbHB0ciwgQWJzZW5jZSkKICAgICB7CiAgICAgICAgIG1lbXNldCgmdSwgMCwgc2l6ZW9mKHUp
KTsKICAgICB9CkBAIC01OSw4ICs2MCw3IEBAIGNsYXNzIFByb3BlcnR5Q29uZGl0aW9uIHsKICAg
ICBzdGF0aWMgUHJvcGVydHlDb25kaXRpb24gcHJlc2VuY2VXaXRob3V0QmFycmllcihVbmlxdWVk
U3RyaW5nSW1wbCogdWlkLCBQcm9wZXJ0eU9mZnNldCBvZmZzZXQsIHVuc2lnbmVkIGF0dHJpYnV0
ZXMpCiAgICAgewogICAgICAgICBQcm9wZXJ0eUNvbmRpdGlvbiByZXN1bHQ7Ci0gICAgICAgIHJl
c3VsdC5tX3VpZCA9IHVpZDsKLSAgICAgICAgcmVzdWx0Lm1fa2luZCA9IFByZXNlbmNlOworICAg
ICAgICByZXN1bHQubV9oZWFkZXIgPSBIZWFkZXIodWlkLCBQcmVzZW5jZSk7CiAgICAgICAgIHJl
c3VsdC51LnByZXNlbmNlLm9mZnNldCA9IG9mZnNldDsKICAgICAgICAgcmVzdWx0LnUucHJlc2Vu
Y2UuYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXM7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC03
Niw4ICs3Niw3IEBAIGNsYXNzIFByb3BlcnR5Q29uZGl0aW9uIHsKICAgICBzdGF0aWMgUHJvcGVy
dHlDb25kaXRpb24gYWJzZW5jZVdpdGhvdXRCYXJyaWVyKFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQs
IEpTT2JqZWN0KiBwcm90b3R5cGUpCiAgICAgewogICAgICAgICBQcm9wZXJ0eUNvbmRpdGlvbiBy
ZXN1bHQ7Ci0gICAgICAgIHJlc3VsdC5tX3VpZCA9IHVpZDsKLSAgICAgICAgcmVzdWx0Lm1fa2lu
ZCA9IEFic2VuY2U7CisgICAgICAgIHJlc3VsdC5tX2hlYWRlciA9IEhlYWRlcih1aWQsIEFic2Vu
Y2UpOwogICAgICAgICByZXN1bHQudS5wcm90b3R5cGUucHJvdG90eXBlID0gcHJvdG90eXBlOwog
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTk0LDggKzkzLDcgQEAgY2xhc3MgUHJv
cGVydHlDb25kaXRpb24gewogICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCBKU09iamVj
dCogcHJvdG90eXBlKQogICAgIHsKICAgICAgICAgUHJvcGVydHlDb25kaXRpb24gcmVzdWx0Owot
ICAgICAgICByZXN1bHQubV91aWQgPSB1aWQ7Ci0gICAgICAgIHJlc3VsdC5tX2tpbmQgPSBBYnNl
bmNlT2ZTZXRFZmZlY3Q7CisgICAgICAgIHJlc3VsdC5tX2hlYWRlciA9IEhlYWRlcih1aWQsIEFi
c2VuY2VPZlNldEVmZmVjdCk7CiAgICAgICAgIHJlc3VsdC51LnByb3RvdHlwZS5wcm90b3R5cGUg
PSBwcm90b3R5cGU7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpAQCAtMTEyLDggKzEx
MCw3IEBAIGNsYXNzIFByb3BlcnR5Q29uZGl0aW9uIHsKICAgICAgICAgVW5pcXVlZFN0cmluZ0lt
cGwqIHVpZCwgSlNWYWx1ZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIFByb3BlcnR5Q29uZGl0aW9u
IHJlc3VsdDsKLSAgICAgICAgcmVzdWx0Lm1fdWlkID0gdWlkOwotICAgICAgICByZXN1bHQubV9r
aW5kID0gRXF1aXZhbGVuY2U7CisgICAgICAgIHJlc3VsdC5tX2hlYWRlciA9IEhlYWRlcih1aWQs
IEVxdWl2YWxlbmNlKTsKICAgICAgICAgcmVzdWx0LnUuZXF1aXZhbGVuY2UudmFsdWUgPSBKU1Zh
bHVlOjplbmNvZGUodmFsdWUpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTEy
OSw3ICsxMjYsNyBAQCBjbGFzcyBQcm9wZXJ0eUNvbmRpdGlvbiB7CiAgICAgc3RhdGljIFByb3Bl
cnR5Q29uZGl0aW9uIGhhc1Byb3RvdHlwZVdpdGhvdXRCYXJyaWVyKEpTT2JqZWN0KiBwcm90b3R5
cGUpCiAgICAgewogICAgICAgICBQcm9wZXJ0eUNvbmRpdGlvbiByZXN1bHQ7Ci0gICAgICAgIHJl
c3VsdC5tX2tpbmQgPSBIYXNQcm90b3R5cGU7CisgICAgICAgIHJlc3VsdC5tX2hlYWRlciA9IEhl
YWRlcihudWxscHRyLCBIYXNQcm90b3R5cGUpOwogICAgICAgICByZXN1bHQudS5wcm90b3R5cGUu
cHJvdG90eXBlID0gcHJvdG90eXBlOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAg
LTE0MSwxOCArMTM4LDE4IEBAIGNsYXNzIFByb3BlcnR5Q29uZGl0aW9uIHsKICAgICAgICAgcmV0
dXJuIGhhc1Byb3RvdHlwZVdpdGhvdXRCYXJyaWVyKHByb3RvdHlwZSk7CiAgICAgfQogICAgIAot
ICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBtX3VpZCB8fCBtX2tp
bmQgIT0gUHJlc2VuY2U7IH0KKyAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyBy
ZXR1cm4gbV9oZWFkZXIucG9pbnRlcigpIHx8IG1faGVhZGVyLnR5cGUoKSAhPSBQcmVzZW5jZTsg
fQogICAgIAotICAgIEtpbmQga2luZCgpIGNvbnN0IHsgcmV0dXJuIG1fa2luZDsgfQotICAgIFVu
aXF1ZWRTdHJpbmdJbXBsKiB1aWQoKSBjb25zdCB7IHJldHVybiBtX3VpZDsgfQorICAgIEtpbmQg
a2luZCgpIGNvbnN0IHsgcmV0dXJuIG1faGVhZGVyLnR5cGUoKTsgfQorICAgIFVuaXF1ZWRTdHJp
bmdJbXBsKiB1aWQoKSBjb25zdCB7IHJldHVybiBtX2hlYWRlci5wb2ludGVyKCk7IH0KICAgICAK
LSAgICBib29sIGhhc09mZnNldCgpIGNvbnN0IHsgcmV0dXJuICEhKnRoaXMgJiYgbV9raW5kID09
IFByZXNlbmNlOyB9OworICAgIGJvb2wgaGFzT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gISEqdGhp
cyAmJiBtX2hlYWRlci50eXBlKCkgPT0gUHJlc2VuY2U7IH07CiAgICAgUHJvcGVydHlPZmZzZXQg
b2Zmc2V0KCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVChoYXNPZmZzZXQoKSk7CiAgICAg
ICAgIHJldHVybiB1LnByZXNlbmNlLm9mZnNldDsKICAgICB9Ci0gICAgYm9vbCBoYXNBdHRyaWJ1
dGVzKCkgY29uc3QgeyByZXR1cm4gISEqdGhpcyAmJiBtX2tpbmQgPT0gUHJlc2VuY2U7IH07Cisg
ICAgYm9vbCBoYXNBdHRyaWJ1dGVzKCkgY29uc3QgeyByZXR1cm4gISEqdGhpcyAmJiBtX2hlYWRl
ci50eXBlKCkgPT0gUHJlc2VuY2U7IH07CiAgICAgdW5zaWduZWQgYXR0cmlidXRlcygpIGNvbnN0
CiAgICAgewogICAgICAgICBBU1NFUlQoaGFzQXR0cmlidXRlcygpKTsKQEAgLTE2Miw3ICsxNTks
NyBAQCBjbGFzcyBQcm9wZXJ0eUNvbmRpdGlvbiB7CiAgICAgYm9vbCBoYXNQcm90b3R5cGUoKSBj
b25zdAogICAgIHsKICAgICAgICAgcmV0dXJuICEhKnRoaXMKLSAgICAgICAgICAgICYmIChtX2tp
bmQgPT0gQWJzZW5jZSB8fCBtX2tpbmQgPT0gQWJzZW5jZU9mU2V0RWZmZWN0IHx8IG1fa2luZCA9
PSBIYXNQcm90b3R5cGUpOworICAgICAgICAgICAgJiYgKG1faGVhZGVyLnR5cGUoKSA9PSBBYnNl
bmNlIHx8IG1faGVhZGVyLnR5cGUoKSA9PSBBYnNlbmNlT2ZTZXRFZmZlY3QgfHwgbV9oZWFkZXIu
dHlwZSgpID09IEhhc1Byb3RvdHlwZSk7CiAgICAgfQogICAgIEpTT2JqZWN0KiBwcm90b3R5cGUo
KSBjb25zdAogICAgIHsKQEAgLTE3MCw3ICsxNjcsNyBAQCBjbGFzcyBQcm9wZXJ0eUNvbmRpdGlv
biB7CiAgICAgICAgIHJldHVybiB1LnByb3RvdHlwZS5wcm90b3R5cGU7CiAgICAgfQogICAgIAot
ICAgIGJvb2wgaGFzUmVxdWlyZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuICEhKnRoaXMgJiYgbV9r
aW5kID09IEVxdWl2YWxlbmNlOyB9CisgICAgYm9vbCBoYXNSZXF1aXJlZFZhbHVlKCkgY29uc3Qg
eyByZXR1cm4gISEqdGhpcyAmJiBtX2hlYWRlci50eXBlKCkgPT0gRXF1aXZhbGVuY2U7IH0KICAg
ICBKU1ZhbHVlIHJlcXVpcmVkVmFsdWUoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKGhh
c1JlcXVpcmVkVmFsdWUoKSk7CkBAIC0xODIsOCArMTc5LDggQEAgY2xhc3MgUHJvcGVydHlDb25k
aXRpb24gewogICAgIAogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdAogICAgIHsKLSAgICAgICAg
dW5zaWduZWQgcmVzdWx0ID0gV1RGOjpQdHJIYXNoPFVuaXF1ZWRTdHJpbmdJbXBsKj46Omhhc2go
bV91aWQpICsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fa2luZCk7Ci0gICAgICAgIHN3aXRjaCAo
bV9raW5kKSB7CisgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IFdURjo6UHRySGFzaDxVbmlxdWVk
U3RyaW5nSW1wbCo+OjpoYXNoKG1faGVhZGVyLnBvaW50ZXIoKSkgKyBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4obV9oZWFkZXIudHlwZSgpKTsKKyAgICAgICAgc3dpdGNoIChtX2hlYWRlci50eXBlKCkp
IHsKICAgICAgICAgY2FzZSBQcmVzZW5jZToKICAgICAgICAgICAgIHJlc3VsdCBePSB1LnByZXNl
bmNlLm9mZnNldDsKICAgICAgICAgICAgIHJlc3VsdCBePSB1LnByZXNlbmNlLmF0dHJpYnV0ZXM7
CkBAIC0yMDIsMTEgKzE5OSwxMSBAQCBjbGFzcyBQcm9wZXJ0eUNvbmRpdGlvbiB7CiAgICAgCiAg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFByb3BlcnR5Q29uZGl0aW9uJiBvdGhlcikgY29uc3QK
ICAgICB7Ci0gICAgICAgIGlmIChtX3VpZCAhPSBvdGhlci5tX3VpZCkKKyAgICAgICAgaWYgKG1f
aGVhZGVyLnBvaW50ZXIoKSAhPSBvdGhlci5tX2hlYWRlci5wb2ludGVyKCkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmIChtX2tpbmQgIT0gb3RoZXIubV9raW5kKQorICAg
ICAgICBpZiAobV9oZWFkZXIudHlwZSgpICE9IG90aGVyLm1faGVhZGVyLnR5cGUoKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgc3dpdGNoIChtX2tpbmQpIHsKKyAgICAgICAg
c3dpdGNoIChtX2hlYWRlci50eXBlKCkpIHsKICAgICAgICAgY2FzZSBQcmVzZW5jZToKICAgICAg
ICAgICAgIHJldHVybiB1LnByZXNlbmNlLm9mZnNldCA9PSBvdGhlci51LnByZXNlbmNlLm9mZnNl
dAogICAgICAgICAgICAgICAgICYmIHUucHJlc2VuY2UuYXR0cmlidXRlcyA9PSBvdGhlci51LnBy
ZXNlbmNlLmF0dHJpYnV0ZXM7CkBAIC0yMjMsNyArMjIwLDcgQEAgY2xhc3MgUHJvcGVydHlDb25k
aXRpb24gewogICAgIAogICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdAog
ICAgIHsKLSAgICAgICAgcmV0dXJuICFtX3VpZCAmJiBtX2tpbmQgPT0gQWJzZW5jZTsKKyAgICAg
ICAgcmV0dXJuICFtX2hlYWRlci5wb2ludGVyKCkgJiYgbV9oZWFkZXIudHlwZSgpID09IEFic2Vu
Y2U7CiAgICAgfQogICAgIAogICAgIC8vIFR3byBjb25kaXRpb25zIGFyZSBjb21wYXRpYmxlIGlm
IHRoZXkgYXJlIGlkZW50aWNhbCBvciBpZiB0aGV5IHNwZWFrIG9mIGRpZmZlcmVudCB1aWRzLiBJ
ZgpAQCAtMjk2LDcgKzI5Myw3IEBAIGNsYXNzIFByb3BlcnR5Q29uZGl0aW9uIHsKICAgICB9CiAg
ICAgYm9vbCB3YXRjaGluZ1JlcXVpcmVzUmVwbGFjZW1lbnRXYXRjaHBvaW50KCkgY29uc3QKICAg
ICB7Ci0gICAgICAgIHJldHVybiAhISp0aGlzICYmIG1fa2luZCA9PSBFcXVpdmFsZW5jZTsKKyAg
ICAgICAgcmV0dXJuICEhKnRoaXMgJiYgbV9oZWFkZXIudHlwZSgpID09IEVxdWl2YWxlbmNlOwog
ICAgIH0KICAgICAKICAgICAvLyBUaGlzIG1lYW5zIHRoYXQgdGhlIG9iamVjdHMgaW52b2x2ZWQg
aW4gdGhpcyBhcmUgc3RpbGwgbGl2ZS4KQEAgLTMxMyw4ICszMTAsNyBAQCBjbGFzcyBQcm9wZXJ0
eUNvbmRpdGlvbiB7CiBwcml2YXRlOgogICAgIGJvb2wgaXNXYXRjaGFibGVXaGVuVmFsaWQoU3Ry
dWN0dXJlKiwgV2F0Y2hhYmlsaXR5RWZmb3J0KSBjb25zdDsKIAotICAgIFVuaXF1ZWRTdHJpbmdJ
bXBsKiBtX3VpZDsKLSAgICBLaW5kIG1fa2luZDsKKyAgICBIZWFkZXIgbV9oZWFkZXI7CiAgICAg
dW5pb24gewogICAgICAgICBzdHJ1Y3QgewogICAgICAgICAgICAgUHJvcGVydHlPZmZzZXQgb2Zm
c2V0OwpAQCAtMzIyLDggKzMxOCw3IEBAIGNsYXNzIFByb3BlcnR5Q29uZGl0aW9uIHsKICAgICAg
ICAgfSBwcmVzZW5jZTsKICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgIEpTT2JqZWN0KiBw
cm90b3R5cGU7Ci0gICAgICAgIH0gcHJvdG90eXBlOwotICAgICAgICBzdHJ1Y3QgeworICAgICAg
ICB9IHByb3RvdHlwZTsgc3RydWN0IHsKICAgICAgICAgICAgIEVuY29kZWRKU1ZhbHVlIHZhbHVl
OwogICAgICAgICB9IGVxdWl2YWxlbmNlOwogICAgIH0gdTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKaW5k
ZXggZTQ2ODAyYTM0NDRlYjQzMzAyMmE1OWU1OGM2NzhiMTQxNmQyNzNiNC4uMDZiNjIwMWUyYzJk
MTQ1MjkxZDIwNzEyZjJiNWE5Y2NiMDU2MGE3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
Q01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKQEAgLTE2
Miw2ICsxNjIsNyBAQCBzZXQoV1RGX1BVQkxJQ19IRUFERVJTCiAgICAgUGxhdGZvcm1SZWdpc3Rl
cnMuaAogICAgIFBvaW50ZXJDb21wYXJpc29uLmgKICAgICBQb2ludGVyUHJlcGFyYXRpb25zLmgK
KyAgICBQb2ludGVyV2l0aFR5cGUuaAogICAgIFBvaXNvbmVkLmgKICAgICBQb2lzb25lZFVuaXF1
ZVB0ci5oCiAgICAgUHJpbnRTdHJlYW0uaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUG9p
bnRlcldpdGhUeXBlLmggYi9Tb3VyY2UvV1RGL3d0Zi9Qb2ludGVyV2l0aFR5cGUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zMTY2MTM5NTM2MWRhOGJlYzIxNzU2YWYwZGMyM2M0YzZjODA0MzU1Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dURi93dGYvUG9pbnRlcldpdGhUeXBlLmgKQEAgLTAsMCArMSw4MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKworbmFtZXNwYWNl
IFdURiB7CisKKy8vIFRoZSBnb2FsIG9mIHRoaXMgY2xhc3MgaXMgZm9sZGluZyBhIHBvaW50ZXIg
YW5kIDEgYnl0ZSB2YWx1ZSBpbnRvIDggYnl0ZXMgaW4gYm90aCAzMmJpdCBhbmQgNjRiaXQgYXJj
aGl0ZWN0dXJlcy4KKy8vIDMyYml0IGFyY2hpdGVjdHVyZSBqdXN0IGhhcyBhIHBhaXIgb2YgYnl0
ZSBhbmQgcG9pbnRlciwgd2hpY2ggc2hvdWxkIGJlIDggYnl0ZXMuIEluIDY0Yml0LCB3ZSB1c2Ug
dXBwZXIgMTYgYml0cy4KKwordGVtcGxhdGU8dHlwZW5hbWUgUG9pbnRlclR5cGUsIHR5cGVuYW1l
IFR5cGU+CitjbGFzcyBQb2ludGVyV2l0aFR5cGUgeworcHVibGljOgorICAgIHN0YXRpY19hc3Nl
cnQoc2l6ZW9mKFR5cGUpID09IDEsICIiKTsKKworICAgIFBvaW50ZXJXaXRoVHlwZSgpID0gZGVm
YXVsdDsKKworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgUG9pbnRlcldpdGhUeXBlKFBvaW50ZXJU
eXBlIHBvaW50ZXIsIFR5cGUgdHlwZSkKKyAgICAgICAgOiBtX2RhdGEoYml0d2lzZV9jYXN0PHVp
bnQ2NF90Pihwb2ludGVyKSB8IChzdGF0aWNfY2FzdDx1aW50NjRfdD4odHlwZSkgPDwgNDgpKQor
ICAgIHsKKyAgICB9CisKKyAgICBQb2ludGVyVHlwZSBwb2ludGVyKCkgY29uc3QgeyByZXR1cm4g
Yml0d2lzZV9jYXN0PFBvaW50ZXJUeXBlPihtX2RhdGEgJiAweDAwMDBGRkZGRkZGRkZGRkZVTEwp
OyB9CisgICAgdm9pZCBzZXRQb2ludGVyKFBvaW50ZXJUeXBlIHBvaW50ZXIpCisgICAgeworICAg
ICAgICBtX2RhdGEgPSBiaXR3aXNlX2Nhc3Q8dWludDY0X3Q+KHBvaW50ZXIpIHwgKG1fZGF0YSAm
IDB4RkZGRjAwMDAwMDAwMDAwMFVMTCk7CisgICAgfQorICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PFR5cGU+KG1fZGF0YSA+PiA0OCk7IH0KKyAgICB2b2lkIHNldFR5
cGUoVHlwZSB0eXBlKQorICAgIHsKKyAgICAgICAgbV9kYXRhID0gKHN0YXRpY19jYXN0PHVpbnQ2
NF90Pih0eXBlKSA8PCA0OCkgfCAobV9kYXRhICYgMHgwMDAwRkZGRkZGRkZGRkZGVUxMKTsKKyAg
ICB9CisKKyNlbHNlCisgICAgUG9pbnRlcldpdGhUeXBlKFBvaW50ZXJUeXBlIHBvaW50ZXIsIFR5
cGUgdHlwZSkKKyAgICAgICAgOiBtX3BvaW50ZXIocG9pbnRlcikKKyAgICAgICAgLCBtX3R5cGUo
dHlwZSkKKyAgICB7CisgICAgfQorCisgICAgUG9pbnRlclR5cGUgcG9pbnRlcigpIGNvbnN0IHsg
cmV0dXJuIG1fcG9pbnRlcjsgfQorICAgIHZvaWQgc2V0UG9pbnRlcihQb2ludGVyVHlwZSBwb2lu
dGVyKSB7IG1fcG9pbnRlciA9IHBvaW50ZXI7IH0KKyAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJl
dHVybiBtX3R5cGU7IH0KKyAgICB2b2lkIHNldFR5cGUoVHlwZSB0eXBlKSB7IG1fdHlwZSA9IHR5
cGU7IH0KKyNlbmRpZgorCitwcml2YXRlOgorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgdWludDY0
X3QgbV9kYXRhIHsgMCB9OworI2Vsc2UKKyAgICBQb2ludGVyVHlwZSBtX3BvaW50ZXIgeyBudWxs
cHRyIH07CisgICAgVHlwZSBtX3R5cGUgeyAwIH07CisjZW5kaWYKK307CisKK30gLy8gbmFtZXNw
YWNlIFdURgorCit1c2luZyBXVEY6OlBvaW50ZXJXaXRoVHlwZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>346586</attachid>
            <date>2018-08-04 05:32:06 -0700</date>
            <delta_ts>2018-08-04 05:44:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188328-20180804213205.patch</filename>
            <type>text/plain</type>
            <size>21941</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0NTc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
YmI1NjBhMzE2N2E5N2IyMmVlYjk1MzM0YzRmYjBlZDRlOGQxYjE4Li43YjYzYjYzOGFmNzRjZTg5
Yjg2YWJjMmFiODM4NmExZjAzNmJmYzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0OCBAQAorMjAxOC0wOC0wNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBTaHJpbmsgc2l6ZSBvZiBQcm9wZXJ0eUNvbmRpdGlvbiBieSBwYWNr
aW5nIFVuaXF1ZWRTdHJpbmdJbXBsKiBhbmQgS2luZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4MzI4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgU2hyaW5raW5nIHRoZSBzaXplIG9mIFByb3BlcnR5Q29u
ZGl0aW9uIGFmZmVjdHMgc28gbXVjaCBvbiBtZW1vcnkgY29uc3VtcHRpb24uCisgICAgICAgIEZv
ciBleGFtcGxlLCBjbm4uY29tIGNhbiBzaG93IDcwMDAgcGVyc2lzdGVudCBTdHJ1Y3R1cmVTdHVi
Q2xlYXJpbmdXYXRjaHBvaW50CisgICAgICAgIGFuZCA2MDAwIExMSW50UHJvdG90eXBlTG9hZEFk
YXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludCB3aGljaCBoYXZlIFByb3BlcnR5Q29uZGl0aW9uCisg
ICAgICAgIGluIHRoZWlyIG1lbWJlci4KKworICAgICAgICBUaGlzIHBhdGNoIHNocmlua3MgdGhl
IHNpemUgb2YgUHJvcGVydHlDb25kaXRpb24gYnkgcGFja2luZyBVbmlxdWVkU3RyaW5nSW1wbCog
YW5kCisgICAgICAgIFByb3BlcnR5Q29uZGl0aW9uOjpLaW5kIGludG8gdWludDY0X3QgZGF0YSBp
biA2NGJpdCBhcmNoaXRlY3R1cmUuIFNpbmNlIG91ciBhZGRyZXNzCisgICAgICAgIGFyZSB3aXRo
aW4gNDhiaXQsIHdlIGNhbiBwdXQgUHJvcGVydHlDb25kaXRpb246OktpbmQgaW4gdGhpcyB1bnVz
ZWQgYml0cy4KKyAgICAgICAgVG8gbWFrZSBpdCBlYXN5LCB3ZSBhZGQgV1RGOjpDb21wYWN0UG9p
bnRlclR1cGxlPFBvaW50ZXJUeXBlLCBUeXBlPiwgd2hpY2ggYXV0b21hdGljYWxseQorICAgICAg
ICBmb2xkcyBhIHBvaW50ZXIgYW5kIDFieXRlIHR5cGUgaW50byA2NGJpdCBkYXRhLgorCisgICAg
ICAgIFRoaXMgY2hhbmdlIHNocmlua3MgUHJvcGVydHlDb25kaXRpb24gZnJvbSAyNGJ5dGVzIHRv
IDE2Ynl0ZXMuCisKKyAgICAgICAgKiBieXRlY29kZS9Qcm9wZXJ0eUNvbmRpdGlvbi5jcHA6Cisg
ICAgICAgIChKU0M6OlByb3BlcnR5Q29uZGl0aW9uOjpkdW1wSW5Db250ZXh0IGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6UHJvcGVydHlDb25kaXRpb246OmlzU3RpbGxWYWxpZEFzc3VtaW5nSW1wdXJl
UHJvcGVydHlXYXRjaHBvaW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlDb25kaXRp
b246OnZhbGlkaXR5UmVxdWlyZXNJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQgY29uc3QpOgorICAg
ICAgICAoSlNDOjpQcm9wZXJ0eUNvbmRpdGlvbjo6aXNTdGlsbFZhbGlkIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6UHJvcGVydHlDb25kaXRpb246OmlzV2F0Y2hhYmxlV2hlblZhbGlkIGNvbnN0KToK
KyAgICAgICAgKiBieXRlY29kZS9Qcm9wZXJ0eUNvbmRpdGlvbi5oOgorICAgICAgICAoSlNDOjpQ
cm9wZXJ0eUNvbmRpdGlvbjo6UHJvcGVydHlDb25kaXRpb24pOgorICAgICAgICAoSlNDOjpQcm9w
ZXJ0eUNvbmRpdGlvbjo6cHJlc2VuY2VXaXRob3V0QmFycmllcik6CisgICAgICAgIChKU0M6OlBy
b3BlcnR5Q29uZGl0aW9uOjphYnNlbmNlV2l0aG91dEJhcnJpZXIpOgorICAgICAgICAoSlNDOjpQ
cm9wZXJ0eUNvbmRpdGlvbjo6YWJzZW5jZU9mU2V0RWZmZWN0V2l0aG91dEJhcnJpZXIpOgorICAg
ICAgICAoSlNDOjpQcm9wZXJ0eUNvbmRpdGlvbjo6ZXF1aXZhbGVuY2VXaXRob3V0QmFycmllcik6
CisgICAgICAgIChKU0M6OlByb3BlcnR5Q29uZGl0aW9uOjpoYXNQcm90b3R5cGVXaXRob3V0QmFy
cmllcik6CisgICAgICAgIChKU0M6OlByb3BlcnR5Q29uZGl0aW9uOjpvcGVyYXRvciBib29sIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlDb25kaXRpb246OmtpbmQgY29uc3QpOgorICAg
ICAgICAoSlNDOjpQcm9wZXJ0eUNvbmRpdGlvbjo6dWlkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
UHJvcGVydHlDb25kaXRpb246Omhhc09mZnNldCBjb25zdCk6CisgICAgICAgIChKU0M6OlByb3Bl
cnR5Q29uZGl0aW9uOjpoYXNBdHRyaWJ1dGVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJvcGVy
dHlDb25kaXRpb246Omhhc1Byb3RvdHlwZSBjb25zdCk6CisgICAgICAgIChKU0M6OlByb3BlcnR5
Q29uZGl0aW9uOjpoYXNSZXF1aXJlZFZhbHVlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJvcGVy
dHlDb25kaXRpb246Omhhc2ggY29uc3QpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eUNvbmRpdGlv
bjo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChKU0M6OlByb3BlcnR5Q29uZGl0aW9uOjpp
c0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSBjb25zdCk6CisgICAgICAgIChKU0M6OlByb3BlcnR5Q29u
ZGl0aW9uOjp3YXRjaGluZ1JlcXVpcmVzUmVwbGFjZW1lbnRXYXRjaHBvaW50IGNvbnN0KToKKwog
MjAxOC0wOC0wMyAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBH
aXZlIHRoZSBganNjYCBzaGVsbCB0aGUgSklUIGVudGl0bGVtZW50CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGYwZTQ3ZjM4NGNl
NWUzZDI1MWFmY2RhMWEzYjAyNWM4YmMyNDdhZTYuLmE4MTA4ODkwNTU0MWE2ZjdkNGZlNjgyZjQz
ZTg1MTUxYjJiOTBkZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTgtMDgtMDQgIFl1c3VrZSBT
dXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgU2hyaW5rIHNpemUgb2Yg
UHJvcGVydHlDb25kaXRpb24gYnkgcGFja2luZyBVbmlxdWVkU3RyaW5nSW1wbCogYW5kIEtpbmQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODMyOAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0
Y2ggYWRkcyBDb21wYWN0UG9pbnRlclR1cGxlLCB3aGljaCBjYW4gcGFjayBhIHBvaW50ZXIgYW5k
IDhiaXQgdmFsdWUgaW50byAxNmJ5dGVzLgorICAgICAgICBJbiAzMmJpdCBhcmNoaXRlY3R1cmUs
IGl0IGp1c3QgaGFzIHR3byBmaWVsZHMgZm9yIGEgcG9pbnRlciBhbmQgOGJpdCB2YWx1ZS4gSW4g
NjRiaXQgYXJjaGl0ZWN0dXJlLAorICAgICAgICB3ZSB1c2UgdXBwZXIgNWJpdHMgKHplcm9zIGJl
Y2F1c2Ugb2YgdGhlIGVmZmVjdGl2ZSB3aWR0aCBvZiB2aXJ0dWFsIGFkZHJlc3MpIGFuZCBsb3dl
ciAzYml0cyAoemVyb3MKKyAgICAgICAgYmVjYXVzZSBvZiB0aGUgYWxpZ25tZW50IGVuc3VyZWQg
Ynkgc3RhdGljX2Fzc2VydCkgdG8gcGFjayA4Yml0IHZhbHVlIGludG8gdGhlIHBvaW50ZXIgZGF0
YS4gU2luY2UKKyAgICAgICAgZXZlbiB0aGUgNS1sZXZlbCBwYWdlIHRhYmxlcyB1c2UgNTdiaXQg
ZWZmZWN0aXZlIGFkZHJlc3MsIHRoaXMgc3RyYXRlZ3kgd29ya3Mgd2VsbC4KKworICAgICAgICAq
IHd0Zi9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiB3dGYvQ29tcGFjdFBvaW50ZXJUdXBsZS5o
OiBBZGRlZC4KKyAgICAgICAgKFdURjo6Q29tcGFjdFBvaW50ZXJUdXBsZTo6ZW5jb2RlVHlwZSk6
CisgICAgICAgIChXVEY6OkNvbXBhY3RQb2ludGVyVHVwbGU6OmRlY29kZVR5cGUpOgorICAgICAg
ICAoV1RGOjpDb21wYWN0UG9pbnRlclR1cGxlOjpDb21wYWN0UG9pbnRlclR1cGxlKToKKyAgICAg
ICAgKFdURjo6Q29tcGFjdFBvaW50ZXJUdXBsZTo6cG9pbnRlciBjb25zdCk6CisgICAgICAgIChX
VEY6OkNvbXBhY3RQb2ludGVyVHVwbGU6OnNldFBvaW50ZXIpOgorICAgICAgICAoV1RGOjpDb21w
YWN0UG9pbnRlclR1cGxlOjp0eXBlIGNvbnN0KToKKyAgICAgICAgKFdURjo6Q29tcGFjdFBvaW50
ZXJUdXBsZTo6c2V0VHlwZSk6CisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisKIDIwMTgtMDgt
MDMgIEJlbiBSaWNoYXJkcyAgPGJlbnRvbl9yaWNoYXJkc0BhcHBsZS5jb20+CiAKICAgICAgICAg
V2Ugc2hvdWxkIGNhY2hlIHRoZSBjb21waWxlZCBzYW5kYm94IHByb2ZpbGUgaW4gYSBkYXRhIHZh
dWx0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvcGVydHlD
b25kaXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb3BlcnR5Q29u
ZGl0aW9uLmNwcAppbmRleCA0MzYzNGJlMDlhZmJjY2Y3MjIyNmE3OTMxMDU3NGM3ZjNjMmJlMjQ3
Li4zZGViNDRjNzVmZmRmZjBiOTZiNGQ2MWI4NDE5MmIxYmQyMTQ3NzA4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvcGVydHlDb25kaXRpb24uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Qcm9wZXJ0eUNvbmRpdGlvbi5jcHAKQEAg
LTQzLDE5ICs0MywxOSBAQCB2b2lkIFByb3BlcnR5Q29uZGl0aW9uOjpkdW1wSW5Db250ZXh0KFBy
aW50U3RyZWFtJiBvdXQsIER1bXBDb250ZXh0KiBjb250ZXh0KSBjbwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIAotICAgIHN3aXRjaCAobV9raW5kKSB7CisgICAgc3dpdGNoIChtX2hlYWRl
ci50eXBlKCkpIHsKICAgICBjYXNlIFByZXNlbmNlOgotICAgICAgICBvdXQucHJpbnQobV9raW5k
LCAiIG9mICIsIG1fdWlkLCAiIGF0ICIsIG9mZnNldCgpLCAiIHdpdGggYXR0cmlidXRlcyAiLCBh
dHRyaWJ1dGVzKCkpOworICAgICAgICBvdXQucHJpbnQobV9oZWFkZXIudHlwZSgpLCAiIG9mICIs
IG1faGVhZGVyLnBvaW50ZXIoKSwgIiBhdCAiLCBvZmZzZXQoKSwgIiB3aXRoIGF0dHJpYnV0ZXMg
IiwgYXR0cmlidXRlcygpKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQWJzZW5jZToKICAg
ICBjYXNlIEFic2VuY2VPZlNldEVmZmVjdDoKLSAgICAgICAgb3V0LnByaW50KG1fa2luZCwgIiBv
ZiAiLCBtX3VpZCwgIiB3aXRoIHByb3RvdHlwZSAiLCBpbkNvbnRleHQoSlNWYWx1ZShwcm90b3R5
cGUoKSksIGNvbnRleHQpKTsKKyAgICAgICAgb3V0LnByaW50KG1faGVhZGVyLnR5cGUoKSwgIiBv
ZiAiLCBtX2hlYWRlci5wb2ludGVyKCksICIgd2l0aCBwcm90b3R5cGUgIiwgaW5Db250ZXh0KEpT
VmFsdWUocHJvdG90eXBlKCkpLCBjb250ZXh0KSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNl
IEVxdWl2YWxlbmNlOgotICAgICAgICBvdXQucHJpbnQobV9raW5kLCAiIG9mICIsIG1fdWlkLCAi
IHdpdGggIiwgaW5Db250ZXh0KHJlcXVpcmVkVmFsdWUoKSwgY29udGV4dCkpOworICAgICAgICBv
dXQucHJpbnQobV9oZWFkZXIudHlwZSgpLCAiIG9mICIsIG1faGVhZGVyLnBvaW50ZXIoKSwgIiB3
aXRoICIsIGluQ29udGV4dChyZXF1aXJlZFZhbHVlKCksIGNvbnRleHQpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIGNhc2UgSGFzUHJvdG90eXBlOgotICAgICAgICBvdXQucHJpbnQobV9raW5kLCAi
IHdpdGggcHJvdG90eXBlICIsIGluQ29udGV4dChKU1ZhbHVlKHByb3RvdHlwZSgpKSwgY29udGV4
dCkpOworICAgICAgICBvdXQucHJpbnQobV9oZWFkZXIudHlwZSgpLCAiIHdpdGggcHJvdG90eXBl
ICIsIGluQ29udGV4dChKU1ZhbHVlKHByb3RvdHlwZSgpKSwgY29udGV4dCkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC04MSw3
ICs4MSw3IEBAIGJvb2wgUHJvcGVydHlDb25kaXRpb246OmlzU3RpbGxWYWxpZEFzc3VtaW5nSW1w
dXJlUHJvcGVydHlXYXRjaHBvaW50KAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0g
ICAgc3dpdGNoIChtX2tpbmQpIHsKKyAgICBzd2l0Y2ggKG1faGVhZGVyLnR5cGUoKSkgewogICAg
IGNhc2UgUHJlc2VuY2U6CiAgICAgY2FzZSBBYnNlbmNlOgogICAgIGNhc2UgQWJzZW5jZU9mU2V0
RWZmZWN0OgpAQCAtMTAyLDcgKzEwMiw3IEBAIGJvb2wgUHJvcGVydHlDb25kaXRpb246OmlzU3Rp
bGxWYWxpZEFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KAogICAgICAgICBicmVhazsK
ICAgICB9CiAgICAgCi0gICAgc3dpdGNoIChtX2tpbmQpIHsKKyAgICBzd2l0Y2ggKG1faGVhZGVy
LnR5cGUoKSkgewogICAgIGNhc2UgUHJlc2VuY2U6IHsKICAgICAgICAgdW5zaWduZWQgY3VycmVu
dEF0dHJpYnV0ZXM7CiAgICAgICAgIFByb3BlcnR5T2Zmc2V0IGN1cnJlbnRPZmZzZXQgPSBzdHJ1
Y3R1cmUtPmdldENvbmN1cnJlbnRseSh1aWQoKSwgY3VycmVudEF0dHJpYnV0ZXMpOwpAQCAtMjU5
LDcgKzI1OSw3IEBAIGJvb2wgUHJvcGVydHlDb25kaXRpb246OnZhbGlkaXR5UmVxdWlyZXNJbXB1
cmVQcm9wZXJ0eVdhdGNocG9pbnQoU3RydWN0dXJlKiBzdHJ1CiAgICAgaWYgKCEqdGhpcykKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIHN3aXRjaCAobV9raW5kKSB7CisgICAgc3dp
dGNoIChtX2hlYWRlci50eXBlKCkpIHsKICAgICBjYXNlIFByZXNlbmNlOgogICAgIGNhc2UgQWJz
ZW5jZToKICAgICBjYXNlIEVxdWl2YWxlbmNlOgpAQCAtMjgxLDcgKzI4MSw3IEBAIGJvb2wgUHJv
cGVydHlDb25kaXRpb246OmlzU3RpbGxWYWxpZChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNPYmpl
Y3QqIGJhc2UpIGNvbnN0CiAgICAgLy8gQ3VycmVudGx5IHdlIGFzc3VtZSB0aGF0IGFuIGltcHVy
ZSBwcm9wZXJ0eSBjYW4gY2F1c2UgYSBwcm9wZXJ0eSB0byBhcHBlYXIsIGFuZCBjYW4gYWxzbwog
ICAgIC8vICJzaGFkb3ciIGFuIGV4aXN0aW5nIEpTIHByb3BlcnR5IG9uIHRoZSBzYW1lIG9iamVj
dC4gSGVuY2UgaXQgYWZmZWN0cyBib3RoIHByZXNlbmNlIGFuZAogICAgIC8vIGFic2VuY2UuIEl0
IGRvZXNuJ3QgYWZmZWN0IEFic2VuY2VPZlNldEVmZmVjdCBiZWNhdXNlIGltcHVyZSBwcm9wZXJ0
aWVzIGFyZW4ndCBldmVyIHNldHRlcnMuCi0gICAgc3dpdGNoIChtX2tpbmQpIHsKKyAgICBzd2l0
Y2ggKG1faGVhZGVyLnR5cGUoKSkgewogICAgIGNhc2UgQWJzZW5jZToKICAgICAgICAgaWYgKHN0
cnVjdHVyZS0+dHlwZUluZm8oKS5nZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZSgpIHx8IHN0cnVj
dHVyZS0+dHlwZUluZm8oKS5nZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZUZvclByb3BlcnR5QWJz
ZW5jZSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzA0LDcgKzMwNCw3IEBAIGJv
b2wgUHJvcGVydHlDb25kaXRpb246OmlzV2F0Y2hhYmxlV2hlblZhbGlkKAogICAgIGlmIChzdHJ1
Y3R1cmUtPnRyYW5zaXRpb25XYXRjaHBvaW50U2V0SGFzQmVlbkludmFsaWRhdGVkKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBzd2l0Y2ggKG1fa2luZCkgeworICAgIHN3aXRj
aCAobV9oZWFkZXIudHlwZSgpKSB7CiAgICAgY2FzZSBFcXVpdmFsZW5jZTogewogICAgICAgICBQ
cm9wZXJ0eU9mZnNldCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseSh1aWQoKSk7
CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1By
b3BlcnR5Q29uZGl0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvcGVy
dHlDb25kaXRpb24uaAppbmRleCBlMmY2YjFmMjI2NDdlMzQ1ODFmNWFlN2U0YzRjODBjZmM4M2Iy
MGE3Li44Y2ZiOTg5NzU4NzY3OTMyZjM3YTllMzZkOTY2ZWUxMjJmZjRkMWJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvcGVydHlDb25kaXRpb24uaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvcGVydHlDb25kaXRpb24uaApAQCAt
MjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJKU09iamVjdC5oIgorI2lu
Y2x1ZGUgPHd0Zi9Db21wYWN0UG9pbnRlclR1cGxlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0zNCwyNCArMzUsMjQgQEAgY2xhc3MgVHJhY2tlZFJl
ZmVyZW5jZXM7CiAKIGNsYXNzIFByb3BlcnR5Q29uZGl0aW9uIHsKIHB1YmxpYzoKLSAgICBlbnVt
IEtpbmQgeworICAgIGVudW0gS2luZCA6IHVpbnQ4X3QgewogICAgICAgICBQcmVzZW5jZSwKICAg
ICAgICAgQWJzZW5jZSwKICAgICAgICAgQWJzZW5jZU9mU2V0RWZmZWN0LAogICAgICAgICBFcXVp
dmFsZW5jZSwgLy8gQW4gYWRhcHRpdmUgd2F0Y2hwb2ludCBvbiB0aGlzIHdpbGwgYmUgYSBwYWly
IG9mIHdhdGNocG9pbnRzLCBhbmQgd2hlbiB0aGUgc3RydWN0dXJlIHRyYW5zaXRpb25zLCB3ZSB3
aWxsIHNldCB0aGUgcmVwbGFjZW1lbnQgd2F0Y2hwb2ludCBvbiB0aGUgbmV3IHN0cnVjdHVyZS4K
ICAgICAgICAgSGFzUHJvdG90eXBlCiAgICAgfTsKKworICAgIHVzaW5nIEhlYWRlciA9IENvbXBh
Y3RQb2ludGVyVHVwbGU8VW5pcXVlZFN0cmluZ0ltcGwqLCBLaW5kPjsKICAgICAKICAgICBQcm9w
ZXJ0eUNvbmRpdGlvbigpCi0gICAgICAgIDogbV91aWQobnVsbHB0cikKLSAgICAgICAgLCBtX2tp
bmQoUHJlc2VuY2UpCisgICAgICAgIDogbV9oZWFkZXIobnVsbHB0ciwgUHJlc2VuY2UpCiAgICAg
ewogICAgICAgICBtZW1zZXQoJnUsIDAsIHNpemVvZih1KSk7CiAgICAgfQogICAgIAogICAgIFBy
b3BlcnR5Q29uZGl0aW9uKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKLSAgICAgICAg
OiBtX3VpZChudWxscHRyKQotICAgICAgICAsIG1fa2luZChBYnNlbmNlKQorICAgICAgICA6IG1f
aGVhZGVyKG51bGxwdHIsIEFic2VuY2UpCiAgICAgewogICAgICAgICBtZW1zZXQoJnUsIDAsIHNp
emVvZih1KSk7CiAgICAgfQpAQCAtNTksOCArNjAsNyBAQCBjbGFzcyBQcm9wZXJ0eUNvbmRpdGlv
biB7CiAgICAgc3RhdGljIFByb3BlcnR5Q29uZGl0aW9uIHByZXNlbmNlV2l0aG91dEJhcnJpZXIo
VW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCB1bnNpZ25lZCBh
dHRyaWJ1dGVzKQogICAgIHsKICAgICAgICAgUHJvcGVydHlDb25kaXRpb24gcmVzdWx0OwotICAg
ICAgICByZXN1bHQubV91aWQgPSB1aWQ7Ci0gICAgICAgIHJlc3VsdC5tX2tpbmQgPSBQcmVzZW5j
ZTsKKyAgICAgICAgcmVzdWx0Lm1faGVhZGVyID0gSGVhZGVyKHVpZCwgUHJlc2VuY2UpOwogICAg
ICAgICByZXN1bHQudS5wcmVzZW5jZS5vZmZzZXQgPSBvZmZzZXQ7CiAgICAgICAgIHJlc3VsdC51
LnByZXNlbmNlLmF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzOwogICAgICAgICByZXR1cm4gcmVzdWx0
OwpAQCAtNzYsOCArNzYsNyBAQCBjbGFzcyBQcm9wZXJ0eUNvbmRpdGlvbiB7CiAgICAgc3RhdGlj
IFByb3BlcnR5Q29uZGl0aW9uIGFic2VuY2VXaXRob3V0QmFycmllcihVbmlxdWVkU3RyaW5nSW1w
bCogdWlkLCBKU09iamVjdCogcHJvdG90eXBlKQogICAgIHsKICAgICAgICAgUHJvcGVydHlDb25k
aXRpb24gcmVzdWx0OwotICAgICAgICByZXN1bHQubV91aWQgPSB1aWQ7Ci0gICAgICAgIHJlc3Vs
dC5tX2tpbmQgPSBBYnNlbmNlOworICAgICAgICByZXN1bHQubV9oZWFkZXIgPSBIZWFkZXIodWlk
LCBBYnNlbmNlKTsKICAgICAgICAgcmVzdWx0LnUucHJvdG90eXBlLnByb3RvdHlwZSA9IHByb3Rv
dHlwZTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC05NCw4ICs5Myw3IEBAIGNs
YXNzIFByb3BlcnR5Q29uZGl0aW9uIHsKICAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwg
SlNPYmplY3QqIHByb3RvdHlwZSkKICAgICB7CiAgICAgICAgIFByb3BlcnR5Q29uZGl0aW9uIHJl
c3VsdDsKLSAgICAgICAgcmVzdWx0Lm1fdWlkID0gdWlkOwotICAgICAgICByZXN1bHQubV9raW5k
ID0gQWJzZW5jZU9mU2V0RWZmZWN0OworICAgICAgICByZXN1bHQubV9oZWFkZXIgPSBIZWFkZXIo
dWlkLCBBYnNlbmNlT2ZTZXRFZmZlY3QpOwogICAgICAgICByZXN1bHQudS5wcm90b3R5cGUucHJv
dG90eXBlID0gcHJvdG90eXBlOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTEx
Miw4ICsxMTAsNyBAQCBjbGFzcyBQcm9wZXJ0eUNvbmRpdGlvbiB7CiAgICAgICAgIFVuaXF1ZWRT
dHJpbmdJbXBsKiB1aWQsIEpTVmFsdWUgdmFsdWUpCiAgICAgewogICAgICAgICBQcm9wZXJ0eUNv
bmRpdGlvbiByZXN1bHQ7Ci0gICAgICAgIHJlc3VsdC5tX3VpZCA9IHVpZDsKLSAgICAgICAgcmVz
dWx0Lm1fa2luZCA9IEVxdWl2YWxlbmNlOworICAgICAgICByZXN1bHQubV9oZWFkZXIgPSBIZWFk
ZXIodWlkLCBFcXVpdmFsZW5jZSk7CiAgICAgICAgIHJlc3VsdC51LmVxdWl2YWxlbmNlLnZhbHVl
ID0gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9
CkBAIC0xMjksNyArMTI2LDcgQEAgY2xhc3MgUHJvcGVydHlDb25kaXRpb24gewogICAgIHN0YXRp
YyBQcm9wZXJ0eUNvbmRpdGlvbiBoYXNQcm90b3R5cGVXaXRob3V0QmFycmllcihKU09iamVjdCog
cHJvdG90eXBlKQogICAgIHsKICAgICAgICAgUHJvcGVydHlDb25kaXRpb24gcmVzdWx0OwotICAg
ICAgICByZXN1bHQubV9raW5kID0gSGFzUHJvdG90eXBlOworICAgICAgICByZXN1bHQubV9oZWFk
ZXIgPSBIZWFkZXIobnVsbHB0ciwgSGFzUHJvdG90eXBlKTsKICAgICAgICAgcmVzdWx0LnUucHJv
dG90eXBlLnByb3RvdHlwZSA9IHByb3RvdHlwZTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICB9CkBAIC0xNDEsMTggKzEzOCwxOCBAQCBjbGFzcyBQcm9wZXJ0eUNvbmRpdGlvbiB7CiAgICAg
ICAgIHJldHVybiBoYXNQcm90b3R5cGVXaXRob3V0QmFycmllcihwcm90b3R5cGUpOwogICAgIH0K
ICAgICAKLSAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gbV91aWQg
fHwgbV9raW5kICE9IFByZXNlbmNlOyB9CisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNv
bnN0IHsgcmV0dXJuIG1faGVhZGVyLnBvaW50ZXIoKSB8fCBtX2hlYWRlci50eXBlKCkgIT0gUHJl
c2VuY2U7IH0KICAgICAKLSAgICBLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7IH0K
LSAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKCkgY29uc3QgeyByZXR1cm4gbV91aWQ7IH0KKyAg
ICBLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2hlYWRlci50eXBlKCk7IH0KKyAgICBVbmlx
dWVkU3RyaW5nSW1wbCogdWlkKCkgY29uc3QgeyByZXR1cm4gbV9oZWFkZXIucG9pbnRlcigpOyB9
CiAgICAgCi0gICAgYm9vbCBoYXNPZmZzZXQoKSBjb25zdCB7IHJldHVybiAhISp0aGlzICYmIG1f
a2luZCA9PSBQcmVzZW5jZTsgfTsKKyAgICBib29sIGhhc09mZnNldCgpIGNvbnN0IHsgcmV0dXJu
ICEhKnRoaXMgJiYgbV9oZWFkZXIudHlwZSgpID09IFByZXNlbmNlOyB9OwogICAgIFByb3BlcnR5
T2Zmc2V0IG9mZnNldCgpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQoaGFzT2Zmc2V0KCkp
OwogICAgICAgICByZXR1cm4gdS5wcmVzZW5jZS5vZmZzZXQ7CiAgICAgfQotICAgIGJvb2wgaGFz
QXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuICEhKnRoaXMgJiYgbV9raW5kID09IFByZXNlbmNl
OyB9OworICAgIGJvb2wgaGFzQXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuICEhKnRoaXMgJiYg
bV9oZWFkZXIudHlwZSgpID09IFByZXNlbmNlOyB9OwogICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXMo
KSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKGhhc0F0dHJpYnV0ZXMoKSk7CkBAIC0xNjIs
NyArMTU5LDcgQEAgY2xhc3MgUHJvcGVydHlDb25kaXRpb24gewogICAgIGJvb2wgaGFzUHJvdG90
eXBlKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiAhISp0aGlzCi0gICAgICAgICAgICAm
JiAobV9raW5kID09IEFic2VuY2UgfHwgbV9raW5kID09IEFic2VuY2VPZlNldEVmZmVjdCB8fCBt
X2tpbmQgPT0gSGFzUHJvdG90eXBlKTsKKyAgICAgICAgICAgICYmIChtX2hlYWRlci50eXBlKCkg
PT0gQWJzZW5jZSB8fCBtX2hlYWRlci50eXBlKCkgPT0gQWJzZW5jZU9mU2V0RWZmZWN0IHx8IG1f
aGVhZGVyLnR5cGUoKSA9PSBIYXNQcm90b3R5cGUpOwogICAgIH0KICAgICBKU09iamVjdCogcHJv
dG90eXBlKCkgY29uc3QKICAgICB7CkBAIC0xNzAsNyArMTY3LDcgQEAgY2xhc3MgUHJvcGVydHlD
b25kaXRpb24gewogICAgICAgICByZXR1cm4gdS5wcm90b3R5cGUucHJvdG90eXBlOwogICAgIH0K
ICAgICAKLSAgICBib29sIGhhc1JlcXVpcmVkVmFsdWUoKSBjb25zdCB7IHJldHVybiAhISp0aGlz
ICYmIG1fa2luZCA9PSBFcXVpdmFsZW5jZTsgfQorICAgIGJvb2wgaGFzUmVxdWlyZWRWYWx1ZSgp
IGNvbnN0IHsgcmV0dXJuICEhKnRoaXMgJiYgbV9oZWFkZXIudHlwZSgpID09IEVxdWl2YWxlbmNl
OyB9CiAgICAgSlNWYWx1ZSByZXF1aXJlZFZhbHVlKCkgY29uc3QKICAgICB7CiAgICAgICAgIEFT
U0VSVChoYXNSZXF1aXJlZFZhbHVlKCkpOwpAQCAtMTgyLDggKzE3OSw4IEBAIGNsYXNzIFByb3Bl
cnR5Q29uZGl0aW9uIHsKICAgICAKICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKICAgICB7Ci0g
ICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IFdURjo6UHRySGFzaDxVbmlxdWVkU3RyaW5nSW1wbCo+
OjpoYXNoKG1fdWlkKSArIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2tpbmQpOwotICAgICAgICBz
d2l0Y2ggKG1fa2luZCkgeworICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBXVEY6OlB0ckhhc2g8
VW5pcXVlZFN0cmluZ0ltcGwqPjo6aGFzaChtX2hlYWRlci5wb2ludGVyKCkpICsgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KG1faGVhZGVyLnR5cGUoKSk7CisgICAgICAgIHN3aXRjaCAobV9oZWFkZXIu
dHlwZSgpKSB7CiAgICAgICAgIGNhc2UgUHJlc2VuY2U6CiAgICAgICAgICAgICByZXN1bHQgXj0g
dS5wcmVzZW5jZS5vZmZzZXQ7CiAgICAgICAgICAgICByZXN1bHQgXj0gdS5wcmVzZW5jZS5hdHRy
aWJ1dGVzOwpAQCAtMjAyLDExICsxOTksMTEgQEAgY2xhc3MgUHJvcGVydHlDb25kaXRpb24gewog
ICAgIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQcm9wZXJ0eUNvbmRpdGlvbiYgb3RoZXIp
IGNvbnN0CiAgICAgewotICAgICAgICBpZiAobV91aWQgIT0gb3RoZXIubV91aWQpCisgICAgICAg
IGlmIChtX2hlYWRlci5wb2ludGVyKCkgIT0gb3RoZXIubV9oZWFkZXIucG9pbnRlcigpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAobV9raW5kICE9IG90aGVyLm1fa2lu
ZCkKKyAgICAgICAgaWYgKG1faGVhZGVyLnR5cGUoKSAhPSBvdGhlci5tX2hlYWRlci50eXBlKCkp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHN3aXRjaCAobV9raW5kKSB7Cisg
ICAgICAgIHN3aXRjaCAobV9oZWFkZXIudHlwZSgpKSB7CiAgICAgICAgIGNhc2UgUHJlc2VuY2U6
CiAgICAgICAgICAgICByZXR1cm4gdS5wcmVzZW5jZS5vZmZzZXQgPT0gb3RoZXIudS5wcmVzZW5j
ZS5vZmZzZXQKICAgICAgICAgICAgICAgICAmJiB1LnByZXNlbmNlLmF0dHJpYnV0ZXMgPT0gb3Ro
ZXIudS5wcmVzZW5jZS5hdHRyaWJ1dGVzOwpAQCAtMjIzLDcgKzIyMCw3IEBAIGNsYXNzIFByb3Bl
cnR5Q29uZGl0aW9uIHsKICAgICAKICAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkg
Y29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiAhbV91aWQgJiYgbV9raW5kID09IEFic2VuY2U7
CisgICAgICAgIHJldHVybiAhbV9oZWFkZXIucG9pbnRlcigpICYmIG1faGVhZGVyLnR5cGUoKSA9
PSBBYnNlbmNlOwogICAgIH0KICAgICAKICAgICAvLyBUd28gY29uZGl0aW9ucyBhcmUgY29tcGF0
aWJsZSBpZiB0aGV5IGFyZSBpZGVudGljYWwgb3IgaWYgdGhleSBzcGVhayBvZiBkaWZmZXJlbnQg
dWlkcy4gSWYKQEAgLTI5Niw3ICsyOTMsNyBAQCBjbGFzcyBQcm9wZXJ0eUNvbmRpdGlvbiB7CiAg
ICAgfQogICAgIGJvb2wgd2F0Y2hpbmdSZXF1aXJlc1JlcGxhY2VtZW50V2F0Y2hwb2ludCgpIGNv
bnN0CiAgICAgewotICAgICAgICByZXR1cm4gISEqdGhpcyAmJiBtX2tpbmQgPT0gRXF1aXZhbGVu
Y2U7CisgICAgICAgIHJldHVybiAhISp0aGlzICYmIG1faGVhZGVyLnR5cGUoKSA9PSBFcXVpdmFs
ZW5jZTsKICAgICB9CiAgICAgCiAgICAgLy8gVGhpcyBtZWFucyB0aGF0IHRoZSBvYmplY3RzIGlu
dm9sdmVkIGluIHRoaXMgYXJlIHN0aWxsIGxpdmUuCkBAIC0zMTMsOCArMzEwLDcgQEAgY2xhc3Mg
UHJvcGVydHlDb25kaXRpb24gewogcHJpdmF0ZToKICAgICBib29sIGlzV2F0Y2hhYmxlV2hlblZh
bGlkKFN0cnVjdHVyZSosIFdhdGNoYWJpbGl0eUVmZm9ydCkgY29uc3Q7CiAKLSAgICBVbmlxdWVk
U3RyaW5nSW1wbCogbV91aWQ7Ci0gICAgS2luZCBtX2tpbmQ7CisgICAgSGVhZGVyIG1faGVhZGVy
OwogICAgIHVuaW9uIHsKICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgIFByb3BlcnR5T2Zm
c2V0IG9mZnNldDsKQEAgLTMyMiw4ICszMTgsNyBAQCBjbGFzcyBQcm9wZXJ0eUNvbmRpdGlvbiB7
CiAgICAgICAgIH0gcHJlc2VuY2U7CiAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICBKU09i
amVjdCogcHJvdG90eXBlOwotICAgICAgICB9IHByb3RvdHlwZTsKLSAgICAgICAgc3RydWN0IHsK
KyAgICAgICAgfSBwcm90b3R5cGU7IHN0cnVjdCB7CiAgICAgICAgICAgICBFbmNvZGVkSlNWYWx1
ZSB2YWx1ZTsKICAgICAgICAgfSBlcXVpdmFsZW5jZTsKICAgICB9IHU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMu
dHh0CmluZGV4IGU0NjgwMmEzNDQ0ZWI0MzMwMjJhNTllNThjNjc4YjE0MTZkMjczYjQuLjk3OThi
OWI4YTEwNTg1ZjM0ZjA3OTJjOWEzMTQ5ZTA5YzM4Y2U5NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0
CkBAIC0yOCw2ICsyOCw3IEBAIHNldChXVEZfUFVCTElDX0hFQURFUlMKICAgICBDaGVja2VkQm9v
bGVhbi5oCiAgICAgQ2xvY2tUeXBlLmgKICAgICBDb21tYVByaW50ZXIuaAorICAgIENvbXBhY3RQ
b2ludGVyVHVwbGUuaAogICAgIENvbXBpbGF0aW9uVGhyZWFkLmgKICAgICBDb21waWxlci5oCiAg
ICAgQ29tcGxldGlvbkhhbmRsZXIuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ29tcGFj
dFBvaW50ZXJUdXBsZS5oIGIvU291cmNlL1dURi93dGYvQ29tcGFjdFBvaW50ZXJUdXBsZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmMwZTAxMGVhMDhlYThlODNhOGYxMzM5YTNlOGRiNzUzYTZhNjgyNmEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Db21wYWN0UG9pbnRlclR1cGxlLmgKQEAgLTAs
MCArMSwxMDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggWXVzdWtlIFN1enVraSA8dXRh
dGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKyNpbmNsdWRl
IDx3dGYvU3RkTGliRXh0cmFzLmg+CisKK25hbWVzcGFjZSBXVEYgeworCisvLyBUaGUgZ29hbCBv
ZiB0aGlzIGNsYXNzIGlzIGZvbGRpbmcgYSBwb2ludGVyIGFuZCAxIGJ5dGUgdmFsdWUgaW50byA4
IGJ5dGVzIGluIGJvdGggMzJiaXQgYW5kIDY0Yml0IGFyY2hpdGVjdHVyZXMuCisvLyAzMmJpdCBh
cmNoaXRlY3R1cmUganVzdCBoYXMgYSBwYWlyIG9mIGJ5dGUgYW5kIHBvaW50ZXIsIHdoaWNoIHNo
b3VsZCBiZSA4IGJ5dGVzLgorLy8gSW4gNjRiaXQsIHdlIHVzZSB0aGUgdXBwZXIgNSBiaXRzIGFu
ZCBsb3dlciAzIGJpdHMgKHplcm8gZHVlIHRvIGFsaWdubWVudCkgc2luY2UgdGhlc2UgYml0cyBh
cmUgc2FmZSB0byB1c2UgZXZlbgorLy8gd2l0aCA1LWxldmVsIHBhZ2UgdGFibGVzIHdoZXJlIHRo
ZSBlZmZlY3RpdmUgcG9pbnRlciB3aWR0aCBpcyA1N2JpdHMuCit0ZW1wbGF0ZTx0eXBlbmFtZSBQ
b2ludGVyVHlwZSwgdHlwZW5hbWUgVHlwZT4KK2NsYXNzIENvbXBhY3RQb2ludGVyVHVwbGUgewor
cHVibGljOgorICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFR5cGUpID09IDEsICIiKTsKKyAgICBz
dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfcG9pbnRlcjxQb2ludGVyVHlwZT46OnZhbHVlLCAiIik7Cisg
ICAgc3RhdGljX2Fzc2VydChhbGlnbm9mKHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8UG9p
bnRlclR5cGU+Ojp0eXBlKSA+PSBhbGlnbm9mKHZvaWQqKSwgIiIpOworICAgIHN0YXRpY19hc3Nl
cnQoc3RkOjppc19pbnRlZ3JhbDxUeXBlPjo6dmFsdWUgfHwgc3RkOjppc19lbnVtPFR5cGU+Ojp2
YWx1ZSwgIiIpOworCisgICAgQ29tcGFjdFBvaW50ZXJUdXBsZSgpID0gZGVmYXVsdDsKKworI2lm
IENQVShBRERSRVNTNjQpCitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50NjRfdCBl
bmNvZGVUeXBlKHVpbnQ4X3QgdHlwZSkKKyAgICB7CisgICAgICAgIC8vIEVuY29kZSA4Yml0IHR5
cGUgVVVVREREREQgaW50byA2NGJpdCBkYXRhIERERERELi41NmJpdC4uVVVVLgorICAgICAgICBy
ZXR1cm4gKHN0YXRpY19jYXN0PHVpbnQ2NF90Pih0eXBlKSA8PCA1OSkgfCAoc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KHR5cGUpID4+IDUpOworICAgIH0KKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ4
X3QgZGVjb2RlVHlwZSh1aW50NjRfdCB2YWx1ZSkKKyAgICB7CisgICAgICAgIC8vIERlY29kZSA2
NGJpdCBkYXRhIEREREQuLjU2Yml0Li5VVVVVIGludG8gOGJpdCB0eXBlIFVVVVVERERELgorICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDhfdD4oKHZhbHVlID4+IDU5KSB8ICh2YWx1ZSA8
PCA1KSk7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50NjRfdCB0eXBlTWFzayA9
IGVuY29kZVR5cGUoVUlOVDhfTUFYKTsKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ2NF90IHBv
aW50ZXJNYXNrID0gfnR5cGVNYXNrOworCisgICAgQ29tcGFjdFBvaW50ZXJUdXBsZShQb2ludGVy
VHlwZSBwb2ludGVyLCBUeXBlIHR5cGUpCisgICAgICAgIDogbV9kYXRhKGJpdHdpc2VfY2FzdDx1
aW50NjRfdD4ocG9pbnRlcikgfCBlbmNvZGVUeXBlKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHR5cGUp
KSkKKyAgICB7CisgICAgfQorCisgICAgUG9pbnRlclR5cGUgcG9pbnRlcigpIGNvbnN0IHsgcmV0
dXJuIGJpdHdpc2VfY2FzdDxQb2ludGVyVHlwZT4obV9kYXRhICYgcG9pbnRlck1hc2spOyB9Cisg
ICAgdm9pZCBzZXRQb2ludGVyKFBvaW50ZXJUeXBlIHBvaW50ZXIpCisgICAgeworICAgICAgICBt
X2RhdGEgPSBiaXR3aXNlX2Nhc3Q8dWludDY0X3Q+KHBvaW50ZXIpIHwgKG1fZGF0YSAmIHR5cGVN
YXNrKTsKKyAgICB9CisKKyAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxUeXBlPihkZWNvZGVUeXBlKG1fZGF0YSkpOyB9CisgICAgdm9pZCBzZXRUeXBlKFR5cGUgdHlw
ZSkKKyAgICB7CisgICAgICAgIG1fZGF0YSA9IChtX2RhdGEgJiBwb2ludGVyTWFzaykgfCBlbmNv
ZGVUeXBlKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHR5cGUpKTsKKyAgICB9CisKK3ByaXZhdGU6Cisg
ICAgdWludDY0X3QgbV9kYXRhIHsgMCB9OworI2Vsc2UKK3B1YmxpYzoKKyAgICBDb21wYWN0UG9p
bnRlclR1cGxlKFBvaW50ZXJUeXBlIHBvaW50ZXIsIFR5cGUgdHlwZSkKKyAgICAgICAgOiBtX3Bv
aW50ZXIocG9pbnRlcikKKyAgICAgICAgLCBtX3R5cGUodHlwZSkKKyAgICB7CisgICAgfQorCisg
ICAgUG9pbnRlclR5cGUgcG9pbnRlcigpIGNvbnN0IHsgcmV0dXJuIG1fcG9pbnRlcjsgfQorICAg
IHZvaWQgc2V0UG9pbnRlcihQb2ludGVyVHlwZSBwb2ludGVyKSB7IG1fcG9pbnRlciA9IHBvaW50
ZXI7IH0KKyAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKyAgICB2b2lk
IHNldFR5cGUoVHlwZSB0eXBlKSB7IG1fdHlwZSA9IHR5cGU7IH0KKworcHJpdmF0ZToKKyAgICBQ
b2ludGVyVHlwZSBtX3BvaW50ZXIgeyBudWxscHRyIH07CisgICAgVHlwZSBtX3R5cGUgeyAwIH07
CisjZW5kaWYKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgorCit1c2luZyBXVEY6OkNvbXBhY3RQ
b2ludGVyVHVwbGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oIGIvU291
cmNlL1dURi93dGYvUGxhdGZvcm0uaAppbmRleCAyN2ZmNWY2NzNkOTJlNzE3M2QxZGQxN2Y2MTdm
MzRlNWQ4MTcwY2UxLi4wYzZlZmI4NjI5ODI1MzlkMmI0YjJjYzRmOGY4YjVmY2I0ZWM4OGU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtLmgKQEAgLTMyNyw2ICszMjcsMzIgQEAKICNkZWZpbmUgV1RGX0NQVV9ORUVEU19B
TElHTkVEX0FDQ0VTUyAxCiAjZW5kaWYKIAorI2lmIENPTVBJTEVSKEdDQ19PUl9DTEFORykKKy8q
IF9fTFA2NF9fIGlzIG5vdCBkZWZpbmVkIG9uIDY0Yml0IFdpbmRvd3Mgc2luY2UgaXQgdXNlcyBM
TFA2NC4gVXNpbmcgX19TSVpFT0ZfUE9JTlRFUl9fIGlzIHNpbXBsZXIuICovCisjaWYgX19TSVpF
T0ZfUE9JTlRFUl9fID09IDgKKyNkZWZpbmUgV1RGX0NQVV9BRERSRVNTNjQgMQorI2VsaWYgX19T
SVpFT0ZfUE9JTlRFUl9fID09IDQKKyNkZWZpbmUgV1RGX0NQVV9BRERSRVNTMzIgMQorI2Vsc2UK
KyNlcnJvciAiVW5zdXBwb3J0ZWQgcG9pbnRlciB3aWR0aCIKKyNlbmRpZgorI2VsaWYgQ09NUElM
RVIoTVNWQykKKyNpZiBkZWZpbmVkKF9XSU42NCkKKyNkZWZpbmUgV1RGX0NQVV9BRERSRVNTNjQg
MQorI2Vsc2UKKyNkZWZpbmUgV1RGX0NQVV9BRERSRVNTMzIgMQorI2VuZGlmCisjZWxzZQorLyog
VGhpcyBpcyB0aGUgbW9zdCBnZW5lcmljIHdheS4gQnV0IGluIE9TKERBUldJTiksIFBsYXRmb3Jt
LmggY2FuIGJlIGluY2x1ZGVkIGJ5IHNhbmRib3ggZGVmaW5pdGlvbiBmaWxlICguc2IpLgorICog
QXQgdGhhdCB0aW1lLCB3ZSBjYW5ub3QgaW5jbHVkZSAic3RkaW50LmgiIGhlYWRlci4gU28gaW4g
dGhlIGNhc2Ugb2Yga25vd24gY29tcGlsZXJzLCB3ZSB1c2UgcHJlZGVmaW5lZCBjb25zdGFudHMg
aW5zdGVhZC4gKi8KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpZiBVSU5UUFRSX01BWCA+IFVJTlQz
Ml9NQVgKKyNkZWZpbmUgV1RGX0NQVV9BRERSRVNTNjQgMQorI2Vsc2UKKyNkZWZpbmUgV1RGX0NQ
VV9BRERSRVNTMzIgMQorI2VuZGlmCisjZW5kaWYKKwogLyogPT09PSBPUygpIC0gdW5kZXJseWlu
ZyBvcGVyYXRpbmcgc3lzdGVtOyBvbmx5IHRvIGJlIHVzZWQgZm9yIG1hbmRhdGVkIGxvdy1sZXZl
bCBzZXJ2aWNlcyBsaWtlIAogICAgdmlydHVhbCBtZW1vcnksIG5vdCB0byBjaG9vc2UgYSBHVUkg
dG9vbGtpdCA9PT09ICovCiAKQEAgLTcwNSwzMSArNzMxLDExIEBACiAjZW5kaWYKIAogI2lmICFk
ZWZpbmVkKFVTRV9KU1ZBTFVFNjQpICYmICFkZWZpbmVkKFVTRV9KU1ZBTFVFMzJfNjQpCi0jaWYg
Q09NUElMRVIoR0NDX09SX0NMQU5HKQotLyogX19MUDY0X18gaXMgbm90IGRlZmluZWQgb24gNjRi
aXQgV2luZG93cyBzaW5jZSBpdCB1c2VzIExMUDY0LiBVc2luZyBfX1NJWkVPRl9QT0lOVEVSX18g
aXMgc2ltcGxlci4gKi8KLSNpZiBfX1NJWkVPRl9QT0lOVEVSX18gPT0gOAotI2RlZmluZSBVU0Vf
SlNWQUxVRTY0IDEKLSNlbGlmIF9fU0laRU9GX1BPSU5URVJfXyA9PSA0Ci0jZGVmaW5lIFVTRV9K
U1ZBTFVFMzJfNjQgMQotI2Vsc2UKLSNlcnJvciAiVW5zdXBwb3J0ZWQgcG9pbnRlciB3aWR0aCIK
LSNlbmRpZgotI2VsaWYgQ09NUElMRVIoTVNWQykKLSNpZiBkZWZpbmVkKF9XSU42NCkKKyNpZiBD
UFUoQUREUkVTUzY0KQogI2RlZmluZSBVU0VfSlNWQUxVRTY0IDEKICNlbHNlCiAjZGVmaW5lIFVT
RV9KU1ZBTFVFMzJfNjQgMQogI2VuZGlmCi0jZWxzZQotLyogVGhpcyBpcyB0aGUgbW9zdCBnZW5l
cmljIHdheS4gQnV0IGluIE9TKERBUldJTiksIFBsYXRmb3JtLmggY2FuIGJlIGluY2x1ZGVkIGJ5
IHNhbmRib3ggZGVmaW5pdGlvbiBmaWxlICguc2IpLgotICogQXQgdGhhdCB0aW1lLCB3ZSBjYW5u
b3QgaW5jbHVkZSAic3RkaW50LmgiIGhlYWRlci4gU28gaW4gdGhlIGNhc2Ugb2Yga25vd24gY29t
cGlsZXJzLCB3ZSB1c2UgcHJlZGVmaW5lZCBjb25zdGFudHMgaW5zdGVhZC4gKi8KLSNpbmNsdWRl
IDxzdGRpbnQuaD4KLSNpZiBVSU5UUFRSX01BWCA+IFVJTlQzMl9NQVgKLSNkZWZpbmUgVVNFX0pT
VkFMVUU2NCAxCi0jZWxzZQotI2RlZmluZSBVU0VfSlNWQUxVRTMyXzY0IDEKLSNlbmRpZgotI2Vu
ZGlmCiAjZW5kaWYgLyogIWRlZmluZWQoVVNFX0pTVkFMVUU2NCkgJiYgIWRlZmluZWQoVVNFX0pT
VkFMVUUzMl82NCkgKi8KIAogLyogVGhlIEpJVCBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb24gYWxs
IHg4NiwgeDg2LTY0LCBBUk0gJiBNSVBTIHBsYXRmb3JtcyBleGNlcHQgQVJNdjdrLiAqLwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>346587</attachid>
            <date>2018-08-04 05:45:01 -0700</date>
            <delta_ts>2018-08-04 05:54:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188328-20180804214500.patch</filename>
            <type>text/plain</type>
            <size>24040</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0NTc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
YmI1NjBhMzE2N2E5N2IyMmVlYjk1MzM0YzRmYjBlZDRlOGQxYjE4Li43YjYzYjYzOGFmNzRjZTg5
Yjg2YWJjMmFiODM4NmExZjAzNmJmYzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0OCBAQAorMjAxOC0wOC0wNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBTaHJpbmsgc2l6ZSBvZiBQcm9wZXJ0eUNvbmRpdGlvbiBieSBwYWNr
aW5nIFVuaXF1ZWRTdHJpbmdJbXBsKiBhbmQgS2luZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4MzI4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgU2hyaW5raW5nIHRoZSBzaXplIG9mIFByb3BlcnR5Q29u
ZGl0aW9uIGFmZmVjdHMgc28gbXVjaCBvbiBtZW1vcnkgY29uc3VtcHRpb24uCisgICAgICAgIEZv
ciBleGFtcGxlLCBjbm4uY29tIGNhbiBzaG93IDcwMDAgcGVyc2lzdGVudCBTdHJ1Y3R1cmVTdHVi
Q2xlYXJpbmdXYXRjaHBvaW50CisgICAgICAgIGFuZCA2MDAwIExMSW50UHJvdG90eXBlTG9hZEFk
YXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludCB3aGljaCBoYXZlIFByb3BlcnR5Q29uZGl0aW9uCisg
ICAgICAgIGluIHRoZWlyIG1lbWJlci4KKworICAgICAgICBUaGlzIHBhdGNoIHNocmlua3MgdGhl
IHNpemUgb2YgUHJvcGVydHlDb25kaXRpb24gYnkgcGFja2luZyBVbmlxdWVkU3RyaW5nSW1wbCog
YW5kCisgICAgICAgIFByb3BlcnR5Q29uZGl0aW9uOjpLaW5kIGludG8gdWludDY0X3QgZGF0YSBp
biA2NGJpdCBhcmNoaXRlY3R1cmUuIFNpbmNlIG91ciBhZGRyZXNzCisgICAgICAgIGFyZSB3aXRo
aW4gNDhiaXQsIHdlIGNhbiBwdXQgUHJvcGVydHlDb25kaXRpb246OktpbmQgaW4gdGhpcyB1bnVz
ZWQgYml0cy4KKyAgICAgICAgVG8gbWFrZSBpdCBlYXN5LCB3ZSBhZGQgV1RGOjpDb21wYWN0UG9p
bnRlclR1cGxlPFBvaW50ZXJUeXBlLCBUeXBlPiwgd2hpY2ggYXV0b21hdGljYWxseQorICAgICAg
ICBmb2xkcyBhIHBvaW50ZXIgYW5kIDFieXRlIHR5cGUgaW50byA2NGJpdCBkYXRhLgorCisgICAg
ICAgIFRoaXMgY2hhbmdlIHNocmlua3MgUHJvcGVydHlDb25kaXRpb24gZnJvbSAyNGJ5dGVzIHRv
IDE2Ynl0ZXMuCisKKyAgICAgICAgKiBieXRlY29kZS9Qcm9wZXJ0eUNvbmRpdGlvbi5jcHA6Cisg
ICAgICAgIChKU0M6OlByb3BlcnR5Q29uZGl0aW9uOjpkdW1wSW5Db250ZXh0IGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6UHJvcGVydHlDb25kaXRpb246OmlzU3RpbGxWYWxpZEFzc3VtaW5nSW1wdXJl
UHJvcGVydHlXYXRjaHBvaW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlDb25kaXRp
b246OnZhbGlkaXR5UmVxdWlyZXNJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQgY29uc3QpOgorICAg
ICAgICAoSlNDOjpQcm9wZXJ0eUNvbmRpdGlvbjo6aXNTdGlsbFZhbGlkIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6UHJvcGVydHlDb25kaXRpb246OmlzV2F0Y2hhYmxlV2hlblZhbGlkIGNvbnN0KToK
KyAgICAgICAgKiBieXRlY29kZS9Qcm9wZXJ0eUNvbmRpdGlvbi5oOgorICAgICAgICAoSlNDOjpQ
cm9wZXJ0eUNvbmRpdGlvbjo6UHJvcGVydHlDb25kaXRpb24pOgorICAgICAgICAoSlNDOjpQcm9w
ZXJ0eUNvbmRpdGlvbjo6cHJlc2VuY2VXaXRob3V0QmFycmllcik6CisgICAgICAgIChKU0M6OlBy
b3BlcnR5Q29uZGl0aW9uOjphYnNlbmNlV2l0aG91dEJhcnJpZXIpOgorICAgICAgICAoSlNDOjpQ
cm9wZXJ0eUNvbmRpdGlvbjo6YWJzZW5jZU9mU2V0RWZmZWN0V2l0aG91dEJhcnJpZXIpOgorICAg
ICAgICAoSlNDOjpQcm9wZXJ0eUNvbmRpdGlvbjo6ZXF1aXZhbGVuY2VXaXRob3V0QmFycmllcik6
CisgICAgICAgIChKU0M6OlByb3BlcnR5Q29uZGl0aW9uOjpoYXNQcm90b3R5cGVXaXRob3V0QmFy
cmllcik6CisgICAgICAgIChKU0M6OlByb3BlcnR5Q29uZGl0aW9uOjpvcGVyYXRvciBib29sIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlDb25kaXRpb246OmtpbmQgY29uc3QpOgorICAg
ICAgICAoSlNDOjpQcm9wZXJ0eUNvbmRpdGlvbjo6dWlkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
UHJvcGVydHlDb25kaXRpb246Omhhc09mZnNldCBjb25zdCk6CisgICAgICAgIChKU0M6OlByb3Bl
cnR5Q29uZGl0aW9uOjpoYXNBdHRyaWJ1dGVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJvcGVy
dHlDb25kaXRpb246Omhhc1Byb3RvdHlwZSBjb25zdCk6CisgICAgICAgIChKU0M6OlByb3BlcnR5
Q29uZGl0aW9uOjpoYXNSZXF1aXJlZFZhbHVlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJvcGVy
dHlDb25kaXRpb246Omhhc2ggY29uc3QpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eUNvbmRpdGlv
bjo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChKU0M6OlByb3BlcnR5Q29uZGl0aW9uOjpp
c0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSBjb25zdCk6CisgICAgICAgIChKU0M6OlByb3BlcnR5Q29u
ZGl0aW9uOjp3YXRjaGluZ1JlcXVpcmVzUmVwbGFjZW1lbnRXYXRjaHBvaW50IGNvbnN0KToKKwog
MjAxOC0wOC0wMyAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBH
aXZlIHRoZSBganNjYCBzaGVsbCB0aGUgSklUIGVudGl0bGVtZW50CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGYwZTQ3ZjM4NGNl
NWUzZDI1MWFmY2RhMWEzYjAyNWM4YmMyNDdhZTYuLjIxYzY1MmM4N2YzNjYyNTcyMzc1MDFmNDMw
NDI4YTNiYjA3ZTRmYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTgtMDgtMDQgIFl1c3VrZSBT
dXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgU2hyaW5rIHNpemUgb2Yg
UHJvcGVydHlDb25kaXRpb24gYnkgcGFja2luZyBVbmlxdWVkU3RyaW5nSW1wbCogYW5kIEtpbmQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODMyOAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0
Y2ggYWRkcyBDb21wYWN0UG9pbnRlclR1cGxlLCB3aGljaCBjYW4gcGFjayBhIHBvaW50ZXIgYW5k
IDhiaXQgdmFsdWUgaW50byAxNmJ5dGVzLgorICAgICAgICBJbiAzMmJpdCBhcmNoaXRlY3R1cmUs
IGl0IGp1c3QgaGFzIHR3byBmaWVsZHMgZm9yIGEgcG9pbnRlciBhbmQgOGJpdCB2YWx1ZS4gSW4g
NjRiaXQgYXJjaGl0ZWN0dXJlLAorICAgICAgICB3ZSB1c2UgdXBwZXIgNWJpdHMgKHplcm9zIGJl
Y2F1c2Ugb2YgdGhlIGVmZmVjdGl2ZSB3aWR0aCBvZiB2aXJ0dWFsIGFkZHJlc3MpIGFuZCBsb3dl
ciAzYml0cyAoemVyb3MKKyAgICAgICAgYmVjYXVzZSBvZiB0aGUgYWxpZ25tZW50IGVuc3VyZWQg
Ynkgc3RhdGljX2Fzc2VydCkgdG8gcGFjayA4Yml0IHZhbHVlIGludG8gdGhlIHBvaW50ZXIgZGF0
YS4gU2luY2UKKyAgICAgICAgZXZlbiB0aGUgNS1sZXZlbCBwYWdlIHRhYmxlcyB1c2UgNTdiaXQg
ZWZmZWN0aXZlIGFkZHJlc3MsIHRoaXMgc3RyYXRlZ3kgd29ya3Mgd2VsbC4KKworICAgICAgICAq
IFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiB3dGYvQ29tcGFjdFBvaW50ZXJUdXBsZS5oOiBBZGRlZC4KKyAgICAg
ICAgKFdURjo6Q29tcGFjdFBvaW50ZXJUdXBsZTo6ZW5jb2RlVHlwZSk6CisgICAgICAgIChXVEY6
OkNvbXBhY3RQb2ludGVyVHVwbGU6OmRlY29kZVR5cGUpOgorICAgICAgICAoV1RGOjpDb21wYWN0
UG9pbnRlclR1cGxlOjpDb21wYWN0UG9pbnRlclR1cGxlKToKKyAgICAgICAgKFdURjo6Q29tcGFj
dFBvaW50ZXJUdXBsZTo6cG9pbnRlciBjb25zdCk6CisgICAgICAgIChXVEY6OkNvbXBhY3RQb2lu
dGVyVHVwbGU6OnNldFBvaW50ZXIpOgorICAgICAgICAoV1RGOjpDb21wYWN0UG9pbnRlclR1cGxl
Ojp0eXBlIGNvbnN0KToKKyAgICAgICAgKFdURjo6Q29tcGFjdFBvaW50ZXJUdXBsZTo6c2V0VHlw
ZSk6CisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisKIDIwMTgtMDgtMDMgIEJlbiBSaWNoYXJk
cyAgPGJlbnRvbl9yaWNoYXJkc0BhcHBsZS5jb20+CiAKICAgICAgICAgV2Ugc2hvdWxkIGNhY2hl
IHRoZSBjb21waWxlZCBzYW5kYm94IHByb2ZpbGUgaW4gYSBkYXRhIHZhdWx0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvcGVydHlDb25kaXRpb24uY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb3BlcnR5Q29uZGl0aW9uLmNwcAppbmRl
eCA0MzYzNGJlMDlhZmJjY2Y3MjIyNmE3OTMxMDU3NGM3ZjNjMmJlMjQ3Li4zZGViNDRjNzVmZmRm
ZjBiOTZiNGQ2MWI4NDE5MmIxYmQyMTQ3NzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUHJvcGVydHlDb25kaXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Qcm9wZXJ0eUNvbmRpdGlvbi5jcHAKQEAgLTQzLDE5ICs0MywxOSBA
QCB2b2lkIFByb3BlcnR5Q29uZGl0aW9uOjpkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiBvdXQs
IER1bXBDb250ZXh0KiBjb250ZXh0KSBjbwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAot
ICAgIHN3aXRjaCAobV9raW5kKSB7CisgICAgc3dpdGNoIChtX2hlYWRlci50eXBlKCkpIHsKICAg
ICBjYXNlIFByZXNlbmNlOgotICAgICAgICBvdXQucHJpbnQobV9raW5kLCAiIG9mICIsIG1fdWlk
LCAiIGF0ICIsIG9mZnNldCgpLCAiIHdpdGggYXR0cmlidXRlcyAiLCBhdHRyaWJ1dGVzKCkpOwor
ICAgICAgICBvdXQucHJpbnQobV9oZWFkZXIudHlwZSgpLCAiIG9mICIsIG1faGVhZGVyLnBvaW50
ZXIoKSwgIiBhdCAiLCBvZmZzZXQoKSwgIiB3aXRoIGF0dHJpYnV0ZXMgIiwgYXR0cmlidXRlcygp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQWJzZW5jZToKICAgICBjYXNlIEFic2VuY2VP
ZlNldEVmZmVjdDoKLSAgICAgICAgb3V0LnByaW50KG1fa2luZCwgIiBvZiAiLCBtX3VpZCwgIiB3
aXRoIHByb3RvdHlwZSAiLCBpbkNvbnRleHQoSlNWYWx1ZShwcm90b3R5cGUoKSksIGNvbnRleHQp
KTsKKyAgICAgICAgb3V0LnByaW50KG1faGVhZGVyLnR5cGUoKSwgIiBvZiAiLCBtX2hlYWRlci5w
b2ludGVyKCksICIgd2l0aCBwcm90b3R5cGUgIiwgaW5Db250ZXh0KEpTVmFsdWUocHJvdG90eXBl
KCkpLCBjb250ZXh0KSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIEVxdWl2YWxlbmNlOgot
ICAgICAgICBvdXQucHJpbnQobV9raW5kLCAiIG9mICIsIG1fdWlkLCAiIHdpdGggIiwgaW5Db250
ZXh0KHJlcXVpcmVkVmFsdWUoKSwgY29udGV4dCkpOworICAgICAgICBvdXQucHJpbnQobV9oZWFk
ZXIudHlwZSgpLCAiIG9mICIsIG1faGVhZGVyLnBvaW50ZXIoKSwgIiB3aXRoICIsIGluQ29udGV4
dChyZXF1aXJlZFZhbHVlKCksIGNvbnRleHQpKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2Ug
SGFzUHJvdG90eXBlOgotICAgICAgICBvdXQucHJpbnQobV9raW5kLCAiIHdpdGggcHJvdG90eXBl
ICIsIGluQ29udGV4dChKU1ZhbHVlKHByb3RvdHlwZSgpKSwgY29udGV4dCkpOworICAgICAgICBv
dXQucHJpbnQobV9oZWFkZXIudHlwZSgpLCAiIHdpdGggcHJvdG90eXBlICIsIGluQ29udGV4dChK
U1ZhbHVlKHByb3RvdHlwZSgpKSwgY29udGV4dCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC04MSw3ICs4MSw3IEBAIGJvb2wg
UHJvcGVydHlDb25kaXRpb246OmlzU3RpbGxWYWxpZEFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRj
aHBvaW50KAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgc3dpdGNoIChtX2tp
bmQpIHsKKyAgICBzd2l0Y2ggKG1faGVhZGVyLnR5cGUoKSkgewogICAgIGNhc2UgUHJlc2VuY2U6
CiAgICAgY2FzZSBBYnNlbmNlOgogICAgIGNhc2UgQWJzZW5jZU9mU2V0RWZmZWN0OgpAQCAtMTAy
LDcgKzEwMiw3IEBAIGJvb2wgUHJvcGVydHlDb25kaXRpb246OmlzU3RpbGxWYWxpZEFzc3VtaW5n
SW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KAogICAgICAgICBicmVhazsKICAgICB9CiAgICAgCi0g
ICAgc3dpdGNoIChtX2tpbmQpIHsKKyAgICBzd2l0Y2ggKG1faGVhZGVyLnR5cGUoKSkgewogICAg
IGNhc2UgUHJlc2VuY2U6IHsKICAgICAgICAgdW5zaWduZWQgY3VycmVudEF0dHJpYnV0ZXM7CiAg
ICAgICAgIFByb3BlcnR5T2Zmc2V0IGN1cnJlbnRPZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldENvbmN1
cnJlbnRseSh1aWQoKSwgY3VycmVudEF0dHJpYnV0ZXMpOwpAQCAtMjU5LDcgKzI1OSw3IEBAIGJv
b2wgUHJvcGVydHlDb25kaXRpb246OnZhbGlkaXR5UmVxdWlyZXNJbXB1cmVQcm9wZXJ0eVdhdGNo
cG9pbnQoU3RydWN0dXJlKiBzdHJ1CiAgICAgaWYgKCEqdGhpcykKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIAotICAgIHN3aXRjaCAobV9raW5kKSB7CisgICAgc3dpdGNoIChtX2hlYWRlci50
eXBlKCkpIHsKICAgICBjYXNlIFByZXNlbmNlOgogICAgIGNhc2UgQWJzZW5jZToKICAgICBjYXNl
IEVxdWl2YWxlbmNlOgpAQCAtMjgxLDcgKzI4MSw3IEBAIGJvb2wgUHJvcGVydHlDb25kaXRpb246
OmlzU3RpbGxWYWxpZChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNPYmplY3QqIGJhc2UpIGNvbnN0
CiAgICAgLy8gQ3VycmVudGx5IHdlIGFzc3VtZSB0aGF0IGFuIGltcHVyZSBwcm9wZXJ0eSBjYW4g
Y2F1c2UgYSBwcm9wZXJ0eSB0byBhcHBlYXIsIGFuZCBjYW4gYWxzbwogICAgIC8vICJzaGFkb3ci
IGFuIGV4aXN0aW5nIEpTIHByb3BlcnR5IG9uIHRoZSBzYW1lIG9iamVjdC4gSGVuY2UgaXQgYWZm
ZWN0cyBib3RoIHByZXNlbmNlIGFuZAogICAgIC8vIGFic2VuY2UuIEl0IGRvZXNuJ3QgYWZmZWN0
IEFic2VuY2VPZlNldEVmZmVjdCBiZWNhdXNlIGltcHVyZSBwcm9wZXJ0aWVzIGFyZW4ndCBldmVy
IHNldHRlcnMuCi0gICAgc3dpdGNoIChtX2tpbmQpIHsKKyAgICBzd2l0Y2ggKG1faGVhZGVyLnR5
cGUoKSkgewogICAgIGNhc2UgQWJzZW5jZToKICAgICAgICAgaWYgKHN0cnVjdHVyZS0+dHlwZUlu
Zm8oKS5nZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZSgpIHx8IHN0cnVjdHVyZS0+dHlwZUluZm8o
KS5nZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZUZvclByb3BlcnR5QWJzZW5jZSgpKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzA0LDcgKzMwNCw3IEBAIGJvb2wgUHJvcGVydHlDb25k
aXRpb246OmlzV2F0Y2hhYmxlV2hlblZhbGlkKAogICAgIGlmIChzdHJ1Y3R1cmUtPnRyYW5zaXRp
b25XYXRjaHBvaW50U2V0SGFzQmVlbkludmFsaWRhdGVkKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAKLSAgICBzd2l0Y2ggKG1fa2luZCkgeworICAgIHN3aXRjaCAobV9oZWFkZXIudHlw
ZSgpKSB7CiAgICAgY2FzZSBFcXVpdmFsZW5jZTogewogICAgICAgICBQcm9wZXJ0eU9mZnNldCBv
ZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseSh1aWQoKSk7CiAgICAgICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb3BlcnR5Q29uZGl0aW9u
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvcGVydHlDb25kaXRpb24uaApp
bmRleCBlMmY2YjFmMjI2NDdlMzQ1ODFmNWFlN2U0YzRjODBjZmM4M2IyMGE3Li44Y2ZiOTg5NzU4
NzY3OTMyZjM3YTllMzZkOTY2ZWUxMjJmZjRkMWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHJvcGVydHlDb25kaXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHJvcGVydHlDb25kaXRpb24uaApAQCAtMjYsNiArMjYsNyBAQAog
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgPHd0Zi9Db21w
YWN0UG9pbnRlclR1cGxlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAogbmFtZXNwYWNl
IEpTQyB7CkBAIC0zNCwyNCArMzUsMjQgQEAgY2xhc3MgVHJhY2tlZFJlZmVyZW5jZXM7CiAKIGNs
YXNzIFByb3BlcnR5Q29uZGl0aW9uIHsKIHB1YmxpYzoKLSAgICBlbnVtIEtpbmQgeworICAgIGVu
dW0gS2luZCA6IHVpbnQ4X3QgewogICAgICAgICBQcmVzZW5jZSwKICAgICAgICAgQWJzZW5jZSwK
ICAgICAgICAgQWJzZW5jZU9mU2V0RWZmZWN0LAogICAgICAgICBFcXVpdmFsZW5jZSwgLy8gQW4g
YWRhcHRpdmUgd2F0Y2hwb2ludCBvbiB0aGlzIHdpbGwgYmUgYSBwYWlyIG9mIHdhdGNocG9pbnRz
LCBhbmQgd2hlbiB0aGUgc3RydWN0dXJlIHRyYW5zaXRpb25zLCB3ZSB3aWxsIHNldCB0aGUgcmVw
bGFjZW1lbnQgd2F0Y2hwb2ludCBvbiB0aGUgbmV3IHN0cnVjdHVyZS4KICAgICAgICAgSGFzUHJv
dG90eXBlCiAgICAgfTsKKworICAgIHVzaW5nIEhlYWRlciA9IENvbXBhY3RQb2ludGVyVHVwbGU8
VW5pcXVlZFN0cmluZ0ltcGwqLCBLaW5kPjsKICAgICAKICAgICBQcm9wZXJ0eUNvbmRpdGlvbigp
Ci0gICAgICAgIDogbV91aWQobnVsbHB0cikKLSAgICAgICAgLCBtX2tpbmQoUHJlc2VuY2UpCisg
ICAgICAgIDogbV9oZWFkZXIobnVsbHB0ciwgUHJlc2VuY2UpCiAgICAgewogICAgICAgICBtZW1z
ZXQoJnUsIDAsIHNpemVvZih1KSk7CiAgICAgfQogICAgIAogICAgIFByb3BlcnR5Q29uZGl0aW9u
KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKLSAgICAgICAgOiBtX3VpZChudWxscHRy
KQotICAgICAgICAsIG1fa2luZChBYnNlbmNlKQorICAgICAgICA6IG1faGVhZGVyKG51bGxwdHIs
IEFic2VuY2UpCiAgICAgewogICAgICAgICBtZW1zZXQoJnUsIDAsIHNpemVvZih1KSk7CiAgICAg
fQpAQCAtNTksOCArNjAsNyBAQCBjbGFzcyBQcm9wZXJ0eUNvbmRpdGlvbiB7CiAgICAgc3RhdGlj
IFByb3BlcnR5Q29uZGl0aW9uIHByZXNlbmNlV2l0aG91dEJhcnJpZXIoVW5pcXVlZFN0cmluZ0lt
cGwqIHVpZCwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogICAg
IHsKICAgICAgICAgUHJvcGVydHlDb25kaXRpb24gcmVzdWx0OwotICAgICAgICByZXN1bHQubV91
aWQgPSB1aWQ7Ci0gICAgICAgIHJlc3VsdC5tX2tpbmQgPSBQcmVzZW5jZTsKKyAgICAgICAgcmVz
dWx0Lm1faGVhZGVyID0gSGVhZGVyKHVpZCwgUHJlc2VuY2UpOwogICAgICAgICByZXN1bHQudS5w
cmVzZW5jZS5vZmZzZXQgPSBvZmZzZXQ7CiAgICAgICAgIHJlc3VsdC51LnByZXNlbmNlLmF0dHJp
YnV0ZXMgPSBhdHRyaWJ1dGVzOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNzYsOCArNzYs
NyBAQCBjbGFzcyBQcm9wZXJ0eUNvbmRpdGlvbiB7CiAgICAgc3RhdGljIFByb3BlcnR5Q29uZGl0
aW9uIGFic2VuY2VXaXRob3V0QmFycmllcihVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCBKU09iamVj
dCogcHJvdG90eXBlKQogICAgIHsKICAgICAgICAgUHJvcGVydHlDb25kaXRpb24gcmVzdWx0Owot
ICAgICAgICByZXN1bHQubV91aWQgPSB1aWQ7Ci0gICAgICAgIHJlc3VsdC5tX2tpbmQgPSBBYnNl
bmNlOworICAgICAgICByZXN1bHQubV9oZWFkZXIgPSBIZWFkZXIodWlkLCBBYnNlbmNlKTsKICAg
ICAgICAgcmVzdWx0LnUucHJvdG90eXBlLnByb3RvdHlwZSA9IHByb3RvdHlwZTsKICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC05NCw4ICs5Myw3IEBAIGNsYXNzIFByb3BlcnR5Q29u
ZGl0aW9uIHsKICAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgSlNPYmplY3QqIHByb3Rv
dHlwZSkKICAgICB7CiAgICAgICAgIFByb3BlcnR5Q29uZGl0aW9uIHJlc3VsdDsKLSAgICAgICAg
cmVzdWx0Lm1fdWlkID0gdWlkOwotICAgICAgICByZXN1bHQubV9raW5kID0gQWJzZW5jZU9mU2V0
RWZmZWN0OworICAgICAgICByZXN1bHQubV9oZWFkZXIgPSBIZWFkZXIodWlkLCBBYnNlbmNlT2ZT
ZXRFZmZlY3QpOwogICAgICAgICByZXN1bHQudS5wcm90b3R5cGUucHJvdG90eXBlID0gcHJvdG90
eXBlOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTExMiw4ICsxMTAsNyBAQCBj
bGFzcyBQcm9wZXJ0eUNvbmRpdGlvbiB7CiAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQs
IEpTVmFsdWUgdmFsdWUpCiAgICAgewogICAgICAgICBQcm9wZXJ0eUNvbmRpdGlvbiByZXN1bHQ7
Ci0gICAgICAgIHJlc3VsdC5tX3VpZCA9IHVpZDsKLSAgICAgICAgcmVzdWx0Lm1fa2luZCA9IEVx
dWl2YWxlbmNlOworICAgICAgICByZXN1bHQubV9oZWFkZXIgPSBIZWFkZXIodWlkLCBFcXVpdmFs
ZW5jZSk7CiAgICAgICAgIHJlc3VsdC51LmVxdWl2YWxlbmNlLnZhbHVlID0gSlNWYWx1ZTo6ZW5j
b2RlKHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC0xMjksNyArMTI2
LDcgQEAgY2xhc3MgUHJvcGVydHlDb25kaXRpb24gewogICAgIHN0YXRpYyBQcm9wZXJ0eUNvbmRp
dGlvbiBoYXNQcm90b3R5cGVXaXRob3V0QmFycmllcihKU09iamVjdCogcHJvdG90eXBlKQogICAg
IHsKICAgICAgICAgUHJvcGVydHlDb25kaXRpb24gcmVzdWx0OwotICAgICAgICByZXN1bHQubV9r
aW5kID0gSGFzUHJvdG90eXBlOworICAgICAgICByZXN1bHQubV9oZWFkZXIgPSBIZWFkZXIobnVs
bHB0ciwgSGFzUHJvdG90eXBlKTsKICAgICAgICAgcmVzdWx0LnUucHJvdG90eXBlLnByb3RvdHlw
ZSA9IHByb3RvdHlwZTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC0xNDEsMTgg
KzEzOCwxOCBAQCBjbGFzcyBQcm9wZXJ0eUNvbmRpdGlvbiB7CiAgICAgICAgIHJldHVybiBoYXNQ
cm90b3R5cGVXaXRob3V0QmFycmllcihwcm90b3R5cGUpOwogICAgIH0KICAgICAKLSAgICBleHBs
aWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gbV91aWQgfHwgbV9raW5kICE9IFBy
ZXNlbmNlOyB9CisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIG1f
aGVhZGVyLnBvaW50ZXIoKSB8fCBtX2hlYWRlci50eXBlKCkgIT0gUHJlc2VuY2U7IH0KICAgICAK
LSAgICBLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7IH0KLSAgICBVbmlxdWVkU3Ry
aW5nSW1wbCogdWlkKCkgY29uc3QgeyByZXR1cm4gbV91aWQ7IH0KKyAgICBLaW5kIGtpbmQoKSBj
b25zdCB7IHJldHVybiBtX2hlYWRlci50eXBlKCk7IH0KKyAgICBVbmlxdWVkU3RyaW5nSW1wbCog
dWlkKCkgY29uc3QgeyByZXR1cm4gbV9oZWFkZXIucG9pbnRlcigpOyB9CiAgICAgCi0gICAgYm9v
bCBoYXNPZmZzZXQoKSBjb25zdCB7IHJldHVybiAhISp0aGlzICYmIG1fa2luZCA9PSBQcmVzZW5j
ZTsgfTsKKyAgICBib29sIGhhc09mZnNldCgpIGNvbnN0IHsgcmV0dXJuICEhKnRoaXMgJiYgbV9o
ZWFkZXIudHlwZSgpID09IFByZXNlbmNlOyB9OwogICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCgp
IGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQoaGFzT2Zmc2V0KCkpOwogICAgICAgICByZXR1
cm4gdS5wcmVzZW5jZS5vZmZzZXQ7CiAgICAgfQotICAgIGJvb2wgaGFzQXR0cmlidXRlcygpIGNv
bnN0IHsgcmV0dXJuICEhKnRoaXMgJiYgbV9raW5kID09IFByZXNlbmNlOyB9OworICAgIGJvb2wg
aGFzQXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuICEhKnRoaXMgJiYgbV9oZWFkZXIudHlwZSgp
ID09IFByZXNlbmNlOyB9OwogICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXMoKSBjb25zdAogICAgIHsK
ICAgICAgICAgQVNTRVJUKGhhc0F0dHJpYnV0ZXMoKSk7CkBAIC0xNjIsNyArMTU5LDcgQEAgY2xh
c3MgUHJvcGVydHlDb25kaXRpb24gewogICAgIGJvb2wgaGFzUHJvdG90eXBlKCkgY29uc3QKICAg
ICB7CiAgICAgICAgIHJldHVybiAhISp0aGlzCi0gICAgICAgICAgICAmJiAobV9raW5kID09IEFi
c2VuY2UgfHwgbV9raW5kID09IEFic2VuY2VPZlNldEVmZmVjdCB8fCBtX2tpbmQgPT0gSGFzUHJv
dG90eXBlKTsKKyAgICAgICAgICAgICYmIChtX2hlYWRlci50eXBlKCkgPT0gQWJzZW5jZSB8fCBt
X2hlYWRlci50eXBlKCkgPT0gQWJzZW5jZU9mU2V0RWZmZWN0IHx8IG1faGVhZGVyLnR5cGUoKSA9
PSBIYXNQcm90b3R5cGUpOwogICAgIH0KICAgICBKU09iamVjdCogcHJvdG90eXBlKCkgY29uc3QK
ICAgICB7CkBAIC0xNzAsNyArMTY3LDcgQEAgY2xhc3MgUHJvcGVydHlDb25kaXRpb24gewogICAg
ICAgICByZXR1cm4gdS5wcm90b3R5cGUucHJvdG90eXBlOwogICAgIH0KICAgICAKLSAgICBib29s
IGhhc1JlcXVpcmVkVmFsdWUoKSBjb25zdCB7IHJldHVybiAhISp0aGlzICYmIG1fa2luZCA9PSBF
cXVpdmFsZW5jZTsgfQorICAgIGJvb2wgaGFzUmVxdWlyZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJu
ICEhKnRoaXMgJiYgbV9oZWFkZXIudHlwZSgpID09IEVxdWl2YWxlbmNlOyB9CiAgICAgSlNWYWx1
ZSByZXF1aXJlZFZhbHVlKCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVChoYXNSZXF1aXJl
ZFZhbHVlKCkpOwpAQCAtMTgyLDggKzE3OSw4IEBAIGNsYXNzIFByb3BlcnR5Q29uZGl0aW9uIHsK
ICAgICAKICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHVuc2lnbmVk
IHJlc3VsdCA9IFdURjo6UHRySGFzaDxVbmlxdWVkU3RyaW5nSW1wbCo+OjpoYXNoKG1fdWlkKSAr
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2tpbmQpOwotICAgICAgICBzd2l0Y2ggKG1fa2luZCkg
eworICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBXVEY6OlB0ckhhc2g8VW5pcXVlZFN0cmluZ0lt
cGwqPjo6aGFzaChtX2hlYWRlci5wb2ludGVyKCkpICsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1f
aGVhZGVyLnR5cGUoKSk7CisgICAgICAgIHN3aXRjaCAobV9oZWFkZXIudHlwZSgpKSB7CiAgICAg
ICAgIGNhc2UgUHJlc2VuY2U6CiAgICAgICAgICAgICByZXN1bHQgXj0gdS5wcmVzZW5jZS5vZmZz
ZXQ7CiAgICAgICAgICAgICByZXN1bHQgXj0gdS5wcmVzZW5jZS5hdHRyaWJ1dGVzOwpAQCAtMjAy
LDExICsxOTksMTEgQEAgY2xhc3MgUHJvcGVydHlDb25kaXRpb24gewogICAgIAogICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBQcm9wZXJ0eUNvbmRpdGlvbiYgb3RoZXIpIGNvbnN0CiAgICAgewot
ICAgICAgICBpZiAobV91aWQgIT0gb3RoZXIubV91aWQpCisgICAgICAgIGlmIChtX2hlYWRlci5w
b2ludGVyKCkgIT0gb3RoZXIubV9oZWFkZXIucG9pbnRlcigpKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICBpZiAobV9raW5kICE9IG90aGVyLm1fa2luZCkKKyAgICAgICAgaWYg
KG1faGVhZGVyLnR5cGUoKSAhPSBvdGhlci5tX2hlYWRlci50eXBlKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIHN3aXRjaCAobV9raW5kKSB7CisgICAgICAgIHN3aXRjaCAo
bV9oZWFkZXIudHlwZSgpKSB7CiAgICAgICAgIGNhc2UgUHJlc2VuY2U6CiAgICAgICAgICAgICBy
ZXR1cm4gdS5wcmVzZW5jZS5vZmZzZXQgPT0gb3RoZXIudS5wcmVzZW5jZS5vZmZzZXQKICAgICAg
ICAgICAgICAgICAmJiB1LnByZXNlbmNlLmF0dHJpYnV0ZXMgPT0gb3RoZXIudS5wcmVzZW5jZS5h
dHRyaWJ1dGVzOwpAQCAtMjIzLDcgKzIyMCw3IEBAIGNsYXNzIFByb3BlcnR5Q29uZGl0aW9uIHsK
ICAgICAKICAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QKICAgICB7Ci0g
ICAgICAgIHJldHVybiAhbV91aWQgJiYgbV9raW5kID09IEFic2VuY2U7CisgICAgICAgIHJldHVy
biAhbV9oZWFkZXIucG9pbnRlcigpICYmIG1faGVhZGVyLnR5cGUoKSA9PSBBYnNlbmNlOwogICAg
IH0KICAgICAKICAgICAvLyBUd28gY29uZGl0aW9ucyBhcmUgY29tcGF0aWJsZSBpZiB0aGV5IGFy
ZSBpZGVudGljYWwgb3IgaWYgdGhleSBzcGVhayBvZiBkaWZmZXJlbnQgdWlkcy4gSWYKQEAgLTI5
Niw3ICsyOTMsNyBAQCBjbGFzcyBQcm9wZXJ0eUNvbmRpdGlvbiB7CiAgICAgfQogICAgIGJvb2wg
d2F0Y2hpbmdSZXF1aXJlc1JlcGxhY2VtZW50V2F0Y2hwb2ludCgpIGNvbnN0CiAgICAgewotICAg
ICAgICByZXR1cm4gISEqdGhpcyAmJiBtX2tpbmQgPT0gRXF1aXZhbGVuY2U7CisgICAgICAgIHJl
dHVybiAhISp0aGlzICYmIG1faGVhZGVyLnR5cGUoKSA9PSBFcXVpdmFsZW5jZTsKICAgICB9CiAg
ICAgCiAgICAgLy8gVGhpcyBtZWFucyB0aGF0IHRoZSBvYmplY3RzIGludm9sdmVkIGluIHRoaXMg
YXJlIHN0aWxsIGxpdmUuCkBAIC0zMTMsOCArMzEwLDcgQEAgY2xhc3MgUHJvcGVydHlDb25kaXRp
b24gewogcHJpdmF0ZToKICAgICBib29sIGlzV2F0Y2hhYmxlV2hlblZhbGlkKFN0cnVjdHVyZSos
IFdhdGNoYWJpbGl0eUVmZm9ydCkgY29uc3Q7CiAKLSAgICBVbmlxdWVkU3RyaW5nSW1wbCogbV91
aWQ7Ci0gICAgS2luZCBtX2tpbmQ7CisgICAgSGVhZGVyIG1faGVhZGVyOwogICAgIHVuaW9uIHsK
ICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldDsKQEAg
LTMyMiw4ICszMTgsNyBAQCBjbGFzcyBQcm9wZXJ0eUNvbmRpdGlvbiB7CiAgICAgICAgIH0gcHJl
c2VuY2U7CiAgICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICBKU09iamVjdCogcHJvdG90eXBl
OwotICAgICAgICB9IHByb3RvdHlwZTsKLSAgICAgICAgc3RydWN0IHsKKyAgICAgICAgfSBwcm90
b3R5cGU7IHN0cnVjdCB7CiAgICAgICAgICAgICBFbmNvZGVkSlNWYWx1ZSB2YWx1ZTsKICAgICAg
ICAgfSBlcXVpdmFsZW5jZTsKICAgICB9IHU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCBlOWI1OWVmNjVhNmMxNjllOGM4OWQ1MDNkMTJjMDIxMzc2ZWQ5ZGNk
Li41NzUzODgzNDAzMGM2NjgxZjViYTNjYzVhOWI1ZTYzMzBhZTJmNGQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XVEYv
V1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTYzMSw2ICs2MzEsNyBAQAogCQlFMzhE
NkUyNjFGNTUyMkUzMDBBNzVDQzQgLyogU3RyaW5nQnVpbGRlckpTT04uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RyaW5nQnVpbGRlckpTT04uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFM0EzMkJDMjFGQzgzMEUyMDA3RDdFNzYgLyogSlNWYWx1
ZU1hbGxvYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1ZhbHVl
TWFsbG9jLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNBMzJCQzMxRkM4MzBF
MjAwN0Q3RTc2IC8qIEpTVmFsdWVNYWxsb2MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNWYWx1ZU1hbGxvYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0NG
NzY5MDIxMTVENkJBMDA5MURFNDggLyogQ29tcGFjdFBvaW50ZXJUdXBsZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDb21wYWN0UG9pbnRlclR1cGxlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUzRTE1ODI1MUVBREE1M0MwMDRBMDc5RCAvKiBTeXN0ZW1GcmVl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN5c3RlbUZyZWUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRBMEFEMzcxQTk2MjQ1NTAwNTM2REY2IC8qIFdvcmtR
dWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXb3JrUXVldWUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEEwQUQzODFBOTYyNDU1MDA1MzZE
RjYgLyogV29ya1F1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtR
dWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODM5LDYgKzg0MCw3IEBACiAJ
CQkJMEY2NkIyODAxREM5N0JBQjAwNEExRDNGIC8qIENsb2NrVHlwZS5jcHAgKi8sCiAJCQkJMEY2
NkIyODExREM5N0JBQjAwNEExRDNGIC8qIENsb2NrVHlwZS5oICovLAogCQkJCTBGQzRFREU1MTY5
NjE0OTYwMEY2NTA0MSAvKiBDb21tYVByaW50ZXIuaCAqLywKKwkJCQlFM0NGNzY5MDIxMTVENkJB
MDA5MURFNDggLyogQ29tcGFjdFBvaW50ZXJUdXBsZS5oICovLAogCQkJCTBGOEYyQjhGMTcyRTAw
RjAwMDdEQkRBNSAvKiBDb21waWxhdGlvblRocmVhZC5jcHAgKi8sCiAJCQkJMEY4RjJCOTAxNzJF
MDBGMDAwN0RCREE1IC8qIENvbXBpbGF0aW9uVGhyZWFkLmggKi8sCiAJCQkJQThBNDcyNzAxNTFB
ODI1QTAwNDEyM0ZGIC8qIENvbXBpbGVyLmggKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IGU0
NjgwMmEzNDQ0ZWI0MzMwMjJhNTllNThjNjc4YjE0MTZkMjczYjQuLjk3OThiOWI4YTEwNTg1ZjM0
ZjA3OTJjOWEzMTQ5ZTA5YzM4Y2U5NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtl
TGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CkBAIC0yOCw2ICsy
OCw3IEBAIHNldChXVEZfUFVCTElDX0hFQURFUlMKICAgICBDaGVja2VkQm9vbGVhbi5oCiAgICAg
Q2xvY2tUeXBlLmgKICAgICBDb21tYVByaW50ZXIuaAorICAgIENvbXBhY3RQb2ludGVyVHVwbGUu
aAogICAgIENvbXBpbGF0aW9uVGhyZWFkLmgKICAgICBDb21waWxlci5oCiAgICAgQ29tcGxldGlv
bkhhbmRsZXIuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ29tcGFjdFBvaW50ZXJUdXBs
ZS5oIGIvU291cmNlL1dURi93dGYvQ29tcGFjdFBvaW50ZXJUdXBsZS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFh
MzQ4YzNhNGRhYjJhODY2NzlhNTY2YWNmYTQzMWYxYjI5Y2EzYzkKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9Db21wYWN0UG9pbnRlclR1cGxlLmgKQEAgLTAsMCArMSwxMDQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKyNpbmNsdWRlIDx3dGYvU3RkTGli
RXh0cmFzLmg+CisKK25hbWVzcGFjZSBXVEYgeworCisvLyBUaGUgZ29hbCBvZiB0aGlzIGNsYXNz
IGlzIGZvbGRpbmcgYSBwb2ludGVyIGFuZCAxIGJ5dGUgdmFsdWUgaW50byA4IGJ5dGVzIGluIGJv
dGggMzJiaXQgYW5kIDY0Yml0IGFyY2hpdGVjdHVyZXMuCisvLyAzMmJpdCBhcmNoaXRlY3R1cmUg
anVzdCBoYXMgYSBwYWlyIG9mIGJ5dGUgYW5kIHBvaW50ZXIsIHdoaWNoIHNob3VsZCBiZSA4IGJ5
dGVzLgorLy8gSW4gNjRiaXQsIHdlIHVzZSB0aGUgdXBwZXIgNSBiaXRzIGFuZCBsb3dlciAzIGJp
dHMgKHplcm8gZHVlIHRvIGFsaWdubWVudCkgc2luY2UgdGhlc2UgYml0cyBhcmUgc2FmZSB0byB1
c2UgZXZlbgorLy8gd2l0aCA1LWxldmVsIHBhZ2UgdGFibGVzIHdoZXJlIHRoZSBlZmZlY3RpdmUg
cG9pbnRlciB3aWR0aCBpcyA1N2JpdHMuCit0ZW1wbGF0ZTx0eXBlbmFtZSBQb2ludGVyVHlwZSwg
dHlwZW5hbWUgVHlwZT4KK2NsYXNzIENvbXBhY3RQb2ludGVyVHVwbGUgeworcHVibGljOgorICAg
IHN0YXRpY19hc3NlcnQoc2l6ZW9mKFR5cGUpID09IDEsICIiKTsKKyAgICBzdGF0aWNfYXNzZXJ0
KHN0ZDo6aXNfcG9pbnRlcjxQb2ludGVyVHlwZT46OnZhbHVlLCAiIik7CisgICAgc3RhdGljX2Fz
c2VydChhbGlnbm9mKHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8UG9pbnRlclR5cGU+Ojp0
eXBlKSA+PSBhbGlnbm9mKHZvaWQqKSwgIiIpOworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19p
bnRlZ3JhbDxUeXBlPjo6dmFsdWUgfHwgc3RkOjppc19lbnVtPFR5cGU+Ojp2YWx1ZSwgIiIpOwor
CisgICAgQ29tcGFjdFBvaW50ZXJUdXBsZSgpID0gZGVmYXVsdDsKKworI2lmIENQVShBRERSRVNT
NjQpCitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50NjRfdCBlbmNvZGVUeXBlKHVp
bnQ4X3QgdHlwZSkKKyAgICB7CisgICAgICAgIC8vIEVuY29kZSA4Yml0IHR5cGUgVVVVREREREQg
aW50byA2NGJpdCBkYXRhIERERERELi41NmJpdC4uVVVVLgorICAgICAgICByZXR1cm4gKHN0YXRp
Y19jYXN0PHVpbnQ2NF90Pih0eXBlKSA8PCA1OSkgfCAoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHR5
cGUpID4+IDUpOworICAgIH0KKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ4X3QgZGVjb2RlVHlw
ZSh1aW50NjRfdCB2YWx1ZSkKKyAgICB7CisgICAgICAgIC8vIERlY29kZSA2NGJpdCBkYXRhIERE
RERELi41NmJpdC4uVVVVIGludG8gOGJpdCB0eXBlIFVVVURERERELgorICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8dWludDhfdD4oKHZhbHVlID4+IDU5KSB8ICh2YWx1ZSA8PCA1KSk7CisgICAg
fQorCisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50NjRfdCB0eXBlTWFzayA9IGVuY29kZVR5cGUo
VUlOVDhfTUFYKTsKKyAgICBzdGF0aWNfYXNzZXJ0KDB4RjgwMDAwMDAwMDAwMDAwN1VMTCA9PSB0
eXBlTWFzaywgIiIpOworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDY0X3QgcG9pbnRlck1hc2sg
PSB+dHlwZU1hc2s7CisKKyAgICBDb21wYWN0UG9pbnRlclR1cGxlKFBvaW50ZXJUeXBlIHBvaW50
ZXIsIFR5cGUgdHlwZSkKKyAgICAgICAgOiBtX2RhdGEoYml0d2lzZV9jYXN0PHVpbnQ2NF90Pihw
b2ludGVyKSB8IGVuY29kZVR5cGUoc3RhdGljX2Nhc3Q8dWludDhfdD4odHlwZSkpKQorICAgIHsK
KyAgICB9CisKKyAgICBQb2ludGVyVHlwZSBwb2ludGVyKCkgY29uc3QgeyByZXR1cm4gYml0d2lz
ZV9jYXN0PFBvaW50ZXJUeXBlPihtX2RhdGEgJiBwb2ludGVyTWFzayk7IH0KKyAgICB2b2lkIHNl
dFBvaW50ZXIoUG9pbnRlclR5cGUgcG9pbnRlcikKKyAgICB7CisgICAgICAgIG1fZGF0YSA9IGJp
dHdpc2VfY2FzdDx1aW50NjRfdD4ocG9pbnRlcikgfCAobV9kYXRhICYgdHlwZU1hc2spOworICAg
IH0KKworICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFR5cGU+KGRl
Y29kZVR5cGUobV9kYXRhKSk7IH0KKyAgICB2b2lkIHNldFR5cGUoVHlwZSB0eXBlKQorICAgIHsK
KyAgICAgICAgbV9kYXRhID0gKG1fZGF0YSAmIHBvaW50ZXJNYXNrKSB8IGVuY29kZVR5cGUoc3Rh
dGljX2Nhc3Q8dWludDhfdD4odHlwZSkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICB1aW50NjRf
dCBtX2RhdGEgeyAwIH07CisjZWxzZQorcHVibGljOgorICAgIENvbXBhY3RQb2ludGVyVHVwbGUo
UG9pbnRlclR5cGUgcG9pbnRlciwgVHlwZSB0eXBlKQorICAgICAgICA6IG1fcG9pbnRlcihwb2lu
dGVyKQorICAgICAgICAsIG1fdHlwZSh0eXBlKQorICAgIHsKKyAgICB9CisKKyAgICBQb2ludGVy
VHlwZSBwb2ludGVyKCkgY29uc3QgeyByZXR1cm4gbV9wb2ludGVyOyB9CisgICAgdm9pZCBzZXRQ
b2ludGVyKFBvaW50ZXJUeXBlIHBvaW50ZXIpIHsgbV9wb2ludGVyID0gcG9pbnRlcjsgfQorICAg
IFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorICAgIHZvaWQgc2V0VHlwZShU
eXBlIHR5cGUpIHsgbV90eXBlID0gdHlwZTsgfQorCitwcml2YXRlOgorICAgIFBvaW50ZXJUeXBl
IG1fcG9pbnRlciB7IG51bGxwdHIgfTsKKyAgICBUeXBlIG1fdHlwZSB7IDAgfTsKKyNlbmRpZgor
fTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6Q29tcGFjdFBvaW50ZXJUdXBs
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvV1RGL3d0
Zi9QbGF0Zm9ybS5oCmluZGV4IDI3ZmY1ZjY3M2Q5MmU3MTczZDFkZDE3ZjYxN2YzNGU1ZDgxNzBj
ZTEuLjBjNmVmYjg2Mjk4MjUzOWQyYjRiMmNjNGY4ZjhiNWZjYjRlYzg4ZTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0u
aApAQCAtMzI3LDYgKzMyNywzMiBAQAogI2RlZmluZSBXVEZfQ1BVX05FRURTX0FMSUdORURfQUND
RVNTIDEKICNlbmRpZgogCisjaWYgQ09NUElMRVIoR0NDX09SX0NMQU5HKQorLyogX19MUDY0X18g
aXMgbm90IGRlZmluZWQgb24gNjRiaXQgV2luZG93cyBzaW5jZSBpdCB1c2VzIExMUDY0LiBVc2lu
ZyBfX1NJWkVPRl9QT0lOVEVSX18gaXMgc2ltcGxlci4gKi8KKyNpZiBfX1NJWkVPRl9QT0lOVEVS
X18gPT0gOAorI2RlZmluZSBXVEZfQ1BVX0FERFJFU1M2NCAxCisjZWxpZiBfX1NJWkVPRl9QT0lO
VEVSX18gPT0gNAorI2RlZmluZSBXVEZfQ1BVX0FERFJFU1MzMiAxCisjZWxzZQorI2Vycm9yICJV
bnN1cHBvcnRlZCBwb2ludGVyIHdpZHRoIgorI2VuZGlmCisjZWxpZiBDT01QSUxFUihNU1ZDKQor
I2lmIGRlZmluZWQoX1dJTjY0KQorI2RlZmluZSBXVEZfQ1BVX0FERFJFU1M2NCAxCisjZWxzZQor
I2RlZmluZSBXVEZfQ1BVX0FERFJFU1MzMiAxCisjZW5kaWYKKyNlbHNlCisvKiBUaGlzIGlzIHRo
ZSBtb3N0IGdlbmVyaWMgd2F5LiBCdXQgaW4gT1MoREFSV0lOKSwgUGxhdGZvcm0uaCBjYW4gYmUg
aW5jbHVkZWQgYnkgc2FuZGJveCBkZWZpbml0aW9uIGZpbGUgKC5zYikuCisgKiBBdCB0aGF0IHRp
bWUsIHdlIGNhbm5vdCBpbmNsdWRlICJzdGRpbnQuaCIgaGVhZGVyLiBTbyBpbiB0aGUgY2FzZSBv
ZiBrbm93biBjb21waWxlcnMsIHdlIHVzZSBwcmVkZWZpbmVkIGNvbnN0YW50cyBpbnN0ZWFkLiAq
LworI2luY2x1ZGUgPHN0ZGludC5oPgorI2lmIFVJTlRQVFJfTUFYID4gVUlOVDMyX01BWAorI2Rl
ZmluZSBXVEZfQ1BVX0FERFJFU1M2NCAxCisjZWxzZQorI2RlZmluZSBXVEZfQ1BVX0FERFJFU1Mz
MiAxCisjZW5kaWYKKyNlbmRpZgorCiAvKiA9PT09IE9TKCkgLSB1bmRlcmx5aW5nIG9wZXJhdGlu
ZyBzeXN0ZW07IG9ubHkgdG8gYmUgdXNlZCBmb3IgbWFuZGF0ZWQgbG93LWxldmVsIHNlcnZpY2Vz
IGxpa2UgCiAgICB2aXJ0dWFsIG1lbW9yeSwgbm90IHRvIGNob29zZSBhIEdVSSB0b29sa2l0ID09
PT0gKi8KIApAQCAtNzA1LDMxICs3MzEsMTEgQEAKICNlbmRpZgogCiAjaWYgIWRlZmluZWQoVVNF
X0pTVkFMVUU2NCkgJiYgIWRlZmluZWQoVVNFX0pTVkFMVUUzMl82NCkKLSNpZiBDT01QSUxFUihH
Q0NfT1JfQ0xBTkcpCi0vKiBfX0xQNjRfXyBpcyBub3QgZGVmaW5lZCBvbiA2NGJpdCBXaW5kb3dz
IHNpbmNlIGl0IHVzZXMgTExQNjQuIFVzaW5nIF9fU0laRU9GX1BPSU5URVJfXyBpcyBzaW1wbGVy
LiAqLwotI2lmIF9fU0laRU9GX1BPSU5URVJfXyA9PSA4Ci0jZGVmaW5lIFVTRV9KU1ZBTFVFNjQg
MQotI2VsaWYgX19TSVpFT0ZfUE9JTlRFUl9fID09IDQKLSNkZWZpbmUgVVNFX0pTVkFMVUUzMl82
NCAxCi0jZWxzZQotI2Vycm9yICJVbnN1cHBvcnRlZCBwb2ludGVyIHdpZHRoIgotI2VuZGlmCi0j
ZWxpZiBDT01QSUxFUihNU1ZDKQotI2lmIGRlZmluZWQoX1dJTjY0KQorI2lmIENQVShBRERSRVNT
NjQpCiAjZGVmaW5lIFVTRV9KU1ZBTFVFNjQgMQogI2Vsc2UKICNkZWZpbmUgVVNFX0pTVkFMVUUz
Ml82NCAxCiAjZW5kaWYKLSNlbHNlCi0vKiBUaGlzIGlzIHRoZSBtb3N0IGdlbmVyaWMgd2F5LiBC
dXQgaW4gT1MoREFSV0lOKSwgUGxhdGZvcm0uaCBjYW4gYmUgaW5jbHVkZWQgYnkgc2FuZGJveCBk
ZWZpbml0aW9uIGZpbGUgKC5zYikuCi0gKiBBdCB0aGF0IHRpbWUsIHdlIGNhbm5vdCBpbmNsdWRl
ICJzdGRpbnQuaCIgaGVhZGVyLiBTbyBpbiB0aGUgY2FzZSBvZiBrbm93biBjb21waWxlcnMsIHdl
IHVzZSBwcmVkZWZpbmVkIGNvbnN0YW50cyBpbnN0ZWFkLiAqLwotI2luY2x1ZGUgPHN0ZGludC5o
PgotI2lmIFVJTlRQVFJfTUFYID4gVUlOVDMyX01BWAotI2RlZmluZSBVU0VfSlNWQUxVRTY0IDEK
LSNlbHNlCi0jZGVmaW5lIFVTRV9KU1ZBTFVFMzJfNjQgMQotI2VuZGlmCi0jZW5kaWYKICNlbmRp
ZiAvKiAhZGVmaW5lZChVU0VfSlNWQUxVRTY0KSAmJiAhZGVmaW5lZChVU0VfSlNWQUxVRTMyXzY0
KSAqLwogCiAvKiBUaGUgSklUIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvbiBhbGwgeDg2LCB4ODYt
NjQsIEFSTSAmIE1JUFMgcGxhdGZvcm1zIGV4Y2VwdCBBUk12N2suICovCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>346588</attachid>
            <date>2018-08-04 05:54:05 -0700</date>
            <delta_ts>2018-08-07 13:59:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188328-20180804215404.patch</filename>
            <type>text/plain</type>
            <size>23781</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0NTc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
YmI1NjBhMzE2N2E5N2IyMmVlYjk1MzM0YzRmYjBlZDRlOGQxYjE4Li43YjYzYjYzOGFmNzRjZTg5
Yjg2YWJjMmFiODM4NmExZjAzNmJmYzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0OCBAQAorMjAxOC0wOC0wNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBTaHJpbmsgc2l6ZSBvZiBQcm9wZXJ0eUNvbmRpdGlvbiBieSBwYWNr
aW5nIFVuaXF1ZWRTdHJpbmdJbXBsKiBhbmQgS2luZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4MzI4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgU2hyaW5raW5nIHRoZSBzaXplIG9mIFByb3BlcnR5Q29u
ZGl0aW9uIGFmZmVjdHMgc28gbXVjaCBvbiBtZW1vcnkgY29uc3VtcHRpb24uCisgICAgICAgIEZv
ciBleGFtcGxlLCBjbm4uY29tIGNhbiBzaG93IDcwMDAgcGVyc2lzdGVudCBTdHJ1Y3R1cmVTdHVi
Q2xlYXJpbmdXYXRjaHBvaW50CisgICAgICAgIGFuZCA2MDAwIExMSW50UHJvdG90eXBlTG9hZEFk
YXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludCB3aGljaCBoYXZlIFByb3BlcnR5Q29uZGl0aW9uCisg
ICAgICAgIGluIHRoZWlyIG1lbWJlci4KKworICAgICAgICBUaGlzIHBhdGNoIHNocmlua3MgdGhl
IHNpemUgb2YgUHJvcGVydHlDb25kaXRpb24gYnkgcGFja2luZyBVbmlxdWVkU3RyaW5nSW1wbCog
YW5kCisgICAgICAgIFByb3BlcnR5Q29uZGl0aW9uOjpLaW5kIGludG8gdWludDY0X3QgZGF0YSBp
biA2NGJpdCBhcmNoaXRlY3R1cmUuIFNpbmNlIG91ciBhZGRyZXNzCisgICAgICAgIGFyZSB3aXRo
aW4gNDhiaXQsIHdlIGNhbiBwdXQgUHJvcGVydHlDb25kaXRpb246OktpbmQgaW4gdGhpcyB1bnVz
ZWQgYml0cy4KKyAgICAgICAgVG8gbWFrZSBpdCBlYXN5LCB3ZSBhZGQgV1RGOjpDb21wYWN0UG9p
bnRlclR1cGxlPFBvaW50ZXJUeXBlLCBUeXBlPiwgd2hpY2ggYXV0b21hdGljYWxseQorICAgICAg
ICBmb2xkcyBhIHBvaW50ZXIgYW5kIDFieXRlIHR5cGUgaW50byA2NGJpdCBkYXRhLgorCisgICAg
ICAgIFRoaXMgY2hhbmdlIHNocmlua3MgUHJvcGVydHlDb25kaXRpb24gZnJvbSAyNGJ5dGVzIHRv
IDE2Ynl0ZXMuCisKKyAgICAgICAgKiBieXRlY29kZS9Qcm9wZXJ0eUNvbmRpdGlvbi5jcHA6Cisg
ICAgICAgIChKU0M6OlByb3BlcnR5Q29uZGl0aW9uOjpkdW1wSW5Db250ZXh0IGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6UHJvcGVydHlDb25kaXRpb246OmlzU3RpbGxWYWxpZEFzc3VtaW5nSW1wdXJl
UHJvcGVydHlXYXRjaHBvaW50IGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlDb25kaXRp
b246OnZhbGlkaXR5UmVxdWlyZXNJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQgY29uc3QpOgorICAg
ICAgICAoSlNDOjpQcm9wZXJ0eUNvbmRpdGlvbjo6aXNTdGlsbFZhbGlkIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6UHJvcGVydHlDb25kaXRpb246OmlzV2F0Y2hhYmxlV2hlblZhbGlkIGNvbnN0KToK
KyAgICAgICAgKiBieXRlY29kZS9Qcm9wZXJ0eUNvbmRpdGlvbi5oOgorICAgICAgICAoSlNDOjpQ
cm9wZXJ0eUNvbmRpdGlvbjo6UHJvcGVydHlDb25kaXRpb24pOgorICAgICAgICAoSlNDOjpQcm9w
ZXJ0eUNvbmRpdGlvbjo6cHJlc2VuY2VXaXRob3V0QmFycmllcik6CisgICAgICAgIChKU0M6OlBy
b3BlcnR5Q29uZGl0aW9uOjphYnNlbmNlV2l0aG91dEJhcnJpZXIpOgorICAgICAgICAoSlNDOjpQ
cm9wZXJ0eUNvbmRpdGlvbjo6YWJzZW5jZU9mU2V0RWZmZWN0V2l0aG91dEJhcnJpZXIpOgorICAg
ICAgICAoSlNDOjpQcm9wZXJ0eUNvbmRpdGlvbjo6ZXF1aXZhbGVuY2VXaXRob3V0QmFycmllcik6
CisgICAgICAgIChKU0M6OlByb3BlcnR5Q29uZGl0aW9uOjpoYXNQcm90b3R5cGVXaXRob3V0QmFy
cmllcik6CisgICAgICAgIChKU0M6OlByb3BlcnR5Q29uZGl0aW9uOjpvcGVyYXRvciBib29sIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlDb25kaXRpb246OmtpbmQgY29uc3QpOgorICAg
ICAgICAoSlNDOjpQcm9wZXJ0eUNvbmRpdGlvbjo6dWlkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6
UHJvcGVydHlDb25kaXRpb246Omhhc09mZnNldCBjb25zdCk6CisgICAgICAgIChKU0M6OlByb3Bl
cnR5Q29uZGl0aW9uOjpoYXNBdHRyaWJ1dGVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJvcGVy
dHlDb25kaXRpb246Omhhc1Byb3RvdHlwZSBjb25zdCk6CisgICAgICAgIChKU0M6OlByb3BlcnR5
Q29uZGl0aW9uOjpoYXNSZXF1aXJlZFZhbHVlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJvcGVy
dHlDb25kaXRpb246Omhhc2ggY29uc3QpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eUNvbmRpdGlv
bjo6b3BlcmF0b3I9PSBjb25zdCk6CisgICAgICAgIChKU0M6OlByb3BlcnR5Q29uZGl0aW9uOjpp
c0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSBjb25zdCk6CisgICAgICAgIChKU0M6OlByb3BlcnR5Q29u
ZGl0aW9uOjp3YXRjaGluZ1JlcXVpcmVzUmVwbGFjZW1lbnRXYXRjaHBvaW50IGNvbnN0KToKKwog
MjAxOC0wOC0wMyAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBH
aXZlIHRoZSBganNjYCBzaGVsbCB0aGUgSklUIGVudGl0bGVtZW50CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGYwZTQ3ZjM4NGNl
NWUzZDI1MWFmY2RhMWEzYjAyNWM4YmMyNDdhZTYuLjIxYzY1MmM4N2YzNjYyNTcyMzc1MDFmNDMw
NDI4YTNiYjA3ZTRmYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTgtMDgtMDQgIFl1c3VrZSBT
dXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgU2hyaW5rIHNpemUgb2Yg
UHJvcGVydHlDb25kaXRpb24gYnkgcGFja2luZyBVbmlxdWVkU3RyaW5nSW1wbCogYW5kIEtpbmQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODMyOAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0
Y2ggYWRkcyBDb21wYWN0UG9pbnRlclR1cGxlLCB3aGljaCBjYW4gcGFjayBhIHBvaW50ZXIgYW5k
IDhiaXQgdmFsdWUgaW50byAxNmJ5dGVzLgorICAgICAgICBJbiAzMmJpdCBhcmNoaXRlY3R1cmUs
IGl0IGp1c3QgaGFzIHR3byBmaWVsZHMgZm9yIGEgcG9pbnRlciBhbmQgOGJpdCB2YWx1ZS4gSW4g
NjRiaXQgYXJjaGl0ZWN0dXJlLAorICAgICAgICB3ZSB1c2UgdXBwZXIgNWJpdHMgKHplcm9zIGJl
Y2F1c2Ugb2YgdGhlIGVmZmVjdGl2ZSB3aWR0aCBvZiB2aXJ0dWFsIGFkZHJlc3MpIGFuZCBsb3dl
ciAzYml0cyAoemVyb3MKKyAgICAgICAgYmVjYXVzZSBvZiB0aGUgYWxpZ25tZW50IGVuc3VyZWQg
Ynkgc3RhdGljX2Fzc2VydCkgdG8gcGFjayA4Yml0IHZhbHVlIGludG8gdGhlIHBvaW50ZXIgZGF0
YS4gU2luY2UKKyAgICAgICAgZXZlbiB0aGUgNS1sZXZlbCBwYWdlIHRhYmxlcyB1c2UgNTdiaXQg
ZWZmZWN0aXZlIGFkZHJlc3MsIHRoaXMgc3RyYXRlZ3kgd29ya3Mgd2VsbC4KKworICAgICAgICAq
IFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiB3dGYvQ29tcGFjdFBvaW50ZXJUdXBsZS5oOiBBZGRlZC4KKyAgICAg
ICAgKFdURjo6Q29tcGFjdFBvaW50ZXJUdXBsZTo6ZW5jb2RlVHlwZSk6CisgICAgICAgIChXVEY6
OkNvbXBhY3RQb2ludGVyVHVwbGU6OmRlY29kZVR5cGUpOgorICAgICAgICAoV1RGOjpDb21wYWN0
UG9pbnRlclR1cGxlOjpDb21wYWN0UG9pbnRlclR1cGxlKToKKyAgICAgICAgKFdURjo6Q29tcGFj
dFBvaW50ZXJUdXBsZTo6cG9pbnRlciBjb25zdCk6CisgICAgICAgIChXVEY6OkNvbXBhY3RQb2lu
dGVyVHVwbGU6OnNldFBvaW50ZXIpOgorICAgICAgICAoV1RGOjpDb21wYWN0UG9pbnRlclR1cGxl
Ojp0eXBlIGNvbnN0KToKKyAgICAgICAgKFdURjo6Q29tcGFjdFBvaW50ZXJUdXBsZTo6c2V0VHlw
ZSk6CisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisKIDIwMTgtMDgtMDMgIEJlbiBSaWNoYXJk
cyAgPGJlbnRvbl9yaWNoYXJkc0BhcHBsZS5jb20+CiAKICAgICAgICAgV2Ugc2hvdWxkIGNhY2hl
IHRoZSBjb21waWxlZCBzYW5kYm94IHByb2ZpbGUgaW4gYSBkYXRhIHZhdWx0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvcGVydHlDb25kaXRpb24uY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb3BlcnR5Q29uZGl0aW9uLmNwcAppbmRl
eCA0MzYzNGJlMDlhZmJjY2Y3MjIyNmE3OTMxMDU3NGM3ZjNjMmJlMjQ3Li4zZGViNDRjNzVmZmRm
ZjBiOTZiNGQ2MWI4NDE5MmIxYmQyMTQ3NzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUHJvcGVydHlDb25kaXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Qcm9wZXJ0eUNvbmRpdGlvbi5jcHAKQEAgLTQzLDE5ICs0MywxOSBA
QCB2b2lkIFByb3BlcnR5Q29uZGl0aW9uOjpkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiBvdXQs
IER1bXBDb250ZXh0KiBjb250ZXh0KSBjbwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAot
ICAgIHN3aXRjaCAobV9raW5kKSB7CisgICAgc3dpdGNoIChtX2hlYWRlci50eXBlKCkpIHsKICAg
ICBjYXNlIFByZXNlbmNlOgotICAgICAgICBvdXQucHJpbnQobV9raW5kLCAiIG9mICIsIG1fdWlk
LCAiIGF0ICIsIG9mZnNldCgpLCAiIHdpdGggYXR0cmlidXRlcyAiLCBhdHRyaWJ1dGVzKCkpOwor
ICAgICAgICBvdXQucHJpbnQobV9oZWFkZXIudHlwZSgpLCAiIG9mICIsIG1faGVhZGVyLnBvaW50
ZXIoKSwgIiBhdCAiLCBvZmZzZXQoKSwgIiB3aXRoIGF0dHJpYnV0ZXMgIiwgYXR0cmlidXRlcygp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQWJzZW5jZToKICAgICBjYXNlIEFic2VuY2VP
ZlNldEVmZmVjdDoKLSAgICAgICAgb3V0LnByaW50KG1fa2luZCwgIiBvZiAiLCBtX3VpZCwgIiB3
aXRoIHByb3RvdHlwZSAiLCBpbkNvbnRleHQoSlNWYWx1ZShwcm90b3R5cGUoKSksIGNvbnRleHQp
KTsKKyAgICAgICAgb3V0LnByaW50KG1faGVhZGVyLnR5cGUoKSwgIiBvZiAiLCBtX2hlYWRlci5w
b2ludGVyKCksICIgd2l0aCBwcm90b3R5cGUgIiwgaW5Db250ZXh0KEpTVmFsdWUocHJvdG90eXBl
KCkpLCBjb250ZXh0KSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIEVxdWl2YWxlbmNlOgot
ICAgICAgICBvdXQucHJpbnQobV9raW5kLCAiIG9mICIsIG1fdWlkLCAiIHdpdGggIiwgaW5Db250
ZXh0KHJlcXVpcmVkVmFsdWUoKSwgY29udGV4dCkpOworICAgICAgICBvdXQucHJpbnQobV9oZWFk
ZXIudHlwZSgpLCAiIG9mICIsIG1faGVhZGVyLnBvaW50ZXIoKSwgIiB3aXRoICIsIGluQ29udGV4
dChyZXF1aXJlZFZhbHVlKCksIGNvbnRleHQpKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2Ug
SGFzUHJvdG90eXBlOgotICAgICAgICBvdXQucHJpbnQobV9raW5kLCAiIHdpdGggcHJvdG90eXBl
ICIsIGluQ29udGV4dChKU1ZhbHVlKHByb3RvdHlwZSgpKSwgY29udGV4dCkpOworICAgICAgICBv
dXQucHJpbnQobV9oZWFkZXIudHlwZSgpLCAiIHdpdGggcHJvdG90eXBlICIsIGluQ29udGV4dChK
U1ZhbHVlKHByb3RvdHlwZSgpKSwgY29udGV4dCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC04MSw3ICs4MSw3IEBAIGJvb2wg
UHJvcGVydHlDb25kaXRpb246OmlzU3RpbGxWYWxpZEFzc3VtaW5nSW1wdXJlUHJvcGVydHlXYXRj
aHBvaW50KAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgc3dpdGNoIChtX2tp
bmQpIHsKKyAgICBzd2l0Y2ggKG1faGVhZGVyLnR5cGUoKSkgewogICAgIGNhc2UgUHJlc2VuY2U6
CiAgICAgY2FzZSBBYnNlbmNlOgogICAgIGNhc2UgQWJzZW5jZU9mU2V0RWZmZWN0OgpAQCAtMTAy
LDcgKzEwMiw3IEBAIGJvb2wgUHJvcGVydHlDb25kaXRpb246OmlzU3RpbGxWYWxpZEFzc3VtaW5n
SW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KAogICAgICAgICBicmVhazsKICAgICB9CiAgICAgCi0g
ICAgc3dpdGNoIChtX2tpbmQpIHsKKyAgICBzd2l0Y2ggKG1faGVhZGVyLnR5cGUoKSkgewogICAg
IGNhc2UgUHJlc2VuY2U6IHsKICAgICAgICAgdW5zaWduZWQgY3VycmVudEF0dHJpYnV0ZXM7CiAg
ICAgICAgIFByb3BlcnR5T2Zmc2V0IGN1cnJlbnRPZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldENvbmN1
cnJlbnRseSh1aWQoKSwgY3VycmVudEF0dHJpYnV0ZXMpOwpAQCAtMjU5LDcgKzI1OSw3IEBAIGJv
b2wgUHJvcGVydHlDb25kaXRpb246OnZhbGlkaXR5UmVxdWlyZXNJbXB1cmVQcm9wZXJ0eVdhdGNo
cG9pbnQoU3RydWN0dXJlKiBzdHJ1CiAgICAgaWYgKCEqdGhpcykKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIAotICAgIHN3aXRjaCAobV9raW5kKSB7CisgICAgc3dpdGNoIChtX2hlYWRlci50
eXBlKCkpIHsKICAgICBjYXNlIFByZXNlbmNlOgogICAgIGNhc2UgQWJzZW5jZToKICAgICBjYXNl
IEVxdWl2YWxlbmNlOgpAQCAtMjgxLDcgKzI4MSw3IEBAIGJvb2wgUHJvcGVydHlDb25kaXRpb246
OmlzU3RpbGxWYWxpZChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNPYmplY3QqIGJhc2UpIGNvbnN0
CiAgICAgLy8gQ3VycmVudGx5IHdlIGFzc3VtZSB0aGF0IGFuIGltcHVyZSBwcm9wZXJ0eSBjYW4g
Y2F1c2UgYSBwcm9wZXJ0eSB0byBhcHBlYXIsIGFuZCBjYW4gYWxzbwogICAgIC8vICJzaGFkb3ci
IGFuIGV4aXN0aW5nIEpTIHByb3BlcnR5IG9uIHRoZSBzYW1lIG9iamVjdC4gSGVuY2UgaXQgYWZm
ZWN0cyBib3RoIHByZXNlbmNlIGFuZAogICAgIC8vIGFic2VuY2UuIEl0IGRvZXNuJ3QgYWZmZWN0
IEFic2VuY2VPZlNldEVmZmVjdCBiZWNhdXNlIGltcHVyZSBwcm9wZXJ0aWVzIGFyZW4ndCBldmVy
IHNldHRlcnMuCi0gICAgc3dpdGNoIChtX2tpbmQpIHsKKyAgICBzd2l0Y2ggKG1faGVhZGVyLnR5
cGUoKSkgewogICAgIGNhc2UgQWJzZW5jZToKICAgICAgICAgaWYgKHN0cnVjdHVyZS0+dHlwZUlu
Zm8oKS5nZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZSgpIHx8IHN0cnVjdHVyZS0+dHlwZUluZm8o
KS5nZXRPd25Qcm9wZXJ0eVNsb3RJc0ltcHVyZUZvclByb3BlcnR5QWJzZW5jZSgpKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzA0LDcgKzMwNCw3IEBAIGJvb2wgUHJvcGVydHlDb25k
aXRpb246OmlzV2F0Y2hhYmxlV2hlblZhbGlkKAogICAgIGlmIChzdHJ1Y3R1cmUtPnRyYW5zaXRp
b25XYXRjaHBvaW50U2V0SGFzQmVlbkludmFsaWRhdGVkKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAKLSAgICBzd2l0Y2ggKG1fa2luZCkgeworICAgIHN3aXRjaCAobV9oZWFkZXIudHlw
ZSgpKSB7CiAgICAgY2FzZSBFcXVpdmFsZW5jZTogewogICAgICAgICBQcm9wZXJ0eU9mZnNldCBv
ZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldENvbmN1cnJlbnRseSh1aWQoKSk7CiAgICAgICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Byb3BlcnR5Q29uZGl0aW9u
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJvcGVydHlDb25kaXRpb24uaApp
bmRleCBlMmY2YjFmMjI2NDdlMzQ1ODFmNWFlN2U0YzRjODBjZmM4M2IyMGE3Li44YWNiMTE5MDE4
NThkZmM2NDkzZGY3NzA4OTUzZmFiYTI0YWQzMDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHJvcGVydHlDb25kaXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHJvcGVydHlDb25kaXRpb24uaApAQCAtMjYsNiArMjYsNyBAQAog
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgPHd0Zi9Db21w
YWN0UG9pbnRlclR1cGxlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAogbmFtZXNwYWNl
IEpTQyB7CkBAIC0zNCwyNCArMzUsMjQgQEAgY2xhc3MgVHJhY2tlZFJlZmVyZW5jZXM7CiAKIGNs
YXNzIFByb3BlcnR5Q29uZGl0aW9uIHsKIHB1YmxpYzoKLSAgICBlbnVtIEtpbmQgeworICAgIGVu
dW0gS2luZCA6IHVpbnQ4X3QgewogICAgICAgICBQcmVzZW5jZSwKICAgICAgICAgQWJzZW5jZSwK
ICAgICAgICAgQWJzZW5jZU9mU2V0RWZmZWN0LAogICAgICAgICBFcXVpdmFsZW5jZSwgLy8gQW4g
YWRhcHRpdmUgd2F0Y2hwb2ludCBvbiB0aGlzIHdpbGwgYmUgYSBwYWlyIG9mIHdhdGNocG9pbnRz
LCBhbmQgd2hlbiB0aGUgc3RydWN0dXJlIHRyYW5zaXRpb25zLCB3ZSB3aWxsIHNldCB0aGUgcmVw
bGFjZW1lbnQgd2F0Y2hwb2ludCBvbiB0aGUgbmV3IHN0cnVjdHVyZS4KICAgICAgICAgSGFzUHJv
dG90eXBlCiAgICAgfTsKKworICAgIHVzaW5nIEhlYWRlciA9IENvbXBhY3RQb2ludGVyVHVwbGU8
VW5pcXVlZFN0cmluZ0ltcGwqLCBLaW5kPjsKICAgICAKICAgICBQcm9wZXJ0eUNvbmRpdGlvbigp
Ci0gICAgICAgIDogbV91aWQobnVsbHB0cikKLSAgICAgICAgLCBtX2tpbmQoUHJlc2VuY2UpCisg
ICAgICAgIDogbV9oZWFkZXIobnVsbHB0ciwgUHJlc2VuY2UpCiAgICAgewogICAgICAgICBtZW1z
ZXQoJnUsIDAsIHNpemVvZih1KSk7CiAgICAgfQogICAgIAogICAgIFByb3BlcnR5Q29uZGl0aW9u
KFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkKLSAgICAgICAgOiBtX3VpZChudWxscHRy
KQotICAgICAgICAsIG1fa2luZChBYnNlbmNlKQorICAgICAgICA6IG1faGVhZGVyKG51bGxwdHIs
IEFic2VuY2UpCiAgICAgewogICAgICAgICBtZW1zZXQoJnUsIDAsIHNpemVvZih1KSk7CiAgICAg
fQpAQCAtNTksOCArNjAsNyBAQCBjbGFzcyBQcm9wZXJ0eUNvbmRpdGlvbiB7CiAgICAgc3RhdGlj
IFByb3BlcnR5Q29uZGl0aW9uIHByZXNlbmNlV2l0aG91dEJhcnJpZXIoVW5pcXVlZFN0cmluZ0lt
cGwqIHVpZCwgUHJvcGVydHlPZmZzZXQgb2Zmc2V0LCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogICAg
IHsKICAgICAgICAgUHJvcGVydHlDb25kaXRpb24gcmVzdWx0OwotICAgICAgICByZXN1bHQubV91
aWQgPSB1aWQ7Ci0gICAgICAgIHJlc3VsdC5tX2tpbmQgPSBQcmVzZW5jZTsKKyAgICAgICAgcmVz
dWx0Lm1faGVhZGVyID0gSGVhZGVyKHVpZCwgUHJlc2VuY2UpOwogICAgICAgICByZXN1bHQudS5w
cmVzZW5jZS5vZmZzZXQgPSBvZmZzZXQ7CiAgICAgICAgIHJlc3VsdC51LnByZXNlbmNlLmF0dHJp
YnV0ZXMgPSBhdHRyaWJ1dGVzOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNzYsOCArNzYs
NyBAQCBjbGFzcyBQcm9wZXJ0eUNvbmRpdGlvbiB7CiAgICAgc3RhdGljIFByb3BlcnR5Q29uZGl0
aW9uIGFic2VuY2VXaXRob3V0QmFycmllcihVbmlxdWVkU3RyaW5nSW1wbCogdWlkLCBKU09iamVj
dCogcHJvdG90eXBlKQogICAgIHsKICAgICAgICAgUHJvcGVydHlDb25kaXRpb24gcmVzdWx0Owot
ICAgICAgICByZXN1bHQubV91aWQgPSB1aWQ7Ci0gICAgICAgIHJlc3VsdC5tX2tpbmQgPSBBYnNl
bmNlOworICAgICAgICByZXN1bHQubV9oZWFkZXIgPSBIZWFkZXIodWlkLCBBYnNlbmNlKTsKICAg
ICAgICAgcmVzdWx0LnUucHJvdG90eXBlLnByb3RvdHlwZSA9IHByb3RvdHlwZTsKICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC05NCw4ICs5Myw3IEBAIGNsYXNzIFByb3BlcnR5Q29u
ZGl0aW9uIHsKICAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgSlNPYmplY3QqIHByb3Rv
dHlwZSkKICAgICB7CiAgICAgICAgIFByb3BlcnR5Q29uZGl0aW9uIHJlc3VsdDsKLSAgICAgICAg
cmVzdWx0Lm1fdWlkID0gdWlkOwotICAgICAgICByZXN1bHQubV9raW5kID0gQWJzZW5jZU9mU2V0
RWZmZWN0OworICAgICAgICByZXN1bHQubV9oZWFkZXIgPSBIZWFkZXIodWlkLCBBYnNlbmNlT2ZT
ZXRFZmZlY3QpOwogICAgICAgICByZXN1bHQudS5wcm90b3R5cGUucHJvdG90eXBlID0gcHJvdG90
eXBlOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTExMiw4ICsxMTAsNyBAQCBj
bGFzcyBQcm9wZXJ0eUNvbmRpdGlvbiB7CiAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQs
IEpTVmFsdWUgdmFsdWUpCiAgICAgewogICAgICAgICBQcm9wZXJ0eUNvbmRpdGlvbiByZXN1bHQ7
Ci0gICAgICAgIHJlc3VsdC5tX3VpZCA9IHVpZDsKLSAgICAgICAgcmVzdWx0Lm1fa2luZCA9IEVx
dWl2YWxlbmNlOworICAgICAgICByZXN1bHQubV9oZWFkZXIgPSBIZWFkZXIodWlkLCBFcXVpdmFs
ZW5jZSk7CiAgICAgICAgIHJlc3VsdC51LmVxdWl2YWxlbmNlLnZhbHVlID0gSlNWYWx1ZTo6ZW5j
b2RlKHZhbHVlKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC0xMjksNyArMTI2
LDcgQEAgY2xhc3MgUHJvcGVydHlDb25kaXRpb24gewogICAgIHN0YXRpYyBQcm9wZXJ0eUNvbmRp
dGlvbiBoYXNQcm90b3R5cGVXaXRob3V0QmFycmllcihKU09iamVjdCogcHJvdG90eXBlKQogICAg
IHsKICAgICAgICAgUHJvcGVydHlDb25kaXRpb24gcmVzdWx0OwotICAgICAgICByZXN1bHQubV9r
aW5kID0gSGFzUHJvdG90eXBlOworICAgICAgICByZXN1bHQubV9oZWFkZXIgPSBIZWFkZXIobnVs
bHB0ciwgSGFzUHJvdG90eXBlKTsKICAgICAgICAgcmVzdWx0LnUucHJvdG90eXBlLnByb3RvdHlw
ZSA9IHByb3RvdHlwZTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC0xNDEsMTgg
KzEzOCwxOCBAQCBjbGFzcyBQcm9wZXJ0eUNvbmRpdGlvbiB7CiAgICAgICAgIHJldHVybiBoYXNQ
cm90b3R5cGVXaXRob3V0QmFycmllcihwcm90b3R5cGUpOwogICAgIH0KICAgICAKLSAgICBleHBs
aWNpdCBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gbV91aWQgfHwgbV9raW5kICE9IFBy
ZXNlbmNlOyB9CisgICAgZXhwbGljaXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIG1f
aGVhZGVyLnBvaW50ZXIoKSB8fCBtX2hlYWRlci50eXBlKCkgIT0gUHJlc2VuY2U7IH0KICAgICAK
LSAgICBLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7IH0KLSAgICBVbmlxdWVkU3Ry
aW5nSW1wbCogdWlkKCkgY29uc3QgeyByZXR1cm4gbV91aWQ7IH0KKyAgICBLaW5kIGtpbmQoKSBj
b25zdCB7IHJldHVybiBtX2hlYWRlci50eXBlKCk7IH0KKyAgICBVbmlxdWVkU3RyaW5nSW1wbCog
dWlkKCkgY29uc3QgeyByZXR1cm4gbV9oZWFkZXIucG9pbnRlcigpOyB9CiAgICAgCi0gICAgYm9v
bCBoYXNPZmZzZXQoKSBjb25zdCB7IHJldHVybiAhISp0aGlzICYmIG1fa2luZCA9PSBQcmVzZW5j
ZTsgfTsKKyAgICBib29sIGhhc09mZnNldCgpIGNvbnN0IHsgcmV0dXJuICEhKnRoaXMgJiYgbV9o
ZWFkZXIudHlwZSgpID09IFByZXNlbmNlOyB9OwogICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldCgp
IGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQoaGFzT2Zmc2V0KCkpOwogICAgICAgICByZXR1
cm4gdS5wcmVzZW5jZS5vZmZzZXQ7CiAgICAgfQotICAgIGJvb2wgaGFzQXR0cmlidXRlcygpIGNv
bnN0IHsgcmV0dXJuICEhKnRoaXMgJiYgbV9raW5kID09IFByZXNlbmNlOyB9OworICAgIGJvb2wg
aGFzQXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuICEhKnRoaXMgJiYgbV9oZWFkZXIudHlwZSgp
ID09IFByZXNlbmNlOyB9OwogICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXMoKSBjb25zdAogICAgIHsK
ICAgICAgICAgQVNTRVJUKGhhc0F0dHJpYnV0ZXMoKSk7CkBAIC0xNjIsNyArMTU5LDcgQEAgY2xh
c3MgUHJvcGVydHlDb25kaXRpb24gewogICAgIGJvb2wgaGFzUHJvdG90eXBlKCkgY29uc3QKICAg
ICB7CiAgICAgICAgIHJldHVybiAhISp0aGlzCi0gICAgICAgICAgICAmJiAobV9raW5kID09IEFi
c2VuY2UgfHwgbV9raW5kID09IEFic2VuY2VPZlNldEVmZmVjdCB8fCBtX2tpbmQgPT0gSGFzUHJv
dG90eXBlKTsKKyAgICAgICAgICAgICYmIChtX2hlYWRlci50eXBlKCkgPT0gQWJzZW5jZSB8fCBt
X2hlYWRlci50eXBlKCkgPT0gQWJzZW5jZU9mU2V0RWZmZWN0IHx8IG1faGVhZGVyLnR5cGUoKSA9
PSBIYXNQcm90b3R5cGUpOwogICAgIH0KICAgICBKU09iamVjdCogcHJvdG90eXBlKCkgY29uc3QK
ICAgICB7CkBAIC0xNzAsNyArMTY3LDcgQEAgY2xhc3MgUHJvcGVydHlDb25kaXRpb24gewogICAg
ICAgICByZXR1cm4gdS5wcm90b3R5cGUucHJvdG90eXBlOwogICAgIH0KICAgICAKLSAgICBib29s
IGhhc1JlcXVpcmVkVmFsdWUoKSBjb25zdCB7IHJldHVybiAhISp0aGlzICYmIG1fa2luZCA9PSBF
cXVpdmFsZW5jZTsgfQorICAgIGJvb2wgaGFzUmVxdWlyZWRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJu
ICEhKnRoaXMgJiYgbV9oZWFkZXIudHlwZSgpID09IEVxdWl2YWxlbmNlOyB9CiAgICAgSlNWYWx1
ZSByZXF1aXJlZFZhbHVlKCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVChoYXNSZXF1aXJl
ZFZhbHVlKCkpOwpAQCAtMTgyLDggKzE3OSw4IEBAIGNsYXNzIFByb3BlcnR5Q29uZGl0aW9uIHsK
ICAgICAKICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QKICAgICB7Ci0gICAgICAgIHVuc2lnbmVk
IHJlc3VsdCA9IFdURjo6UHRySGFzaDxVbmlxdWVkU3RyaW5nSW1wbCo+OjpoYXNoKG1fdWlkKSAr
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2tpbmQpOwotICAgICAgICBzd2l0Y2ggKG1fa2luZCkg
eworICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBXVEY6OlB0ckhhc2g8VW5pcXVlZFN0cmluZ0lt
cGwqPjo6aGFzaChtX2hlYWRlci5wb2ludGVyKCkpICsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1f
aGVhZGVyLnR5cGUoKSk7CisgICAgICAgIHN3aXRjaCAobV9oZWFkZXIudHlwZSgpKSB7CiAgICAg
ICAgIGNhc2UgUHJlc2VuY2U6CiAgICAgICAgICAgICByZXN1bHQgXj0gdS5wcmVzZW5jZS5vZmZz
ZXQ7CiAgICAgICAgICAgICByZXN1bHQgXj0gdS5wcmVzZW5jZS5hdHRyaWJ1dGVzOwpAQCAtMjAy
LDExICsxOTksMTEgQEAgY2xhc3MgUHJvcGVydHlDb25kaXRpb24gewogICAgIAogICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBQcm9wZXJ0eUNvbmRpdGlvbiYgb3RoZXIpIGNvbnN0CiAgICAgewot
ICAgICAgICBpZiAobV91aWQgIT0gb3RoZXIubV91aWQpCisgICAgICAgIGlmIChtX2hlYWRlci5w
b2ludGVyKCkgIT0gb3RoZXIubV9oZWFkZXIucG9pbnRlcigpKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICBpZiAobV9raW5kICE9IG90aGVyLm1fa2luZCkKKyAgICAgICAgaWYg
KG1faGVhZGVyLnR5cGUoKSAhPSBvdGhlci5tX2hlYWRlci50eXBlKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIHN3aXRjaCAobV9raW5kKSB7CisgICAgICAgIHN3aXRjaCAo
bV9oZWFkZXIudHlwZSgpKSB7CiAgICAgICAgIGNhc2UgUHJlc2VuY2U6CiAgICAgICAgICAgICBy
ZXR1cm4gdS5wcmVzZW5jZS5vZmZzZXQgPT0gb3RoZXIudS5wcmVzZW5jZS5vZmZzZXQKICAgICAg
ICAgICAgICAgICAmJiB1LnByZXNlbmNlLmF0dHJpYnV0ZXMgPT0gb3RoZXIudS5wcmVzZW5jZS5h
dHRyaWJ1dGVzOwpAQCAtMjIzLDcgKzIyMCw3IEBAIGNsYXNzIFByb3BlcnR5Q29uZGl0aW9uIHsK
ICAgICAKICAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QKICAgICB7Ci0g
ICAgICAgIHJldHVybiAhbV91aWQgJiYgbV9raW5kID09IEFic2VuY2U7CisgICAgICAgIHJldHVy
biAhbV9oZWFkZXIucG9pbnRlcigpICYmIG1faGVhZGVyLnR5cGUoKSA9PSBBYnNlbmNlOwogICAg
IH0KICAgICAKICAgICAvLyBUd28gY29uZGl0aW9ucyBhcmUgY29tcGF0aWJsZSBpZiB0aGV5IGFy
ZSBpZGVudGljYWwgb3IgaWYgdGhleSBzcGVhayBvZiBkaWZmZXJlbnQgdWlkcy4gSWYKQEAgLTI5
Niw3ICsyOTMsNyBAQCBjbGFzcyBQcm9wZXJ0eUNvbmRpdGlvbiB7CiAgICAgfQogICAgIGJvb2wg
d2F0Y2hpbmdSZXF1aXJlc1JlcGxhY2VtZW50V2F0Y2hwb2ludCgpIGNvbnN0CiAgICAgewotICAg
ICAgICByZXR1cm4gISEqdGhpcyAmJiBtX2tpbmQgPT0gRXF1aXZhbGVuY2U7CisgICAgICAgIHJl
dHVybiAhISp0aGlzICYmIG1faGVhZGVyLnR5cGUoKSA9PSBFcXVpdmFsZW5jZTsKICAgICB9CiAg
ICAgCiAgICAgLy8gVGhpcyBtZWFucyB0aGF0IHRoZSBvYmplY3RzIGludm9sdmVkIGluIHRoaXMg
YXJlIHN0aWxsIGxpdmUuCkBAIC0zMTMsOCArMzEwLDcgQEAgY2xhc3MgUHJvcGVydHlDb25kaXRp
b24gewogcHJpdmF0ZToKICAgICBib29sIGlzV2F0Y2hhYmxlV2hlblZhbGlkKFN0cnVjdHVyZSos
IFdhdGNoYWJpbGl0eUVmZm9ydCkgY29uc3Q7CiAKLSAgICBVbmlxdWVkU3RyaW5nSW1wbCogbV91
aWQ7Ci0gICAgS2luZCBtX2tpbmQ7CisgICAgSGVhZGVyIG1faGVhZGVyOwogICAgIHVuaW9uIHsK
ICAgICAgICAgc3RydWN0IHsKICAgICAgICAgICAgIFByb3BlcnR5T2Zmc2V0IG9mZnNldDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU5YjU5ZWY2NWE2YzE2
OWU4Yzg5ZDUwM2QxMmMwMjEzNzZlZDlkY2QuLjU3NTM4ODM0MDMwYzY2ODFmNWJhM2NjNWE5YjVl
NjMzMGFlMmY0ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtNjMxLDYgKzYzMSw3IEBACiAJCUUzOEQ2RTI2MUY1NTIyRTMwMEE3NUNDNCAvKiBTdHJpbmdC
dWlsZGVySlNPTi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHJp
bmdCdWlsZGVySlNPTi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUzQTMyQkMy
MUZDODMwRTIwMDdEN0U3NiAvKiBKU1ZhbHVlTWFsbG9jLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTVmFsdWVNYWxsb2MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFM0EzMkJDMzFGQzgzMEUyMDA3RDdFNzYgLyogSlNWYWx1ZU1hbGxvYy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1ZhbHVlTWFsbG9jLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUUzQ0Y3NjkwMjExNUQ2QkEwMDkxREU0OCAvKiBDb21wYWN0
UG9pbnRlclR1cGxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbXBhY3RQ
b2ludGVyVHVwbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTNFMTU4MjUxRUFE
QTUzQzAwNEEwNzlEIC8qIFN5c3RlbUZyZWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU3lzdGVtRnJlZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEEwQUQz
NzFBOTYyNDU1MDA1MzZERjYgLyogV29ya1F1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdvcmtRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUU0QTBBRDM4MUE5NjI0NTUwMDUzNkRGNiAvKiBXb3JrUXVldWUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya1F1ZXVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC04MzksNiArODQwLDcgQEAKIAkJCQkwRjY2QjI4MDFEQzk3QkFCMDA0QTFEM0YgLyog
Q2xvY2tUeXBlLmNwcCAqLywKIAkJCQkwRjY2QjI4MTFEQzk3QkFCMDA0QTFEM0YgLyogQ2xvY2tU
eXBlLmggKi8sCiAJCQkJMEZDNEVERTUxNjk2MTQ5NjAwRjY1MDQxIC8qIENvbW1hUHJpbnRlci5o
ICovLAorCQkJCUUzQ0Y3NjkwMjExNUQ2QkEwMDkxREU0OCAvKiBDb21wYWN0UG9pbnRlclR1cGxl
LmggKi8sCiAJCQkJMEY4RjJCOEYxNzJFMDBGMDAwN0RCREE1IC8qIENvbXBpbGF0aW9uVGhyZWFk
LmNwcCAqLywKIAkJCQkwRjhGMkI5MDE3MkUwMEYwMDA3REJEQTUgLyogQ29tcGlsYXRpb25UaHJl
YWQuaCAqLywKIAkJCQlBOEE0NzI3MDE1MUE4MjVBMDA0MTIzRkYgLyogQ29tcGlsZXIuaCAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dURi93
dGYvQ01ha2VMaXN0cy50eHQKaW5kZXggZTQ2ODAyYTM0NDRlYjQzMzAyMmE1OWU1OGM2NzhiMTQx
NmQyNzNiNC4uOTc5OGI5YjhhMTA1ODVmMzRmMDc5MmM5YTMxNDllMDljMzhjZTk2NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dURi93dGYv
Q01ha2VMaXN0cy50eHQKQEAgLTI4LDYgKzI4LDcgQEAgc2V0KFdURl9QVUJMSUNfSEVBREVSUwog
ICAgIENoZWNrZWRCb29sZWFuLmgKICAgICBDbG9ja1R5cGUuaAogICAgIENvbW1hUHJpbnRlci5o
CisgICAgQ29tcGFjdFBvaW50ZXJUdXBsZS5oCiAgICAgQ29tcGlsYXRpb25UaHJlYWQuaAogICAg
IENvbXBpbGVyLmgKICAgICBDb21wbGV0aW9uSGFuZGxlci5oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi9Db21wYWN0UG9pbnRlclR1cGxlLmggYi9Tb3VyY2UvV1RGL3d0Zi9Db21wYWN0UG9p
bnRlclR1cGxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWEzNDhjM2E0ZGFiMmE4NjY3OWE1NjZhY2ZhNDMxZjFi
MjljYTNjOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL0NvbXBhY3RQb2ludGVy
VHVwbGUuaApAQCAtMCwwICsxLDEwNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBZdXN1
a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHR5cGVfdHJh
aXRzPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKworbmFtZXNwYWNlIFdURiB7CisK
Ky8vIFRoZSBnb2FsIG9mIHRoaXMgY2xhc3MgaXMgZm9sZGluZyBhIHBvaW50ZXIgYW5kIDEgYnl0
ZSB2YWx1ZSBpbnRvIDggYnl0ZXMgaW4gYm90aCAzMmJpdCBhbmQgNjRiaXQgYXJjaGl0ZWN0dXJl
cy4KKy8vIDMyYml0IGFyY2hpdGVjdHVyZSBqdXN0IGhhcyBhIHBhaXIgb2YgYnl0ZSBhbmQgcG9p
bnRlciwgd2hpY2ggc2hvdWxkIGJlIDggYnl0ZXMuCisvLyBJbiA2NGJpdCwgd2UgdXNlIHRoZSB1
cHBlciA1IGJpdHMgYW5kIGxvd2VyIDMgYml0cyAoemVybyBkdWUgdG8gYWxpZ25tZW50KSBzaW5j
ZSB0aGVzZSBiaXRzIGFyZSBzYWZlIHRvIHVzZSBldmVuCisvLyB3aXRoIDUtbGV2ZWwgcGFnZSB0
YWJsZXMgd2hlcmUgdGhlIGVmZmVjdGl2ZSBwb2ludGVyIHdpZHRoIGlzIDU3Yml0cy4KK3RlbXBs
YXRlPHR5cGVuYW1lIFBvaW50ZXJUeXBlLCB0eXBlbmFtZSBUeXBlPgorY2xhc3MgQ29tcGFjdFBv
aW50ZXJUdXBsZSB7CitwdWJsaWM6CisgICAgc3RhdGljX2Fzc2VydChzaXplb2YoVHlwZSkgPT0g
MSwgIiIpOworICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19wb2ludGVyPFBvaW50ZXJUeXBlPjo6
dmFsdWUsICIiKTsKKyAgICBzdGF0aWNfYXNzZXJ0KGFsaWdub2YodHlwZW5hbWUgc3RkOjpyZW1v
dmVfcG9pbnRlcjxQb2ludGVyVHlwZT46OnR5cGUpID49IGFsaWdub2Yodm9pZCopLCAiIik7Cisg
ICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2ludGVncmFsPFR5cGU+Ojp2YWx1ZSB8fCBzdGQ6Omlz
X2VudW08VHlwZT46OnZhbHVlLCAiIik7CisKKyAgICBDb21wYWN0UG9pbnRlclR1cGxlKCkgPSBk
ZWZhdWx0OworCisjaWYgQ1BVKEFERFJFU1M2NCkKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3Rl
eHByIHVpbnQ2NF90IGVuY29kZVR5cGUodWludDhfdCB0eXBlKQorICAgIHsKKyAgICAgICAgLy8g
RW5jb2RlIDhiaXQgdHlwZSBVVVVERERERCBpbnRvIDY0Yml0IGRhdGEgREREREQuLjU2Yml0Li5V
VVUuCisgICAgICAgIHJldHVybiAoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHR5cGUpIDw8IDU5KSB8
IChzdGF0aWNfY2FzdDx1aW50NjRfdD4odHlwZSkgPj4gNSk7CisgICAgfQorICAgIHN0YXRpYyBj
b25zdGV4cHIgdWludDhfdCBkZWNvZGVUeXBlKHVpbnQ2NF90IHZhbHVlKQorICAgIHsKKyAgICAg
ICAgLy8gRGVjb2RlIDY0Yml0IGRhdGEgREREREQuLjU2Yml0Li5VVVUgaW50byA4Yml0IHR5cGUg
VVVVREREREQuCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1aW50OF90PigodmFsdWUgPj4g
NTkpIHwgKHZhbHVlIDw8IDUpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ2
NF90IHR5cGVNYXNrID0gZW5jb2RlVHlwZShVSU5UOF9NQVgpOworICAgIHN0YXRpY19hc3NlcnQo
MHhGODAwMDAwMDAwMDAwMDA3VUxMID09IHR5cGVNYXNrLCAiIik7CisgICAgc3RhdGljIGNvbnN0
ZXhwciB1aW50NjRfdCBwb2ludGVyTWFzayA9IH50eXBlTWFzazsKKworICAgIENvbXBhY3RQb2lu
dGVyVHVwbGUoUG9pbnRlclR5cGUgcG9pbnRlciwgVHlwZSB0eXBlKQorICAgICAgICA6IG1fZGF0
YShiaXR3aXNlX2Nhc3Q8dWludDY0X3Q+KHBvaW50ZXIpIHwgZW5jb2RlVHlwZShzdGF0aWNfY2Fz
dDx1aW50OF90Pih0eXBlKSkpCisgICAgeworICAgIH0KKworICAgIFBvaW50ZXJUeXBlIHBvaW50
ZXIoKSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8UG9pbnRlclR5cGU+KG1fZGF0YSAmIHBv
aW50ZXJNYXNrKTsgfQorICAgIHZvaWQgc2V0UG9pbnRlcihQb2ludGVyVHlwZSBwb2ludGVyKQor
ICAgIHsKKyAgICAgICAgbV9kYXRhID0gYml0d2lzZV9jYXN0PHVpbnQ2NF90Pihwb2ludGVyKSB8
IChtX2RhdGEgJiB0eXBlTWFzayk7CisgICAgfQorCisgICAgVHlwZSB0eXBlKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8VHlwZT4oZGVjb2RlVHlwZShtX2RhdGEpKTsgfQorICAgIHZvaWQg
c2V0VHlwZShUeXBlIHR5cGUpCisgICAgeworICAgICAgICBtX2RhdGEgPSAobV9kYXRhICYgcG9p
bnRlck1hc2spIHwgZW5jb2RlVHlwZShzdGF0aWNfY2FzdDx1aW50OF90Pih0eXBlKSk7CisgICAg
fQorCitwcml2YXRlOgorICAgIHVpbnQ2NF90IG1fZGF0YSB7IDAgfTsKKyNlbHNlCitwdWJsaWM6
CisgICAgQ29tcGFjdFBvaW50ZXJUdXBsZShQb2ludGVyVHlwZSBwb2ludGVyLCBUeXBlIHR5cGUp
CisgICAgICAgIDogbV9wb2ludGVyKHBvaW50ZXIpCisgICAgICAgICwgbV90eXBlKHR5cGUpCisg
ICAgeworICAgIH0KKworICAgIFBvaW50ZXJUeXBlIHBvaW50ZXIoKSBjb25zdCB7IHJldHVybiBt
X3BvaW50ZXI7IH0KKyAgICB2b2lkIHNldFBvaW50ZXIoUG9pbnRlclR5cGUgcG9pbnRlcikgeyBt
X3BvaW50ZXIgPSBwb2ludGVyOyB9CisgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90
eXBlOyB9CisgICAgdm9pZCBzZXRUeXBlKFR5cGUgdHlwZSkgeyBtX3R5cGUgPSB0eXBlOyB9CisK
K3ByaXZhdGU6CisgICAgUG9pbnRlclR5cGUgbV9wb2ludGVyIHsgbnVsbHB0ciB9OworICAgIFR5
cGUgbV90eXBlIHsgMCB9OworI2VuZGlmCit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwordXNp
bmcgV1RGOjpDb21wYWN0UG9pbnRlclR1cGxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
UGxhdGZvcm0uaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKaW5kZXggMjdmZjVmNjczZDky
ZTcxNzNkMWRkMTdmNjE3ZjM0ZTVkODE3MGNlMS4uMGM2ZWZiODYyOTgyNTM5ZDJiNGIyY2M0Zjhm
OGI1ZmNiNGVjODhlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCkBAIC0zMjcsNiArMzI3LDMyIEBACiAjZGVmaW5l
IFdURl9DUFVfTkVFRFNfQUxJR05FRF9BQ0NFU1MgMQogI2VuZGlmCiAKKyNpZiBDT01QSUxFUihH
Q0NfT1JfQ0xBTkcpCisvKiBfX0xQNjRfXyBpcyBub3QgZGVmaW5lZCBvbiA2NGJpdCBXaW5kb3dz
IHNpbmNlIGl0IHVzZXMgTExQNjQuIFVzaW5nIF9fU0laRU9GX1BPSU5URVJfXyBpcyBzaW1wbGVy
LiAqLworI2lmIF9fU0laRU9GX1BPSU5URVJfXyA9PSA4CisjZGVmaW5lIFdURl9DUFVfQUREUkVT
UzY0IDEKKyNlbGlmIF9fU0laRU9GX1BPSU5URVJfXyA9PSA0CisjZGVmaW5lIFdURl9DUFVfQURE
UkVTUzMyIDEKKyNlbHNlCisjZXJyb3IgIlVuc3VwcG9ydGVkIHBvaW50ZXIgd2lkdGgiCisjZW5k
aWYKKyNlbGlmIENPTVBJTEVSKE1TVkMpCisjaWYgZGVmaW5lZChfV0lONjQpCisjZGVmaW5lIFdU
Rl9DUFVfQUREUkVTUzY0IDEKKyNlbHNlCisjZGVmaW5lIFdURl9DUFVfQUREUkVTUzMyIDEKKyNl
bmRpZgorI2Vsc2UKKy8qIFRoaXMgaXMgdGhlIG1vc3QgZ2VuZXJpYyB3YXkuIEJ1dCBpbiBPUyhE
QVJXSU4pLCBQbGF0Zm9ybS5oIGNhbiBiZSBpbmNsdWRlZCBieSBzYW5kYm94IGRlZmluaXRpb24g
ZmlsZSAoLnNiKS4KKyAqIEF0IHRoYXQgdGltZSwgd2UgY2Fubm90IGluY2x1ZGUgInN0ZGludC5o
IiBoZWFkZXIuIFNvIGluIHRoZSBjYXNlIG9mIGtub3duIGNvbXBpbGVycywgd2UgdXNlIHByZWRl
ZmluZWQgY29uc3RhbnRzIGluc3RlYWQuICovCisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaWYgVUlO
VFBUUl9NQVggPiBVSU5UMzJfTUFYCisjZGVmaW5lIFdURl9DUFVfQUREUkVTUzY0IDEKKyNlbHNl
CisjZGVmaW5lIFdURl9DUFVfQUREUkVTUzMyIDEKKyNlbmRpZgorI2VuZGlmCisKIC8qID09PT0g
T1MoKSAtIHVuZGVybHlpbmcgb3BlcmF0aW5nIHN5c3RlbTsgb25seSB0byBiZSB1c2VkIGZvciBt
YW5kYXRlZCBsb3ctbGV2ZWwgc2VydmljZXMgbGlrZSAKICAgIHZpcnR1YWwgbWVtb3J5LCBub3Qg
dG8gY2hvb3NlIGEgR1VJIHRvb2xraXQgPT09PSAqLwogCkBAIC03MDUsMzEgKzczMSwxMSBAQAog
I2VuZGlmCiAKICNpZiAhZGVmaW5lZChVU0VfSlNWQUxVRTY0KSAmJiAhZGVmaW5lZChVU0VfSlNW
QUxVRTMyXzY0KQotI2lmIENPTVBJTEVSKEdDQ19PUl9DTEFORykKLS8qIF9fTFA2NF9fIGlzIG5v
dCBkZWZpbmVkIG9uIDY0Yml0IFdpbmRvd3Mgc2luY2UgaXQgdXNlcyBMTFA2NC4gVXNpbmcgX19T
SVpFT0ZfUE9JTlRFUl9fIGlzIHNpbXBsZXIuICovCi0jaWYgX19TSVpFT0ZfUE9JTlRFUl9fID09
IDgKLSNkZWZpbmUgVVNFX0pTVkFMVUU2NCAxCi0jZWxpZiBfX1NJWkVPRl9QT0lOVEVSX18gPT0g
NAotI2RlZmluZSBVU0VfSlNWQUxVRTMyXzY0IDEKLSNlbHNlCi0jZXJyb3IgIlVuc3VwcG9ydGVk
IHBvaW50ZXIgd2lkdGgiCi0jZW5kaWYKLSNlbGlmIENPTVBJTEVSKE1TVkMpCi0jaWYgZGVmaW5l
ZChfV0lONjQpCisjaWYgQ1BVKEFERFJFU1M2NCkKICNkZWZpbmUgVVNFX0pTVkFMVUU2NCAxCiAj
ZWxzZQogI2RlZmluZSBVU0VfSlNWQUxVRTMyXzY0IDEKICNlbmRpZgotI2Vsc2UKLS8qIFRoaXMg
aXMgdGhlIG1vc3QgZ2VuZXJpYyB3YXkuIEJ1dCBpbiBPUyhEQVJXSU4pLCBQbGF0Zm9ybS5oIGNh
biBiZSBpbmNsdWRlZCBieSBzYW5kYm94IGRlZmluaXRpb24gZmlsZSAoLnNiKS4KLSAqIEF0IHRo
YXQgdGltZSwgd2UgY2Fubm90IGluY2x1ZGUgInN0ZGludC5oIiBoZWFkZXIuIFNvIGluIHRoZSBj
YXNlIG9mIGtub3duIGNvbXBpbGVycywgd2UgdXNlIHByZWRlZmluZWQgY29uc3RhbnRzIGluc3Rl
YWQuICovCi0jaW5jbHVkZSA8c3RkaW50Lmg+Ci0jaWYgVUlOVFBUUl9NQVggPiBVSU5UMzJfTUFY
Ci0jZGVmaW5lIFVTRV9KU1ZBTFVFNjQgMQotI2Vsc2UKLSNkZWZpbmUgVVNFX0pTVkFMVUUzMl82
NCAxCi0jZW5kaWYKLSNlbmRpZgogI2VuZGlmIC8qICFkZWZpbmVkKFVTRV9KU1ZBTFVFNjQpICYm
ICFkZWZpbmVkKFVTRV9KU1ZBTFVFMzJfNjQpICovCiAKIC8qIFRoZSBKSVQgaXMgZW5hYmxlZCBi
eSBkZWZhdWx0IG9uIGFsbCB4ODYsIHg4Ni02NCwgQVJNICYgTUlQUyBwbGF0Zm9ybXMgZXhjZXB0
IEFSTXY3ay4gKi8K
</data>
<flag name="review"
          id="364424"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>