<?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>176236</bug_id>
          
          <creation_ts>2017-09-01 11:30:17 -0700</creation_ts>
          <short_desc>Add a ResourceBundle abstraction</short_desc>
          <delta_ts>2023-02-23 13:01:26 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Template Framework</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>175336</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Don Olmstead">don.olmstead</reporter>
          <assigned_to name="Don Olmstead">don.olmstead</assigned_to>
          <cc>annulen</cc>
    
    <cc>aperez</cc>
    
    <cc>benjamin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>yoshiaki.jitsukawa</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1344486</commentid>
    <comment_count>0</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2017-09-01 11:30:17 -0700</bug_when>
    <thetext>Currently there is CFBundle for CF and GResource for GTK. Provide an interface that can be used across ports.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344487</commentid>
    <comment_count>1</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2017-09-01 11:31:10 -0700</bug_when>
    <thetext>Currently blocking removal of CFLite from WinCairo as a number of places are using webkitBundle which returns a CFBundleRef.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344742</commentid>
    <comment_count>2</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-09-01 22:31:26 -0700</bug_when>
    <thetext>Currently I think JSC does not use resource bundles (not sure about the inspector part, but JSCOnly does not). So putting it in PAL would be good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1508736</commentid>
    <comment_count>3</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-02-21 16:25:37 -0800</bug_when>
    <thetext>This sounds like a great idea!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832269</commentid>
    <comment_count>4</comment_count>
      <attachid>449527</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2022-01-19 15:52:18 -0800</bug_when>
    <thetext>Created attachment 449527
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832338</commentid>
    <comment_count>5</comment_count>
      <attachid>449548</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2022-01-19 20:23:54 -0800</bug_when>
    <thetext>Created attachment 449548
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832343</commentid>
    <comment_count>6</comment_count>
      <attachid>449551</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2022-01-19 20:39:59 -0800</bug_when>
    <thetext>Created attachment 449551
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832551</commentid>
    <comment_count>7</comment_count>
      <attachid>449606</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2022-01-20 13:27:26 -0800</bug_when>
    <thetext>Created attachment 449606
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832565</commentid>
    <comment_count>8</comment_count>
      <attachid>449606</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-01-20 13:58:35 -0800</bug_when>
    <thetext>Comment on attachment 449606
Patch

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

r=me with comment.

&gt; Source/WTF/wtf/ResourceBundle.cpp:63
&gt; +    String fileName = name + &quot;.&quot;_s + type;

Let&apos;s use makeString here, which is more efficient.

makeString(name, &quot;.&quot;_s, type)

&gt; Source/WTF/wtf/ResourceBundle.h:45
&gt; +    WTF_EXPORT_PRIVATE static std::unique_ptr&lt;ResourceBundle&gt; create(String);

Should we use `const String&amp;`?
(We cannot use StringView here since we need to convert it to CFString via String&apos;s method).

&gt; Source/WTF/wtf/ResourceBundle.h:55
&gt; +    WTF_EXPORT_PRIVATE String resourcePath(String name, String type, String directory) const;
&gt; +    WTF_EXPORT_PRIVATE URL resourceURL(String name, String type, String directory) const;

Should we use `const String&amp;`?
(We cannot use StringView here since we need to convert it to CFString via String&apos;s method).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832567</commentid>
    <comment_count>9</comment_count>
      <attachid>449606</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-20 14:00:12 -0800</bug_when>
    <thetext>Comment on attachment 449606
Patch

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

&gt;&gt; Source/WTF/wtf/ResourceBundle.h:45
&gt;&gt; +    WTF_EXPORT_PRIVATE static std::unique_ptr&lt;ResourceBundle&gt; create(String);
&gt; 
&gt; Should we use `const String&amp;`?
&gt; (We cannot use StringView here since we need to convert it to CFString via String&apos;s method).

We have StringView::createCFString. I don’t see any reason we couldn’t use that.

&gt;&gt; Source/WTF/wtf/ResourceBundle.h:55
&gt;&gt; +    WTF_EXPORT_PRIVATE URL resourceURL(String name, String type, String directory) const;
&gt; 
&gt; Should we use `const String&amp;`?
&gt; (We cannot use StringView here since we need to convert it to CFString via String&apos;s method).

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832572</commentid>
    <comment_count>10</comment_count>
      <attachid>449606</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-20 14:06:04 -0800</bug_when>
    <thetext>Comment on attachment 449606
Patch

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

&gt;&gt; Source/WTF/wtf/ResourceBundle.cpp:63
&gt;&gt; +    String fileName = name + &quot;.&quot;_s + type;
&gt; 
&gt; Let&apos;s use makeString here, which is more efficient.
&gt; 
&gt; makeString(name, &quot;.&quot;_s, type)

I also prefer makeString, but for the record, makeString is likely not more efficient here because the String operator+ algorithm has optimizations so there are no intermediate strings created.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832574</commentid>
    <comment_count>11</comment_count>
      <attachid>449606</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-20 14:07:04 -0800</bug_when>
    <thetext>Comment on attachment 449606
Patch

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

&gt;&gt;&gt; Source/WTF/wtf/ResourceBundle.cpp:63
&gt;&gt;&gt; +    String fileName = name + &quot;.&quot;_s + type;
&gt;&gt; 
&gt;&gt; Let&apos;s use makeString here, which is more efficient.
&gt;&gt; 
&gt;&gt; makeString(name, &quot;.&quot;_s, type)
&gt; 
&gt; I also prefer makeString, but for the record, makeString is likely not more efficient here because the String operator+ algorithm has optimizations so there are no intermediate strings created.

But with makeString we can do a tiny bit better performance with this:

    makeString(name, &apos;.&apos;, type)

Maybe some day we will optimize makeString for string literals, but until then, single characters will be slightly faster in makeString than single-character strings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832587</commentid>
    <comment_count>12</comment_count>
      <attachid>449612</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2022-01-20 14:47:01 -0800</bug_when>
    <thetext>Created attachment 449612
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832592</commentid>
    <comment_count>13</comment_count>
      <attachid>449612</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-20 15:25:42 -0800</bug_when>
    <thetext>Comment on attachment 449612
Patch

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

&gt; Source/WTF/wtf/cf/ResourceBundleCF.cpp:73
&gt; +    RetainPtr&lt;CFURLRef&gt; requestedURLRef = CFBundleCopyResourceURL(m_bundle.get(), name.createCFString().get(), type.createCFString().get(), directory.createCFString().get());

This will leak the URL. Needs to use adoptCF:

    auto requestedURL = adoptCF(CFBundleCopyResourceURL(m_bundle.get(), name.createCFString().get(), type.createCFString().get(), directory.createCFString().get()));

&gt; Source/WTF/wtf/cf/ResourceBundleCF.cpp:88
&gt; +    return URL(CFBundleCopyResourceURL(m_bundle.get(), name.createCFString().get(), type.createCFString().get(), directory.createCFString().get()));

Same problem here, calling CFBundleCopyResourceURL without adoptCF will lead to a leak.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832629</commentid>
    <comment_count>14</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2022-01-20 17:04:12 -0800</bug_when>
    <thetext>Oh! That&apos;s a good catch!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832770</commentid>
    <comment_count>15</comment_count>
      <attachid>449660</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2022-01-21 08:25:31 -0800</bug_when>
    <thetext>Created attachment 449660
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832776</commentid>
    <comment_count>16</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2022-01-21 08:36:46 -0800</bug_when>
    <thetext>Believe I have all the adoptCF code added. I do want to see what the API tests on Mac return to make sure the new tests pass.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832778</commentid>
    <comment_count>17</comment_count>
      <attachid>449660</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-21 08:57:44 -0800</bug_when>
    <thetext>Comment on attachment 449660
Patch

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

&gt; Source/WTF/wtf/ResourceBundle.cpp:45
&gt; +    return std::unique_ptr&lt;ResourceBundle&gt;(new ResourceBundle(pathString));

This should be WTFMove(pathString) to avoid some reference count churn.

&gt; Source/WTF/wtf/ResourceBundle.cpp:49
&gt; +    : m_root(root)

This should be WTFMove(root) to avoid some reference count churn.

&gt; Source/WTF/wtf/ResourceBundle.h:48
&gt; +    inline operator CFBundleRef() const { return m_bundle.get(); }

The &quot;inline&quot; here is not needed, has no effect.

&gt; Source/WTF/wtf/cf/ResourceBundleCF.cpp:69
&gt; +    auto bundleURL = adoptCF(CFBundleCopyBundleURL(m_bundle.get()));
&gt; +    return URL(bundleURL.get());

I think this is better as a one liner without a local.

    return adoptCF(CFBundleCopyBundleURL(m_bundle.get())).get();

Also, there is no need to explicitly specify the URL constructor. It’s not an explicit constructor.

&gt; Source/WTF/wtf/cf/ResourceBundleCF.cpp:74
&gt; +    auto requestedURLRef = adoptCF(CFBundleCopyResourceURL(m_bundle.get(), name.createCFString().get(), type.createCFString().get(), directory.createCFString().get()));

I think the &quot;Ref&quot; in the name of this local variable is misleading. We normally wouldn’t use that name for something of in a RetainPtr. Why not just call this requestedURL?

&gt; Source/WTF/wtf/cf/ResourceBundleCF.cpp:84
&gt; +    static constexpr size_t maxPathSize = 4096;
&gt; +    UInt8 requestedFilePath[maxPathSize];
&gt; +
&gt; +    if (!CFURLGetFileSystemRepresentation(requestedURLRef.get(), false, requestedFilePath, maxPathSize))
&gt; +        return String();
&gt; +
&gt; +    return String(requestedFilePath);

This is incorrect, and will interpret the path as Latin-1 instead of UTF-8, incorrectly handling any path with any non-ASCII characters.

Since we are returning a WTF::String and not a C string containing a file system representation, we must use CFURLCopyFileSystemPath, not CFURLGetFileSystemRepresentation.

&gt; Source/WTF/wtf/cf/ResourceBundleCF.cpp:90
&gt; +    auto bundleURL = adoptCF(CFBundleCopyResourceURL(m_bundle.get(), name.createCFString().get(), type.createCFString().get(), directory.createCFString().get()));
&gt; +    return URL(bundleURL.get());

return adoptCF(CFBundleCopyResourceURL(m_bundle.get(), name.createCFString().get(), type.createCFString().get(), directory.createCFString().get())).get();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832794</commentid>
    <comment_count>18</comment_count>
      <attachid>449666</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2022-01-21 09:29:33 -0800</bug_when>
    <thetext>Created attachment 449666
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832812</commentid>
    <comment_count>19</comment_count>
      <attachid>449666</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-21 10:56:49 -0800</bug_when>
    <thetext>Comment on attachment 449666
Patch

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

&gt; Source/WTF/wtf/ResourceBundle.cpp:64
&gt; +    auto fileName = makeString(name, &quot;.&quot;_s, type);

I suggested &apos;.&apos; rather than &quot;.&quot;_s, which will have better performance.

&gt; Source/WTF/wtf/cf/ResourceBundleCF.cpp:47
&gt; +#if PLATFORM(WIN)
&gt; +        kCFURLWindowsPathStyle,
&gt; +#else
&gt; +        kCFURLPOSIXPathStyle,
&gt; +#endif

Seems like it would be elegant to put a constant at the top of the file instead of putting it inside each function

#if PLATFORM(WIN)
constexpr auto pathStyle = kCFURLWindowsPathStyle;
#else
constexpr auto pathStyle = kCFURLPOSIXPathStyle;
#endif

Then the calls to CFURLCreateWithFileSystemPath and CFURLCopyFileSystemPath could just be normal calls that would fit fairly well in a single line.

Feel free to use a longer name if you think it would be less ambiguous, but honestly I don’t know what more to say rather than &quot;this is the path style we use here&quot;, so I think the short name would work.

&gt; Source/WTF/wtf/cf/ResourceBundleCF.cpp:75
&gt; +        return String();

Sometimes we use { } instead of String() in a line like this and I slightly prefer it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832829</commentid>
    <comment_count>20</comment_count>
      <attachid>449677</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2022-01-21 11:45:31 -0800</bug_when>
    <thetext>Created attachment 449677
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832832</commentid>
    <comment_count>21</comment_count>
      <attachid>449678</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2022-01-21 11:54:09 -0800</bug_when>
    <thetext>Created attachment 449678
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1936306</commentid>
    <comment_count>22</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2023-02-23 13:01:26 -0800</bug_when>
    <thetext>Fixed in 253925@main</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449527</attachid>
            <date>2022-01-19 15:52:18 -0800</date>
            <delta_ts>2022-01-19 20:23:54 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>bug-176236.diff</filename>
            <type>text/plain</type>
            <size>10430</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dURi93
dGYvQ01ha2VMaXN0cy50eHQKaW5kZXggY2E0MjFiYTQ1YTRkLi43NDNlMTUyNmYyNjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYvd3Rm
L0NNYWtlTGlzdHMudHh0CkBAIC0yMjQsNiArMjI0LDcgQEAgc2V0KFdURl9QVUJMSUNfSEVBREVS
UwogICAgIFJlZkNvdW50ZWRMZWFrQ291bnRlci5oCiAgICAgUmVmQ291bnRlci5oCiAgICAgUmVm
UHRyLmgKKyAgICBSZXNvdXJjZUJ1bmRsZS5oCiAgICAgUmVzb3VyY2VVc2FnZS5oCiAgICAgUmV0
YWluUHRyLmgKICAgICBSb2Jpbkhvb2RIYXNoTWFwLmgKQEAgLTQ1OSw2ICs0NjAsNyBAQCBzZXQo
V1RGX1NPVVJDRVMKICAgICBSZWFkV3JpdGVMb2NrLmNwcAogICAgIFJlZkNvdW50ZWQuY3BwCiAg
ICAgUmVmQ291bnRlZExlYWtDb3VudGVyLmNwcAorICAgIFJlc291cmNlQnVuZGxlLmNwcAogICAg
IFJ1bkxvb3AuY3BwCiAgICAgU0hBMS5jcHAKICAgICBTYWZlU3RyZXJyb3IuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdpbi5jbWFrZSBiL1NvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtV2luLmNtYWtlCmluZGV4IGNjNDNhMjFjOGVmZi4uM2IyODAzZDQ1OWY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9QbGF0Zm9ybVdpbi5jbWFrZQpAQCAtNDUsNiArNDUsNyBAQCBpZiAoVVNFX0NGKQogICAgIGxp
c3QoQVBQRU5EIFdURl9TT1VSQ0VTCiAgICAgICAgIGNmL0NGVVJMRXh0cmFzLmNwcAogICAgICAg
ICBjZi9GaWxlU3lzdGVtQ0YuY3BwCisgICAgICAgIGNmL1Jlc291cmNlQnVuZGxlQ0YuY3BwCiAg
ICAgICAgIGNmL1VSTENGLmNwcAogCiAgICAgICAgIHRleHQvY2YvQXRvbVN0cmluZ0ltcGxDRi5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1Jlc291cmNlQnVuZGxlLmNwcCBiL1NvdXJj
ZS9XVEYvd3RmL1Jlc291cmNlQnVuZGxlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAuLmQxYWE4NTc1Mjg4MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYv
d3RmL1Jlc291cmNlQnVuZGxlLmNwcApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIyIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBu
b3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSA8d3RmL1Jlc291cmNlQnVuZGxlLmg+CisKKyNpZiAhVVNFKENGKQorCisjaW5jbHVk
ZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisKK25hbWVzcGFjZSBX
VEYgeworCitSZXNvdXJjZUJ1bmRsZSogUmVzb3VyY2VCdW5kbGU6OmNyZWF0ZShTdHJpbmcgcGF0
aCkKK3sKKyAgICBpZiAoIUZpbGVTeXN0ZW06OmZpbGVFeGlzdHMocGF0aCkpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgcmV0dXJuIG5ldyBSZXNvdXJjZUJ1bmRsZShwYXRoKTsKK30K
KworUmVzb3VyY2VCdW5kbGU6OlJlc291cmNlQnVuZGxlKFN0cmluZyByb290KQorICAgIDogbV9y
b290KHJvb3QpCit7IH0KKworU3RyaW5nIFJlc291cmNlQnVuZGxlOjpyZXNvdXJjZVBhdGgoU3Ry
aW5nIG5hbWUsIFN0cmluZyB0eXBlLCBTdHJpbmcgZGlyZWN0b3J5KQoreworICAgIFN0cmluZyBm
aWxlTmFtZSA9IG5hbWUgKyAiLiJfcyArIHR5cGU7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudHMobV9yb290LCB7IGRpcmVjdG9yeSwgZmlsZU5hbWUgfSk7
Cit9CisKK1VSTCBSZXNvdXJjZUJ1bmRsZTo6cmVzb3VyY2VVUkwoU3RyaW5nIG5hbWUsIFN0cmlu
ZyB0eXBlLCBTdHJpbmcgZGlyZWN0b3J5KQoreworICAgIHJldHVybiBVUkw6OmZpbGVVUkxXaXRo
RmlsZVN5c3RlbVBhdGgocmVzb3VyY2VQYXRoKG5hbWUsIHR5cGUsIGRpcmVjdG9yeSkpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8vICFVU0UoQ0YpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9SZXNvdXJjZUJ1bmRsZS5oIGIvU291cmNlL1dURi93dGYvUmVzb3VyY2VC
dW5kbGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjI3ZTNjNjdj
ODc0NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL1Jlc291cmNlQnVuZGxlLmgK
QEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBTb255IEludGVyYWN0
aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIg
dGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAg
IGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCisj
aWYgVVNFKENGKQorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KK3R5cGVkZWYgc3RydWN0IF9f
Q0ZCdW5kbGUqIENGQnVuZGxlUmVmOworI2Vsc2UKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgUmVzb3VyY2VCdW5kbGUg
ZmluYWwgeworcHVibGljOgorICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVzb3VyY2VC
dW5kbGUqIGNyZWF0ZShTdHJpbmcpOworCisjaWYgVVNFKENGKQorICAgIGlubGluZSBvcGVyYXRv
ciBDRkJ1bmRsZVJlZigpIGNvbnN0IHsgcmV0dXJuIG1fYnVuZGxlLmdldCgpOyB9CisjZW5kaWYK
KworICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcgcmVzb3VyY2VQYXRoKFN0cmluZyBuYW1l
LCBTdHJpbmcgdHlwZSwgU3RyaW5nIGRpcmVjdG9yeSk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRF
IFVSTCByZXNvdXJjZVVSTChTdHJpbmcgbmFtZSwgU3RyaW5nIHR5cGUsIFN0cmluZyBkaXJlY3Rv
cnkpOworCitwcml2YXRlOgorI2lmIFVTRShDRikKKyAgICBSZXNvdXJjZUJ1bmRsZShDRkJ1bmRs
ZVJlZik7CisgICAgUmV0YWluUHRyPENGQnVuZGxlUmVmPiBtX2J1bmRsZTsKKyNlbHNlCisgICAg
UmVzb3VyY2VCdW5kbGUoU3RyaW5nKTsKKyAgICBTdHJpbmcgbV9yb290OworI2VuZGlmCit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01h
a2VMaXN0cy50eHQgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CmluZGV4IGEx
YTkxNDJmZmE4Yi4uOTZjOTM4Y2JmMGVlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L0NNYWtlTGlzdHMudHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQK
QEAgLTc5LDYgKzc5LDcgQEAgc2V0KFRlc3RXVEZfU09VUkNFUwogICAgIFRlc3RzL1dURi9SZWZD
b3VudGVyLmNwcAogICAgIFRlc3RzL1dURi9SZWZMb2dnZXIuY3BwCiAgICAgVGVzdHMvV1RGL1Jl
ZlB0ci5jcHAKKyAgICBUZXN0cy9XVEYvUmVzb3VyY2VCdW5kbGUuY3BwCiAgICAgVGVzdHMvV1RG
L1JvYmluSG9vZEhhc2hNYXAuY3BwCiAgICAgVGVzdHMvV1RGL1JvYmluSG9vZEhhc2hTZXQuY3Bw
CiAgICAgVGVzdHMvV1RGL1J1bkxvb3AuY3BwCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9SZXNvdXJjZUJ1bmRsZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9SZXNvdXJjZUJ1bmRsZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi45ODQ3MmMyYjNjNzMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9SZXNvdXJjZUJ1bmRsZS5jcHAKQEAgLTAsMCArMSw4MCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMiBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5j
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5j
LiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBm
cm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorCisjaW5jbHVkZSAiVGVzdC5oIgorI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVt
Lmg+CisjaW5jbHVkZSA8d3RmL1Jlc291cmNlQnVuZGxlLmg+CisjaW5jbHVkZSA8V1RGL1VSTC5o
PgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK2NsYXNzIFJlc291cmNlQnVuZGxlVGVz
dCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK3B1YmxpYzoKKyAgICB2b2lkIFNldFVwKCkgb3Zl
cnJpZGUKKyAgICB7CisgICAgICAgIC8vIENyZWF0ZSBhIHRlbXAgZGlyZWN0b3J5IHRvIG1ha2Ug
YSBidW5kbGUgaW4KKyAgICAgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRs
ZTsKKyAgICAgICAgbV9yb290ID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZpbGUoIldlYktp
dC5yZXNvdXJjZXMiLCBoYW5kbGUpOworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFu
ZGxlKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3Jvb3QpOworCisgICAgICAg
IC8vIENyZWF0ZSB0aGUgYnVuZGxlIHN0cnVjdHVyZQorICAgICAgICBGaWxlU3lzdGVtOjptYWtl
QWxsRGlyZWN0b3JpZXMoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhtX3Jv
b3QsIHsgIldlYkluc3BlY3RvclVJIiwgIlByb3RvY29sIiB9KSk7CisgICAgICAgIGF1dG8gaW5z
cGVjdG9yQmFja2VuZEZpbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShGaWxlU3lzdGVtOjpwYXRo
QnlBcHBlbmRpbmdDb21wb25lbnRzKG1fcm9vdCwgeyAiV2ViSW5zcGVjdG9yVUkiLCAiUHJvdG9j
b2wiLCAiSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzIiB9KSwgRmlsZVN5c3RlbTo6RmlsZU9w
ZW5Nb2RlOjpXcml0ZSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShpbnNwZWN0b3JC
YWNrZW5kRmlsZSk7CisgICAgfQorCisgICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCisgICAg
eworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVOb25FbXB0eURpcmVjdG9yeShtX3Jvb3QpOwor
ICAgIH0KKworcHJvdGVjdGVkOgorICAgIFN0cmluZyBtX3Jvb3Q7Cit9OworCitURVNUX0YoUmVz
b3VyY2VCdW5kbGVUZXN0LCBSZXNvdXJjZVBhdGgpCit7CisgICAgYXV0byBidW5kbGUgPSBXVEY6
OlJlc291cmNlQnVuZGxlOjpjcmVhdGUobV9yb290KTsKKyAgICBhdXRvIGFjdHVhbCA9IGJ1bmRs
ZS0+cmVzb3VyY2VQYXRoKCJJbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMiLCAianMiLCBGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoIldlYkluc3BlY3RvclVJIl9zLCAiUHJvdG9j
b2wiX3MpKTsKKyAgICBhdXRvIGV4cGVjdGVkID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50cyhtX3Jvb3QsIHsgIldlYkluc3BlY3RvclVJIiwgIlByb3RvY29sIiwgIkluc3Bl
Y3RvckJhY2tlbmRDb21tYW5kcy5qcyIgfSk7CisgICAgRVhQRUNUX1RSVUUoZXhwZWN0ZWQgPT0g
YWN0dWFsKTsKK30KKworVEVTVF9GKFJlc291cmNlQnVuZGxlVGVzdCwgUmVzb3VyY2VVUkwpCit7
CisgICAgYXV0byBidW5kbGUgPSBXVEY6OlJlc291cmNlQnVuZGxlOjpjcmVhdGUobV9yb290KTsK
KyAgICBhdXRvIGFjdHVhbCA9IGJ1bmRsZS0+cmVzb3VyY2VVUkwoIkluc3BlY3RvckJhY2tlbmRD
b21tYW5kcyIsICJqcyIsIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCgiV2Vi
SW5zcGVjdG9yVUkiX3MsICJQcm90b2NvbCJfcykpOworICAgIGF1dG8gZXhwZWN0ZWQgPSBGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKG1fcm9vdCwgeyAiV2ViSW5zcGVjdG9y
VUkiLCAiUHJvdG9jb2wiLCAiSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzIiB9KTsKKworICAg
IEVYUEVDVF9UUlVFKFVSTDo6ZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChTdHJpbmdWaWV3KGV4
cGVjdGVkKSkgPT0gYWN0dWFsKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449548</attachid>
            <date>2022-01-19 20:23:54 -0800</date>
            <delta_ts>2022-01-19 20:57:00 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>bug-176236.diff</filename>
            <type>text/plain</type>
            <size>14848</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dURi93
dGYvQ01ha2VMaXN0cy50eHQKaW5kZXggY2E0MjFiYTQ1YTRkLi43NDNlMTUyNmYyNjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYvd3Rm
L0NNYWtlTGlzdHMudHh0CkBAIC0yMjQsNiArMjI0LDcgQEAgc2V0KFdURl9QVUJMSUNfSEVBREVS
UwogICAgIFJlZkNvdW50ZWRMZWFrQ291bnRlci5oCiAgICAgUmVmQ291bnRlci5oCiAgICAgUmVm
UHRyLmgKKyAgICBSZXNvdXJjZUJ1bmRsZS5oCiAgICAgUmVzb3VyY2VVc2FnZS5oCiAgICAgUmV0
YWluUHRyLmgKICAgICBSb2Jpbkhvb2RIYXNoTWFwLmgKQEAgLTQ1OSw2ICs0NjAsNyBAQCBzZXQo
V1RGX1NPVVJDRVMKICAgICBSZWFkV3JpdGVMb2NrLmNwcAogICAgIFJlZkNvdW50ZWQuY3BwCiAg
ICAgUmVmQ291bnRlZExlYWtDb3VudGVyLmNwcAorICAgIFJlc291cmNlQnVuZGxlLmNwcAogICAg
IFJ1bkxvb3AuY3BwCiAgICAgU0hBMS5jcHAKICAgICBTYWZlU3RyZXJyb3IuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdpbi5jbWFrZSBiL1NvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtV2luLmNtYWtlCmluZGV4IGNjNDNhMjFjOGVmZi4uM2IyODAzZDQ1OWY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9QbGF0Zm9ybVdpbi5jbWFrZQpAQCAtNDUsNiArNDUsNyBAQCBpZiAoVVNFX0NGKQogICAgIGxp
c3QoQVBQRU5EIFdURl9TT1VSQ0VTCiAgICAgICAgIGNmL0NGVVJMRXh0cmFzLmNwcAogICAgICAg
ICBjZi9GaWxlU3lzdGVtQ0YuY3BwCisgICAgICAgIGNmL1Jlc291cmNlQnVuZGxlQ0YuY3BwCiAg
ICAgICAgIGNmL1VSTENGLmNwcAogCiAgICAgICAgIHRleHQvY2YvQXRvbVN0cmluZ0ltcGxDRi5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1Jlc291cmNlQnVuZGxlLmNwcCBiL1NvdXJj
ZS9XVEYvd3RmL1Jlc291cmNlQnVuZGxlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAuLjgzOTFmOWM5OTdjYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYv
d3RmL1Jlc291cmNlQnVuZGxlLmNwcApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIyIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBu
b3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSA8d3RmL1Jlc291cmNlQnVuZGxlLmg+CisKKyNpZiAhVVNFKENGKQorCisjaW5jbHVk
ZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisKK25hbWVzcGFjZSBX
VEYgeworCitzdGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VCdW5kbGU+IFJlc291cmNlQnVuZGxlOjpj
cmVhdGUoU3RyaW5nIHBhdGgpCit7CisgICAgaWYgKCFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHBh
dGgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9w
dHI8UmVzb3VyY2VCdW5kbGU+KG5ldyBSZXNvdXJjZUJ1bmRsZShwYXRoKSk7Cit9CisKK1Jlc291
cmNlQnVuZGxlOjpSZXNvdXJjZUJ1bmRsZShTdHJpbmcgcm9vdCkKKyAgICA6IG1fcm9vdChyb290
KQoreyB9CisKK1N0cmluZyBSZXNvdXJjZUJ1bmRsZTo6YnVuZGxlUGF0aCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fcm9vdDsKK30KKworVVJMIFJlc291cmNlQnVuZGxlOjpidW5kbGVVUkwoKSBj
b25zdAoreworICAgIHJldHVybiBVUkw6OmZpbGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgobV9yb290
KTsKK30KKworU3RyaW5nIFJlc291cmNlQnVuZGxlOjpyZXNvdXJjZVBhdGgoU3RyaW5nIG5hbWUs
IFN0cmluZyB0eXBlLCBTdHJpbmcgZGlyZWN0b3J5KSBjb25zdAoreworICAgIFN0cmluZyBmaWxl
TmFtZSA9IG5hbWUgKyAiLiJfcyArIHR5cGU7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudHMobV9yb290LCB7IGRpcmVjdG9yeSwgZmlsZU5hbWUgfSk7Cit9
CisKK1VSTCBSZXNvdXJjZUJ1bmRsZTo6cmVzb3VyY2VVUkwoU3RyaW5nIG5hbWUsIFN0cmluZyB0
eXBlLCBTdHJpbmcgZGlyZWN0b3J5KSBjb25zdAoreworICAgIHJldHVybiBVUkw6OmZpbGVVUkxX
aXRoRmlsZVN5c3RlbVBhdGgocmVzb3VyY2VQYXRoKG5hbWUsIHR5cGUsIGRpcmVjdG9yeSkpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8vICFVU0UoQ0YpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9SZXNvdXJjZUJ1bmRsZS5oIGIvU291cmNlL1dURi93dGYvUmVzb3Vy
Y2VCdW5kbGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmU2ZDlk
OThiMzFkMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL1Jlc291cmNlQnVuZGxl
LmgKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBTb255IEludGVy
YWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRo
ZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICog
ICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgor
CisjaWYgVVNFKENGKQorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KK3R5cGVkZWYgc3RydWN0
IF9fQ0ZCdW5kbGUqIENGQnVuZGxlUmVmOworI2Vsc2UKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgUmVzb3VyY2VCdW5k
bGUgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlc291cmNlQnVuZGxlPiBj
cmVhdGUoU3RyaW5nKTsKKworI2lmIFVTRShDRikKKyAgICBpbmxpbmUgb3BlcmF0b3IgQ0ZCdW5k
bGVSZWYoKSBjb25zdCB7IHJldHVybiBtX2J1bmRsZS5nZXQoKTsgfQorI2VuZGlmCisKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGJ1bmRsZVBhdGgoKSBjb25zdDsKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgVVJMIGJ1bmRsZVVSTCgpIGNvbnN0OworCisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIFN0cmluZyByZXNvdXJjZVBhdGgoU3RyaW5nIG5hbWUsIFN0cmluZyB0eXBlLCBTdHJpbmcg
ZGlyZWN0b3J5KSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgVVJMIHJlc291cmNlVVJM
KFN0cmluZyBuYW1lLCBTdHJpbmcgdHlwZSwgU3RyaW5nIGRpcmVjdG9yeSkgY29uc3Q7CisKK3By
aXZhdGU6CisjaWYgVVNFKENGKQorICAgIFJlc291cmNlQnVuZGxlKENGQnVuZGxlUmVmKTsKKyAg
ICBSZXRhaW5QdHI8Q0ZCdW5kbGVSZWY+IG1fYnVuZGxlOworI2Vsc2UKKyAgICBSZXNvdXJjZUJ1
bmRsZShTdHJpbmcpOworICAgIFN0cmluZyBtX3Jvb3Q7CisjZW5kaWYKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY2YvUmVzb3VyY2VCdW5kbGVD
Ri5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9jZi9SZXNvdXJjZUJ1bmRsZUNGLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjE4OGY1MTc2NTUxNAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XVEYvd3RmL2NmL1Jlc291cmNlQnVuZGxlQ0YuY3BwCkBAIC0wLDAgKzEs
OTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRh
aW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9m
IEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
CisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDx3dGYvUmVzb3VyY2VCdW5kbGUuaD4KKwor
I2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGQnVuZGxlLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgorCituYW1lc3BhY2UgV1RGIHsKKwor
c3RkOjp1bmlxdWVfcHRyPFJlc291cmNlQnVuZGxlPiBSZXNvdXJjZUJ1bmRsZTo6Y3JlYXRlKFN0
cmluZyBwYXRoKQoreworICAgIGF1dG8gdXJsID0gQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBh
dGgoCisgICAgICAgIGtDRkFsbG9jYXRvckRlZmF1bHQsCisgICAgICAgIHBhdGguY3JlYXRlQ0ZT
dHJpbmcoKS5nZXQoKSwKKyAgICAjaWYgUExBVEZPUk0oV0lOKQorICAgICAgICBrQ0ZVUkxXaW5k
b3dzUGF0aFN0eWxlLAorICAgICNlbHNlCisgICAgICAgIGtDRlVSTFBPU0lYUGF0aFN0eWxlLAor
ICAgICNlbmRpZgorICAgICAgICBmYWxzZSk7CisKKyAgICBhdXRvIGJ1bmRsZSA9IENGQnVuZGxl
Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHVybCk7CisgICAgaWYgKCFidW5kbGUpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZXNvdXJj
ZUJ1bmRsZT4obmV3IFJlc291cmNlQnVuZGxlKGJ1bmRsZSkpOworfQorCitSZXNvdXJjZUJ1bmRs
ZTo6UmVzb3VyY2VCdW5kbGUoQ0ZCdW5kbGVSZWYgYnVuZGxlKQorICAgIDogbV9idW5kbGUoYWRv
cHRDRihidW5kbGUpKQoreyB9CisKK1N0cmluZyBSZXNvdXJjZUJ1bmRsZTo6YnVuZGxlUGF0aCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGJ1bmRsZVVSTCgpLmZpbGVTeXN0ZW1QYXRoKCk7Cit9CisK
K1VSTCBSZXNvdXJjZUJ1bmRsZTo6YnVuZGxlVVJMKCkgY29uc3QKK3sKKyAgICByZXR1cm4gVVJM
KENGQnVuZGxlQ29weUJ1bmRsZVVSTChtX2J1bmRsZS5nZXQoKSkpOworfQorCitTdHJpbmcgUmVz
b3VyY2VCdW5kbGU6OnJlc291cmNlUGF0aChTdHJpbmcgbmFtZSwgU3RyaW5nIHR5cGUsIFN0cmlu
ZyBkaXJlY3RvcnkpIGNvbnN0Cit7CisgICAgUmV0YWluUHRyPENGVVJMUmVmPiByZXF1ZXN0ZWRV
UkxSZWYgPSBDRkJ1bmRsZUNvcHlSZXNvdXJjZVVSTChtX2J1bmRsZS5nZXQoKSwgbmFtZS5jcmVh
dGVDRlN0cmluZygpLmdldCgpLCB0eXBlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGRpcmVjdG9y
eS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKyAgICBpZiAoIXJlcXVlc3RlZFVSTFJlZikKKyAg
ICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbWF4
UGF0aFNpemUgPSA0MDk2OworICAgIFVJbnQ4IHJlcXVlc3RlZEZpbGVQYXRoW21heFBhdGhTaXpl
XTsKKworICAgIGlmICghQ0ZVUkxHZXRGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocmVxdWVzdGVk
VVJMUmVmLmdldCgpLCBmYWxzZSwgcmVxdWVzdGVkRmlsZVBhdGgsIG1heFBhdGhTaXplKSkKKyAg
ICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgcmV0dXJuIFN0cmluZyhyZXF1ZXN0ZWRGaWxl
UGF0aCk7Cit9CisKK1VSTCBSZXNvdXJjZUJ1bmRsZTo6cmVzb3VyY2VVUkwoU3RyaW5nIG5hbWUs
IFN0cmluZyB0eXBlLCBTdHJpbmcgZGlyZWN0b3J5KSBjb25zdAoreworICAgIHJldHVybiBVUkwo
Q0ZCdW5kbGVDb3B5UmVzb3VyY2VVUkwobV9idW5kbGUuZ2V0KCksIG5hbWUuY3JlYXRlQ0ZTdHJp
bmcoKS5nZXQoKSwgdHlwZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBkaXJlY3RvcnkuY3JlYXRl
Q0ZTdHJpbmcoKS5nZXQoKSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L0NNYWtlTGlzdHMudHh0CmluZGV4IGExYTkxNDJmZmE4Yi4uOTZjOTM4Y2JmMGVlIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKQEAgLTc5LDYgKzc5LDcgQEAgc2V0KFRlc3RXVEZfU09V
UkNFUwogICAgIFRlc3RzL1dURi9SZWZDb3VudGVyLmNwcAogICAgIFRlc3RzL1dURi9SZWZMb2dn
ZXIuY3BwCiAgICAgVGVzdHMvV1RGL1JlZlB0ci5jcHAKKyAgICBUZXN0cy9XVEYvUmVzb3VyY2VC
dW5kbGUuY3BwCiAgICAgVGVzdHMvV1RGL1JvYmluSG9vZEhhc2hNYXAuY3BwCiAgICAgVGVzdHMv
V1RGL1JvYmluSG9vZEhhc2hTZXQuY3BwCiAgICAgVGVzdHMvV1RGL1J1bkxvb3AuY3BwCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZXNvdXJjZUJ1bmRsZS5jcHAg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZXNvdXJjZUJ1bmRsZS5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wYTdlZTM4YzFiOTEKLS0tIC9kZXYv
bnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZXNvdXJjZUJ1bmRsZS5j
cHAKQEAgLTAsMCArMSw5NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBTb255IEludGVy
YWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRo
ZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICog
ICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiVGVzdC5oIgor
I2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3RmL1Jlc291cmNlQnVuZGxl
Lmg+CisjaW5jbHVkZSA8V1RGL1VSTC5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisK
K2NsYXNzIFJlc291cmNlQnVuZGxlVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK3B1Ymxp
YzoKKyAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIC8vIENyZWF0ZSBh
IHRlbXAgZGlyZWN0b3J5IHRvIG1ha2UgYSBidW5kbGUgaW4KKyAgICAgICAgRmlsZVN5c3RlbTo6
UGxhdGZvcm1GaWxlSGFuZGxlIGhhbmRsZTsKKyAgICAgICAgbV9yb290ID0gRmlsZVN5c3RlbTo6
b3BlblRlbXBvcmFyeUZpbGUoIldlYktpdC5yZXNvdXJjZXMiLCBoYW5kbGUpOworICAgICAgICBG
aWxlU3lzdGVtOjpjbG9zZUZpbGUoaGFuZGxlKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRl
RmlsZShtX3Jvb3QpOworCisgICAgICAgIC8vIENyZWF0ZSB0aGUgYnVuZGxlIHN0cnVjdHVyZQor
ICAgICAgICBGaWxlU3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoRmlsZVN5c3RlbTo6cGF0aEJ5
QXBwZW5kaW5nQ29tcG9uZW50cyhtX3Jvb3QsIHsgIldlYkluc3BlY3RvclVJIiwgIlByb3RvY29s
IiB9KSk7CisgICAgICAgIGF1dG8gaW5zcGVjdG9yQmFja2VuZEZpbGUgPSBGaWxlU3lzdGVtOjpv
cGVuRmlsZShGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKG1fcm9vdCwgeyAi
V2ViSW5zcGVjdG9yVUkiLCAiUHJvdG9jb2wiLCAiSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpz
IiB9KSwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CisgICAgICAgIEZpbGVTeXN0
ZW06OmNsb3NlRmlsZShpbnNwZWN0b3JCYWNrZW5kRmlsZSk7CisgICAgfQorCisgICAgdm9pZCBU
ZWFyRG93bigpIG92ZXJyaWRlCisgICAgeworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVOb25F
bXB0eURpcmVjdG9yeShtX3Jvb3QpOworICAgIH0KKworcHJvdGVjdGVkOgorICAgIFN0cmluZyBt
X3Jvb3Q7Cit9OworCitURVNUX0YoUmVzb3VyY2VCdW5kbGVUZXN0LCBCdW5kbGVQYXRoKQorewor
ICAgIGF1dG8gYnVuZGxlID0gV1RGOjpSZXNvdXJjZUJ1bmRsZTo6Y3JlYXRlKG1fcm9vdCk7Cisg
ICAgYXV0byBhY3R1YWwgPSBidW5kbGUtPmJ1bmRsZVBhdGgoKTsKKyAgICBFWFBFQ1RfVFJVRSht
X3Jvb3QgPT0gYWN0dWFsKTsKK30KKworVEVTVF9GKFJlc291cmNlQnVuZGxlVGVzdCwgQnVuZGxl
VVJMKQoreworICAgIGF1dG8gYnVuZGxlID0gV1RGOjpSZXNvdXJjZUJ1bmRsZTo6Y3JlYXRlKG1f
cm9vdCk7CisgICAgYXV0byBhY3R1YWwgPSBidW5kbGUtPmJ1bmRsZVVSTCgpOworICAgIEVYUEVD
VF9UUlVFKFVSTDo6ZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChTdHJpbmdWaWV3KG1fcm9vdCkp
ID09IGFjdHVhbCk7Cit9CisKK1RFU1RfRihSZXNvdXJjZUJ1bmRsZVRlc3QsIFJlc291cmNlUGF0
aCkKK3sKKyAgICBhdXRvIGJ1bmRsZSA9IFdURjo6UmVzb3VyY2VCdW5kbGU6OmNyZWF0ZShtX3Jv
b3QpOworICAgIGF1dG8gYWN0dWFsID0gYnVuZGxlLT5yZXNvdXJjZVBhdGgoIkluc3BlY3RvckJh
Y2tlbmRDb21tYW5kcyIsICJqcyIsIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dCgiV2ViSW5zcGVjdG9yVUkiX3MsICJQcm90b2NvbCJfcykpOworICAgIGF1dG8gZXhwZWN0ZWQg
PSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKG1fcm9vdCwgeyAiV2ViSW5z
cGVjdG9yVUkiLCAiUHJvdG9jb2wiLCAiSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzIiB9KTsK
KyAgICBFWFBFQ1RfVFJVRShleHBlY3RlZCA9PSBhY3R1YWwpOworfQorCitURVNUX0YoUmVzb3Vy
Y2VCdW5kbGVUZXN0LCBSZXNvdXJjZVVSTCkKK3sKKyAgICBhdXRvIGJ1bmRsZSA9IFdURjo6UmVz
b3VyY2VCdW5kbGU6OmNyZWF0ZShtX3Jvb3QpOworICAgIGF1dG8gYWN0dWFsID0gYnVuZGxlLT5y
ZXNvdXJjZVVSTCgiSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzIiwgImpzIiwgRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KCJXZWJJbnNwZWN0b3JVSSJfcywgIlByb3RvY29sIl9z
KSk7CisgICAgYXV0byBleHBlY3RlZCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBv
bmVudHMobV9yb290LCB7ICJXZWJJbnNwZWN0b3JVSSIsICJQcm90b2NvbCIsICJJbnNwZWN0b3JC
YWNrZW5kQ29tbWFuZHMuanMiIH0pOworCisgICAgRVhQRUNUX1RSVUUoVVJMOjpmaWxlVVJMV2l0
aEZpbGVTeXN0ZW1QYXRoKFN0cmluZ1ZpZXcoZXhwZWN0ZWQpKSA9PSBhY3R1YWwpOworfQorCit9
IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>
<flag name="commit-queue"
          id="475669"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449551</attachid>
            <date>2022-01-19 20:39:59 -0800</date>
            <delta_ts>2022-01-20 13:27:26 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>bug-176236.diff</filename>
            <type>text/plain</type>
            <size>14836</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dURi93
dGYvQ01ha2VMaXN0cy50eHQKaW5kZXggY2E0MjFiYTQ1YTRkLi43NDNlMTUyNmYyNjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYvd3Rm
L0NNYWtlTGlzdHMudHh0CkBAIC0yMjQsNiArMjI0LDcgQEAgc2V0KFdURl9QVUJMSUNfSEVBREVS
UwogICAgIFJlZkNvdW50ZWRMZWFrQ291bnRlci5oCiAgICAgUmVmQ291bnRlci5oCiAgICAgUmVm
UHRyLmgKKyAgICBSZXNvdXJjZUJ1bmRsZS5oCiAgICAgUmVzb3VyY2VVc2FnZS5oCiAgICAgUmV0
YWluUHRyLmgKICAgICBSb2Jpbkhvb2RIYXNoTWFwLmgKQEAgLTQ1OSw2ICs0NjAsNyBAQCBzZXQo
V1RGX1NPVVJDRVMKICAgICBSZWFkV3JpdGVMb2NrLmNwcAogICAgIFJlZkNvdW50ZWQuY3BwCiAg
ICAgUmVmQ291bnRlZExlYWtDb3VudGVyLmNwcAorICAgIFJlc291cmNlQnVuZGxlLmNwcAogICAg
IFJ1bkxvb3AuY3BwCiAgICAgU0hBMS5jcHAKICAgICBTYWZlU3RyZXJyb3IuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdpbi5jbWFrZSBiL1NvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtV2luLmNtYWtlCmluZGV4IGNjNDNhMjFjOGVmZi4uM2IyODAzZDQ1OWY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9QbGF0Zm9ybVdpbi5jbWFrZQpAQCAtNDUsNiArNDUsNyBAQCBpZiAoVVNFX0NGKQogICAgIGxp
c3QoQVBQRU5EIFdURl9TT1VSQ0VTCiAgICAgICAgIGNmL0NGVVJMRXh0cmFzLmNwcAogICAgICAg
ICBjZi9GaWxlU3lzdGVtQ0YuY3BwCisgICAgICAgIGNmL1Jlc291cmNlQnVuZGxlQ0YuY3BwCiAg
ICAgICAgIGNmL1VSTENGLmNwcAogCiAgICAgICAgIHRleHQvY2YvQXRvbVN0cmluZ0ltcGxDRi5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1Jlc291cmNlQnVuZGxlLmNwcCBiL1NvdXJj
ZS9XVEYvd3RmL1Jlc291cmNlQnVuZGxlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAuLjgzOTFmOWM5OTdjYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYv
d3RmL1Jlc291cmNlQnVuZGxlLmNwcApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIyIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBu
b3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSA8d3RmL1Jlc291cmNlQnVuZGxlLmg+CisKKyNpZiAhVVNFKENGKQorCisjaW5jbHVk
ZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvVVJMLmg+CisKK25hbWVzcGFjZSBX
VEYgeworCitzdGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VCdW5kbGU+IFJlc291cmNlQnVuZGxlOjpj
cmVhdGUoU3RyaW5nIHBhdGgpCit7CisgICAgaWYgKCFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHBh
dGgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9w
dHI8UmVzb3VyY2VCdW5kbGU+KG5ldyBSZXNvdXJjZUJ1bmRsZShwYXRoKSk7Cit9CisKK1Jlc291
cmNlQnVuZGxlOjpSZXNvdXJjZUJ1bmRsZShTdHJpbmcgcm9vdCkKKyAgICA6IG1fcm9vdChyb290
KQoreyB9CisKK1N0cmluZyBSZXNvdXJjZUJ1bmRsZTo6YnVuZGxlUGF0aCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fcm9vdDsKK30KKworVVJMIFJlc291cmNlQnVuZGxlOjpidW5kbGVVUkwoKSBj
b25zdAoreworICAgIHJldHVybiBVUkw6OmZpbGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgobV9yb290
KTsKK30KKworU3RyaW5nIFJlc291cmNlQnVuZGxlOjpyZXNvdXJjZVBhdGgoU3RyaW5nIG5hbWUs
IFN0cmluZyB0eXBlLCBTdHJpbmcgZGlyZWN0b3J5KSBjb25zdAoreworICAgIFN0cmluZyBmaWxl
TmFtZSA9IG5hbWUgKyAiLiJfcyArIHR5cGU7CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudHMobV9yb290LCB7IGRpcmVjdG9yeSwgZmlsZU5hbWUgfSk7Cit9
CisKK1VSTCBSZXNvdXJjZUJ1bmRsZTo6cmVzb3VyY2VVUkwoU3RyaW5nIG5hbWUsIFN0cmluZyB0
eXBlLCBTdHJpbmcgZGlyZWN0b3J5KSBjb25zdAoreworICAgIHJldHVybiBVUkw6OmZpbGVVUkxX
aXRoRmlsZVN5c3RlbVBhdGgocmVzb3VyY2VQYXRoKG5hbWUsIHR5cGUsIGRpcmVjdG9yeSkpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKworI2VuZGlmIC8vICFVU0UoQ0YpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9SZXNvdXJjZUJ1bmRsZS5oIGIvU291cmNlL1dURi93dGYvUmVzb3Vy
Y2VCdW5kbGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmU2ZDlk
OThiMzFkMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL1Jlc291cmNlQnVuZGxl
LmgKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBTb255IEludGVy
YWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRo
ZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICog
ICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgor
CisjaWYgVVNFKENGKQorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KK3R5cGVkZWYgc3RydWN0
IF9fQ0ZCdW5kbGUqIENGQnVuZGxlUmVmOworI2Vsc2UKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgUmVzb3VyY2VCdW5k
bGUgZmluYWwgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFdU
Rl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlc291cmNlQnVuZGxlPiBj
cmVhdGUoU3RyaW5nKTsKKworI2lmIFVTRShDRikKKyAgICBpbmxpbmUgb3BlcmF0b3IgQ0ZCdW5k
bGVSZWYoKSBjb25zdCB7IHJldHVybiBtX2J1bmRsZS5nZXQoKTsgfQorI2VuZGlmCisKKyAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGJ1bmRsZVBhdGgoKSBjb25zdDsKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgVVJMIGJ1bmRsZVVSTCgpIGNvbnN0OworCisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIFN0cmluZyByZXNvdXJjZVBhdGgoU3RyaW5nIG5hbWUsIFN0cmluZyB0eXBlLCBTdHJpbmcg
ZGlyZWN0b3J5KSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgVVJMIHJlc291cmNlVVJM
KFN0cmluZyBuYW1lLCBTdHJpbmcgdHlwZSwgU3RyaW5nIGRpcmVjdG9yeSkgY29uc3Q7CisKK3By
aXZhdGU6CisjaWYgVVNFKENGKQorICAgIFJlc291cmNlQnVuZGxlKENGQnVuZGxlUmVmKTsKKyAg
ICBSZXRhaW5QdHI8Q0ZCdW5kbGVSZWY+IG1fYnVuZGxlOworI2Vsc2UKKyAgICBSZXNvdXJjZUJ1
bmRsZShTdHJpbmcpOworICAgIFN0cmluZyBtX3Jvb3Q7CisjZW5kaWYKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY2YvUmVzb3VyY2VCdW5kbGVD
Ri5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9jZi9SZXNvdXJjZUJ1bmRsZUNGLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjdmYmZiMGQwY2NiYgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XVEYvd3RmL2NmL1Jlc291cmNlQnVuZGxlQ0YuY3BwCkBAIC0wLDAgKzEs
OTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRh
aW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9m
IEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
CisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDx3dGYvUmVzb3VyY2VCdW5kbGUuaD4KKwor
I2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGQnVuZGxlLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV1RGIHsKKwor
c3RkOjp1bmlxdWVfcHRyPFJlc291cmNlQnVuZGxlPiBSZXNvdXJjZUJ1bmRsZTo6Y3JlYXRlKFN0
cmluZyBwYXRoKQoreworICAgIGF1dG8gdXJsID0gQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBh
dGgoCisgICAgICAgIGtDRkFsbG9jYXRvckRlZmF1bHQsCisgICAgICAgIHBhdGguY3JlYXRlQ0ZT
dHJpbmcoKS5nZXQoKSwKKyNpZiBQTEFURk9STShXSU4pCisgICAgICAgIGtDRlVSTFdpbmRvd3NQ
YXRoU3R5bGUsCisjZWxzZQorICAgICAgICBrQ0ZVUkxQT1NJWFBhdGhTdHlsZSwKKyNlbmRpZgor
ICAgICAgICBmYWxzZSk7CisKKyAgICBhdXRvIGJ1bmRsZSA9IENGQnVuZGxlQ3JlYXRlKGtDRkFs
bG9jYXRvckRlZmF1bHQsIHVybCk7CisgICAgaWYgKCFidW5kbGUpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxSZXNvdXJjZUJ1bmRsZT4obmV3
IFJlc291cmNlQnVuZGxlKGJ1bmRsZSkpOworfQorCitSZXNvdXJjZUJ1bmRsZTo6UmVzb3VyY2VC
dW5kbGUoQ0ZCdW5kbGVSZWYgYnVuZGxlKQorICAgIDogbV9idW5kbGUoYWRvcHRDRihidW5kbGUp
KQoreyB9CisKK1N0cmluZyBSZXNvdXJjZUJ1bmRsZTo6YnVuZGxlUGF0aCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIGJ1bmRsZVVSTCgpLmZpbGVTeXN0ZW1QYXRoKCk7Cit9CisKK1VSTCBSZXNvdXJj
ZUJ1bmRsZTo6YnVuZGxlVVJMKCkgY29uc3QKK3sKKyAgICByZXR1cm4gVVJMKENGQnVuZGxlQ29w
eUJ1bmRsZVVSTChtX2J1bmRsZS5nZXQoKSkpOworfQorCitTdHJpbmcgUmVzb3VyY2VCdW5kbGU6
OnJlc291cmNlUGF0aChTdHJpbmcgbmFtZSwgU3RyaW5nIHR5cGUsIFN0cmluZyBkaXJlY3Rvcnkp
IGNvbnN0Cit7CisgICAgUmV0YWluUHRyPENGVVJMUmVmPiByZXF1ZXN0ZWRVUkxSZWYgPSBDRkJ1
bmRsZUNvcHlSZXNvdXJjZVVSTChtX2J1bmRsZS5nZXQoKSwgbmFtZS5jcmVhdGVDRlN0cmluZygp
LmdldCgpLCB0eXBlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGRpcmVjdG9yeS5jcmVhdGVDRlN0
cmluZygpLmdldCgpKTsKKyAgICBpZiAoIXJlcXVlc3RlZFVSTFJlZikKKyAgICAgICAgcmV0dXJu
IFN0cmluZygpOworCisgICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbWF4UGF0aFNpemUgPSA0
MDk2OworICAgIFVJbnQ4IHJlcXVlc3RlZEZpbGVQYXRoW21heFBhdGhTaXplXTsKKworICAgIGlm
ICghQ0ZVUkxHZXRGaWxlU3lzdGVtUmVwcmVzZW50YXRpb24ocmVxdWVzdGVkVVJMUmVmLmdldCgp
LCBmYWxzZSwgcmVxdWVzdGVkRmlsZVBhdGgsIG1heFBhdGhTaXplKSkKKyAgICAgICAgcmV0dXJu
IFN0cmluZygpOworCisgICAgcmV0dXJuIFN0cmluZyhyZXF1ZXN0ZWRGaWxlUGF0aCk7Cit9CisK
K1VSTCBSZXNvdXJjZUJ1bmRsZTo6cmVzb3VyY2VVUkwoU3RyaW5nIG5hbWUsIFN0cmluZyB0eXBl
LCBTdHJpbmcgZGlyZWN0b3J5KSBjb25zdAoreworICAgIHJldHVybiBVUkwoQ0ZCdW5kbGVDb3B5
UmVzb3VyY2VVUkwobV9idW5kbGUuZ2V0KCksIG5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwg
dHlwZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBkaXJlY3RvcnkuY3JlYXRlQ0ZTdHJpbmcoKS5n
ZXQoKSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMu
dHh0CmluZGV4IGExYTkxNDJmZmE4Yi4uOTZjOTM4Y2JmMGVlIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01h
a2VMaXN0cy50eHQKQEAgLTc5LDYgKzc5LDcgQEAgc2V0KFRlc3RXVEZfU09VUkNFUwogICAgIFRl
c3RzL1dURi9SZWZDb3VudGVyLmNwcAogICAgIFRlc3RzL1dURi9SZWZMb2dnZXIuY3BwCiAgICAg
VGVzdHMvV1RGL1JlZlB0ci5jcHAKKyAgICBUZXN0cy9XVEYvUmVzb3VyY2VCdW5kbGUuY3BwCiAg
ICAgVGVzdHMvV1RGL1JvYmluSG9vZEhhc2hNYXAuY3BwCiAgICAgVGVzdHMvV1RGL1JvYmluSG9v
ZEhhc2hTZXQuY3BwCiAgICAgVGVzdHMvV1RGL1J1bkxvb3AuY3BwCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZXNvdXJjZUJ1bmRsZS5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9SZXNvdXJjZUJ1bmRsZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wZGZlOGExNDdmMTYKLS0tIC9kZXYvbnVsbAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZXNvdXJjZUJ1bmRsZS5jcHAKQEAgLTAsMCAr
MSw5NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBTb255IEludGVyYWN0aXZlIEVudGVy
dGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUg
b2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiVGVzdC5oIgorI2luY2x1ZGUgPHd0
Zi9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3RmL1Jlc291cmNlQnVuZGxlLmg+CisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK2NsYXNzIFJlc291
cmNlQnVuZGxlVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK3B1YmxpYzoKKyAgICB2b2lk
IFNldFVwKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIC8vIENyZWF0ZSBhIHRlbXAgZGlyZWN0
b3J5IHRvIG1ha2UgYSBidW5kbGUgaW4KKyAgICAgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxl
SGFuZGxlIGhhbmRsZTsKKyAgICAgICAgbV9yb290ID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFy
eUZpbGUoIldlYktpdC5yZXNvdXJjZXMiLCBoYW5kbGUpOworICAgICAgICBGaWxlU3lzdGVtOjpj
bG9zZUZpbGUoaGFuZGxlKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3Jvb3Qp
OworCisgICAgICAgIC8vIENyZWF0ZSB0aGUgYnVuZGxlIHN0cnVjdHVyZQorICAgICAgICBGaWxl
U3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50cyhtX3Jvb3QsIHsgIldlYkluc3BlY3RvclVJIiwgIlByb3RvY29sIiB9KSk7CisgICAg
ICAgIGF1dG8gaW5zcGVjdG9yQmFja2VuZEZpbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKG1fcm9vdCwgeyAiV2ViSW5zcGVjdG9y
VUkiLCAiUHJvdG9jb2wiLCAiSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzIiB9KSwgRmlsZVN5
c3RlbTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmls
ZShpbnNwZWN0b3JCYWNrZW5kRmlsZSk7CisgICAgfQorCisgICAgdm9pZCBUZWFyRG93bigpIG92
ZXJyaWRlCisgICAgeworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVOb25FbXB0eURpcmVjdG9y
eShtX3Jvb3QpOworICAgIH0KKworcHJvdGVjdGVkOgorICAgIFN0cmluZyBtX3Jvb3Q7Cit9Owor
CitURVNUX0YoUmVzb3VyY2VCdW5kbGVUZXN0LCBCdW5kbGVQYXRoKQoreworICAgIGF1dG8gYnVu
ZGxlID0gV1RGOjpSZXNvdXJjZUJ1bmRsZTo6Y3JlYXRlKG1fcm9vdCk7CisgICAgYXV0byBhY3R1
YWwgPSBidW5kbGUtPmJ1bmRsZVBhdGgoKTsKKyAgICBFWFBFQ1RfVFJVRShtX3Jvb3QgPT0gYWN0
dWFsKTsKK30KKworVEVTVF9GKFJlc291cmNlQnVuZGxlVGVzdCwgQnVuZGxlVVJMKQoreworICAg
IGF1dG8gYnVuZGxlID0gV1RGOjpSZXNvdXJjZUJ1bmRsZTo6Y3JlYXRlKG1fcm9vdCk7CisgICAg
YXV0byBhY3R1YWwgPSBidW5kbGUtPmJ1bmRsZVVSTCgpOworICAgIEVYUEVDVF9UUlVFKFVSTDo6
ZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChTdHJpbmdWaWV3KG1fcm9vdCkpID09IGFjdHVhbCk7
Cit9CisKK1RFU1RfRihSZXNvdXJjZUJ1bmRsZVRlc3QsIFJlc291cmNlUGF0aCkKK3sKKyAgICBh
dXRvIGJ1bmRsZSA9IFdURjo6UmVzb3VyY2VCdW5kbGU6OmNyZWF0ZShtX3Jvb3QpOworICAgIGF1
dG8gYWN0dWFsID0gYnVuZGxlLT5yZXNvdXJjZVBhdGgoIkluc3BlY3RvckJhY2tlbmRDb21tYW5k
cyIsICJqcyIsIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCgiV2ViSW5zcGVj
dG9yVUkiX3MsICJQcm90b2NvbCJfcykpOworICAgIGF1dG8gZXhwZWN0ZWQgPSBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKG1fcm9vdCwgeyAiV2ViSW5zcGVjdG9yVUkiLCAi
UHJvdG9jb2wiLCAiSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzIiB9KTsKKyAgICBFWFBFQ1Rf
VFJVRShleHBlY3RlZCA9PSBhY3R1YWwpOworfQorCitURVNUX0YoUmVzb3VyY2VCdW5kbGVUZXN0
LCBSZXNvdXJjZVVSTCkKK3sKKyAgICBhdXRvIGJ1bmRsZSA9IFdURjo6UmVzb3VyY2VCdW5kbGU6
OmNyZWF0ZShtX3Jvb3QpOworICAgIGF1dG8gYWN0dWFsID0gYnVuZGxlLT5yZXNvdXJjZVVSTCgi
SW5zcGVjdG9yQmFja2VuZENvbW1hbmRzIiwgImpzIiwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50KCJXZWJJbnNwZWN0b3JVSSJfcywgIlByb3RvY29sIl9zKSk7CisgICAgYXV0
byBleHBlY3RlZCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMobV9yb290
LCB7ICJXZWJJbnNwZWN0b3JVSSIsICJQcm90b2NvbCIsICJJbnNwZWN0b3JCYWNrZW5kQ29tbWFu
ZHMuanMiIH0pOworCisgICAgRVhQRUNUX1RSVUUoVVJMOjpmaWxlVVJMV2l0aEZpbGVTeXN0ZW1Q
YXRoKFN0cmluZ1ZpZXcoZXhwZWN0ZWQpKSA9PSBhY3R1YWwpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJCg==
</data>
<flag name="commit-queue"
          id="475698"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449606</attachid>
            <date>2022-01-20 13:27:26 -0800</date>
            <delta_ts>2022-01-20 14:47:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176236.diff</filename>
            <type>text/plain</type>
            <size>25435</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDU4MmNhNjJmZGU2
ZS4uYWIxMWMxM2U0ZWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTEwOCwxMiArMTA4LDE0IEBACiAJCTkzQjVCNDUxMjIxNzFFRUEwMDRCN0FBNyAvKiBM
b2dnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTNCNUI0NTAyMjE3MUVFOTAwNEI3QUE3IC8qIExvZ2dlci5jcHAgKi87IH07CiAJCTkzRjE5OTNF
MTlENzk1OEQwMEMyMzkwQiAvKiBTdHJpbmdWaWV3LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjE5OTNEMTlENzk1OEQwMEMyMzkwQiAvKiBTdHJp
bmdWaWV3LmNwcCAqLzsgfTsKIAkJOUJDNzBGMDUxNzZDMzc5RDAwMTAxREVDIC8qIEF0b21TdHJp
bmdUYWJsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5QkM3MEYwNDE3NkMzNzlEMDAxMDFERUMgLyogQXRvbVN0cmluZ1RhYmxlLmNwcCAqLzsgfTsK
KwkJQTMxMEY3OUUyNzlBMEExNDAwQ0REMjU5IC8qIFJlc291cmNlQnVuZGxlQ0YuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTMxMEY3OUQyNzlBMEEx
NDAwQ0REMjU5IC8qIFJlc291cmNlQnVuZGxlQ0YuY3BwICovOyB9OwogCQlBMzJEOEZBNTIxRkZG
QUI0MDA3ODA2NjIgLyogVGhyZWFkaW5nUE9TSVguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTMyRDhGQTQyMUZGRkFCNDAwNzgwNjYyIC8qIFRocmVh
ZGluZ1BPU0lYLmNwcCAqLzsgfTsKIAkJQTMzMUQ5NUIyMUYyNDk5MjAwOUYwMkFBIC8qIEZpbGVT
eXN0ZW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTMzMUQ5NUEyMUYyNDk5MjAwOUYwMkFBIC8qIEZpbGVTeXN0ZW0uY3BwICovOyB9OwogCQlBMzMx
RDk1RDIxRjI0OUU0MDA5RjAyQUEgLyogRmlsZVN5c3RlbUNGLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzMzFEOTVDMjFGMjQ5RTQwMDlGMDJBQSAv
KiBGaWxlU3lzdGVtQ0YuY3BwICovOyB9OwogCQlBMzMxRDk1RjIxRjI0OUY2MDA5RjAyQUEgLyog
RmlsZVN5c3RlbUNvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTMzMUQ5NUUyMUYyNDlGNjAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1Db2NvYS5tbSAq
LzsgfTsKIAkJQTMzMUQ5NjEyMUYyNEEwQTAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1NYWMubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMzMxRDk2MDIxRjI0
QTBBMDA5RjAyQUEgLyogRmlsZVN5c3RlbU1hYy5tbSAqLzsgfTsKIAkJQTMzMUQ5NjcyMUYyNEFC
RDAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1QT1NJWC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMzMxRDk2NjIxRjI0QUJEMDA5RjAyQUEgLyogRmlsZVN5
c3RlbVBPU0lYLmNwcCAqLzsgfTsKKwkJQTNBOUJERkEyNzk4RERFODAwQzFERDA2IC8qIFJlc291
cmNlQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEEzQTlCREY4Mjc5OEREREYwMEMxREQwNiAvKiBSZXNvdXJjZUJ1bmRsZS5jcHAgKi87IH07
CiAJCUEzQjcyNUVDOTg3NDQ2QUQ5M0YxQTQ0MCAvKiBSYW5kb21EZXZpY2UuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzhGNTk3Q0EyQTU3NDE3RkJB
QjkyRkQ2IC8qIFJhbmRvbURldmljZS5jcHAgKi87IH07CiAJCUEzRTRERDkzMUYzQTgwMzQwMERF
RDBCNCAvKiBUZXh0U3RyZWFtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEEzRTRERDkxMUYzQTgwMzQwMERFRDBCNCAvKiBUZXh0U3RyZWFtLmNwcCAq
LzsgfTsKIAkJQTNFRTVDM0EyMUZGQUM1RjAwRkFCRDYxIC8qIE9TQWxsb2NhdG9yUE9TSVguY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTNFRTVDMzky
MUZGQUM1RTAwRkFCRDYxIC8qIE9TQWxsb2NhdG9yUE9TSVguY3BwICovOyB9OwpAQCAtNTUzLDYg
KzU1NSw3IEBACiAJCUExQjg5Qjg3MjIxRTAwMEYwMEVCNENFQSAvKiBTREtWYXJpYW50LnhjY29u
ZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IFNES1ZhcmlhbnQueGNjb25maWc7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzMEQ0MTJDMUYwREUwQkEwMEI3MTk1NCAv
KiBTb2Z0TGlua2luZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb2Z0TGlu
a2luZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMzBENDEyRDFGMERFMTNGMDBC
NzE5NTQgLyogU29mdExpbmtpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U29mdExpbmtpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTMxMEY3OUQyNzlB
MEExNDAwQ0REMjU5IC8qIFJlc291cmNlQnVuZGxlQ0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUmVzb3VyY2VCdW5kbGVDRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUEzMkQ4RkE0MjFGRkZBQjQwMDc4MDY2MiAvKiBUaHJlYWRpbmdQT1NJWC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUaHJlYWRpbmdQT1NJWC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzMzFEOTU5MjFGMjQ5OTIwMDlGMDJB
QSAvKiBGaWxlU3lzdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbGVT
eXN0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTMzMUQ5NUEyMUYyNDk5MjAw
OUYwMkFBIC8qIEZpbGVTeXN0ZW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRmlsZVN5c3RlbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NjEs
NiArNTY0LDggQEAKIAkJQTMzMUQ5NjAyMUYyNEEwQTAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1NYWMu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGaWxlU3lzdGVtTWFj
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMzMxRDk2NjIxRjI0QUJEMDA5RjAy
QUEgLyogRmlsZVN5c3RlbVBPU0lYLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEZpbGVTeXN0ZW1QT1NJWC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUEzNkUxNkY3MjE2RkY4MjgwMDhERDg3RSAvKiBXVEZTZW1hcGhvcmUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV1RGU2VtYXBob3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUEzQTlCREY4Mjc5OEREREYwMEMxREQwNiAvKiBSZXNvdXJjZUJ1bmRsZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSZXNvdXJjZUJ1bmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUEzQTlCREY5Mjc5OEREREYwMEMxREQwNiAvKiBSZXNvdXJjZUJ1bmRsZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZUJ1bmRsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBM0QyNzNCOTIxRjJFRTkxMDA4NjY5NzEgLyogTWV0YWRhdGFTUEkuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWV0YWRhdGFTUEkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTNFNEREOTExRjNBODAzNDAwREVEMEI0IC8qIFRleHRTdHJlYW0uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dFN0cmVhbS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzRTRERDkyMUYzQTgwMzQwMERFRDBCNCAvKiBU
ZXh0U3RyZWFtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRTdHJlYW0u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg4Nyw2ICs4OTIsNyBAQAogCQkJCTVD
MUYwNTkyMjE2NDM1NkIwMDM5MzAyQyAvKiBDRlVSTEV4dHJhcy5oICovLAogCQkJCUEzMzFEOTVD
MjFGMjQ5RTQwMDlGMDJBQSAvKiBGaWxlU3lzdGVtQ0YuY3BwICovLAogCQkJCUMyQkNGQzQxMUY2
MUQ2MTYwMEM5MjIyQyAvKiBMYW5ndWFnZUNGLmNwcCAqLywKKwkJCQlBMzEwRjc5RDI3OUEwQTE0
MDBDREQyNTkgLyogUmVzb3VyY2VCdW5kbGVDRi5jcHAgKi8sCiAJCQkJMkNERUQwRUUxODExNUMz
ODAwNERCQTcwIC8qIFJ1bkxvb3BDRi5jcHAgKi8sCiAJCQkJQTNFRTVDM0IyMUZGQUM3QzAwRkFC
RDYxIC8qIFNjaGVkdWxlUGFpckNGLmNwcCAqLywKIAkJCQlCQzNGRUI1RDI2N0ZDRDM0MDA1NDAw
NkEgLyogU3BhbkNGLmggKi8sCkBAIC0xMjkzLDYgKzEyOTksOCBAQAogCQkJCUE4QTQ3MzAyMTUx
QTgyNUIwMDQxMjNGRiAvKiBSZWZDb3VudGVkTGVha0NvdW50ZXIuaCAqLywKIAkJCQk4NkY0NkY1
RjFBMjg0MEVFMDBDQ0JGMjIgLyogUmVmQ291bnRlci5oICovLAogCQkJCUE4QTQ3MzAzMTUxQTgy
NUIwMDQxMjNGRiAvKiBSZWZQdHIuaCAqLywKKwkJCQlBM0E5QkRGODI3OThERERGMDBDMUREMDYg
LyogUmVzb3VyY2VCdW5kbGUuY3BwICovLAorCQkJCUEzQTlCREY5Mjc5OEREREYwMEMxREQwNiAv
KiBSZXNvdXJjZUJ1bmRsZS5oICovLAogCQkJCUZFMzg0MjM0MjMyNUNDODAwMDlERDQ0NSAvKiBS
ZXNvdXJjZVVzYWdlLmggKi8sCiAJCQkJQThBNDczMDUxNTFBODI1QjAwNDEyM0ZGIC8qIFJldGFp
blB0ci5oICovLAogCQkJCUUzQzU4M0M4MjYxMjdBREQwMEM1NzU2OCAvKiBSb2Jpbkhvb2RIYXNo
TWFwLmggKi8sCkBAIC0xODYyLDYgKzE4NzAsNyBAQAogCQkJCUEzRUU1QzQwMjFGRkFDQTIwMEZB
QkQ2MSAvKiBTY2hlZHVsZVBhaXJNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkwRjY2QjI4RTFE
Qzk3QkFCMDA0QTFEM0YgLyogU2Vjb25kcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkE2RjM4
RjIwQ0M1ODBGMDBBMDNEQ0QgLyogU2VnbWVudGVkVmVjdG9yLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCUEzQTlCREZBMjc5OERERTgwMEMxREQwNiAvKiBSZXNvdXJjZUJ1bmRsZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBOEE0NzQyMTE1MUE4MjVCMDA0MTIzRkYgLyogU0hBMS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk1MzExQkQ1MzFFQTcxQ0FEMDA1MjUyODEgLyogU2lnbmFscy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBNzQ4NzQ1MjE3QTBCREFFMDBGQTA0Q0IgLyogU2l4Q2hhcmFjdGVy
SGFzaC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTE5MDEsNiArMTkxMCw3IEBACiAJCQkJNTIxQ0M2
QjQyNEEyNzgwOTAwNDM3N0Q2IC8qIFRyYW5zbGF0ZWRQcm9jZXNzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGQTZGMzk1MjBDQ0FDRTkwMEEwM0RDRCAvKiBVbmlxdWVBcnJheS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk1Q0MwRUU3NjIxNjI5RjE5MDBBMUE4NDIgLyogVVJMLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUEzMTBGNzlFMjc5QTBBMTQwMENERDI1OSAvKiBSZXNvdXJjZUJ1bmRsZUNG
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDMUYwNTk1MjE2NDM3QjMwMDM5MzAyQyAvKiBVUkxD
Ri5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1Q0MwRUU4OTIxNjJCQzIyMDBBMUE4NDIgLyogVVJM
Q29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQk1RkFEM0FFMjIxQjk2MzY2MDBCRUUxNzggLyog
VVJMSGVscGVycy5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKaW5kZXggNDll
MGM3NjY5OTM2Li4zOGVkYTA2YjgxNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtl
TGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CkBAIC0yMjUsNiAr
MjI1LDcgQEAgc2V0KFdURl9QVUJMSUNfSEVBREVSUwogICAgIFJlZkNvdW50ZWRMZWFrQ291bnRl
ci5oCiAgICAgUmVmQ291bnRlci5oCiAgICAgUmVmUHRyLmgKKyAgICBSZXNvdXJjZUJ1bmRsZS5o
CiAgICAgUmVzb3VyY2VVc2FnZS5oCiAgICAgUmV0YWluUHRyLmgKICAgICBSb2Jpbkhvb2RIYXNo
TWFwLmgKQEAgLTQ2MCw2ICs0NjEsNyBAQCBzZXQoV1RGX1NPVVJDRVMKICAgICBSZWFkV3JpdGVM
b2NrLmNwcAogICAgIFJlZkNvdW50ZWQuY3BwCiAgICAgUmVmQ291bnRlZExlYWtDb3VudGVyLmNw
cAorICAgIFJlc291cmNlQnVuZGxlLmNwcAogICAgIFJ1bkxvb3AuY3BwCiAgICAgU0hBMS5jcHAK
ICAgICBTYWZlU3RyZXJyb3IuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bVdpbi5jbWFrZSBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtV2luLmNtYWtlCmluZGV4IGNjNDNh
MjFjOGVmZi4uM2IyODAzZDQ1OWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bVdpbi5jbWFrZQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdpbi5jbWFrZQpAQCAtNDUs
NiArNDUsNyBAQCBpZiAoVVNFX0NGKQogICAgIGxpc3QoQVBQRU5EIFdURl9TT1VSQ0VTCiAgICAg
ICAgIGNmL0NGVVJMRXh0cmFzLmNwcAogICAgICAgICBjZi9GaWxlU3lzdGVtQ0YuY3BwCisgICAg
ICAgIGNmL1Jlc291cmNlQnVuZGxlQ0YuY3BwCiAgICAgICAgIGNmL1VSTENGLmNwcAogCiAgICAg
ICAgIHRleHQvY2YvQXRvbVN0cmluZ0ltcGxDRi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL1Jlc291cmNlQnVuZGxlLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1Jlc291cmNlQnVuZGxlLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjgzOTFmOWM5OTdjYwot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL1Jlc291cmNlQnVuZGxlLmNwcApAQCAt
MCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIFNvbnkgSW50ZXJhY3RpdmUg
RW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUg
bmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRz
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8d3RmL1Jlc291cmNlQnVuZGxl
Lmg+CisKKyNpZiAhVVNFKENGKQorCisjaW5jbHVkZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KKyNpbmNs
dWRlIDx3dGYvVVJMLmg+CisKK25hbWVzcGFjZSBXVEYgeworCitzdGQ6OnVuaXF1ZV9wdHI8UmVz
b3VyY2VCdW5kbGU+IFJlc291cmNlQnVuZGxlOjpjcmVhdGUoU3RyaW5nIHBhdGgpCit7CisgICAg
aWYgKCFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHBhdGgpKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VCdW5kbGU+KG5ldyBSZXNv
dXJjZUJ1bmRsZShwYXRoKSk7Cit9CisKK1Jlc291cmNlQnVuZGxlOjpSZXNvdXJjZUJ1bmRsZShT
dHJpbmcgcm9vdCkKKyAgICA6IG1fcm9vdChyb290KQoreyB9CisKK1N0cmluZyBSZXNvdXJjZUJ1
bmRsZTo6YnVuZGxlUGF0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcm9vdDsKK30KKworVVJM
IFJlc291cmNlQnVuZGxlOjpidW5kbGVVUkwoKSBjb25zdAoreworICAgIHJldHVybiBVUkw6OmZp
bGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgobV9yb290KTsKK30KKworU3RyaW5nIFJlc291cmNlQnVu
ZGxlOjpyZXNvdXJjZVBhdGgoU3RyaW5nIG5hbWUsIFN0cmluZyB0eXBlLCBTdHJpbmcgZGlyZWN0
b3J5KSBjb25zdAoreworICAgIFN0cmluZyBmaWxlTmFtZSA9IG5hbWUgKyAiLiJfcyArIHR5cGU7
CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMobV9yb290
LCB7IGRpcmVjdG9yeSwgZmlsZU5hbWUgfSk7Cit9CisKK1VSTCBSZXNvdXJjZUJ1bmRsZTo6cmVz
b3VyY2VVUkwoU3RyaW5nIG5hbWUsIFN0cmluZyB0eXBlLCBTdHJpbmcgZGlyZWN0b3J5KSBjb25z
dAoreworICAgIHJldHVybiBVUkw6OmZpbGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgocmVzb3VyY2VQ
YXRoKG5hbWUsIHR5cGUsIGRpcmVjdG9yeSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKKwor
I2VuZGlmIC8vICFVU0UoQ0YpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9SZXNvdXJjZUJ1
bmRsZS5oIGIvU291cmNlL1dURi93dGYvUmVzb3VyY2VCdW5kbGUuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmU2ZDlkOThiMzFkMQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XVEYvd3RmL1Jlc291cmNlQnVuZGxlLmgKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMiBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAo
IkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9t
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCisjaWYgVVNFKENGKQorI2luY2x1ZGUgPHd0
Zi9SZXRhaW5QdHIuaD4KK3R5cGVkZWYgc3RydWN0IF9fQ0ZCdW5kbGUqIENGQnVuZGxlUmVmOwor
I2Vsc2UKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKyNlbmRpZgorCituYW1lc3Bh
Y2UgV1RGIHsKKworY2xhc3MgUmVzb3VyY2VCdW5kbGUgZmluYWwgeworICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgc3Rk
Ojp1bmlxdWVfcHRyPFJlc291cmNlQnVuZGxlPiBjcmVhdGUoU3RyaW5nKTsKKworI2lmIFVTRShD
RikKKyAgICBpbmxpbmUgb3BlcmF0b3IgQ0ZCdW5kbGVSZWYoKSBjb25zdCB7IHJldHVybiBtX2J1
bmRsZS5nZXQoKTsgfQorI2VuZGlmCisKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGJ1
bmRsZVBhdGgoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgVVJMIGJ1bmRsZVVSTCgp
IGNvbnN0OworCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyByZXNvdXJjZVBhdGgoU3Ry
aW5nIG5hbWUsIFN0cmluZyB0eXBlLCBTdHJpbmcgZGlyZWN0b3J5KSBjb25zdDsKKyAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgVVJMIHJlc291cmNlVVJMKFN0cmluZyBuYW1lLCBTdHJpbmcgdHlwZSwg
U3RyaW5nIGRpcmVjdG9yeSkgY29uc3Q7CisKK3ByaXZhdGU6CisjaWYgVVNFKENGKQorICAgIFJl
c291cmNlQnVuZGxlKENGQnVuZGxlUmVmKTsKKyAgICBSZXRhaW5QdHI8Q0ZCdW5kbGVSZWY+IG1f
YnVuZGxlOworI2Vsc2UKKyAgICBSZXNvdXJjZUJ1bmRsZShTdHJpbmcpOworICAgIFN0cmluZyBt
X3Jvb3Q7CisjZW5kaWYKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvY2YvUmVzb3VyY2VCdW5kbGVDRi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9jZi9S
ZXNvdXJjZUJ1bmRsZUNGLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAuLjdmYmZiMGQwY2NiYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NmL1Jl
c291cmNlQnVuZGxlQ0YuY3BwCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjIgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0
aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlIDx3dGYvUmVzb3VyY2VCdW5kbGUuaD4KKworI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NG
QnVuZGxlLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgorCituYW1lc3BhY2UgV1RGIHsKKworc3RkOjp1bmlxdWVfcHRyPFJlc291cmNlQnVu
ZGxlPiBSZXNvdXJjZUJ1bmRsZTo6Y3JlYXRlKFN0cmluZyBwYXRoKQoreworICAgIGF1dG8gdXJs
ID0gQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoCisgICAgICAgIGtDRkFsbG9jYXRvckRl
ZmF1bHQsCisgICAgICAgIHBhdGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwKKyNpZiBQTEFURk9S
TShXSU4pCisgICAgICAgIGtDRlVSTFdpbmRvd3NQYXRoU3R5bGUsCisjZWxzZQorICAgICAgICBr
Q0ZVUkxQT1NJWFBhdGhTdHlsZSwKKyNlbmRpZgorICAgICAgICBmYWxzZSk7CisKKyAgICBhdXRv
IGJ1bmRsZSA9IENGQnVuZGxlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHVybCk7CisgICAg
aWYgKCFidW5kbGUpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIHN0ZDo6
dW5pcXVlX3B0cjxSZXNvdXJjZUJ1bmRsZT4obmV3IFJlc291cmNlQnVuZGxlKGJ1bmRsZSkpOwor
fQorCitSZXNvdXJjZUJ1bmRsZTo6UmVzb3VyY2VCdW5kbGUoQ0ZCdW5kbGVSZWYgYnVuZGxlKQor
ICAgIDogbV9idW5kbGUoYWRvcHRDRihidW5kbGUpKQoreyB9CisKK1N0cmluZyBSZXNvdXJjZUJ1
bmRsZTo6YnVuZGxlUGF0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGJ1bmRsZVVSTCgpLmZpbGVT
eXN0ZW1QYXRoKCk7Cit9CisKK1VSTCBSZXNvdXJjZUJ1bmRsZTo6YnVuZGxlVVJMKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gVVJMKENGQnVuZGxlQ29weUJ1bmRsZVVSTChtX2J1bmRsZS5nZXQoKSkp
OworfQorCitTdHJpbmcgUmVzb3VyY2VCdW5kbGU6OnJlc291cmNlUGF0aChTdHJpbmcgbmFtZSwg
U3RyaW5nIHR5cGUsIFN0cmluZyBkaXJlY3RvcnkpIGNvbnN0Cit7CisgICAgUmV0YWluUHRyPENG
VVJMUmVmPiByZXF1ZXN0ZWRVUkxSZWYgPSBDRkJ1bmRsZUNvcHlSZXNvdXJjZVVSTChtX2J1bmRs
ZS5nZXQoKSwgbmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCB0eXBlLmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCksIGRpcmVjdG9yeS5jcmVhdGVDRlN0cmluZygpLmdldCgpKTsKKyAgICBpZiAoIXJl
cXVlc3RlZFVSTFJlZikKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgc3RhdGljIGNv
bnN0ZXhwciBzaXplX3QgbWF4UGF0aFNpemUgPSA0MDk2OworICAgIFVJbnQ4IHJlcXVlc3RlZEZp
bGVQYXRoW21heFBhdGhTaXplXTsKKworICAgIGlmICghQ0ZVUkxHZXRGaWxlU3lzdGVtUmVwcmVz
ZW50YXRpb24ocmVxdWVzdGVkVVJMUmVmLmdldCgpLCBmYWxzZSwgcmVxdWVzdGVkRmlsZVBhdGgs
IG1heFBhdGhTaXplKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgcmV0dXJuIFN0
cmluZyhyZXF1ZXN0ZWRGaWxlUGF0aCk7Cit9CisKK1VSTCBSZXNvdXJjZUJ1bmRsZTo6cmVzb3Vy
Y2VVUkwoU3RyaW5nIG5hbWUsIFN0cmluZyB0eXBlLCBTdHJpbmcgZGlyZWN0b3J5KSBjb25zdAor
eworICAgIHJldHVybiBVUkwoQ0ZCdW5kbGVDb3B5UmVzb3VyY2VVUkwobV9idW5kbGUuZ2V0KCks
IG5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgdHlwZS5jcmVhdGVDRlN0cmluZygpLmdldCgp
LCBkaXJlY3RvcnkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXVEYKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQgYi9U
b29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CmluZGV4IGExYTkxNDJmZmE4Yi4uOTZj
OTM4Y2JmMGVlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKQEAgLTc5LDYgKzc5LDcg
QEAgc2V0KFRlc3RXVEZfU09VUkNFUwogICAgIFRlc3RzL1dURi9SZWZDb3VudGVyLmNwcAogICAg
IFRlc3RzL1dURi9SZWZMb2dnZXIuY3BwCiAgICAgVGVzdHMvV1RGL1JlZlB0ci5jcHAKKyAgICBU
ZXN0cy9XVEYvUmVzb3VyY2VCdW5kbGUuY3BwCiAgICAgVGVzdHMvV1RGL1JvYmluSG9vZEhhc2hN
YXAuY3BwCiAgICAgVGVzdHMvV1RGL1JvYmluSG9vZEhhc2hTZXQuY3BwCiAgICAgVGVzdHMvV1RG
L1J1bkxvb3AuY3BwCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDVhNTBkZmIyZjAyNS4uMDhj
ZmU1MDFkYTE2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODMyLDYgKzgzMiw3IEBACiAJ
CUExRkI1MDQzMjJBMjEzQTMwMEQ0RDk3OSAvKiBhcHBsZS1wYXktY2FuLW1ha2UtcGF5bWVudC5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExRkI1MDQyMjJBMjEzOEYwMEQ0RDk3OSAvKiBhcHBsZS1wYXktY2FuLW1ha2UtcGF5bWVudC5o
dG1sICovOyB9OwogCQlBMUZCNTA0NTIyQTIxNTcxMDBENEQ5NzkgLyogYXBwbGUtcGF5LmpzIGlu
IENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRkI1
MDQ0MjJBMjE1NEIwMEQ0RDk3OSAvKiBhcHBsZS1wYXkuanMgKi87IH07CiAJCUEzMTA4MjcyMjFG
Mjk2RkYwMEMyOEI5NyAvKiBGaWxlU3lzdGVtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzMTA4MjcxMjFGMjk2RUMwMEMyOEI5NyAvKiBGaWxlU3lz
dGVtLmNwcCAqLzsgfTsKKwkJQTNBOUJERkMyNzk4REUyRDAwQzFERDA2IC8qIFJlc291cmNlQnVu
ZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEz
QTlCREZCMjc5OERFMkQwMEMxREQwNiAvKiBSZXNvdXJjZUJ1bmRsZS5jcHAgKi87IH07CiAJCUE1
N0EzNEYyMTZBRjZCMkIwMEMyNTAxRiAvKiBQYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRvd0No
YW5nZXMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNTdBMzRGMTE2QUY2OUUyMDBDMjUwMUYgLyogUGFnZVZpc2liaWxpdHlTdGF0ZVdp
dGhXaW5kb3dDaGFuZ2VzLmh0bWwgKi87IH07CiAJCUE1N0Q1NEYzMUYzMzhDMzYwMEE5N0FBNyAv
KiBOZXZlckRlc3Ryb3llZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNTdENTRGMjFGMzM4QzM2MDBBOTdBQTcgLyogTmV2ZXJEZXN0cm95ZWQuY3Bw
ICovOyB9OwogCQlBNTdENTRGNjFGMzM5NUQwMDBBOTdBQTcgLyogTG9nZ2VyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1N0Q1NEY0MUYzMzk1RDAw
MEE5N0FBNyAvKiBMb2dnZXIuY3BwICovOyB9OwpAQCAtMjY1Myw2ICsyNjU0LDcgQEAKIAkJQTFG
QjUwNDQyMkEyMTU0QjAwRDREOTc5IC8qIGFwcGxlLXBheS5qcyAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0
aCA9ICJhcHBsZS1wYXkuanMiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMUZERkQy
RTE5QzI4OEJCMDA1MTQ4QTQgLyogV0tJbWFnZUNyZWF0ZUNHSW1hZ2VDcmFzaC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS0ltYWdlQ3JlYXRlQ0dJbWFnZUNyYXNo
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTMxMDgyNzEyMUYyOTZFQzAwQzI4
Qjk3IC8qIEZpbGVTeXN0ZW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRmlsZVN5c3RlbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEzQTlCREZC
Mjc5OERFMkQwMEMxREQwNiAvKiBSZXNvdXJjZUJ1bmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBSZXNvdXJjZUJ1bmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUE1N0EzNEVGMTZBRjY3NzIwMEMyNTAxRiAvKiBQYWdlVmlzaWJpbGl0eVN0
YXRlV2l0aFdpbmRvd0NoYW5nZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBQYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXMubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1N0EzNEYxMTZBRjY5RTIwMEMyNTAxRiAvKiBQYWdlVmlz
aWJpbGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXMuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsg
cGF0aCA9IFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5odG1sOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBNTdENTRGMjFGMzM4QzM2MDBBOTdBQTcgLyogTmV2ZXJE
ZXN0cm95ZWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV2ZXJEZXN0cm95ZWQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDU3NCw2ICs0NTc2LDcgQEAKIAkJCQk0NDJCQkY2
ODFDOTFDQUQ5MDAxNzA4N0YgLyogUmVmTG9nZ2VyLmNwcCAqLywKIAkJCQk5M0E0MjdBRDE4MERB
NjBGMDBDRDI0RDcgLyogUmVmTG9nZ2VyLmggKi8sCiAJCQkJOTNBNDI3QTgxODBEOUIwNzAwQ0Qy
NEQ3IC8qIFJlZlB0ci5jcHAgKi8sCisJCQkJQTNBOUJERkIyNzk4REUyRDAwQzFERDA2IC8qIFJl
c291cmNlQnVuZGxlLmNwcCAqLywKIAkJCQlFMzU1QTYzMTI2MTU3MThGMDAxQzExMjkgLyogUm9i
aW5Ib29kSGFzaE1hcC5jcHAgKi8sCiAJCQkJRTM1NUE2MkYyNjE1NzE3NDAwMUMxMTI5IC8qIFJv
YmluSG9vZEhhc2hTZXQuY3BwICovLAogCQkJCUU0QzlBQkM3MUIzREIxNzEwMDQwQTk4NyAvKiBS
dW5Mb29wLmNwcCAqLywKQEAgLTUzNTEsNiArNTM1NCw3IEBACiAJCQkJN0M4M0RGMDIxRDBBNTkw
QzAwRkVCQ0YzIC8qIE9TT2JqZWN0UHRyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ0NDQ5REMy
MjcxOEI0QjcwMEU4MjFCNSAvKiBPU09iamVjdFB0ckNvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNDQ0NDlEQzEyNzE4QjRCNzAwRTgyMUI1IC8qIE9TT2JqZWN0UHRyQ29jb2FBUkMubW0gaW4g
U291cmNlcyAqLywKKwkJCQlBM0E5QkRGQzI3OThERTJEMDBDMUREMDYgLyogUmVzb3VyY2VCdW5k
bGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTMyQjU0OTIyMjgxMEFDNDAwOEFENzAyIC8qIFBh
Y2tlZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMzhENjVDQTIzQTQ1RkFBMDA2M0Q2OUEgLyog
UGFja2VkUmVmLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUzOEQ2NUNCMjNBNDVGQUEwMDYzRDY5
QSAvKiBQYWNrZWRSZWZQdHIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZXNvdXJjZUJ1bmRsZS5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9SZXNvdXJjZUJ1bmRsZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwLi4wZGZlOGExNDdmMTYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZXNvdXJjZUJ1bmRsZS5jcHAKQEAgLTAsMCArMSw5
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBTb255IEludGVyYWN0aXZlIEVudGVydGFp
bm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2Yg
QXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQK
KyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiVGVzdC5oIgorI2luY2x1ZGUgPHd0Zi9G
aWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3RmL1Jlc291cmNlQnVuZGxlLmg+CisjaW5jbHVkZSA8
d3RmL1VSTC5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK2NsYXNzIFJlc291cmNl
QnVuZGxlVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK3B1YmxpYzoKKyAgICB2b2lkIFNl
dFVwKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIC8vIENyZWF0ZSBhIHRlbXAgZGlyZWN0b3J5
IHRvIG1ha2UgYSBidW5kbGUgaW4KKyAgICAgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFu
ZGxlIGhhbmRsZTsKKyAgICAgICAgbV9yb290ID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFyeUZp
bGUoIldlYktpdC5yZXNvdXJjZXMiLCBoYW5kbGUpOworICAgICAgICBGaWxlU3lzdGVtOjpjbG9z
ZUZpbGUoaGFuZGxlKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3Jvb3QpOwor
CisgICAgICAgIC8vIENyZWF0ZSB0aGUgYnVuZGxlIHN0cnVjdHVyZQorICAgICAgICBGaWxlU3lz
dGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9u
ZW50cyhtX3Jvb3QsIHsgIldlYkluc3BlY3RvclVJIiwgIlByb3RvY29sIiB9KSk7CisgICAgICAg
IGF1dG8gaW5zcGVjdG9yQmFja2VuZEZpbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKG1fcm9vdCwgeyAiV2ViSW5zcGVjdG9yVUki
LCAiUHJvdG9jb2wiLCAiSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzIiB9KSwgRmlsZVN5c3Rl
bTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmlsZShp
bnNwZWN0b3JCYWNrZW5kRmlsZSk7CisgICAgfQorCisgICAgdm9pZCBUZWFyRG93bigpIG92ZXJy
aWRlCisgICAgeworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVOb25FbXB0eURpcmVjdG9yeSht
X3Jvb3QpOworICAgIH0KKworcHJvdGVjdGVkOgorICAgIFN0cmluZyBtX3Jvb3Q7Cit9OworCitU
RVNUX0YoUmVzb3VyY2VCdW5kbGVUZXN0LCBCdW5kbGVQYXRoKQoreworICAgIGF1dG8gYnVuZGxl
ID0gV1RGOjpSZXNvdXJjZUJ1bmRsZTo6Y3JlYXRlKG1fcm9vdCk7CisgICAgYXV0byBhY3R1YWwg
PSBidW5kbGUtPmJ1bmRsZVBhdGgoKTsKKyAgICBFWFBFQ1RfVFJVRShtX3Jvb3QgPT0gYWN0dWFs
KTsKK30KKworVEVTVF9GKFJlc291cmNlQnVuZGxlVGVzdCwgQnVuZGxlVVJMKQoreworICAgIGF1
dG8gYnVuZGxlID0gV1RGOjpSZXNvdXJjZUJ1bmRsZTo6Y3JlYXRlKG1fcm9vdCk7CisgICAgYXV0
byBhY3R1YWwgPSBidW5kbGUtPmJ1bmRsZVVSTCgpOworICAgIEVYUEVDVF9UUlVFKFVSTDo6Zmls
ZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChTdHJpbmdWaWV3KG1fcm9vdCkpID09IGFjdHVhbCk7Cit9
CisKK1RFU1RfRihSZXNvdXJjZUJ1bmRsZVRlc3QsIFJlc291cmNlUGF0aCkKK3sKKyAgICBhdXRv
IGJ1bmRsZSA9IFdURjo6UmVzb3VyY2VCdW5kbGU6OmNyZWF0ZShtX3Jvb3QpOworICAgIGF1dG8g
YWN0dWFsID0gYnVuZGxlLT5yZXNvdXJjZVBhdGgoIkluc3BlY3RvckJhY2tlbmRDb21tYW5kcyIs
ICJqcyIsIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCgiV2ViSW5zcGVjdG9y
VUkiX3MsICJQcm90b2NvbCJfcykpOworICAgIGF1dG8gZXhwZWN0ZWQgPSBGaWxlU3lzdGVtOjpw
YXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKG1fcm9vdCwgeyAiV2ViSW5zcGVjdG9yVUkiLCAiUHJv
dG9jb2wiLCAiSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzIiB9KTsKKyAgICBFWFBFQ1RfVFJV
RShleHBlY3RlZCA9PSBhY3R1YWwpOworfQorCitURVNUX0YoUmVzb3VyY2VCdW5kbGVUZXN0LCBS
ZXNvdXJjZVVSTCkKK3sKKyAgICBhdXRvIGJ1bmRsZSA9IFdURjo6UmVzb3VyY2VCdW5kbGU6OmNy
ZWF0ZShtX3Jvb3QpOworICAgIGF1dG8gYWN0dWFsID0gYnVuZGxlLT5yZXNvdXJjZVVSTCgiSW5z
cGVjdG9yQmFja2VuZENvbW1hbmRzIiwgImpzIiwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KCJXZWJJbnNwZWN0b3JVSSJfcywgIlByb3RvY29sIl9zKSk7CisgICAgYXV0byBl
eHBlY3RlZCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMobV9yb290LCB7
ICJXZWJJbnNwZWN0b3JVSSIsICJQcm90b2NvbCIsICJJbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMu
anMiIH0pOworCisgICAgRVhQRUNUX1RSVUUoVVJMOjpmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRo
KFN0cmluZ1ZpZXcoZXhwZWN0ZWQpKSA9PSBhY3R1YWwpOworfQorCit9IC8vIG5hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJCg==
</data>
<flag name="review"
          id="475738"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449612</attachid>
            <date>2022-01-20 14:47:01 -0800</date>
            <delta_ts>2022-01-21 08:25:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176236.diff</filename>
            <type>text/plain</type>
            <size>27714</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggZTY1ZDFjN2EyMjgxLi43YTIyODg5MDI4OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIw
MjItMDEtMjAgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KKworICAgICAg
ICBBZGQgYSBSZXNvdXJjZUJ1bmRsZSBhYnN0cmFjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2MjM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
WXVzdWtlIFN1enVraS4KKworICAgICAgICBBZGRzIGFuIGFic3RyYWN0aW9uIG92ZXIgYSBDRkJ1
bmRsZS4gSWYgQ29yZUZvdW5kYXRpb24gaXNuJ3QgYXZhaWxhYmxlIHRoZW4gaXQgZW11bGF0ZXMK
KyAgICAgICAgQ0ZCdW5kbGUncyBiZWhhdmlvciB1c2luZyBGaWxlU3lzdGVtIEFQSXMuCisKKyAg
ICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogd3RmL1BsYXRmb3JtV2luLmNtYWtlOgorICAgICAgICAq
IHd0Zi9SZXNvdXJjZUJ1bmRsZS5jcHA6IEFkZGVkLgorICAgICAgICAoV1RGOjpSZXNvdXJjZUJ1
bmRsZTo6Y3JlYXRlKToKKyAgICAgICAgKFdURjo6UmVzb3VyY2VCdW5kbGU6OlJlc291cmNlQnVu
ZGxlKToKKyAgICAgICAgKFdURjo6UmVzb3VyY2VCdW5kbGU6OmJ1bmRsZVBhdGggY29uc3QpOgor
ICAgICAgICAoV1RGOjpSZXNvdXJjZUJ1bmRsZTo6YnVuZGxlVVJMIGNvbnN0KToKKyAgICAgICAg
KFdURjo6UmVzb3VyY2VCdW5kbGU6OnJlc291cmNlUGF0aCBjb25zdCk6CisgICAgICAgIChXVEY6
OlJlc291cmNlQnVuZGxlOjpyZXNvdXJjZVVSTCBjb25zdCk6CisgICAgICAgICogd3RmL1Jlc291
cmNlQnVuZGxlLmg6IEFkZGVkLgorICAgICAgICAqIHd0Zi9jZi9SZXNvdXJjZUJ1bmRsZUNGLmNw
cDogQWRkZWQuCisgICAgICAgIChXVEY6OlJlc291cmNlQnVuZGxlOjpjcmVhdGUpOgorICAgICAg
ICAoV1RGOjpSZXNvdXJjZUJ1bmRsZTo6UmVzb3VyY2VCdW5kbGUpOgorICAgICAgICAoV1RGOjpS
ZXNvdXJjZUJ1bmRsZTo6YnVuZGxlUGF0aCBjb25zdCk6CisgICAgICAgIChXVEY6OlJlc291cmNl
QnVuZGxlOjpidW5kbGVVUkwgY29uc3QpOgorICAgICAgICAoV1RGOjpSZXNvdXJjZUJ1bmRsZTo6
cmVzb3VyY2VQYXRoIGNvbnN0KToKKyAgICAgICAgKFdURjo6UmVzb3VyY2VCdW5kbGU6OnJlc291
cmNlVVJMIGNvbnN0KToKKwogMjAyMi0wMS0xOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBw
bGUuY29tPgogCiAgICAgICAgIFtKU0NdIEltcGxlbWVudCBUZW1wb3JhbC5Ob3cuaW5zdGFudCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1ODJjYTYyZmRl
NmUuLmFiMTFjMTNlNGVmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xMDgsMTIgKzEwOCwxNCBAQAogCQk5M0I1QjQ1MTIyMTcxRUVBMDA0QjdBQTcgLyog
TG9nZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkzQjVCNDUwMjIxNzFFRTkwMDRCN0FBNyAvKiBMb2dnZXIuY3BwICovOyB9OwogCQk5M0YxOTkz
RTE5RDc5NThEMDBDMjM5MEIgLyogU3RyaW5nVmlldy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0YxOTkzRDE5RDc5NThEMDBDMjM5MEIgLyogU3Ry
aW5nVmlldy5jcHAgKi87IH07CiAJCTlCQzcwRjA1MTc2QzM3OUQwMDEwMURFQyAvKiBBdG9tU3Ry
aW5nVGFibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOUJDNzBGMDQxNzZDMzc5RDAwMTAxREVDIC8qIEF0b21TdHJpbmdUYWJsZS5jcHAgKi87IH07
CisJCUEzMTBGNzlFMjc5QTBBMTQwMENERDI1OSAvKiBSZXNvdXJjZUJ1bmRsZUNGLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzMTBGNzlEMjc5QTBB
MTQwMENERDI1OSAvKiBSZXNvdXJjZUJ1bmRsZUNGLmNwcCAqLzsgfTsKIAkJQTMyRDhGQTUyMUZG
RkFCNDAwNzgwNjYyIC8qIFRocmVhZGluZ1BPU0lYLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzMkQ4RkE0MjFGRkZBQjQwMDc4MDY2MiAvKiBUaHJl
YWRpbmdQT1NJWC5jcHAgKi87IH07CiAJCUEzMzFEOTVCMjFGMjQ5OTIwMDlGMDJBQSAvKiBGaWxl
U3lzdGVtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEEzMzFEOTVBMjFGMjQ5OTIwMDlGMDJBQSAvKiBGaWxlU3lzdGVtLmNwcCAqLzsgfTsKIAkJQTMz
MUQ5NUQyMUYyNDlFNDAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1DRi5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMzMxRDk1QzIxRjI0OUU0MDA5RjAyQUEg
LyogRmlsZVN5c3RlbUNGLmNwcCAqLzsgfTsKIAkJQTMzMUQ5NUYyMUYyNDlGNjAwOUYwMkFBIC8q
IEZpbGVTeXN0ZW1Db2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEEzMzFEOTVFMjFGMjQ5RjYwMDlGMDJBQSAvKiBGaWxlU3lzdGVtQ29jb2EubW0g
Ki87IH07CiAJCUEzMzFEOTYxMjFGMjRBMEEwMDlGMDJBQSAvKiBGaWxlU3lzdGVtTWFjLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTMzMUQ5NjAyMUYy
NEEwQTAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1NYWMubW0gKi87IH07CiAJCUEzMzFEOTY3MjFGMjRB
QkQwMDlGMDJBQSAvKiBGaWxlU3lzdGVtUE9TSVguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTMzMUQ5NjYyMUYyNEFCRDAwOUYwMkFBIC8qIEZpbGVT
eXN0ZW1QT1NJWC5jcHAgKi87IH07CisJCUEzQTlCREZBMjc5OERERTgwMEMxREQwNiAvKiBSZXNv
dXJjZUJ1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBM0E5QkRGODI3OThERERGMDBDMUREMDYgLyogUmVzb3VyY2VCdW5kbGUuY3BwICovOyB9
OwogCQlBM0I3MjVFQzk4NzQ0NkFEOTNGMUE0NDAgLyogUmFuZG9tRGV2aWNlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM4RjU5N0NBMkE1NzQxN0ZC
QUI5MkZENiAvKiBSYW5kb21EZXZpY2UuY3BwICovOyB9OwogCQlBM0U0REQ5MzFGM0E4MDM0MDBE
RUQwQjQgLyogVGV4dFN0cmVhbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBM0U0REQ5MTFGM0E4MDM0MDBERUQwQjQgLyogVGV4dFN0cmVhbS5jcHAg
Ki87IH07CiAJCUEzRUU1QzNBMjFGRkFDNUYwMEZBQkQ2MSAvKiBPU0FsbG9jYXRvclBPU0lYLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzRUU1QzM5
MjFGRkFDNUUwMEZBQkQ2MSAvKiBPU0FsbG9jYXRvclBPU0lYLmNwcCAqLzsgfTsKQEAgLTU1Myw2
ICs1NTUsNyBAQAogCQlBMUI4OUI4NzIyMUUwMDBGMDBFQjRDRUEgLyogU0RLVmFyaWFudC54Y2Nv
bmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBTREtWYXJpYW50LnhjY29uZmln
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMzBENDEyQzFGMERFMEJBMDBCNzE5NTQg
LyogU29mdExpbmtpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU29mdExp
bmtpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTMwRDQxMkQxRjBERTEzRjAw
QjcxOTU0IC8qIFNvZnRMaW5raW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNvZnRMaW5raW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEzMTBGNzlEMjc5
QTBBMTQwMENERDI1OSAvKiBSZXNvdXJjZUJ1bmRsZUNGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291cmNlQnVuZGxlQ0YuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBMzJEOEZBNDIxRkZGQUI0MDA3ODA2NjIgLyogVGhyZWFkaW5nUE9TSVgu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGhyZWFkaW5nUE9TSVgu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMzMxRDk1OTIxRjI0OTkyMDA5RjAy
QUEgLyogRmlsZVN5c3RlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaWxl
U3lzdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzMzFEOTVBMjFGMjQ5OTIw
MDlGMDJBQSAvKiBGaWxlU3lzdGVtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEZpbGVTeXN0ZW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTYx
LDYgKzU2NCw4IEBACiAJCUEzMzFEOTYwMjFGMjRBMEEwMDlGMDJBQSAvKiBGaWxlU3lzdGVtTWFj
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRmlsZVN5c3RlbU1h
Yy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTMzMUQ5NjYyMUYyNEFCRDAwOUYw
MkFBIC8qIEZpbGVTeXN0ZW1QT1NJWC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBGaWxlU3lzdGVtUE9TSVguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBMzZFMTZGNzIxNkZGODI4MDA4REQ4N0UgLyogV1RGU2VtYXBob3JlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdURlNlbWFwaG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBM0E5QkRGODI3OThERERGMDBDMUREMDYgLyogUmVzb3VyY2VCdW5kbGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUmVzb3VyY2VCdW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBM0E5QkRGOTI3OThERERGMDBDMUREMDYgLyogUmVzb3VyY2VCdW5kbGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VCdW5kbGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTNEMjczQjkyMUYyRUU5MTAwODY2OTcxIC8qIE1ldGFkYXRhU1BJLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1ldGFkYXRhU1BJLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUEzRTRERDkxMUYzQTgwMzQwMERFRDBCNCAvKiBUZXh0U3RyZWFtLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHRTdHJlYW0uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBM0U0REQ5MjFGM0E4MDM0MDBERUQwQjQgLyog
VGV4dFN0cmVhbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0U3RyZWFt
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04ODcsNiArODkyLDcgQEAKIAkJCQk1
QzFGMDU5MjIxNjQzNTZCMDAzOTMwMkMgLyogQ0ZVUkxFeHRyYXMuaCAqLywKIAkJCQlBMzMxRDk1
QzIxRjI0OUU0MDA5RjAyQUEgLyogRmlsZVN5c3RlbUNGLmNwcCAqLywKIAkJCQlDMkJDRkM0MTFG
NjFENjE2MDBDOTIyMkMgLyogTGFuZ3VhZ2VDRi5jcHAgKi8sCisJCQkJQTMxMEY3OUQyNzlBMEEx
NDAwQ0REMjU5IC8qIFJlc291cmNlQnVuZGxlQ0YuY3BwICovLAogCQkJCTJDREVEMEVFMTgxMTVD
MzgwMDREQkE3MCAvKiBSdW5Mb29wQ0YuY3BwICovLAogCQkJCUEzRUU1QzNCMjFGRkFDN0MwMEZB
QkQ2MSAvKiBTY2hlZHVsZVBhaXJDRi5jcHAgKi8sCiAJCQkJQkMzRkVCNUQyNjdGQ0QzNDAwNTQw
MDZBIC8qIFNwYW5DRi5oICovLApAQCAtMTI5Myw2ICsxMjk5LDggQEAKIAkJCQlBOEE0NzMwMjE1
MUE4MjVCMDA0MTIzRkYgLyogUmVmQ291bnRlZExlYWtDb3VudGVyLmggKi8sCiAJCQkJODZGNDZG
NUYxQTI4NDBFRTAwQ0NCRjIyIC8qIFJlZkNvdW50ZXIuaCAqLywKIAkJCQlBOEE0NzMwMzE1MUE4
MjVCMDA0MTIzRkYgLyogUmVmUHRyLmggKi8sCisJCQkJQTNBOUJERjgyNzk4RERERjAwQzFERDA2
IC8qIFJlc291cmNlQnVuZGxlLmNwcCAqLywKKwkJCQlBM0E5QkRGOTI3OThERERGMDBDMUREMDYg
LyogUmVzb3VyY2VCdW5kbGUuaCAqLywKIAkJCQlGRTM4NDIzNDIzMjVDQzgwMDA5REQ0NDUgLyog
UmVzb3VyY2VVc2FnZS5oICovLAogCQkJCUE4QTQ3MzA1MTUxQTgyNUIwMDQxMjNGRiAvKiBSZXRh
aW5QdHIuaCAqLywKIAkJCQlFM0M1ODNDODI2MTI3QUREMDBDNTc1NjggLyogUm9iaW5Ib29kSGFz
aE1hcC5oICovLApAQCAtMTg2Miw2ICsxODcwLDcgQEAKIAkJCQlBM0VFNUM0MDIxRkZBQ0EyMDBG
QUJENjEgLyogU2NoZWR1bGVQYWlyTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY2NkIyOEUx
REM5N0JBQjAwNEExRDNGIC8qIFNlY29uZHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZBNkYz
OEYyMENDNTgwRjAwQTAzRENEIC8qIFNlZ21lbnRlZFZlY3Rvci5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlBM0E5QkRGQTI3OThEREU4MDBDMUREMDYgLyogUmVzb3VyY2VCdW5kbGUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQThBNDc0MjExNTFBODI1QjAwNDEyM0ZGIC8qIFNIQTEuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTMxMUJENTMxRUE3MUNBRDAwNTI1MjgxIC8qIFNpZ25hbHMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTc0ODc0NTIxN0EwQkRBRTAwRkEwNENCIC8qIFNpeENoYXJhY3Rl
ckhhc2guY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xOTAxLDYgKzE5MTAsNyBAQAogCQkJCTUyMUND
NkI0MjRBMjc4MDkwMDQzNzdENiAvKiBUcmFuc2xhdGVkUHJvY2Vzcy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRkE2RjM5NTIwQ0NBQ0U5MDBBMDNEQ0QgLyogVW5pcXVlQXJyYXkuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNUNDMEVFNzYyMTYyOUYxOTAwQTFBODQyIC8qIFVSTC5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlBMzEwRjc5RTI3OUEwQTE0MDBDREQyNTkgLyogUmVzb3VyY2VCdW5kbGVD
Ri5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzFGMDU5NTIxNjQzN0IzMDAzOTMwMkMgLyogVVJM
Q0YuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNDMEVFODkyMTYyQkMyMjAwQTFBODQyIC8qIFVS
TENvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUZBRDNBRTIyMUI5NjM2NjAwQkVFMTc4IC8q
IFVSTEhlbHBlcnMuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IDQ5
ZTBjNzY2OTkzNi4uMzhlZGEwNmI4MTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DTWFr
ZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dApAQCAtMjI1LDYg
KzIyNSw3IEBAIHNldChXVEZfUFVCTElDX0hFQURFUlMKICAgICBSZWZDb3VudGVkTGVha0NvdW50
ZXIuaAogICAgIFJlZkNvdW50ZXIuaAogICAgIFJlZlB0ci5oCisgICAgUmVzb3VyY2VCdW5kbGUu
aAogICAgIFJlc291cmNlVXNhZ2UuaAogICAgIFJldGFpblB0ci5oCiAgICAgUm9iaW5Ib29kSGFz
aE1hcC5oCkBAIC00NjAsNiArNDYxLDcgQEAgc2V0KFdURl9TT1VSQ0VTCiAgICAgUmVhZFdyaXRl
TG9jay5jcHAKICAgICBSZWZDb3VudGVkLmNwcAogICAgIFJlZkNvdW50ZWRMZWFrQ291bnRlci5j
cHAKKyAgICBSZXNvdXJjZUJ1bmRsZS5jcHAKICAgICBSdW5Mb29wLmNwcAogICAgIFNIQTEuY3Bw
CiAgICAgU2FmZVN0cmVycm9yLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZv
cm1XaW4uY21ha2UgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVdpbi5jbWFrZQppbmRleCBjYzQz
YTIxYzhlZmYuLjNiMjgwM2Q0NTlmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZv
cm1XaW4uY21ha2UKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1XaW4uY21ha2UKQEAgLTQ1
LDYgKzQ1LDcgQEAgaWYgKFVTRV9DRikKICAgICBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwogICAg
ICAgICBjZi9DRlVSTEV4dHJhcy5jcHAKICAgICAgICAgY2YvRmlsZVN5c3RlbUNGLmNwcAorICAg
ICAgICBjZi9SZXNvdXJjZUJ1bmRsZUNGLmNwcAogICAgICAgICBjZi9VUkxDRi5jcHAKIAogICAg
ICAgICB0ZXh0L2NmL0F0b21TdHJpbmdJbXBsQ0YuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9SZXNvdXJjZUJ1bmRsZS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9SZXNvdXJjZUJ1bmRsZS5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43ZGIxMGFhMDZhZWQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9SZXNvdXJjZUJ1bmRsZS5jcHAKQEAg
LTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBTb255IEludGVyYWN0aXZl
IEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhl
IG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0
cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHd0Zi9SZXNvdXJjZUJ1bmRs
ZS5oPgorCisjaWYgIVVTRShDRikKKworI2luY2x1ZGUgPHd0Zi9GaWxlU3lzdGVtLmg+CisjaW5j
bHVkZSA8d3RmL1VSTC5oPgorCituYW1lc3BhY2UgV1RGIHsKKworc3RkOjp1bmlxdWVfcHRyPFJl
c291cmNlQnVuZGxlPiBSZXNvdXJjZUJ1bmRsZTo6Y3JlYXRlKFN0cmluZ1ZpZXcgcGF0aCkKK3sK
KyAgICBhdXRvIHBhdGhTdHJpbmcgPSBwYXRoLnRvU3RyaW5nKCk7CisgICAgaWYgKCFGaWxlU3lz
dGVtOjpmaWxlRXhpc3RzKHBhdGhTdHJpbmcpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VCdW5kbGU+KG5ldyBSZXNvdXJjZUJ1
bmRsZShwYXRoU3RyaW5nKSk7Cit9CisKK1Jlc291cmNlQnVuZGxlOjpSZXNvdXJjZUJ1bmRsZShT
dHJpbmcgcm9vdCkKKyAgICA6IG1fcm9vdChyb290KQoreyB9CisKK1N0cmluZyBSZXNvdXJjZUJ1
bmRsZTo6YnVuZGxlUGF0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcm9vdDsKK30KKworVVJM
IFJlc291cmNlQnVuZGxlOjpidW5kbGVVUkwoKSBjb25zdAoreworICAgIHJldHVybiBVUkw6OmZp
bGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgobV9yb290KTsKK30KKworU3RyaW5nIFJlc291cmNlQnVu
ZGxlOjpyZXNvdXJjZVBhdGgoU3RyaW5nVmlldyBuYW1lLCBTdHJpbmdWaWV3IHR5cGUsIFN0cmlu
Z1ZpZXcgZGlyZWN0b3J5KSBjb25zdAoreworICAgIGF1dG8gZmlsZU5hbWUgPSBtYWtlU3RyaW5n
KG5hbWUsICIuIl9zLCB0eXBlKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50cyhtX3Jvb3QsIHsgZGlyZWN0b3J5LCBmaWxlTmFtZSB9KTsKK30KKworVVJM
IFJlc291cmNlQnVuZGxlOjpyZXNvdXJjZVVSTChTdHJpbmdWaWV3IG5hbWUsIFN0cmluZ1ZpZXcg
dHlwZSwgU3RyaW5nVmlldyBkaXJlY3RvcnkpIGNvbnN0Cit7CisgICAgcmV0dXJuIFVSTDo6Zmls
ZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChyZXNvdXJjZVBhdGgobmFtZSwgdHlwZSwgZGlyZWN0b3J5
KSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8gIVVTRShDRikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL1Jlc291cmNlQnVuZGxlLmggYi9Tb3VyY2UvV1RGL3d0Zi9S
ZXNvdXJjZUJ1bmRsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u
NDc3MjRjZjdmZGM0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvUmVzb3VyY2VC
dW5kbGUuaApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIFNvbnkg
SW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAg
TmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9m
CisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgor
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CisKKyNpZiBVU0UoQ0YpCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgordHlwZWRlZiBz
dHJ1Y3QgX19DRkJ1bmRsZSogQ0ZCdW5kbGVSZWY7CisjZWxzZQorI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBSZXNvdXJj
ZUJ1bmRsZSBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6Cisg
ICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VCdW5k
bGU+IGNyZWF0ZShTdHJpbmdWaWV3KTsKKworI2lmIFVTRShDRikKKyAgICBpbmxpbmUgb3BlcmF0
b3IgQ0ZCdW5kbGVSZWYoKSBjb25zdCB7IHJldHVybiBtX2J1bmRsZS5nZXQoKTsgfQorI2VuZGlm
CisKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGJ1bmRsZVBhdGgoKSBjb25zdDsKKyAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgVVJMIGJ1bmRsZVVSTCgpIGNvbnN0OworCisgICAgV1RGX0VY
UE9SVF9QUklWQVRFIFN0cmluZyByZXNvdXJjZVBhdGgoU3RyaW5nVmlldyBuYW1lLCBTdHJpbmdW
aWV3IHR5cGUsIFN0cmluZ1ZpZXcgZGlyZWN0b3J5KSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgVVJMIHJlc291cmNlVVJMKFN0cmluZ1ZpZXcgbmFtZSwgU3RyaW5nVmlldyB0eXBlLCBT
dHJpbmdWaWV3IGRpcmVjdG9yeSkgY29uc3Q7CisKK3ByaXZhdGU6CisjaWYgVVNFKENGKQorICAg
IFJlc291cmNlQnVuZGxlKENGQnVuZGxlUmVmKTsKKyAgICBSZXRhaW5QdHI8Q0ZCdW5kbGVSZWY+
IG1fYnVuZGxlOworI2Vsc2UKKyAgICBSZXNvdXJjZUJ1bmRsZShTdHJpbmcpOworICAgIFN0cmlu
ZyBtX3Jvb3Q7CisjZW5kaWYKK307CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvY2YvUmVzb3VyY2VCdW5kbGVDRi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9j
Zi9SZXNvdXJjZUJ1bmRsZUNGLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLjI4ZmRjMTMxMDlkYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL2Nm
L1Jlc291cmNlQnVuZGxlQ0YuY3BwCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjIgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5v
ciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlIDx3dGYvUmVzb3VyY2VCdW5kbGUuaD4KKworI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9u
L0NGQnVuZGxlLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgorCituYW1lc3BhY2UgV1RGIHsKKworc3RkOjp1bmlxdWVfcHRyPFJlc291cmNl
QnVuZGxlPiBSZXNvdXJjZUJ1bmRsZTo6Y3JlYXRlKFN0cmluZ1ZpZXcgcGF0aCkKK3sKKyAgICBh
dXRvIHVybCA9IENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKAorICAgICAgICBrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LAorICAgICAgICBwYXRoLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksCisjaWYg
UExBVEZPUk0oV0lOKQorICAgICAgICBrQ0ZVUkxXaW5kb3dzUGF0aFN0eWxlLAorI2Vsc2UKKyAg
ICAgICAga0NGVVJMUE9TSVhQYXRoU3R5bGUsCisjZW5kaWYKKyAgICAgICAgZmFsc2UpOworCisg
ICAgYXV0byBidW5kbGUgPSBDRkJ1bmRsZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB1cmwp
OworICAgIGlmICghYnVuZGxlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVy
biBzdGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VCdW5kbGU+KG5ldyBSZXNvdXJjZUJ1bmRsZShidW5k
bGUpKTsKK30KKworUmVzb3VyY2VCdW5kbGU6OlJlc291cmNlQnVuZGxlKENGQnVuZGxlUmVmIGJ1
bmRsZSkKKyAgICA6IG1fYnVuZGxlKGFkb3B0Q0YoYnVuZGxlKSkKK3sgfQorCitTdHJpbmcgUmVz
b3VyY2VCdW5kbGU6OmJ1bmRsZVBhdGgoKSBjb25zdAoreworICAgIHJldHVybiBidW5kbGVVUkwo
KS5maWxlU3lzdGVtUGF0aCgpOworfQorCitVUkwgUmVzb3VyY2VCdW5kbGU6OmJ1bmRsZVVSTCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIFVSTChDRkJ1bmRsZUNvcHlCdW5kbGVVUkwobV9idW5kbGUu
Z2V0KCkpKTsKK30KKworU3RyaW5nIFJlc291cmNlQnVuZGxlOjpyZXNvdXJjZVBhdGgoU3RyaW5n
VmlldyBuYW1lLCBTdHJpbmdWaWV3IHR5cGUsIFN0cmluZ1ZpZXcgZGlyZWN0b3J5KSBjb25zdAor
eworICAgIFJldGFpblB0cjxDRlVSTFJlZj4gcmVxdWVzdGVkVVJMUmVmID0gQ0ZCdW5kbGVDb3B5
UmVzb3VyY2VVUkwobV9idW5kbGUuZ2V0KCksIG5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwg
dHlwZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBkaXJlY3RvcnkuY3JlYXRlQ0ZTdHJpbmcoKS5n
ZXQoKSk7CisgICAgaWYgKCFyZXF1ZXN0ZWRVUkxSZWYpCisgICAgICAgIHJldHVybiBTdHJpbmco
KTsKKworICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG1heFBhdGhTaXplID0gNDA5NjsKKyAg
ICBVSW50OCByZXF1ZXN0ZWRGaWxlUGF0aFttYXhQYXRoU2l6ZV07CisKKyAgICBpZiAoIUNGVVJM
R2V0RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHJlcXVlc3RlZFVSTFJlZi5nZXQoKSwgZmFsc2Us
IHJlcXVlc3RlZEZpbGVQYXRoLCBtYXhQYXRoU2l6ZSkpCisgICAgICAgIHJldHVybiBTdHJpbmco
KTsKKworICAgIHJldHVybiBTdHJpbmcocmVxdWVzdGVkRmlsZVBhdGgpOworfQorCitVUkwgUmVz
b3VyY2VCdW5kbGU6OnJlc291cmNlVVJMKFN0cmluZ1ZpZXcgbmFtZSwgU3RyaW5nVmlldyB0eXBl
LCBTdHJpbmdWaWV3IGRpcmVjdG9yeSkgY29uc3QKK3sKKyAgICByZXR1cm4gVVJMKENGQnVuZGxl
Q29weVJlc291cmNlVVJMKG1fYnVuZGxlLmdldCgpLCBuYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0
KCksIHR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgZGlyZWN0b3J5LmNyZWF0ZUNGU3RyaW5n
KCkuZ2V0KCkpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Ub29scy9D
aGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTIyNDBhMzU4MDgxLi43ZTY5ODE5YzY4
ZmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNyBAQAorMjAyMi0wMS0yMCAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNv
bnkuY29tPgorCisgICAgICAgIEFkZCBhIFJlc291cmNlQnVuZGxlIGFic3RyYWN0aW9uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzYyMzYKKworICAg
ICAgICBSZXZpZXdlZCBieSBZdXN1a2UgU3V6dWtpLgorCisgICAgICAgIEFkZCB0ZXN0cyBmb3Ig
V1RGOjpSZXNvdXJjZUJ1bmRsZS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvQ01ha2VMaXN0
cy50eHQ6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVzb3Vy
Y2VCdW5kbGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisK
IDIwMjItMDEtMjAgIEFuZ2Vsb3MgT2lrb25vbW9wb3Vsb3MgIDxhbmdlbG9zQGlnYWxpYS5jb20+
CiAKICAgICAgICAgW0pTQ10gRnVydGhlciB1bmlmaWNhdGlvbiBpbiBydW4tanNjLXN0cmVzcy10
ZXN0cwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKaW5kZXggYTFhOTE0MmZmYThiLi45NmM5
MzhjYmYwZWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dApAQCAtNzksNiArNzksNyBA
QCBzZXQoVGVzdFdURl9TT1VSQ0VTCiAgICAgVGVzdHMvV1RGL1JlZkNvdW50ZXIuY3BwCiAgICAg
VGVzdHMvV1RGL1JlZkxvZ2dlci5jcHAKICAgICBUZXN0cy9XVEYvUmVmUHRyLmNwcAorICAgIFRl
c3RzL1dURi9SZXNvdXJjZUJ1bmRsZS5jcHAKICAgICBUZXN0cy9XVEYvUm9iaW5Ib29kSGFzaE1h
cC5jcHAKICAgICBUZXN0cy9XVEYvUm9iaW5Ib29kSGFzaFNldC5jcHAKICAgICBUZXN0cy9XVEYv
UnVuTG9vcC5jcHAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNWE1MGRmYjJmMDI1Li4wOGNm
ZTUwMWRhMTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04MzIsNiArODMyLDcgQEAKIAkJ
QTFGQjUwNDMyMkEyMTNBMzAwRDREOTc5IC8qIGFwcGxlLXBheS1jYW4tbWFrZS1wYXltZW50Lmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTFGQjUwNDIyMkEyMTM4RjAwRDREOTc5IC8qIGFwcGxlLXBheS1jYW4tbWFrZS1wYXltZW50Lmh0
bWwgKi87IH07CiAJCUExRkI1MDQ1MjJBMjE1NzEwMEQ0RDk3OSAvKiBhcHBsZS1wYXkuanMgaW4g
Q29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFGQjUw
NDQyMkEyMTU0QjAwRDREOTc5IC8qIGFwcGxlLXBheS5qcyAqLzsgfTsKIAkJQTMxMDgyNzIyMUYy
OTZGRjAwQzI4Qjk3IC8qIEZpbGVTeXN0ZW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTMxMDgyNzEyMUYyOTZFQzAwQzI4Qjk3IC8qIEZpbGVTeXN0
ZW0uY3BwICovOyB9OworCQlBM0E5QkRGQzI3OThERTJEMDBDMUREMDYgLyogUmVzb3VyY2VCdW5k
bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTNB
OUJERkIyNzk4REUyRDAwQzFERDA2IC8qIFJlc291cmNlQnVuZGxlLmNwcCAqLzsgfTsKIAkJQTU3
QTM0RjIxNkFGNkIyQjAwQzI1MDFGIC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hh
bmdlcy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE1N0EzNEYxMTZBRjY5RTIwMEMyNTAxRiAvKiBQYWdlVmlzaWJpbGl0eVN0YXRlV2l0
aFdpbmRvd0NoYW5nZXMuaHRtbCAqLzsgfTsKIAkJQTU3RDU0RjMxRjMzOEMzNjAwQTk3QUE3IC8q
IE5ldmVyRGVzdHJveWVkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE1N0Q1NEYyMUYzMzhDMzYwMEE5N0FBNyAvKiBOZXZlckRlc3Ryb3llZC5jcHAg
Ki87IH07CiAJCUE1N0Q1NEY2MUYzMzk1RDAwMEE5N0FBNyAvKiBMb2dnZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3RDU0RjQxRjMzOTVEMDAw
QTk3QUE3IC8qIExvZ2dlci5jcHAgKi87IH07CkBAIC0yNjUzLDYgKzI2NTQsNyBAQAogCQlBMUZC
NTA0NDIyQTIxNTRCMDBENEQ5NzkgLyogYXBwbGUtcGF5LmpzICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRo
ID0gImFwcGxlLXBheS5qcyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExRkRGRDJF
MTlDMjg4QkIwMDUxNDhBNCAvKiBXS0ltYWdlQ3JlYXRlQ0dJbWFnZUNyYXNoLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLSW1hZ2VDcmVhdGVDR0ltYWdlQ3Jhc2gu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMzEwODI3MTIxRjI5NkVDMDBDMjhC
OTcgLyogRmlsZVN5c3RlbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBGaWxlU3lzdGVtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTNBOUJERkIy
Nzk4REUyRDAwQzFERDA2IC8qIFJlc291cmNlQnVuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291cmNlQnVuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQTU3QTM0RUYxNkFGNjc3MjAwQzI1MDFGIC8qIFBhZ2VWaXNpYmlsaXR5U3Rh
dGVXaXRoV2luZG93Q2hhbmdlcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU3QTM0RjExNkFGNjlFMjAwQzI1MDFGIC8qIFBhZ2VWaXNp
YmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBw
YXRoID0gUGFnZVZpc2liaWxpdHlTdGF0ZVdpdGhXaW5kb3dDaGFuZ2VzLmh0bWw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1N0Q1NEYyMUYzMzhDMzYwMEE5N0FBNyAvKiBOZXZlckRl
c3Ryb3llZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXZlckRlc3Ryb3llZC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NTc0LDYgKzQ1NzYsNyBAQAogCQkJCTQ0MkJCRjY4
MUM5MUNBRDkwMDE3MDg3RiAvKiBSZWZMb2dnZXIuY3BwICovLAogCQkJCTkzQTQyN0FEMTgwREE2
MEYwMENEMjRENyAvKiBSZWZMb2dnZXIuaCAqLywKIAkJCQk5M0E0MjdBODE4MEQ5QjA3MDBDRDI0
RDcgLyogUmVmUHRyLmNwcCAqLywKKwkJCQlBM0E5QkRGQjI3OThERTJEMDBDMUREMDYgLyogUmVz
b3VyY2VCdW5kbGUuY3BwICovLAogCQkJCUUzNTVBNjMxMjYxNTcxOEYwMDFDMTEyOSAvKiBSb2Jp
bkhvb2RIYXNoTWFwLmNwcCAqLywKIAkJCQlFMzU1QTYyRjI2MTU3MTc0MDAxQzExMjkgLyogUm9i
aW5Ib29kSGFzaFNldC5jcHAgKi8sCiAJCQkJRTRDOUFCQzcxQjNEQjE3MTAwNDBBOTg3IC8qIFJ1
bkxvb3AuY3BwICovLApAQCAtNTM1MSw2ICs1MzU0LDcgQEAKIAkJCQk3QzgzREYwMjFEMEE1OTBD
MDBGRUJDRjMgLyogT1NPYmplY3RQdHIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDQ0NDlEQzIy
NzE4QjRCNzAwRTgyMUI1IC8qIE9TT2JqZWN0UHRyQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk0NDQ0OURDMTI3MThCNEI3MDBFODIxQjUgLyogT1NPYmplY3RQdHJDb2NvYUFSQy5tbSBpbiBT
b3VyY2VzICovLAorCQkJCUEzQTlCREZDMjc5OERFMkQwMEMxREQwNiAvKiBSZXNvdXJjZUJ1bmRs
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMzJCNTQ5MjIyODEwQUM0MDA4QUQ3MDIgLyogUGFj
a2VkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUzOEQ2NUNBMjNBNDVGQUEwMDYzRDY5QSAvKiBQ
YWNrZWRSZWYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTM4RDY1Q0IyM0E0NUZBQTAwNjNENjlB
IC8qIFBhY2tlZFJlZlB0ci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL1Jlc291cmNlQnVuZGxlLmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL1Jlc291cmNlQnVuZGxlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAuLjBkZmU4YTE0N2YxNgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1Jlc291cmNlQnVuZGxlLmNwcApAQCAtMCwwICsxLDk0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlu
bWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBB
cHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAor
ICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJUZXN0LmgiCisjaW5jbHVkZSA8d3RmL0Zp
bGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvUmVzb3VyY2VCdW5kbGUuaD4KKyNpbmNsdWRlIDx3
dGYvVVJMLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworY2xhc3MgUmVzb3VyY2VC
dW5kbGVUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworcHVibGljOgorICAgIHZvaWQgU2V0
VXAoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgLy8gQ3JlYXRlIGEgdGVtcCBkaXJlY3Rvcnkg
dG8gbWFrZSBhIGJ1bmRsZSBpbgorICAgICAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5k
bGUgaGFuZGxlOworICAgICAgICBtX3Jvb3QgPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5Rmls
ZSgiV2ViS2l0LnJlc291cmNlcyIsIGhhbmRsZSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3Nl
RmlsZShoYW5kbGUpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1fcm9vdCk7CisK
KyAgICAgICAgLy8gQ3JlYXRlIHRoZSBidW5kbGUgc3RydWN0dXJlCisgICAgICAgIEZpbGVTeXN0
ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnRzKG1fcm9vdCwgeyAiV2ViSW5zcGVjdG9yVUkiLCAiUHJvdG9jb2wiIH0pKTsKKyAgICAgICAg
YXV0byBpbnNwZWN0b3JCYWNrZW5kRmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxlKEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMobV9yb290LCB7ICJXZWJJbnNwZWN0b3JVSSIs
ICJQcm90b2NvbCIsICJJbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMiIH0pLCBGaWxlU3lzdGVt
OjpGaWxlT3Blbk1vZGU6OldyaXRlKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGlu
c3BlY3RvckJhY2tlbmRGaWxlKTsKKyAgICB9CisKKyAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJp
ZGUKKyAgICB7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZU5vbkVtcHR5RGlyZWN0b3J5KG1f
cm9vdCk7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgU3RyaW5nIG1fcm9vdDsKK307CisKK1RF
U1RfRihSZXNvdXJjZUJ1bmRsZVRlc3QsIEJ1bmRsZVBhdGgpCit7CisgICAgYXV0byBidW5kbGUg
PSBXVEY6OlJlc291cmNlQnVuZGxlOjpjcmVhdGUobV9yb290KTsKKyAgICBhdXRvIGFjdHVhbCA9
IGJ1bmRsZS0+YnVuZGxlUGF0aCgpOworICAgIEVYUEVDVF9UUlVFKG1fcm9vdCA9PSBhY3R1YWwp
OworfQorCitURVNUX0YoUmVzb3VyY2VCdW5kbGVUZXN0LCBCdW5kbGVVUkwpCit7CisgICAgYXV0
byBidW5kbGUgPSBXVEY6OlJlc291cmNlQnVuZGxlOjpjcmVhdGUobV9yb290KTsKKyAgICBhdXRv
IGFjdHVhbCA9IGJ1bmRsZS0+YnVuZGxlVVJMKCk7CisgICAgRVhQRUNUX1RSVUUoVVJMOjpmaWxl
VVJMV2l0aEZpbGVTeXN0ZW1QYXRoKFN0cmluZ1ZpZXcobV9yb290KSkgPT0gYWN0dWFsKTsKK30K
KworVEVTVF9GKFJlc291cmNlQnVuZGxlVGVzdCwgUmVzb3VyY2VQYXRoKQoreworICAgIGF1dG8g
YnVuZGxlID0gV1RGOjpSZXNvdXJjZUJ1bmRsZTo6Y3JlYXRlKG1fcm9vdCk7CisgICAgYXV0byBh
Y3R1YWwgPSBidW5kbGUtPnJlc291cmNlUGF0aCgiSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzIiwg
ImpzIiwgRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KCJXZWJJbnNwZWN0b3JV
SSJfcywgIlByb3RvY29sIl9zKSk7CisgICAgYXV0byBleHBlY3RlZCA9IEZpbGVTeXN0ZW06OnBh
dGhCeUFwcGVuZGluZ0NvbXBvbmVudHMobV9yb290LCB7ICJXZWJJbnNwZWN0b3JVSSIsICJQcm90
b2NvbCIsICJJbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMiIH0pOworICAgIEVYUEVDVF9UUlVF
KGV4cGVjdGVkID09IGFjdHVhbCk7Cit9CisKK1RFU1RfRihSZXNvdXJjZUJ1bmRsZVRlc3QsIFJl
c291cmNlVVJMKQoreworICAgIGF1dG8gYnVuZGxlID0gV1RGOjpSZXNvdXJjZUJ1bmRsZTo6Y3Jl
YXRlKG1fcm9vdCk7CisgICAgYXV0byBhY3R1YWwgPSBidW5kbGUtPnJlc291cmNlVVJMKCJJbnNw
ZWN0b3JCYWNrZW5kQ29tbWFuZHMiLCAianMiLCBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdD
b21wb25lbnQoIldlYkluc3BlY3RvclVJIl9zLCAiUHJvdG9jb2wiX3MpKTsKKyAgICBhdXRvIGV4
cGVjdGVkID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhtX3Jvb3QsIHsg
IldlYkluc3BlY3RvclVJIiwgIlByb3RvY29sIiwgIkluc3BlY3RvckJhY2tlbmRDb21tYW5kcy5q
cyIgfSk7CisKKyAgICBFWFBFQ1RfVFJVRShVUkw6OmZpbGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgo
U3RyaW5nVmlldyhleHBlY3RlZCkpID09IGFjdHVhbCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkK
</data>
<flag name="review"
          id="475752"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449660</attachid>
            <date>2022-01-21 08:25:31 -0800</date>
            <delta_ts>2022-01-21 09:29:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176236.diff</filename>
            <type>text/plain</type>
            <size>27854</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggZWEzNWFkMjc5MGExLi5hN2ZjZWQ0NzY1NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIw
MjItMDEtMjEgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KKworICAgICAg
ICBBZGQgYSBSZXNvdXJjZUJ1bmRsZSBhYnN0cmFjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2MjM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBhbiBhYnN0cmFjdGlvbiBvdmVyIGEgQ0ZC
dW5kbGUuIElmIENvcmVGb3VuZGF0aW9uIGlzbid0IGF2YWlsYWJsZSB0aGVuIGl0IGVtdWxhdGVz
CisgICAgICAgIENGQnVuZGxlJ3MgYmVoYXZpb3IgdXNpbmcgRmlsZVN5c3RlbSBBUElzLgorCisg
ICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0NN
YWtlTGlzdHMudHh0OgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybVdpbi5jbWFrZToKKyAgICAgICAg
KiB3dGYvUmVzb3VyY2VCdW5kbGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdURjo6UmVzb3VyY2VC
dW5kbGU6OmNyZWF0ZSk6CisgICAgICAgIChXVEY6OlJlc291cmNlQnVuZGxlOjpSZXNvdXJjZUJ1
bmRsZSk6CisgICAgICAgIChXVEY6OlJlc291cmNlQnVuZGxlOjpidW5kbGVQYXRoIGNvbnN0KToK
KyAgICAgICAgKFdURjo6UmVzb3VyY2VCdW5kbGU6OmJ1bmRsZVVSTCBjb25zdCk6CisgICAgICAg
IChXVEY6OlJlc291cmNlQnVuZGxlOjpyZXNvdXJjZVBhdGggY29uc3QpOgorICAgICAgICAoV1RG
OjpSZXNvdXJjZUJ1bmRsZTo6cmVzb3VyY2VVUkwgY29uc3QpOgorICAgICAgICAqIHd0Zi9SZXNv
dXJjZUJ1bmRsZS5oOiBBZGRlZC4KKyAgICAgICAgKiB3dGYvY2YvUmVzb3VyY2VCdW5kbGVDRi5j
cHA6IEFkZGVkLgorICAgICAgICAoV1RGOjpSZXNvdXJjZUJ1bmRsZTo6Y3JlYXRlKToKKyAgICAg
ICAgKFdURjo6UmVzb3VyY2VCdW5kbGU6OlJlc291cmNlQnVuZGxlKToKKyAgICAgICAgKFdURjo6
UmVzb3VyY2VCdW5kbGU6OmJ1bmRsZVBhdGggY29uc3QpOgorICAgICAgICAoV1RGOjpSZXNvdXJj
ZUJ1bmRsZTo6YnVuZGxlVVJMIGNvbnN0KToKKyAgICAgICAgKFdURjo6UmVzb3VyY2VCdW5kbGU6
OnJlc291cmNlUGF0aCBjb25zdCk6CisgICAgICAgIChXVEY6OlJlc291cmNlQnVuZGxlOjpyZXNv
dXJjZVVSTCBjb25zdCk6CisKIDIwMjItMDEtMjAgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBh
cHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBBY2NlbGVyYXRlZCBmaWx0ZXJzIGFyZSBlbmFi
bGVkIGJ5IHRoZSB3cm9uZyBzZXR0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCA1ODJjYTYyZmRlNmUuLmFiMTFjMTNlNGVmMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dU
Ri54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDgsMTIgKzEwOCwxNCBAQAogCQk5M0I1
QjQ1MTIyMTcxRUVBMDA0QjdBQTcgLyogTG9nZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjVCNDUwMjIxNzFFRTkwMDRCN0FBNyAvKiBMb2dn
ZXIuY3BwICovOyB9OwogCQk5M0YxOTkzRTE5RDc5NThEMDBDMjM5MEIgLyogU3RyaW5nVmlldy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0YxOTkz
RDE5RDc5NThEMDBDMjM5MEIgLyogU3RyaW5nVmlldy5jcHAgKi87IH07CiAJCTlCQzcwRjA1MTc2
QzM3OUQwMDEwMURFQyAvKiBBdG9tU3RyaW5nVGFibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUJDNzBGMDQxNzZDMzc5RDAwMTAxREVDIC8qIEF0
b21TdHJpbmdUYWJsZS5jcHAgKi87IH07CisJCUEzMTBGNzlFMjc5QTBBMTQwMENERDI1OSAvKiBS
ZXNvdXJjZUJ1bmRsZUNGLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEEzMTBGNzlEMjc5QTBBMTQwMENERDI1OSAvKiBSZXNvdXJjZUJ1bmRsZUNGLmNw
cCAqLzsgfTsKIAkJQTMyRDhGQTUyMUZGRkFCNDAwNzgwNjYyIC8qIFRocmVhZGluZ1BPU0lYLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzMkQ4RkE0
MjFGRkZBQjQwMDc4MDY2MiAvKiBUaHJlYWRpbmdQT1NJWC5jcHAgKi87IH07CiAJCUEzMzFEOTVC
MjFGMjQ5OTIwMDlGMDJBQSAvKiBGaWxlU3lzdGVtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzMzFEOTVBMjFGMjQ5OTIwMDlGMDJBQSAvKiBGaWxl
U3lzdGVtLmNwcCAqLzsgfTsKIAkJQTMzMUQ5NUQyMUYyNDlFNDAwOUYwMkFBIC8qIEZpbGVTeXN0
ZW1DRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
MzMxRDk1QzIxRjI0OUU0MDA5RjAyQUEgLyogRmlsZVN5c3RlbUNGLmNwcCAqLzsgfTsKIAkJQTMz
MUQ5NUYyMUYyNDlGNjAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1Db2NvYS5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzMzFEOTVFMjFGMjQ5RjYwMDlGMDJB
QSAvKiBGaWxlU3lzdGVtQ29jb2EubW0gKi87IH07CiAJCUEzMzFEOTYxMjFGMjRBMEEwMDlGMDJB
QSAvKiBGaWxlU3lzdGVtTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTMzMUQ5NjAyMUYyNEEwQTAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1NYWMubW0g
Ki87IH07CiAJCUEzMzFEOTY3MjFGMjRBQkQwMDlGMDJBQSAvKiBGaWxlU3lzdGVtUE9TSVguY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTMzMUQ5NjYy
MUYyNEFCRDAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1QT1NJWC5jcHAgKi87IH07CisJCUEzQTlCREZB
Mjc5OERERTgwMEMxREQwNiAvKiBSZXNvdXJjZUJ1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBM0E5QkRGODI3OThERERGMDBDMUREMDYgLyog
UmVzb3VyY2VCdW5kbGUuY3BwICovOyB9OwogCQlBM0I3MjVFQzk4NzQ0NkFEOTNGMUE0NDAgLyog
UmFuZG9tRGV2aWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEM4RjU5N0NBMkE1NzQxN0ZCQUI5MkZENiAvKiBSYW5kb21EZXZpY2UuY3BwICovOyB9
OwogCQlBM0U0REQ5MzFGM0E4MDM0MDBERUQwQjQgLyogVGV4dFN0cmVhbS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBM0U0REQ5MTFGM0E4MDM0MDBE
RUQwQjQgLyogVGV4dFN0cmVhbS5jcHAgKi87IH07CiAJCUEzRUU1QzNBMjFGRkFDNUYwMEZBQkQ2
MSAvKiBPU0FsbG9jYXRvclBPU0lYLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEEzRUU1QzM5MjFGRkFDNUUwMEZBQkQ2MSAvKiBPU0FsbG9jYXRvclBP
U0lYLmNwcCAqLzsgfTsKQEAgLTU1Myw2ICs1NTUsNyBAQAogCQlBMUI4OUI4NzIyMUUwMDBGMDBF
QjRDRUEgLyogU0RLVmFyaWFudC54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBh
dGggPSBTREtWYXJpYW50LnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
MzBENDEyQzFGMERFMEJBMDBCNzE5NTQgLyogU29mdExpbmtpbmcuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU29mdExpbmtpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTMwRDQxMkQxRjBERTEzRjAwQjcxOTU0IC8qIFNvZnRMaW5raW5nLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvZnRMaW5raW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUEzMTBGNzlEMjc5QTBBMTQwMENERDI1OSAvKiBSZXNvdXJjZUJ1bmRsZUNG
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291cmNlQnVuZGxl
Q0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMzJEOEZBNDIxRkZGQUI0MDA3
ODA2NjIgLyogVGhyZWFkaW5nUE9TSVguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gVGhyZWFkaW5nUE9TSVguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBMzMxRDk1OTIxRjI0OTkyMDA5RjAyQUEgLyogRmlsZVN5c3RlbS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBGaWxlU3lzdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUEzMzFEOTVBMjFGMjQ5OTIwMDlGMDJBQSAvKiBGaWxlU3lzdGVtLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpbGVTeXN0ZW0uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNTYxLDYgKzU2NCw4IEBACiAJCUEzMzFEOTYwMjFGMjRBMEEw
MDlGMDJBQSAvKiBGaWxlU3lzdGVtTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gRmlsZVN5c3RlbU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTMzMUQ5NjYyMUYyNEFCRDAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1QT1NJWC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlU3lzdGVtUE9TSVguY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMzZFMTZGNzIxNkZGODI4MDA4REQ4N0UgLyogV1RG
U2VtYXBob3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdURlNlbWFwaG9y
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBM0E5QkRGODI3OThERERGMDBDMURE
MDYgLyogUmVzb3VyY2VCdW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzb3VyY2VCdW5k
bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBM0E5QkRGOTI3OThERERGMDBD
MUREMDYgLyogUmVzb3VyY2VCdW5kbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VCdW5kbGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTNEMjczQjkyMUYyRUU5MTAwODY2OTcx
IC8qIE1ldGFkYXRhU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1ldGFk
YXRhU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzRTRERDkxMUYzQTgwMzQw
MERFRDBCNCAvKiBUZXh0U3RyZWFtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFRleHRTdHJlYW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBM0U0
REQ5MjFGM0E4MDM0MDBERUQwQjQgLyogVGV4dFN0cmVhbS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBUZXh0U3RyZWFtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC04ODcsNiArODkyLDcgQEAKIAkJCQk1QzFGMDU5MjIxNjQzNTZCMDAzOTMwMkMgLyogQ0ZVUkxF
eHRyYXMuaCAqLywKIAkJCQlBMzMxRDk1QzIxRjI0OUU0MDA5RjAyQUEgLyogRmlsZVN5c3RlbUNG
LmNwcCAqLywKIAkJCQlDMkJDRkM0MTFGNjFENjE2MDBDOTIyMkMgLyogTGFuZ3VhZ2VDRi5jcHAg
Ki8sCisJCQkJQTMxMEY3OUQyNzlBMEExNDAwQ0REMjU5IC8qIFJlc291cmNlQnVuZGxlQ0YuY3Bw
ICovLAogCQkJCTJDREVEMEVFMTgxMTVDMzgwMDREQkE3MCAvKiBSdW5Mb29wQ0YuY3BwICovLAog
CQkJCUEzRUU1QzNCMjFGRkFDN0MwMEZBQkQ2MSAvKiBTY2hlZHVsZVBhaXJDRi5jcHAgKi8sCiAJ
CQkJQkMzRkVCNUQyNjdGQ0QzNDAwNTQwMDZBIC8qIFNwYW5DRi5oICovLApAQCAtMTI5Myw2ICsx
Mjk5LDggQEAKIAkJCQlBOEE0NzMwMjE1MUE4MjVCMDA0MTIzRkYgLyogUmVmQ291bnRlZExlYWtD
b3VudGVyLmggKi8sCiAJCQkJODZGNDZGNUYxQTI4NDBFRTAwQ0NCRjIyIC8qIFJlZkNvdW50ZXIu
aCAqLywKIAkJCQlBOEE0NzMwMzE1MUE4MjVCMDA0MTIzRkYgLyogUmVmUHRyLmggKi8sCisJCQkJ
QTNBOUJERjgyNzk4RERERjAwQzFERDA2IC8qIFJlc291cmNlQnVuZGxlLmNwcCAqLywKKwkJCQlB
M0E5QkRGOTI3OThERERGMDBDMUREMDYgLyogUmVzb3VyY2VCdW5kbGUuaCAqLywKIAkJCQlGRTM4
NDIzNDIzMjVDQzgwMDA5REQ0NDUgLyogUmVzb3VyY2VVc2FnZS5oICovLAogCQkJCUE4QTQ3MzA1
MTUxQTgyNUIwMDQxMjNGRiAvKiBSZXRhaW5QdHIuaCAqLywKIAkJCQlFM0M1ODNDODI2MTI3QURE
MDBDNTc1NjggLyogUm9iaW5Ib29kSGFzaE1hcC5oICovLApAQCAtMTg2Miw2ICsxODcwLDcgQEAK
IAkJCQlBM0VFNUM0MDIxRkZBQ0EyMDBGQUJENjEgLyogU2NoZWR1bGVQYWlyTWFjLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEY2NkIyOEUxREM5N0JBQjAwNEExRDNGIC8qIFNlY29uZHMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEZBNkYzOEYyMENDNTgwRjAwQTAzRENEIC8qIFNlZ21lbnRlZFZl
Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBM0E5QkRGQTI3OThEREU4MDBDMUREMDYgLyog
UmVzb3VyY2VCdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0MjExNTFBODI1QjAw
NDEyM0ZGIC8qIFNIQTEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTMxMUJENTMxRUE3MUNBRDAw
NTI1MjgxIC8qIFNpZ25hbHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTc0ODc0NTIxN0EwQkRB
RTAwRkEwNENCIC8qIFNpeENoYXJhY3Rlckhhc2guY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xOTAx
LDYgKzE5MTAsNyBAQAogCQkJCTUyMUNDNkI0MjRBMjc4MDkwMDQzNzdENiAvKiBUcmFuc2xhdGVk
UHJvY2Vzcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkE2RjM5NTIwQ0NBQ0U5MDBBMDNEQ0Qg
LyogVW5pcXVlQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNDMEVFNzYyMTYyOUYxOTAw
QTFBODQyIC8qIFVSTC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBMzEwRjc5RTI3OUEwQTE0MDBD
REQyNTkgLyogUmVzb3VyY2VCdW5kbGVDRi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzFGMDU5
NTIxNjQzN0IzMDAzOTMwMkMgLyogVVJMQ0YuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNDMEVF
ODkyMTYyQkMyMjAwQTFBODQyIC8qIFVSTENvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUZB
RDNBRTIyMUI5NjM2NjAwQkVFMTc4IC8qIFVSTEhlbHBlcnMuY3BwIGluIFNvdXJjZXMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYvd3Rm
L0NNYWtlTGlzdHMudHh0CmluZGV4IDQ5ZTBjNzY2OTkzNi4uMzhlZGEwNmI4MTQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9D
TWFrZUxpc3RzLnR4dApAQCAtMjI1LDYgKzIyNSw3IEBAIHNldChXVEZfUFVCTElDX0hFQURFUlMK
ICAgICBSZWZDb3VudGVkTGVha0NvdW50ZXIuaAogICAgIFJlZkNvdW50ZXIuaAogICAgIFJlZlB0
ci5oCisgICAgUmVzb3VyY2VCdW5kbGUuaAogICAgIFJlc291cmNlVXNhZ2UuaAogICAgIFJldGFp
blB0ci5oCiAgICAgUm9iaW5Ib29kSGFzaE1hcC5oCkBAIC00NjAsNiArNDYxLDcgQEAgc2V0KFdU
Rl9TT1VSQ0VTCiAgICAgUmVhZFdyaXRlTG9jay5jcHAKICAgICBSZWZDb3VudGVkLmNwcAogICAg
IFJlZkNvdW50ZWRMZWFrQ291bnRlci5jcHAKKyAgICBSZXNvdXJjZUJ1bmRsZS5jcHAKICAgICBS
dW5Mb29wLmNwcAogICAgIFNIQTEuY3BwCiAgICAgU2FmZVN0cmVycm9yLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybVdpbi5jbWFrZQppbmRleCBjYzQzYTIxYzhlZmYuLjNiMjgwM2Q0NTlmNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1XaW4uY21ha2UKKysrIGIvU291cmNlL1dURi93dGYv
UGxhdGZvcm1XaW4uY21ha2UKQEAgLTQ1LDYgKzQ1LDcgQEAgaWYgKFVTRV9DRikKICAgICBsaXN0
KEFQUEVORCBXVEZfU09VUkNFUwogICAgICAgICBjZi9DRlVSTEV4dHJhcy5jcHAKICAgICAgICAg
Y2YvRmlsZVN5c3RlbUNGLmNwcAorICAgICAgICBjZi9SZXNvdXJjZUJ1bmRsZUNGLmNwcAogICAg
ICAgICBjZi9VUkxDRi5jcHAKIAogICAgICAgICB0ZXh0L2NmL0F0b21TdHJpbmdJbXBsQ0YuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9SZXNvdXJjZUJ1bmRsZS5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi9SZXNvdXJjZUJ1bmRsZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi43ZGIxMGFhMDZhZWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9SZXNvdXJjZUJ1bmRsZS5jcHAKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMiBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9y
IHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgPHd0Zi9SZXNvdXJjZUJ1bmRsZS5oPgorCisjaWYgIVVTRShDRikKKworI2luY2x1ZGUg
PHd0Zi9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgorCituYW1lc3BhY2UgV1RG
IHsKKworc3RkOjp1bmlxdWVfcHRyPFJlc291cmNlQnVuZGxlPiBSZXNvdXJjZUJ1bmRsZTo6Y3Jl
YXRlKFN0cmluZ1ZpZXcgcGF0aCkKK3sKKyAgICBhdXRvIHBhdGhTdHJpbmcgPSBwYXRoLnRvU3Ry
aW5nKCk7CisgICAgaWYgKCFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHBhdGhTdHJpbmcpKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVzb3Vy
Y2VCdW5kbGU+KG5ldyBSZXNvdXJjZUJ1bmRsZShwYXRoU3RyaW5nKSk7Cit9CisKK1Jlc291cmNl
QnVuZGxlOjpSZXNvdXJjZUJ1bmRsZShTdHJpbmcgcm9vdCkKKyAgICA6IG1fcm9vdChyb290KQor
eyB9CisKK1N0cmluZyBSZXNvdXJjZUJ1bmRsZTo6YnVuZGxlUGF0aCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fcm9vdDsKK30KKworVVJMIFJlc291cmNlQnVuZGxlOjpidW5kbGVVUkwoKSBjb25z
dAoreworICAgIHJldHVybiBVUkw6OmZpbGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgobV9yb290KTsK
K30KKworU3RyaW5nIFJlc291cmNlQnVuZGxlOjpyZXNvdXJjZVBhdGgoU3RyaW5nVmlldyBuYW1l
LCBTdHJpbmdWaWV3IHR5cGUsIFN0cmluZ1ZpZXcgZGlyZWN0b3J5KSBjb25zdAoreworICAgIGF1
dG8gZmlsZU5hbWUgPSBtYWtlU3RyaW5nKG5hbWUsICIuIl9zLCB0eXBlKTsKKyAgICByZXR1cm4g
RmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhtX3Jvb3QsIHsgZGlyZWN0b3J5
LCBmaWxlTmFtZSB9KTsKK30KKworVVJMIFJlc291cmNlQnVuZGxlOjpyZXNvdXJjZVVSTChTdHJp
bmdWaWV3IG5hbWUsIFN0cmluZ1ZpZXcgdHlwZSwgU3RyaW5nVmlldyBkaXJlY3RvcnkpIGNvbnN0
Cit7CisgICAgcmV0dXJuIFVSTDo6ZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChyZXNvdXJjZVBh
dGgobmFtZSwgdHlwZSwgZGlyZWN0b3J5KSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisj
ZW5kaWYgLy8gIVVTRShDRikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1Jlc291cmNlQnVu
ZGxlLmggYi9Tb3VyY2UvV1RGL3d0Zi9SZXNvdXJjZUJ1bmRsZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNDc3MjRjZjdmZGM0Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dURi93dGYvUmVzb3VyY2VCdW5kbGUuaApAQCAtMCwwICsxLDY3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIyIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgi
QXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKKyNpZiBVU0UoQ0YpCisjaW5jbHVkZSA8d3Rm
L1JldGFpblB0ci5oPgordHlwZWRlZiBzdHJ1Y3QgX19DRkJ1bmRsZSogQ0ZCdW5kbGVSZWY7Cisj
ZWxzZQorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorI2VuZGlmCisKK25hbWVzcGFj
ZSBXVEYgeworCitjbGFzcyBSZXNvdXJjZUJ1bmRsZSBmaW5hbCB7CisgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8UmVzb3VyY2VCdW5kbGU+IGNyZWF0ZShTdHJpbmdWaWV3KTsKKworI2lmIFVT
RShDRikKKyAgICBpbmxpbmUgb3BlcmF0b3IgQ0ZCdW5kbGVSZWYoKSBjb25zdCB7IHJldHVybiBt
X2J1bmRsZS5nZXQoKTsgfQorI2VuZGlmCisKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5n
IGJ1bmRsZVBhdGgoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgVVJMIGJ1bmRsZVVS
TCgpIGNvbnN0OworCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyByZXNvdXJjZVBhdGgo
U3RyaW5nVmlldyBuYW1lLCBTdHJpbmdWaWV3IHR5cGUsIFN0cmluZ1ZpZXcgZGlyZWN0b3J5KSBj
b25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgVVJMIHJlc291cmNlVVJMKFN0cmluZ1ZpZXcg
bmFtZSwgU3RyaW5nVmlldyB0eXBlLCBTdHJpbmdWaWV3IGRpcmVjdG9yeSkgY29uc3Q7CisKK3By
aXZhdGU6CisjaWYgVVNFKENGKQorICAgIFJlc291cmNlQnVuZGxlKENGQnVuZGxlUmVmKTsKKyAg
ICBSZXRhaW5QdHI8Q0ZCdW5kbGVSZWY+IG1fYnVuZGxlOworI2Vsc2UKKyAgICBSZXNvdXJjZUJ1
bmRsZShTdHJpbmcpOworICAgIFN0cmluZyBtX3Jvb3Q7CisjZW5kaWYKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY2YvUmVzb3VyY2VCdW5kbGVD
Ri5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9jZi9SZXNvdXJjZUJ1bmRsZUNGLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmNkOTBhOTMxZjY3NwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XVEYvd3RmL2NmL1Jlc291cmNlQnVuZGxlQ0YuY3BwCkBAIC0wLDAgKzEs
OTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRh
aW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9m
IEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
CisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
QU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDx3dGYvUmVzb3VyY2VCdW5kbGUuaD4KKwor
I2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGQnVuZGxlLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV1RGIHsKKwor
c3RkOjp1bmlxdWVfcHRyPFJlc291cmNlQnVuZGxlPiBSZXNvdXJjZUJ1bmRsZTo6Y3JlYXRlKFN0
cmluZ1ZpZXcgcGF0aCkKK3sKKyAgICBhdXRvIHVybCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRo
RmlsZVN5c3RlbVBhdGgoCisgICAgICAgIGtDRkFsbG9jYXRvckRlZmF1bHQsCisgICAgICAgIHBh
dGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwKKyNpZiBQTEFURk9STShXSU4pCisgICAgICAgIGtD
RlVSTFdpbmRvd3NQYXRoU3R5bGUsCisjZWxzZQorICAgICAgICBrQ0ZVUkxQT1NJWFBhdGhTdHls
ZSwKKyNlbmRpZgorICAgICAgICBmYWxzZSkpOworCisgICAgYXV0byBidW5kbGUgPSBDRkJ1bmRs
ZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB1cmwuZ2V0KCkpOworICAgIGlmICghYnVuZGxl
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8
UmVzb3VyY2VCdW5kbGU+KG5ldyBSZXNvdXJjZUJ1bmRsZShidW5kbGUpKTsKK30KKworUmVzb3Vy
Y2VCdW5kbGU6OlJlc291cmNlQnVuZGxlKENGQnVuZGxlUmVmIGJ1bmRsZSkKKyAgICA6IG1fYnVu
ZGxlKGFkb3B0Q0YoYnVuZGxlKSkKK3sgfQorCitTdHJpbmcgUmVzb3VyY2VCdW5kbGU6OmJ1bmRs
ZVBhdGgoKSBjb25zdAoreworICAgIHJldHVybiBidW5kbGVVUkwoKS5maWxlU3lzdGVtUGF0aCgp
OworfQorCitVUkwgUmVzb3VyY2VCdW5kbGU6OmJ1bmRsZVVSTCgpIGNvbnN0Cit7CisgICAgYXV0
byBidW5kbGVVUkwgPSBhZG9wdENGKENGQnVuZGxlQ29weUJ1bmRsZVVSTChtX2J1bmRsZS5nZXQo
KSkpOworICAgIHJldHVybiBVUkwoYnVuZGxlVVJMLmdldCgpKTsKK30KKworU3RyaW5nIFJlc291
cmNlQnVuZGxlOjpyZXNvdXJjZVBhdGgoU3RyaW5nVmlldyBuYW1lLCBTdHJpbmdWaWV3IHR5cGUs
IFN0cmluZ1ZpZXcgZGlyZWN0b3J5KSBjb25zdAoreworICAgIGF1dG8gcmVxdWVzdGVkVVJMUmVm
ID0gYWRvcHRDRihDRkJ1bmRsZUNvcHlSZXNvdXJjZVVSTChtX2J1bmRsZS5nZXQoKSwgbmFtZS5j
cmVhdGVDRlN0cmluZygpLmdldCgpLCB0eXBlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGRpcmVj
dG9yeS5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7CisgICAgaWYgKCFyZXF1ZXN0ZWRVUkxSZWYp
CisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90
IG1heFBhdGhTaXplID0gNDA5NjsKKyAgICBVSW50OCByZXF1ZXN0ZWRGaWxlUGF0aFttYXhQYXRo
U2l6ZV07CisKKyAgICBpZiAoIUNGVVJMR2V0RmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKHJlcXVl
c3RlZFVSTFJlZi5nZXQoKSwgZmFsc2UsIHJlcXVlc3RlZEZpbGVQYXRoLCBtYXhQYXRoU2l6ZSkp
CisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIHJldHVybiBTdHJpbmcocmVxdWVzdGVk
RmlsZVBhdGgpOworfQorCitVUkwgUmVzb3VyY2VCdW5kbGU6OnJlc291cmNlVVJMKFN0cmluZ1Zp
ZXcgbmFtZSwgU3RyaW5nVmlldyB0eXBlLCBTdHJpbmdWaWV3IGRpcmVjdG9yeSkgY29uc3QKK3sK
KyAgICBhdXRvIGJ1bmRsZVVSTCA9IGFkb3B0Q0YoQ0ZCdW5kbGVDb3B5UmVzb3VyY2VVUkwobV9i
dW5kbGUuZ2V0KCksIG5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgdHlwZS5jcmVhdGVDRlN0
cmluZygpLmdldCgpLCBkaXJlY3RvcnkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOworICAgIHJl
dHVybiBVUkwoYnVuZGxlVVJMLmdldCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYg
LS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTRjYjIyNGE3
ZTY0Li5kMzQ5YjdlNTkzOTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMi0wMS0yMSAgRG9uIE9sbXN0ZWFkICA8
ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgorCisgICAgICAgIEFkZCBhIFJlc291cmNlQnVuZGxlIGFi
c3RyYWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzYyMzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgdGVzdHMgZm9yIFdURjo6UmVzb3VyY2VCdW5kbGUuCisKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL1Jlc291cmNlQnVuZGxlLmNwcDogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpURVNUX0YpOgorCiAyMDIyLTAxLTIxICBMYXVybyBNb3VyYSAgPGxtb3VyYUBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtDTWFrZV0gQ2Fubm90IGxpbmsgbGliVGVzdFJ1bm5lckluamVjdGVk
QnVuZGxlLnNvIGluIG5vbiB1bmlmaWVkIGJ1aWxkCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL0NNYWtlTGlzdHMudHh0IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4
dAppbmRleCBhMWE5MTQyZmZhOGIuLjk2YzkzOGNiZjBlZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtl
TGlzdHMudHh0CkBAIC03OSw2ICs3OSw3IEBAIHNldChUZXN0V1RGX1NPVVJDRVMKICAgICBUZXN0
cy9XVEYvUmVmQ291bnRlci5jcHAKICAgICBUZXN0cy9XVEYvUmVmTG9nZ2VyLmNwcAogICAgIFRl
c3RzL1dURi9SZWZQdHIuY3BwCisgICAgVGVzdHMvV1RGL1Jlc291cmNlQnVuZGxlLmNwcAogICAg
IFRlc3RzL1dURi9Sb2Jpbkhvb2RIYXNoTWFwLmNwcAogICAgIFRlc3RzL1dURi9Sb2Jpbkhvb2RI
YXNoU2V0LmNwcAogICAgIFRlc3RzL1dURi9SdW5Mb29wLmNwcApkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCA2MDcxYzEyODNjZDIuLjExZDMwZTM2YTM1NSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTgzMyw2ICs4MzMsNyBAQAogCQlBMUZCNTA0MzIyQTIxM0EzMDBENEQ5NzkgLyogYXBw
bGUtcGF5LWNhbi1tYWtlLXBheW1lbnQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUZCNTA0MjIyQTIxMzhGMDBENEQ5NzkgLyogYXBw
bGUtcGF5LWNhbi1tYWtlLXBheW1lbnQuaHRtbCAqLzsgfTsKIAkJQTFGQjUwNDUyMkEyMTU3MTAw
RDREOTc5IC8qIGFwcGxlLXBheS5qcyBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBMUZCNTA0NDIyQTIxNTRCMDBENEQ5NzkgLyogYXBwbGUtcGF5
LmpzICovOyB9OwogCQlBMzEwODI3MjIxRjI5NkZGMDBDMjhCOTcgLyogRmlsZVN5c3RlbS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMzEwODI3MTIx
RjI5NkVDMDBDMjhCOTcgLyogRmlsZVN5c3RlbS5jcHAgKi87IH07CisJCUEzQTlCREZDMjc5OERF
MkQwMEMxREQwNiAvKiBSZXNvdXJjZUJ1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBM0E5QkRGQjI3OThERTJEMDBDMUREMDYgLyogUmVzb3Vy
Y2VCdW5kbGUuY3BwICovOyB9OwogCQlBNTdBMzRGMjE2QUY2QjJCMDBDMjUwMUYgLyogUGFnZVZp
c2liaWxpdHlTdGF0ZVdpdGhXaW5kb3dDaGFuZ2VzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3QTM0RjExNkFGNjlFMjAwQzI1MDFG
IC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5odG1sICovOyB9OwogCQlB
NTdENTRGMzFGMzM4QzM2MDBBOTdBQTcgLyogTmV2ZXJEZXN0cm95ZWQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3RDU0RjIxRjMzOEMzNjAwQTk3
QUE3IC8qIE5ldmVyRGVzdHJveWVkLmNwcCAqLzsgfTsKIAkJQTU3RDU0RjYxRjMzOTVEMDAwQTk3
QUE3IC8qIExvZ2dlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNTdENTRGNDFGMzM5NUQwMDBBOTdBQTcgLyogTG9nZ2VyLmNwcCAqLzsgfTsKQEAg
LTI2NTcsNiArMjY1OCw3IEBACiAJCUExRkI1MDQ0MjJBMjE1NEIwMEQ0RDk3OSAvKiBhcHBsZS1w
YXkuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSAiYXBwbGUtcGF5LmpzIjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTFGREZEMkUxOUMyODhCQjAwNTE0OEE0IC8qIFdLSW1hZ2VDcmVh
dGVDR0ltYWdlQ3Jhc2guY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V0tJbWFnZUNyZWF0ZUNHSW1hZ2VDcmFzaC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUEzMTA4MjcxMjFGMjk2RUMwMEMyOEI5NyAvKiBGaWxlU3lzdGVtLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpbGVTeXN0ZW0uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlBM0E5QkRGQjI3OThERTJEMDBDMUREMDYgLyogUmVzb3VyY2VCdW5k
bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzb3VyY2VCdW5k
bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTdBMzRFRjE2QUY2NzcyMDBD
MjUwMUYgLyogUGFnZVZpc2liaWxpdHlTdGF0ZVdpdGhXaW5kb3dDaGFuZ2VzLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGFnZVZpc2liaWxpdHlTdGF0ZVdpdGhX
aW5kb3dDaGFuZ2VzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTdBMzRGMTE2
QUY2OUUyMDBDMjUwMUYgLyogUGFnZVZpc2liaWxpdHlTdGF0ZVdpdGhXaW5kb3dDaGFuZ2VzLmh0
bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBQYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdp
bmRvd0NoYW5nZXMuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU3RDU0RjIx
RjMzOEMzNjAwQTk3QUE3IC8qIE5ldmVyRGVzdHJveWVkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IE5ldmVyRGVzdHJveWVkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ1ODEs
NiArNDU4Myw3IEBACiAJCQkJNDQyQkJGNjgxQzkxQ0FEOTAwMTcwODdGIC8qIFJlZkxvZ2dlci5j
cHAgKi8sCiAJCQkJOTNBNDI3QUQxODBEQTYwRjAwQ0QyNEQ3IC8qIFJlZkxvZ2dlci5oICovLAog
CQkJCTkzQTQyN0E4MTgwRDlCMDcwMENEMjRENyAvKiBSZWZQdHIuY3BwICovLAorCQkJCUEzQTlC
REZCMjc5OERFMkQwMEMxREQwNiAvKiBSZXNvdXJjZUJ1bmRsZS5jcHAgKi8sCiAJCQkJRTM1NUE2
MzEyNjE1NzE4RjAwMUMxMTI5IC8qIFJvYmluSG9vZEhhc2hNYXAuY3BwICovLAogCQkJCUUzNTVB
NjJGMjYxNTcxNzQwMDFDMTEyOSAvKiBSb2Jpbkhvb2RIYXNoU2V0LmNwcCAqLywKIAkJCQlFNEM5
QUJDNzFCM0RCMTcxMDA0MEE5ODcgLyogUnVuTG9vcC5jcHAgKi8sCkBAIC01MzU4LDYgKzUzNjEs
NyBAQAogCQkJCTdDODNERjAyMUQwQTU5MEMwMEZFQkNGMyAvKiBPU09iamVjdFB0ci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk0NDQ0OURDMjI3MThCNEI3MDBFODIxQjUgLyogT1NPYmplY3RQdHJD
b2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQ0NDQ5REMxMjcxOEI0QjcwMEU4MjFCNSAvKiBP
U09iamVjdFB0ckNvY29hQVJDLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQTNBOUJERkMyNzk4REUy
RDAwQzFERDA2IC8qIFJlc291cmNlQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUzMkI1
NDkyMjI4MTBBQzQwMDhBRDcwMiAvKiBQYWNrZWQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTM4
RDY1Q0EyM0E0NUZBQTAwNjNENjlBIC8qIFBhY2tlZFJlZi5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlFMzhENjVDQjIzQTQ1RkFBMDA2M0Q2OUEgLyogUGFja2VkUmVmUHRyLmNwcCBpbiBTb3VyY2Vz
ICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVzb3VyY2VC
dW5kbGUuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVzb3VyY2VCdW5kbGUu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMGRmZThhMTQ3ZjE2
Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVzb3Vy
Y2VCdW5kbGUuY3BwCkBAIC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIg
U29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
IDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFt
ZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUg
IlRlc3QuaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPHd0Zi9SZXNv
dXJjZUJ1bmRsZS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkgeworCitjbGFzcyBSZXNvdXJjZUJ1bmRsZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVz
dCB7CitwdWJsaWM6CisgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCisgICAgeworICAgICAgICAv
LyBDcmVhdGUgYSB0ZW1wIGRpcmVjdG9yeSB0byBtYWtlIGEgYnVuZGxlIGluCisgICAgICAgIEZp
bGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGU7CisgICAgICAgIG1fcm9vdCA9IEZp
bGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJXZWJLaXQucmVzb3VyY2VzIiwgaGFuZGxlKTsK
KyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7CisgICAgICAgIEZpbGVTeXN0
ZW06OmRlbGV0ZUZpbGUobV9yb290KTsKKworICAgICAgICAvLyBDcmVhdGUgdGhlIGJ1bmRsZSBz
dHJ1Y3R1cmUKKyAgICAgICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKEZpbGVTeXN0
ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMobV9yb290LCB7ICJXZWJJbnNwZWN0b3JVSSIs
ICJQcm90b2NvbCIgfSkpOworICAgICAgICBhdXRvIGluc3BlY3RvckJhY2tlbmRGaWxlID0gRmls
ZVN5c3RlbTo6b3BlbkZpbGUoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyht
X3Jvb3QsIHsgIldlYkluc3BlY3RvclVJIiwgIlByb3RvY29sIiwgIkluc3BlY3RvckJhY2tlbmRD
b21tYW5kcy5qcyIgfSksIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6V3JpdGUpOworICAgICAg
ICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaW5zcGVjdG9yQmFja2VuZEZpbGUpOworICAgIH0KKwor
ICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgRmlsZVN5c3RlbTo6
ZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkobV9yb290KTsKKyAgICB9CisKK3Byb3RlY3RlZDoKKyAg
ICBTdHJpbmcgbV9yb290OworfTsKKworVEVTVF9GKFJlc291cmNlQnVuZGxlVGVzdCwgQnVuZGxl
UGF0aCkKK3sKKyAgICBhdXRvIGJ1bmRsZSA9IFdURjo6UmVzb3VyY2VCdW5kbGU6OmNyZWF0ZSht
X3Jvb3QpOworICAgIGF1dG8gYWN0dWFsID0gYnVuZGxlLT5idW5kbGVQYXRoKCk7CisgICAgRVhQ
RUNUX1RSVUUobV9yb290ID09IGFjdHVhbCk7Cit9CisKK1RFU1RfRihSZXNvdXJjZUJ1bmRsZVRl
c3QsIEJ1bmRsZVVSTCkKK3sKKyAgICBhdXRvIGJ1bmRsZSA9IFdURjo6UmVzb3VyY2VCdW5kbGU6
OmNyZWF0ZShtX3Jvb3QpOworICAgIGF1dG8gYWN0dWFsID0gYnVuZGxlLT5idW5kbGVVUkwoKTsK
KyAgICBFWFBFQ1RfVFJVRShVUkw6OmZpbGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgoU3RyaW5nVmll
dyhtX3Jvb3QpKSA9PSBhY3R1YWwpOworfQorCitURVNUX0YoUmVzb3VyY2VCdW5kbGVUZXN0LCBS
ZXNvdXJjZVBhdGgpCit7CisgICAgYXV0byBidW5kbGUgPSBXVEY6OlJlc291cmNlQnVuZGxlOjpj
cmVhdGUobV9yb290KTsKKyAgICBhdXRvIGFjdHVhbCA9IGJ1bmRsZS0+cmVzb3VyY2VQYXRoKCJJ
bnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMiLCAianMiLCBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnQoIldlYkluc3BlY3RvclVJIl9zLCAiUHJvdG9jb2wiX3MpKTsKKyAgICBhdXRv
IGV4cGVjdGVkID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhtX3Jvb3Qs
IHsgIldlYkluc3BlY3RvclVJIiwgIlByb3RvY29sIiwgIkluc3BlY3RvckJhY2tlbmRDb21tYW5k
cy5qcyIgfSk7CisgICAgRVhQRUNUX1RSVUUoZXhwZWN0ZWQgPT0gYWN0dWFsKTsKK30KKworVEVT
VF9GKFJlc291cmNlQnVuZGxlVGVzdCwgUmVzb3VyY2VVUkwpCit7CisgICAgYXV0byBidW5kbGUg
PSBXVEY6OlJlc291cmNlQnVuZGxlOjpjcmVhdGUobV9yb290KTsKKyAgICBhdXRvIGFjdHVhbCA9
IGJ1bmRsZS0+cmVzb3VyY2VVUkwoIkluc3BlY3RvckJhY2tlbmRDb21tYW5kcyIsICJqcyIsIEZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCgiV2ViSW5zcGVjdG9yVUkiX3MsICJQ
cm90b2NvbCJfcykpOworICAgIGF1dG8gZXhwZWN0ZWQgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnRzKG1fcm9vdCwgeyAiV2ViSW5zcGVjdG9yVUkiLCAiUHJvdG9jb2wiLCAi
SW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzIiB9KTsKKworICAgIEVYUEVDVF9UUlVFKFVSTDo6
ZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChTdHJpbmdWaWV3KGV4cGVjdGVkKSkgPT0gYWN0dWFs
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQo=
</data>
<flag name="review"
          id="475820"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449666</attachid>
            <date>2022-01-21 09:29:33 -0800</date>
            <delta_ts>2022-01-21 11:45:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176236.diff</filename>
            <type>text/plain</type>
            <size>27698</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggZWEzNWFkMjc5MGExLi5hN2ZjZWQ0NzY1NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIw
MjItMDEtMjEgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KKworICAgICAg
ICBBZGQgYSBSZXNvdXJjZUJ1bmRsZSBhYnN0cmFjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2MjM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBhbiBhYnN0cmFjdGlvbiBvdmVyIGEgQ0ZC
dW5kbGUuIElmIENvcmVGb3VuZGF0aW9uIGlzbid0IGF2YWlsYWJsZSB0aGVuIGl0IGVtdWxhdGVz
CisgICAgICAgIENGQnVuZGxlJ3MgYmVoYXZpb3IgdXNpbmcgRmlsZVN5c3RlbSBBUElzLgorCisg
ICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0NN
YWtlTGlzdHMudHh0OgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybVdpbi5jbWFrZToKKyAgICAgICAg
KiB3dGYvUmVzb3VyY2VCdW5kbGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdURjo6UmVzb3VyY2VC
dW5kbGU6OmNyZWF0ZSk6CisgICAgICAgIChXVEY6OlJlc291cmNlQnVuZGxlOjpSZXNvdXJjZUJ1
bmRsZSk6CisgICAgICAgIChXVEY6OlJlc291cmNlQnVuZGxlOjpidW5kbGVQYXRoIGNvbnN0KToK
KyAgICAgICAgKFdURjo6UmVzb3VyY2VCdW5kbGU6OmJ1bmRsZVVSTCBjb25zdCk6CisgICAgICAg
IChXVEY6OlJlc291cmNlQnVuZGxlOjpyZXNvdXJjZVBhdGggY29uc3QpOgorICAgICAgICAoV1RG
OjpSZXNvdXJjZUJ1bmRsZTo6cmVzb3VyY2VVUkwgY29uc3QpOgorICAgICAgICAqIHd0Zi9SZXNv
dXJjZUJ1bmRsZS5oOiBBZGRlZC4KKyAgICAgICAgKiB3dGYvY2YvUmVzb3VyY2VCdW5kbGVDRi5j
cHA6IEFkZGVkLgorICAgICAgICAoV1RGOjpSZXNvdXJjZUJ1bmRsZTo6Y3JlYXRlKToKKyAgICAg
ICAgKFdURjo6UmVzb3VyY2VCdW5kbGU6OlJlc291cmNlQnVuZGxlKToKKyAgICAgICAgKFdURjo6
UmVzb3VyY2VCdW5kbGU6OmJ1bmRsZVBhdGggY29uc3QpOgorICAgICAgICAoV1RGOjpSZXNvdXJj
ZUJ1bmRsZTo6YnVuZGxlVVJMIGNvbnN0KToKKyAgICAgICAgKFdURjo6UmVzb3VyY2VCdW5kbGU6
OnJlc291cmNlUGF0aCBjb25zdCk6CisgICAgICAgIChXVEY6OlJlc291cmNlQnVuZGxlOjpyZXNv
dXJjZVVSTCBjb25zdCk6CisKIDIwMjItMDEtMjAgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBh
cHBsZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBBY2NlbGVyYXRlZCBmaWx0ZXJzIGFyZSBlbmFi
bGVkIGJ5IHRoZSB3cm9uZyBzZXR0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCA1ODJjYTYyZmRlNmUuLmFiMTFjMTNlNGVmMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dU
Ri54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDgsMTIgKzEwOCwxNCBAQAogCQk5M0I1
QjQ1MTIyMTcxRUVBMDA0QjdBQTcgLyogTG9nZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjVCNDUwMjIxNzFFRTkwMDRCN0FBNyAvKiBMb2dn
ZXIuY3BwICovOyB9OwogCQk5M0YxOTkzRTE5RDc5NThEMDBDMjM5MEIgLyogU3RyaW5nVmlldy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0YxOTkz
RDE5RDc5NThEMDBDMjM5MEIgLyogU3RyaW5nVmlldy5jcHAgKi87IH07CiAJCTlCQzcwRjA1MTc2
QzM3OUQwMDEwMURFQyAvKiBBdG9tU3RyaW5nVGFibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUJDNzBGMDQxNzZDMzc5RDAwMTAxREVDIC8qIEF0
b21TdHJpbmdUYWJsZS5jcHAgKi87IH07CisJCUEzMTBGNzlFMjc5QTBBMTQwMENERDI1OSAvKiBS
ZXNvdXJjZUJ1bmRsZUNGLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEEzMTBGNzlEMjc5QTBBMTQwMENERDI1OSAvKiBSZXNvdXJjZUJ1bmRsZUNGLmNw
cCAqLzsgfTsKIAkJQTMyRDhGQTUyMUZGRkFCNDAwNzgwNjYyIC8qIFRocmVhZGluZ1BPU0lYLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzMkQ4RkE0
MjFGRkZBQjQwMDc4MDY2MiAvKiBUaHJlYWRpbmdQT1NJWC5jcHAgKi87IH07CiAJCUEzMzFEOTVC
MjFGMjQ5OTIwMDlGMDJBQSAvKiBGaWxlU3lzdGVtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzMzFEOTVBMjFGMjQ5OTIwMDlGMDJBQSAvKiBGaWxl
U3lzdGVtLmNwcCAqLzsgfTsKIAkJQTMzMUQ5NUQyMUYyNDlFNDAwOUYwMkFBIC8qIEZpbGVTeXN0
ZW1DRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
MzMxRDk1QzIxRjI0OUU0MDA5RjAyQUEgLyogRmlsZVN5c3RlbUNGLmNwcCAqLzsgfTsKIAkJQTMz
MUQ5NUYyMUYyNDlGNjAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1Db2NvYS5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzMzFEOTVFMjFGMjQ5RjYwMDlGMDJB
QSAvKiBGaWxlU3lzdGVtQ29jb2EubW0gKi87IH07CiAJCUEzMzFEOTYxMjFGMjRBMEEwMDlGMDJB
QSAvKiBGaWxlU3lzdGVtTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTMzMUQ5NjAyMUYyNEEwQTAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1NYWMubW0g
Ki87IH07CiAJCUEzMzFEOTY3MjFGMjRBQkQwMDlGMDJBQSAvKiBGaWxlU3lzdGVtUE9TSVguY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTMzMUQ5NjYy
MUYyNEFCRDAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1QT1NJWC5jcHAgKi87IH07CisJCUEzQTlCREZB
Mjc5OERERTgwMEMxREQwNiAvKiBSZXNvdXJjZUJ1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBM0E5QkRGODI3OThERERGMDBDMUREMDYgLyog
UmVzb3VyY2VCdW5kbGUuY3BwICovOyB9OwogCQlBM0I3MjVFQzk4NzQ0NkFEOTNGMUE0NDAgLyog
UmFuZG9tRGV2aWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEM4RjU5N0NBMkE1NzQxN0ZCQUI5MkZENiAvKiBSYW5kb21EZXZpY2UuY3BwICovOyB9
OwogCQlBM0U0REQ5MzFGM0E4MDM0MDBERUQwQjQgLyogVGV4dFN0cmVhbS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBM0U0REQ5MTFGM0E4MDM0MDBE
RUQwQjQgLyogVGV4dFN0cmVhbS5jcHAgKi87IH07CiAJCUEzRUU1QzNBMjFGRkFDNUYwMEZBQkQ2
MSAvKiBPU0FsbG9jYXRvclBPU0lYLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEEzRUU1QzM5MjFGRkFDNUUwMEZBQkQ2MSAvKiBPU0FsbG9jYXRvclBP
U0lYLmNwcCAqLzsgfTsKQEAgLTU1Myw2ICs1NTUsNyBAQAogCQlBMUI4OUI4NzIyMUUwMDBGMDBF
QjRDRUEgLyogU0RLVmFyaWFudC54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBh
dGggPSBTREtWYXJpYW50LnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
MzBENDEyQzFGMERFMEJBMDBCNzE5NTQgLyogU29mdExpbmtpbmcuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU29mdExpbmtpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTMwRDQxMkQxRjBERTEzRjAwQjcxOTU0IC8qIFNvZnRMaW5raW5nLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvZnRMaW5raW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUEzMTBGNzlEMjc5QTBBMTQwMENERDI1OSAvKiBSZXNvdXJjZUJ1bmRsZUNG
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291cmNlQnVuZGxl
Q0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMzJEOEZBNDIxRkZGQUI0MDA3
ODA2NjIgLyogVGhyZWFkaW5nUE9TSVguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gVGhyZWFkaW5nUE9TSVguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBMzMxRDk1OTIxRjI0OTkyMDA5RjAyQUEgLyogRmlsZVN5c3RlbS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBGaWxlU3lzdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUEzMzFEOTVBMjFGMjQ5OTIwMDlGMDJBQSAvKiBGaWxlU3lzdGVtLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpbGVTeXN0ZW0uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNTYxLDYgKzU2NCw4IEBACiAJCUEzMzFEOTYwMjFGMjRBMEEw
MDlGMDJBQSAvKiBGaWxlU3lzdGVtTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gRmlsZVN5c3RlbU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTMzMUQ5NjYyMUYyNEFCRDAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1QT1NJWC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlU3lzdGVtUE9TSVguY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMzZFMTZGNzIxNkZGODI4MDA4REQ4N0UgLyogV1RG
U2VtYXBob3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdURlNlbWFwaG9y
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBM0E5QkRGODI3OThERERGMDBDMURE
MDYgLyogUmVzb3VyY2VCdW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzb3VyY2VCdW5k
bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBM0E5QkRGOTI3OThERERGMDBD
MUREMDYgLyogUmVzb3VyY2VCdW5kbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VCdW5kbGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTNEMjczQjkyMUYyRUU5MTAwODY2OTcx
IC8qIE1ldGFkYXRhU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1ldGFk
YXRhU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzRTRERDkxMUYzQTgwMzQw
MERFRDBCNCAvKiBUZXh0U3RyZWFtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFRleHRTdHJlYW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBM0U0
REQ5MjFGM0E4MDM0MDBERUQwQjQgLyogVGV4dFN0cmVhbS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBUZXh0U3RyZWFtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC04ODcsNiArODkyLDcgQEAKIAkJCQk1QzFGMDU5MjIxNjQzNTZCMDAzOTMwMkMgLyogQ0ZVUkxF
eHRyYXMuaCAqLywKIAkJCQlBMzMxRDk1QzIxRjI0OUU0MDA5RjAyQUEgLyogRmlsZVN5c3RlbUNG
LmNwcCAqLywKIAkJCQlDMkJDRkM0MTFGNjFENjE2MDBDOTIyMkMgLyogTGFuZ3VhZ2VDRi5jcHAg
Ki8sCisJCQkJQTMxMEY3OUQyNzlBMEExNDAwQ0REMjU5IC8qIFJlc291cmNlQnVuZGxlQ0YuY3Bw
ICovLAogCQkJCTJDREVEMEVFMTgxMTVDMzgwMDREQkE3MCAvKiBSdW5Mb29wQ0YuY3BwICovLAog
CQkJCUEzRUU1QzNCMjFGRkFDN0MwMEZBQkQ2MSAvKiBTY2hlZHVsZVBhaXJDRi5jcHAgKi8sCiAJ
CQkJQkMzRkVCNUQyNjdGQ0QzNDAwNTQwMDZBIC8qIFNwYW5DRi5oICovLApAQCAtMTI5Myw2ICsx
Mjk5LDggQEAKIAkJCQlBOEE0NzMwMjE1MUE4MjVCMDA0MTIzRkYgLyogUmVmQ291bnRlZExlYWtD
b3VudGVyLmggKi8sCiAJCQkJODZGNDZGNUYxQTI4NDBFRTAwQ0NCRjIyIC8qIFJlZkNvdW50ZXIu
aCAqLywKIAkJCQlBOEE0NzMwMzE1MUE4MjVCMDA0MTIzRkYgLyogUmVmUHRyLmggKi8sCisJCQkJ
QTNBOUJERjgyNzk4RERERjAwQzFERDA2IC8qIFJlc291cmNlQnVuZGxlLmNwcCAqLywKKwkJCQlB
M0E5QkRGOTI3OThERERGMDBDMUREMDYgLyogUmVzb3VyY2VCdW5kbGUuaCAqLywKIAkJCQlGRTM4
NDIzNDIzMjVDQzgwMDA5REQ0NDUgLyogUmVzb3VyY2VVc2FnZS5oICovLAogCQkJCUE4QTQ3MzA1
MTUxQTgyNUIwMDQxMjNGRiAvKiBSZXRhaW5QdHIuaCAqLywKIAkJCQlFM0M1ODNDODI2MTI3QURE
MDBDNTc1NjggLyogUm9iaW5Ib29kSGFzaE1hcC5oICovLApAQCAtMTg2Miw2ICsxODcwLDcgQEAK
IAkJCQlBM0VFNUM0MDIxRkZBQ0EyMDBGQUJENjEgLyogU2NoZWR1bGVQYWlyTWFjLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEY2NkIyOEUxREM5N0JBQjAwNEExRDNGIC8qIFNlY29uZHMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEZBNkYzOEYyMENDNTgwRjAwQTAzRENEIC8qIFNlZ21lbnRlZFZl
Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBM0E5QkRGQTI3OThEREU4MDBDMUREMDYgLyog
UmVzb3VyY2VCdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0MjExNTFBODI1QjAw
NDEyM0ZGIC8qIFNIQTEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTMxMUJENTMxRUE3MUNBRDAw
NTI1MjgxIC8qIFNpZ25hbHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTc0ODc0NTIxN0EwQkRB
RTAwRkEwNENCIC8qIFNpeENoYXJhY3Rlckhhc2guY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xOTAx
LDYgKzE5MTAsNyBAQAogCQkJCTUyMUNDNkI0MjRBMjc4MDkwMDQzNzdENiAvKiBUcmFuc2xhdGVk
UHJvY2Vzcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkE2RjM5NTIwQ0NBQ0U5MDBBMDNEQ0Qg
LyogVW5pcXVlQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNDMEVFNzYyMTYyOUYxOTAw
QTFBODQyIC8qIFVSTC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBMzEwRjc5RTI3OUEwQTE0MDBD
REQyNTkgLyogUmVzb3VyY2VCdW5kbGVDRi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzFGMDU5
NTIxNjQzN0IzMDAzOTMwMkMgLyogVVJMQ0YuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNDMEVF
ODkyMTYyQkMyMjAwQTFBODQyIC8qIFVSTENvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUZB
RDNBRTIyMUI5NjM2NjAwQkVFMTc4IC8qIFVSTEhlbHBlcnMuY3BwIGluIFNvdXJjZXMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYvd3Rm
L0NNYWtlTGlzdHMudHh0CmluZGV4IDQ5ZTBjNzY2OTkzNi4uMzhlZGEwNmI4MTQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9D
TWFrZUxpc3RzLnR4dApAQCAtMjI1LDYgKzIyNSw3IEBAIHNldChXVEZfUFVCTElDX0hFQURFUlMK
ICAgICBSZWZDb3VudGVkTGVha0NvdW50ZXIuaAogICAgIFJlZkNvdW50ZXIuaAogICAgIFJlZlB0
ci5oCisgICAgUmVzb3VyY2VCdW5kbGUuaAogICAgIFJlc291cmNlVXNhZ2UuaAogICAgIFJldGFp
blB0ci5oCiAgICAgUm9iaW5Ib29kSGFzaE1hcC5oCkBAIC00NjAsNiArNDYxLDcgQEAgc2V0KFdU
Rl9TT1VSQ0VTCiAgICAgUmVhZFdyaXRlTG9jay5jcHAKICAgICBSZWZDb3VudGVkLmNwcAogICAg
IFJlZkNvdW50ZWRMZWFrQ291bnRlci5jcHAKKyAgICBSZXNvdXJjZUJ1bmRsZS5jcHAKICAgICBS
dW5Mb29wLmNwcAogICAgIFNIQTEuY3BwCiAgICAgU2FmZVN0cmVycm9yLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybVdpbi5jbWFrZQppbmRleCBjYzQzYTIxYzhlZmYuLjNiMjgwM2Q0NTlmNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1XaW4uY21ha2UKKysrIGIvU291cmNlL1dURi93dGYv
UGxhdGZvcm1XaW4uY21ha2UKQEAgLTQ1LDYgKzQ1LDcgQEAgaWYgKFVTRV9DRikKICAgICBsaXN0
KEFQUEVORCBXVEZfU09VUkNFUwogICAgICAgICBjZi9DRlVSTEV4dHJhcy5jcHAKICAgICAgICAg
Y2YvRmlsZVN5c3RlbUNGLmNwcAorICAgICAgICBjZi9SZXNvdXJjZUJ1bmRsZUNGLmNwcAogICAg
ICAgICBjZi9VUkxDRi5jcHAKIAogICAgICAgICB0ZXh0L2NmL0F0b21TdHJpbmdJbXBsQ0YuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9SZXNvdXJjZUJ1bmRsZS5jcHAgYi9Tb3VyY2Uv
V1RGL3d0Zi9SZXNvdXJjZUJ1bmRsZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi5kMTI0ZWMzM2IwNTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9SZXNvdXJjZUJ1bmRsZS5jcHAKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMiBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9y
IHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgPHd0Zi9SZXNvdXJjZUJ1bmRsZS5oPgorCisjaWYgIVVTRShDRikKKworI2luY2x1ZGUg
PHd0Zi9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgorCituYW1lc3BhY2UgV1RG
IHsKKworc3RkOjp1bmlxdWVfcHRyPFJlc291cmNlQnVuZGxlPiBSZXNvdXJjZUJ1bmRsZTo6Y3Jl
YXRlKFN0cmluZ1ZpZXcgcGF0aCkKK3sKKyAgICBhdXRvIHBhdGhTdHJpbmcgPSBwYXRoLnRvU3Ry
aW5nKCk7CisgICAgaWYgKCFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHBhdGhTdHJpbmcpKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVzb3Vy
Y2VCdW5kbGU+KG5ldyBSZXNvdXJjZUJ1bmRsZShXVEZNb3ZlKHBhdGhTdHJpbmcpKSk7Cit9CisK
K1Jlc291cmNlQnVuZGxlOjpSZXNvdXJjZUJ1bmRsZShTdHJpbmcgcm9vdCkKKyAgICA6IG1fcm9v
dChXVEZNb3ZlKHJvb3QpKQoreyB9CisKK1N0cmluZyBSZXNvdXJjZUJ1bmRsZTo6YnVuZGxlUGF0
aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcm9vdDsKK30KKworVVJMIFJlc291cmNlQnVuZGxl
OjpidW5kbGVVUkwoKSBjb25zdAoreworICAgIHJldHVybiBVUkw6OmZpbGVVUkxXaXRoRmlsZVN5
c3RlbVBhdGgobV9yb290KTsKK30KKworU3RyaW5nIFJlc291cmNlQnVuZGxlOjpyZXNvdXJjZVBh
dGgoU3RyaW5nVmlldyBuYW1lLCBTdHJpbmdWaWV3IHR5cGUsIFN0cmluZ1ZpZXcgZGlyZWN0b3J5
KSBjb25zdAoreworICAgIGF1dG8gZmlsZU5hbWUgPSBtYWtlU3RyaW5nKG5hbWUsICIuIl9zLCB0
eXBlKTsKKyAgICByZXR1cm4gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyht
X3Jvb3QsIHsgZGlyZWN0b3J5LCBmaWxlTmFtZSB9KTsKK30KKworVVJMIFJlc291cmNlQnVuZGxl
OjpyZXNvdXJjZVVSTChTdHJpbmdWaWV3IG5hbWUsIFN0cmluZ1ZpZXcgdHlwZSwgU3RyaW5nVmll
dyBkaXJlY3RvcnkpIGNvbnN0Cit7CisgICAgcmV0dXJuIFVSTDo6ZmlsZVVSTFdpdGhGaWxlU3lz
dGVtUGF0aChyZXNvdXJjZVBhdGgobmFtZSwgdHlwZSwgZGlyZWN0b3J5KSk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdURgorCisjZW5kaWYgLy8gIVVTRShDRikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL1Jlc291cmNlQnVuZGxlLmggYi9Tb3VyY2UvV1RGL3d0Zi9SZXNvdXJjZUJ1bmRsZS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOGZmNGUwYWEzYzFhCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvUmVzb3VyY2VCdW5kbGUuaApAQCAtMCww
ICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIFNvbnkgSW50ZXJhY3RpdmUgRW50
ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFt
ZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAor
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKKyNpZiBVU0Uo
Q0YpCisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgordHlwZWRlZiBzdHJ1Y3QgX19DRkJ1bmRs
ZSogQ0ZCdW5kbGVSZWY7CisjZWxzZQorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgor
I2VuZGlmCisKK25hbWVzcGFjZSBXVEYgeworCitjbGFzcyBSZXNvdXJjZUJ1bmRsZSBmaW5hbCB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgV1RGX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VCdW5kbGU+IGNyZWF0ZShTdHJp
bmdWaWV3KTsKKworI2lmIFVTRShDRikKKyAgICBvcGVyYXRvciBDRkJ1bmRsZVJlZigpIGNvbnN0
IHsgcmV0dXJuIG1fYnVuZGxlLmdldCgpOyB9CisjZW5kaWYKKworICAgIFdURl9FWFBPUlRfUFJJ
VkFURSBTdHJpbmcgYnVuZGxlUGF0aCgpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBV
UkwgYnVuZGxlVVJMKCkgY29uc3Q7CisKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHJl
c291cmNlUGF0aChTdHJpbmdWaWV3IG5hbWUsIFN0cmluZ1ZpZXcgdHlwZSwgU3RyaW5nVmlldyBk
aXJlY3RvcnkpIGNvbnN0OworICAgIFdURl9FWFBPUlRfUFJJVkFURSBVUkwgcmVzb3VyY2VVUkwo
U3RyaW5nVmlldyBuYW1lLCBTdHJpbmdWaWV3IHR5cGUsIFN0cmluZ1ZpZXcgZGlyZWN0b3J5KSBj
b25zdDsKKworcHJpdmF0ZToKKyNpZiBVU0UoQ0YpCisgICAgUmVzb3VyY2VCdW5kbGUoQ0ZCdW5k
bGVSZWYpOworICAgIFJldGFpblB0cjxDRkJ1bmRsZVJlZj4gbV9idW5kbGU7CisjZWxzZQorICAg
IFJlc291cmNlQnVuZGxlKFN0cmluZyk7CisgICAgU3RyaW5nIG1fcm9vdDsKKyNlbmRpZgorfTsK
KworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jZi9SZXNv
dXJjZUJ1bmRsZUNGLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2NmL1Jlc291cmNlQnVuZGxlQ0YuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZTZmZDRmNDllODljCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dURi93dGYvY2YvUmVzb3VyY2VCdW5kbGVDRi5jcHAK
QEAgLTAsMCArMSw5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBTb255IEludGVyYWN0
aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIg
dGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAg
IGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPHd0Zi9SZXNvdXJjZUJ1
bmRsZS5oPgorCisjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZCdW5kbGUuaD4KKyNpbmNsdWRl
IDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFj
ZSBXVEYgeworCitzdGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VCdW5kbGU+IFJlc291cmNlQnVuZGxl
OjpjcmVhdGUoU3RyaW5nVmlldyBwYXRoKQoreworICAgIGF1dG8gdXJsID0gYWRvcHRDRihDRlVS
TENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aCgKKyAgICAgICAga0NGQWxsb2NhdG9yRGVmYXVsdCwK
KyAgICAgICAgcGF0aC5jcmVhdGVDRlN0cmluZygpLmdldCgpLAorI2lmIFBMQVRGT1JNKFdJTikK
KyAgICAgICAga0NGVVJMV2luZG93c1BhdGhTdHlsZSwKKyNlbHNlCisgICAgICAgIGtDRlVSTFBP
U0lYUGF0aFN0eWxlLAorI2VuZGlmCisgICAgICAgIGZhbHNlKSk7CisKKyAgICBhdXRvIGJ1bmRs
ZSA9IENGQnVuZGxlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIHVybC5nZXQoKSk7CisgICAg
aWYgKCFidW5kbGUpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIHN0ZDo6
dW5pcXVlX3B0cjxSZXNvdXJjZUJ1bmRsZT4obmV3IFJlc291cmNlQnVuZGxlKGJ1bmRsZSkpOwor
fQorCitSZXNvdXJjZUJ1bmRsZTo6UmVzb3VyY2VCdW5kbGUoQ0ZCdW5kbGVSZWYgYnVuZGxlKQor
ICAgIDogbV9idW5kbGUoYWRvcHRDRihidW5kbGUpKQoreyB9CisKK1N0cmluZyBSZXNvdXJjZUJ1
bmRsZTo6YnVuZGxlUGF0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGJ1bmRsZVVSTCgpLmZpbGVT
eXN0ZW1QYXRoKCk7Cit9CisKK1VSTCBSZXNvdXJjZUJ1bmRsZTo6YnVuZGxlVVJMKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gYWRvcHRDRihDRkJ1bmRsZUNvcHlCdW5kbGVVUkwobV9idW5kbGUuZ2V0
KCkpKS5nZXQoKTsKK30KKworU3RyaW5nIFJlc291cmNlQnVuZGxlOjpyZXNvdXJjZVBhdGgoU3Ry
aW5nVmlldyBuYW1lLCBTdHJpbmdWaWV3IHR5cGUsIFN0cmluZ1ZpZXcgZGlyZWN0b3J5KSBjb25z
dAoreworICAgIGF1dG8gcmVzb3VyY2VVUkwgPSBhZG9wdENGKENGQnVuZGxlQ29weVJlc291cmNl
VVJMKG1fYnVuZGxlLmdldCgpLCBuYW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIHR5cGUuY3Jl
YXRlQ0ZTdHJpbmcoKS5nZXQoKSwgZGlyZWN0b3J5LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpKTsK
KyAgICBpZiAoIXJlc291cmNlVVJMKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBy
ZXR1cm4gYWRvcHRDRihDRlVSTENvcHlGaWxlU3lzdGVtUGF0aCgKKyAgICAgICAgcmVzb3VyY2VV
UkwuZ2V0KCksCisjaWYgUExBVEZPUk0oV0lOKQorICAgICAgICBrQ0ZVUkxXaW5kb3dzUGF0aFN0
eWxlCisjZWxzZQorICAgICAgICBrQ0ZVUkxQT1NJWFBhdGhTdHlsZQorI2VuZGlmCisgICAgKSku
Z2V0KCk7Cit9CisKK1VSTCBSZXNvdXJjZUJ1bmRsZTo6cmVzb3VyY2VVUkwoU3RyaW5nVmlldyBu
YW1lLCBTdHJpbmdWaWV3IHR5cGUsIFN0cmluZ1ZpZXcgZGlyZWN0b3J5KSBjb25zdAoreworICAg
IHJldHVybiBhZG9wdENGKENGQnVuZGxlQ29weVJlc291cmNlVVJMKG1fYnVuZGxlLmdldCgpLCBu
YW1lLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIHR5cGUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwg
ZGlyZWN0b3J5LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpKS5nZXQoKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggYTRjYjIyNGE3ZTY0Li5kMzQ5YjdlNTkzOTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMi0wMS0yMSAg
RG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgorCisgICAgICAgIEFkZCBhIFJl
c291cmNlQnVuZGxlIGFic3RyYWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzYyMzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgdGVzdHMgZm9yIFdURjo6UmVzb3VyY2VCdW5kbGUuCisKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1Jlc291cmNlQnVuZGxlLmNwcDogQWRkZWQuCisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorCiAyMDIyLTAxLTIxICBMYXVybyBNb3VyYSAg
PGxtb3VyYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtDTWFrZV0gQ2Fubm90IGxpbmsgbGliVGVz
dFJ1bm5lckluamVjdGVkQnVuZGxlLnNvIGluIG5vbiB1bmlmaWVkIGJ1aWxkCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0IGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9DTWFrZUxpc3RzLnR4dAppbmRleCBhMWE5MTQyZmZhOGIuLjk2YzkzOGNiZjBlZSAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CkBAIC03OSw2ICs3OSw3IEBAIHNldChUZXN0V1RGX1NP
VVJDRVMKICAgICBUZXN0cy9XVEYvUmVmQ291bnRlci5jcHAKICAgICBUZXN0cy9XVEYvUmVmTG9n
Z2VyLmNwcAogICAgIFRlc3RzL1dURi9SZWZQdHIuY3BwCisgICAgVGVzdHMvV1RGL1Jlc291cmNl
QnVuZGxlLmNwcAogICAgIFRlc3RzL1dURi9Sb2Jpbkhvb2RIYXNoTWFwLmNwcAogICAgIFRlc3Rz
L1dURi9Sb2Jpbkhvb2RIYXNoU2V0LmNwcAogICAgIFRlc3RzL1dURi9SdW5Mb29wLmNwcApkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCA2MDcxYzEyODNjZDIuLjExZDMwZTM2YTM1NSAxMDA2NDQK
LS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTgzMyw2ICs4MzMsNyBAQAogCQlBMUZCNTA0MzIyQTIxM0Ez
MDBENEQ5NzkgLyogYXBwbGUtcGF5LWNhbi1tYWtlLXBheW1lbnQuaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUZCNTA0MjIyQTIxMzhG
MDBENEQ5NzkgLyogYXBwbGUtcGF5LWNhbi1tYWtlLXBheW1lbnQuaHRtbCAqLzsgfTsKIAkJQTFG
QjUwNDUyMkEyMTU3MTAwRDREOTc5IC8qIGFwcGxlLXBheS5qcyBpbiBDb3B5IFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUZCNTA0NDIyQTIxNTRCMDBENEQ5
NzkgLyogYXBwbGUtcGF5LmpzICovOyB9OwogCQlBMzEwODI3MjIxRjI5NkZGMDBDMjhCOTcgLyog
RmlsZVN5c3RlbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBMzEwODI3MTIxRjI5NkVDMDBDMjhCOTcgLyogRmlsZVN5c3RlbS5jcHAgKi87IH07CisJ
CUEzQTlCREZDMjc5OERFMkQwMEMxREQwNiAvKiBSZXNvdXJjZUJ1bmRsZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBM0E5QkRGQjI3OThERTJEMDBD
MUREMDYgLyogUmVzb3VyY2VCdW5kbGUuY3BwICovOyB9OwogCQlBNTdBMzRGMjE2QUY2QjJCMDBD
MjUwMUYgLyogUGFnZVZpc2liaWxpdHlTdGF0ZVdpdGhXaW5kb3dDaGFuZ2VzLmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3QTM0RjEx
NkFGNjlFMjAwQzI1MDFGIC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5o
dG1sICovOyB9OwogCQlBNTdENTRGMzFGMzM4QzM2MDBBOTdBQTcgLyogTmV2ZXJEZXN0cm95ZWQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3RDU0
RjIxRjMzOEMzNjAwQTk3QUE3IC8qIE5ldmVyRGVzdHJveWVkLmNwcCAqLzsgfTsKIAkJQTU3RDU0
RjYxRjMzOTVEMDAwQTk3QUE3IC8qIExvZ2dlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTdENTRGNDFGMzM5NUQwMDBBOTdBQTcgLyogTG9nZ2Vy
LmNwcCAqLzsgfTsKQEAgLTI2NTcsNiArMjY1OCw3IEBACiAJCUExRkI1MDQ0MjJBMjE1NEIwMEQ0
RDk3OSAvKiBhcHBsZS1wYXkuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSAiYXBwbGUtcGF5Lmpz
Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFGREZEMkUxOUMyODhCQjAwNTE0OEE0
IC8qIFdLSW1hZ2VDcmVhdGVDR0ltYWdlQ3Jhc2guY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gV0tJbWFnZUNyZWF0ZUNHSW1hZ2VDcmFzaC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUEzMTA4MjcxMjFGMjk2RUMwMEMyOEI5NyAvKiBGaWxlU3lzdGVt
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpbGVTeXN0ZW0uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBM0E5QkRGQjI3OThERTJEMDBDMUREMDYg
LyogUmVzb3VyY2VCdW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmVzb3VyY2VCdW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTdB
MzRFRjE2QUY2NzcyMDBDMjUwMUYgLyogUGFnZVZpc2liaWxpdHlTdGF0ZVdpdGhXaW5kb3dDaGFu
Z2VzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGFnZVZpc2li
aWxpdHlTdGF0ZVdpdGhXaW5kb3dDaGFuZ2VzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBNTdBMzRGMTE2QUY2OUUyMDBDMjUwMUYgLyogUGFnZVZpc2liaWxpdHlTdGF0ZVdpdGhX
aW5kb3dDaGFuZ2VzLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBQYWdlVmlzaWJp
bGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXMuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTU3RDU0RjIxRjMzOEMzNjAwQTk3QUE3IC8qIE5ldmVyRGVzdHJveWVkLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IE5ldmVyRGVzdHJveWVkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTQ1ODEsNiArNDU4Myw3IEBACiAJCQkJNDQyQkJGNjgxQzkxQ0FEOTAwMTcwODdG
IC8qIFJlZkxvZ2dlci5jcHAgKi8sCiAJCQkJOTNBNDI3QUQxODBEQTYwRjAwQ0QyNEQ3IC8qIFJl
ZkxvZ2dlci5oICovLAogCQkJCTkzQTQyN0E4MTgwRDlCMDcwMENEMjRENyAvKiBSZWZQdHIuY3Bw
ICovLAorCQkJCUEzQTlCREZCMjc5OERFMkQwMEMxREQwNiAvKiBSZXNvdXJjZUJ1bmRsZS5jcHAg
Ki8sCiAJCQkJRTM1NUE2MzEyNjE1NzE4RjAwMUMxMTI5IC8qIFJvYmluSG9vZEhhc2hNYXAuY3Bw
ICovLAogCQkJCUUzNTVBNjJGMjYxNTcxNzQwMDFDMTEyOSAvKiBSb2Jpbkhvb2RIYXNoU2V0LmNw
cCAqLywKIAkJCQlFNEM5QUJDNzFCM0RCMTcxMDA0MEE5ODcgLyogUnVuTG9vcC5jcHAgKi8sCkBA
IC01MzU4LDYgKzUzNjEsNyBAQAogCQkJCTdDODNERjAyMUQwQTU5MEMwMEZFQkNGMyAvKiBPU09i
amVjdFB0ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0NDQ0OURDMjI3MThCNEI3MDBFODIxQjUg
LyogT1NPYmplY3RQdHJDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQ0NDQ5REMxMjcxOEI0
QjcwMEU4MjFCNSAvKiBPU09iamVjdFB0ckNvY29hQVJDLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJ
QTNBOUJERkMyNzk4REUyRDAwQzFERDA2IC8qIFJlc291cmNlQnVuZGxlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUUzMkI1NDkyMjI4MTBBQzQwMDhBRDcwMiAvKiBQYWNrZWQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRTM4RDY1Q0EyM0E0NUZBQTAwNjNENjlBIC8qIFBhY2tlZFJlZi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlFMzhENjVDQjIzQTQ1RkFBMDA2M0Q2OUEgLyogUGFja2VkUmVmUHRy
LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvUmVzb3VyY2VCdW5kbGUuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
UmVzb3VyY2VCdW5kbGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MC4uMGRmZThhMTQ3ZjE2Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvUmVzb3VyY2VCdW5kbGUuY3BwCkBAIC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjIgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBs
ZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKworI2luY2x1ZGUgIlRlc3QuaCIKKyNpbmNsdWRlIDx3dGYvRmlsZVN5c3RlbS5oPgorI2lu
Y2x1ZGUgPHd0Zi9SZXNvdXJjZUJ1bmRsZS5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKworbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitjbGFzcyBSZXNvdXJjZUJ1bmRsZVRlc3QgOiBwdWJs
aWMgdGVzdGluZzo6VGVzdCB7CitwdWJsaWM6CisgICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCisg
ICAgeworICAgICAgICAvLyBDcmVhdGUgYSB0ZW1wIGRpcmVjdG9yeSB0byBtYWtlIGEgYnVuZGxl
IGluCisgICAgICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBoYW5kbGU7CisgICAg
ICAgIG1fcm9vdCA9IEZpbGVTeXN0ZW06Om9wZW5UZW1wb3JhcnlGaWxlKCJXZWJLaXQucmVzb3Vy
Y2VzIiwgaGFuZGxlKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGhhbmRsZSk7Cisg
ICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZUZpbGUobV9yb290KTsKKworICAgICAgICAvLyBDcmVh
dGUgdGhlIGJ1bmRsZSBzdHJ1Y3R1cmUKKyAgICAgICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVj
dG9yaWVzKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMobV9yb290LCB7ICJX
ZWJJbnNwZWN0b3JVSSIsICJQcm90b2NvbCIgfSkpOworICAgICAgICBhdXRvIGluc3BlY3RvckJh
Y2tlbmRGaWxlID0gRmlsZVN5c3RlbTo6b3BlbkZpbGUoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5k
aW5nQ29tcG9uZW50cyhtX3Jvb3QsIHsgIldlYkluc3BlY3RvclVJIiwgIlByb3RvY29sIiwgIklu
c3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcyIgfSksIEZpbGVTeXN0ZW06OkZpbGVPcGVuTW9kZTo6
V3JpdGUpOworICAgICAgICBGaWxlU3lzdGVtOjpjbG9zZUZpbGUoaW5zcGVjdG9yQmFja2VuZEZp
bGUpOworICAgIH0KKworICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQorICAgIHsKKyAgICAg
ICAgRmlsZVN5c3RlbTo6ZGVsZXRlTm9uRW1wdHlEaXJlY3RvcnkobV9yb290KTsKKyAgICB9CisK
K3Byb3RlY3RlZDoKKyAgICBTdHJpbmcgbV9yb290OworfTsKKworVEVTVF9GKFJlc291cmNlQnVu
ZGxlVGVzdCwgQnVuZGxlUGF0aCkKK3sKKyAgICBhdXRvIGJ1bmRsZSA9IFdURjo6UmVzb3VyY2VC
dW5kbGU6OmNyZWF0ZShtX3Jvb3QpOworICAgIGF1dG8gYWN0dWFsID0gYnVuZGxlLT5idW5kbGVQ
YXRoKCk7CisgICAgRVhQRUNUX1RSVUUobV9yb290ID09IGFjdHVhbCk7Cit9CisKK1RFU1RfRihS
ZXNvdXJjZUJ1bmRsZVRlc3QsIEJ1bmRsZVVSTCkKK3sKKyAgICBhdXRvIGJ1bmRsZSA9IFdURjo6
UmVzb3VyY2VCdW5kbGU6OmNyZWF0ZShtX3Jvb3QpOworICAgIGF1dG8gYWN0dWFsID0gYnVuZGxl
LT5idW5kbGVVUkwoKTsKKyAgICBFWFBFQ1RfVFJVRShVUkw6OmZpbGVVUkxXaXRoRmlsZVN5c3Rl
bVBhdGgoU3RyaW5nVmlldyhtX3Jvb3QpKSA9PSBhY3R1YWwpOworfQorCitURVNUX0YoUmVzb3Vy
Y2VCdW5kbGVUZXN0LCBSZXNvdXJjZVBhdGgpCit7CisgICAgYXV0byBidW5kbGUgPSBXVEY6OlJl
c291cmNlQnVuZGxlOjpjcmVhdGUobV9yb290KTsKKyAgICBhdXRvIGFjdHVhbCA9IGJ1bmRsZS0+
cmVzb3VyY2VQYXRoKCJJbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMiLCAianMiLCBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoIldlYkluc3BlY3RvclVJIl9zLCAiUHJvdG9jb2wi
X3MpKTsKKyAgICBhdXRvIGV4cGVjdGVkID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50cyhtX3Jvb3QsIHsgIldlYkluc3BlY3RvclVJIiwgIlByb3RvY29sIiwgIkluc3BlY3Rv
ckJhY2tlbmRDb21tYW5kcy5qcyIgfSk7CisgICAgRVhQRUNUX1RSVUUoZXhwZWN0ZWQgPT0gYWN0
dWFsKTsKK30KKworVEVTVF9GKFJlc291cmNlQnVuZGxlVGVzdCwgUmVzb3VyY2VVUkwpCit7Cisg
ICAgYXV0byBidW5kbGUgPSBXVEY6OlJlc291cmNlQnVuZGxlOjpjcmVhdGUobV9yb290KTsKKyAg
ICBhdXRvIGFjdHVhbCA9IGJ1bmRsZS0+cmVzb3VyY2VVUkwoIkluc3BlY3RvckJhY2tlbmRDb21t
YW5kcyIsICJqcyIsIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudCgiV2ViSW5z
cGVjdG9yVUkiX3MsICJQcm90b2NvbCJfcykpOworICAgIGF1dG8gZXhwZWN0ZWQgPSBGaWxlU3lz
dGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKG1fcm9vdCwgeyAiV2ViSW5zcGVjdG9yVUki
LCAiUHJvdG9jb2wiLCAiSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzIiB9KTsKKworICAgIEVY
UEVDVF9UUlVFKFVSTDo6ZmlsZVVSTFdpdGhGaWxlU3lzdGVtUGF0aChTdHJpbmdWaWV3KGV4cGVj
dGVkKSkgPT0gYWN0dWFsKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQo=
</data>
<flag name="review"
          id="475824"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449677</attachid>
            <date>2022-01-21 11:45:31 -0800</date>
            <delta_ts>2022-01-21 11:54:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176236.diff</filename>
            <type>text/plain</type>
            <size>27471</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggZWEzNWFkMjc5MGExLi4wNDFjYTBhNGU4ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIw
MjItMDEtMjEgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KKworICAgICAg
ICBBZGQgYSBSZXNvdXJjZUJ1bmRsZSBhYnN0cmFjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2MjM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gQWRsZXIuCisKKyAgICAgICAgQWRkcyBhbiBhYnN0cmFjdGlvbiBvdmVyIGEgQ0ZCdW5k
bGUuIElmIENvcmVGb3VuZGF0aW9uIGlzbid0IGF2YWlsYWJsZSB0aGVuIGl0IGVtdWxhdGVzCisg
ICAgICAgIENGQnVuZGxlJ3MgYmVoYXZpb3IgdXNpbmcgRmlsZVN5c3RlbSBBUElzLgorCisgICAg
ICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0NNYWtl
TGlzdHMudHh0OgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybVdpbi5jbWFrZToKKyAgICAgICAgKiB3
dGYvUmVzb3VyY2VCdW5kbGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdURjo6UmVzb3VyY2VCdW5k
bGU6OmNyZWF0ZSk6CisgICAgICAgIChXVEY6OlJlc291cmNlQnVuZGxlOjpSZXNvdXJjZUJ1bmRs
ZSk6CisgICAgICAgIChXVEY6OlJlc291cmNlQnVuZGxlOjpidW5kbGVQYXRoIGNvbnN0KToKKyAg
ICAgICAgKFdURjo6UmVzb3VyY2VCdW5kbGU6OmJ1bmRsZVVSTCBjb25zdCk6CisgICAgICAgIChX
VEY6OlJlc291cmNlQnVuZGxlOjpyZXNvdXJjZVBhdGggY29uc3QpOgorICAgICAgICAoV1RGOjpS
ZXNvdXJjZUJ1bmRsZTo6cmVzb3VyY2VVUkwgY29uc3QpOgorICAgICAgICAqIHd0Zi9SZXNvdXJj
ZUJ1bmRsZS5oOiBBZGRlZC4KKyAgICAgICAgKiB3dGYvY2YvUmVzb3VyY2VCdW5kbGVDRi5jcHA6
IEFkZGVkLgorICAgICAgICAoV1RGOjpSZXNvdXJjZUJ1bmRsZTo6Y3JlYXRlKToKKyAgICAgICAg
KFdURjo6UmVzb3VyY2VCdW5kbGU6OlJlc291cmNlQnVuZGxlKToKKyAgICAgICAgKFdURjo6UmVz
b3VyY2VCdW5kbGU6OmJ1bmRsZVBhdGggY29uc3QpOgorICAgICAgICAoV1RGOjpSZXNvdXJjZUJ1
bmRsZTo6YnVuZGxlVVJMIGNvbnN0KToKKyAgICAgICAgKFdURjo6UmVzb3VyY2VCdW5kbGU6OnJl
c291cmNlUGF0aCBjb25zdCk6CisgICAgICAgIChXVEY6OlJlc291cmNlQnVuZGxlOjpyZXNvdXJj
ZVVSTCBjb25zdCk6CisKIDIwMjItMDEtMjAgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBs
ZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBBY2NlbGVyYXRlZCBmaWx0ZXJzIGFyZSBlbmFibGVk
IGJ5IHRoZSB3cm9uZyBzZXR0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCA1ODJjYTYyZmRlNmUuLmFiMTFjMTNlNGVmMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDgsMTIgKzEwOCwxNCBAQAogCQk5M0I1QjQ1
MTIyMTcxRUVBMDA0QjdBQTcgLyogTG9nZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjVCNDUwMjIxNzFFRTkwMDRCN0FBNyAvKiBMb2dnZXIu
Y3BwICovOyB9OwogCQk5M0YxOTkzRTE5RDc5NThEMDBDMjM5MEIgLyogU3RyaW5nVmlldy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0YxOTkzRDE5
RDc5NThEMDBDMjM5MEIgLyogU3RyaW5nVmlldy5jcHAgKi87IH07CiAJCTlCQzcwRjA1MTc2QzM3
OUQwMDEwMURFQyAvKiBBdG9tU3RyaW5nVGFibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUJDNzBGMDQxNzZDMzc5RDAwMTAxREVDIC8qIEF0b21T
dHJpbmdUYWJsZS5jcHAgKi87IH07CisJCUEzMTBGNzlFMjc5QTBBMTQwMENERDI1OSAvKiBSZXNv
dXJjZUJ1bmRsZUNGLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEEzMTBGNzlEMjc5QTBBMTQwMENERDI1OSAvKiBSZXNvdXJjZUJ1bmRsZUNGLmNwcCAq
LzsgfTsKIAkJQTMyRDhGQTUyMUZGRkFCNDAwNzgwNjYyIC8qIFRocmVhZGluZ1BPU0lYLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzMkQ4RkE0MjFG
RkZBQjQwMDc4MDY2MiAvKiBUaHJlYWRpbmdQT1NJWC5jcHAgKi87IH07CiAJCUEzMzFEOTVCMjFG
MjQ5OTIwMDlGMDJBQSAvKiBGaWxlU3lzdGVtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzMzFEOTVBMjFGMjQ5OTIwMDlGMDJBQSAvKiBGaWxlU3lz
dGVtLmNwcCAqLzsgfTsKIAkJQTMzMUQ5NUQyMUYyNDlFNDAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1D
Ri5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMzMx
RDk1QzIxRjI0OUU0MDA5RjAyQUEgLyogRmlsZVN5c3RlbUNGLmNwcCAqLzsgfTsKIAkJQTMzMUQ5
NUYyMUYyNDlGNjAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1Db2NvYS5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzMzFEOTVFMjFGMjQ5RjYwMDlGMDJBQSAv
KiBGaWxlU3lzdGVtQ29jb2EubW0gKi87IH07CiAJCUEzMzFEOTYxMjFGMjRBMEEwMDlGMDJBQSAv
KiBGaWxlU3lzdGVtTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTMzMUQ5NjAyMUYyNEEwQTAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1NYWMubW0gKi87
IH07CiAJCUEzMzFEOTY3MjFGMjRBQkQwMDlGMDJBQSAvKiBGaWxlU3lzdGVtUE9TSVguY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTMzMUQ5NjYyMUYy
NEFCRDAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1QT1NJWC5jcHAgKi87IH07CisJCUEzQTlCREZBMjc5
OERERTgwMEMxREQwNiAvKiBSZXNvdXJjZUJ1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBM0E5QkRGODI3OThERERGMDBDMUREMDYgLyogUmVz
b3VyY2VCdW5kbGUuY3BwICovOyB9OwogCQlBM0I3MjVFQzk4NzQ0NkFEOTNGMUE0NDAgLyogUmFu
ZG9tRGV2aWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEM4RjU5N0NBMkE1NzQxN0ZCQUI5MkZENiAvKiBSYW5kb21EZXZpY2UuY3BwICovOyB9Owog
CQlBM0U0REQ5MzFGM0E4MDM0MDBERUQwQjQgLyogVGV4dFN0cmVhbS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBM0U0REQ5MTFGM0E4MDM0MDBERUQw
QjQgLyogVGV4dFN0cmVhbS5jcHAgKi87IH07CiAJCUEzRUU1QzNBMjFGRkFDNUYwMEZBQkQ2MSAv
KiBPU0FsbG9jYXRvclBPU0lYLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEEzRUU1QzM5MjFGRkFDNUUwMEZBQkQ2MSAvKiBPU0FsbG9jYXRvclBPU0lY
LmNwcCAqLzsgfTsKQEAgLTU1Myw2ICs1NTUsNyBAQAogCQlBMUI4OUI4NzIyMUUwMDBGMDBFQjRD
RUEgLyogU0RLVmFyaWFudC54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGgg
PSBTREtWYXJpYW50LnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMzBE
NDEyQzFGMERFMEJBMDBCNzE5NTQgLyogU29mdExpbmtpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU29mdExpbmtpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTMwRDQxMkQxRjBERTEzRjAwQjcxOTU0IC8qIFNvZnRMaW5raW5nLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvZnRMaW5raW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUEzMTBGNzlEMjc5QTBBMTQwMENERDI1OSAvKiBSZXNvdXJjZUJ1bmRsZUNGLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291cmNlQnVuZGxlQ0Yu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMzJEOEZBNDIxRkZGQUI0MDA3ODA2
NjIgLyogVGhyZWFkaW5nUE9TSVguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gVGhyZWFkaW5nUE9TSVguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
MzMxRDk1OTIxRjI0OTkyMDA5RjAyQUEgLyogRmlsZVN5c3RlbS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBGaWxlU3lzdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUEzMzFEOTVBMjFGMjQ5OTIwMDlGMDJBQSAvKiBGaWxlU3lzdGVtLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpbGVTeXN0ZW0uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNTYxLDYgKzU2NCw4IEBACiAJCUEzMzFEOTYwMjFGMjRBMEEwMDlG
MDJBQSAvKiBGaWxlU3lzdGVtTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gRmlsZVN5c3RlbU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTMzMUQ5NjYyMUYyNEFCRDAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1QT1NJWC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlU3lzdGVtUE9TSVguY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBMzZFMTZGNzIxNkZGODI4MDA4REQ4N0UgLyogV1RGU2Vt
YXBob3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdURlNlbWFwaG9yZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBM0E5QkRGODI3OThERERGMDBDMUREMDYg
LyogUmVzb3VyY2VCdW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzb3VyY2VCdW5kbGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBM0E5QkRGOTI3OThERERGMDBDMURE
MDYgLyogUmVzb3VyY2VCdW5kbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VCdW5kbGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTNEMjczQjkyMUYyRUU5MTAwODY2OTcxIC8q
IE1ldGFkYXRhU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1ldGFkYXRh
U1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzRTRERDkxMUYzQTgwMzQwMERF
RDBCNCAvKiBUZXh0U3RyZWFtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFRleHRTdHJlYW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBM0U0REQ5
MjFGM0E4MDM0MDBERUQwQjQgLyogVGV4dFN0cmVhbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBUZXh0U3RyZWFtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04
ODcsNiArODkyLDcgQEAKIAkJCQk1QzFGMDU5MjIxNjQzNTZCMDAzOTMwMkMgLyogQ0ZVUkxFeHRy
YXMuaCAqLywKIAkJCQlBMzMxRDk1QzIxRjI0OUU0MDA5RjAyQUEgLyogRmlsZVN5c3RlbUNGLmNw
cCAqLywKIAkJCQlDMkJDRkM0MTFGNjFENjE2MDBDOTIyMkMgLyogTGFuZ3VhZ2VDRi5jcHAgKi8s
CisJCQkJQTMxMEY3OUQyNzlBMEExNDAwQ0REMjU5IC8qIFJlc291cmNlQnVuZGxlQ0YuY3BwICov
LAogCQkJCTJDREVEMEVFMTgxMTVDMzgwMDREQkE3MCAvKiBSdW5Mb29wQ0YuY3BwICovLAogCQkJ
CUEzRUU1QzNCMjFGRkFDN0MwMEZBQkQ2MSAvKiBTY2hlZHVsZVBhaXJDRi5jcHAgKi8sCiAJCQkJ
QkMzRkVCNUQyNjdGQ0QzNDAwNTQwMDZBIC8qIFNwYW5DRi5oICovLApAQCAtMTI5Myw2ICsxMjk5
LDggQEAKIAkJCQlBOEE0NzMwMjE1MUE4MjVCMDA0MTIzRkYgLyogUmVmQ291bnRlZExlYWtDb3Vu
dGVyLmggKi8sCiAJCQkJODZGNDZGNUYxQTI4NDBFRTAwQ0NCRjIyIC8qIFJlZkNvdW50ZXIuaCAq
LywKIAkJCQlBOEE0NzMwMzE1MUE4MjVCMDA0MTIzRkYgLyogUmVmUHRyLmggKi8sCisJCQkJQTNB
OUJERjgyNzk4RERERjAwQzFERDA2IC8qIFJlc291cmNlQnVuZGxlLmNwcCAqLywKKwkJCQlBM0E5
QkRGOTI3OThERERGMDBDMUREMDYgLyogUmVzb3VyY2VCdW5kbGUuaCAqLywKIAkJCQlGRTM4NDIz
NDIzMjVDQzgwMDA5REQ0NDUgLyogUmVzb3VyY2VVc2FnZS5oICovLAogCQkJCUE4QTQ3MzA1MTUx
QTgyNUIwMDQxMjNGRiAvKiBSZXRhaW5QdHIuaCAqLywKIAkJCQlFM0M1ODNDODI2MTI3QUREMDBD
NTc1NjggLyogUm9iaW5Ib29kSGFzaE1hcC5oICovLApAQCAtMTg2Miw2ICsxODcwLDcgQEAKIAkJ
CQlBM0VFNUM0MDIxRkZBQ0EyMDBGQUJENjEgLyogU2NoZWR1bGVQYWlyTWFjLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEY2NkIyOEUxREM5N0JBQjAwNEExRDNGIC8qIFNlY29uZHMuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZBNkYzOEYyMENDNTgwRjAwQTAzRENEIC8qIFNlZ21lbnRlZFZlY3Rv
ci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBM0E5QkRGQTI3OThEREU4MDBDMUREMDYgLyogUmVz
b3VyY2VCdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0MjExNTFBODI1QjAwNDEy
M0ZGIC8qIFNIQTEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTMxMUJENTMxRUE3MUNBRDAwNTI1
MjgxIC8qIFNpZ25hbHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTc0ODc0NTIxN0EwQkRBRTAw
RkEwNENCIC8qIFNpeENoYXJhY3Rlckhhc2guY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xOTAxLDYg
KzE5MTAsNyBAQAogCQkJCTUyMUNDNkI0MjRBMjc4MDkwMDQzNzdENiAvKiBUcmFuc2xhdGVkUHJv
Y2Vzcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkE2RjM5NTIwQ0NBQ0U5MDBBMDNEQ0QgLyog
VW5pcXVlQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNDMEVFNzYyMTYyOUYxOTAwQTFB
ODQyIC8qIFVSTC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBMzEwRjc5RTI3OUEwQTE0MDBDREQy
NTkgLyogUmVzb3VyY2VCdW5kbGVDRi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzFGMDU5NTIx
NjQzN0IzMDAzOTMwMkMgLyogVVJMQ0YuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNDMEVFODky
MTYyQkMyMjAwQTFBODQyIC8qIFVSTENvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUZBRDNB
RTIyMUI5NjM2NjAwQkVFMTc4IC8qIFVSTEhlbHBlcnMuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYvd3RmL0NN
YWtlTGlzdHMudHh0CmluZGV4IDQ5ZTBjNzY2OTkzNi4uMzhlZGEwNmI4MTQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFr
ZUxpc3RzLnR4dApAQCAtMjI1LDYgKzIyNSw3IEBAIHNldChXVEZfUFVCTElDX0hFQURFUlMKICAg
ICBSZWZDb3VudGVkTGVha0NvdW50ZXIuaAogICAgIFJlZkNvdW50ZXIuaAogICAgIFJlZlB0ci5o
CisgICAgUmVzb3VyY2VCdW5kbGUuaAogICAgIFJlc291cmNlVXNhZ2UuaAogICAgIFJldGFpblB0
ci5oCiAgICAgUm9iaW5Ib29kSGFzaE1hcC5oCkBAIC00NjAsNiArNDYxLDcgQEAgc2V0KFdURl9T
T1VSQ0VTCiAgICAgUmVhZFdyaXRlTG9jay5jcHAKICAgICBSZWZDb3VudGVkLmNwcAogICAgIFJl
ZkNvdW50ZWRMZWFrQ291bnRlci5jcHAKKyAgICBSZXNvdXJjZUJ1bmRsZS5jcHAKICAgICBSdW5M
b29wLmNwcAogICAgIFNIQTEuY3BwCiAgICAgU2FmZVN0cmVycm9yLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvUGxhdGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bVdpbi5jbWFrZQppbmRleCBjYzQzYTIxYzhlZmYuLjNiMjgwM2Q0NTlmNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvUGxhdGZvcm1XaW4uY21ha2UKKysrIGIvU291cmNlL1dURi93dGYvUGxh
dGZvcm1XaW4uY21ha2UKQEAgLTQ1LDYgKzQ1LDcgQEAgaWYgKFVTRV9DRikKICAgICBsaXN0KEFQ
UEVORCBXVEZfU09VUkNFUwogICAgICAgICBjZi9DRlVSTEV4dHJhcy5jcHAKICAgICAgICAgY2Yv
RmlsZVN5c3RlbUNGLmNwcAorICAgICAgICBjZi9SZXNvdXJjZUJ1bmRsZUNGLmNwcAogICAgICAg
ICBjZi9VUkxDRi5jcHAKIAogICAgICAgICB0ZXh0L2NmL0F0b21TdHJpbmdJbXBsQ0YuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9SZXNvdXJjZUJ1bmRsZS5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi9SZXNvdXJjZUJ1bmRsZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi5mYmI4MzNlZjgxYjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9S
ZXNvdXJjZUJ1bmRsZS5jcHAKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMiBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRo
ZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgPHd0Zi9SZXNvdXJjZUJ1bmRsZS5oPgorCisjaWYgIVVTRShDRikKKworI2luY2x1ZGUgPHd0
Zi9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgorCituYW1lc3BhY2UgV1RGIHsK
Kworc3RkOjp1bmlxdWVfcHRyPFJlc291cmNlQnVuZGxlPiBSZXNvdXJjZUJ1bmRsZTo6Y3JlYXRl
KFN0cmluZ1ZpZXcgcGF0aCkKK3sKKyAgICBhdXRvIHBhdGhTdHJpbmcgPSBwYXRoLnRvU3RyaW5n
KCk7CisgICAgaWYgKCFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHBhdGhTdHJpbmcpKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VC
dW5kbGU+KG5ldyBSZXNvdXJjZUJ1bmRsZShXVEZNb3ZlKHBhdGhTdHJpbmcpKSk7Cit9CisKK1Jl
c291cmNlQnVuZGxlOjpSZXNvdXJjZUJ1bmRsZShTdHJpbmcgcm9vdCkKKyAgICA6IG1fcm9vdChX
VEZNb3ZlKHJvb3QpKQoreyB9CisKK1N0cmluZyBSZXNvdXJjZUJ1bmRsZTo6YnVuZGxlUGF0aCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcm9vdDsKK30KKworVVJMIFJlc291cmNlQnVuZGxlOjpi
dW5kbGVVUkwoKSBjb25zdAoreworICAgIHJldHVybiBVUkw6OmZpbGVVUkxXaXRoRmlsZVN5c3Rl
bVBhdGgobV9yb290KTsKK30KKworU3RyaW5nIFJlc291cmNlQnVuZGxlOjpyZXNvdXJjZVBhdGgo
U3RyaW5nVmlldyBuYW1lLCBTdHJpbmdWaWV3IHR5cGUsIFN0cmluZ1ZpZXcgZGlyZWN0b3J5KSBj
b25zdAoreworICAgIGF1dG8gZmlsZU5hbWUgPSBtYWtlU3RyaW5nKG5hbWUsICIuIiwgdHlwZSk7
CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMobV9yb290
LCB7IGRpcmVjdG9yeSwgZmlsZU5hbWUgfSk7Cit9CisKK1VSTCBSZXNvdXJjZUJ1bmRsZTo6cmVz
b3VyY2VVUkwoU3RyaW5nVmlldyBuYW1lLCBTdHJpbmdWaWV3IHR5cGUsIFN0cmluZ1ZpZXcgZGly
ZWN0b3J5KSBjb25zdAoreworICAgIHJldHVybiBVUkw6OmZpbGVVUkxXaXRoRmlsZVN5c3RlbVBh
dGgocmVzb3VyY2VQYXRoKG5hbWUsIHR5cGUsIGRpcmVjdG9yeSkpOworfQorCit9IC8vIG5hbWVz
cGFjZSBXVEYKKworI2VuZGlmIC8vICFVU0UoQ0YpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9SZXNvdXJjZUJ1bmRsZS5oIGIvU291cmNlL1dURi93dGYvUmVzb3VyY2VCdW5kbGUuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjhmZjRlMGFhM2MxYQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL1Jlc291cmNlQnVuZGxlLmgKQEAgLTAsMCArMSw2
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBTb255IEludGVyYWN0aXZlIEVudGVydGFp
bm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2Yg
QXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQK
KyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCisjaWYgVVNFKENGKQor
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KK3R5cGVkZWYgc3RydWN0IF9fQ0ZCdW5kbGUqIENG
QnVuZGxlUmVmOworI2Vsc2UKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKyNlbmRp
ZgorCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgUmVzb3VyY2VCdW5kbGUgZmluYWwgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlc291cmNlQnVuZGxlPiBjcmVhdGUoU3RyaW5nVmll
dyk7CisKKyNpZiBVU0UoQ0YpCisgICAgb3BlcmF0b3IgQ0ZCdW5kbGVSZWYoKSBjb25zdCB7IHJl
dHVybiBtX2J1bmRsZS5nZXQoKTsgfQorI2VuZGlmCisKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
U3RyaW5nIGJ1bmRsZVBhdGgoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgVVJMIGJ1
bmRsZVVSTCgpIGNvbnN0OworCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyByZXNvdXJj
ZVBhdGgoU3RyaW5nVmlldyBuYW1lLCBTdHJpbmdWaWV3IHR5cGUsIFN0cmluZ1ZpZXcgZGlyZWN0
b3J5KSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgVVJMIHJlc291cmNlVVJMKFN0cmlu
Z1ZpZXcgbmFtZSwgU3RyaW5nVmlldyB0eXBlLCBTdHJpbmdWaWV3IGRpcmVjdG9yeSkgY29uc3Q7
CisKK3ByaXZhdGU6CisjaWYgVVNFKENGKQorICAgIFJlc291cmNlQnVuZGxlKENGQnVuZGxlUmVm
KTsKKyAgICBSZXRhaW5QdHI8Q0ZCdW5kbGVSZWY+IG1fYnVuZGxlOworI2Vsc2UKKyAgICBSZXNv
dXJjZUJ1bmRsZShTdHJpbmcpOworICAgIFN0cmluZyBtX3Jvb3Q7CisjZW5kaWYKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY2YvUmVzb3VyY2VC
dW5kbGVDRi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9jZi9SZXNvdXJjZUJ1bmRsZUNGLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjBhZTRlNTRlNDJhMgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NmL1Jlc291cmNlQnVuZGxlQ0YuY3BwCkBAIC0w
LDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgU29ueSBJbnRlcmFjdGl2ZSBF
bnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBu
YW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
CisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDx3dGYvUmVzb3VyY2VCdW5kbGUu
aD4KKworI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGQnVuZGxlLmg+CisjaW5jbHVkZSA8d3Rm
L1VSTC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV1RG
IHsKKworI2lmIE9TKFdJTkRPV1MpCitjb25zdGV4cHIgYXV0byBwYXRoU3R5bGUgPSBrQ0ZVUkxX
aW5kb3dzUGF0aFN0eWxlOworI2Vsc2UKK2NvbnN0ZXhwciBhdXRvIHBhdGhTdHlsZSA9IGtDRlVS
TFBPU0lYUGF0aFN0eWxlOworI2VuZGlmCisKK3N0ZDo6dW5pcXVlX3B0cjxSZXNvdXJjZUJ1bmRs
ZT4gUmVzb3VyY2VCdW5kbGU6OmNyZWF0ZShTdHJpbmdWaWV3IHBhdGgpCit7CisgICAgYXV0byB1
cmwgPSBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIHBhdGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgcGF0aFN0eWxlLCBmYWxzZSkpOwor
CisgICAgYXV0byBidW5kbGUgPSBDRkJ1bmRsZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB1
cmwuZ2V0KCkpOworICAgIGlmICghYnVuZGxlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VCdW5kbGU+KG5ldyBSZXNvdXJjZUJ1
bmRsZShidW5kbGUpKTsKK30KKworUmVzb3VyY2VCdW5kbGU6OlJlc291cmNlQnVuZGxlKENGQnVu
ZGxlUmVmIGJ1bmRsZSkKKyAgICA6IG1fYnVuZGxlKGFkb3B0Q0YoYnVuZGxlKSkKK3sgfQorCitT
dHJpbmcgUmVzb3VyY2VCdW5kbGU6OmJ1bmRsZVBhdGgoKSBjb25zdAoreworICAgIHJldHVybiBi
dW5kbGVVUkwoKS5maWxlU3lzdGVtUGF0aCgpOworfQorCitVUkwgUmVzb3VyY2VCdW5kbGU6OmJ1
bmRsZVVSTCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZCdW5kbGVDb3B5QnVuZGxl
VVJMKG1fYnVuZGxlLmdldCgpKSkuZ2V0KCk7Cit9CisKK1N0cmluZyBSZXNvdXJjZUJ1bmRsZTo6
cmVzb3VyY2VQYXRoKFN0cmluZ1ZpZXcgbmFtZSwgU3RyaW5nVmlldyB0eXBlLCBTdHJpbmdWaWV3
IGRpcmVjdG9yeSkgY29uc3QKK3sKKyAgICBhdXRvIHJlc291cmNlVVJMID0gYWRvcHRDRihDRkJ1
bmRsZUNvcHlSZXNvdXJjZVVSTChtX2J1bmRsZS5nZXQoKSwgbmFtZS5jcmVhdGVDRlN0cmluZygp
LmdldCgpLCB0eXBlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGRpcmVjdG9yeS5jcmVhdGVDRlN0
cmluZygpLmdldCgpKSk7CisgICAgaWYgKCFyZXNvdXJjZVVSTCkKKyAgICAgICAgcmV0dXJuIFN0
cmluZygpOworCisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZVUkxDb3B5RmlsZVN5c3RlbVBhdGgocmVz
b3VyY2VVUkwuZ2V0KCksIHBhdGhTdHlsZSkpLmdldCgpOworfQorCitVUkwgUmVzb3VyY2VCdW5k
bGU6OnJlc291cmNlVVJMKFN0cmluZ1ZpZXcgbmFtZSwgU3RyaW5nVmlldyB0eXBlLCBTdHJpbmdW
aWV3IGRpcmVjdG9yeSkgY29uc3QKK3sKKyAgICByZXR1cm4gYWRvcHRDRihDRkJ1bmRsZUNvcHlS
ZXNvdXJjZVVSTChtX2J1bmRsZS5nZXQoKSwgbmFtZS5jcmVhdGVDRlN0cmluZygpLmdldCgpLCB0
eXBlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGRpcmVjdG9yeS5jcmVhdGVDRlN0cmluZygpLmdl
dCgpKSkuZ2V0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGE0Y2IyMjRhN2U2NC4uNWU3YzZlZDA5
MmVmIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMjItMDEtMjEgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBz
b255LmNvbT4KKworICAgICAgICBBZGQgYSBSZXNvdXJjZUJ1bmRsZSBhYnN0cmFjdGlvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2MjM2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgQWRkIHRlc3RzIGZvciBX
VEY6OlJlc291cmNlQnVuZGxlLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9DTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZXNvdXJj
ZUJ1bmRsZS5jcHA6IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKwog
MjAyMi0wMS0yMSAgTGF1cm8gTW91cmEgIDxsbW91cmFAaWdhbGlhLmNvbT4KIAogICAgICAgICBb
Q01ha2VdIENhbm5vdCBsaW5rIGxpYlRlc3RSdW5uZXJJbmplY3RlZEJ1bmRsZS5zbyBpbiBub24g
dW5pZmllZCBidWlsZApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3Rz
LnR4dCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKaW5kZXggYTFhOTE0MmZm
YThiLi45NmM5MzhjYmYwZWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VM
aXN0cy50eHQKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dApAQCAtNzks
NiArNzksNyBAQCBzZXQoVGVzdFdURl9TT1VSQ0VTCiAgICAgVGVzdHMvV1RGL1JlZkNvdW50ZXIu
Y3BwCiAgICAgVGVzdHMvV1RGL1JlZkxvZ2dlci5jcHAKICAgICBUZXN0cy9XVEYvUmVmUHRyLmNw
cAorICAgIFRlc3RzL1dURi9SZXNvdXJjZUJ1bmRsZS5jcHAKICAgICBUZXN0cy9XVEYvUm9iaW5I
b29kSGFzaE1hcC5jcHAKICAgICBUZXN0cy9XVEYvUm9iaW5Ib29kSGFzaFNldC5jcHAKICAgICBU
ZXN0cy9XVEYvUnVuTG9vcC5jcHAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjA3MWMxMjgz
Y2QyLi4xMWQzMGUzNmEzNTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04MzMsNiArODMz
LDcgQEAKIAkJQTFGQjUwNDMyMkEyMTNBMzAwRDREOTc5IC8qIGFwcGxlLXBheS1jYW4tbWFrZS1w
YXltZW50Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTFGQjUwNDIyMkEyMTM4RjAwRDREOTc5IC8qIGFwcGxlLXBheS1jYW4tbWFrZS1w
YXltZW50Lmh0bWwgKi87IH07CiAJCUExRkI1MDQ1MjJBMjE1NzEwMEQ0RDk3OSAvKiBhcHBsZS1w
YXkuanMgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTFGQjUwNDQyMkEyMTU0QjAwRDREOTc5IC8qIGFwcGxlLXBheS5qcyAqLzsgfTsKIAkJQTMx
MDgyNzIyMUYyOTZGRjAwQzI4Qjk3IC8qIEZpbGVTeXN0ZW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTMxMDgyNzEyMUYyOTZFQzAwQzI4Qjk3IC8q
IEZpbGVTeXN0ZW0uY3BwICovOyB9OworCQlBM0E5QkRGQzI3OThERTJEMDBDMUREMDYgLyogUmVz
b3VyY2VCdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTNBOUJERkIyNzk4REUyRDAwQzFERDA2IC8qIFJlc291cmNlQnVuZGxlLmNwcCAqLzsg
fTsKIAkJQTU3QTM0RjIxNkFGNkIyQjAwQzI1MDFGIC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRo
V2luZG93Q2hhbmdlcy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE1N0EzNEYxMTZBRjY5RTIwMEMyNTAxRiAvKiBQYWdlVmlzaWJpbGl0
eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXMuaHRtbCAqLzsgfTsKIAkJQTU3RDU0RjMxRjMzOEMzNjAw
QTk3QUE3IC8qIE5ldmVyRGVzdHJveWVkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE1N0Q1NEYyMUYzMzhDMzYwMEE5N0FBNyAvKiBOZXZlckRlc3Ry
b3llZC5jcHAgKi87IH07CiAJCUE1N0Q1NEY2MUYzMzk1RDAwMEE5N0FBNyAvKiBMb2dnZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3RDU0RjQx
RjMzOTVEMDAwQTk3QUE3IC8qIExvZ2dlci5jcHAgKi87IH07CkBAIC0yNjU3LDYgKzI2NTgsNyBA
QAogCQlBMUZCNTA0NDIyQTIxNTRCMDBENEQ5NzkgLyogYXBwbGUtcGF5LmpzICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2Ny
aXB0OyBwYXRoID0gImFwcGxlLXBheS5qcyI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUExRkRGRDJFMTlDMjg4QkIwMDUxNDhBNCAvKiBXS0ltYWdlQ3JlYXRlQ0dJbWFnZUNyYXNoLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLSW1hZ2VDcmVhdGVDR0lt
YWdlQ3Jhc2guY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMzEwODI3MTIxRjI5
NkVDMDBDMjhCOTcgLyogRmlsZVN5c3RlbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBGaWxlU3lzdGVtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QTNBOUJERkIyNzk4REUyRDAwQzFERDA2IC8qIFJlc291cmNlQnVuZGxlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291cmNlQnVuZGxlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU3QTM0RUYxNkFGNjc3MjAwQzI1MDFGIC8qIFBhZ2VWaXNp
YmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU3QTM0RjExNkFGNjlFMjAwQzI1MDFGIC8q
IFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5odG1sICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dC5odG1sOyBwYXRoID0gUGFnZVZpc2liaWxpdHlTdGF0ZVdpdGhXaW5kb3dDaGFuZ2VzLmh0bWw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1N0Q1NEYyMUYzMzhDMzYwMEE5N0FBNyAv
KiBOZXZlckRlc3Ryb3llZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXZlckRlc3Ryb3llZC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NTgxLDYgKzQ1ODMsNyBAQAogCQkJ
CTQ0MkJCRjY4MUM5MUNBRDkwMDE3MDg3RiAvKiBSZWZMb2dnZXIuY3BwICovLAogCQkJCTkzQTQy
N0FEMTgwREE2MEYwMENEMjRENyAvKiBSZWZMb2dnZXIuaCAqLywKIAkJCQk5M0E0MjdBODE4MEQ5
QjA3MDBDRDI0RDcgLyogUmVmUHRyLmNwcCAqLywKKwkJCQlBM0E5QkRGQjI3OThERTJEMDBDMURE
MDYgLyogUmVzb3VyY2VCdW5kbGUuY3BwICovLAogCQkJCUUzNTVBNjMxMjYxNTcxOEYwMDFDMTEy
OSAvKiBSb2Jpbkhvb2RIYXNoTWFwLmNwcCAqLywKIAkJCQlFMzU1QTYyRjI2MTU3MTc0MDAxQzEx
MjkgLyogUm9iaW5Ib29kSGFzaFNldC5jcHAgKi8sCiAJCQkJRTRDOUFCQzcxQjNEQjE3MTAwNDBB
OTg3IC8qIFJ1bkxvb3AuY3BwICovLApAQCAtNTM1OCw2ICs1MzYxLDcgQEAKIAkJCQk3QzgzREYw
MjFEMEE1OTBDMDBGRUJDRjMgLyogT1NPYmplY3RQdHIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NDQ0NDlEQzIyNzE4QjRCNzAwRTgyMUI1IC8qIE9TT2JqZWN0UHRyQ29jb2EubW0gaW4gU291cmNl
cyAqLywKIAkJCQk0NDQ0OURDMTI3MThCNEI3MDBFODIxQjUgLyogT1NPYmplY3RQdHJDb2NvYUFS
Qy5tbSBpbiBTb3VyY2VzICovLAorCQkJCUEzQTlCREZDMjc5OERFMkQwMEMxREQwNiAvKiBSZXNv
dXJjZUJ1bmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMzJCNTQ5MjIyODEwQUM0MDA4QUQ3
MDIgLyogUGFja2VkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUzOEQ2NUNBMjNBNDVGQUEwMDYz
RDY5QSAvKiBQYWNrZWRSZWYuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTM4RDY1Q0IyM0E0NUZB
QTAwNjNENjlBIC8qIFBhY2tlZFJlZlB0ci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1Jlc291cmNlQnVuZGxlLmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1Jlc291cmNlQnVuZGxlLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjNhNTMzZDZjZDZiZQotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1Jlc291cmNlQnVuZGxlLmNwcApAQCAt
MCwwICsxLDg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIFNvbnkgSW50ZXJhY3RpdmUg
RW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUg
bmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRz
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJUZXN0LmgiCisjaW5jbHVk
ZSA8d3RmL0ZpbGVTeXN0ZW0uaD4KKyNpbmNsdWRlIDx3dGYvUmVzb3VyY2VCdW5kbGUuaD4KKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworY2xhc3Mg
UmVzb3VyY2VCdW5kbGVUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworcHVibGljOgorICAg
IHZvaWQgU2V0VXAoKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgLy8gQ3JlYXRlIGEgdGVtcCBk
aXJlY3RvcnkgdG8gbWFrZSBhIGJ1bmRsZSBpbgorICAgICAgICBGaWxlU3lzdGVtOjpQbGF0Zm9y
bUZpbGVIYW5kbGUgaGFuZGxlOworICAgICAgICBtX3Jvb3QgPSBGaWxlU3lzdGVtOjpvcGVuVGVt
cG9yYXJ5RmlsZSgiV2ViS2l0LnJlc291cmNlcyIsIGhhbmRsZSk7CisgICAgICAgIEZpbGVTeXN0
ZW06OmNsb3NlRmlsZShoYW5kbGUpOworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVGaWxlKG1f
cm9vdCk7CisKKyAgICAgICAgLy8gQ3JlYXRlIHRoZSBidW5kbGUgc3RydWN0dXJlCisgICAgICAg
IEZpbGVTeXN0ZW06Om1ha2VBbGxEaXJlY3RvcmllcyhGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRp
bmdDb21wb25lbnRzKG1fcm9vdCwgeyAiV2ViSW5zcGVjdG9yVUkiLCAiUHJvdG9jb2wiIH0pKTsK
KyAgICAgICAgYXV0byBpbnNwZWN0b3JCYWNrZW5kRmlsZSA9IEZpbGVTeXN0ZW06Om9wZW5GaWxl
KEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMobV9yb290LCB7ICJXZWJJbnNw
ZWN0b3JVSSIsICJQcm90b2NvbCIsICJJbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMiIH0pLCBG
aWxlU3lzdGVtOjpGaWxlT3Blbk1vZGU6OldyaXRlKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6Y2xv
c2VGaWxlKGluc3BlY3RvckJhY2tlbmRGaWxlKTsKKyAgICB9CisKKyAgICB2b2lkIFRlYXJEb3du
KCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIEZpbGVTeXN0ZW06OmRlbGV0ZU5vbkVtcHR5RGly
ZWN0b3J5KG1fcm9vdCk7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgU3RyaW5nIG1fcm9vdDsK
K307CisKK1RFU1RfRihSZXNvdXJjZUJ1bmRsZVRlc3QsIEJ1bmRsZVBhdGgpCit7CisgICAgYXV0
byBidW5kbGUgPSBXVEY6OlJlc291cmNlQnVuZGxlOjpjcmVhdGUobV9yb290KTsKKyAgICBhdXRv
IGFjdHVhbCA9IGJ1bmRsZS0+YnVuZGxlUGF0aCgpOworICAgIEVYUEVDVF9TVFJFUShtX3Jvb3Qu
dXRmOCgpLmRhdGEoKSwgYWN0dWFsLnV0ZjgoKS5kYXRhKCkpOworfQorCitURVNUX0YoUmVzb3Vy
Y2VCdW5kbGVUZXN0LCBSZXNvdXJjZVBhdGgpCit7CisgICAgYXV0byBidW5kbGUgPSBXVEY6OlJl
c291cmNlQnVuZGxlOjpjcmVhdGUobV9yb290KTsKKyAgICBhdXRvIGFjdHVhbCA9IGJ1bmRsZS0+
cmVzb3VyY2VQYXRoKCJJbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMiLCAianMiLCBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQoIldlYkluc3BlY3RvclVJIl9zLCAiUHJvdG9jb2wi
X3MpKTsKKyAgICBhdXRvIGV4cGVjdGVkID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50cyhtX3Jvb3QsIHsgIldlYkluc3BlY3RvclVJIiwgIlByb3RvY29sIiwgIkluc3BlY3Rv
ckJhY2tlbmRDb21tYW5kcy5qcyIgfSk7CisgICAgRVhQRUNUX1NUUkVRKGV4cGVjdGVkLnV0Zjgo
KS5kYXRhKCksIGFjdHVhbC51dGY4KCkuZGF0YSgpKTsKK30KKworVEVTVF9GKFJlc291cmNlQnVu
ZGxlVGVzdCwgUmVzb3VyY2VVUkwpCit7CisgICAgYXV0byBidW5kbGUgPSBXVEY6OlJlc291cmNl
QnVuZGxlOjpjcmVhdGUobV9yb290KTsKKyAgICBhdXRvIGFjdHVhbCA9IGJ1bmRsZS0+cmVzb3Vy
Y2VVUkwoIkluc3BlY3RvckJhY2tlbmRDb21tYW5kcyIsICJqcyIsIEZpbGVTeXN0ZW06OnBhdGhC
eUFwcGVuZGluZ0NvbXBvbmVudCgiV2ViSW5zcGVjdG9yVUkiX3MsICJQcm90b2NvbCJfcykpOwor
ICAgIGF1dG8gZXhwZWN0ZWQgPSBVUkw6OmZpbGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgoRmlsZVN5
c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50cyhtX3Jvb3QsIHsgIldlYkluc3BlY3RvclVJ
IiwgIlByb3RvY29sIiwgIkluc3BlY3RvckJhY2tlbmRDb21tYW5kcy5qcyIgfSkpOworICAgIEVY
UEVDVF9TVFJFUShleHBlY3RlZC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBhY3R1YWwuc3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449678</attachid>
            <date>2022-01-21 11:54:09 -0800</date>
            <delta_ts>2022-01-21 11:54:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176236.diff</filename>
            <type>text/plain</type>
            <size>27466</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggZWEzNWFkMjc5MGExLi4wNDFjYTBhNGU4ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIw
MjItMDEtMjEgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1zdGVhZEBzb255LmNvbT4KKworICAgICAg
ICBBZGQgYSBSZXNvdXJjZUJ1bmRsZSBhYnN0cmFjdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2MjM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gQWRsZXIuCisKKyAgICAgICAgQWRkcyBhbiBhYnN0cmFjdGlvbiBvdmVyIGEgQ0ZCdW5k
bGUuIElmIENvcmVGb3VuZGF0aW9uIGlzbid0IGF2YWlsYWJsZSB0aGVuIGl0IGVtdWxhdGVzCisg
ICAgICAgIENGQnVuZGxlJ3MgYmVoYXZpb3IgdXNpbmcgRmlsZVN5c3RlbSBBUElzLgorCisgICAg
ICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0NNYWtl
TGlzdHMudHh0OgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybVdpbi5jbWFrZToKKyAgICAgICAgKiB3
dGYvUmVzb3VyY2VCdW5kbGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdURjo6UmVzb3VyY2VCdW5k
bGU6OmNyZWF0ZSk6CisgICAgICAgIChXVEY6OlJlc291cmNlQnVuZGxlOjpSZXNvdXJjZUJ1bmRs
ZSk6CisgICAgICAgIChXVEY6OlJlc291cmNlQnVuZGxlOjpidW5kbGVQYXRoIGNvbnN0KToKKyAg
ICAgICAgKFdURjo6UmVzb3VyY2VCdW5kbGU6OmJ1bmRsZVVSTCBjb25zdCk6CisgICAgICAgIChX
VEY6OlJlc291cmNlQnVuZGxlOjpyZXNvdXJjZVBhdGggY29uc3QpOgorICAgICAgICAoV1RGOjpS
ZXNvdXJjZUJ1bmRsZTo6cmVzb3VyY2VVUkwgY29uc3QpOgorICAgICAgICAqIHd0Zi9SZXNvdXJj
ZUJ1bmRsZS5oOiBBZGRlZC4KKyAgICAgICAgKiB3dGYvY2YvUmVzb3VyY2VCdW5kbGVDRi5jcHA6
IEFkZGVkLgorICAgICAgICAoV1RGOjpSZXNvdXJjZUJ1bmRsZTo6Y3JlYXRlKToKKyAgICAgICAg
KFdURjo6UmVzb3VyY2VCdW5kbGU6OlJlc291cmNlQnVuZGxlKToKKyAgICAgICAgKFdURjo6UmVz
b3VyY2VCdW5kbGU6OmJ1bmRsZVBhdGggY29uc3QpOgorICAgICAgICAoV1RGOjpSZXNvdXJjZUJ1
bmRsZTo6YnVuZGxlVVJMIGNvbnN0KToKKyAgICAgICAgKFdURjo6UmVzb3VyY2VCdW5kbGU6OnJl
c291cmNlUGF0aCBjb25zdCk6CisgICAgICAgIChXVEY6OlJlc291cmNlQnVuZGxlOjpyZXNvdXJj
ZVVSTCBjb25zdCk6CisKIDIwMjItMDEtMjAgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBs
ZS5jb20+CiAKICAgICAgICAgW0NvY29hXSBBY2NlbGVyYXRlZCBmaWx0ZXJzIGFyZSBlbmFibGVk
IGJ5IHRoZSB3cm9uZyBzZXR0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCA1ODJjYTYyZmRlNmUuLmFiMTFjMTNlNGVmMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDgsMTIgKzEwOCwxNCBAQAogCQk5M0I1QjQ1
MTIyMTcxRUVBMDA0QjdBQTcgLyogTG9nZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzQjVCNDUwMjIxNzFFRTkwMDRCN0FBNyAvKiBMb2dnZXIu
Y3BwICovOyB9OwogCQk5M0YxOTkzRTE5RDc5NThEMDBDMjM5MEIgLyogU3RyaW5nVmlldy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0YxOTkzRDE5
RDc5NThEMDBDMjM5MEIgLyogU3RyaW5nVmlldy5jcHAgKi87IH07CiAJCTlCQzcwRjA1MTc2QzM3
OUQwMDEwMURFQyAvKiBBdG9tU3RyaW5nVGFibGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUJDNzBGMDQxNzZDMzc5RDAwMTAxREVDIC8qIEF0b21T
dHJpbmdUYWJsZS5jcHAgKi87IH07CisJCUEzMTBGNzlFMjc5QTBBMTQwMENERDI1OSAvKiBSZXNv
dXJjZUJ1bmRsZUNGLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEEzMTBGNzlEMjc5QTBBMTQwMENERDI1OSAvKiBSZXNvdXJjZUJ1bmRsZUNGLmNwcCAq
LzsgfTsKIAkJQTMyRDhGQTUyMUZGRkFCNDAwNzgwNjYyIC8qIFRocmVhZGluZ1BPU0lYLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzMkQ4RkE0MjFG
RkZBQjQwMDc4MDY2MiAvKiBUaHJlYWRpbmdQT1NJWC5jcHAgKi87IH07CiAJCUEzMzFEOTVCMjFG
MjQ5OTIwMDlGMDJBQSAvKiBGaWxlU3lzdGVtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzMzFEOTVBMjFGMjQ5OTIwMDlGMDJBQSAvKiBGaWxlU3lz
dGVtLmNwcCAqLzsgfTsKIAkJQTMzMUQ5NUQyMUYyNDlFNDAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1D
Ri5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMzMx
RDk1QzIxRjI0OUU0MDA5RjAyQUEgLyogRmlsZVN5c3RlbUNGLmNwcCAqLzsgfTsKIAkJQTMzMUQ5
NUYyMUYyNDlGNjAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1Db2NvYS5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzMzFEOTVFMjFGMjQ5RjYwMDlGMDJBQSAv
KiBGaWxlU3lzdGVtQ29jb2EubW0gKi87IH07CiAJCUEzMzFEOTYxMjFGMjRBMEEwMDlGMDJBQSAv
KiBGaWxlU3lzdGVtTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTMzMUQ5NjAyMUYyNEEwQTAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1NYWMubW0gKi87
IH07CiAJCUEzMzFEOTY3MjFGMjRBQkQwMDlGMDJBQSAvKiBGaWxlU3lzdGVtUE9TSVguY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTMzMUQ5NjYyMUYy
NEFCRDAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1QT1NJWC5jcHAgKi87IH07CisJCUEzQTlCREZBMjc5
OERERTgwMEMxREQwNiAvKiBSZXNvdXJjZUJ1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBM0E5QkRGODI3OThERERGMDBDMUREMDYgLyogUmVz
b3VyY2VCdW5kbGUuY3BwICovOyB9OwogCQlBM0I3MjVFQzk4NzQ0NkFEOTNGMUE0NDAgLyogUmFu
ZG9tRGV2aWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEM4RjU5N0NBMkE1NzQxN0ZCQUI5MkZENiAvKiBSYW5kb21EZXZpY2UuY3BwICovOyB9Owog
CQlBM0U0REQ5MzFGM0E4MDM0MDBERUQwQjQgLyogVGV4dFN0cmVhbS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBM0U0REQ5MTFGM0E4MDM0MDBERUQw
QjQgLyogVGV4dFN0cmVhbS5jcHAgKi87IH07CiAJCUEzRUU1QzNBMjFGRkFDNUYwMEZBQkQ2MSAv
KiBPU0FsbG9jYXRvclBPU0lYLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEEzRUU1QzM5MjFGRkFDNUUwMEZBQkQ2MSAvKiBPU0FsbG9jYXRvclBPU0lY
LmNwcCAqLzsgfTsKQEAgLTU1Myw2ICs1NTUsNyBAQAogCQlBMUI4OUI4NzIyMUUwMDBGMDBFQjRD
RUEgLyogU0RLVmFyaWFudC54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGgg
PSBTREtWYXJpYW50LnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMzBE
NDEyQzFGMERFMEJBMDBCNzE5NTQgLyogU29mdExpbmtpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU29mdExpbmtpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTMwRDQxMkQxRjBERTEzRjAwQjcxOTU0IC8qIFNvZnRMaW5raW5nLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNvZnRMaW5raW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUEzMTBGNzlEMjc5QTBBMTQwMENERDI1OSAvKiBSZXNvdXJjZUJ1bmRsZUNGLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291cmNlQnVuZGxlQ0Yu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMzJEOEZBNDIxRkZGQUI0MDA3ODA2
NjIgLyogVGhyZWFkaW5nUE9TSVguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gVGhyZWFkaW5nUE9TSVguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
MzMxRDk1OTIxRjI0OTkyMDA5RjAyQUEgLyogRmlsZVN5c3RlbS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBGaWxlU3lzdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUEzMzFEOTVBMjFGMjQ5OTIwMDlGMDJBQSAvKiBGaWxlU3lzdGVtLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpbGVTeXN0ZW0uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtNTYxLDYgKzU2NCw4IEBACiAJCUEzMzFEOTYwMjFGMjRBMEEwMDlG
MDJBQSAvKiBGaWxlU3lzdGVtTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gRmlsZVN5c3RlbU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTMzMUQ5NjYyMUYyNEFCRDAwOUYwMkFBIC8qIEZpbGVTeXN0ZW1QT1NJWC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlU3lzdGVtUE9TSVguY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBMzZFMTZGNzIxNkZGODI4MDA4REQ4N0UgLyogV1RGU2Vt
YXBob3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdURlNlbWFwaG9yZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBM0E5QkRGODI3OThERERGMDBDMUREMDYg
LyogUmVzb3VyY2VCdW5kbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzb3VyY2VCdW5kbGUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBM0E5QkRGOTI3OThERERGMDBDMURE
MDYgLyogUmVzb3VyY2VCdW5kbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3VyY2VCdW5kbGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTNEMjczQjkyMUYyRUU5MTAwODY2OTcxIC8q
IE1ldGFkYXRhU1BJLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1ldGFkYXRh
U1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUEzRTRERDkxMUYzQTgwMzQwMERF
RDBCNCAvKiBUZXh0U3RyZWFtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFRleHRTdHJlYW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBM0U0REQ5
MjFGM0E4MDM0MDBERUQwQjQgLyogVGV4dFN0cmVhbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBUZXh0U3RyZWFtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04
ODcsNiArODkyLDcgQEAKIAkJCQk1QzFGMDU5MjIxNjQzNTZCMDAzOTMwMkMgLyogQ0ZVUkxFeHRy
YXMuaCAqLywKIAkJCQlBMzMxRDk1QzIxRjI0OUU0MDA5RjAyQUEgLyogRmlsZVN5c3RlbUNGLmNw
cCAqLywKIAkJCQlDMkJDRkM0MTFGNjFENjE2MDBDOTIyMkMgLyogTGFuZ3VhZ2VDRi5jcHAgKi8s
CisJCQkJQTMxMEY3OUQyNzlBMEExNDAwQ0REMjU5IC8qIFJlc291cmNlQnVuZGxlQ0YuY3BwICov
LAogCQkJCTJDREVEMEVFMTgxMTVDMzgwMDREQkE3MCAvKiBSdW5Mb29wQ0YuY3BwICovLAogCQkJ
CUEzRUU1QzNCMjFGRkFDN0MwMEZBQkQ2MSAvKiBTY2hlZHVsZVBhaXJDRi5jcHAgKi8sCiAJCQkJ
QkMzRkVCNUQyNjdGQ0QzNDAwNTQwMDZBIC8qIFNwYW5DRi5oICovLApAQCAtMTI5Myw2ICsxMjk5
LDggQEAKIAkJCQlBOEE0NzMwMjE1MUE4MjVCMDA0MTIzRkYgLyogUmVmQ291bnRlZExlYWtDb3Vu
dGVyLmggKi8sCiAJCQkJODZGNDZGNUYxQTI4NDBFRTAwQ0NCRjIyIC8qIFJlZkNvdW50ZXIuaCAq
LywKIAkJCQlBOEE0NzMwMzE1MUE4MjVCMDA0MTIzRkYgLyogUmVmUHRyLmggKi8sCisJCQkJQTNB
OUJERjgyNzk4RERERjAwQzFERDA2IC8qIFJlc291cmNlQnVuZGxlLmNwcCAqLywKKwkJCQlBM0E5
QkRGOTI3OThERERGMDBDMUREMDYgLyogUmVzb3VyY2VCdW5kbGUuaCAqLywKIAkJCQlGRTM4NDIz
NDIzMjVDQzgwMDA5REQ0NDUgLyogUmVzb3VyY2VVc2FnZS5oICovLAogCQkJCUE4QTQ3MzA1MTUx
QTgyNUIwMDQxMjNGRiAvKiBSZXRhaW5QdHIuaCAqLywKIAkJCQlFM0M1ODNDODI2MTI3QUREMDBD
NTc1NjggLyogUm9iaW5Ib29kSGFzaE1hcC5oICovLApAQCAtMTg2Miw2ICsxODcwLDcgQEAKIAkJ
CQlBM0VFNUM0MDIxRkZBQ0EyMDBGQUJENjEgLyogU2NoZWR1bGVQYWlyTWFjLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEY2NkIyOEUxREM5N0JBQjAwNEExRDNGIC8qIFNlY29uZHMuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEZBNkYzOEYyMENDNTgwRjAwQTAzRENEIC8qIFNlZ21lbnRlZFZlY3Rv
ci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBM0E5QkRGQTI3OThEREU4MDBDMUREMDYgLyogUmVz
b3VyY2VCdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDc0MjExNTFBODI1QjAwNDEy
M0ZGIC8qIFNIQTEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTMxMUJENTMxRUE3MUNBRDAwNTI1
MjgxIC8qIFNpZ25hbHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTc0ODc0NTIxN0EwQkRBRTAw
RkEwNENCIC8qIFNpeENoYXJhY3Rlckhhc2guY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xOTAxLDYg
KzE5MTAsNyBAQAogCQkJCTUyMUNDNkI0MjRBMjc4MDkwMDQzNzdENiAvKiBUcmFuc2xhdGVkUHJv
Y2Vzcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkE2RjM5NTIwQ0NBQ0U5MDBBMDNEQ0QgLyog
VW5pcXVlQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNDMEVFNzYyMTYyOUYxOTAwQTFB
ODQyIC8qIFVSTC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBMzEwRjc5RTI3OUEwQTE0MDBDREQy
NTkgLyogUmVzb3VyY2VCdW5kbGVDRi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzFGMDU5NTIx
NjQzN0IzMDAzOTMwMkMgLyogVVJMQ0YuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNDMEVFODky
MTYyQkMyMjAwQTFBODQyIC8qIFVSTENvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUZBRDNB
RTIyMUI5NjM2NjAwQkVFMTc4IC8qIFVSTEhlbHBlcnMuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYvd3RmL0NN
YWtlTGlzdHMudHh0CmluZGV4IDQ5ZTBjNzY2OTkzNi4uMzhlZGEwNmI4MTQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9DTWFr
ZUxpc3RzLnR4dApAQCAtMjI1LDYgKzIyNSw3IEBAIHNldChXVEZfUFVCTElDX0hFQURFUlMKICAg
ICBSZWZDb3VudGVkTGVha0NvdW50ZXIuaAogICAgIFJlZkNvdW50ZXIuaAogICAgIFJlZlB0ci5o
CisgICAgUmVzb3VyY2VCdW5kbGUuaAogICAgIFJlc291cmNlVXNhZ2UuaAogICAgIFJldGFpblB0
ci5oCiAgICAgUm9iaW5Ib29kSGFzaE1hcC5oCkBAIC00NjAsNiArNDYxLDcgQEAgc2V0KFdURl9T
T1VSQ0VTCiAgICAgUmVhZFdyaXRlTG9jay5jcHAKICAgICBSZWZDb3VudGVkLmNwcAogICAgIFJl
ZkNvdW50ZWRMZWFrQ291bnRlci5jcHAKKyAgICBSZXNvdXJjZUJ1bmRsZS5jcHAKICAgICBSdW5M
b29wLmNwcAogICAgIFNIQTEuY3BwCiAgICAgU2FmZVN0cmVycm9yLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvUGxhdGZvcm1XaW4uY21ha2UgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bVdpbi5jbWFrZQppbmRleCBjYzQzYTIxYzhlZmYuLjNiMjgwM2Q0NTlmNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvUGxhdGZvcm1XaW4uY21ha2UKKysrIGIvU291cmNlL1dURi93dGYvUGxh
dGZvcm1XaW4uY21ha2UKQEAgLTQ1LDYgKzQ1LDcgQEAgaWYgKFVTRV9DRikKICAgICBsaXN0KEFQ
UEVORCBXVEZfU09VUkNFUwogICAgICAgICBjZi9DRlVSTEV4dHJhcy5jcHAKICAgICAgICAgY2Yv
RmlsZVN5c3RlbUNGLmNwcAorICAgICAgICBjZi9SZXNvdXJjZUJ1bmRsZUNGLmNwcAogICAgICAg
ICBjZi9VUkxDRi5jcHAKIAogICAgICAgICB0ZXh0L2NmL0F0b21TdHJpbmdJbXBsQ0YuY3BwCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9SZXNvdXJjZUJ1bmRsZS5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi9SZXNvdXJjZUJ1bmRsZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi5mYmI4MzNlZjgxYjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9S
ZXNvdXJjZUJ1bmRsZS5jcHAKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMiBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRo
ZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgPHd0Zi9SZXNvdXJjZUJ1bmRsZS5oPgorCisjaWYgIVVTRShDRikKKworI2luY2x1ZGUgPHd0
Zi9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3RmL1VSTC5oPgorCituYW1lc3BhY2UgV1RGIHsK
Kworc3RkOjp1bmlxdWVfcHRyPFJlc291cmNlQnVuZGxlPiBSZXNvdXJjZUJ1bmRsZTo6Y3JlYXRl
KFN0cmluZ1ZpZXcgcGF0aCkKK3sKKyAgICBhdXRvIHBhdGhTdHJpbmcgPSBwYXRoLnRvU3RyaW5n
KCk7CisgICAgaWYgKCFGaWxlU3lzdGVtOjpmaWxlRXhpc3RzKHBhdGhTdHJpbmcpKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VC
dW5kbGU+KG5ldyBSZXNvdXJjZUJ1bmRsZShXVEZNb3ZlKHBhdGhTdHJpbmcpKSk7Cit9CisKK1Jl
c291cmNlQnVuZGxlOjpSZXNvdXJjZUJ1bmRsZShTdHJpbmcgcm9vdCkKKyAgICA6IG1fcm9vdChX
VEZNb3ZlKHJvb3QpKQoreyB9CisKK1N0cmluZyBSZXNvdXJjZUJ1bmRsZTo6YnVuZGxlUGF0aCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcm9vdDsKK30KKworVVJMIFJlc291cmNlQnVuZGxlOjpi
dW5kbGVVUkwoKSBjb25zdAoreworICAgIHJldHVybiBVUkw6OmZpbGVVUkxXaXRoRmlsZVN5c3Rl
bVBhdGgobV9yb290KTsKK30KKworU3RyaW5nIFJlc291cmNlQnVuZGxlOjpyZXNvdXJjZVBhdGgo
U3RyaW5nVmlldyBuYW1lLCBTdHJpbmdWaWV3IHR5cGUsIFN0cmluZ1ZpZXcgZGlyZWN0b3J5KSBj
b25zdAoreworICAgIGF1dG8gZmlsZU5hbWUgPSBtYWtlU3RyaW5nKG5hbWUsICIuIiwgdHlwZSk7
CisgICAgcmV0dXJuIEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMobV9yb290
LCB7IGRpcmVjdG9yeSwgZmlsZU5hbWUgfSk7Cit9CisKK1VSTCBSZXNvdXJjZUJ1bmRsZTo6cmVz
b3VyY2VVUkwoU3RyaW5nVmlldyBuYW1lLCBTdHJpbmdWaWV3IHR5cGUsIFN0cmluZ1ZpZXcgZGly
ZWN0b3J5KSBjb25zdAoreworICAgIHJldHVybiBVUkw6OmZpbGVVUkxXaXRoRmlsZVN5c3RlbVBh
dGgocmVzb3VyY2VQYXRoKG5hbWUsIHR5cGUsIGRpcmVjdG9yeSkpOworfQorCit9IC8vIG5hbWVz
cGFjZSBXVEYKKworI2VuZGlmIC8vICFVU0UoQ0YpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9SZXNvdXJjZUJ1bmRsZS5oIGIvU291cmNlL1dURi93dGYvUmVzb3VyY2VCdW5kbGUuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjhmZjRlMGFhM2MxYQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL1Jlc291cmNlQnVuZGxlLmgKQEAgLTAsMCArMSw2
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBTb255IEludGVyYWN0aXZlIEVudGVydGFp
bm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2Yg
QXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQK
KyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCisjaWYgVVNFKENGKQor
I2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KK3R5cGVkZWYgc3RydWN0IF9fQ0ZCdW5kbGUqIENG
QnVuZGxlUmVmOworI2Vsc2UKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKyNlbmRp
ZgorCituYW1lc3BhY2UgV1RGIHsKKworY2xhc3MgUmVzb3VyY2VCdW5kbGUgZmluYWwgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlc291cmNlQnVuZGxlPiBjcmVhdGUoU3RyaW5nVmll
dyk7CisKKyNpZiBVU0UoQ0YpCisgICAgb3BlcmF0b3IgQ0ZCdW5kbGVSZWYoKSBjb25zdCB7IHJl
dHVybiBtX2J1bmRsZS5nZXQoKTsgfQorI2VuZGlmCisKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
U3RyaW5nIGJ1bmRsZVBhdGgoKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgVVJMIGJ1
bmRsZVVSTCgpIGNvbnN0OworCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyByZXNvdXJj
ZVBhdGgoU3RyaW5nVmlldyBuYW1lLCBTdHJpbmdWaWV3IHR5cGUsIFN0cmluZ1ZpZXcgZGlyZWN0
b3J5KSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgVVJMIHJlc291cmNlVVJMKFN0cmlu
Z1ZpZXcgbmFtZSwgU3RyaW5nVmlldyB0eXBlLCBTdHJpbmdWaWV3IGRpcmVjdG9yeSkgY29uc3Q7
CisKK3ByaXZhdGU6CisjaWYgVVNFKENGKQorICAgIFJlc291cmNlQnVuZGxlKENGQnVuZGxlUmVm
KTsKKyAgICBSZXRhaW5QdHI8Q0ZCdW5kbGVSZWY+IG1fYnVuZGxlOworI2Vsc2UKKyAgICBSZXNv
dXJjZUJ1bmRsZShTdHJpbmcpOworICAgIFN0cmluZyBtX3Jvb3Q7CisjZW5kaWYKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY2YvUmVzb3VyY2VC
dW5kbGVDRi5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9jZi9SZXNvdXJjZUJ1bmRsZUNGLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjBhZTRlNTRlNDJhMgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NmL1Jlc291cmNlQnVuZGxlQ0YuY3BwCkBAIC0w
LDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgU29ueSBJbnRlcmFjdGl2ZSBF
bnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBu
YW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
CisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDx3dGYvUmVzb3VyY2VCdW5kbGUu
aD4KKworI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGQnVuZGxlLmg+CisjaW5jbHVkZSA8d3Rm
L1VSTC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV1RG
IHsKKworI2lmIE9TKFdJTkRPV1MpCitjb25zdGV4cHIgYXV0byBwYXRoU3R5bGUgPSBrQ0ZVUkxX
aW5kb3dzUGF0aFN0eWxlOworI2Vsc2UKK2NvbnN0ZXhwciBhdXRvIHBhdGhTdHlsZSA9IGtDRlVS
TFBPU0lYUGF0aFN0eWxlOworI2VuZGlmCisKK3N0ZDo6dW5pcXVlX3B0cjxSZXNvdXJjZUJ1bmRs
ZT4gUmVzb3VyY2VCdW5kbGU6OmNyZWF0ZShTdHJpbmdWaWV3IHBhdGgpCit7CisgICAgYXV0byB1
cmwgPSBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIHBhdGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgcGF0aFN0eWxlLCBmYWxzZSkpOwor
CisgICAgYXV0byBidW5kbGUgPSBDRkJ1bmRsZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB1
cmwuZ2V0KCkpOworICAgIGlmICghYnVuZGxlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8UmVzb3VyY2VCdW5kbGU+KG5ldyBSZXNvdXJjZUJ1
bmRsZShidW5kbGUpKTsKK30KKworUmVzb3VyY2VCdW5kbGU6OlJlc291cmNlQnVuZGxlKENGQnVu
ZGxlUmVmIGJ1bmRsZSkKKyAgICA6IG1fYnVuZGxlKGFkb3B0Q0YoYnVuZGxlKSkKK3sgfQorCitT
dHJpbmcgUmVzb3VyY2VCdW5kbGU6OmJ1bmRsZVBhdGgoKSBjb25zdAoreworICAgIHJldHVybiBi
dW5kbGVVUkwoKS5maWxlU3lzdGVtUGF0aCgpOworfQorCitVUkwgUmVzb3VyY2VCdW5kbGU6OmJ1
bmRsZVVSTCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZCdW5kbGVDb3B5QnVuZGxl
VVJMKG1fYnVuZGxlLmdldCgpKSkuZ2V0KCk7Cit9CisKK1N0cmluZyBSZXNvdXJjZUJ1bmRsZTo6
cmVzb3VyY2VQYXRoKFN0cmluZ1ZpZXcgbmFtZSwgU3RyaW5nVmlldyB0eXBlLCBTdHJpbmdWaWV3
IGRpcmVjdG9yeSkgY29uc3QKK3sKKyAgICBhdXRvIHJlc291cmNlVVJMID0gYWRvcHRDRihDRkJ1
bmRsZUNvcHlSZXNvdXJjZVVSTChtX2J1bmRsZS5nZXQoKSwgbmFtZS5jcmVhdGVDRlN0cmluZygp
LmdldCgpLCB0eXBlLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGRpcmVjdG9yeS5jcmVhdGVDRlN0
cmluZygpLmdldCgpKSk7CisgICAgaWYgKCFyZXNvdXJjZVVSTCkKKyAgICAgICAgcmV0dXJuIHsg
fTsKKworICAgIHJldHVybiBhZG9wdENGKENGVVJMQ29weUZpbGVTeXN0ZW1QYXRoKHJlc291cmNl
VVJMLmdldCgpLCBwYXRoU3R5bGUpKS5nZXQoKTsKK30KKworVVJMIFJlc291cmNlQnVuZGxlOjpy
ZXNvdXJjZVVSTChTdHJpbmdWaWV3IG5hbWUsIFN0cmluZ1ZpZXcgdHlwZSwgU3RyaW5nVmlldyBk
aXJlY3RvcnkpIGNvbnN0Cit7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZCdW5kbGVDb3B5UmVzb3Vy
Y2VVUkwobV9idW5kbGUuZ2V0KCksIG5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgdHlwZS5j
cmVhdGVDRlN0cmluZygpLmdldCgpLCBkaXJlY3RvcnkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkp
LmdldCgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhNGNiMjI0YTdlNjQuLjVlN2M2ZWQwOTJlZiAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE3IEBACisyMDIyLTAxLTIxICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5j
b20+CisKKyAgICAgICAgQWRkIGEgUmVzb3VyY2VCdW5kbGUgYWJzdHJhY3Rpb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjIzNgorCisgICAgICAg
IFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIEFkZCB0ZXN0cyBmb3IgV1RGOjpS
ZXNvdXJjZUJ1bmRsZS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQ6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVzb3VyY2VCdW5k
bGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisKIDIwMjIt
MDEtMjEgIExhdXJvIE1vdXJhICA8bG1vdXJhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0NNYWtl
XSBDYW5ub3QgbGluayBsaWJUZXN0UnVubmVySW5qZWN0ZWRCdW5kbGUuc28gaW4gbm9uIHVuaWZp
ZWQgYnVpbGQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CmluZGV4IGExYTkxNDJmZmE4Yi4u
OTZjOTM4Y2JmMGVlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMu
dHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKQEAgLTc5LDYgKzc5
LDcgQEAgc2V0KFRlc3RXVEZfU09VUkNFUwogICAgIFRlc3RzL1dURi9SZWZDb3VudGVyLmNwcAog
ICAgIFRlc3RzL1dURi9SZWZMb2dnZXIuY3BwCiAgICAgVGVzdHMvV1RGL1JlZlB0ci5jcHAKKyAg
ICBUZXN0cy9XVEYvUmVzb3VyY2VCdW5kbGUuY3BwCiAgICAgVGVzdHMvV1RGL1JvYmluSG9vZEhh
c2hNYXAuY3BwCiAgICAgVGVzdHMvV1RGL1JvYmluSG9vZEhhc2hTZXQuY3BwCiAgICAgVGVzdHMv
V1RGL1J1bkxvb3AuY3BwCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDYwNzFjMTI4M2NkMi4u
MTFkMzBlMzZhMzU1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtODMzLDYgKzgzMyw3IEBA
CiAJCUExRkI1MDQzMjJBMjEzQTMwMEQ0RDk3OSAvKiBhcHBsZS1wYXktY2FuLW1ha2UtcGF5bWVu
dC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExRkI1MDQyMjJBMjEzOEYwMEQ0RDk3OSAvKiBhcHBsZS1wYXktY2FuLW1ha2UtcGF5bWVu
dC5odG1sICovOyB9OwogCQlBMUZCNTA0NTIyQTIxNTcxMDBENEQ5NzkgLyogYXBwbGUtcGF5Lmpz
IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEx
RkI1MDQ0MjJBMjE1NEIwMEQ0RDk3OSAvKiBhcHBsZS1wYXkuanMgKi87IH07CiAJCUEzMTA4Mjcy
MjFGMjk2RkYwMEMyOEI5NyAvKiBGaWxlU3lzdGVtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzMTA4MjcxMjFGMjk2RUMwMEMyOEI5NyAvKiBGaWxl
U3lzdGVtLmNwcCAqLzsgfTsKKwkJQTNBOUJERkMyNzk4REUyRDAwQzFERDA2IC8qIFJlc291cmNl
QnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEEzQTlCREZCMjc5OERFMkQwMEMxREQwNiAvKiBSZXNvdXJjZUJ1bmRsZS5jcHAgKi87IH07CiAJ
CUE1N0EzNEYyMTZBRjZCMkIwMEMyNTAxRiAvKiBQYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRv
d0NoYW5nZXMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNTdBMzRGMTE2QUY2OUUyMDBDMjUwMUYgLyogUGFnZVZpc2liaWxpdHlTdGF0
ZVdpdGhXaW5kb3dDaGFuZ2VzLmh0bWwgKi87IH07CiAJCUE1N0Q1NEYzMUYzMzhDMzYwMEE5N0FB
NyAvKiBOZXZlckRlc3Ryb3llZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNTdENTRGMjFGMzM4QzM2MDBBOTdBQTcgLyogTmV2ZXJEZXN0cm95ZWQu
Y3BwICovOyB9OwogCQlBNTdENTRGNjFGMzM5NUQwMDBBOTdBQTcgLyogTG9nZ2VyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1N0Q1NEY0MUYzMzk1
RDAwMEE5N0FBNyAvKiBMb2dnZXIuY3BwICovOyB9OwpAQCAtMjY1Nyw2ICsyNjU4LDcgQEAKIAkJ
QTFGQjUwNDQyMkEyMTU0QjAwRDREOTc5IC8qIGFwcGxlLXBheS5qcyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsg
cGF0aCA9ICJhcHBsZS1wYXkuanMiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMUZE
RkQyRTE5QzI4OEJCMDA1MTQ4QTQgLyogV0tJbWFnZUNyZWF0ZUNHSW1hZ2VDcmFzaC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXS0ltYWdlQ3JlYXRlQ0dJbWFnZUNy
YXNoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTMxMDgyNzEyMUYyOTZFQzAw
QzI4Qjk3IC8qIEZpbGVTeXN0ZW0uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRmlsZVN5c3RlbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEzQTlC
REZCMjc5OERFMkQwMEMxREQwNiAvKiBSZXNvdXJjZUJ1bmRsZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNvdXJjZUJ1bmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUE1N0EzNEVGMTZBRjY3NzIwMEMyNTAxRiAvKiBQYWdlVmlzaWJpbGl0
eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBQYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXMubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1N0EzNEYxMTZBRjY5RTIwMEMyNTAxRiAvKiBQYWdl
VmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXMuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRt
bDsgcGF0aCA9IFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5odG1sOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTdENTRGMjFGMzM4QzM2MDBBOTdBQTcgLyogTmV2
ZXJEZXN0cm95ZWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV2ZXJEZXN0cm95ZWQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDU4MSw2ICs0NTgzLDcgQEAKIAkJCQk0NDJC
QkY2ODFDOTFDQUQ5MDAxNzA4N0YgLyogUmVmTG9nZ2VyLmNwcCAqLywKIAkJCQk5M0E0MjdBRDE4
MERBNjBGMDBDRDI0RDcgLyogUmVmTG9nZ2VyLmggKi8sCiAJCQkJOTNBNDI3QTgxODBEOUIwNzAw
Q0QyNEQ3IC8qIFJlZlB0ci5jcHAgKi8sCisJCQkJQTNBOUJERkIyNzk4REUyRDAwQzFERDA2IC8q
IFJlc291cmNlQnVuZGxlLmNwcCAqLywKIAkJCQlFMzU1QTYzMTI2MTU3MThGMDAxQzExMjkgLyog
Um9iaW5Ib29kSGFzaE1hcC5jcHAgKi8sCiAJCQkJRTM1NUE2MkYyNjE1NzE3NDAwMUMxMTI5IC8q
IFJvYmluSG9vZEhhc2hTZXQuY3BwICovLAogCQkJCUU0QzlBQkM3MUIzREIxNzEwMDQwQTk4NyAv
KiBSdW5Mb29wLmNwcCAqLywKQEAgLTUzNTgsNiArNTM2MSw3IEBACiAJCQkJN0M4M0RGMDIxRDBB
NTkwQzAwRkVCQ0YzIC8qIE9TT2JqZWN0UHRyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ0NDQ5
REMyMjcxOEI0QjcwMEU4MjFCNSAvKiBPU09iamVjdFB0ckNvY29hLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDQ0NDlEQzEyNzE4QjRCNzAwRTgyMUI1IC8qIE9TT2JqZWN0UHRyQ29jb2FBUkMubW0g
aW4gU291cmNlcyAqLywKKwkJCQlBM0E5QkRGQzI3OThERTJEMDBDMUREMDYgLyogUmVzb3VyY2VC
dW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTMyQjU0OTIyMjgxMEFDNDAwOEFENzAyIC8q
IFBhY2tlZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMzhENjVDQTIzQTQ1RkFBMDA2M0Q2OUEg
LyogUGFja2VkUmVmLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUzOEQ2NUNCMjNBNDVGQUEwMDYz
RDY5QSAvKiBQYWNrZWRSZWZQdHIuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZXNvdXJjZUJ1bmRsZS5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9SZXNvdXJjZUJ1bmRsZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4zYTUzM2Q2Y2Q2YmUKLS0tIC9kZXYvbnVsbAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZXNvdXJjZUJ1bmRsZS5jcHAKQEAgLTAsMCAr
MSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBTb255IEludGVyYWN0aXZlIEVudGVy
dGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUg
b2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiVGVzdC5oIgorI2luY2x1ZGUgPHd0
Zi9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8d3RmL1Jlc291cmNlQnVuZGxlLmg+CisjaW5jbHVk
ZSA8d3RmL1VSTC5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK2NsYXNzIFJlc291
cmNlQnVuZGxlVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK3B1YmxpYzoKKyAgICB2b2lk
IFNldFVwKCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIC8vIENyZWF0ZSBhIHRlbXAgZGlyZWN0
b3J5IHRvIG1ha2UgYSBidW5kbGUgaW4KKyAgICAgICAgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxl
SGFuZGxlIGhhbmRsZTsKKyAgICAgICAgbV9yb290ID0gRmlsZVN5c3RlbTo6b3BlblRlbXBvcmFy
eUZpbGUoIldlYktpdC5yZXNvdXJjZXMiLCBoYW5kbGUpOworICAgICAgICBGaWxlU3lzdGVtOjpj
bG9zZUZpbGUoaGFuZGxlKTsKKyAgICAgICAgRmlsZVN5c3RlbTo6ZGVsZXRlRmlsZShtX3Jvb3Qp
OworCisgICAgICAgIC8vIENyZWF0ZSB0aGUgYnVuZGxlIHN0cnVjdHVyZQorICAgICAgICBGaWxl
U3lzdGVtOjptYWtlQWxsRGlyZWN0b3JpZXMoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29t
cG9uZW50cyhtX3Jvb3QsIHsgIldlYkluc3BlY3RvclVJIiwgIlByb3RvY29sIiB9KSk7CisgICAg
ICAgIGF1dG8gaW5zcGVjdG9yQmFja2VuZEZpbGUgPSBGaWxlU3lzdGVtOjpvcGVuRmlsZShGaWxl
U3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnRzKG1fcm9vdCwgeyAiV2ViSW5zcGVjdG9y
VUkiLCAiUHJvdG9jb2wiLCAiSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzLmpzIiB9KSwgRmlsZVN5
c3RlbTo6RmlsZU9wZW5Nb2RlOjpXcml0ZSk7CisgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmls
ZShpbnNwZWN0b3JCYWNrZW5kRmlsZSk7CisgICAgfQorCisgICAgdm9pZCBUZWFyRG93bigpIG92
ZXJyaWRlCisgICAgeworICAgICAgICBGaWxlU3lzdGVtOjpkZWxldGVOb25FbXB0eURpcmVjdG9y
eShtX3Jvb3QpOworICAgIH0KKworcHJvdGVjdGVkOgorICAgIFN0cmluZyBtX3Jvb3Q7Cit9Owor
CitURVNUX0YoUmVzb3VyY2VCdW5kbGVUZXN0LCBCdW5kbGVQYXRoKQoreworICAgIGF1dG8gYnVu
ZGxlID0gV1RGOjpSZXNvdXJjZUJ1bmRsZTo6Y3JlYXRlKG1fcm9vdCk7CisgICAgYXV0byBhY3R1
YWwgPSBidW5kbGUtPmJ1bmRsZVBhdGgoKTsKKyAgICBFWFBFQ1RfU1RSRVEobV9yb290LnV0Zjgo
KS5kYXRhKCksIGFjdHVhbC51dGY4KCkuZGF0YSgpKTsKK30KKworVEVTVF9GKFJlc291cmNlQnVu
ZGxlVGVzdCwgUmVzb3VyY2VQYXRoKQoreworICAgIGF1dG8gYnVuZGxlID0gV1RGOjpSZXNvdXJj
ZUJ1bmRsZTo6Y3JlYXRlKG1fcm9vdCk7CisgICAgYXV0byBhY3R1YWwgPSBidW5kbGUtPnJlc291
cmNlUGF0aCgiSW5zcGVjdG9yQmFja2VuZENvbW1hbmRzIiwgImpzIiwgRmlsZVN5c3RlbTo6cGF0
aEJ5QXBwZW5kaW5nQ29tcG9uZW50KCJXZWJJbnNwZWN0b3JVSSJfcywgIlByb3RvY29sIl9zKSk7
CisgICAgYXV0byBleHBlY3RlZCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVu
dHMobV9yb290LCB7ICJXZWJJbnNwZWN0b3JVSSIsICJQcm90b2NvbCIsICJJbnNwZWN0b3JCYWNr
ZW5kQ29tbWFuZHMuanMiIH0pOworICAgIEVYUEVDVF9TVFJFUShleHBlY3RlZC51dGY4KCkuZGF0
YSgpLCBhY3R1YWwudXRmOCgpLmRhdGEoKSk7Cit9CisKK1RFU1RfRihSZXNvdXJjZUJ1bmRsZVRl
c3QsIFJlc291cmNlVVJMKQoreworICAgIGF1dG8gYnVuZGxlID0gV1RGOjpSZXNvdXJjZUJ1bmRs
ZTo6Y3JlYXRlKG1fcm9vdCk7CisgICAgYXV0byBhY3R1YWwgPSBidW5kbGUtPnJlc291cmNlVVJM
KCJJbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMiLCAianMiLCBGaWxlU3lzdGVtOjpwYXRoQnlBcHBl
bmRpbmdDb21wb25lbnQoIldlYkluc3BlY3RvclVJIl9zLCAiUHJvdG9jb2wiX3MpKTsKKyAgICBh
dXRvIGV4cGVjdGVkID0gVVJMOjpmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRoKEZpbGVTeXN0ZW06
OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudHMobV9yb290LCB7ICJXZWJJbnNwZWN0b3JVSSIsICJQ
cm90b2NvbCIsICJJbnNwZWN0b3JCYWNrZW5kQ29tbWFuZHMuanMiIH0pKTsKKyAgICBFWFBFQ1Rf
U1RSRVEoZXhwZWN0ZWQuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgYWN0dWFsLnN0cmluZygpLnV0
ZjgoKS5kYXRhKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>