<?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>69242</bug_id>
          
          <creation_ts>2011-10-02 22:53:13 -0700</creation_ts>
          <short_desc>Unified spell-checking and legacy spell checking should be easy to switch</short_desc>
          <delta_ts>2011-10-17 18:38:01 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>69128</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Shinya Kawanaka">shinyak</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>morrita</cc>
    
    <cc>shinyak</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>476792</commentid>
    <comment_count>0</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2011-10-02 22:53:13 -0700</bug_when>
    <thetext>Editor class has two difference code paths for spell-checking:
(1) checkTextOfParagraph() for Snow Leopard or later
(2) checkSpellingOfString() and checkGrammarOfString() for other platforms.
These paths should be unified so that improving spell-checking code is easy.

After 69241 is resolved, static #if-statement USE(UNIFIED_TEXT_CHECKING) in WebCore should be converted to dynamic if-statement so that using checkTextOfParagraph() becomes easy in non-SL or non-Lion platform.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>481533</commentid>
    <comment_count>1</comment_count>
      <attachid>110490</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2011-10-11 02:46:41 -0700</bug_when>
    <thetext>Created attachment 110490
Test Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>481534</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-11 02:49:24 -0700</bug_when>
    <thetext>Attachment 110490 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1

Source/WebCore/editing/TextCheckingHelper.h:99:  The parameter name &quot;frame&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>482338</commentid>
    <comment_count>3</comment_count>
      <attachid>110661</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2011-10-12 03:56:51 -0700</bug_when>
    <thetext>Created attachment 110661
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>484910</commentid>
    <comment_count>4</comment_count>
      <attachid>110661</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-10-16 22:02:01 -0700</bug_when>
    <thetext>Comment on attachment 110661
Patch

Hi, Thanks for doing this!
WebKit generally prefers early-return style instead of if-else. 
In this case, it also helps to keep diff small.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485050</commentid>
    <comment_count>5</comment_count>
      <attachid>111242</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2011-10-17 04:28:42 -0700</bug_when>
    <thetext>Created attachment 111242
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485051</commentid>
    <comment_count>6</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2011-10-17 04:29:46 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 110661 [details])
&gt; Hi, Thanks for doing this!
&gt; WebKit generally prefers early-return style instead of if-else. 
&gt; In this case, it also helps to keep diff small.

Hi, I tried to keep early-return style as much as possible.
If not enough, please tell me...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485060</commentid>
    <comment_count>7</comment_count>
      <attachid>111242</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-10-17 04:47:35 -0700</bug_when>
    <thetext>Comment on attachment 111242
Patch

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

Generally looks fine. Could you take these small cleanup?

&gt; Source/WebCore/editing/Editor.cpp:1682
&gt; +    if (unifiedTextCheckerEnabled(m_frame)) {

Could you wrap this conditional as a Editor method?

&gt; Source/WebCore/editing/Editor.cpp:2040
&gt; +    }

Why not simply ASSERT(unifiedTextCheckerEnabled(m_frame)) ?

&gt; Source/WebCore/editing/Editor.cpp:2239
&gt; +    }

Ditto.

&gt; Source/WebCore/editing/TextCheckingHelper.cpp:230
&gt; +    if (!m_range || !unifiedTextCheckerEnabled(m_range-&gt;ownerDocument()-&gt;frame()))

Could you extract this criteria as a method of TextCheckingHelper?

&gt; Source/WebCore/editing/TextCheckingHelper.cpp:509
&gt; +    if (!m_range || !unifiedTextCheckerEnabled(m_range-&gt;ownerDocument()-&gt;frame()))

Ditto.

&gt; Source/WebCore/editing/TextCheckingHelper.h:30
&gt; +class Settings;

It looks we don&apos;t need this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485083</commentid>
    <comment_count>8</comment_count>
      <attachid>111251</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2011-10-17 05:42:14 -0700</bug_when>
    <thetext>Created attachment 111251
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485085</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-17 05:46:00 -0700</bug_when>
    <thetext>Attachment 111251 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/update-webkit&apos;, &apos;--chromium&apos;]&quot; exit_code: 2

Updating OpenSource
Current branch master is up to date.
Updating chromium port dependencies using gclient...
Error: Can&apos;t switch the checkout to http://v8.googlecode.com/svn/branches/3.6@9637; UUID don&apos;t match and there is local changes in /mnt/git/webkit-style-queue/Source/WebKit/chromium/v8. Delete the directory and try again.
Re-trying &apos;depot_tools/gclient sync&apos;
Error: Can&apos;t switch the checkout to http://v8.googlecode.com/svn/branches/3.6@9637; UUID don&apos;t match and there is local changes in /mnt/git/webkit-style-queue/Source/WebKit/chromium/v8. Delete the directory and try again.
Re-trying &apos;depot_tools/gclient sync&apos;
Error: Can&apos;t switch the checkout to http://v8.googlecode.com/svn/branches/3.6@9637; UUID don&apos;t match and there is local changes in /mnt/git/webkit-style-queue/Source/WebKit/chromium/v8. Delete the directory and try again.
Error: &apos;depot_tools/gclient sync&apos; failed 3 tries and returned 256 at Tools/Scripts/update-webkit-chromium line 107.
Re-trying &apos;depot_tools/gclient sync&apos;
No such file or directory at Tools/Scripts/update-webkit line 104.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485689</commentid>
    <comment_count>10</comment_count>
      <attachid>111251</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-10-17 18:02:00 -0700</bug_when>
    <thetext>Comment on attachment 111251
Patch

r+ed. And cq+ing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485719</commentid>
    <comment_count>11</comment_count>
      <attachid>111251</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-17 18:37:56 -0700</bug_when>
    <thetext>Comment on attachment 111251
Patch

Clearing flags on attachment: 111251

Committed r97696: &lt;http://trac.webkit.org/changeset/97696&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>485720</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-17 18:38:01 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110490</attachid>
            <date>2011-10-11 02:46:41 -0700</date>
            <delta_ts>2011-10-12 03:56:44 -0700</delta_ts>
            <desc>Test Patch</desc>
            <filename>W69242.patch</filename>
            <type>text/plain</type>
            <size>36213</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNDkwMThmYy4uZDA5ZWZiNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTY0Niw5ICs2NDYsMTEgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIGVkaXRp
bmcvUmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQuY3BwCiAgICAgZWRpdGluZy9SZXBsYWNlU2Vs
ZWN0aW9uQ29tbWFuZC5jcHAKICAgICBlZGl0aW5nL1NldE5vZGVBdHRyaWJ1dGVDb21tYW5kLmNw
cAorICAgIGVkaXRpbmcvU2V0U2VsZWN0aW9uQ29tbWFuZC5jcHAKICAgICBlZGl0aW5nL1NtYXJ0
UmVwbGFjZS5jcHAKICAgICBlZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHAKICAgICBlZGl0aW5nL1Nw
ZWxsaW5nQ29ycmVjdGlvbkNvbnRyb2xsZXIuY3BwCisgICAgZWRpdGluZy9TcGVsbGluZ0NvcnJl
Y3Rpb25Db21tYW5kLmNwcAogICAgIGVkaXRpbmcvU3BsaXRFbGVtZW50Q29tbWFuZC5jcHAKICAg
ICBlZGl0aW5nL1NwbGl0VGV4dE5vZGVDb21tYW5kLmNwcAogICAgIGVkaXRpbmcvU3BsaXRUZXh0
Tm9kZUNvbnRhaW5pbmdFbGVtZW50Q29tbWFuZC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCmluZGV4IDVhZWVmZjYuLjlmN2NkOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQpAQCAtMTQzMCw2ICsxNDMwLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmggXAogCVNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvU2V0Tm9kZUF0dHJpYnV0ZUNvbW1hbmQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1NldE5vZGVBdHRyaWJ1dGVDb21tYW5kLmggXAorCVNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvU2V0U2VsZWN0aW9uQ29tbWFuZC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2V0
U2VsZWN0aW9uQ29tbWFuZC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NtYXJ0UmVwbGFj
ZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU21hcnRSZXBsYWNlLmggXAogCVNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvU21hcnRSZXBsYWNlSUNVLmNwcCBcCkBAIC0xNDM3LDYgKzE0Mzks
NyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxD
aGVja2VyLmggXAogCVNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29u
dHJvbGxlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9u
Q29udHJvbGxlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlv
bkNvbW1hbmQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlv
bkNvbW1hbmQuaCBcCiAJU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGxpdEVsZW1lbnRDb21tYW5k
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGxpdEVsZW1lbnRDb21tYW5kLmggXApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnBybwppbmRleCAwNjRkYzk4Li40NGI0MWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnBybworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtNjEw
LDggKzYxMCwxMCBAQCBTT1VSQ0VTICs9IFwKICAgICBlZGl0aW5nL1JlcGxhY2VOb2RlV2l0aFNw
YW5Db21tYW5kLmNwcCBcCiAgICAgZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAg
XAogICAgIGVkaXRpbmcvU2V0Tm9kZUF0dHJpYnV0ZUNvbW1hbmQuY3BwIFwKKyAgICBlZGl0aW5n
L1NldFNlbGVjdGlvbkNvbW1hbmQuY3BwIFwKICAgICBlZGl0aW5nL1NtYXJ0UmVwbGFjZUlDVS5j
cHAgXAogICAgIGVkaXRpbmcvU3BlbGxDaGVja2VyLmNwcCBcCisgICAgZWRpdGluZy9TcGVsbGlu
Z0NvcnJlY3Rpb25Db21tYW5kLmNwcCBcCiAgICAgZWRpdGluZy9TcGVsbGluZ0NvcnJlY3Rpb25D
b250cm9sbGVyLmNwcCBcCiAgICAgZWRpdGluZy9TcGxpdEVsZW1lbnRDb21tYW5kLmNwcCBcCiAg
ICAgZWRpdGluZy9TcGxpdFRleHROb2RlQ29tbWFuZC5jcHAgXApAQCAtMTYyNSw2ICsxNjI3LDcg
QEAgSEVBREVSUyArPSBcCiAgICAgZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5oIFwK
ICAgICBlZGl0aW5nL1NldE5vZGVBdHRyaWJ1dGVDb21tYW5kLmggXAogICAgIGVkaXRpbmcvU21h
cnRSZXBsYWNlLmggXAorICAgIGVkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5oIFwK
ICAgICBlZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbnRyb2xsZXIuaCBcCiAgICAgZWRpdGlu
Zy9TcGxpdEVsZW1lbnRDb21tYW5kLmggXAogICAgIGVkaXRpbmcvU3BsaXRUZXh0Tm9kZUNvbW1h
bmQuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmlu
ZGV4IDI0YjhlNmEuLjMyZDJjMTEgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCkBAIC01MjQ5Nyw2ICs1MjQ5Nyw2MiBAQAogCQkJCQkvPgogCQkJCTwv
RmlsZUNvbmZpZ3VyYXRpb24+CiAJCQk8L0ZpbGU+CisgICAgICAgICAgICA8RmlsZQorICAgICAg
ICAgICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4uXGVkaXRpbmdcU2V0U2VsZWN0aW9uQ29tbWFuZC5j
cHAiCisgICAgICAgICAgICAgICAgID4KKyAgICAgICAgICAgICAgICA8RmlsZUNvbmZpZ3VyYXRp
b24KKyAgICAgICAgICAgICAgICAgICAgICBOYW1lPSJEZWJ1Z3xXaW4zMiIKKyAgICAgICAgICAg
ICAgICAgICAgICBFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKyAgICAgICAgICAgICAgICAgICAg
ID4KKyAgICAgICAgICAgICAgICAgICAgPFRvb2wKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
TmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLz4KKyAg
ICAgICAgICAgICAgICAgICAgPC9GaWxlQ29uZmlndXJhdGlvbj4KKyAgICAgICAgICAgICAgICA8
RmlsZUNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICBOYW1lPSJSZWxlYXNlfFdp
bjMyIgorICAgICAgICAgICAgICAgICAgICAgIEV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorICAg
ICAgICAgICAgICAgICAgICAgID4KKyAgICAgICAgICAgICAgICAgICAgPFRvb2wKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgLz4KKyAgICAgICAgICAgICAgICAgICAgPC9GaWxlQ29uZmlndXJhdGlvbj4K
KyAgICAgICAgICAgICAgICA8RmlsZUNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAg
ICBOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCisgICAgICAgICAgICAgICAgICAgICAg
RXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisgICAgICAgICAgICAgICAgICAgICAgPgorICAgICAg
ICAgICAgICAgICAgICA8VG9vbAorICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lPSJWQ0NM
Q29tcGlsZXJUb29sIgorICAgICAgICAgICAgICAgICAgICAgICAgICAvPgorICAgICAgICAgICAg
ICAgICAgICA8L0ZpbGVDb25maWd1cmF0aW9uPgorICAgICAgICAgICAgICAgIDxGaWxlQ29uZmln
dXJhdGlvbgorICAgICAgICAgICAgICAgICAgICAgIE5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRl
fFdpbjMyIgorICAgICAgICAgICAgICAgICAgICAgIEV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgor
ICAgICAgICAgICAgICAgICAgICAgID4KKyAgICAgICAgICAgICAgICAgICAgPFRvb2wKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgLz4KKyAgICAgICAgICAgICAgICAgICAgPC9GaWxlQ29uZmlndXJhdGlv
bj4KKyAgICAgICAgICAgICAgICA8RmlsZUNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAg
ICAgICBOYW1lPSJEZWJ1Z19BbGx8V2luMzIiCisgICAgICAgICAgICAgICAgICAgICAgRXhjbHVk
ZWRGcm9tQnVpbGQ9InRydWUiCisgICAgICAgICAgICAgICAgICAgICAgPgorICAgICAgICAgICAg
ICAgICAgICA8VG9vbAorICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lPSJWQ0NMQ29tcGls
ZXJUb29sIgorICAgICAgICAgICAgICAgICAgICAgICAgICAvPgorICAgICAgICAgICAgICAgICAg
ICA8L0ZpbGVDb25maWd1cmF0aW9uPgorICAgICAgICAgICAgICAgIDxGaWxlQ29uZmlndXJhdGlv
bgorICAgICAgICAgICAgICAgICAgICAgIE5hbWU9IlByb2R1Y3Rpb258V2luMzIiCisgICAgICAg
ICAgICAgICAgICAgICAgRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisgICAgICAgICAgICAgICAg
ICAgICAgPgorICAgICAgICAgICAgICAgICAgICA8VG9vbAorICAgICAgICAgICAgICAgICAgICAg
ICAgICBOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorICAgICAgICAgICAgICAgICAgICAgICAgICAv
PgorICAgICAgICAgICAgICAgICAgICA8L0ZpbGVDb25maWd1cmF0aW9uPgorICAgICAgICAgICAg
ICAgIDwvRmlsZT4KKyAgICAgICAgICAgIDxGaWxlCisgICAgICAgICAgICAgICAgICBSZWxhdGl2
ZVBhdGg9Ii4uXGVkaXRpbmdcU2V0U2VsZWN0aW9uQ29tbWFuZC5oIgorICAgICAgICAgICAgICAg
ICAgPgorICAgICAgICAgICAgICAgIDwvRmlsZT4KIAkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRo
PSIuLlxlZGl0aW5nXFNtYXJ0UmVwbGFjZS5oIgogCQkJCT4KQEAgLTUyNjA5LDYgKzUyNjY1LDYy
IEBACiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxlZGl0aW5nXFNwZWxsQ2hlY2tlci5oIgogCQkJCT4K
IAkJCTwvRmlsZT4KKyAgICAgICAgICAgIDxGaWxlCisgICAgICAgICAgICAgICAgIFJlbGF0aXZl
UGF0aD0iLi5cZWRpdGluZ1xTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcCIKKyAgICAgICAg
ICAgICAgICAgPgorICAgICAgICAgICAgICAgIDxGaWxlQ29uZmlndXJhdGlvbgorICAgICAgICAg
ICAgICAgICAgICAgIE5hbWU9IkRlYnVnfFdpbjMyIgorICAgICAgICAgICAgICAgICAgICAgIEV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorICAgICAgICAgICAgICAgICAgICAgID4KKyAgICAgICAg
ICAgICAgICAgICAgPFRvb2wKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZT0iVkNDTENv
bXBpbGVyVG9vbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLz4KKyAgICAgICAgICAgICAg
ICAgICAgPC9GaWxlQ29uZmlndXJhdGlvbj4KKyAgICAgICAgICAgICAgICA8RmlsZUNvbmZpZ3Vy
YXRpb24KKyAgICAgICAgICAgICAgICAgICAgICBOYW1lPSJSZWxlYXNlfFdpbjMyIgorICAgICAg
ICAgICAgICAgICAgICAgIEV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorICAgICAgICAgICAgICAg
ICAgICAgID4KKyAgICAgICAgICAgICAgICAgICAgPFRvb2wKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
Lz4KKyAgICAgICAgICAgICAgICAgICAgPC9GaWxlQ29uZmlndXJhdGlvbj4KKyAgICAgICAgICAg
ICAgICA8RmlsZUNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICBOYW1lPSJEZWJ1
Z19DYWlyb19DRkxpdGV8V2luMzIiCisgICAgICAgICAgICAgICAgICAgICAgRXhjbHVkZWRGcm9t
QnVpbGQ9InRydWUiCisgICAgICAgICAgICAgICAgICAgICAgPgorICAgICAgICAgICAgICAgICAg
ICA8VG9vbAorICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lPSJWQ0NMQ29tcGlsZXJUb29s
IgorICAgICAgICAgICAgICAgICAgICAgICAgICAvPgorICAgICAgICAgICAgICAgICAgICA8L0Zp
bGVDb25maWd1cmF0aW9uPgorICAgICAgICAgICAgICAgIDxGaWxlQ29uZmlndXJhdGlvbgorICAg
ICAgICAgICAgICAgICAgICAgIE5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorICAg
ICAgICAgICAgICAgICAgICAgIEV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorICAgICAgICAgICAg
ICAgICAgICAgID4KKyAgICAgICAgICAgICAgICAgICAgPFRvb2wKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgLz4KKyAgICAgICAgICAgICAgICAgICAgPC9GaWxlQ29uZmlndXJhdGlvbj4KKyAgICAgICAg
ICAgICAgICA8RmlsZUNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICBOYW1lPSJE
ZWJ1Z19BbGx8V2luMzIiCisgICAgICAgICAgICAgICAgICAgICAgRXhjbHVkZWRGcm9tQnVpbGQ9
InRydWUiCisgICAgICAgICAgICAgICAgICAgICAgPgorICAgICAgICAgICAgICAgICAgICA8VG9v
bAorICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAvPgorICAgICAgICAgICAgICAgICAgICA8L0ZpbGVDb25m
aWd1cmF0aW9uPgorICAgICAgICAgICAgICAgIDxGaWxlQ29uZmlndXJhdGlvbgorICAgICAgICAg
ICAgICAgICAgICAgIE5hbWU9IlJlbGVhc2VfTFRDR3xXaW4zMiIKKyAgICAgICAgICAgICAgICAg
ICAgICBFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKyAgICAgICAgICAgICAgICAgICAgICA+Cisg
ICAgICAgICAgICAgICAgICAgIDxUb29sCisgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWU9
IlZDQ0xDb21waWxlclRvb2wiCisgICAgICAgICAgICAgICAgICAgICAgICAgIC8+CisgICAgICAg
ICAgICAgICAgICAgIDwvRmlsZUNvbmZpZ3VyYXRpb24+CisgICAgICAgICAgICAgICAgPC9GaWxl
PgorICAgICAgICAgICAgPEZpbGUKKyAgICAgICAgICAgICAgICAgIFJlbGF0aXZlUGF0aD0iLi5c
ZWRpdGluZ1xTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmgiCisgICAgICAgICAgICAgICAgICA+
CisgICAgICAgICAgICA8L0ZpbGU+CiAJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cZWRp
dGluZ1xTcGVsbGluZ0NvcnJlY3Rpb25Db250cm9sbGVyLmNwcCIKIAkJCQk+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAppbmRl
eCA5YTk5YTRmLi5kMTEyZDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKQEAgLTUwLDYgKzUwLDcgQEAKICNpbmNsdWRl
ICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiUmVuZGVyV2lkZ2V0LmgiCiAjaW5jbHVkZSAiUmVu
ZGVyZWRQb3NpdGlvbi5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiVGV4dENo
ZWNrZXJDbGllbnQuaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tpbmdIZWxwZXIuaCIKICNpbmNsdWRl
ICJUZXh0SXRlcmF0b3IuaCIKQEAgLTI4OSwyMCArMjkwLDIwIEBAIGJvb2wgQWNjZXNzaWJpbGl0
eU9iamVjdDo6aGFzTWlzc3BlbGxpbmcoKSBjb25zdAogICAgIGNvbnN0IFVDaGFyKiBjaGFycyA9
IHN0cmluZ1ZhbHVlKCkuY2hhcmFjdGVycygpOwogICAgIGludCBjaGFyc0xlbmd0aCA9IHN0cmlu
Z1ZhbHVlKCkubGVuZ3RoKCk7CiAgICAgYm9vbCBpc01pc3NwZWxsZWQgPSBmYWxzZTsKLSAgICAK
LSNpZiBVU0UoVU5JRklFRF9URVhUX0NIRUNLSU5HKQotICAgIFZlY3RvcjxUZXh0Q2hlY2tpbmdS
ZXN1bHQ+IHJlc3VsdHM7Ci0gICAgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgodGV4dENoZWNrZXIsIGNo
YXJzLCBjaGFyc0xlbmd0aCwgVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nLCByZXN1bHRzKTsKLSAg
ICBpZiAoIXJlc3VsdHMuaXNFbXB0eSgpKQotICAgICAgICBpc01pc3NwZWxsZWQgPSB0cnVlOwot
I2Vsc2UKLSAgICBpbnQgbWlzc3BlbGxpbmdMZW5ndGggPSAwOwotICAgIGludCBtaXNzcGVsbGlu
Z0xvY2F0aW9uID0gLTE7Ci0gICAgdGV4dENoZWNrZXItPmNoZWNrU3BlbGxpbmdPZlN0cmluZyhj
aGFycywgY2hhcnNMZW5ndGgsICZtaXNzcGVsbGluZ0xvY2F0aW9uLCAmbWlzc3BlbGxpbmdMZW5n
dGgpOwotICAgIGlmIChtaXNzcGVsbGluZ0xlbmd0aCB8fCBtaXNzcGVsbGluZ0xvY2F0aW9uICE9
IC0xKQotICAgICAgICBpc01pc3NwZWxsZWQgPSB0cnVlOwotI2VuZGlmCi0gICAgCisKKyAgICBp
ZiAodW5pZmllZFRleHRDaGVja2VyRW5hYmxlZChmcmFtZSkpIHsKKyAgICAgICAgVmVjdG9yPFRl
eHRDaGVja2luZ1Jlc3VsdD4gcmVzdWx0czsKKyAgICAgICAgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgo
dGV4dENoZWNrZXIsIGNoYXJzLCBjaGFyc0xlbmd0aCwgVGV4dENoZWNraW5nVHlwZVNwZWxsaW5n
LCByZXN1bHRzKTsKKyAgICAgICAgaWYgKCFyZXN1bHRzLmlzRW1wdHkoKSkKKyAgICAgICAgICAg
IGlzTWlzc3BlbGxlZCA9IHRydWU7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaW50IG1pc3NwZWxs
aW5nTGVuZ3RoID0gMDsKKyAgICAgICAgaW50IG1pc3NwZWxsaW5nTG9jYXRpb24gPSAtMTsKKyAg
ICAgICAgdGV4dENoZWNrZXItPmNoZWNrU3BlbGxpbmdPZlN0cmluZyhjaGFycywgY2hhcnNMZW5n
dGgsICZtaXNzcGVsbGluZ0xvY2F0aW9uLCAmbWlzc3BlbGxpbmdMZW5ndGgpOworICAgICAgICBp
ZiAobWlzc3BlbGxpbmdMZW5ndGggfHwgbWlzc3BlbGxpbmdMb2NhdGlvbiAhPSAtMSkKKyAgICAg
ICAgICAgIGlzTWlzc3BlbGxlZCA9IHRydWU7CisgICAgfQorCiAgICAgcmV0dXJuIGlzTWlzc3Bl
bGxlZDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQppbmRleCBkZmU3ODgy
Li5kNDIwNWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQpAQCAtNjg5LDM4
ICs2ODksMzggQEAgc3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVTdHJpbmdTZXRCbG9ja3F1b3RlTGV2
ZWwoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0clMKIAogc3RhdGljIHZvaWQgQVhBdHRy
aWJ1dGVTdHJpbmdTZXRTcGVsbGluZyhOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBhdHRyU3Ry
aW5nLCBOb2RlKiBub2RlLCBjb25zdCBVQ2hhciogY2hhcnMsIGludCBjaGFyTGVuZ3RoLCBOU1Jh
bmdlIHJhbmdlKQogewotI2lmIFVTRShVTklGSUVEX1RFWFRfQ0hFQ0tJTkcpCi0gICAgLy8gQ2hl
Y2sgdGhlIHNwZWxsaW5nIGRpcmVjdGx5IHNpbmNlIGRvY3VtZW50LT5tYXJrZXJzRm9yTm9kZSgp
IGRvZXMgbm90IHN0b3JlIHRoZSBtaXNzcGVsbGVkIG1hcmtpbmcgd2hlbiB0aGUgY3Vyc29yIGlz
IGluIGEgd29yZC4KLSAgICBUZXh0Q2hlY2tlckNsaWVudCogY2hlY2tlciA9IG5vZGUtPmRvY3Vt
ZW50KCktPmZyYW1lKCktPmVkaXRvcigpLT50ZXh0Q2hlY2tlcigpOwotCi0gICAgLy8gY2hlY2tU
ZXh0T2ZQYXJhZ3JhcGggaXMgdGhlIG9ubHkgc3BlbGxpbmcvZ3JhbW1hciBjaGVja2VyIGltcGxl
bWVudGVkIGluIFdLMSBhbmQgV0syCi0gICAgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gcmVz
dWx0czsKLSAgICBjaGVja1RleHRPZlBhcmFncmFwaChjaGVja2VyLCBjaGFycywgY2hhckxlbmd0
aCwgVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nLCByZXN1bHRzKTsKLSAgICAKLSAgICBzaXplX3Qg
c2l6ZSA9IHJlc3VsdHMuc2l6ZSgpOwotICAgIE5TTnVtYmVyKiB0cnVlVmFsdWUgPSBbTlNOdW1i
ZXIgbnVtYmVyV2l0aEJvb2w6WUVTXTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6
ZTsgaSsrKSB7Ci0gICAgICAgIGNvbnN0IFRleHRDaGVja2luZ1Jlc3VsdCYgcmVzdWx0ID0gcmVz
dWx0c1tpXTsKLSAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXROdW1iZXIoYXR0clN0cmluZywg
TlNBY2Nlc3NpYmlsaXR5TWlzc3BlbGxlZFRleHRBdHRyaWJ1dGUsIHRydWVWYWx1ZSwgTlNNYWtl
UmFuZ2UocmVzdWx0LmxvY2F0aW9uICsgcmFuZ2UubG9jYXRpb24sIHJlc3VsdC5sZW5ndGgpKTsK
LSAgICB9ICAgIAotI2Vsc2UKLSAgICBpbnQgY3VycmVudFBvc2l0aW9uID0gMDsKLSAgICB3aGls
ZSAoY2hhckxlbmd0aCA+IDApIHsKLSAgICAgICAgY29uc3QgVUNoYXIqIGNoYXJEYXRhID0gY2hh
cnMgKyBjdXJyZW50UG9zaXRpb247CisgICAgaWYgKHVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQo
bm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSkpIHsKKyAgICAgICAgLy8gQ2hlY2sgdGhlIHNwZWxs
aW5nIGRpcmVjdGx5IHNpbmNlIGRvY3VtZW50LT5tYXJrZXJzRm9yTm9kZSgpIGRvZXMgbm90IHN0
b3JlIHRoZSBtaXNzcGVsbGVkIG1hcmtpbmcgd2hlbiB0aGUgY3Vyc29yIGlzIGluIGEgd29yZC4K
ICAgICAgICAgVGV4dENoZWNrZXJDbGllbnQqIGNoZWNrZXIgPSBub2RlLT5kb2N1bWVudCgpLT5m
cmFtZSgpLT5lZGl0b3IoKS0+dGV4dENoZWNrZXIoKTsKKworICAgICAgICAvLyBjaGVja1RleHRP
ZlBhcmFncmFwaCBpcyB0aGUgb25seSBzcGVsbGluZy9ncmFtbWFyIGNoZWNrZXIgaW1wbGVtZW50
ZWQgaW4gV0sxIGFuZCBXSzIKKyAgICAgICAgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gcmVz
dWx0czsKKyAgICAgICAgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY2hlY2tlciwgY2hhcnMsIGNoYXJM
ZW5ndGgsIFRleHRDaGVja2luZ1R5cGVTcGVsbGluZywgcmVzdWx0cyk7CisgICAgCisgICAgICAg
IHNpemVfdCBzaXplID0gcmVzdWx0cy5zaXplKCk7CisgICAgICAgIE5TTnVtYmVyKiB0cnVlVmFs
dWUgPSBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXTsKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICAgICAgY29uc3QgVGV4dENoZWNraW5n
UmVzdWx0JiByZXN1bHQgPSByZXN1bHRzW2ldOworICAgICAgICAgICAgQVhBdHRyaWJ1dGVTdHJp
bmdTZXROdW1iZXIoYXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5TWlzc3BlbGxlZFRleHRBdHRy
aWJ1dGUsIHRydWVWYWx1ZSwgTlNNYWtlUmFuZ2UocmVzdWx0LmxvY2F0aW9uICsgcmFuZ2UubG9j
YXRpb24sIHJlc3VsdC5sZW5ndGgpKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAg
IGludCBjdXJyZW50UG9zaXRpb24gPSAwOworICAgICAgICB3aGlsZSAoY2hhckxlbmd0aCA+IDAp
IHsKKyAgICAgICAgICAgIGNvbnN0IFVDaGFyKiBjaGFyRGF0YSA9IGNoYXJzICsgY3VycmVudFBv
c2l0aW9uOworICAgICAgICAgICAgVGV4dENoZWNrZXJDbGllbnQqIGNoZWNrZXIgPSBub2RlLT5k
b2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS0+dGV4dENoZWNrZXIoKTsKKyAgICAgICAgICAg
IAorICAgICAgICAgICAgaW50IG1pc3NwZWxsaW5nTG9jYXRpb24gPSAtMTsKKyAgICAgICAgICAg
IGludCBtaXNzcGVsbGluZ0xlbmd0aCA9IDA7CisgICAgICAgICAgICBjaGVja2VyLT5jaGVja1Nw
ZWxsaW5nT2ZTdHJpbmcoY2hhckRhdGEsIGNoYXJMZW5ndGgsICZtaXNzcGVsbGluZ0xvY2F0aW9u
LCAmbWlzc3BlbGxpbmdMZW5ndGgpOworICAgICAgICAgICAgaWYgKG1pc3NwZWxsaW5nTG9jYXRp
b24gPT0gLTEgfHwgIW1pc3NwZWxsaW5nTGVuZ3RoKQorICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAKLSAgICAgICAgaW50IG1pc3NwZWxsaW5nTG9jYXRpb24gPSAtMTsKLSAgICAgICAg
aW50IG1pc3NwZWxsaW5nTGVuZ3RoID0gMDsKLSAgICAgICAgY2hlY2tlci0+Y2hlY2tTcGVsbGlu
Z09mU3RyaW5nKGNoYXJEYXRhLCBjaGFyTGVuZ3RoLCAmbWlzc3BlbGxpbmdMb2NhdGlvbiwgJm1p
c3NwZWxsaW5nTGVuZ3RoKTsKLSAgICAgICAgaWYgKG1pc3NwZWxsaW5nTG9jYXRpb24gPT0gLTEg
fHwgIW1pc3NwZWxsaW5nTGVuZ3RoKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAotICAg
ICAgICBOU1JhbmdlIHNwZWxsUmFuZ2UgPSBOU01ha2VSYW5nZShyYW5nZS5sb2NhdGlvbiArIGN1
cnJlbnRQb3NpdGlvbiArIG1pc3NwZWxsaW5nTG9jYXRpb24sIG1pc3NwZWxsaW5nTGVuZ3RoKTsK
LSAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXROdW1iZXIoYXR0clN0cmluZywgTlNBY2Nlc3Np
YmlsaXR5TWlzc3BlbGxlZFRleHRBdHRyaWJ1dGUsIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpZ
RVNdLCBzcGVsbFJhbmdlKTsKLSAgICAgICAgY2hhckxlbmd0aCAtPSAobWlzc3BlbGxpbmdMb2Nh
dGlvbiArIG1pc3NwZWxsaW5nTGVuZ3RoKTsKLSAgICAgICAgY3VycmVudFBvc2l0aW9uICs9ICht
aXNzcGVsbGluZ0xvY2F0aW9uICsgbWlzc3BlbGxpbmdMZW5ndGgpOworICAgICAgICAgICAgTlNS
YW5nZSBzcGVsbFJhbmdlID0gTlNNYWtlUmFuZ2UocmFuZ2UubG9jYXRpb24gKyBjdXJyZW50UG9z
aXRpb24gKyBtaXNzcGVsbGluZ0xvY2F0aW9uLCBtaXNzcGVsbGluZ0xlbmd0aCk7CisgICAgICAg
ICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldE51bWJlcihhdHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxp
dHlNaXNzcGVsbGVkVGV4dEF0dHJpYnV0ZSwgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOllFU10s
IHNwZWxsUmFuZ2UpOworICAgICAgICAgICAgY2hhckxlbmd0aCAtPSAobWlzc3BlbGxpbmdMb2Nh
dGlvbiArIG1pc3NwZWxsaW5nTGVuZ3RoKTsKKyAgICAgICAgICAgIGN1cnJlbnRQb3NpdGlvbiAr
PSAobWlzc3BlbGxpbmdMb2NhdGlvbiArIG1pc3NwZWxsaW5nTGVuZ3RoKTsKKyAgICAgICAgfQog
ICAgIH0KLSNlbmRpZiAgICAKIH0KIAogc3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVTdHJpbmdTZXRI
ZWFkaW5nTGV2ZWwoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0clN0cmluZywgUmVuZGVy
T2JqZWN0KiByZW5kZXJlciwgTlNSYW5nZSByYW5nZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdGluZ0FsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdGluZ0FsbEluT25lLmNwcAppbmRleCBkODYzMDk3Li5jMDI5OWIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdBbGxJbk9uZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0aW5nQWxsSW5PbmUuY3BwCkBAIC02MSw4ICs2MSwxMCBAQAogI2lu
Y2x1ZGUgPFJlcGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kLmNwcD4KICNpbmNsdWRlIDxSZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZC5jcHA+CiAjaW5jbHVkZSA8U2V0Tm9kZUF0dHJpYnV0ZUNvbW1hbmQu
Y3BwPgorI2luY2x1ZGUgPFNldFNlbGVjdGlvbkNvbW1hbmQuY3BwPgogI2luY2x1ZGUgPFNtYXJ0
UmVwbGFjZS5jcHA+CiAjaW5jbHVkZSA8U21hcnRSZXBsYWNlQ0YuY3BwPgorI2luY2x1ZGUgPFNw
ZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwPgogI2luY2x1ZGUgPFNwZWxsaW5nQ29ycmVjdGlv
bkNvbnRyb2xsZXIuY3BwPgogI2luY2x1ZGUgPFNwZWxsQ2hlY2tlci5jcHA+CiAjaW5jbHVkZSA8
U3BsaXRFbGVtZW50Q29tbWFuZC5jcHA+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXgg
ZWQ2YmQ4MC4uM2E0YjBmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMTcyNiw0
NSArMTcyNiwxMSBAQCB2b2lkIEVkaXRvcjo6YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJvb2wg
c3RhcnRCZWZvcmVTZWxlY3Rpb24pCiAgICAgU3RyaW5nIGJhZEdyYW1tYXJQaHJhc2U7CiAgICAg
U3RyaW5nIG1pc3NwZWxsZWRXb3JkOwogCi0jaWYgVVNFKFVOSUZJRURfVEVYVF9DSEVDS0lORykK
LSAgICBncmFtbWFyU2VhcmNoUmFuZ2UgPSBzcGVsbGluZ1NlYXJjaFJhbmdlLT5jbG9uZVJhbmdl
KGVjKTsKICAgICBib29sIGlzU3BlbGxpbmcgPSB0cnVlOwogICAgIGludCBmb3VuZE9mZnNldCA9
IDA7Ci0gICAgU3RyaW5nIGZvdW5kSXRlbSA9IFRleHRDaGVja2luZ0hlbHBlcihjbGllbnQoKSwg
c3BlbGxpbmdTZWFyY2hSYW5nZSkuZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIoaXNH
cmFtbWFyQ2hlY2tpbmdFbmFibGVkKCksIGlzU3BlbGxpbmcsIGZvdW5kT2Zmc2V0LCBncmFtbWFy
RGV0YWlsKTsKLSAgICBpZiAoaXNTcGVsbGluZykgewotICAgICAgICBtaXNzcGVsbGVkV29yZCA9
IGZvdW5kSXRlbTsKLSAgICAgICAgbWlzc3BlbGxpbmdPZmZzZXQgPSBmb3VuZE9mZnNldDsKLSAg
ICB9IGVsc2UgewotICAgICAgICBiYWRHcmFtbWFyUGhyYXNlID0gZm91bmRJdGVtOwotICAgICAg
ICBncmFtbWFyUGhyYXNlT2Zmc2V0ID0gZm91bmRPZmZzZXQ7Ci0gICAgfQotI2Vsc2UKKyAgICBT
dHJpbmcgZm91bmRJdGVtOwogICAgIFJlZlB0cjxSYW5nZT4gZmlyc3RNaXNzcGVsbGluZ1Jhbmdl
OwotICAgIG1pc3NwZWxsZWRXb3JkID0gVGV4dENoZWNraW5nSGVscGVyKGNsaWVudCgpLCBzcGVs
bGluZ1NlYXJjaFJhbmdlKS5maW5kRmlyc3RNaXNzcGVsbGluZyhtaXNzcGVsbGluZ09mZnNldCwg
ZmFsc2UsIGZpcnN0TWlzc3BlbGxpbmdSYW5nZSk7Ci0KLSNpZiBVU0UoR1JBTU1BUl9DSEVDS0lO
RykKLSAgICAvLyBTZWFyY2ggZm9yIGJhZCBncmFtbWFyIHRoYXQgb2NjdXJzIHByaW9yIHRvIHRo
ZSBuZXh0IG1pc3NwZWxsZWQgd29yZCAoaWYgYW55KQotICAgIGdyYW1tYXJTZWFyY2hSYW5nZSA9
IHNwZWxsaW5nU2VhcmNoUmFuZ2UtPmNsb25lUmFuZ2UoZWMpOwotICAgIGlmICghbWlzc3BlbGxl
ZFdvcmQuaXNFbXB0eSgpKSB7Ci0gICAgICAgIC8vIFN0b3AgbG9va2luZyBhdCBzdGFydCBvZiBu
ZXh0IG1pc3NwZWxsZWQgd29yZAotICAgICAgICBDaGFyYWN0ZXJJdGVyYXRvciBjaGFycyhncmFt
bWFyU2VhcmNoUmFuZ2UuZ2V0KCkpOwotICAgICAgICBjaGFycy5hZHZhbmNlKG1pc3NwZWxsaW5n
T2Zmc2V0KTsKLSAgICAgICAgZ3JhbW1hclNlYXJjaFJhbmdlLT5zZXRFbmQoY2hhcnMucmFuZ2Uo
KS0+c3RhcnRDb250YWluZXIoZWMpLCBjaGFycy5yYW5nZSgpLT5zdGFydE9mZnNldChlYyksIGVj
KTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKGlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgpKQotICAg
ICAgICBiYWRHcmFtbWFyUGhyYXNlID0gVGV4dENoZWNraW5nSGVscGVyKGNsaWVudCgpLCBncmFt
bWFyU2VhcmNoUmFuZ2UpLmZpbmRGaXJzdEJhZEdyYW1tYXIoZ3JhbW1hckRldGFpbCwgZ3JhbW1h
clBocmFzZU9mZnNldCwgZmFsc2UpOwotI2VuZGlmCi0jZW5kaWYKLSAgICAKLSAgICAvLyBJZiB3
ZSBmb3VuZCBuZWl0aGVyIGJhZCBncmFtbWFyIG5vciBhIG1pc3NwZWxsZWQgd29yZCwgd3JhcCBh
bmQgdHJ5IGFnYWluIChidXQgZG9uJ3QgYm90aGVyIGlmIHdlIHN0YXJ0ZWQgYXQgdGhlIGJlZ2lu
bmluZyBvZiB0aGUKLSAgICAvLyBibG9jayByYXRoZXIgdGhhbiBhdCBhIHNlbGVjdGlvbikuCi0g
ICAgaWYgKHN0YXJ0ZWRXaXRoU2VsZWN0aW9uICYmICFtaXNzcGVsbGVkV29yZCAmJiAhYmFkR3Jh
bW1hclBocmFzZSkgewotICAgICAgICBzcGVsbGluZ1NlYXJjaFJhbmdlLT5zZXRTdGFydCh0b3BO
b2RlLCAwLCBlYyk7Ci0gICAgICAgIC8vIGdvaW5nIHVudGlsIHRoZSBlbmQgb2YgdGhlIHZlcnkg
Zmlyc3QgY2h1bmsgd2UgdGVzdGVkIGlzIGZhciBlbm91Z2gKLSAgICAgICAgc3BlbGxpbmdTZWFy
Y2hSYW5nZS0+c2V0RW5kKHNlYXJjaEVuZE5vZGVBZnRlcldyYXAsIHNlYXJjaEVuZE9mZnNldEFm
dGVyV3JhcCwgZWMpOwotICAgICAgICAKLSNpZiBVU0UoVU5JRklFRF9URVhUX0NIRUNLSU5HKQor
ICAgIGlmICh1bmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKG1fZnJhbWUpKSB7CiAgICAgICAgIGdy
YW1tYXJTZWFyY2hSYW5nZSA9IHNwZWxsaW5nU2VhcmNoUmFuZ2UtPmNsb25lUmFuZ2UoZWMpOwog
ICAgICAgICBmb3VuZEl0ZW0gPSBUZXh0Q2hlY2tpbmdIZWxwZXIoY2xpZW50KCksIHNwZWxsaW5n
U2VhcmNoUmFuZ2UpLmZpbmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFyKGlzR3JhbW1hckNo
ZWNraW5nRW5hYmxlZCgpLCBpc1NwZWxsaW5nLCBmb3VuZE9mZnNldCwgZ3JhbW1hckRldGFpbCk7
CiAgICAgICAgIGlmIChpc1NwZWxsaW5nKSB7CkBAIC0xNzc0LDcgKzE3NDAsNyBAQCB2b2lkIEVk
aXRvcjo6YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24p
CiAgICAgICAgICAgICBiYWRHcmFtbWFyUGhyYXNlID0gZm91bmRJdGVtOwogICAgICAgICAgICAg
Z3JhbW1hclBocmFzZU9mZnNldCA9IGZvdW5kT2Zmc2V0OwogICAgICAgICB9Ci0jZWxzZQorICAg
IH0gZWxzZSB7CiAgICAgICAgIG1pc3NwZWxsZWRXb3JkID0gVGV4dENoZWNraW5nSGVscGVyKGNs
aWVudCgpLCBzcGVsbGluZ1NlYXJjaFJhbmdlKS5maW5kRmlyc3RNaXNzcGVsbGluZyhtaXNzcGVs
bGluZ09mZnNldCwgZmFsc2UsIGZpcnN0TWlzc3BlbGxpbmdSYW5nZSk7CiAKICNpZiBVU0UoR1JB
TU1BUl9DSEVDS0lORykKQEAgLTE3ODUsMTEgKzE3NTEsNDUgQEAgdm9pZCBFZGl0b3I6OmFkdmFu
Y2VUb05leHRNaXNzcGVsbGluZyhib29sIHN0YXJ0QmVmb3JlU2VsZWN0aW9uKQogICAgICAgICAg
ICAgY2hhcnMuYWR2YW5jZShtaXNzcGVsbGluZ09mZnNldCk7CiAgICAgICAgICAgICBncmFtbWFy
U2VhcmNoUmFuZ2UtPnNldEVuZChjaGFycy5yYW5nZSgpLT5zdGFydENvbnRhaW5lcihlYyksIGNo
YXJzLnJhbmdlKCktPnN0YXJ0T2Zmc2V0KGVjKSwgZWMpOwogICAgICAgICB9Ci0KKyAgICAKICAg
ICAgICAgaWYgKGlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgpKQogICAgICAgICAgICAgYmFkR3Jh
bW1hclBocmFzZSA9IFRleHRDaGVja2luZ0hlbHBlcihjbGllbnQoKSwgZ3JhbW1hclNlYXJjaFJh
bmdlKS5maW5kRmlyc3RCYWRHcmFtbWFyKGdyYW1tYXJEZXRhaWwsIGdyYW1tYXJQaHJhc2VPZmZz
ZXQsIGZhbHNlKTsKICNlbmRpZgorICAgIH0KKyAgICAKKyAgICAvLyBJZiB3ZSBmb3VuZCBuZWl0
aGVyIGJhZCBncmFtbWFyIG5vciBhIG1pc3NwZWxsZWQgd29yZCwgd3JhcCBhbmQgdHJ5IGFnYWlu
IChidXQgZG9uJ3QgYm90aGVyIGlmIHdlIHN0YXJ0ZWQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUK
KyAgICAvLyBibG9jayByYXRoZXIgdGhhbiBhdCBhIHNlbGVjdGlvbikuCisgICAgaWYgKHN0YXJ0
ZWRXaXRoU2VsZWN0aW9uICYmICFtaXNzcGVsbGVkV29yZCAmJiAhYmFkR3JhbW1hclBocmFzZSkg
eworICAgICAgICBzcGVsbGluZ1NlYXJjaFJhbmdlLT5zZXRTdGFydCh0b3BOb2RlLCAwLCBlYyk7
CisgICAgICAgIC8vIGdvaW5nIHVudGlsIHRoZSBlbmQgb2YgdGhlIHZlcnkgZmlyc3QgY2h1bmsg
d2UgdGVzdGVkIGlzIGZhciBlbm91Z2gKKyAgICAgICAgc3BlbGxpbmdTZWFyY2hSYW5nZS0+c2V0
RW5kKHNlYXJjaEVuZE5vZGVBZnRlcldyYXAsIHNlYXJjaEVuZE9mZnNldEFmdGVyV3JhcCwgZWMp
OworICAgICAgICAKKyAgICAgICAgaWYgKHVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQobV9mcmFt
ZSkpIHsKKyAgICAgICAgICAgIGdyYW1tYXJTZWFyY2hSYW5nZSA9IHNwZWxsaW5nU2VhcmNoUmFu
Z2UtPmNsb25lUmFuZ2UoZWMpOworICAgICAgICAgICAgZm91bmRJdGVtID0gVGV4dENoZWNraW5n
SGVscGVyKGNsaWVudCgpLCBzcGVsbGluZ1NlYXJjaFJhbmdlKS5maW5kRmlyc3RNaXNzcGVsbGlu
Z09yQmFkR3JhbW1hcihpc0dyYW1tYXJDaGVja2luZ0VuYWJsZWQoKSwgaXNTcGVsbGluZywgZm91
bmRPZmZzZXQsIGdyYW1tYXJEZXRhaWwpOworICAgICAgICAgICAgaWYgKGlzU3BlbGxpbmcpIHsK
KyAgICAgICAgICAgICAgICBtaXNzcGVsbGVkV29yZCA9IGZvdW5kSXRlbTsKKyAgICAgICAgICAg
ICAgICBtaXNzcGVsbGluZ09mZnNldCA9IGZvdW5kT2Zmc2V0OworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICBiYWRHcmFtbWFyUGhyYXNlID0gZm91bmRJdGVtOworICAgICAg
ICAgICAgICAgIGdyYW1tYXJQaHJhc2VPZmZzZXQgPSBmb3VuZE9mZnNldDsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1pc3NwZWxsZWRXb3JkID0gVGV4dENo
ZWNraW5nSGVscGVyKGNsaWVudCgpLCBzcGVsbGluZ1NlYXJjaFJhbmdlKS5maW5kRmlyc3RNaXNz
cGVsbGluZyhtaXNzcGVsbGluZ09mZnNldCwgZmFsc2UsIGZpcnN0TWlzc3BlbGxpbmdSYW5nZSk7
CisKKyNpZiBVU0UoR1JBTU1BUl9DSEVDS0lORykKKyAgICAgICAgICAgIGdyYW1tYXJTZWFyY2hS
YW5nZSA9IHNwZWxsaW5nU2VhcmNoUmFuZ2UtPmNsb25lUmFuZ2UoZWMpOworICAgICAgICAgICAg
aWYgKCFtaXNzcGVsbGVkV29yZC5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICAvLyBTdG9w
IGxvb2tpbmcgYXQgc3RhcnQgb2YgbmV4dCBtaXNzcGVsbGVkIHdvcmQKKyAgICAgICAgICAgICAg
ICBDaGFyYWN0ZXJJdGVyYXRvciBjaGFycyhncmFtbWFyU2VhcmNoUmFuZ2UuZ2V0KCkpOworICAg
ICAgICAgICAgICAgIGNoYXJzLmFkdmFuY2UobWlzc3BlbGxpbmdPZmZzZXQpOworICAgICAgICAg
ICAgICAgIGdyYW1tYXJTZWFyY2hSYW5nZS0+c2V0RW5kKGNoYXJzLnJhbmdlKCktPnN0YXJ0Q29u
dGFpbmVyKGVjKSwgY2hhcnMucmFuZ2UoKS0+c3RhcnRPZmZzZXQoZWMpLCBlYyk7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGlmIChpc0dyYW1tYXJDaGVja2luZ0VuYWJsZWQoKSkKKyAg
ICAgICAgICAgICAgICBiYWRHcmFtbWFyUGhyYXNlID0gVGV4dENoZWNraW5nSGVscGVyKGNsaWVu
dCgpLCBncmFtbWFyU2VhcmNoUmFuZ2UpLmZpbmRGaXJzdEJhZEdyYW1tYXIoZ3JhbW1hckRldGFp
bCwgZ3JhbW1hclBocmFzZU9mZnNldCwgZmFsc2UpOwogI2VuZGlmCisgICAgICAgIH0KICAgICB9
CiAgICAgCiAgICAgaWYgKCFiYWRHcmFtbWFyUGhyYXNlLmlzRW1wdHkoKSkgewpAQCAtMTg4OSwx
MiArMTg4OSwxMyBAQCBWZWN0b3I8U3RyaW5nPiBFZGl0b3I6Omd1ZXNzZXNGb3JNaXNzcGVsbGVk
U2VsZWN0aW9uKCkKIAogVmVjdG9yPFN0cmluZz4gRWRpdG9yOjpndWVzc2VzRm9yTWlzc3BlbGxl
ZE9yVW5ncmFtbWF0aWNhbFNlbGVjdGlvbihib29sJiBtaXNzcGVsbGVkLCBib29sJiB1bmdyYW1t
YXRpY2FsKQogewotI2lmIFVTRShVTklGSUVEX1RFWFRfQ0hFQ0tJTkcpCi0gICAgUmVmUHRyPFJh
bmdlPiByYW5nZSA9IGZyYW1lKCktPnNlbGVjdGlvbigpLT50b05vcm1hbGl6ZWRSYW5nZSgpOwot
ICAgIGlmICghcmFuZ2UpCi0gICAgICAgIHJldHVybiBWZWN0b3I8U3RyaW5nPigpOwotICAgIHJl
dHVybiBUZXh0Q2hlY2tpbmdIZWxwZXIoY2xpZW50KCksIHJhbmdlKS5ndWVzc2VzRm9yTWlzc3Bl
bGxlZE9yVW5ncmFtbWF0aWNhbFJhbmdlKGlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgpLCBtaXNz
cGVsbGVkLCB1bmdyYW1tYXRpY2FsKTsKLSNlbHNlCisgICAgaWYgKHVuaWZpZWRUZXh0Q2hlY2tl
ckVuYWJsZWQobV9mcmFtZSkpIHsKKyAgICAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IGZyYW1l
KCktPnNlbGVjdGlvbigpLT50b05vcm1hbGl6ZWRSYW5nZSgpOworICAgICAgICBpZiAoIXJhbmdl
KQorICAgICAgICAgICAgcmV0dXJuIFZlY3RvcjxTdHJpbmc+KCk7CisgICAgICAgIHJldHVybiBU
ZXh0Q2hlY2tpbmdIZWxwZXIoY2xpZW50KCksIHJhbmdlKS5ndWVzc2VzRm9yTWlzc3BlbGxlZE9y
VW5ncmFtbWF0aWNhbFJhbmdlKGlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgpLCBtaXNzcGVsbGVk
LCB1bmdyYW1tYXRpY2FsKTsKKyAgICB9CisKICAgICBtaXNzcGVsbGVkID0gaXNTZWxlY3Rpb25N
aXNzcGVsbGVkKCk7CiAgICAgaWYgKG1pc3NwZWxsZWQpIHsKICAgICAgICAgdW5ncmFtbWF0aWNh
bCA9IGZhbHNlOwpAQCAtMTkwNiw3ICsxOTA3LDYgQEAgVmVjdG9yPFN0cmluZz4gRWRpdG9yOjpn
dWVzc2VzRm9yTWlzc3BlbGxlZE9yVW5ncmFtbWF0aWNhbFNlbGVjdGlvbihib29sJiBtaXNzcGUK
ICAgICB9CiAgICAgdW5ncmFtbWF0aWNhbCA9IGZhbHNlOwogICAgIHJldHVybiBWZWN0b3I8U3Ry
aW5nPigpOwotI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yOjpzaG93U3BlbGxpbmdHdWVzc1BhbmVs
KCkKQEAgLTE5NDgsODAgKzE5NDgsNzUgQEAgdm9pZCBFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NB
bmRCYWRHcmFtbWFyKGNvbnN0IFZpc2libGVTZWxlY3Rpb24gJm1vdmluZ1NlbGVjdGkKIAogdm9p
ZCBFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZ1RvV29yZChjb25zdCBWaXNpYmxl
UG9zaXRpb24gJndvcmRTdGFydCwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uQWZ0
ZXJUeXBpbmcsIGJvb2wgZG9SZXBsYWNlbWVudCkKIHsKLSNpZiBVU0UoVU5JRklFRF9URVhUX0NI
RUNLSU5HKQotICAgIG1fc3BlbGxpbmdDb3JyZWN0b3ItPmFwcGx5UGVuZGluZ0NvcnJlY3Rpb24o
c2VsZWN0aW9uQWZ0ZXJUeXBpbmcpOworICAgIGlmICh1bmlmaWVkVGV4dENoZWNrZXJFbmFibGVk
KG1fZnJhbWUpKSB7CisgICAgICAgIG1fc3BlbGxpbmdDb3JyZWN0b3ItPmFwcGx5UGVuZGluZ0Nv
cnJlY3Rpb24oc2VsZWN0aW9uQWZ0ZXJUeXBpbmcpOwogCi0gICAgVGV4dENoZWNraW5nVHlwZU1h
c2sgdGV4dENoZWNraW5nT3B0aW9ucyA9IDA7CisgICAgICAgIFRleHRDaGVja2luZ1R5cGVNYXNr
IHRleHRDaGVja2luZ09wdGlvbnMgPSAwOwogCi0gICAgaWYgKGlzQ29udGludW91c1NwZWxsQ2hl
Y2tpbmdFbmFibGVkKCkpCi0gICAgICAgIHRleHRDaGVja2luZ09wdGlvbnMgfD0gVGV4dENoZWNr
aW5nVHlwZVNwZWxsaW5nOworICAgICAgICBpZiAoaXNDb250aW51b3VzU3BlbGxDaGVja2luZ0Vu
YWJsZWQoKSkKKyAgICAgICAgICAgIHRleHRDaGVja2luZ09wdGlvbnMgfD0gVGV4dENoZWNraW5n
VHlwZVNwZWxsaW5nOwogCiAjaWYgVVNFKEFVVE9NQVRJQ19URVhUX1JFUExBQ0VNRU5UKQotICAg
IGlmIChkb1JlcGxhY2VtZW50IAotICAgICAgICAmJiAoaXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1
dGlvbkVuYWJsZWQoKQotICAgICAgICAgICAgfHwgaXNBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5h
YmxlZCgpCi0gICAgICAgICAgICB8fCBpc0F1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVk
KCkKLSAgICAgICAgICAgIHx8IGlzQXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxlZCgpCi0g
ICAgICAgICAgICB8fCAoKHRleHRDaGVja2luZ09wdGlvbnMgJiBUZXh0Q2hlY2tpbmdUeXBlU3Bl
bGxpbmcpICYmIGlzQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZCgpKSkpCi0gICAg
ICAgIHRleHRDaGVja2luZ09wdGlvbnMgfD0gVGV4dENoZWNraW5nVHlwZVJlcGxhY2VtZW50Owor
ICAgICAgICBpZiAoZG9SZXBsYWNlbWVudCAKKyAgICAgICAgICAgICYmIChpc0F1dG9tYXRpY1F1
b3RlU3Vic3RpdHV0aW9uRW5hYmxlZCgpCisgICAgICAgICAgICAgICAgfHwgaXNBdXRvbWF0aWNM
aW5rRGV0ZWN0aW9uRW5hYmxlZCgpCisgICAgICAgICAgICAgICAgfHwgaXNBdXRvbWF0aWNEYXNo
U3Vic3RpdHV0aW9uRW5hYmxlZCgpCisgICAgICAgICAgICAgICAgfHwgaXNBdXRvbWF0aWNUZXh0
UmVwbGFjZW1lbnRFbmFibGVkKCkKKyAgICAgICAgICAgICAgICB8fCAoKHRleHRDaGVja2luZ09w
dGlvbnMgJiBUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcpICYmIGlzQXV0b21hdGljU3BlbGxpbmdD
b3JyZWN0aW9uRW5hYmxlZCgpKSkpCisgICAgICAgICAgICB0ZXh0Q2hlY2tpbmdPcHRpb25zIHw9
IFRleHRDaGVja2luZ1R5cGVSZXBsYWNlbWVudDsKICNlbmRpZgotICAgIGlmICghdGV4dENoZWNr
aW5nT3B0aW9ucyAmIChUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgfCBUZXh0Q2hlY2tpbmdUeXBl
UmVwbGFjZW1lbnQpKQotICAgICAgICByZXR1cm47CisgICAgICAgIGlmICghKHRleHRDaGVja2lu
Z09wdGlvbnMgJiAoVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nIHwgVGV4dENoZWNraW5nVHlwZVJl
cGxhY2VtZW50KSkpCisgICAgICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoaXNHcmFtbWFyQ2hl
Y2tpbmdFbmFibGVkKCkpCi0gICAgICAgIHRleHRDaGVja2luZ09wdGlvbnMgfD0gVGV4dENoZWNr
aW5nVHlwZUdyYW1tYXI7CisgICAgICAgIGlmIChpc0dyYW1tYXJDaGVja2luZ0VuYWJsZWQoKSkK
KyAgICAgICAgICAgIHRleHRDaGVja2luZ09wdGlvbnMgfD0gVGV4dENoZWNraW5nVHlwZUdyYW1t
YXI7CiAKLSAgICBWaXNpYmxlU2VsZWN0aW9uIGFkamFjZW50V29yZHMgPSBWaXNpYmxlU2VsZWN0
aW9uKHN0YXJ0T2ZXb3JkKHdvcmRTdGFydCwgTGVmdFdvcmRJZk9uQm91bmRhcnkpLCBlbmRPZldv
cmQod29yZFN0YXJ0LCBSaWdodFdvcmRJZk9uQm91bmRhcnkpKTsKLSAgICBpZiAodGV4dENoZWNr
aW5nT3B0aW9ucyAmIFRleHRDaGVja2luZ1R5cGVHcmFtbWFyKSB7Ci0gICAgICAgIFZpc2libGVT
ZWxlY3Rpb24gc2VsZWN0ZWRTZW50ZW5jZSA9IFZpc2libGVTZWxlY3Rpb24oc3RhcnRPZlNlbnRl
bmNlKHdvcmRTdGFydCksIGVuZE9mU2VudGVuY2Uod29yZFN0YXJ0KSk7Ci0gICAgICAgIG1hcmtB
bGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXModGV4dENoZWNraW5nT3B0aW9ucywg
YWRqYWNlbnRXb3Jkcy50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBzZWxlY3RlZFNlbnRlbmNl
LnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCkpOworICAgICAgICBWaXNpYmxlU2VsZWN0aW9uIGFk
amFjZW50V29yZHMgPSBWaXNpYmxlU2VsZWN0aW9uKHN0YXJ0T2ZXb3JkKHdvcmRTdGFydCwgTGVm
dFdvcmRJZk9uQm91bmRhcnkpLCBlbmRPZldvcmQod29yZFN0YXJ0LCBSaWdodFdvcmRJZk9uQm91
bmRhcnkpKTsKKyAgICAgICAgaWYgKHRleHRDaGVja2luZ09wdGlvbnMgJiBUZXh0Q2hlY2tpbmdU
eXBlR3JhbW1hcikgeworICAgICAgICAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3RlZFNlbnRl
bmNlID0gVmlzaWJsZVNlbGVjdGlvbihzdGFydE9mU2VudGVuY2Uod29yZFN0YXJ0KSwgZW5kT2ZT
ZW50ZW5jZSh3b3JkU3RhcnQpKTsKKyAgICAgICAgICAgIG1hcmtBbGxNaXNzcGVsbGluZ3NBbmRC
YWRHcmFtbWFySW5SYW5nZXModGV4dENoZWNraW5nT3B0aW9ucywgYWRqYWNlbnRXb3Jkcy50b05v
cm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBzZWxlY3RlZFNlbnRlbmNlLnRvTm9ybWFsaXplZFJhbmdl
KCkuZ2V0KCkpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1hcmtBbGxNaXNzcGVsbGlu
Z3NBbmRCYWRHcmFtbWFySW5SYW5nZXModGV4dENoZWNraW5nT3B0aW9ucywgYWRqYWNlbnRXb3Jk
cy50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBhZGphY2VudFdvcmRzLnRvTm9ybWFsaXplZFJh
bmdlKCkuZ2V0KCkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1hcmtBbGxNaXNzcGVsbGluZ3NB
bmRCYWRHcmFtbWFySW5SYW5nZXModGV4dENoZWNraW5nT3B0aW9ucywgYWRqYWNlbnRXb3Jkcy50
b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBhZGphY2VudFdvcmRzLnRvTm9ybWFsaXplZFJhbmdl
KCkuZ2V0KCkpOwotICAgIH0KLQotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oc2VsZWN0aW9uQWZ0
ZXJUeXBpbmcpOwotICAgIFVOVVNFRF9QQVJBTShkb1JlcGxhY2VtZW50KTsKLQotICAgIGlmICgh
aXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuOworICAg
ICAgICBpZiAoIWlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkpCisgICAgICAgICAg
ICByZXR1cm47CiAKLSAgICAvLyBDaGVjayBzcGVsbGluZyBvZiBvbmUgd29yZAotICAgIFJlZlB0
cjxSYW5nZT4gbWlzc3BlbGxpbmdSYW5nZTsKLSAgICBtYXJrTWlzc3BlbGxpbmdzKFZpc2libGVT
ZWxlY3Rpb24oc3RhcnRPZldvcmQod29yZFN0YXJ0LCBMZWZ0V29yZElmT25Cb3VuZGFyeSksIGVu
ZE9mV29yZCh3b3JkU3RhcnQsIFJpZ2h0V29yZElmT25Cb3VuZGFyeSkpLCBtaXNzcGVsbGluZ1Jh
bmdlKTsKKyAgICAgICAgLy8gQ2hlY2sgc3BlbGxpbmcgb2Ygb25lIHdvcmQKKyAgICAgICAgUmVm
UHRyPFJhbmdlPiBtaXNzcGVsbGluZ1JhbmdlOworICAgICAgICBtYXJrTWlzc3BlbGxpbmdzKFZp
c2libGVTZWxlY3Rpb24oc3RhcnRPZldvcmQod29yZFN0YXJ0LCBMZWZ0V29yZElmT25Cb3VuZGFy
eSksIGVuZE9mV29yZCh3b3JkU3RhcnQsIFJpZ2h0V29yZElmT25Cb3VuZGFyeSkpLCBtaXNzcGVs
bGluZ1JhbmdlKTsKIAotICAgIC8vIEF1dG9jb3JyZWN0IHRoZSBtaXNzcGVsbGVkIHdvcmQuCi0g
ICAgaWYgKCFtaXNzcGVsbGluZ1JhbmdlKQotICAgICAgICByZXR1cm47CisgICAgICAgIC8vIEF1
dG9jb3JyZWN0IHRoZSBtaXNzcGVsbGVkIHdvcmQuCisgICAgICAgIGlmICghbWlzc3BlbGxpbmdS
YW5nZSkKKyAgICAgICAgICAgIHJldHVybjsKICAgICAKLSAgICAvLyBHZXQgdGhlIG1pc3NwZWxs
ZWQgd29yZC4KLSAgICBjb25zdCBTdHJpbmcgbWlzc3BlbGxlZFdvcmQgPSBwbGFpblRleHQobWlz
c3BlbGxpbmdSYW5nZS5nZXQoKSk7Ci0gICAgU3RyaW5nIGF1dG9jb3JyZWN0ZWRTdHJpbmcgPSB0
ZXh0Q2hlY2tlcigpLT5nZXRBdXRvQ29ycmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZCht
aXNzcGVsbGVkV29yZCk7Ci0KLSAgICAvLyBJZiBhdXRvY29ycmVjdGVkIHdvcmQgaXMgbm9uIGVt
cHR5LCByZXBsYWNlIHRoZSBtaXNzcGVsbGVkIHdvcmQgYnkgdGhpcyB3b3JkLgotICAgIGlmICgh
YXV0b2NvcnJlY3RlZFN0cmluZy5pc0VtcHR5KCkpIHsKLSAgICAgICAgVmlzaWJsZVNlbGVjdGlv
biBuZXdTZWxlY3Rpb24obWlzc3BlbGxpbmdSYW5nZS5nZXQoKSwgRE9XTlNUUkVBTSk7Ci0gICAg
ICAgIGlmIChuZXdTZWxlY3Rpb24gIT0gZnJhbWUoKS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigp
KSB7Ci0gICAgICAgICAgICBpZiAoIWZyYW1lKCktPnNlbGVjdGlvbigpLT5zaG91bGRDaGFuZ2VT
ZWxlY3Rpb24obmV3U2VsZWN0aW9uKSkKKyAgICAgICAgLy8gR2V0IHRoZSBtaXNzcGVsbGVkIHdv
cmQuCisgICAgICAgIGNvbnN0IFN0cmluZyBtaXNzcGVsbGVkV29yZCA9IHBsYWluVGV4dChtaXNz
cGVsbGluZ1JhbmdlLmdldCgpKTsKKyAgICAgICAgU3RyaW5nIGF1dG9jb3JyZWN0ZWRTdHJpbmcg
PSB0ZXh0Q2hlY2tlcigpLT5nZXRBdXRvQ29ycmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29y
ZChtaXNzcGVsbGVkV29yZCk7CisKKyAgICAgICAgLy8gSWYgYXV0b2NvcnJlY3RlZCB3b3JkIGlz
IG5vbiBlbXB0eSwgcmVwbGFjZSB0aGUgbWlzc3BlbGxlZCB3b3JkIGJ5IHRoaXMgd29yZC4KKyAg
ICAgICAgaWYgKCFhdXRvY29ycmVjdGVkU3RyaW5nLmlzRW1wdHkoKSkgeworICAgICAgICAgICAg
VmlzaWJsZVNlbGVjdGlvbiBuZXdTZWxlY3Rpb24obWlzc3BlbGxpbmdSYW5nZS5nZXQoKSwgRE9X
TlNUUkVBTSk7CisgICAgICAgICAgICBpZiAobmV3U2VsZWN0aW9uICE9IGZyYW1lKCktPnNlbGVj
dGlvbigpLT5zZWxlY3Rpb24oKSkgeworICAgICAgICAgICAgICAgIGlmICghZnJhbWUoKS0+c2Vs
ZWN0aW9uKCktPnNob3VsZENoYW5nZVNlbGVjdGlvbihuZXdTZWxlY3Rpb24pKQorICAgICAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgZnJhbWUoKS0+c2VsZWN0aW9uKCkt
PnNldFNlbGVjdGlvbihuZXdTZWxlY3Rpb24pOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBpZiAoIWZyYW1lKCktPmVkaXRvcigpLT5zaG91bGRJbnNlcnRUZXh0KGF1dG9jb3JyZWN0ZWRT
dHJpbmcsIG1pc3NwZWxsaW5nUmFuZ2UuZ2V0KCksIEVkaXRvckluc2VydEFjdGlvblR5cGVkKSkK
ICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBmcmFtZSgpLT5zZWxlY3Rpb24o
KS0+c2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbik7CisgICAgICAgICAgICBmcmFtZSgpLT5lZGl0
b3IoKS0+cmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KGF1dG9jb3JyZWN0ZWRTdHJpbmcsIGZhbHNl
LCBmYWxzZSk7CisKKyAgICAgICAgICAgIC8vIFJlc2V0IHRoZSBjaGFyZXQgb25lIGNoYXJhY3Rl
ciBmdXJ0aGVyLgorICAgICAgICAgICAgZnJhbWUoKS0+c2VsZWN0aW9uKCktPm1vdmVUbyhmcmFt
ZSgpLT5zZWxlY3Rpb24oKS0+ZW5kKCkpOworICAgICAgICAgICAgZnJhbWUoKS0+c2VsZWN0aW9u
KCktPm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlvbkZvcndh
cmQsIENoYXJhY3RlckdyYW51bGFyaXR5KTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICghZnJh
bWUoKS0+ZWRpdG9yKCktPnNob3VsZEluc2VydFRleHQoYXV0b2NvcnJlY3RlZFN0cmluZywgbWlz
c3BlbGxpbmdSYW5nZS5nZXQoKSwgRWRpdG9ySW5zZXJ0QWN0aW9uVHlwZWQpKQorICAgICAgICBp
ZiAoIWlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICBmcmFtZSgpLT5lZGl0b3IoKS0+cmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KGF1dG9jb3Jy
ZWN0ZWRTdHJpbmcsIGZhbHNlLCBmYWxzZSk7Ci0KLSAgICAgICAgLy8gUmVzZXQgdGhlIGNoYXJl
dCBvbmUgY2hhcmFjdGVyIGZ1cnRoZXIuCi0gICAgICAgIGZyYW1lKCktPnNlbGVjdGlvbigpLT5t
b3ZlVG8oZnJhbWUoKS0+c2VsZWN0aW9uKCktPmVuZCgpKTsKLSAgICAgICAgZnJhbWUoKS0+c2Vs
ZWN0aW9uKCktPm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlv
bkZvcndhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5KTsKLSAgICB9Ci0KLSAgICBpZiAoIWlzR3Jh
bW1hckNoZWNraW5nRW5hYmxlZCgpKQotICAgICAgICByZXR1cm47CiAgICAgCi0gICAgLy8gQ2hl
Y2sgZ3JhbW1hciBvZiBlbnRpcmUgc2VudGVuY2UKLSAgICBtYXJrQmFkR3JhbW1hcihWaXNpYmxl
U2VsZWN0aW9uKHN0YXJ0T2ZTZW50ZW5jZSh3b3JkU3RhcnQpLCBlbmRPZlNlbnRlbmNlKHdvcmRT
dGFydCkpKTsKLSNlbmRpZgorICAgICAgICAvLyBDaGVjayBncmFtbWFyIG9mIGVudGlyZSBzZW50
ZW5jZQorICAgICAgICBtYXJrQmFkR3JhbW1hcihWaXNpYmxlU2VsZWN0aW9uKHN0YXJ0T2ZTZW50
ZW5jZSh3b3JkU3RhcnQpLCBlbmRPZlNlbnRlbmNlKHdvcmRTdGFydCkpKTsKKyAgICB9CiB9CiAg
ICAgCiB2b2lkIEVkaXRvcjo6bWFya01pc3NwZWxsaW5nc09yQmFkR3JhbW1hcihjb25zdCBWaXNp
YmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24sIGJvb2wgY2hlY2tTcGVsbGluZywgUmVmUHRyPFJhbmdl
PiYgZmlyc3RNaXNzcGVsbGluZ1JhbmdlKQpAQCAtMjA4OSw3ICsyMDg0LDExIEBAIHZvaWQgRWRp
dG9yOjptYXJrQmFkR3JhbW1hcihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pCiAK
IHZvaWQgRWRpdG9yOjptYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRl
eHRDaGVja2luZ1R5cGVNYXNrIHRleHRDaGVja2luZ09wdGlvbnMsIFJhbmdlKiBzcGVsbGluZ1Jh
bmdlLCBSYW5nZSogZ3JhbW1hclJhbmdlKQogewotI2lmIFVTRShVTklGSUVEX1RFWFRfQ0hFQ0tJ
TkcpCisgICAgaWYgKCF1bmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKG1fZnJhbWUpKSB7CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAg
Ly8gVGhlcmUgc2hvdWxkbid0IGJlIHBlbmRpbmcgYXV0b2NvcnJlY3Rpb24gYXQgdGhpcyBtb21l
bnQuCiAgICAgQVNTRVJUKCFtX3NwZWxsaW5nQ29ycmVjdG9yLT5oYXNQZW5kaW5nQ29ycmVjdGlv
bigpKTsKIApAQCAtMjI4MCwxNyArMjI3OSwxNSBAQCB2b2lkIEVkaXRvcjo6bWFya0FsbE1pc3Nw
ZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhUZXh0Q2hlY2tpbmdUeXBlTWFzayB0ZXh0Qwog
ICAgICAgICAgICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6
QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlvbkZvcndhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5KTsK
ICAgICAgICAgfQogICAgIH0KLSNlbHNlCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
VU5VU0VEX1BBUkFNKHRleHRDaGVja2luZ09wdGlvbnMpOwotICAgIFVOVVNFRF9QQVJBTShzcGVs
bGluZ1JhbmdlKTsKLSAgICBVTlVTRURfUEFSQU0oZ3JhbW1hclJhbmdlKTsKLSNlbmRpZiAvLyBV
U0UoVU5JRklFRF9URVhUX0NIRUNLSU5HKQogfQogCiB2b2lkIEVkaXRvcjo6Y2hhbmdlQmFja1Rv
UmVwbGFjZWRTdHJpbmcoY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZykKIHsKLSNpZiBVU0Uo
VU5JRklFRF9URVhUX0NIRUNLSU5HKQorICAgIGlmICghdW5pZmllZFRleHRDaGVja2VyRW5hYmxl
ZChtX2ZyYW1lKSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKwogICAgIGlmIChyZXBsYWNlZFN0cmluZy5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybjsKIApAQCAtMjMwNCwyOCArMjMwMSwyNCBAQCB2b2lkIEVkaXRvcjo6Y2hhbmdlQmFj
a1RvUmVwbGFjZWRTdHJpbmcoY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZykKICAgICBSZWZQ
dHI8UmFuZ2U+IGNoYW5nZWRSYW5nZSA9IHBhcmFncmFwaC5zdWJyYW5nZShwYXJhZ3JhcGguY2hl
Y2tpbmdTdGFydCgpLCByZXBsYWNlZFN0cmluZy5sZW5ndGgoKSk7CiAgICAgY2hhbmdlZFJhbmdl
LT5zdGFydENvbnRhaW5lcigpLT5kb2N1bWVudCgpLT5tYXJrZXJzKCktPmFkZE1hcmtlcihjaGFu
Z2VkUmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpSZXBsYWNlbWVudCwgU3RyaW5nKCkpOwog
ICAgIG1fc3BlbGxpbmdDb3JyZWN0b3ItPm1hcmtSZXZlcnNlZChjaGFuZ2VkUmFuZ2UuZ2V0KCkp
OwotI2Vsc2UKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBVTlVTRURfUEFSQU0ocmVw
bGFjZWRTdHJpbmcpOwotI2VuZGlmIC8vIFVTRShVTklGSUVEX1RFWFRfQ0hFQ0tJTkcpCiB9CiAK
IAogdm9pZCBFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFyKGNvbnN0IFZpc2li
bGVTZWxlY3Rpb24mIHNwZWxsaW5nU2VsZWN0aW9uLCBib29sIG1hcmtHcmFtbWFyLCBjb25zdCBW
aXNpYmxlU2VsZWN0aW9uJiBncmFtbWFyU2VsZWN0aW9uKQogewotI2lmIFVTRShVTklGSUVEX1RF
WFRfQ0hFQ0tJTkcpCi0gICAgaWYgKCFpc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCgp
KQotICAgICAgICByZXR1cm47Ci0gICAgVGV4dENoZWNraW5nVHlwZU1hc2sgdGV4dENoZWNraW5n
T3B0aW9ucyA9IFRleHRDaGVja2luZ1R5cGVTcGVsbGluZyB8IFRleHRDaGVja2luZ1R5cGVDb3Jy
ZWN0aW9uOwotICAgIGlmIChtYXJrR3JhbW1hciAmJiBpc0dyYW1tYXJDaGVja2luZ0VuYWJsZWQo
KSkKLSAgICAgICAgdGV4dENoZWNraW5nT3B0aW9ucyB8PSBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1h
cjsKLSAgICBtYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKHRleHRDaGVj
a2luZ09wdGlvbnMsIHNwZWxsaW5nU2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCks
IGdyYW1tYXJTZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSk7Ci0jZWxzZQotICAg
IFJlZlB0cjxSYW5nZT4gZmlyc3RNaXNzcGVsbGluZ1JhbmdlOwotICAgIG1hcmtNaXNzcGVsbGlu
Z3Moc3BlbGxpbmdTZWxlY3Rpb24sIGZpcnN0TWlzc3BlbGxpbmdSYW5nZSk7Ci0gICAgaWYgKG1h
cmtHcmFtbWFyKQotICAgICAgICBtYXJrQmFkR3JhbW1hcihncmFtbWFyU2VsZWN0aW9uKTsKLSNl
bmRpZgorICAgIGlmICh1bmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKG1fZnJhbWUpKSB7CisgICAg
ICAgIGlmICghaXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSkKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgVGV4dENoZWNraW5nVHlwZU1hc2sgdGV4dENoZWNraW5nT3B0aW9u
cyA9IFRleHRDaGVja2luZ1R5cGVTcGVsbGluZyB8IFRleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9u
OworICAgICAgICBpZiAobWFya0dyYW1tYXIgJiYgaXNHcmFtbWFyQ2hlY2tpbmdFbmFibGVkKCkp
CisgICAgICAgICAgICB0ZXh0Q2hlY2tpbmdPcHRpb25zIHw9IFRleHRDaGVja2luZ1R5cGVHcmFt
bWFyOworICAgICAgICBtYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKHRl
eHRDaGVja2luZ09wdGlvbnMsIHNwZWxsaW5nU2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCku
Z2V0KCksIGdyYW1tYXJTZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSk7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgUmVmUHRyPFJhbmdlPiBmaXJzdE1pc3NwZWxsaW5nUmFuZ2U7Cisg
ICAgICAgIG1hcmtNaXNzcGVsbGluZ3Moc3BlbGxpbmdTZWxlY3Rpb24sIGZpcnN0TWlzc3BlbGxp
bmdSYW5nZSk7CisgICAgICAgIGlmIChtYXJrR3JhbW1hcikKKyAgICAgICAgICAgIG1hcmtCYWRH
cmFtbWFyKGdyYW1tYXJTZWxlY3Rpb24pOworICAgIH0KIH0KIAogdm9pZCBFZGl0b3I6OnVuYXBw
bGllZFNwZWxsQ29ycmVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb25PZkNv
cnJlY3RlZCwgY29uc3QgU3RyaW5nJiBjb3JyZWN0ZWQsIGNvbnN0IFN0cmluZyYgY29ycmVjdGlv
bikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcAppbmRl
eCBjZmJhZWQzLi40Nzk4MzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Rl
eHRDaGVja2luZ0hlbHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hl
Y2tpbmdIZWxwZXIuY3BwCkBAIC0yOSw3ICsyOSw5IEBACiAKICNpbmNsdWRlICJEb2N1bWVudC5o
IgogI2luY2x1ZGUgIkRvY3VtZW50TWFya2VyQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIkZyYW1l
LmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUg
IlRleHRDaGVja2VyQ2xpZW50LmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVk
ZSAiVmlzaWJsZVBvc2l0aW9uLmgiCkBAIC0yMjUsNyArMjI3LDkgQEAgU3RyaW5nIFRleHRDaGVj
a2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmcoaW50JiBmaXJzdE1pc3NwZWxsaW5nT2Zm
c2V0LCBib28KIAogU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxp
bmdPckJhZEdyYW1tYXIoYm9vbCBjaGVja0dyYW1tYXIsIGJvb2wmIG91dElzU3BlbGxpbmcsIGlu
dCYgb3V0Rmlyc3RGb3VuZE9mZnNldCwgR3JhbW1hckRldGFpbCYgb3V0R3JhbW1hckRldGFpbCkK
IHsKLSNpZiBVU0UoVU5JRklFRF9URVhUX0NIRUNLSU5HKQorICAgIGlmICghbV9yYW5nZSB8fCAh
dW5pZmllZFRleHRDaGVja2VyRW5hYmxlZChtX3JhbmdlLT5vd25lckRvY3VtZW50KCktPmZyYW1l
KCkpKQorICAgICAgICByZXR1cm4gIiI7CisKICAgICBTdHJpbmcgZmlyc3RGb3VuZEl0ZW07CiAg
ICAgU3RyaW5nIG1pc3NwZWxsZWRXb3JkOwogICAgIFN0cmluZyBiYWRHcmFtbWFyUGhyYXNlOwpA
QCAtMzQ0LDE0ICszNDgsNiBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RN
aXNzcGVsbGluZ09yQmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwgYgogICAgICAgICB0b3Rh
bExlbmd0aFByb2Nlc3NlZCArPSBjdXJyZW50TGVuZ3RoOwogICAgIH0KICAgICByZXR1cm4gZmly
c3RGb3VuZEl0ZW07Ci0jZWxzZQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIFVOVVNF
RF9QQVJBTShjaGVja0dyYW1tYXIpOwotICAgIFVOVVNFRF9QQVJBTShvdXRJc1NwZWxsaW5nKTsK
LSAgICBVTlVTRURfUEFSQU0ob3V0Rmlyc3RGb3VuZE9mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFN
KG91dEdyYW1tYXJEZXRhaWwpOwotICAgIHJldHVybiAiIjsKLSNlbmRpZiAvLyBVU0UoVU5JRklF
RF9URVhUX0NIRUNLSU5HKQogfQogCiBpbnQgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RH
cmFtbWFyRGV0YWlsKGNvbnN0IFZlY3RvcjxHcmFtbWFyRGV0YWlsPiYgZ3JhbW1hckRldGFpbHMs
IGludCBiYWRHcmFtbWFyUGhyYXNlTG9jYXRpb24sIGludCAvKmJhZEdyYW1tYXJQaHJhc2VMZW5n
dGgqLywgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0LCBib29sIG1hcmtBbGwpCkBAIC01
MTAsNyArNTA2LDkgQEAgYm9vbCBUZXh0Q2hlY2tpbmdIZWxwZXI6OmlzVW5ncmFtbWF0aWNhbChW
ZWN0b3I8U3RyaW5nPiYgZ3Vlc3Nlc1ZlY3RvcikgY29uc3QKIAogVmVjdG9yPFN0cmluZz4gVGV4
dENoZWNraW5nSGVscGVyOjpndWVzc2VzRm9yTWlzc3BlbGxlZE9yVW5ncmFtbWF0aWNhbFJhbmdl
KGJvb2wgY2hlY2tHcmFtbWFyLCBib29sJiBtaXNzcGVsbGVkLCBib29sJiB1bmdyYW1tYXRpY2Fs
KSBjb25zdAogewotI2lmIFVTRShVTklGSUVEX1RFWFRfQ0hFQ0tJTkcpCisgICAgaWYgKCFtX3Jh
bmdlIHx8ICF1bmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKG1fcmFuZ2UtPm93bmVyRG9jdW1lbnQo
KS0+ZnJhbWUoKSkpCisgICAgICAgIHJldHVybiBWZWN0b3I8U3RyaW5nPigpOworCiAgICAgVmVj
dG9yPFN0cmluZz4gZ3Vlc3NlczsKICAgICBFeGNlcHRpb25Db2RlIGVjOwogICAgIG1pc3NwZWxs
ZWQgPSBmYWxzZTsKQEAgLTU2MiwxMyArNTYwLDYgQEAgVmVjdG9yPFN0cmluZz4gVGV4dENoZWNr
aW5nSGVscGVyOjpndWVzc2VzRm9yTWlzc3BlbGxlZE9yVW5ncmFtbWF0aWNhbFJhbmdlKGJvb2wK
ICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gZ3Vlc3NlczsKLSNlbHNlCi0gICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgVU5VU0VEX1BBUkFNKGNoZWNrR3JhbW1hcik7Ci0gICAgVU5V
U0VEX1BBUkFNKG1pc3NwZWxsZWQpOwotICAgIFVOVVNFRF9QQVJBTSh1bmdyYW1tYXRpY2FsKTsK
LSAgICByZXR1cm4gVmVjdG9yPFN0cmluZz4oKTsKLSNlbmRpZiAvLyBVU0UoVU5JRklFRF9URVhU
X0NIRUNLSU5HKQogfQogCiAKQEAgLTYwNyw0ICs1OTgsMTYgQEAgdm9pZCBjaGVja1RleHRPZlBh
cmFncmFwaChUZXh0Q2hlY2tlckNsaWVudCogY2xpZW50LCBjb25zdCBVQ2hhciogdGV4dCwgaW50
IGxlbmcKICNlbmRpZgogfQogCitib29sIHVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQoRnJhbWUq
IGZyYW1lKQoreworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IFNldHRpbmdzKiBzZXR0aW5ncyA9IGZyYW1lLT5zZXR0aW5ncygpOworICAgIGlmICghc2V0dGlu
Z3MpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBzZXR0aW5ncy0+dW5pZmll
ZFRleHRDaGVja2VyRW5hYmxlZCgpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9U
ZXh0Q2hlY2tpbmdIZWxwZXIuaAppbmRleCA0MjQwZTczLi41YjhjODE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmgKQEAgLTI3LDYgKzI3LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSYW5nZTsKIGNsYXNzIFBvc2l0aW9uOworY2xhc3Mg
U2V0dGluZ3M7CiAKIGNsYXNzIFRleHRDaGVja2luZ1BhcmFncmFwaCB7CiBwdWJsaWM6CkBAIC05
NSw2ICs5Niw4IEBAIHByaXZhdGU6CiB2b2lkIGNoZWNrVGV4dE9mUGFyYWdyYXBoKFRleHRDaGVj
a2VyQ2xpZW50KiwgY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgsCiAgICAgVGV4dENoZWNr
aW5nVHlwZU1hc2sgY2hlY2tpbmdUeXBlcywgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mIHJl
c3VsdHMpOwogCitib29sIHVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQoRnJhbWUqIGZyYW1lKTsK
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVGV4dENoZWNraW5nSGVscGVy
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKaW5kZXggN2I0YjIyNS4uMDdjZDBiMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9TZXR0aW5ncy5jcHAKQEAgLTE5OCw2ICsxOTgsMTEgQEAgU2V0dGluZ3M6OlNldHRp
bmdzKFBhZ2UqIHBhZ2UpCiAgICAgLCBtX2Z1bGxTY3JlZW5BUElFbmFibGVkKGZhbHNlKQogI2Vu
ZGlmCiAgICAgLCBtX2FzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGZhbHNlKQorI2lm
IFVTRShVTklGSUVEX1RFWFRfQ0hFQ0tJTkcpCisgICAgLCBtX3VuaWZpZWRUZXh0Q2hlY2tlckVu
YWJsZWQodHJ1ZSkKKyNlbHNlCisgICAgLCBtX3VuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQoZmFs
c2UpCisjZW5kaWYKICAgICAsIG1fbWVtb3J5SW5mb0VuYWJsZWQoZmFsc2UpCiAgICAgLCBtX2lu
dGVyYWN0aXZlRm9ybVZhbGlkYXRpb24oZmFsc2UpCiAgICAgLCBtX3VzZVByZUhUTUw1UGFyc2Vy
UXVpcmtzKGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCmluZGV4IGUzNTdkYTkuLjFiYTllNjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKQEAgLTM4Myw2ICszODMsOSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIHZvaWQgc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQo
Ym9vbCBmbGFnKSB7IG1fYXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQgPSBmbGFnOyB9
CiAgICAgICAgIGJvb2wgYXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSBjb25zdCAg
eyByZXR1cm4gbV9hc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZDsgfQogCisgICAgICAg
IHZvaWQgc2V0VW5pZmllZFRleHRDaGVja2VyRW5hYmxlZChib29sIGZsYWcpIHsgbV91bmlmaWVk
VGV4dENoZWNrZXJFbmFibGVkID0gZmxhZzsgfQorICAgICAgICBib29sIHVuaWZpZWRUZXh0Q2hl
Y2tlckVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3VuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQ7
IH0KKwogICAgICAgICB2b2lkIHNldE1lbW9yeUluZm9FbmFibGVkKGJvb2wgZmxhZykgeyBtX21l
bW9yeUluZm9FbmFibGVkID0gZmxhZzsgfQogICAgICAgICBib29sIG1lbW9yeUluZm9FbmFibGVk
KCkgY29uc3QgeyByZXR1cm4gbV9tZW1vcnlJbmZvRW5hYmxlZDsgfQogCkBAIC01NzIsNiArNTc1
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIG1fZnVsbFNjcmVlbkFQSUVu
YWJsZWQgOiAxOwogI2VuZGlmCiAgICAgICAgIGJvb2wgbV9hc3luY2hyb25vdXNTcGVsbENoZWNr
aW5nRW5hYmxlZDogMTsKKyAgICAgICAgYm9vbCBtX3VuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQ6
IDE7CiAgICAgICAgIGJvb2wgbV9tZW1vcnlJbmZvRW5hYmxlZDogMTsKICAgICAgICAgYm9vbCBt
X2ludGVyYWN0aXZlRm9ybVZhbGlkYXRpb246IDE7CiAgICAgICAgIGJvb2wgbV91c2VQcmVIVE1M
NVBhcnNlclF1aXJrczogMTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110661</attachid>
            <date>2011-10-12 03:56:51 -0700</date>
            <delta_ts>2011-10-17 04:28:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69242-20111012195649.patch</filename>
            <type>text/plain</type>
            <size>39795</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTcxMDIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNDkwMThm
Yzc0MmJlMGNiNTU1ZjU3NTE3MjkzNmI4NDAyNzlkNTYzZC4uZDA5ZWZiNDY3YTcxNjc0OTI4ZTlm
M2EzYTMyY2RjOTRkMTg0ZmFhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTY0Niw5ICs2NDYs
MTEgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIGVkaXRpbmcvUmVwbGFjZU5vZGVXaXRoU3Bh
bkNvbW1hbmQuY3BwCiAgICAgZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKICAg
ICBlZGl0aW5nL1NldE5vZGVBdHRyaWJ1dGVDb21tYW5kLmNwcAorICAgIGVkaXRpbmcvU2V0U2Vs
ZWN0aW9uQ29tbWFuZC5jcHAKICAgICBlZGl0aW5nL1NtYXJ0UmVwbGFjZS5jcHAKICAgICBlZGl0
aW5nL1NwZWxsQ2hlY2tlci5jcHAKICAgICBlZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbnRy
b2xsZXIuY3BwCisgICAgZWRpdGluZy9TcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcAogICAg
IGVkaXRpbmcvU3BsaXRFbGVtZW50Q29tbWFuZC5jcHAKICAgICBlZGl0aW5nL1NwbGl0VGV4dE5v
ZGVDb21tYW5kLmNwcAogICAgIGVkaXRpbmcvU3BsaXRUZXh0Tm9kZUNvbnRhaW5pbmdFbGVtZW50
Q29tbWFuZC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhNGFiMTMwNmU3YjcwODI5ZWU3YzgzY2U3N2EyZThj
YjlkNmQ4ZmQzLi4zMTIxYTNlMGVhMzM0ZjBlZGM3MDc5NmQ3MjU1ZTJiMzUxMjM3Zjk4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMTEtMTAtMTIgIFNoaW55YSBLYXdhbmFrYSAgPHNo
aW55YWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBVbmlmaWVkIHNwZWxsLWNoZWNraW5nIGFuZCBs
ZWdhY3kgc3BlbGwgY2hlY2tpbmcgc2hvdWxkIGJlIGVhc3kgdG8gc3dpdGNoCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTI0MgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYkNvcmUgaGFzIHR3byBkaWZm
ZXJlbnQgY29kZSBwYXRocyBmb3Igc3BlbGwtY2hlY2tpbmc6CisgICAgICAgICAgICAgICAgICAx
KSBjaGVja1RleHRPZlBhcmFncmFwaCgpIGZvciBTbm93IExlb3BhcmQgb3IgbGF0ZXIKKyAgICAg
ICAgICAgICAgICAgIDIpIGNoZWNrU3BlbGxpbmdPZlN0cmluZygpIGZvciBjaGVja0dyYW1tYXJP
ZlN0cmluZygpIGZvciBvdGhlciBwbGF0Zm9ybXMuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRy
b2R1Y2VzIGEgZmxhZyB0byBjaGFuZ2UgY29kZSBwYXRocyBkeW5hbWljYWxseS4KKyAgICAgICAg
VGhpcyBwYXRjaCBhbHNvIGluY2x1ZGVzIGJ1aWxkIGZpeCBmb3IgUVQsIEdUSywgYW5kIFdpbmRv
d3MgcGxhdGZvcm1zLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIHRoaXMgcGF0Y2gg
ZG9lcyBub3QgY2hhbmdlIGEgYmVoYXZpb3IuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdlYkNvcmUucHJvOgor
ICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpoYXNNaXNzcGVsbGluZyk6CisgICAgICAgICAgQ2hhbmdlZCBzdGF0
aWMgaWYtVVNFKFVOSUZJRURfVEVYVF9DSEVDS0lORykgc3RhdGVtZW50IHRvIGR5bmFtaWMKKyAg
ICAgICAgICBjb25kaXRpb24gYnJhbmNoIHRvIGFjaGlldmUgZWFzeSBjb2RlIHBhdGggY2hhbmdl
LgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyLm1tOgorICAgICAgICAoQVhBdHRyaWJ1dGVTdHJpbmdTZXRTcGVsbGluZyk6IGRpdHRvLgor
ICAgICAgICAqIGVkaXRpbmcvRWRpdGluZ0FsbEluT25lLmNwcDoKKyAgICAgICAgKiBlZGl0aW5n
L0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmFkdmFuY2VUb05leHRNaXNz
cGVsbGluZyk6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpndWVzc2VzRm9yTWlz
c3BlbGxlZE9yVW5ncmFtbWF0aWNhbFNlbGVjdGlvbik6IGRpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzQWZ0ZXJUeXBpbmdUb1dvcmQpOiBkaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJ
blJhbmdlcyk6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjaGFuZ2VCYWNrVG9S
ZXBsYWNlZFN0cmluZyk6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjptYXJrTWlz
c3BlbGxpbmdzQW5kQmFkR3JhbW1hcik6IGRpdHRvLgorICAgICAgICAqIGVkaXRpbmcvVGV4dENo
ZWNraW5nSGVscGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2luZ0hlbHBlcjo6
ZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIpOiBkaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OlRleHRDaGVja2luZ0hlbHBlcjo6Z3Vlc3Nlc0Zvck1pc3NwZWxsZWRPclVuZ3JhbW1hdGlj
YWxSYW5nZSk6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6dW5pZmllZFRleHRDaGVja2VyRW5h
YmxlZCk6CisgICAgICAgICAgVXRpbGl0eSBmdW5jdGlvbiB0byBjaGVjayB1c2luZyB1bmlmaWVk
IHRleHQgY2hlY2tpbmcgb3Igbm90LgorICAgICAgICAqIGVkaXRpbmcvVGV4dENoZWNraW5nSGVs
cGVyLmg6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
ZXR0aW5nczo6U2V0dGluZ3MpOgorICAgICAgICAgIEluY2x1ZGVzIGEgZmxhZyB0byBjaGFuZ2Ug
dGhlIGNvZGUgcGF0aC4KKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmg6CisgICAgICAgIChXZWJD
b3JlOjpTZXR0aW5nczo6c2V0VW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCk6CisgICAgICAgICAg
U2V0cyBhIGZsYWcgdG8gY2hhbmdlIHRoZSBjb2RlIHBhdGguCisgICAgICAgIChXZWJDb3JlOjpT
ZXR0aW5nczo6dW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCk6CisgICAgICAgICAgQSBmbGFnIHRv
IGNoYW5nZSB0aGUgY29kZSBwYXRoLgorCiAyMDExLTEwLTEwICBSeW9zdWtlIE5pd2EgIDxybml3
YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjk2ODcwKTogZWRpdGluZy9wYXN0
ZWJvYXJkL3NtYXJ0LXBhc3RlLTAwOC5odG1sIGZhaWxzIG9uIG5vbi1NYWMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCmluZGV4IDVhZWVmZjY1MTA4MTMyZjdhNDFmMGRlMTJkMTY4Yjg0MmMy
ZTlmOTcuLjlmN2NkOGNmZDUyN2IyN2M1MzhlMWE5ZjhhM2E3NDc3ZTIzODRhODggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMTQzMCw2ICsxNDMwLDggQEAgd2ViY29yZV9zb3Vy
Y2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5k
LmggXAogCVNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2V0Tm9kZUF0dHJpYnV0ZUNvbW1hbmQuY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NldE5vZGVBdHRyaWJ1dGVDb21tYW5kLmggXAor
CVNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2V0U2VsZWN0aW9uQ29tbWFuZC5jcHAgXAorCVNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvU2V0U2VsZWN0aW9uQ29tbWFuZC5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1NtYXJ0UmVwbGFjZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU21h
cnRSZXBsYWNlLmggXAogCVNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU21hcnRSZXBsYWNlSUNVLmNw
cCBcCkBAIC0xNDM3LDYgKzE0MzksNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmggXAogCVNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
U3BlbGxpbmdDb3JyZWN0aW9uQ29udHJvbGxlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29udHJvbGxlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuaCBcCiAJU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9TcGxpdEVsZW1lbnRDb21tYW5kLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGxp
dEVsZW1lbnRDb21tYW5kLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5w
cm8gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCAwNjRkYzk4MTUwZjIxMGM0NjNk
M2Y4MTEwYzQzNjkwN2FjM2MwYjYxLi40NGI0MWI0MzQwZTE0ZWJkM2ZiMzZjY2MwOWZiYzk1NTc4
MTUyZDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtNjEwLDggKzYxMCwxMCBAQCBTT1VSQ0VTICs9IFwK
ICAgICBlZGl0aW5nL1JlcGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kLmNwcCBcCiAgICAgZWRpdGlu
Zy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAgXAogICAgIGVkaXRpbmcvU2V0Tm9kZUF0dHJp
YnV0ZUNvbW1hbmQuY3BwIFwKKyAgICBlZGl0aW5nL1NldFNlbGVjdGlvbkNvbW1hbmQuY3BwIFwK
ICAgICBlZGl0aW5nL1NtYXJ0UmVwbGFjZUlDVS5jcHAgXAogICAgIGVkaXRpbmcvU3BlbGxDaGVj
a2VyLmNwcCBcCisgICAgZWRpdGluZy9TcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcCBcCiAg
ICAgZWRpdGluZy9TcGVsbGluZ0NvcnJlY3Rpb25Db250cm9sbGVyLmNwcCBcCiAgICAgZWRpdGlu
Zy9TcGxpdEVsZW1lbnRDb21tYW5kLmNwcCBcCiAgICAgZWRpdGluZy9TcGxpdFRleHROb2RlQ29t
bWFuZC5jcHAgXApAQCAtMTYyNSw2ICsxNjI3LDcgQEAgSEVBREVSUyArPSBcCiAgICAgZWRpdGlu
Zy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5oIFwKICAgICBlZGl0aW5nL1NldE5vZGVBdHRyaWJ1
dGVDb21tYW5kLmggXAogICAgIGVkaXRpbmcvU21hcnRSZXBsYWNlLmggXAorICAgIGVkaXRpbmcv
U3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5oIFwKICAgICBlZGl0aW5nL1NwZWxsaW5nQ29ycmVj
dGlvbkNvbnRyb2xsZXIuaCBcCiAgICAgZWRpdGluZy9TcGxpdEVsZW1lbnRDb21tYW5kLmggXAog
ICAgIGVkaXRpbmcvU3BsaXRUZXh0Tm9kZUNvbW1hbmQuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDI0YjhlNmFkYjdlMzhhYzhhZWE4ZmQw
NDVhOTBlN2EyZDIyOWIyY2EuLjMyZDJjMTEzNDY1Y2U5NjczMzU4NGE4Mjk1ZmJjZmNiMjZmMTM4
NGIgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBA
IC01MjQ5Nyw2ICs1MjQ5Nyw2MiBAQAogCQkJCQkvPgogCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+
CiAJCQk8L0ZpbGU+CisgICAgICAgICAgICA8RmlsZQorICAgICAgICAgICAgICAgICBSZWxhdGl2
ZVBhdGg9Ii4uXGVkaXRpbmdcU2V0U2VsZWN0aW9uQ29tbWFuZC5jcHAiCisgICAgICAgICAgICAg
ICAgID4KKyAgICAgICAgICAgICAgICA8RmlsZUNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAg
ICAgICAgICBOYW1lPSJEZWJ1Z3xXaW4zMiIKKyAgICAgICAgICAgICAgICAgICAgICBFeGNsdWRl
ZEZyb21CdWlsZD0idHJ1ZSIKKyAgICAgICAgICAgICAgICAgICAgID4KKyAgICAgICAgICAgICAg
ICAgICAgPFRvb2wKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZT0iVkNDTENvbXBpbGVy
VG9vbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLz4KKyAgICAgICAgICAgICAgICAgICAg
PC9GaWxlQ29uZmlndXJhdGlvbj4KKyAgICAgICAgICAgICAgICA8RmlsZUNvbmZpZ3VyYXRpb24K
KyAgICAgICAgICAgICAgICAgICAgICBOYW1lPSJSZWxlYXNlfFdpbjMyIgorICAgICAgICAgICAg
ICAgICAgICAgIEV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorICAgICAgICAgICAgICAgICAgICAg
ID4KKyAgICAgICAgICAgICAgICAgICAgPFRvb2wKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
TmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLz4KKyAg
ICAgICAgICAgICAgICAgICAgPC9GaWxlQ29uZmlndXJhdGlvbj4KKyAgICAgICAgICAgICAgICA8
RmlsZUNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICBOYW1lPSJEZWJ1Z19DYWly
b19DRkxpdGV8V2luMzIiCisgICAgICAgICAgICAgICAgICAgICAgRXhjbHVkZWRGcm9tQnVpbGQ9
InRydWUiCisgICAgICAgICAgICAgICAgICAgICAgPgorICAgICAgICAgICAgICAgICAgICA8VG9v
bAorICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAvPgorICAgICAgICAgICAgICAgICAgICA8L0ZpbGVDb25m
aWd1cmF0aW9uPgorICAgICAgICAgICAgICAgIDxGaWxlQ29uZmlndXJhdGlvbgorICAgICAgICAg
ICAgICAgICAgICAgIE5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorICAgICAgICAg
ICAgICAgICAgICAgIEV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorICAgICAgICAgICAgICAgICAg
ICAgID4KKyAgICAgICAgICAgICAgICAgICAgPFRvb2wKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLz4K
KyAgICAgICAgICAgICAgICAgICAgPC9GaWxlQ29uZmlndXJhdGlvbj4KKyAgICAgICAgICAgICAg
ICA8RmlsZUNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICBOYW1lPSJEZWJ1Z19B
bGx8V2luMzIiCisgICAgICAgICAgICAgICAgICAgICAgRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUi
CisgICAgICAgICAgICAgICAgICAgICAgPgorICAgICAgICAgICAgICAgICAgICA8VG9vbAorICAg
ICAgICAgICAgICAgICAgICAgICAgICBOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAvPgorICAgICAgICAgICAgICAgICAgICA8L0ZpbGVDb25maWd1cmF0
aW9uPgorICAgICAgICAgICAgICAgIDxGaWxlQ29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAg
ICAgICAgIE5hbWU9IlByb2R1Y3Rpb258V2luMzIiCisgICAgICAgICAgICAgICAgICAgICAgRXhj
bHVkZWRGcm9tQnVpbGQ9InRydWUiCisgICAgICAgICAgICAgICAgICAgICAgPgorICAgICAgICAg
ICAgICAgICAgICA8VG9vbAorICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lPSJWQ0NMQ29t
cGlsZXJUb29sIgorICAgICAgICAgICAgICAgICAgICAgICAgICAvPgorICAgICAgICAgICAgICAg
ICAgICA8L0ZpbGVDb25maWd1cmF0aW9uPgorICAgICAgICAgICAgICAgIDwvRmlsZT4KKyAgICAg
ICAgICAgIDxGaWxlCisgICAgICAgICAgICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4uXGVkaXRpbmdc
U2V0U2VsZWN0aW9uQ29tbWFuZC5oIgorICAgICAgICAgICAgICAgICAgPgorICAgICAgICAgICAg
ICAgIDwvRmlsZT4KIAkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxlZGl0aW5nXFNtYXJ0
UmVwbGFjZS5oIgogCQkJCT4KQEAgLTUyNjA5LDYgKzUyNjY1LDYyIEBACiAJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxlZGl0aW5nXFNwZWxsQ2hlY2tlci5oIgogCQkJCT4KIAkJCTwvRmlsZT4KKyAgICAg
ICAgICAgIDxGaWxlCisgICAgICAgICAgICAgICAgIFJlbGF0aXZlUGF0aD0iLi5cZWRpdGluZ1xT
cGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcCIKKyAgICAgICAgICAgICAgICAgPgorICAgICAg
ICAgICAgICAgIDxGaWxlQ29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgICAgICAgIE5hbWU9
IkRlYnVnfFdpbjMyIgorICAgICAgICAgICAgICAgICAgICAgIEV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0
cnVlIgorICAgICAgICAgICAgICAgICAgICAgID4KKyAgICAgICAgICAgICAgICAgICAgPFRvb2wK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgLz4KKyAgICAgICAgICAgICAgICAgICAgPC9GaWxlQ29uZmln
dXJhdGlvbj4KKyAgICAgICAgICAgICAgICA8RmlsZUNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAg
ICAgICAgICAgICBOYW1lPSJSZWxlYXNlfFdpbjMyIgorICAgICAgICAgICAgICAgICAgICAgIEV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorICAgICAgICAgICAgICAgICAgICAgID4KKyAgICAgICAg
ICAgICAgICAgICAgPFRvb2wKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZT0iVkNDTENv
bXBpbGVyVG9vbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLz4KKyAgICAgICAgICAgICAg
ICAgICAgPC9GaWxlQ29uZmlndXJhdGlvbj4KKyAgICAgICAgICAgICAgICA8RmlsZUNvbmZpZ3Vy
YXRpb24KKyAgICAgICAgICAgICAgICAgICAgICBOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2lu
MzIiCisgICAgICAgICAgICAgICAgICAgICAgRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisgICAg
ICAgICAgICAgICAgICAgICAgPgorICAgICAgICAgICAgICAgICAgICA8VG9vbAorICAgICAgICAg
ICAgICAgICAgICAgICAgICBOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAvPgorICAgICAgICAgICAgICAgICAgICA8L0ZpbGVDb25maWd1cmF0aW9uPgor
ICAgICAgICAgICAgICAgIDxGaWxlQ29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgICAgICAg
IE5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorICAgICAgICAgICAgICAgICAgICAg
IEV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorICAgICAgICAgICAgICAgICAgICAgID4KKyAgICAg
ICAgICAgICAgICAgICAgPFRvb2wKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZT0iVkND
TENvbXBpbGVyVG9vbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLz4KKyAgICAgICAgICAg
ICAgICAgICAgPC9GaWxlQ29uZmlndXJhdGlvbj4KKyAgICAgICAgICAgICAgICA8RmlsZUNvbmZp
Z3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICBOYW1lPSJEZWJ1Z19BbGx8V2luMzIiCisg
ICAgICAgICAgICAgICAgICAgICAgRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisgICAgICAgICAg
ICAgICAgICAgICAgPgorICAgICAgICAgICAgICAgICAgICA8VG9vbAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAvPgorICAgICAgICAgICAgICAgICAgICA8L0ZpbGVDb25maWd1cmF0aW9uPgorICAgICAg
ICAgICAgICAgIDxGaWxlQ29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgICAgICAgIE5hbWU9
IlJlbGVhc2VfTFRDR3xXaW4zMiIKKyAgICAgICAgICAgICAgICAgICAgICBFeGNsdWRlZEZyb21C
dWlsZD0idHJ1ZSIKKyAgICAgICAgICAgICAgICAgICAgICA+CisgICAgICAgICAgICAgICAgICAg
IDxUb29sCisgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWU9IlZDQ0xDb21waWxlclRvb2wi
CisgICAgICAgICAgICAgICAgICAgICAgICAgIC8+CisgICAgICAgICAgICAgICAgICAgIDwvRmls
ZUNvbmZpZ3VyYXRpb24+CisgICAgICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICAgICAgPEZp
bGUKKyAgICAgICAgICAgICAgICAgIFJlbGF0aXZlUGF0aD0iLi5cZWRpdGluZ1xTcGVsbGluZ0Nv
cnJlY3Rpb25Db21tYW5kLmgiCisgICAgICAgICAgICAgICAgICA+CisgICAgICAgICAgICA8L0Zp
bGU+CiAJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cZWRpdGluZ1xTcGVsbGluZ0NvcnJl
Y3Rpb25Db250cm9sbGVyLmNwcCIKIAkJCQk+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAppbmRleCA5YTk5YTRmYTQ5N2ZkYWJh
ZTEwZTI3OWI0NTc5OThhNTQyOGM4YjQyLi5kMTEyZDY2YWE5NjFkOGI1ZTJlOGJjODU4ZmFlMzM0
YjhlYzEzZTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdC5jcHAKQEAgLTUwLDYgKzUwLDcgQEAKICNpbmNsdWRlICJSZW5kZXJW
aWV3LmgiCiAjaW5jbHVkZSAiUmVuZGVyV2lkZ2V0LmgiCiAjaW5jbHVkZSAiUmVuZGVyZWRQb3Np
dGlvbi5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiVGV4dENoZWNrZXJDbGll
bnQuaCIKICNpbmNsdWRlICJUZXh0Q2hlY2tpbmdIZWxwZXIuaCIKICNpbmNsdWRlICJUZXh0SXRl
cmF0b3IuaCIKQEAgLTI4OSwyMCArMjkwLDIwIEBAIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6
aGFzTWlzc3BlbGxpbmcoKSBjb25zdAogICAgIGNvbnN0IFVDaGFyKiBjaGFycyA9IHN0cmluZ1Zh
bHVlKCkuY2hhcmFjdGVycygpOwogICAgIGludCBjaGFyc0xlbmd0aCA9IHN0cmluZ1ZhbHVlKCku
bGVuZ3RoKCk7CiAgICAgYm9vbCBpc01pc3NwZWxsZWQgPSBmYWxzZTsKLSAgICAKLSNpZiBVU0Uo
VU5JRklFRF9URVhUX0NIRUNLSU5HKQotICAgIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IHJl
c3VsdHM7Ci0gICAgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgodGV4dENoZWNrZXIsIGNoYXJzLCBjaGFy
c0xlbmd0aCwgVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nLCByZXN1bHRzKTsKLSAgICBpZiAoIXJl
c3VsdHMuaXNFbXB0eSgpKQotICAgICAgICBpc01pc3NwZWxsZWQgPSB0cnVlOwotI2Vsc2UKLSAg
ICBpbnQgbWlzc3BlbGxpbmdMZW5ndGggPSAwOwotICAgIGludCBtaXNzcGVsbGluZ0xvY2F0aW9u
ID0gLTE7Ci0gICAgdGV4dENoZWNrZXItPmNoZWNrU3BlbGxpbmdPZlN0cmluZyhjaGFycywgY2hh
cnNMZW5ndGgsICZtaXNzcGVsbGluZ0xvY2F0aW9uLCAmbWlzc3BlbGxpbmdMZW5ndGgpOwotICAg
IGlmIChtaXNzcGVsbGluZ0xlbmd0aCB8fCBtaXNzcGVsbGluZ0xvY2F0aW9uICE9IC0xKQotICAg
ICAgICBpc01pc3NwZWxsZWQgPSB0cnVlOwotI2VuZGlmCi0gICAgCisKKyAgICBpZiAodW5pZmll
ZFRleHRDaGVja2VyRW5hYmxlZChmcmFtZSkpIHsKKyAgICAgICAgVmVjdG9yPFRleHRDaGVja2lu
Z1Jlc3VsdD4gcmVzdWx0czsKKyAgICAgICAgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgodGV4dENoZWNr
ZXIsIGNoYXJzLCBjaGFyc0xlbmd0aCwgVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nLCByZXN1bHRz
KTsKKyAgICAgICAgaWYgKCFyZXN1bHRzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGlzTWlzc3Bl
bGxlZCA9IHRydWU7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaW50IG1pc3NwZWxsaW5nTGVuZ3Ro
ID0gMDsKKyAgICAgICAgaW50IG1pc3NwZWxsaW5nTG9jYXRpb24gPSAtMTsKKyAgICAgICAgdGV4
dENoZWNrZXItPmNoZWNrU3BlbGxpbmdPZlN0cmluZyhjaGFycywgY2hhcnNMZW5ndGgsICZtaXNz
cGVsbGluZ0xvY2F0aW9uLCAmbWlzc3BlbGxpbmdMZW5ndGgpOworICAgICAgICBpZiAobWlzc3Bl
bGxpbmdMZW5ndGggfHwgbWlzc3BlbGxpbmdMb2NhdGlvbiAhPSAtMSkKKyAgICAgICAgICAgIGlz
TWlzc3BlbGxlZCA9IHRydWU7CisgICAgfQorCiAgICAgcmV0dXJuIGlzTWlzc3BlbGxlZDsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXIubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21h
Yy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQppbmRleCBkZmU3ODgyNGVlZTA1NDUx
MjVjNmZjYjcwZDg2MDZiOTgxMGM1NGVkLi5kNDIwNWZkODcxYjBjMTAyZjA3NzA3MDZjOGNiNmZh
NDE0NmMwNzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQpAQCAtNjg5LDM4
ICs2ODksMzggQEAgc3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVTdHJpbmdTZXRCbG9ja3F1b3RlTGV2
ZWwoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0clMKIAogc3RhdGljIHZvaWQgQVhBdHRy
aWJ1dGVTdHJpbmdTZXRTcGVsbGluZyhOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBhdHRyU3Ry
aW5nLCBOb2RlKiBub2RlLCBjb25zdCBVQ2hhciogY2hhcnMsIGludCBjaGFyTGVuZ3RoLCBOU1Jh
bmdlIHJhbmdlKQogewotI2lmIFVTRShVTklGSUVEX1RFWFRfQ0hFQ0tJTkcpCi0gICAgLy8gQ2hl
Y2sgdGhlIHNwZWxsaW5nIGRpcmVjdGx5IHNpbmNlIGRvY3VtZW50LT5tYXJrZXJzRm9yTm9kZSgp
IGRvZXMgbm90IHN0b3JlIHRoZSBtaXNzcGVsbGVkIG1hcmtpbmcgd2hlbiB0aGUgY3Vyc29yIGlz
IGluIGEgd29yZC4KLSAgICBUZXh0Q2hlY2tlckNsaWVudCogY2hlY2tlciA9IG5vZGUtPmRvY3Vt
ZW50KCktPmZyYW1lKCktPmVkaXRvcigpLT50ZXh0Q2hlY2tlcigpOwotCi0gICAgLy8gY2hlY2tU
ZXh0T2ZQYXJhZ3JhcGggaXMgdGhlIG9ubHkgc3BlbGxpbmcvZ3JhbW1hciBjaGVja2VyIGltcGxl
bWVudGVkIGluIFdLMSBhbmQgV0syCi0gICAgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gcmVz
dWx0czsKLSAgICBjaGVja1RleHRPZlBhcmFncmFwaChjaGVja2VyLCBjaGFycywgY2hhckxlbmd0
aCwgVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nLCByZXN1bHRzKTsKLSAgICAKLSAgICBzaXplX3Qg
c2l6ZSA9IHJlc3VsdHMuc2l6ZSgpOwotICAgIE5TTnVtYmVyKiB0cnVlVmFsdWUgPSBbTlNOdW1i
ZXIgbnVtYmVyV2l0aEJvb2w6WUVTXTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6
ZTsgaSsrKSB7Ci0gICAgICAgIGNvbnN0IFRleHRDaGVja2luZ1Jlc3VsdCYgcmVzdWx0ID0gcmVz
dWx0c1tpXTsKLSAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXROdW1iZXIoYXR0clN0cmluZywg
TlNBY2Nlc3NpYmlsaXR5TWlzc3BlbGxlZFRleHRBdHRyaWJ1dGUsIHRydWVWYWx1ZSwgTlNNYWtl
UmFuZ2UocmVzdWx0LmxvY2F0aW9uICsgcmFuZ2UubG9jYXRpb24sIHJlc3VsdC5sZW5ndGgpKTsK
LSAgICB9ICAgIAotI2Vsc2UKLSAgICBpbnQgY3VycmVudFBvc2l0aW9uID0gMDsKLSAgICB3aGls
ZSAoY2hhckxlbmd0aCA+IDApIHsKLSAgICAgICAgY29uc3QgVUNoYXIqIGNoYXJEYXRhID0gY2hh
cnMgKyBjdXJyZW50UG9zaXRpb247CisgICAgaWYgKHVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQo
bm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSkpIHsKKyAgICAgICAgLy8gQ2hlY2sgdGhlIHNwZWxs
aW5nIGRpcmVjdGx5IHNpbmNlIGRvY3VtZW50LT5tYXJrZXJzRm9yTm9kZSgpIGRvZXMgbm90IHN0
b3JlIHRoZSBtaXNzcGVsbGVkIG1hcmtpbmcgd2hlbiB0aGUgY3Vyc29yIGlzIGluIGEgd29yZC4K
ICAgICAgICAgVGV4dENoZWNrZXJDbGllbnQqIGNoZWNrZXIgPSBub2RlLT5kb2N1bWVudCgpLT5m
cmFtZSgpLT5lZGl0b3IoKS0+dGV4dENoZWNrZXIoKTsKKworICAgICAgICAvLyBjaGVja1RleHRP
ZlBhcmFncmFwaCBpcyB0aGUgb25seSBzcGVsbGluZy9ncmFtbWFyIGNoZWNrZXIgaW1wbGVtZW50
ZWQgaW4gV0sxIGFuZCBXSzIKKyAgICAgICAgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gcmVz
dWx0czsKKyAgICAgICAgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY2hlY2tlciwgY2hhcnMsIGNoYXJM
ZW5ndGgsIFRleHRDaGVja2luZ1R5cGVTcGVsbGluZywgcmVzdWx0cyk7CisgICAgCisgICAgICAg
IHNpemVfdCBzaXplID0gcmVzdWx0cy5zaXplKCk7CisgICAgICAgIE5TTnVtYmVyKiB0cnVlVmFs
dWUgPSBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXTsKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICAgICAgY29uc3QgVGV4dENoZWNraW5n
UmVzdWx0JiByZXN1bHQgPSByZXN1bHRzW2ldOworICAgICAgICAgICAgQVhBdHRyaWJ1dGVTdHJp
bmdTZXROdW1iZXIoYXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5TWlzc3BlbGxlZFRleHRBdHRy
aWJ1dGUsIHRydWVWYWx1ZSwgTlNNYWtlUmFuZ2UocmVzdWx0LmxvY2F0aW9uICsgcmFuZ2UubG9j
YXRpb24sIHJlc3VsdC5sZW5ndGgpKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAg
IGludCBjdXJyZW50UG9zaXRpb24gPSAwOworICAgICAgICB3aGlsZSAoY2hhckxlbmd0aCA+IDAp
IHsKKyAgICAgICAgICAgIGNvbnN0IFVDaGFyKiBjaGFyRGF0YSA9IGNoYXJzICsgY3VycmVudFBv
c2l0aW9uOworICAgICAgICAgICAgVGV4dENoZWNrZXJDbGllbnQqIGNoZWNrZXIgPSBub2RlLT5k
b2N1bWVudCgpLT5mcmFtZSgpLT5lZGl0b3IoKS0+dGV4dENoZWNrZXIoKTsKKyAgICAgICAgICAg
IAorICAgICAgICAgICAgaW50IG1pc3NwZWxsaW5nTG9jYXRpb24gPSAtMTsKKyAgICAgICAgICAg
IGludCBtaXNzcGVsbGluZ0xlbmd0aCA9IDA7CisgICAgICAgICAgICBjaGVja2VyLT5jaGVja1Nw
ZWxsaW5nT2ZTdHJpbmcoY2hhckRhdGEsIGNoYXJMZW5ndGgsICZtaXNzcGVsbGluZ0xvY2F0aW9u
LCAmbWlzc3BlbGxpbmdMZW5ndGgpOworICAgICAgICAgICAgaWYgKG1pc3NwZWxsaW5nTG9jYXRp
b24gPT0gLTEgfHwgIW1pc3NwZWxsaW5nTGVuZ3RoKQorICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAKLSAgICAgICAgaW50IG1pc3NwZWxsaW5nTG9jYXRpb24gPSAtMTsKLSAgICAgICAg
aW50IG1pc3NwZWxsaW5nTGVuZ3RoID0gMDsKLSAgICAgICAgY2hlY2tlci0+Y2hlY2tTcGVsbGlu
Z09mU3RyaW5nKGNoYXJEYXRhLCBjaGFyTGVuZ3RoLCAmbWlzc3BlbGxpbmdMb2NhdGlvbiwgJm1p
c3NwZWxsaW5nTGVuZ3RoKTsKLSAgICAgICAgaWYgKG1pc3NwZWxsaW5nTG9jYXRpb24gPT0gLTEg
fHwgIW1pc3NwZWxsaW5nTGVuZ3RoKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIAotICAg
ICAgICBOU1JhbmdlIHNwZWxsUmFuZ2UgPSBOU01ha2VSYW5nZShyYW5nZS5sb2NhdGlvbiArIGN1
cnJlbnRQb3NpdGlvbiArIG1pc3NwZWxsaW5nTG9jYXRpb24sIG1pc3NwZWxsaW5nTGVuZ3RoKTsK
LSAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXROdW1iZXIoYXR0clN0cmluZywgTlNBY2Nlc3Np
YmlsaXR5TWlzc3BlbGxlZFRleHRBdHRyaWJ1dGUsIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpZ
RVNdLCBzcGVsbFJhbmdlKTsKLSAgICAgICAgY2hhckxlbmd0aCAtPSAobWlzc3BlbGxpbmdMb2Nh
dGlvbiArIG1pc3NwZWxsaW5nTGVuZ3RoKTsKLSAgICAgICAgY3VycmVudFBvc2l0aW9uICs9ICht
aXNzcGVsbGluZ0xvY2F0aW9uICsgbWlzc3BlbGxpbmdMZW5ndGgpOworICAgICAgICAgICAgTlNS
YW5nZSBzcGVsbFJhbmdlID0gTlNNYWtlUmFuZ2UocmFuZ2UubG9jYXRpb24gKyBjdXJyZW50UG9z
aXRpb24gKyBtaXNzcGVsbGluZ0xvY2F0aW9uLCBtaXNzcGVsbGluZ0xlbmd0aCk7CisgICAgICAg
ICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldE51bWJlcihhdHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxp
dHlNaXNzcGVsbGVkVGV4dEF0dHJpYnV0ZSwgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOllFU10s
IHNwZWxsUmFuZ2UpOworICAgICAgICAgICAgY2hhckxlbmd0aCAtPSAobWlzc3BlbGxpbmdMb2Nh
dGlvbiArIG1pc3NwZWxsaW5nTGVuZ3RoKTsKKyAgICAgICAgICAgIGN1cnJlbnRQb3NpdGlvbiAr
PSAobWlzc3BlbGxpbmdMb2NhdGlvbiArIG1pc3NwZWxsaW5nTGVuZ3RoKTsKKyAgICAgICAgfQog
ICAgIH0KLSNlbmRpZiAgICAKIH0KIAogc3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVTdHJpbmdTZXRI
ZWFkaW5nTGV2ZWwoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0clN0cmluZywgUmVuZGVy
T2JqZWN0KiByZW5kZXJlciwgTlNSYW5nZSByYW5nZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdGluZ0FsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdGluZ0FsbEluT25lLmNwcAppbmRleCBkODYzMDk3NDE4ZDQ0ZmIwYzUzNjk1M2Q3M2UyZDJm
NGUxZjhhZGZmLi5jMDI5OWIzMjBhOGNiMDk5YTAyN2NlYWQ2ZDkxZDVmZjRhMDI5ZTQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdBbGxJbk9uZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nQWxsSW5PbmUuY3BwCkBAIC02MSw4ICs2MSwx
MCBAQAogI2luY2x1ZGUgPFJlcGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kLmNwcD4KICNpbmNsdWRl
IDxSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHA+CiAjaW5jbHVkZSA8U2V0Tm9kZUF0dHJpYnV0
ZUNvbW1hbmQuY3BwPgorI2luY2x1ZGUgPFNldFNlbGVjdGlvbkNvbW1hbmQuY3BwPgogI2luY2x1
ZGUgPFNtYXJ0UmVwbGFjZS5jcHA+CiAjaW5jbHVkZSA8U21hcnRSZXBsYWNlQ0YuY3BwPgorI2lu
Y2x1ZGUgPFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwPgogI2luY2x1ZGUgPFNwZWxsaW5n
Q29ycmVjdGlvbkNvbnRyb2xsZXIuY3BwPgogI2luY2x1ZGUgPFNwZWxsQ2hlY2tlci5jcHA+CiAj
aW5jbHVkZSA8U3BsaXRFbGVtZW50Q29tbWFuZC5jcHA+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5j
cHAKaW5kZXggZWQ2YmQ4MDk4OGI4ZDM3ZDFjNTEzNzEzMzAxMzdjYmNkYmJmYWVkMC4uM2E0YjBm
ZjIyMjM0OTk0MjYxNGViZmZiMjFmZjAyODY2MzY1YzI5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmNwcApAQCAtMTcyNiw0NSArMTcyNiwxMSBAQCB2b2lkIEVkaXRvcjo6YWR2YW5jZVRvTmV4
dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pCiAgICAgU3RyaW5nIGJhZEdy
YW1tYXJQaHJhc2U7CiAgICAgU3RyaW5nIG1pc3NwZWxsZWRXb3JkOwogCi0jaWYgVVNFKFVOSUZJ
RURfVEVYVF9DSEVDS0lORykKLSAgICBncmFtbWFyU2VhcmNoUmFuZ2UgPSBzcGVsbGluZ1NlYXJj
aFJhbmdlLT5jbG9uZVJhbmdlKGVjKTsKICAgICBib29sIGlzU3BlbGxpbmcgPSB0cnVlOwogICAg
IGludCBmb3VuZE9mZnNldCA9IDA7Ci0gICAgU3RyaW5nIGZvdW5kSXRlbSA9IFRleHRDaGVja2lu
Z0hlbHBlcihjbGllbnQoKSwgc3BlbGxpbmdTZWFyY2hSYW5nZSkuZmluZEZpcnN0TWlzc3BlbGxp
bmdPckJhZEdyYW1tYXIoaXNHcmFtbWFyQ2hlY2tpbmdFbmFibGVkKCksIGlzU3BlbGxpbmcsIGZv
dW5kT2Zmc2V0LCBncmFtbWFyRGV0YWlsKTsKLSAgICBpZiAoaXNTcGVsbGluZykgewotICAgICAg
ICBtaXNzcGVsbGVkV29yZCA9IGZvdW5kSXRlbTsKLSAgICAgICAgbWlzc3BlbGxpbmdPZmZzZXQg
PSBmb3VuZE9mZnNldDsKLSAgICB9IGVsc2UgewotICAgICAgICBiYWRHcmFtbWFyUGhyYXNlID0g
Zm91bmRJdGVtOwotICAgICAgICBncmFtbWFyUGhyYXNlT2Zmc2V0ID0gZm91bmRPZmZzZXQ7Ci0g
ICAgfQotI2Vsc2UKKyAgICBTdHJpbmcgZm91bmRJdGVtOwogICAgIFJlZlB0cjxSYW5nZT4gZmly
c3RNaXNzcGVsbGluZ1JhbmdlOwotICAgIG1pc3NwZWxsZWRXb3JkID0gVGV4dENoZWNraW5nSGVs
cGVyKGNsaWVudCgpLCBzcGVsbGluZ1NlYXJjaFJhbmdlKS5maW5kRmlyc3RNaXNzcGVsbGluZyht
aXNzcGVsbGluZ09mZnNldCwgZmFsc2UsIGZpcnN0TWlzc3BlbGxpbmdSYW5nZSk7Ci0KLSNpZiBV
U0UoR1JBTU1BUl9DSEVDS0lORykKLSAgICAvLyBTZWFyY2ggZm9yIGJhZCBncmFtbWFyIHRoYXQg
b2NjdXJzIHByaW9yIHRvIHRoZSBuZXh0IG1pc3NwZWxsZWQgd29yZCAoaWYgYW55KQotICAgIGdy
YW1tYXJTZWFyY2hSYW5nZSA9IHNwZWxsaW5nU2VhcmNoUmFuZ2UtPmNsb25lUmFuZ2UoZWMpOwot
ICAgIGlmICghbWlzc3BlbGxlZFdvcmQuaXNFbXB0eSgpKSB7Ci0gICAgICAgIC8vIFN0b3AgbG9v
a2luZyBhdCBzdGFydCBvZiBuZXh0IG1pc3NwZWxsZWQgd29yZAotICAgICAgICBDaGFyYWN0ZXJJ
dGVyYXRvciBjaGFycyhncmFtbWFyU2VhcmNoUmFuZ2UuZ2V0KCkpOwotICAgICAgICBjaGFycy5h
ZHZhbmNlKG1pc3NwZWxsaW5nT2Zmc2V0KTsKLSAgICAgICAgZ3JhbW1hclNlYXJjaFJhbmdlLT5z
ZXRFbmQoY2hhcnMucmFuZ2UoKS0+c3RhcnRDb250YWluZXIoZWMpLCBjaGFycy5yYW5nZSgpLT5z
dGFydE9mZnNldChlYyksIGVjKTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKGlzR3JhbW1hckNoZWNr
aW5nRW5hYmxlZCgpKQotICAgICAgICBiYWRHcmFtbWFyUGhyYXNlID0gVGV4dENoZWNraW5nSGVs
cGVyKGNsaWVudCgpLCBncmFtbWFyU2VhcmNoUmFuZ2UpLmZpbmRGaXJzdEJhZEdyYW1tYXIoZ3Jh
bW1hckRldGFpbCwgZ3JhbW1hclBocmFzZU9mZnNldCwgZmFsc2UpOwotI2VuZGlmCi0jZW5kaWYK
LSAgICAKLSAgICAvLyBJZiB3ZSBmb3VuZCBuZWl0aGVyIGJhZCBncmFtbWFyIG5vciBhIG1pc3Nw
ZWxsZWQgd29yZCwgd3JhcCBhbmQgdHJ5IGFnYWluIChidXQgZG9uJ3QgYm90aGVyIGlmIHdlIHN0
YXJ0ZWQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUKLSAgICAvLyBibG9jayByYXRoZXIgdGhhbiBh
dCBhIHNlbGVjdGlvbikuCi0gICAgaWYgKHN0YXJ0ZWRXaXRoU2VsZWN0aW9uICYmICFtaXNzcGVs
bGVkV29yZCAmJiAhYmFkR3JhbW1hclBocmFzZSkgewotICAgICAgICBzcGVsbGluZ1NlYXJjaFJh
bmdlLT5zZXRTdGFydCh0b3BOb2RlLCAwLCBlYyk7Ci0gICAgICAgIC8vIGdvaW5nIHVudGlsIHRo
ZSBlbmQgb2YgdGhlIHZlcnkgZmlyc3QgY2h1bmsgd2UgdGVzdGVkIGlzIGZhciBlbm91Z2gKLSAg
ICAgICAgc3BlbGxpbmdTZWFyY2hSYW5nZS0+c2V0RW5kKHNlYXJjaEVuZE5vZGVBZnRlcldyYXAs
IHNlYXJjaEVuZE9mZnNldEFmdGVyV3JhcCwgZWMpOwotICAgICAgICAKLSNpZiBVU0UoVU5JRklF
RF9URVhUX0NIRUNLSU5HKQorICAgIGlmICh1bmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKG1fZnJh
bWUpKSB7CiAgICAgICAgIGdyYW1tYXJTZWFyY2hSYW5nZSA9IHNwZWxsaW5nU2VhcmNoUmFuZ2Ut
PmNsb25lUmFuZ2UoZWMpOwogICAgICAgICBmb3VuZEl0ZW0gPSBUZXh0Q2hlY2tpbmdIZWxwZXIo
Y2xpZW50KCksIHNwZWxsaW5nU2VhcmNoUmFuZ2UpLmZpbmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRH
cmFtbWFyKGlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgpLCBpc1NwZWxsaW5nLCBmb3VuZE9mZnNl
dCwgZ3JhbW1hckRldGFpbCk7CiAgICAgICAgIGlmIChpc1NwZWxsaW5nKSB7CkBAIC0xNzc0LDcg
KzE3NDAsNyBAQCB2b2lkIEVkaXRvcjo6YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJvb2wgc3Rh
cnRCZWZvcmVTZWxlY3Rpb24pCiAgICAgICAgICAgICBiYWRHcmFtbWFyUGhyYXNlID0gZm91bmRJ
dGVtOwogICAgICAgICAgICAgZ3JhbW1hclBocmFzZU9mZnNldCA9IGZvdW5kT2Zmc2V0OwogICAg
ICAgICB9Ci0jZWxzZQorICAgIH0gZWxzZSB7CiAgICAgICAgIG1pc3NwZWxsZWRXb3JkID0gVGV4
dENoZWNraW5nSGVscGVyKGNsaWVudCgpLCBzcGVsbGluZ1NlYXJjaFJhbmdlKS5maW5kRmlyc3RN
aXNzcGVsbGluZyhtaXNzcGVsbGluZ09mZnNldCwgZmFsc2UsIGZpcnN0TWlzc3BlbGxpbmdSYW5n
ZSk7CiAKICNpZiBVU0UoR1JBTU1BUl9DSEVDS0lORykKQEAgLTE3ODUsMTEgKzE3NTEsNDUgQEAg
dm9pZCBFZGl0b3I6OmFkdmFuY2VUb05leHRNaXNzcGVsbGluZyhib29sIHN0YXJ0QmVmb3JlU2Vs
ZWN0aW9uKQogICAgICAgICAgICAgY2hhcnMuYWR2YW5jZShtaXNzcGVsbGluZ09mZnNldCk7CiAg
ICAgICAgICAgICBncmFtbWFyU2VhcmNoUmFuZ2UtPnNldEVuZChjaGFycy5yYW5nZSgpLT5zdGFy
dENvbnRhaW5lcihlYyksIGNoYXJzLnJhbmdlKCktPnN0YXJ0T2Zmc2V0KGVjKSwgZWMpOwogICAg
ICAgICB9Ci0KKyAgICAKICAgICAgICAgaWYgKGlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgpKQog
ICAgICAgICAgICAgYmFkR3JhbW1hclBocmFzZSA9IFRleHRDaGVja2luZ0hlbHBlcihjbGllbnQo
KSwgZ3JhbW1hclNlYXJjaFJhbmdlKS5maW5kRmlyc3RCYWRHcmFtbWFyKGdyYW1tYXJEZXRhaWws
IGdyYW1tYXJQaHJhc2VPZmZzZXQsIGZhbHNlKTsKICNlbmRpZgorICAgIH0KKyAgICAKKyAgICAv
LyBJZiB3ZSBmb3VuZCBuZWl0aGVyIGJhZCBncmFtbWFyIG5vciBhIG1pc3NwZWxsZWQgd29yZCwg
d3JhcCBhbmQgdHJ5IGFnYWluIChidXQgZG9uJ3QgYm90aGVyIGlmIHdlIHN0YXJ0ZWQgYXQgdGhl
IGJlZ2lubmluZyBvZiB0aGUKKyAgICAvLyBibG9jayByYXRoZXIgdGhhbiBhdCBhIHNlbGVjdGlv
bikuCisgICAgaWYgKHN0YXJ0ZWRXaXRoU2VsZWN0aW9uICYmICFtaXNzcGVsbGVkV29yZCAmJiAh
YmFkR3JhbW1hclBocmFzZSkgeworICAgICAgICBzcGVsbGluZ1NlYXJjaFJhbmdlLT5zZXRTdGFy
dCh0b3BOb2RlLCAwLCBlYyk7CisgICAgICAgIC8vIGdvaW5nIHVudGlsIHRoZSBlbmQgb2YgdGhl
IHZlcnkgZmlyc3QgY2h1bmsgd2UgdGVzdGVkIGlzIGZhciBlbm91Z2gKKyAgICAgICAgc3BlbGxp
bmdTZWFyY2hSYW5nZS0+c2V0RW5kKHNlYXJjaEVuZE5vZGVBZnRlcldyYXAsIHNlYXJjaEVuZE9m
ZnNldEFmdGVyV3JhcCwgZWMpOworICAgICAgICAKKyAgICAgICAgaWYgKHVuaWZpZWRUZXh0Q2hl
Y2tlckVuYWJsZWQobV9mcmFtZSkpIHsKKyAgICAgICAgICAgIGdyYW1tYXJTZWFyY2hSYW5nZSA9
IHNwZWxsaW5nU2VhcmNoUmFuZ2UtPmNsb25lUmFuZ2UoZWMpOworICAgICAgICAgICAgZm91bmRJ
dGVtID0gVGV4dENoZWNraW5nSGVscGVyKGNsaWVudCgpLCBzcGVsbGluZ1NlYXJjaFJhbmdlKS5m
aW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcihpc0dyYW1tYXJDaGVja2luZ0VuYWJsZWQo
KSwgaXNTcGVsbGluZywgZm91bmRPZmZzZXQsIGdyYW1tYXJEZXRhaWwpOworICAgICAgICAgICAg
aWYgKGlzU3BlbGxpbmcpIHsKKyAgICAgICAgICAgICAgICBtaXNzcGVsbGVkV29yZCA9IGZvdW5k
SXRlbTsKKyAgICAgICAgICAgICAgICBtaXNzcGVsbGluZ09mZnNldCA9IGZvdW5kT2Zmc2V0Owor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBiYWRHcmFtbWFyUGhyYXNlID0g
Zm91bmRJdGVtOworICAgICAgICAgICAgICAgIGdyYW1tYXJQaHJhc2VPZmZzZXQgPSBmb3VuZE9m
ZnNldDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1pc3Nw
ZWxsZWRXb3JkID0gVGV4dENoZWNraW5nSGVscGVyKGNsaWVudCgpLCBzcGVsbGluZ1NlYXJjaFJh
bmdlKS5maW5kRmlyc3RNaXNzcGVsbGluZyhtaXNzcGVsbGluZ09mZnNldCwgZmFsc2UsIGZpcnN0
TWlzc3BlbGxpbmdSYW5nZSk7CisKKyNpZiBVU0UoR1JBTU1BUl9DSEVDS0lORykKKyAgICAgICAg
ICAgIGdyYW1tYXJTZWFyY2hSYW5nZSA9IHNwZWxsaW5nU2VhcmNoUmFuZ2UtPmNsb25lUmFuZ2Uo
ZWMpOworICAgICAgICAgICAgaWYgKCFtaXNzcGVsbGVkV29yZC5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgICAgICAgICAvLyBTdG9wIGxvb2tpbmcgYXQgc3RhcnQgb2YgbmV4dCBtaXNzcGVsbGVkIHdv
cmQKKyAgICAgICAgICAgICAgICBDaGFyYWN0ZXJJdGVyYXRvciBjaGFycyhncmFtbWFyU2VhcmNo
UmFuZ2UuZ2V0KCkpOworICAgICAgICAgICAgICAgIGNoYXJzLmFkdmFuY2UobWlzc3BlbGxpbmdP
ZmZzZXQpOworICAgICAgICAgICAgICAgIGdyYW1tYXJTZWFyY2hSYW5nZS0+c2V0RW5kKGNoYXJz
LnJhbmdlKCktPnN0YXJ0Q29udGFpbmVyKGVjKSwgY2hhcnMucmFuZ2UoKS0+c3RhcnRPZmZzZXQo
ZWMpLCBlYyk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChpc0dyYW1tYXJDaGVj
a2luZ0VuYWJsZWQoKSkKKyAgICAgICAgICAgICAgICBiYWRHcmFtbWFyUGhyYXNlID0gVGV4dENo
ZWNraW5nSGVscGVyKGNsaWVudCgpLCBncmFtbWFyU2VhcmNoUmFuZ2UpLmZpbmRGaXJzdEJhZEdy
YW1tYXIoZ3JhbW1hckRldGFpbCwgZ3JhbW1hclBocmFzZU9mZnNldCwgZmFsc2UpOwogI2VuZGlm
CisgICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgaWYgKCFiYWRHcmFtbWFyUGhyYXNlLmlzRW1w
dHkoKSkgewpAQCAtMTg4OSwxMiArMTg4OSwxMyBAQCBWZWN0b3I8U3RyaW5nPiBFZGl0b3I6Omd1
ZXNzZXNGb3JNaXNzcGVsbGVkU2VsZWN0aW9uKCkKIAogVmVjdG9yPFN0cmluZz4gRWRpdG9yOjpn
dWVzc2VzRm9yTWlzc3BlbGxlZE9yVW5ncmFtbWF0aWNhbFNlbGVjdGlvbihib29sJiBtaXNzcGVs
bGVkLCBib29sJiB1bmdyYW1tYXRpY2FsKQogewotI2lmIFVTRShVTklGSUVEX1RFWFRfQ0hFQ0tJ
TkcpCi0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IGZyYW1lKCktPnNlbGVjdGlvbigpLT50b05v
cm1hbGl6ZWRSYW5nZSgpOwotICAgIGlmICghcmFuZ2UpCi0gICAgICAgIHJldHVybiBWZWN0b3I8
U3RyaW5nPigpOwotICAgIHJldHVybiBUZXh0Q2hlY2tpbmdIZWxwZXIoY2xpZW50KCksIHJhbmdl
KS5ndWVzc2VzRm9yTWlzc3BlbGxlZE9yVW5ncmFtbWF0aWNhbFJhbmdlKGlzR3JhbW1hckNoZWNr
aW5nRW5hYmxlZCgpLCBtaXNzcGVsbGVkLCB1bmdyYW1tYXRpY2FsKTsKLSNlbHNlCisgICAgaWYg
KHVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQobV9mcmFtZSkpIHsKKyAgICAgICAgUmVmUHRyPFJh
bmdlPiByYW5nZSA9IGZyYW1lKCktPnNlbGVjdGlvbigpLT50b05vcm1hbGl6ZWRSYW5nZSgpOwor
ICAgICAgICBpZiAoIXJhbmdlKQorICAgICAgICAgICAgcmV0dXJuIFZlY3RvcjxTdHJpbmc+KCk7
CisgICAgICAgIHJldHVybiBUZXh0Q2hlY2tpbmdIZWxwZXIoY2xpZW50KCksIHJhbmdlKS5ndWVz
c2VzRm9yTWlzc3BlbGxlZE9yVW5ncmFtbWF0aWNhbFJhbmdlKGlzR3JhbW1hckNoZWNraW5nRW5h
YmxlZCgpLCBtaXNzcGVsbGVkLCB1bmdyYW1tYXRpY2FsKTsKKyAgICB9CisKICAgICBtaXNzcGVs
bGVkID0gaXNTZWxlY3Rpb25NaXNzcGVsbGVkKCk7CiAgICAgaWYgKG1pc3NwZWxsZWQpIHsKICAg
ICAgICAgdW5ncmFtbWF0aWNhbCA9IGZhbHNlOwpAQCAtMTkwNiw3ICsxOTA3LDYgQEAgVmVjdG9y
PFN0cmluZz4gRWRpdG9yOjpndWVzc2VzRm9yTWlzc3BlbGxlZE9yVW5ncmFtbWF0aWNhbFNlbGVj
dGlvbihib29sJiBtaXNzcGUKICAgICB9CiAgICAgdW5ncmFtbWF0aWNhbCA9IGZhbHNlOwogICAg
IHJldHVybiBWZWN0b3I8U3RyaW5nPigpOwotI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yOjpzaG93
U3BlbGxpbmdHdWVzc1BhbmVsKCkKQEAgLTE5NDgsODAgKzE5NDgsNzUgQEAgdm9pZCBFZGl0b3I6
Om1hcmtNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFyKGNvbnN0IFZpc2libGVTZWxlY3Rpb24gJm1v
dmluZ1NlbGVjdGkKIAogdm9pZCBFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZ1Rv
V29yZChjb25zdCBWaXNpYmxlUG9zaXRpb24gJndvcmRTdGFydCwgY29uc3QgVmlzaWJsZVNlbGVj
dGlvbiYgc2VsZWN0aW9uQWZ0ZXJUeXBpbmcsIGJvb2wgZG9SZXBsYWNlbWVudCkKIHsKLSNpZiBV
U0UoVU5JRklFRF9URVhUX0NIRUNLSU5HKQotICAgIG1fc3BlbGxpbmdDb3JyZWN0b3ItPmFwcGx5
UGVuZGluZ0NvcnJlY3Rpb24oc2VsZWN0aW9uQWZ0ZXJUeXBpbmcpOworICAgIGlmICh1bmlmaWVk
VGV4dENoZWNrZXJFbmFibGVkKG1fZnJhbWUpKSB7CisgICAgICAgIG1fc3BlbGxpbmdDb3JyZWN0
b3ItPmFwcGx5UGVuZGluZ0NvcnJlY3Rpb24oc2VsZWN0aW9uQWZ0ZXJUeXBpbmcpOwogCi0gICAg
VGV4dENoZWNraW5nVHlwZU1hc2sgdGV4dENoZWNraW5nT3B0aW9ucyA9IDA7CisgICAgICAgIFRl
eHRDaGVja2luZ1R5cGVNYXNrIHRleHRDaGVja2luZ09wdGlvbnMgPSAwOwogCi0gICAgaWYgKGlz
Q29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkpCi0gICAgICAgIHRleHRDaGVja2luZ09w
dGlvbnMgfD0gVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nOworICAgICAgICBpZiAoaXNDb250aW51
b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSkKKyAgICAgICAgICAgIHRleHRDaGVja2luZ09wdGlv
bnMgfD0gVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nOwogCiAjaWYgVVNFKEFVVE9NQVRJQ19URVhU
X1JFUExBQ0VNRU5UKQotICAgIGlmIChkb1JlcGxhY2VtZW50IAotICAgICAgICAmJiAoaXNBdXRv
bWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQoKQotICAgICAgICAgICAgfHwgaXNBdXRvbWF0
aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZCgpCi0gICAgICAgICAgICB8fCBpc0F1dG9tYXRpY0Rhc2hT
dWJzdGl0dXRpb25FbmFibGVkKCkKLSAgICAgICAgICAgIHx8IGlzQXV0b21hdGljVGV4dFJlcGxh
Y2VtZW50RW5hYmxlZCgpCi0gICAgICAgICAgICB8fCAoKHRleHRDaGVja2luZ09wdGlvbnMgJiBU
ZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcpICYmIGlzQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9u
RW5hYmxlZCgpKSkpCi0gICAgICAgIHRleHRDaGVja2luZ09wdGlvbnMgfD0gVGV4dENoZWNraW5n
VHlwZVJlcGxhY2VtZW50OworICAgICAgICBpZiAoZG9SZXBsYWNlbWVudCAKKyAgICAgICAgICAg
ICYmIChpc0F1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZCgpCisgICAgICAgICAgICAg
ICAgfHwgaXNBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZCgpCisgICAgICAgICAgICAgICAg
fHwgaXNBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxlZCgpCisgICAgICAgICAgICAgICAg
fHwgaXNBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkKCkKKyAgICAgICAgICAgICAgICB8
fCAoKHRleHRDaGVja2luZ09wdGlvbnMgJiBUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcpICYmIGlz
QXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZCgpKSkpCisgICAgICAgICAgICB0ZXh0
Q2hlY2tpbmdPcHRpb25zIHw9IFRleHRDaGVja2luZ1R5cGVSZXBsYWNlbWVudDsKICNlbmRpZgot
ICAgIGlmICghdGV4dENoZWNraW5nT3B0aW9ucyAmIChUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcg
fCBUZXh0Q2hlY2tpbmdUeXBlUmVwbGFjZW1lbnQpKQotICAgICAgICByZXR1cm47CisgICAgICAg
IGlmICghKHRleHRDaGVja2luZ09wdGlvbnMgJiAoVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nIHwg
VGV4dENoZWNraW5nVHlwZVJlcGxhY2VtZW50KSkpCisgICAgICAgICAgICByZXR1cm47CiAKLSAg
ICBpZiAoaXNHcmFtbWFyQ2hlY2tpbmdFbmFibGVkKCkpCi0gICAgICAgIHRleHRDaGVja2luZ09w
dGlvbnMgfD0gVGV4dENoZWNraW5nVHlwZUdyYW1tYXI7CisgICAgICAgIGlmIChpc0dyYW1tYXJD
aGVja2luZ0VuYWJsZWQoKSkKKyAgICAgICAgICAgIHRleHRDaGVja2luZ09wdGlvbnMgfD0gVGV4
dENoZWNraW5nVHlwZUdyYW1tYXI7CiAKLSAgICBWaXNpYmxlU2VsZWN0aW9uIGFkamFjZW50V29y
ZHMgPSBWaXNpYmxlU2VsZWN0aW9uKHN0YXJ0T2ZXb3JkKHdvcmRTdGFydCwgTGVmdFdvcmRJZk9u
Qm91bmRhcnkpLCBlbmRPZldvcmQod29yZFN0YXJ0LCBSaWdodFdvcmRJZk9uQm91bmRhcnkpKTsK
LSAgICBpZiAodGV4dENoZWNraW5nT3B0aW9ucyAmIFRleHRDaGVja2luZ1R5cGVHcmFtbWFyKSB7
Ci0gICAgICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0ZWRTZW50ZW5jZSA9IFZpc2libGVTZWxl
Y3Rpb24oc3RhcnRPZlNlbnRlbmNlKHdvcmRTdGFydCksIGVuZE9mU2VudGVuY2Uod29yZFN0YXJ0
KSk7Ci0gICAgICAgIG1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXModGV4
dENoZWNraW5nT3B0aW9ucywgYWRqYWNlbnRXb3Jkcy50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgp
LCBzZWxlY3RlZFNlbnRlbmNlLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCkpOworICAgICAgICBW
aXNpYmxlU2VsZWN0aW9uIGFkamFjZW50V29yZHMgPSBWaXNpYmxlU2VsZWN0aW9uKHN0YXJ0T2ZX
b3JkKHdvcmRTdGFydCwgTGVmdFdvcmRJZk9uQm91bmRhcnkpLCBlbmRPZldvcmQod29yZFN0YXJ0
LCBSaWdodFdvcmRJZk9uQm91bmRhcnkpKTsKKyAgICAgICAgaWYgKHRleHRDaGVja2luZ09wdGlv
bnMgJiBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcikgeworICAgICAgICAgICAgVmlzaWJsZVNlbGVj
dGlvbiBzZWxlY3RlZFNlbnRlbmNlID0gVmlzaWJsZVNlbGVjdGlvbihzdGFydE9mU2VudGVuY2Uo
d29yZFN0YXJ0KSwgZW5kT2ZTZW50ZW5jZSh3b3JkU3RhcnQpKTsKKyAgICAgICAgICAgIG1hcmtB
bGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXModGV4dENoZWNraW5nT3B0aW9ucywg
YWRqYWNlbnRXb3Jkcy50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBzZWxlY3RlZFNlbnRlbmNl
LnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCkpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
IG1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXModGV4dENoZWNraW5nT3B0
aW9ucywgYWRqYWNlbnRXb3Jkcy50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBhZGphY2VudFdv
cmRzLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCkpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1h
cmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXModGV4dENoZWNraW5nT3B0aW9u
cywgYWRqYWNlbnRXb3Jkcy50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBhZGphY2VudFdvcmRz
LnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCkpOwotICAgIH0KLQotI2Vsc2UKLSAgICBVTlVTRURf
UEFSQU0oc2VsZWN0aW9uQWZ0ZXJUeXBpbmcpOwotICAgIFVOVVNFRF9QQVJBTShkb1JlcGxhY2Vt
ZW50KTsKLQotICAgIGlmICghaXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSkKLSAg
ICAgICAgcmV0dXJuOworICAgICAgICBpZiAoIWlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFi
bGVkKCkpCisgICAgICAgICAgICByZXR1cm47CiAKLSAgICAvLyBDaGVjayBzcGVsbGluZyBvZiBv
bmUgd29yZAotICAgIFJlZlB0cjxSYW5nZT4gbWlzc3BlbGxpbmdSYW5nZTsKLSAgICBtYXJrTWlz
c3BlbGxpbmdzKFZpc2libGVTZWxlY3Rpb24oc3RhcnRPZldvcmQod29yZFN0YXJ0LCBMZWZ0V29y
ZElmT25Cb3VuZGFyeSksIGVuZE9mV29yZCh3b3JkU3RhcnQsIFJpZ2h0V29yZElmT25Cb3VuZGFy
eSkpLCBtaXNzcGVsbGluZ1JhbmdlKTsKKyAgICAgICAgLy8gQ2hlY2sgc3BlbGxpbmcgb2Ygb25l
IHdvcmQKKyAgICAgICAgUmVmUHRyPFJhbmdlPiBtaXNzcGVsbGluZ1JhbmdlOworICAgICAgICBt
YXJrTWlzc3BlbGxpbmdzKFZpc2libGVTZWxlY3Rpb24oc3RhcnRPZldvcmQod29yZFN0YXJ0LCBM
ZWZ0V29yZElmT25Cb3VuZGFyeSksIGVuZE9mV29yZCh3b3JkU3RhcnQsIFJpZ2h0V29yZElmT25C
b3VuZGFyeSkpLCBtaXNzcGVsbGluZ1JhbmdlKTsKIAotICAgIC8vIEF1dG9jb3JyZWN0IHRoZSBt
aXNzcGVsbGVkIHdvcmQuCi0gICAgaWYgKCFtaXNzcGVsbGluZ1JhbmdlKQotICAgICAgICByZXR1
cm47CisgICAgICAgIC8vIEF1dG9jb3JyZWN0IHRoZSBtaXNzcGVsbGVkIHdvcmQuCisgICAgICAg
IGlmICghbWlzc3BlbGxpbmdSYW5nZSkKKyAgICAgICAgICAgIHJldHVybjsKICAgICAKLSAgICAv
LyBHZXQgdGhlIG1pc3NwZWxsZWQgd29yZC4KLSAgICBjb25zdCBTdHJpbmcgbWlzc3BlbGxlZFdv
cmQgPSBwbGFpblRleHQobWlzc3BlbGxpbmdSYW5nZS5nZXQoKSk7Ci0gICAgU3RyaW5nIGF1dG9j
b3JyZWN0ZWRTdHJpbmcgPSB0ZXh0Q2hlY2tlcigpLT5nZXRBdXRvQ29ycmVjdFN1Z2dlc3Rpb25G
b3JNaXNzcGVsbGVkV29yZChtaXNzcGVsbGVkV29yZCk7Ci0KLSAgICAvLyBJZiBhdXRvY29ycmVj
dGVkIHdvcmQgaXMgbm9uIGVtcHR5LCByZXBsYWNlIHRoZSBtaXNzcGVsbGVkIHdvcmQgYnkgdGhp
cyB3b3JkLgotICAgIGlmICghYXV0b2NvcnJlY3RlZFN0cmluZy5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgVmlzaWJsZVNlbGVjdGlvbiBuZXdTZWxlY3Rpb24obWlzc3BlbGxpbmdSYW5nZS5nZXQoKSwg
RE9XTlNUUkVBTSk7Ci0gICAgICAgIGlmIChuZXdTZWxlY3Rpb24gIT0gZnJhbWUoKS0+c2VsZWN0
aW9uKCktPnNlbGVjdGlvbigpKSB7Ci0gICAgICAgICAgICBpZiAoIWZyYW1lKCktPnNlbGVjdGlv
bigpLT5zaG91bGRDaGFuZ2VTZWxlY3Rpb24obmV3U2VsZWN0aW9uKSkKKyAgICAgICAgLy8gR2V0
IHRoZSBtaXNzcGVsbGVkIHdvcmQuCisgICAgICAgIGNvbnN0IFN0cmluZyBtaXNzcGVsbGVkV29y
ZCA9IHBsYWluVGV4dChtaXNzcGVsbGluZ1JhbmdlLmdldCgpKTsKKyAgICAgICAgU3RyaW5nIGF1
dG9jb3JyZWN0ZWRTdHJpbmcgPSB0ZXh0Q2hlY2tlcigpLT5nZXRBdXRvQ29ycmVjdFN1Z2dlc3Rp
b25Gb3JNaXNzcGVsbGVkV29yZChtaXNzcGVsbGVkV29yZCk7CisKKyAgICAgICAgLy8gSWYgYXV0
b2NvcnJlY3RlZCB3b3JkIGlzIG5vbiBlbXB0eSwgcmVwbGFjZSB0aGUgbWlzc3BlbGxlZCB3b3Jk
IGJ5IHRoaXMgd29yZC4KKyAgICAgICAgaWYgKCFhdXRvY29ycmVjdGVkU3RyaW5nLmlzRW1wdHko
KSkgeworICAgICAgICAgICAgVmlzaWJsZVNlbGVjdGlvbiBuZXdTZWxlY3Rpb24obWlzc3BlbGxp
bmdSYW5nZS5nZXQoKSwgRE9XTlNUUkVBTSk7CisgICAgICAgICAgICBpZiAobmV3U2VsZWN0aW9u
ICE9IGZyYW1lKCktPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKSkgeworICAgICAgICAgICAgICAg
IGlmICghZnJhbWUoKS0+c2VsZWN0aW9uKCktPnNob3VsZENoYW5nZVNlbGVjdGlvbihuZXdTZWxl
Y3Rpb24pKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgZnJh
bWUoKS0+c2VsZWN0aW9uKCktPnNldFNlbGVjdGlvbihuZXdTZWxlY3Rpb24pOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBpZiAoIWZyYW1lKCktPmVkaXRvcigpLT5zaG91bGRJbnNlcnRU
ZXh0KGF1dG9jb3JyZWN0ZWRTdHJpbmcsIG1pc3NwZWxsaW5nUmFuZ2UuZ2V0KCksIEVkaXRvcklu
c2VydEFjdGlvblR5cGVkKSkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBm
cmFtZSgpLT5zZWxlY3Rpb24oKS0+c2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbik7CisgICAgICAg
ICAgICBmcmFtZSgpLT5lZGl0b3IoKS0+cmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KGF1dG9jb3Jy
ZWN0ZWRTdHJpbmcsIGZhbHNlLCBmYWxzZSk7CisKKyAgICAgICAgICAgIC8vIFJlc2V0IHRoZSBj
aGFyZXQgb25lIGNoYXJhY3RlciBmdXJ0aGVyLgorICAgICAgICAgICAgZnJhbWUoKS0+c2VsZWN0
aW9uKCktPm1vdmVUbyhmcmFtZSgpLT5zZWxlY3Rpb24oKS0+ZW5kKCkpOworICAgICAgICAgICAg
ZnJhbWUoKS0+c2VsZWN0aW9uKCktPm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1v
dmUsIERpcmVjdGlvbkZvcndhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5KTsKICAgICAgICAgfQog
Ci0gICAgICAgIGlmICghZnJhbWUoKS0+ZWRpdG9yKCktPnNob3VsZEluc2VydFRleHQoYXV0b2Nv
cnJlY3RlZFN0cmluZywgbWlzc3BlbGxpbmdSYW5nZS5nZXQoKSwgRWRpdG9ySW5zZXJ0QWN0aW9u
VHlwZWQpKQorICAgICAgICBpZiAoIWlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgpKQogICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICBmcmFtZSgpLT5lZGl0b3IoKS0+cmVwbGFjZVNlbGVjdGlv
bldpdGhUZXh0KGF1dG9jb3JyZWN0ZWRTdHJpbmcsIGZhbHNlLCBmYWxzZSk7Ci0KLSAgICAgICAg
Ly8gUmVzZXQgdGhlIGNoYXJldCBvbmUgY2hhcmFjdGVyIGZ1cnRoZXIuCi0gICAgICAgIGZyYW1l
KCktPnNlbGVjdGlvbigpLT5tb3ZlVG8oZnJhbWUoKS0+c2VsZWN0aW9uKCktPmVuZCgpKTsKLSAg
ICAgICAgZnJhbWUoKS0+c2VsZWN0aW9uKCktPm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJh
dGlvbk1vdmUsIERpcmVjdGlvbkZvcndhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5KTsKLSAgICB9
Ci0KLSAgICBpZiAoIWlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgpKQotICAgICAgICByZXR1cm47
CiAgICAgCi0gICAgLy8gQ2hlY2sgZ3JhbW1hciBvZiBlbnRpcmUgc2VudGVuY2UKLSAgICBtYXJr
QmFkR3JhbW1hcihWaXNpYmxlU2VsZWN0aW9uKHN0YXJ0T2ZTZW50ZW5jZSh3b3JkU3RhcnQpLCBl
bmRPZlNlbnRlbmNlKHdvcmRTdGFydCkpKTsKLSNlbmRpZgorICAgICAgICAvLyBDaGVjayBncmFt
bWFyIG9mIGVudGlyZSBzZW50ZW5jZQorICAgICAgICBtYXJrQmFkR3JhbW1hcihWaXNpYmxlU2Vs
ZWN0aW9uKHN0YXJ0T2ZTZW50ZW5jZSh3b3JkU3RhcnQpLCBlbmRPZlNlbnRlbmNlKHdvcmRTdGFy
dCkpKTsKKyAgICB9CiB9CiAgICAgCiB2b2lkIEVkaXRvcjo6bWFya01pc3NwZWxsaW5nc09yQmFk
R3JhbW1hcihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24sIGJvb2wgY2hlY2tTcGVs
bGluZywgUmVmUHRyPFJhbmdlPiYgZmlyc3RNaXNzcGVsbGluZ1JhbmdlKQpAQCAtMjA4OSw3ICsy
MDg0LDExIEBAIHZvaWQgRWRpdG9yOjptYXJrQmFkR3JhbW1hcihjb25zdCBWaXNpYmxlU2VsZWN0
aW9uJiBzZWxlY3Rpb24pCiAKIHZvaWQgRWRpdG9yOjptYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFk
R3JhbW1hckluUmFuZ2VzKFRleHRDaGVja2luZ1R5cGVNYXNrIHRleHRDaGVja2luZ09wdGlvbnMs
IFJhbmdlKiBzcGVsbGluZ1JhbmdlLCBSYW5nZSogZ3JhbW1hclJhbmdlKQogewotI2lmIFVTRShV
TklGSUVEX1RFWFRfQ0hFQ0tJTkcpCisgICAgaWYgKCF1bmlmaWVkVGV4dENoZWNrZXJFbmFibGVk
KG1fZnJhbWUpKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1
cm47CisgICAgfQorCiAgICAgLy8gVGhlcmUgc2hvdWxkbid0IGJlIHBlbmRpbmcgYXV0b2NvcnJl
Y3Rpb24gYXQgdGhpcyBtb21lbnQuCiAgICAgQVNTRVJUKCFtX3NwZWxsaW5nQ29ycmVjdG9yLT5o
YXNQZW5kaW5nQ29ycmVjdGlvbigpKTsKIApAQCAtMjI4MCwxNyArMjI3OSwxNSBAQCB2b2lkIEVk
aXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhUZXh0Q2hlY2tp
bmdUeXBlTWFzayB0ZXh0QwogICAgICAgICAgICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlm
eShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlvbkZvcndhcmQsIENoYXJh
Y3RlckdyYW51bGFyaXR5KTsKICAgICAgICAgfQogICAgIH0KLSNlbHNlCi0gICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgVU5VU0VEX1BBUkFNKHRleHRDaGVja2luZ09wdGlvbnMpOwotICAg
IFVOVVNFRF9QQVJBTShzcGVsbGluZ1JhbmdlKTsKLSAgICBVTlVTRURfUEFSQU0oZ3JhbW1hclJh
bmdlKTsKLSNlbmRpZiAvLyBVU0UoVU5JRklFRF9URVhUX0NIRUNLSU5HKQogfQogCiB2b2lkIEVk
aXRvcjo6Y2hhbmdlQmFja1RvUmVwbGFjZWRTdHJpbmcoY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0
cmluZykKIHsKLSNpZiBVU0UoVU5JRklFRF9URVhUX0NIRUNLSU5HKQorICAgIGlmICghdW5pZmll
ZFRleHRDaGVja2VyRW5hYmxlZChtX2ZyYW1lKSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGlmIChyZXBsYWNlZFN0cmluZy5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjMwNCwyOCArMjMwMSwyNCBAQCB2b2lk
IEVkaXRvcjo6Y2hhbmdlQmFja1RvUmVwbGFjZWRTdHJpbmcoY29uc3QgU3RyaW5nJiByZXBsYWNl
ZFN0cmluZykKICAgICBSZWZQdHI8UmFuZ2U+IGNoYW5nZWRSYW5nZSA9IHBhcmFncmFwaC5zdWJy
YW5nZShwYXJhZ3JhcGguY2hlY2tpbmdTdGFydCgpLCByZXBsYWNlZFN0cmluZy5sZW5ndGgoKSk7
CiAgICAgY2hhbmdlZFJhbmdlLT5zdGFydENvbnRhaW5lcigpLT5kb2N1bWVudCgpLT5tYXJrZXJz
KCktPmFkZE1hcmtlcihjaGFuZ2VkUmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpSZXBsYWNl
bWVudCwgU3RyaW5nKCkpOwogICAgIG1fc3BlbGxpbmdDb3JyZWN0b3ItPm1hcmtSZXZlcnNlZChj
aGFuZ2VkUmFuZ2UuZ2V0KCkpOwotI2Vsc2UKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICBVTlVTRURfUEFSQU0ocmVwbGFjZWRTdHJpbmcpOwotI2VuZGlmIC8vIFVTRShVTklGSUVEX1RF
WFRfQ0hFQ0tJTkcpCiB9CiAKIAogdm9pZCBFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBbmRCYWRH
cmFtbWFyKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNwZWxsaW5nU2VsZWN0aW9uLCBib29sIG1h
cmtHcmFtbWFyLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBncmFtbWFyU2VsZWN0aW9uKQogewot
I2lmIFVTRShVTklGSUVEX1RFWFRfQ0hFQ0tJTkcpCi0gICAgaWYgKCFpc0NvbnRpbnVvdXNTcGVs
bENoZWNraW5nRW5hYmxlZCgpKQotICAgICAgICByZXR1cm47Ci0gICAgVGV4dENoZWNraW5nVHlw
ZU1hc2sgdGV4dENoZWNraW5nT3B0aW9ucyA9IFRleHRDaGVja2luZ1R5cGVTcGVsbGluZyB8IFRl
eHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uOwotICAgIGlmIChtYXJrR3JhbW1hciAmJiBpc0dyYW1t
YXJDaGVja2luZ0VuYWJsZWQoKSkKLSAgICAgICAgdGV4dENoZWNraW5nT3B0aW9ucyB8PSBUZXh0
Q2hlY2tpbmdUeXBlR3JhbW1hcjsKLSAgICBtYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1h
ckluUmFuZ2VzKHRleHRDaGVja2luZ09wdGlvbnMsIHNwZWxsaW5nU2VsZWN0aW9uLnRvTm9ybWFs
aXplZFJhbmdlKCkuZ2V0KCksIGdyYW1tYXJTZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFuZ2UoKS5n
ZXQoKSk7Ci0jZWxzZQotICAgIFJlZlB0cjxSYW5nZT4gZmlyc3RNaXNzcGVsbGluZ1JhbmdlOwot
ICAgIG1hcmtNaXNzcGVsbGluZ3Moc3BlbGxpbmdTZWxlY3Rpb24sIGZpcnN0TWlzc3BlbGxpbmdS
YW5nZSk7Ci0gICAgaWYgKG1hcmtHcmFtbWFyKQotICAgICAgICBtYXJrQmFkR3JhbW1hcihncmFt
bWFyU2VsZWN0aW9uKTsKLSNlbmRpZgorICAgIGlmICh1bmlmaWVkVGV4dENoZWNrZXJFbmFibGVk
KG1fZnJhbWUpKSB7CisgICAgICAgIGlmICghaXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJs
ZWQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgVGV4dENoZWNraW5nVHlwZU1hc2sg
dGV4dENoZWNraW5nT3B0aW9ucyA9IFRleHRDaGVja2luZ1R5cGVTcGVsbGluZyB8IFRleHRDaGVj
a2luZ1R5cGVDb3JyZWN0aW9uOworICAgICAgICBpZiAobWFya0dyYW1tYXIgJiYgaXNHcmFtbWFy
Q2hlY2tpbmdFbmFibGVkKCkpCisgICAgICAgICAgICB0ZXh0Q2hlY2tpbmdPcHRpb25zIHw9IFRl
eHRDaGVja2luZ1R5cGVHcmFtbWFyOworICAgICAgICBtYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFk
R3JhbW1hckluUmFuZ2VzKHRleHRDaGVja2luZ09wdGlvbnMsIHNwZWxsaW5nU2VsZWN0aW9uLnRv
Tm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIGdyYW1tYXJTZWxlY3Rpb24udG9Ob3JtYWxpemVkUmFu
Z2UoKS5nZXQoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgUmVmUHRyPFJhbmdlPiBmaXJzdE1p
c3NwZWxsaW5nUmFuZ2U7CisgICAgICAgIG1hcmtNaXNzcGVsbGluZ3Moc3BlbGxpbmdTZWxlY3Rp
b24sIGZpcnN0TWlzc3BlbGxpbmdSYW5nZSk7CisgICAgICAgIGlmIChtYXJrR3JhbW1hcikKKyAg
ICAgICAgICAgIG1hcmtCYWRHcmFtbWFyKGdyYW1tYXJTZWxlY3Rpb24pOworICAgIH0KIH0KIAog
dm9pZCBFZGl0b3I6OnVuYXBwbGllZFNwZWxsQ29ycmVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0
aW9uJiBzZWxlY3Rpb25PZkNvcnJlY3RlZCwgY29uc3QgU3RyaW5nJiBjb3JyZWN0ZWQsIGNvbnN0
IFN0cmluZyYgY29ycmVjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VGV4dENoZWNraW5nSGVscGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNr
aW5nSGVscGVyLmNwcAppbmRleCBjZmJhZWQzM2EwNmNkZjNhZjIxZDRiMjBiZmIyMWNhMGRkNmNi
MmViLi40Nzk4MzNkYzkzMjZjNGFiNjYxZTMxN2VjZmY1MDdjMjc5ZjE0ZWY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCkBAIC0yOSw3ICsyOSw5
IEBACiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TWFya2VyQ29u
dHJvbGxlci5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKKyNpbmNs
dWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlRleHRDaGVja2VyQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVBvc2l0aW9uLmgiCkBAIC0yMjUs
NyArMjI3LDkgQEAgU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxp
bmcoaW50JiBmaXJzdE1pc3NwZWxsaW5nT2Zmc2V0LCBib28KIAogU3RyaW5nIFRleHRDaGVja2lu
Z0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIoYm9vbCBjaGVja0dyYW1t
YXIsIGJvb2wmIG91dElzU3BlbGxpbmcsIGludCYgb3V0Rmlyc3RGb3VuZE9mZnNldCwgR3JhbW1h
ckRldGFpbCYgb3V0R3JhbW1hckRldGFpbCkKIHsKLSNpZiBVU0UoVU5JRklFRF9URVhUX0NIRUNL
SU5HKQorICAgIGlmICghbV9yYW5nZSB8fCAhdW5pZmllZFRleHRDaGVja2VyRW5hYmxlZChtX3Jh
bmdlLT5vd25lckRvY3VtZW50KCktPmZyYW1lKCkpKQorICAgICAgICByZXR1cm4gIiI7CisKICAg
ICBTdHJpbmcgZmlyc3RGb3VuZEl0ZW07CiAgICAgU3RyaW5nIG1pc3NwZWxsZWRXb3JkOwogICAg
IFN0cmluZyBiYWRHcmFtbWFyUGhyYXNlOwpAQCAtMzQ0LDE0ICszNDgsNiBAQCBTdHJpbmcgVGV4
dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcihib29sIGNo
ZWNrR3JhbW1hciwgYgogICAgICAgICB0b3RhbExlbmd0aFByb2Nlc3NlZCArPSBjdXJyZW50TGVu
Z3RoOwogICAgIH0KICAgICByZXR1cm4gZmlyc3RGb3VuZEl0ZW07Ci0jZWxzZQotICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgIFVOVVNFRF9QQVJBTShjaGVja0dyYW1tYXIpOwotICAgIFVO
VVNFRF9QQVJBTShvdXRJc1NwZWxsaW5nKTsKLSAgICBVTlVTRURfUEFSQU0ob3V0Rmlyc3RGb3Vu
ZE9mZnNldCk7Ci0gICAgVU5VU0VEX1BBUkFNKG91dEdyYW1tYXJEZXRhaWwpOwotICAgIHJldHVy
biAiIjsKLSNlbmRpZiAvLyBVU0UoVU5JRklFRF9URVhUX0NIRUNLSU5HKQogfQogCiBpbnQgVGV4
dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RHcmFtbWFyRGV0YWlsKGNvbnN0IFZlY3RvcjxHcmFt
bWFyRGV0YWlsPiYgZ3JhbW1hckRldGFpbHMsIGludCBiYWRHcmFtbWFyUGhyYXNlTG9jYXRpb24s
IGludCAvKmJhZEdyYW1tYXJQaHJhc2VMZW5ndGgqLywgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5k
T2Zmc2V0LCBib29sIG1hcmtBbGwpCkBAIC01MTAsNyArNTA2LDkgQEAgYm9vbCBUZXh0Q2hlY2tp
bmdIZWxwZXI6OmlzVW5ncmFtbWF0aWNhbChWZWN0b3I8U3RyaW5nPiYgZ3Vlc3Nlc1ZlY3Rvcikg
Y29uc3QKIAogVmVjdG9yPFN0cmluZz4gVGV4dENoZWNraW5nSGVscGVyOjpndWVzc2VzRm9yTWlz
c3BlbGxlZE9yVW5ncmFtbWF0aWNhbFJhbmdlKGJvb2wgY2hlY2tHcmFtbWFyLCBib29sJiBtaXNz
cGVsbGVkLCBib29sJiB1bmdyYW1tYXRpY2FsKSBjb25zdAogewotI2lmIFVTRShVTklGSUVEX1RF
WFRfQ0hFQ0tJTkcpCisgICAgaWYgKCFtX3JhbmdlIHx8ICF1bmlmaWVkVGV4dENoZWNrZXJFbmFi
bGVkKG1fcmFuZ2UtPm93bmVyRG9jdW1lbnQoKS0+ZnJhbWUoKSkpCisgICAgICAgIHJldHVybiBW
ZWN0b3I8U3RyaW5nPigpOworCiAgICAgVmVjdG9yPFN0cmluZz4gZ3Vlc3NlczsKICAgICBFeGNl
cHRpb25Db2RlIGVjOwogICAgIG1pc3NwZWxsZWQgPSBmYWxzZTsKQEAgLTU2MiwxMyArNTYwLDYg
QEAgVmVjdG9yPFN0cmluZz4gVGV4dENoZWNraW5nSGVscGVyOjpndWVzc2VzRm9yTWlzc3BlbGxl
ZE9yVW5ncmFtbWF0aWNhbFJhbmdlKGJvb2wKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4g
Z3Vlc3NlczsKLSNlbHNlCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgVU5VU0VEX1BB
UkFNKGNoZWNrR3JhbW1hcik7Ci0gICAgVU5VU0VEX1BBUkFNKG1pc3NwZWxsZWQpOwotICAgIFVO
VVNFRF9QQVJBTSh1bmdyYW1tYXRpY2FsKTsKLSAgICByZXR1cm4gVmVjdG9yPFN0cmluZz4oKTsK
LSNlbmRpZiAvLyBVU0UoVU5JRklFRF9URVhUX0NIRUNLSU5HKQogfQogCiAKQEAgLTYwNyw0ICs1
OTgsMTYgQEAgdm9pZCBjaGVja1RleHRPZlBhcmFncmFwaChUZXh0Q2hlY2tlckNsaWVudCogY2xp
ZW50LCBjb25zdCBVQ2hhciogdGV4dCwgaW50IGxlbmcKICNlbmRpZgogfQogCitib29sIHVuaWZp
ZWRUZXh0Q2hlY2tlckVuYWJsZWQoRnJhbWUqIGZyYW1lKQoreworICAgIGlmICghZnJhbWUpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGZyYW1lLT5z
ZXR0aW5ncygpOworICAgIGlmICghc2V0dGluZ3MpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIHJldHVybiBzZXR0aW5ncy0+dW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCgpOworfQorCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5o
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuaAppbmRleCA0MjQw
ZTczNTNlZWM3MDhjZGE3MzNhNTM2NTRkNjUyMTM5Yjk0NDVjLi44NDY2Yjg3ODU3ZmFlZjhmNTFi
NjZiOTJiNDI4MWI1NTgzNGQ0NGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1RleHRDaGVja2luZ0hlbHBlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENo
ZWNraW5nSGVscGVyLmgKQEAgLTI3LDYgKzI3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBSYW5nZTsKIGNsYXNzIFBvc2l0aW9uOworY2xhc3MgU2V0dGluZ3M7CiAKIGNsYXNzIFRl
eHRDaGVja2luZ1BhcmFncmFwaCB7CiBwdWJsaWM6CkBAIC05NSw2ICs5Niw4IEBAIHByaXZhdGU6
CiB2b2lkIGNoZWNrVGV4dE9mUGFyYWdyYXBoKFRleHRDaGVja2VyQ2xpZW50KiwgY29uc3QgVUNo
YXIqIHRleHQsIGludCBsZW5ndGgsCiAgICAgVGV4dENoZWNraW5nVHlwZU1hc2sgY2hlY2tpbmdU
eXBlcywgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpOwogCitib29sIHVuaWZp
ZWRUZXh0Q2hlY2tlckVuYWJsZWQoRnJhbWUqKTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgLy8gVGV4dENoZWNraW5nSGVscGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAK
aW5kZXggN2I0YjIyNTI5Y2UyZTdiNGM2Yjg4ODJjMWMzZTgzMTYxYWYwYzgyNy4uMDdjZDBiMWJi
ZDhhMzU2OTg0MTU1YjdhYWI0NjM0ODc5MWU2NzcwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9TZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5j
cHAKQEAgLTE5OCw2ICsxOTgsMTEgQEAgU2V0dGluZ3M6OlNldHRpbmdzKFBhZ2UqIHBhZ2UpCiAg
ICAgLCBtX2Z1bGxTY3JlZW5BUElFbmFibGVkKGZhbHNlKQogI2VuZGlmCiAgICAgLCBtX2FzeW5j
aHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGZhbHNlKQorI2lmIFVTRShVTklGSUVEX1RFWFRf
Q0hFQ0tJTkcpCisgICAgLCBtX3VuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQodHJ1ZSkKKyNlbHNl
CisgICAgLCBtX3VuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQoZmFsc2UpCisjZW5kaWYKICAgICAs
IG1fbWVtb3J5SW5mb0VuYWJsZWQoZmFsc2UpCiAgICAgLCBtX2ludGVyYWN0aXZlRm9ybVZhbGlk
YXRpb24oZmFsc2UpCiAgICAgLCBtX3VzZVByZUhUTUw1UGFyc2VyUXVpcmtzKGZhbHNlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9TZXR0aW5ncy5oCmluZGV4IGUzNTdkYTkwMDNmNzg0NzVlMTVkOWJlZDFjMGNjZjlkODU5
Y2M1NGIuLjFiYTllNjY3YjMzYWVjZmEwOGUzZTZhZmE5ZmQwZjg3MDk3MDJiNjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NldHRpbmdzLmgKQEAgLTM4Myw2ICszODMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIHZvaWQgc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoYm9vbCBmbGFn
KSB7IG1fYXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQgPSBmbGFnOyB9CiAgICAgICAg
IGJvb2wgYXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSBjb25zdCAgeyByZXR1cm4g
bV9hc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZDsgfQogCisgICAgICAgIHZvaWQgc2V0
VW5pZmllZFRleHRDaGVja2VyRW5hYmxlZChib29sIGZsYWcpIHsgbV91bmlmaWVkVGV4dENoZWNr
ZXJFbmFibGVkID0gZmxhZzsgfQorICAgICAgICBib29sIHVuaWZpZWRUZXh0Q2hlY2tlckVuYWJs
ZWQoKSBjb25zdCB7IHJldHVybiBtX3VuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQ7IH0KKwogICAg
ICAgICB2b2lkIHNldE1lbW9yeUluZm9FbmFibGVkKGJvb2wgZmxhZykgeyBtX21lbW9yeUluZm9F
bmFibGVkID0gZmxhZzsgfQogICAgICAgICBib29sIG1lbW9yeUluZm9FbmFibGVkKCkgY29uc3Qg
eyByZXR1cm4gbV9tZW1vcnlJbmZvRW5hYmxlZDsgfQogCkBAIC01NzIsNiArNTc1LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIG1fZnVsbFNjcmVlbkFQSUVuYWJsZWQgOiAx
OwogI2VuZGlmCiAgICAgICAgIGJvb2wgbV9hc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxl
ZDogMTsKKyAgICAgICAgYm9vbCBtX3VuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQ6IDE7CiAgICAg
ICAgIGJvb2wgbV9tZW1vcnlJbmZvRW5hYmxlZDogMTsKICAgICAgICAgYm9vbCBtX2ludGVyYWN0
aXZlRm9ybVZhbGlkYXRpb246IDE7CiAgICAgICAgIGJvb2wgbV91c2VQcmVIVE1MNVBhcnNlclF1
aXJrczogMTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111242</attachid>
            <date>2011-10-17 04:28:42 -0700</date>
            <delta_ts>2011-10-17 05:42:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69242-20111017202841.patch</filename>
            <type>text/plain</type>
            <size>34816</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTc1ODAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhZmZiMTUyZDc4YWQwZjAy
NzMzODRmYjVjMTM4MmEyOWZkOWEwNjVlLi4wMmExYjUxZGI1MmMzYjViOWRmN2ExMDAwZTY2ZjZl
MWM0NWM2ZjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMTEtMTAtMTIgIFNoaW55
YSBLYXdhbmFrYSAgPHNoaW55YWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBVbmlmaWVkIHNwZWxs
LWNoZWNraW5nIGFuZCBsZWdhY3kgc3BlbGwgY2hlY2tpbmcgc2hvdWxkIGJlIGVhc3kgdG8gc3dp
dGNoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTI0
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYkNv
cmUgaGFzIHR3byBkaWZmZXJlbnQgY29kZSBwYXRocyBmb3Igc3BlbGwtY2hlY2tpbmc6CisgICAg
ICAgICAgICAgICAgICAxKSBjaGVja1RleHRPZlBhcmFncmFwaCgpIGZvciBTbm93IExlb3BhcmQg
b3IgbGF0ZXIKKyAgICAgICAgICAgICAgICAgIDIpIGNoZWNrU3BlbGxpbmdPZlN0cmluZygpIGZv
ciBjaGVja0dyYW1tYXJPZlN0cmluZygpIGZvciBvdGhlciBwbGF0Zm9ybXMuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgZmxhZyB0byBjaGFuZ2UgY29kZSBwYXRocyBkeW5hbWlj
YWxseS4KKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIGluY2x1ZGVzIGJ1aWxkIGZpeCBmb3IgUVQs
IEdUSywgYW5kIFdpbmRvd3MgcGxhdGZvcm1zLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNh
dXNlIHRoaXMgcGF0Y2ggZG9lcyBub3QgY2hhbmdlIGEgYmVoYXZpb3IuCisKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAq
IFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpoYXNNaXNzcGVsbGluZyk6CisgICAgICAg
ICAgQ2hhbmdlZCBzdGF0aWMgaWYtVVNFKFVOSUZJRURfVEVYVF9DSEVDS0lORykgc3RhdGVtZW50
IHRvIGR5bmFtaWMKKyAgICAgICAgICBjb25kaXRpb24gYnJhbmNoIHRvIGFjaGlldmUgZWFzeSBj
b2RlIHBhdGggY2hhbmdlLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyLm1tOgorICAgICAgICAoQVhBdHRyaWJ1dGVTdHJpbmdTZXRTcGVs
bGluZyk6IGRpdHRvLgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZ0FsbEluT25lLmNwcDoKKyAg
ICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmFk
dmFuY2VUb05leHRNaXNzcGVsbGluZyk6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
OjpndWVzc2VzRm9yTWlzc3BlbGxlZE9yVW5ncmFtbWF0aWNhbFNlbGVjdGlvbik6IGRpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzQWZ0ZXJUeXBpbmdUb1dv
cmQpOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5n
c0FuZEJhZEdyYW1tYXJJblJhbmdlcyk6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
OjpjaGFuZ2VCYWNrVG9SZXBsYWNlZFN0cmluZyk6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hcik6IGRpdHRvLgorICAgICAgICAq
IGVkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRD
aGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIpOiBkaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2luZ0hlbHBlcjo6Z3Vlc3Nlc0Zvck1pc3NwZWxs
ZWRPclVuZ3JhbW1hdGljYWxSYW5nZSk6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6dW5pZmll
ZFRleHRDaGVja2VyRW5hYmxlZCk6CisgICAgICAgICAgVXRpbGl0eSBmdW5jdGlvbiB0byBjaGVj
ayB1c2luZyB1bmlmaWVkIHRleHQgY2hlY2tpbmcgb3Igbm90LgorICAgICAgICAqIGVkaXRpbmcv
VGV4dENoZWNraW5nSGVscGVyLmg6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTZXR0aW5nczo6U2V0dGluZ3MpOgorICAgICAgICAgIEluY2x1ZGVzIGEg
ZmxhZyB0byBjaGFuZ2UgdGhlIGNvZGUgcGF0aC4KKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmg6
CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6c2V0VW5pZmllZFRleHRDaGVja2VyRW5hYmxl
ZCk6CisgICAgICAgICAgU2V0cyBhIGZsYWcgdG8gY2hhbmdlIHRoZSBjb2RlIHBhdGguCisgICAg
ICAgIChXZWJDb3JlOjpTZXR0aW5nczo6dW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCk6CisgICAg
ICAgICAgQSBmbGFnIHRvIGNoYW5nZSB0aGUgY29kZSBwYXRoLgorCiAyMDExLTEwLTE2ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBHZW5lcmF0ZSBYU0xU
UHJvY2Vzc29yIGNvbnN0cnVjdG9yIGZvciBKU0MgYnkgW0NvbnN0cnVjdG9yXSBJREwuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CmluZGV4IDgyOTI1ZWEzY2EwYjIzOTdmOGExYTMwMjg2ZTAwZjNkZTBiZjUy
NjYuLjUwMmZiYTAwMGQ4NWViM2ZmYzJiZDk5OGY3OGNkNjU2NDk5YTZmY2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CkBAIC02NTAsOSArNjUwLDExIEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBl
ZGl0aW5nL1JlcGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kLmNwcAogICAgIGVkaXRpbmcvUmVwbGFj
ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCiAgICAgZWRpdGluZy9TZXROb2RlQXR0cmlidXRlQ29tbWFu
ZC5jcHAKKyAgICBlZGl0aW5nL1NldFNlbGVjdGlvbkNvbW1hbmQuY3BwCiAgICAgZWRpdGluZy9T
bWFydFJlcGxhY2UuY3BwCiAgICAgZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwCiAgICAgZWRpdGlu
Zy9TcGVsbGluZ0NvcnJlY3Rpb25Db250cm9sbGVyLmNwcAorICAgIGVkaXRpbmcvU3BlbGxpbmdD
b3JyZWN0aW9uQ29tbWFuZC5jcHAKICAgICBlZGl0aW5nL1NwbGl0RWxlbWVudENvbW1hbmQuY3Bw
CiAgICAgZWRpdGluZy9TcGxpdFRleHROb2RlQ29tbWFuZC5jcHAKICAgICBlZGl0aW5nL1NwbGl0
VGV4dE5vZGVDb250YWluaW5nRWxlbWVudENvbW1hbmQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQppbmRleCA4MDE1Y2NjY2I3Nzk4ODdhNDVlZGMxMzIyMGZiMjk1YjdkYWVmMmE2Li41
NzQyMmJiM2U2YzRhYTg5MDgzM2Y4ODFjZmI1MWM1N2JjMDhlY2VhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0KQEAgLTE0MzcsNiArMTQzNyw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBc
CiAJU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NldE5vZGVBdHRyaWJ1dGVDb21tYW5kLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvZWRpdGluZy9TZXROb2RlQXR0cmlidXRlQ29tbWFuZC5oIFwKKwlTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1NldFNlbGVjdGlvbkNvbW1hbmQuY3BwIFwKKwlTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1NldFNlbGVjdGlvbkNvbW1hbmQuaCBcCiAJU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9TbWFydFJlcGxhY2UuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NtYXJ0UmVwbGFj
ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NtYXJ0UmVwbGFjZUlDVS5jcHAgXApAQCAt
MTQ0NCw2ICsxNDQ2LDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1NwZWxsQ2hlY2tlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5n
Q29ycmVjdGlvbkNvbnRyb2xsZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxs
aW5nQ29ycmVjdGlvbkNvbnRyb2xsZXIuaCBcCisJU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVs
bGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVs
bGluZ0NvcnJlY3Rpb25Db21tYW5kLmggXAogCVNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BsaXRF
bGVtZW50Q29tbWFuZC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BsaXRFbGVtZW50
Q29tbWFuZC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggMDEzNDU4ZGJjNmE4ODFmMWFkZWE3MWY0M2M4
MDE0Y2ViNTczNzNkMy4uYjVmNTI0YWUzNTlkODRjYzFkNzVkNWZmOTEzYmVkODRiMzdhM2NlYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5wcm8KQEAgLTYxNSw4ICs2MTUsMTAgQEAgU09VUkNFUyArPSBcCiAgICAgZWRp
dGluZy9SZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZC5jcHAgXAogICAgIGVkaXRpbmcvUmVwbGFj
ZVNlbGVjdGlvbkNvbW1hbmQuY3BwIFwKICAgICBlZGl0aW5nL1NldE5vZGVBdHRyaWJ1dGVDb21t
YW5kLmNwcCBcCisgICAgZWRpdGluZy9TZXRTZWxlY3Rpb25Db21tYW5kLmNwcCBcCiAgICAgZWRp
dGluZy9TbWFydFJlcGxhY2VJQ1UuY3BwIFwKICAgICBlZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHAg
XAorICAgIGVkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAgXAogICAgIGVkaXRp
bmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29udHJvbGxlci5jcHAgXAogICAgIGVkaXRpbmcvU3BsaXRF
bGVtZW50Q29tbWFuZC5jcHAgXAogICAgIGVkaXRpbmcvU3BsaXRUZXh0Tm9kZUNvbW1hbmQuY3Bw
IFwKQEAgLTE2NDUsNiArMTY0Nyw3IEBAIEhFQURFUlMgKz0gXAogICAgIGVkaXRpbmcvUmVwbGFj
ZVNlbGVjdGlvbkNvbW1hbmQuaCBcCiAgICAgZWRpdGluZy9TZXROb2RlQXR0cmlidXRlQ29tbWFu
ZC5oIFwKICAgICBlZGl0aW5nL1NtYXJ0UmVwbGFjZS5oIFwKKyAgICBlZGl0aW5nL1NwZWxsaW5n
Q29ycmVjdGlvbkNvbW1hbmQuaCBcCiAgICAgZWRpdGluZy9TcGVsbGluZ0NvcnJlY3Rpb25Db250
cm9sbGVyLmggXAogICAgIGVkaXRpbmcvU3BsaXRFbGVtZW50Q29tbWFuZC5oIFwKICAgICBlZGl0
aW5nL1NwbGl0VGV4dE5vZGVDb21tYW5kLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBlYmNmN2E2Mjk3MjJmYjI2ZTc4ZmZkOWEzNWE2MzU1
ODc0YmVmOTg2Li5jNWE0YjQ4ZmI4ZjE4NGMyYTgyYTZlY2NhOWE0YTBjMzU5MjkxNDc3IDEwMDc1
NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNTI2MTMs
NiArNTI2MTMsNjIgQEAKIAkJCQkJLz4KIAkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgogCQkJPC9G
aWxlPgorICAgICAgICAgICAgPEZpbGUKKyAgICAgICAgICAgICAgICAgUmVsYXRpdmVQYXRoPSIu
LlxlZGl0aW5nXFNldFNlbGVjdGlvbkNvbW1hbmQuY3BwIgorICAgICAgICAgICAgICAgICA+Cisg
ICAgICAgICAgICAgICAgPEZpbGVDb25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAg
TmFtZT0iRGVidWd8V2luMzIiCisgICAgICAgICAgICAgICAgICAgICAgRXhjbHVkZWRGcm9tQnVp
bGQ9InRydWUiCisgICAgICAgICAgICAgICAgICAgICA+CisgICAgICAgICAgICAgICAgICAgIDxU
b29sCisgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8+CisgICAgICAgICAgICAgICAgICAgIDwvRmlsZUNv
bmZpZ3VyYXRpb24+CisgICAgICAgICAgICAgICAgPEZpbGVDb25maWd1cmF0aW9uCisgICAgICAg
ICAgICAgICAgICAgICAgTmFtZT0iUmVsZWFzZXxXaW4zMiIKKyAgICAgICAgICAgICAgICAgICAg
ICBFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKyAgICAgICAgICAgICAgICAgICAgICA+CisgICAg
ICAgICAgICAgICAgICAgIDxUb29sCisgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWU9IlZD
Q0xDb21waWxlclRvb2wiCisgICAgICAgICAgICAgICAgICAgICAgICAgIC8+CisgICAgICAgICAg
ICAgICAgICAgIDwvRmlsZUNvbmZpZ3VyYXRpb24+CisgICAgICAgICAgICAgICAgPEZpbGVDb25m
aWd1cmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRl
fFdpbjMyIgorICAgICAgICAgICAgICAgICAgICAgIEV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgor
ICAgICAgICAgICAgICAgICAgICAgID4KKyAgICAgICAgICAgICAgICAgICAgPFRvb2wKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgLz4KKyAgICAgICAgICAgICAgICAgICAgPC9GaWxlQ29uZmlndXJhdGlv
bj4KKyAgICAgICAgICAgICAgICA8RmlsZUNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAg
ICAgICBOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKyAgICAgICAgICAgICAgICAg
ICAgICBFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKyAgICAgICAgICAgICAgICAgICAgICA+Cisg
ICAgICAgICAgICAgICAgICAgIDxUb29sCisgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWU9
IlZDQ0xDb21waWxlclRvb2wiCisgICAgICAgICAgICAgICAgICAgICAgICAgIC8+CisgICAgICAg
ICAgICAgICAgICAgIDwvRmlsZUNvbmZpZ3VyYXRpb24+CisgICAgICAgICAgICAgICAgPEZpbGVD
b25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgTmFtZT0iRGVidWdfQWxsfFdpbjMy
IgorICAgICAgICAgICAgICAgICAgICAgIEV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorICAgICAg
ICAgICAgICAgICAgICAgID4KKyAgICAgICAgICAgICAgICAgICAgPFRvb2wKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgLz4KKyAgICAgICAgICAgICAgICAgICAgPC9GaWxlQ29uZmlndXJhdGlvbj4KKyAg
ICAgICAgICAgICAgICA8RmlsZUNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICBO
YW1lPSJQcm9kdWN0aW9ufFdpbjMyIgorICAgICAgICAgICAgICAgICAgICAgIEV4Y2x1ZGVkRnJv
bUJ1aWxkPSJ0cnVlIgorICAgICAgICAgICAgICAgICAgICAgID4KKyAgICAgICAgICAgICAgICAg
ICAgPFRvb2wKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZT0iVkNDTENvbXBpbGVyVG9v
bCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLz4KKyAgICAgICAgICAgICAgICAgICAgPC9G
aWxlQ29uZmlndXJhdGlvbj4KKyAgICAgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICA8
RmlsZQorICAgICAgICAgICAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlxlZGl0aW5nXFNldFNlbGVj
dGlvbkNvbW1hbmQuaCIKKyAgICAgICAgICAgICAgICAgID4KKyAgICAgICAgICAgICAgICA8L0Zp
bGU+CiAJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cZWRpdGluZ1xTbWFydFJlcGxhY2Uu
aCIKIAkJCQk+CkBAIC01MjcyNSw2ICs1Mjc4MSw2MiBAQAogCQkJCVJlbGF0aXZlUGF0aD0iLi5c
ZWRpdGluZ1xTcGVsbENoZWNrZXIuaCIKIAkJCQk+CiAJCQk8L0ZpbGU+CisgICAgICAgICAgICA8
RmlsZQorICAgICAgICAgICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4uXGVkaXRpbmdcU3BlbGxpbmdD
b3JyZWN0aW9uQ29tbWFuZC5jcHAiCisgICAgICAgICAgICAgICAgID4KKyAgICAgICAgICAgICAg
ICA8RmlsZUNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICBOYW1lPSJEZWJ1Z3xX
aW4zMiIKKyAgICAgICAgICAgICAgICAgICAgICBFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKyAg
ICAgICAgICAgICAgICAgICAgICA+CisgICAgICAgICAgICAgICAgICAgIDxUb29sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIE5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8+CisgICAgICAgICAgICAgICAgICAgIDwvRmlsZUNvbmZpZ3VyYXRpb24+
CisgICAgICAgICAgICAgICAgPEZpbGVDb25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgICAg
ICAgTmFtZT0iUmVsZWFzZXxXaW4zMiIKKyAgICAgICAgICAgICAgICAgICAgICBFeGNsdWRlZEZy
b21CdWlsZD0idHJ1ZSIKKyAgICAgICAgICAgICAgICAgICAgICA+CisgICAgICAgICAgICAgICAg
ICAgIDxUb29sCisgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWU9IlZDQ0xDb21waWxlclRv
b2wiCisgICAgICAgICAgICAgICAgICAgICAgICAgIC8+CisgICAgICAgICAgICAgICAgICAgIDwv
RmlsZUNvbmZpZ3VyYXRpb24+CisgICAgICAgICAgICAgICAgPEZpbGVDb25maWd1cmF0aW9uCisg
ICAgICAgICAgICAgICAgICAgICAgTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorICAg
ICAgICAgICAgICAgICAgICAgIEV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorICAgICAgICAgICAg
ICAgICAgICAgID4KKyAgICAgICAgICAgICAgICAgICAgPFRvb2wKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgLz4KKyAgICAgICAgICAgICAgICAgICAgPC9GaWxlQ29uZmlndXJhdGlvbj4KKyAgICAgICAg
ICAgICAgICA8RmlsZUNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICBOYW1lPSJS
ZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKyAgICAgICAgICAgICAgICAgICAgICBFeGNsdWRl
ZEZyb21CdWlsZD0idHJ1ZSIKKyAgICAgICAgICAgICAgICAgICAgICA+CisgICAgICAgICAgICAg
ICAgICAgIDxUb29sCisgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWU9IlZDQ0xDb21waWxl
clRvb2wiCisgICAgICAgICAgICAgICAgICAgICAgICAgIC8+CisgICAgICAgICAgICAgICAgICAg
IDwvRmlsZUNvbmZpZ3VyYXRpb24+CisgICAgICAgICAgICAgICAgPEZpbGVDb25maWd1cmF0aW9u
CisgICAgICAgICAgICAgICAgICAgICAgTmFtZT0iRGVidWdfQWxsfFdpbjMyIgorICAgICAgICAg
ICAgICAgICAgICAgIEV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorICAgICAgICAgICAgICAgICAg
ICAgID4KKyAgICAgICAgICAgICAgICAgICAgPFRvb2wKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLz4K
KyAgICAgICAgICAgICAgICAgICAgPC9GaWxlQ29uZmlndXJhdGlvbj4KKyAgICAgICAgICAgICAg
ICA8RmlsZUNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICBOYW1lPSJSZWxlYXNl
X0xUQ0d8V2luMzIiCisgICAgICAgICAgICAgICAgICAgICAgRXhjbHVkZWRGcm9tQnVpbGQ9InRy
dWUiCisgICAgICAgICAgICAgICAgICAgICAgPgorICAgICAgICAgICAgICAgICAgICA8VG9vbAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAvPgorICAgICAgICAgICAgICAgICAgICA8L0ZpbGVDb25maWd1
cmF0aW9uPgorICAgICAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgIDxGaWxlCisgICAg
ICAgICAgICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4uXGVkaXRpbmdcU3BlbGxpbmdDb3JyZWN0aW9u
Q29tbWFuZC5oIgorICAgICAgICAgICAgICAgICAgPgorICAgICAgICAgICAgPC9GaWxlPgogCQkJ
PEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGVkaXRpbmdcU3BlbGxpbmdDb3JyZWN0aW9uQ29u
dHJvbGxlci5jcHAiCiAJCQkJPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXggN2Q3MWY2YWRiZjI5OGE0YjJjYTZiMGZh
ZGQxZTM5Y2QyYWI3ZjdlMC4uZmVhMGZiM2FmMDc4MjAwNzA3YmY5NWYyZWY1N2MyZDI1ZWU0OGUz
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuY3BwCkBAIC01MCw2ICs1MCw3IEBACiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgog
I2luY2x1ZGUgIlJlbmRlcldpZGdldC5oIgogI2luY2x1ZGUgIlJlbmRlcmVkUG9zaXRpb24uaCIK
KyNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlRleHRDaGVja2VyQ2xpZW50LmgiCiAj
aW5jbHVkZSAiVGV4dENoZWNraW5nSGVscGVyLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgi
CkBAIC0yODksMTkgKzI5MCwyMCBAQCBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6Omhhc01pc3Nw
ZWxsaW5nKCkgY29uc3QKICAgICBjb25zdCBVQ2hhciogY2hhcnMgPSBzdHJpbmdWYWx1ZSgpLmNo
YXJhY3RlcnMoKTsKICAgICBpbnQgY2hhcnNMZW5ndGggPSBzdHJpbmdWYWx1ZSgpLmxlbmd0aCgp
OwogICAgIGJvb2wgaXNNaXNzcGVsbGVkID0gZmFsc2U7Ci0gICAgCi0jaWYgVVNFKFVOSUZJRURf
VEVYVF9DSEVDS0lORykKLSAgICBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiByZXN1bHRzOwot
ICAgIGNoZWNrVGV4dE9mUGFyYWdyYXBoKHRleHRDaGVja2VyLCBjaGFycywgY2hhcnNMZW5ndGgs
IFRleHRDaGVja2luZ1R5cGVTcGVsbGluZywgcmVzdWx0cyk7Ci0gICAgaWYgKCFyZXN1bHRzLmlz
RW1wdHkoKSkKLSAgICAgICAgaXNNaXNzcGVsbGVkID0gdHJ1ZTsKLSNlbHNlCisKKyAgICBpZiAo
dW5pZmllZFRleHRDaGVja2VyRW5hYmxlZChmcmFtZSkpIHsKKyAgICAgICAgVmVjdG9yPFRleHRD
aGVja2luZ1Jlc3VsdD4gcmVzdWx0czsKKyAgICAgICAgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgodGV4
dENoZWNrZXIsIGNoYXJzLCBjaGFyc0xlbmd0aCwgVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nLCBy
ZXN1bHRzKTsKKyAgICAgICAgaWYgKCFyZXN1bHRzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGlz
TWlzc3BlbGxlZCA9IHRydWU7CisgICAgICAgIHJldHVybiBpc01pc3NwZWxsZWQ7CisgICAgfQor
CiAgICAgaW50IG1pc3NwZWxsaW5nTGVuZ3RoID0gMDsKICAgICBpbnQgbWlzc3BlbGxpbmdMb2Nh
dGlvbiA9IC0xOwogICAgIHRleHRDaGVja2VyLT5jaGVja1NwZWxsaW5nT2ZTdHJpbmcoY2hhcnMs
IGNoYXJzTGVuZ3RoLCAmbWlzc3BlbGxpbmdMb2NhdGlvbiwgJm1pc3NwZWxsaW5nTGVuZ3RoKTsK
ICAgICBpZiAobWlzc3BlbGxpbmdMZW5ndGggfHwgbWlzc3BlbGxpbmdMb2NhdGlvbiAhPSAtMSkK
ICAgICAgICAgaXNNaXNzcGVsbGVkID0gdHJ1ZTsKLSNlbmRpZgogICAgIAogICAgIHJldHVybiBp
c01pc3NwZWxsZWQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCmluZGV4IGRm
ZTc4ODI0ZWVlMDU0NTEyNWM2ZmNiNzBkODYwNmI5ODEwYzU0ZWQuLjEzNjViNjI2M2RlYTIyMDIw
OWI4ODhhOWZjNDA1MjJmOTQ5YjU2ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
Lm1tCkBAIC02ODksMjEgKzY4OSwyMyBAQCBzdGF0aWMgdm9pZCBBWEF0dHJpYnV0ZVN0cmluZ1Nl
dEJsb2NrcXVvdGVMZXZlbChOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBhdHRyUwogCiBzdGF0
aWMgdm9pZCBBWEF0dHJpYnV0ZVN0cmluZ1NldFNwZWxsaW5nKE5TTXV0YWJsZUF0dHJpYnV0ZWRT
dHJpbmcqIGF0dHJTdHJpbmcsIE5vZGUqIG5vZGUsIGNvbnN0IFVDaGFyKiBjaGFycywgaW50IGNo
YXJMZW5ndGgsIE5TUmFuZ2UgcmFuZ2UpCiB7Ci0jaWYgVVNFKFVOSUZJRURfVEVYVF9DSEVDS0lO
RykKLSAgICAvLyBDaGVjayB0aGUgc3BlbGxpbmcgZGlyZWN0bHkgc2luY2UgZG9jdW1lbnQtPm1h
cmtlcnNGb3JOb2RlKCkgZG9lcyBub3Qgc3RvcmUgdGhlIG1pc3NwZWxsZWQgbWFya2luZyB3aGVu
IHRoZSBjdXJzb3IgaXMgaW4gYSB3b3JkLgotICAgIFRleHRDaGVja2VyQ2xpZW50KiBjaGVja2Vy
ID0gbm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCktPnRleHRDaGVja2VyKCk7Ci0K
LSAgICAvLyBjaGVja1RleHRPZlBhcmFncmFwaCBpcyB0aGUgb25seSBzcGVsbGluZy9ncmFtbWFy
IGNoZWNrZXIgaW1wbGVtZW50ZWQgaW4gV0sxIGFuZCBXSzIKLSAgICBWZWN0b3I8VGV4dENoZWNr
aW5nUmVzdWx0PiByZXN1bHRzOwotICAgIGNoZWNrVGV4dE9mUGFyYWdyYXBoKGNoZWNrZXIsIGNo
YXJzLCBjaGFyTGVuZ3RoLCBUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcsIHJlc3VsdHMpOwotICAg
IAotICAgIHNpemVfdCBzaXplID0gcmVzdWx0cy5zaXplKCk7Ci0gICAgTlNOdW1iZXIqIHRydWVW
YWx1ZSA9IFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpZRVNdOwotICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgY29uc3QgVGV4dENoZWNraW5nUmVzdWx0
JiByZXN1bHQgPSByZXN1bHRzW2ldOwotICAgICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldE51bWJl
cihhdHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlNaXNzcGVsbGVkVGV4dEF0dHJpYnV0ZSwgdHJ1
ZVZhbHVlLCBOU01ha2VSYW5nZShyZXN1bHQubG9jYXRpb24gKyByYW5nZS5sb2NhdGlvbiwgcmVz
dWx0Lmxlbmd0aCkpOwotICAgIH0gICAgCi0jZWxzZQorICAgIGlmICh1bmlmaWVkVGV4dENoZWNr
ZXJFbmFibGVkKG5vZGUtPmRvY3VtZW50KCktPmZyYW1lKCkpKSB7CisgICAgICAgIC8vIENoZWNr
IHRoZSBzcGVsbGluZyBkaXJlY3RseSBzaW5jZSBkb2N1bWVudC0+bWFya2Vyc0Zvck5vZGUoKSBk
b2VzIG5vdCBzdG9yZSB0aGUgbWlzc3BlbGxlZCBtYXJraW5nIHdoZW4gdGhlIGN1cnNvciBpcyBp
biBhIHdvcmQuCisgICAgICAgIFRleHRDaGVja2VyQ2xpZW50KiBjaGVja2VyID0gbm9kZS0+ZG9j
dW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCktPnRleHRDaGVja2VyKCk7CisKKyAgICAgICAgLy8g
Y2hlY2tUZXh0T2ZQYXJhZ3JhcGggaXMgdGhlIG9ubHkgc3BlbGxpbmcvZ3JhbW1hciBjaGVja2Vy
IGltcGxlbWVudGVkIGluIFdLMSBhbmQgV0syCisgICAgICAgIFZlY3RvcjxUZXh0Q2hlY2tpbmdS
ZXN1bHQ+IHJlc3VsdHM7CisgICAgICAgIGNoZWNrVGV4dE9mUGFyYWdyYXBoKGNoZWNrZXIsIGNo
YXJzLCBjaGFyTGVuZ3RoLCBUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcsIHJlc3VsdHMpOworCisg
ICAgICAgIHNpemVfdCBzaXplID0gcmVzdWx0cy5zaXplKCk7CisgICAgICAgIE5TTnVtYmVyKiB0
cnVlVmFsdWUgPSBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXTsKKyAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICAgICAgY29uc3QgVGV4dENo
ZWNraW5nUmVzdWx0JiByZXN1bHQgPSByZXN1bHRzW2ldOworICAgICAgICAgICAgQVhBdHRyaWJ1
dGVTdHJpbmdTZXROdW1iZXIoYXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5TWlzc3BlbGxlZFRl
eHRBdHRyaWJ1dGUsIHRydWVWYWx1ZSwgTlNNYWtlUmFuZ2UocmVzdWx0LmxvY2F0aW9uICsgcmFu
Z2UubG9jYXRpb24sIHJlc3VsdC5sZW5ndGgpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47
CisgICAgfQorCiAgICAgaW50IGN1cnJlbnRQb3NpdGlvbiA9IDA7CiAgICAgd2hpbGUgKGNoYXJM
ZW5ndGggPiAwKSB7CiAgICAgICAgIGNvbnN0IFVDaGFyKiBjaGFyRGF0YSA9IGNoYXJzICsgY3Vy
cmVudFBvc2l0aW9uOwpAQCAtNzIwLDcgKzcyMiw2IEBAIHN0YXRpYyB2b2lkIEFYQXR0cmlidXRl
U3RyaW5nU2V0U3BlbGxpbmcoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0clN0cmluZywK
ICAgICAgICAgY2hhckxlbmd0aCAtPSAobWlzc3BlbGxpbmdMb2NhdGlvbiArIG1pc3NwZWxsaW5n
TGVuZ3RoKTsKICAgICAgICAgY3VycmVudFBvc2l0aW9uICs9IChtaXNzcGVsbGluZ0xvY2F0aW9u
ICsgbWlzc3BlbGxpbmdMZW5ndGgpOwogICAgIH0KLSNlbmRpZiAgICAKIH0KIAogc3RhdGljIHZv
aWQgQVhBdHRyaWJ1dGVTdHJpbmdTZXRIZWFkaW5nTGV2ZWwoTlNNdXRhYmxlQXR0cmlidXRlZFN0
cmluZyogYXR0clN0cmluZywgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgTlNSYW5nZSByYW5nZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ0FsbEluT25lLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ0FsbEluT25lLmNwcAppbmRleCBkODYzMDk3
NDE4ZDQ0ZmIwYzUzNjk1M2Q3M2UyZDJmNGUxZjhhZGZmLi5jMDI5OWIzMjBhOGNiMDk5YTAyN2Nl
YWQ2ZDkxZDVmZjRhMDI5ZTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRpbmdBbGxJbk9uZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nQWxs
SW5PbmUuY3BwCkBAIC02MSw4ICs2MSwxMCBAQAogI2luY2x1ZGUgPFJlcGxhY2VOb2RlV2l0aFNw
YW5Db21tYW5kLmNwcD4KICNpbmNsdWRlIDxSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHA+CiAj
aW5jbHVkZSA8U2V0Tm9kZUF0dHJpYnV0ZUNvbW1hbmQuY3BwPgorI2luY2x1ZGUgPFNldFNlbGVj
dGlvbkNvbW1hbmQuY3BwPgogI2luY2x1ZGUgPFNtYXJ0UmVwbGFjZS5jcHA+CiAjaW5jbHVkZSA8
U21hcnRSZXBsYWNlQ0YuY3BwPgorI2luY2x1ZGUgPFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQu
Y3BwPgogI2luY2x1ZGUgPFNwZWxsaW5nQ29ycmVjdGlvbkNvbnRyb2xsZXIuY3BwPgogI2luY2x1
ZGUgPFNwZWxsQ2hlY2tlci5jcHA+CiAjaW5jbHVkZSA8U3BsaXRFbGVtZW50Q29tbWFuZC5jcHA+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggYjQ4YThiNWQ2MDM1ZGMwMDY0YzBjMmNk
OGM5NTc1OTU4M2UyNmQxYi4uOTAxYTE2NjZlZmQyOWNhNThlOWVlNmUyNmFiNWM0NzE4NjhjZjM4
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMTY3NSw0NSArMTY3NSwxMSBAQCB2
b2lkIEVkaXRvcjo6YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxl
Y3Rpb24pCiAgICAgU3RyaW5nIGJhZEdyYW1tYXJQaHJhc2U7CiAgICAgU3RyaW5nIG1pc3NwZWxs
ZWRXb3JkOwogCi0jaWYgVVNFKFVOSUZJRURfVEVYVF9DSEVDS0lORykKLSAgICBncmFtbWFyU2Vh
cmNoUmFuZ2UgPSBzcGVsbGluZ1NlYXJjaFJhbmdlLT5jbG9uZVJhbmdlKGVjKTsKICAgICBib29s
IGlzU3BlbGxpbmcgPSB0cnVlOwogICAgIGludCBmb3VuZE9mZnNldCA9IDA7Ci0gICAgU3RyaW5n
IGZvdW5kSXRlbSA9IFRleHRDaGVja2luZ0hlbHBlcihjbGllbnQoKSwgc3BlbGxpbmdTZWFyY2hS
YW5nZSkuZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIoaXNHcmFtbWFyQ2hlY2tpbmdF
bmFibGVkKCksIGlzU3BlbGxpbmcsIGZvdW5kT2Zmc2V0LCBncmFtbWFyRGV0YWlsKTsKLSAgICBp
ZiAoaXNTcGVsbGluZykgewotICAgICAgICBtaXNzcGVsbGVkV29yZCA9IGZvdW5kSXRlbTsKLSAg
ICAgICAgbWlzc3BlbGxpbmdPZmZzZXQgPSBmb3VuZE9mZnNldDsKLSAgICB9IGVsc2UgewotICAg
ICAgICBiYWRHcmFtbWFyUGhyYXNlID0gZm91bmRJdGVtOwotICAgICAgICBncmFtbWFyUGhyYXNl
T2Zmc2V0ID0gZm91bmRPZmZzZXQ7Ci0gICAgfQotI2Vsc2UKKyAgICBTdHJpbmcgZm91bmRJdGVt
OwogICAgIFJlZlB0cjxSYW5nZT4gZmlyc3RNaXNzcGVsbGluZ1JhbmdlOwotICAgIG1pc3NwZWxs
ZWRXb3JkID0gVGV4dENoZWNraW5nSGVscGVyKGNsaWVudCgpLCBzcGVsbGluZ1NlYXJjaFJhbmdl
KS5maW5kRmlyc3RNaXNzcGVsbGluZyhtaXNzcGVsbGluZ09mZnNldCwgZmFsc2UsIGZpcnN0TWlz
c3BlbGxpbmdSYW5nZSk7Ci0KLSNpZiBVU0UoR1JBTU1BUl9DSEVDS0lORykKLSAgICAvLyBTZWFy
Y2ggZm9yIGJhZCBncmFtbWFyIHRoYXQgb2NjdXJzIHByaW9yIHRvIHRoZSBuZXh0IG1pc3NwZWxs
ZWQgd29yZCAoaWYgYW55KQotICAgIGdyYW1tYXJTZWFyY2hSYW5nZSA9IHNwZWxsaW5nU2VhcmNo
UmFuZ2UtPmNsb25lUmFuZ2UoZWMpOwotICAgIGlmICghbWlzc3BlbGxlZFdvcmQuaXNFbXB0eSgp
KSB7Ci0gICAgICAgIC8vIFN0b3AgbG9va2luZyBhdCBzdGFydCBvZiBuZXh0IG1pc3NwZWxsZWQg
d29yZAotICAgICAgICBDaGFyYWN0ZXJJdGVyYXRvciBjaGFycyhncmFtbWFyU2VhcmNoUmFuZ2Uu
Z2V0KCkpOwotICAgICAgICBjaGFycy5hZHZhbmNlKG1pc3NwZWxsaW5nT2Zmc2V0KTsKLSAgICAg
ICAgZ3JhbW1hclNlYXJjaFJhbmdlLT5zZXRFbmQoY2hhcnMucmFuZ2UoKS0+c3RhcnRDb250YWlu
ZXIoZWMpLCBjaGFycy5yYW5nZSgpLT5zdGFydE9mZnNldChlYyksIGVjKTsKLSAgICB9Ci0gICAg
Ci0gICAgaWYgKGlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgpKQotICAgICAgICBiYWRHcmFtbWFy
UGhyYXNlID0gVGV4dENoZWNraW5nSGVscGVyKGNsaWVudCgpLCBncmFtbWFyU2VhcmNoUmFuZ2Up
LmZpbmRGaXJzdEJhZEdyYW1tYXIoZ3JhbW1hckRldGFpbCwgZ3JhbW1hclBocmFzZU9mZnNldCwg
ZmFsc2UpOwotI2VuZGlmCi0jZW5kaWYKLSAgICAKLSAgICAvLyBJZiB3ZSBmb3VuZCBuZWl0aGVy
IGJhZCBncmFtbWFyIG5vciBhIG1pc3NwZWxsZWQgd29yZCwgd3JhcCBhbmQgdHJ5IGFnYWluIChi
dXQgZG9uJ3QgYm90aGVyIGlmIHdlIHN0YXJ0ZWQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUKLSAg
ICAvLyBibG9jayByYXRoZXIgdGhhbiBhdCBhIHNlbGVjdGlvbikuCi0gICAgaWYgKHN0YXJ0ZWRX
aXRoU2VsZWN0aW9uICYmICFtaXNzcGVsbGVkV29yZCAmJiAhYmFkR3JhbW1hclBocmFzZSkgewot
ICAgICAgICBzcGVsbGluZ1NlYXJjaFJhbmdlLT5zZXRTdGFydCh0b3BOb2RlLCAwLCBlYyk7Ci0g
ICAgICAgIC8vIGdvaW5nIHVudGlsIHRoZSBlbmQgb2YgdGhlIHZlcnkgZmlyc3QgY2h1bmsgd2Ug
dGVzdGVkIGlzIGZhciBlbm91Z2gKLSAgICAgICAgc3BlbGxpbmdTZWFyY2hSYW5nZS0+c2V0RW5k
KHNlYXJjaEVuZE5vZGVBZnRlcldyYXAsIHNlYXJjaEVuZE9mZnNldEFmdGVyV3JhcCwgZWMpOwot
ICAgICAgICAKLSNpZiBVU0UoVU5JRklFRF9URVhUX0NIRUNLSU5HKQorICAgIGlmICh1bmlmaWVk
VGV4dENoZWNrZXJFbmFibGVkKG1fZnJhbWUpKSB7CiAgICAgICAgIGdyYW1tYXJTZWFyY2hSYW5n
ZSA9IHNwZWxsaW5nU2VhcmNoUmFuZ2UtPmNsb25lUmFuZ2UoZWMpOwogICAgICAgICBmb3VuZEl0
ZW0gPSBUZXh0Q2hlY2tpbmdIZWxwZXIoY2xpZW50KCksIHNwZWxsaW5nU2VhcmNoUmFuZ2UpLmZp
bmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFyKGlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgp
LCBpc1NwZWxsaW5nLCBmb3VuZE9mZnNldCwgZ3JhbW1hckRldGFpbCk7CiAgICAgICAgIGlmIChp
c1NwZWxsaW5nKSB7CkBAIC0xNzIzLDcgKzE2ODksNyBAQCB2b2lkIEVkaXRvcjo6YWR2YW5jZVRv
TmV4dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pCiAgICAgICAgICAgICBi
YWRHcmFtbWFyUGhyYXNlID0gZm91bmRJdGVtOwogICAgICAgICAgICAgZ3JhbW1hclBocmFzZU9m
ZnNldCA9IGZvdW5kT2Zmc2V0OwogICAgICAgICB9Ci0jZWxzZQorICAgIH0gZWxzZSB7CiAgICAg
ICAgIG1pc3NwZWxsZWRXb3JkID0gVGV4dENoZWNraW5nSGVscGVyKGNsaWVudCgpLCBzcGVsbGlu
Z1NlYXJjaFJhbmdlKS5maW5kRmlyc3RNaXNzcGVsbGluZyhtaXNzcGVsbGluZ09mZnNldCwgZmFs
c2UsIGZpcnN0TWlzc3BlbGxpbmdSYW5nZSk7CiAKICNpZiBVU0UoR1JBTU1BUl9DSEVDS0lORykK
QEAgLTE3MzQsMTEgKzE3MDAsNDUgQEAgdm9pZCBFZGl0b3I6OmFkdmFuY2VUb05leHRNaXNzcGVs
bGluZyhib29sIHN0YXJ0QmVmb3JlU2VsZWN0aW9uKQogICAgICAgICAgICAgY2hhcnMuYWR2YW5j
ZShtaXNzcGVsbGluZ09mZnNldCk7CiAgICAgICAgICAgICBncmFtbWFyU2VhcmNoUmFuZ2UtPnNl
dEVuZChjaGFycy5yYW5nZSgpLT5zdGFydENvbnRhaW5lcihlYyksIGNoYXJzLnJhbmdlKCktPnN0
YXJ0T2Zmc2V0KGVjKSwgZWMpOwogICAgICAgICB9Ci0KKyAgICAKICAgICAgICAgaWYgKGlzR3Jh
bW1hckNoZWNraW5nRW5hYmxlZCgpKQogICAgICAgICAgICAgYmFkR3JhbW1hclBocmFzZSA9IFRl
eHRDaGVja2luZ0hlbHBlcihjbGllbnQoKSwgZ3JhbW1hclNlYXJjaFJhbmdlKS5maW5kRmlyc3RC
YWRHcmFtbWFyKGdyYW1tYXJEZXRhaWwsIGdyYW1tYXJQaHJhc2VPZmZzZXQsIGZhbHNlKTsKICNl
bmRpZgorICAgIH0KKyAgICAKKyAgICAvLyBJZiB3ZSBmb3VuZCBuZWl0aGVyIGJhZCBncmFtbWFy
IG5vciBhIG1pc3NwZWxsZWQgd29yZCwgd3JhcCBhbmQgdHJ5IGFnYWluIChidXQgZG9uJ3QgYm90
aGVyIGlmIHdlIHN0YXJ0ZWQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUKKyAgICAvLyBibG9jayBy
YXRoZXIgdGhhbiBhdCBhIHNlbGVjdGlvbikuCisgICAgaWYgKHN0YXJ0ZWRXaXRoU2VsZWN0aW9u
ICYmICFtaXNzcGVsbGVkV29yZCAmJiAhYmFkR3JhbW1hclBocmFzZSkgeworICAgICAgICBzcGVs
bGluZ1NlYXJjaFJhbmdlLT5zZXRTdGFydCh0b3BOb2RlLCAwLCBlYyk7CisgICAgICAgIC8vIGdv
aW5nIHVudGlsIHRoZSBlbmQgb2YgdGhlIHZlcnkgZmlyc3QgY2h1bmsgd2UgdGVzdGVkIGlzIGZh
ciBlbm91Z2gKKyAgICAgICAgc3BlbGxpbmdTZWFyY2hSYW5nZS0+c2V0RW5kKHNlYXJjaEVuZE5v
ZGVBZnRlcldyYXAsIHNlYXJjaEVuZE9mZnNldEFmdGVyV3JhcCwgZWMpOworICAgICAgICAKKyAg
ICAgICAgaWYgKHVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQobV9mcmFtZSkpIHsKKyAgICAgICAg
ICAgIGdyYW1tYXJTZWFyY2hSYW5nZSA9IHNwZWxsaW5nU2VhcmNoUmFuZ2UtPmNsb25lUmFuZ2Uo
ZWMpOworICAgICAgICAgICAgZm91bmRJdGVtID0gVGV4dENoZWNraW5nSGVscGVyKGNsaWVudCgp
LCBzcGVsbGluZ1NlYXJjaFJhbmdlKS5maW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcihp
c0dyYW1tYXJDaGVja2luZ0VuYWJsZWQoKSwgaXNTcGVsbGluZywgZm91bmRPZmZzZXQsIGdyYW1t
YXJEZXRhaWwpOworICAgICAgICAgICAgaWYgKGlzU3BlbGxpbmcpIHsKKyAgICAgICAgICAgICAg
ICBtaXNzcGVsbGVkV29yZCA9IGZvdW5kSXRlbTsKKyAgICAgICAgICAgICAgICBtaXNzcGVsbGlu
Z09mZnNldCA9IGZvdW5kT2Zmc2V0OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBiYWRHcmFtbWFyUGhyYXNlID0gZm91bmRJdGVtOworICAgICAgICAgICAgICAgIGdyYW1t
YXJQaHJhc2VPZmZzZXQgPSBmb3VuZE9mZnNldDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIG1pc3NwZWxsZWRXb3JkID0gVGV4dENoZWNraW5nSGVscGVyKGNs
aWVudCgpLCBzcGVsbGluZ1NlYXJjaFJhbmdlKS5maW5kRmlyc3RNaXNzcGVsbGluZyhtaXNzcGVs
bGluZ09mZnNldCwgZmFsc2UsIGZpcnN0TWlzc3BlbGxpbmdSYW5nZSk7CisKKyNpZiBVU0UoR1JB
TU1BUl9DSEVDS0lORykKKyAgICAgICAgICAgIGdyYW1tYXJTZWFyY2hSYW5nZSA9IHNwZWxsaW5n
U2VhcmNoUmFuZ2UtPmNsb25lUmFuZ2UoZWMpOworICAgICAgICAgICAgaWYgKCFtaXNzcGVsbGVk
V29yZC5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICAvLyBTdG9wIGxvb2tpbmcgYXQgc3Rh
cnQgb2YgbmV4dCBtaXNzcGVsbGVkIHdvcmQKKyAgICAgICAgICAgICAgICBDaGFyYWN0ZXJJdGVy
YXRvciBjaGFycyhncmFtbWFyU2VhcmNoUmFuZ2UuZ2V0KCkpOworICAgICAgICAgICAgICAgIGNo
YXJzLmFkdmFuY2UobWlzc3BlbGxpbmdPZmZzZXQpOworICAgICAgICAgICAgICAgIGdyYW1tYXJT
ZWFyY2hSYW5nZS0+c2V0RW5kKGNoYXJzLnJhbmdlKCktPnN0YXJ0Q29udGFpbmVyKGVjKSwgY2hh
cnMucmFuZ2UoKS0+c3RhcnRPZmZzZXQoZWMpLCBlYyk7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGlmIChpc0dyYW1tYXJDaGVja2luZ0VuYWJsZWQoKSkKKyAgICAgICAgICAgICAgICBi
YWRHcmFtbWFyUGhyYXNlID0gVGV4dENoZWNraW5nSGVscGVyKGNsaWVudCgpLCBncmFtbWFyU2Vh
cmNoUmFuZ2UpLmZpbmRGaXJzdEJhZEdyYW1tYXIoZ3JhbW1hckRldGFpbCwgZ3JhbW1hclBocmFz
ZU9mZnNldCwgZmFsc2UpOwogI2VuZGlmCisgICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgaWYg
KCFiYWRHcmFtbWFyUGhyYXNlLmlzRW1wdHkoKSkgewpAQCAtMTgzOCwxMiArMTgzOCwxMyBAQCBW
ZWN0b3I8U3RyaW5nPiBFZGl0b3I6Omd1ZXNzZXNGb3JNaXNzcGVsbGVkU2VsZWN0aW9uKCkKIAog
VmVjdG9yPFN0cmluZz4gRWRpdG9yOjpndWVzc2VzRm9yTWlzc3BlbGxlZE9yVW5ncmFtbWF0aWNh
bFNlbGVjdGlvbihib29sJiBtaXNzcGVsbGVkLCBib29sJiB1bmdyYW1tYXRpY2FsKQogewotI2lm
IFVTRShVTklGSUVEX1RFWFRfQ0hFQ0tJTkcpCi0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IGZy
YW1lKCktPnNlbGVjdGlvbigpLT50b05vcm1hbGl6ZWRSYW5nZSgpOwotICAgIGlmICghcmFuZ2Up
Ci0gICAgICAgIHJldHVybiBWZWN0b3I8U3RyaW5nPigpOwotICAgIHJldHVybiBUZXh0Q2hlY2tp
bmdIZWxwZXIoY2xpZW50KCksIHJhbmdlKS5ndWVzc2VzRm9yTWlzc3BlbGxlZE9yVW5ncmFtbWF0
aWNhbFJhbmdlKGlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgpLCBtaXNzcGVsbGVkLCB1bmdyYW1t
YXRpY2FsKTsKLSNlbHNlCisgICAgaWYgKHVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQobV9mcmFt
ZSkpIHsKKyAgICAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IGZyYW1lKCktPnNlbGVjdGlvbigp
LT50b05vcm1hbGl6ZWRSYW5nZSgpOworICAgICAgICBpZiAoIXJhbmdlKQorICAgICAgICAgICAg
cmV0dXJuIFZlY3RvcjxTdHJpbmc+KCk7CisgICAgICAgIHJldHVybiBUZXh0Q2hlY2tpbmdIZWxw
ZXIoY2xpZW50KCksIHJhbmdlKS5ndWVzc2VzRm9yTWlzc3BlbGxlZE9yVW5ncmFtbWF0aWNhbFJh
bmdlKGlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgpLCBtaXNzcGVsbGVkLCB1bmdyYW1tYXRpY2Fs
KTsKKyAgICB9CisKICAgICBtaXNzcGVsbGVkID0gaXNTZWxlY3Rpb25NaXNzcGVsbGVkKCk7CiAg
ICAgaWYgKG1pc3NwZWxsZWQpIHsKICAgICAgICAgdW5ncmFtbWF0aWNhbCA9IGZhbHNlOwpAQCAt
MTg1NSw3ICsxODU2LDYgQEAgVmVjdG9yPFN0cmluZz4gRWRpdG9yOjpndWVzc2VzRm9yTWlzc3Bl
bGxlZE9yVW5ncmFtbWF0aWNhbFNlbGVjdGlvbihib29sJiBtaXNzcGUKICAgICB9CiAgICAgdW5n
cmFtbWF0aWNhbCA9IGZhbHNlOwogICAgIHJldHVybiBWZWN0b3I8U3RyaW5nPigpOwotI2VuZGlm
CiB9CiAKIHZvaWQgRWRpdG9yOjpzaG93U3BlbGxpbmdHdWVzc1BhbmVsKCkKQEAgLTE4OTcsNDEg
KzE4OTcsMzggQEAgdm9pZCBFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFyKGNv
bnN0IFZpc2libGVTZWxlY3Rpb24gJm1vdmluZ1NlbGVjdGkKIAogdm9pZCBFZGl0b3I6Om1hcmtN
aXNzcGVsbGluZ3NBZnRlclR5cGluZ1RvV29yZChjb25zdCBWaXNpYmxlUG9zaXRpb24gJndvcmRT
dGFydCwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uQWZ0ZXJUeXBpbmcsIGJvb2wg
ZG9SZXBsYWNlbWVudCkKIHsKLSNpZiBVU0UoVU5JRklFRF9URVhUX0NIRUNLSU5HKQotICAgIG1f
c3BlbGxpbmdDb3JyZWN0b3ItPmFwcGx5UGVuZGluZ0NvcnJlY3Rpb24oc2VsZWN0aW9uQWZ0ZXJU
eXBpbmcpOworICAgIGlmICh1bmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKG1fZnJhbWUpKSB7Cisg
ICAgICAgIG1fc3BlbGxpbmdDb3JyZWN0b3ItPmFwcGx5UGVuZGluZ0NvcnJlY3Rpb24oc2VsZWN0
aW9uQWZ0ZXJUeXBpbmcpOwogCi0gICAgVGV4dENoZWNraW5nVHlwZU1hc2sgdGV4dENoZWNraW5n
T3B0aW9ucyA9IDA7CisgICAgICAgIFRleHRDaGVja2luZ1R5cGVNYXNrIHRleHRDaGVja2luZ09w
dGlvbnMgPSAwOwogCi0gICAgaWYgKGlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkp
Ci0gICAgICAgIHRleHRDaGVja2luZ09wdGlvbnMgfD0gVGV4dENoZWNraW5nVHlwZVNwZWxsaW5n
OworICAgICAgICBpZiAoaXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSkKKyAgICAg
ICAgICAgIHRleHRDaGVja2luZ09wdGlvbnMgfD0gVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nOwog
CiAjaWYgVVNFKEFVVE9NQVRJQ19URVhUX1JFUExBQ0VNRU5UKQotICAgIGlmIChkb1JlcGxhY2Vt
ZW50IAotICAgICAgICAmJiAoaXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQoKQot
ICAgICAgICAgICAgfHwgaXNBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZCgpCi0gICAgICAg
ICAgICB8fCBpc0F1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkKCkKLSAgICAgICAgICAg
IHx8IGlzQXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxlZCgpCi0gICAgICAgICAgICB8fCAo
KHRleHRDaGVja2luZ09wdGlvbnMgJiBUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcpICYmIGlzQXV0
b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZCgpKSkpCi0gICAgICAgIHRleHRDaGVja2lu
Z09wdGlvbnMgfD0gVGV4dENoZWNraW5nVHlwZVJlcGxhY2VtZW50OworICAgICAgICBpZiAoZG9S
ZXBsYWNlbWVudAorICAgICAgICAgICAgJiYgKGlzQXV0b21hdGljUXVvdGVTdWJzdGl0dXRpb25F
bmFibGVkKCkKKyAgICAgICAgICAgICAgICB8fCBpc0F1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFi
bGVkKCkKKyAgICAgICAgICAgICAgICB8fCBpc0F1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFi
bGVkKCkKKyAgICAgICAgICAgICAgICB8fCBpc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJs
ZWQoKQorICAgICAgICAgICAgICAgIHx8ICgodGV4dENoZWNraW5nT3B0aW9ucyAmIFRleHRDaGVj
a2luZ1R5cGVTcGVsbGluZykgJiYgaXNBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVk
KCkpKSkKKyAgICAgICAgICAgIHRleHRDaGVja2luZ09wdGlvbnMgfD0gVGV4dENoZWNraW5nVHlw
ZVJlcGxhY2VtZW50OwogI2VuZGlmCi0gICAgaWYgKCF0ZXh0Q2hlY2tpbmdPcHRpb25zICYgKFRl
eHRDaGVja2luZ1R5cGVTcGVsbGluZyB8IFRleHRDaGVja2luZ1R5cGVSZXBsYWNlbWVudCkpCi0g
ICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKCEodGV4dENoZWNraW5nT3B0aW9ucyAmIChUZXh0
Q2hlY2tpbmdUeXBlU3BlbGxpbmcgfCBUZXh0Q2hlY2tpbmdUeXBlUmVwbGFjZW1lbnQpKSkKKyAg
ICAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChpc0dyYW1tYXJDaGVja2luZ0VuYWJsZWQoKSkK
LSAgICAgICAgdGV4dENoZWNraW5nT3B0aW9ucyB8PSBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcjsK
KyAgICAgICAgaWYgKGlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgpKQorICAgICAgICAgICAgdGV4
dENoZWNraW5nT3B0aW9ucyB8PSBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcjsKIAotICAgIFZpc2li
bGVTZWxlY3Rpb24gYWRqYWNlbnRXb3JkcyA9IFZpc2libGVTZWxlY3Rpb24oc3RhcnRPZldvcmQo
d29yZFN0YXJ0LCBMZWZ0V29yZElmT25Cb3VuZGFyeSksIGVuZE9mV29yZCh3b3JkU3RhcnQsIFJp
Z2h0V29yZElmT25Cb3VuZGFyeSkpOwotICAgIGlmICh0ZXh0Q2hlY2tpbmdPcHRpb25zICYgVGV4
dENoZWNraW5nVHlwZUdyYW1tYXIpIHsKLSAgICAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rl
ZFNlbnRlbmNlID0gVmlzaWJsZVNlbGVjdGlvbihzdGFydE9mU2VudGVuY2Uod29yZFN0YXJ0KSwg
ZW5kT2ZTZW50ZW5jZSh3b3JkU3RhcnQpKTsKLSAgICAgICAgbWFya0FsbE1pc3NwZWxsaW5nc0Fu
ZEJhZEdyYW1tYXJJblJhbmdlcyh0ZXh0Q2hlY2tpbmdPcHRpb25zLCBhZGphY2VudFdvcmRzLnRv
Tm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIHNlbGVjdGVkU2VudGVuY2UudG9Ob3JtYWxpemVkUmFu
Z2UoKS5nZXQoKSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgbWFya0FsbE1pc3NwZWxsaW5nc0Fu
ZEJhZEdyYW1tYXJJblJhbmdlcyh0ZXh0Q2hlY2tpbmdPcHRpb25zLCBhZGphY2VudFdvcmRzLnRv
Tm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIGFkamFjZW50V29yZHMudG9Ob3JtYWxpemVkUmFuZ2Uo
KS5nZXQoKSk7CisgICAgICAgIFZpc2libGVTZWxlY3Rpb24gYWRqYWNlbnRXb3JkcyA9IFZpc2li
bGVTZWxlY3Rpb24oc3RhcnRPZldvcmQod29yZFN0YXJ0LCBMZWZ0V29yZElmT25Cb3VuZGFyeSks
IGVuZE9mV29yZCh3b3JkU3RhcnQsIFJpZ2h0V29yZElmT25Cb3VuZGFyeSkpOworICAgICAgICBp
ZiAodGV4dENoZWNraW5nT3B0aW9ucyAmIFRleHRDaGVja2luZ1R5cGVHcmFtbWFyKSB7CisgICAg
ICAgICAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGVkU2VudGVuY2UgPSBWaXNpYmxlU2VsZWN0
aW9uKHN0YXJ0T2ZTZW50ZW5jZSh3b3JkU3RhcnQpLCBlbmRPZlNlbnRlbmNlKHdvcmRTdGFydCkp
OworICAgICAgICAgICAgbWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyh0
ZXh0Q2hlY2tpbmdPcHRpb25zLCBhZGphY2VudFdvcmRzLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0
KCksIHNlbGVjdGVkU2VudGVuY2UudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSk7CisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgbWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJh
bmdlcyh0ZXh0Q2hlY2tpbmdPcHRpb25zLCBhZGphY2VudFdvcmRzLnRvTm9ybWFsaXplZFJhbmdl
KCkuZ2V0KCksIGFkamFjZW50V29yZHMudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSk7CisgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHNlbGVjdGlvbkFm
dGVyVHlwaW5nKTsKLSAgICBVTlVTRURfUEFSQU0oZG9SZXBsYWNlbWVudCk7Ci0KICAgICBpZiAo
IWlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIApA
QCAtMTk3MCw3ICsxOTY3LDYgQEAgdm9pZCBFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBZnRlclR5
cGluZ1RvV29yZChjb25zdCBWaXNpYmxlUG9zaXRpb24gJndvcmRTdGFydCwKICAgICAKICAgICAv
LyBDaGVjayBncmFtbWFyIG9mIGVudGlyZSBzZW50ZW5jZQogICAgIG1hcmtCYWRHcmFtbWFyKFZp
c2libGVTZWxlY3Rpb24oc3RhcnRPZlNlbnRlbmNlKHdvcmRTdGFydCksIGVuZE9mU2VudGVuY2Uo
d29yZFN0YXJ0KSkpOwotI2VuZGlmCiB9CiAgICAgCiB2b2lkIEVkaXRvcjo6bWFya01pc3NwZWxs
aW5nc09yQmFkR3JhbW1hcihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24sIGJvb2wg
Y2hlY2tTcGVsbGluZywgUmVmUHRyPFJhbmdlPiYgZmlyc3RNaXNzcGVsbGluZ1JhbmdlKQpAQCAt
MjAzOCw3ICsyMDM0LDExIEBAIHZvaWQgRWRpdG9yOjptYXJrQmFkR3JhbW1hcihjb25zdCBWaXNp
YmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pCiAKIHZvaWQgRWRpdG9yOjptYXJrQWxsTWlzc3BlbGxp
bmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRDaGVja2luZ1R5cGVNYXNrIHRleHRDaGVja2lu
Z09wdGlvbnMsIFJhbmdlKiBzcGVsbGluZ1JhbmdlLCBSYW5nZSogZ3JhbW1hclJhbmdlKQogewot
I2lmIFVTRShVTklGSUVEX1RFWFRfQ0hFQ0tJTkcpCisgICAgaWYgKCF1bmlmaWVkVGV4dENoZWNr
ZXJFbmFibGVkKG1fZnJhbWUpKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCiAgICAgLy8gVGhlcmUgc2hvdWxkbid0IGJlIHBlbmRpbmcg
YXV0b2NvcnJlY3Rpb24gYXQgdGhpcyBtb21lbnQuCiAgICAgQVNTRVJUKCFtX3NwZWxsaW5nQ29y
cmVjdG9yLT5oYXNQZW5kaW5nQ29ycmVjdGlvbigpKTsKIApAQCAtMjIyOSwxNyArMjIyOSwxNSBA
QCB2b2lkIEVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhU
ZXh0Q2hlY2tpbmdUeXBlTWFzayB0ZXh0QwogICAgICAgICAgICAgbV9mcmFtZS0+c2VsZWN0aW9u
KCktPm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlvbkZvcndh
cmQsIENoYXJhY3RlckdyYW51bGFyaXR5KTsKICAgICAgICAgfQogICAgIH0KLSNlbHNlCi0gICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgVU5VU0VEX1BBUkFNKHRleHRDaGVja2luZ09wdGlv
bnMpOwotICAgIFVOVVNFRF9QQVJBTShzcGVsbGluZ1JhbmdlKTsKLSAgICBVTlVTRURfUEFSQU0o
Z3JhbW1hclJhbmdlKTsKLSNlbmRpZiAvLyBVU0UoVU5JRklFRF9URVhUX0NIRUNLSU5HKQogfQog
CiB2b2lkIEVkaXRvcjo6Y2hhbmdlQmFja1RvUmVwbGFjZWRTdHJpbmcoY29uc3QgU3RyaW5nJiBy
ZXBsYWNlZFN0cmluZykKIHsKLSNpZiBVU0UoVU5JRklFRF9URVhUX0NIRUNLSU5HKQorICAgIGlm
ICghdW5pZmllZFRleHRDaGVja2VyRW5hYmxlZChtX2ZyYW1lKSkgeworICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGlmIChyZXBsYWNl
ZFN0cmluZy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjI1MywyOCArMjI1MSwy
NSBAQCB2b2lkIEVkaXRvcjo6Y2hhbmdlQmFja1RvUmVwbGFjZWRTdHJpbmcoY29uc3QgU3RyaW5n
JiByZXBsYWNlZFN0cmluZykKICAgICBSZWZQdHI8UmFuZ2U+IGNoYW5nZWRSYW5nZSA9IHBhcmFn
cmFwaC5zdWJyYW5nZShwYXJhZ3JhcGguY2hlY2tpbmdTdGFydCgpLCByZXBsYWNlZFN0cmluZy5s
ZW5ndGgoKSk7CiAgICAgY2hhbmdlZFJhbmdlLT5zdGFydENvbnRhaW5lcigpLT5kb2N1bWVudCgp
LT5tYXJrZXJzKCktPmFkZE1hcmtlcihjaGFuZ2VkUmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2Vy
OjpSZXBsYWNlbWVudCwgU3RyaW5nKCkpOwogICAgIG1fc3BlbGxpbmdDb3JyZWN0b3ItPm1hcmtS
ZXZlcnNlZChjaGFuZ2VkUmFuZ2UuZ2V0KCkpOwotI2Vsc2UKLSAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICBVTlVTRURfUEFSQU0ocmVwbGFjZWRTdHJpbmcpOwotI2VuZGlmIC8vIFVTRShV
TklGSUVEX1RFWFRfQ0hFQ0tJTkcpCiB9CiAKIAogdm9pZCBFZGl0b3I6Om1hcmtNaXNzcGVsbGlu
Z3NBbmRCYWRHcmFtbWFyKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNwZWxsaW5nU2VsZWN0aW9u
LCBib29sIG1hcmtHcmFtbWFyLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBncmFtbWFyU2VsZWN0
aW9uKQogewotI2lmIFVTRShVTklGSUVEX1RFWFRfQ0hFQ0tJTkcpCi0gICAgaWYgKCFpc0NvbnRp
bnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpKQorICAgIGlmICh1bmlmaWVkVGV4dENoZWNrZXJF
bmFibGVkKG1fZnJhbWUpKSB7CisgICAgICAgIGlmICghaXNDb250aW51b3VzU3BlbGxDaGVja2lu
Z0VuYWJsZWQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgVGV4dENoZWNraW5nVHlw
ZU1hc2sgdGV4dENoZWNraW5nT3B0aW9ucyA9IFRleHRDaGVja2luZ1R5cGVTcGVsbGluZyB8IFRl
eHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uOworICAgICAgICBpZiAobWFya0dyYW1tYXIgJiYgaXNH
cmFtbWFyQ2hlY2tpbmdFbmFibGVkKCkpCisgICAgICAgICAgICB0ZXh0Q2hlY2tpbmdPcHRpb25z
IHw9IFRleHRDaGVja2luZ1R5cGVHcmFtbWFyOworICAgICAgICBtYXJrQWxsTWlzc3BlbGxpbmdz
QW5kQmFkR3JhbW1hckluUmFuZ2VzKHRleHRDaGVja2luZ09wdGlvbnMsIHNwZWxsaW5nU2VsZWN0
aW9uLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIGdyYW1tYXJTZWxlY3Rpb24udG9Ob3JtYWxp
emVkUmFuZ2UoKS5nZXQoKSk7CiAgICAgICAgIHJldHVybjsKLSAgICBUZXh0Q2hlY2tpbmdUeXBl
TWFzayB0ZXh0Q2hlY2tpbmdPcHRpb25zID0gVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nIHwgVGV4
dENoZWNraW5nVHlwZUNvcnJlY3Rpb247Ci0gICAgaWYgKG1hcmtHcmFtbWFyICYmIGlzR3JhbW1h
ckNoZWNraW5nRW5hYmxlZCgpKQotICAgICAgICB0ZXh0Q2hlY2tpbmdPcHRpb25zIHw9IFRleHRD
aGVja2luZ1R5cGVHcmFtbWFyOwotICAgIG1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFy
SW5SYW5nZXModGV4dENoZWNraW5nT3B0aW9ucywgc3BlbGxpbmdTZWxlY3Rpb24udG9Ob3JtYWxp
emVkUmFuZ2UoKS5nZXQoKSwgZ3JhbW1hclNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpLmdl
dCgpKTsKLSNlbHNlCisgICAgfQorCiAgICAgUmVmUHRyPFJhbmdlPiBmaXJzdE1pc3NwZWxsaW5n
UmFuZ2U7CiAgICAgbWFya01pc3NwZWxsaW5ncyhzcGVsbGluZ1NlbGVjdGlvbiwgZmlyc3RNaXNz
cGVsbGluZ1JhbmdlKTsKICAgICBpZiAobWFya0dyYW1tYXIpCiAgICAgICAgIG1hcmtCYWRHcmFt
bWFyKGdyYW1tYXJTZWxlY3Rpb24pOwotI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yOjp1bmFwcGxp
ZWRTcGVsbENvcnJlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uT2ZDb3Jy
ZWN0ZWQsIGNvbnN0IFN0cmluZyYgY29ycmVjdGVkLCBjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKaW5kZXgg
Y2ZiYWVkMzNhMDZjZGYzYWYyMWQ0YjIwYmZiMjFjYTBkZDZjYjJlYi4uNDc5ODMzZGM5MzI2YzRh
YjY2MWUzMTdlY2ZmNTA3YzI3OWYxNGVmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VGV4dENoZWNraW5nSGVscGVyLmNwcApAQCAtMjksNyArMjksOSBAQAogCiAjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRl
ICJGcmFtZS5oIgogI2luY2x1ZGUgIlJhbmdlLmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNp
bmNsdWRlICJUZXh0Q2hlY2tlckNsaWVudC5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgog
I2luY2x1ZGUgIlZpc2libGVQb3NpdGlvbi5oIgpAQCAtMjI1LDcgKzIyNyw5IEBAIFN0cmluZyBU
ZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nKGludCYgZmlyc3RNaXNzcGVs
bGluZ09mZnNldCwgYm9vCiAKIFN0cmluZyBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1p
c3NwZWxsaW5nT3JCYWRHcmFtbWFyKGJvb2wgY2hlY2tHcmFtbWFyLCBib29sJiBvdXRJc1NwZWxs
aW5nLCBpbnQmIG91dEZpcnN0Rm91bmRPZmZzZXQsIEdyYW1tYXJEZXRhaWwmIG91dEdyYW1tYXJE
ZXRhaWwpCiB7Ci0jaWYgVVNFKFVOSUZJRURfVEVYVF9DSEVDS0lORykKKyAgICBpZiAoIW1fcmFu
Z2UgfHwgIXVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQobV9yYW5nZS0+b3duZXJEb2N1bWVudCgp
LT5mcmFtZSgpKSkKKyAgICAgICAgcmV0dXJuICIiOworCiAgICAgU3RyaW5nIGZpcnN0Rm91bmRJ
dGVtOwogICAgIFN0cmluZyBtaXNzcGVsbGVkV29yZDsKICAgICBTdHJpbmcgYmFkR3JhbW1hclBo
cmFzZTsKQEAgLTM0NCwxNCArMzQ4LDYgQEAgU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6Zmlu
ZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIoYm9vbCBjaGVja0dyYW1tYXIsIGIKICAgICAg
ICAgdG90YWxMZW5ndGhQcm9jZXNzZWQgKz0gY3VycmVudExlbmd0aDsKICAgICB9CiAgICAgcmV0
dXJuIGZpcnN0Rm91bmRJdGVtOwotI2Vsc2UKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICBVTlVTRURfUEFSQU0oY2hlY2tHcmFtbWFyKTsKLSAgICBVTlVTRURfUEFSQU0ob3V0SXNTcGVs
bGluZyk7Ci0gICAgVU5VU0VEX1BBUkFNKG91dEZpcnN0Rm91bmRPZmZzZXQpOwotICAgIFVOVVNF
RF9QQVJBTShvdXRHcmFtbWFyRGV0YWlsKTsKLSAgICByZXR1cm4gIiI7Ci0jZW5kaWYgLy8gVVNF
KFVOSUZJRURfVEVYVF9DSEVDS0lORykKIH0KIAogaW50IFRleHRDaGVja2luZ0hlbHBlcjo6Zmlu
ZEZpcnN0R3JhbW1hckRldGFpbChjb25zdCBWZWN0b3I8R3JhbW1hckRldGFpbD4mIGdyYW1tYXJE
ZXRhaWxzLCBpbnQgYmFkR3JhbW1hclBocmFzZUxvY2F0aW9uLCBpbnQgLypiYWRHcmFtbWFyUGhy
YXNlTGVuZ3RoKi8sIGludCBzdGFydE9mZnNldCwgaW50IGVuZE9mZnNldCwgYm9vbCBtYXJrQWxs
KQpAQCAtNTEwLDcgKzUwNiw5IEBAIGJvb2wgVGV4dENoZWNraW5nSGVscGVyOjppc1VuZ3JhbW1h
dGljYWwoVmVjdG9yPFN0cmluZz4mIGd1ZXNzZXNWZWN0b3IpIGNvbnN0CiAKIFZlY3RvcjxTdHJp
bmc+IFRleHRDaGVja2luZ0hlbHBlcjo6Z3Vlc3Nlc0Zvck1pc3NwZWxsZWRPclVuZ3JhbW1hdGlj
YWxSYW5nZShib29sIGNoZWNrR3JhbW1hciwgYm9vbCYgbWlzc3BlbGxlZCwgYm9vbCYgdW5ncmFt
bWF0aWNhbCkgY29uc3QKIHsKLSNpZiBVU0UoVU5JRklFRF9URVhUX0NIRUNLSU5HKQorICAgIGlm
ICghbV9yYW5nZSB8fCAhdW5pZmllZFRleHRDaGVja2VyRW5hYmxlZChtX3JhbmdlLT5vd25lckRv
Y3VtZW50KCktPmZyYW1lKCkpKQorICAgICAgICByZXR1cm4gVmVjdG9yPFN0cmluZz4oKTsKKwog
ICAgIFZlY3RvcjxTdHJpbmc+IGd1ZXNzZXM7CiAgICAgRXhjZXB0aW9uQ29kZSBlYzsKICAgICBt
aXNzcGVsbGVkID0gZmFsc2U7CkBAIC01NjIsMTMgKzU2MCw2IEBAIFZlY3RvcjxTdHJpbmc+IFRl
eHRDaGVja2luZ0hlbHBlcjo6Z3Vlc3Nlc0Zvck1pc3NwZWxsZWRPclVuZ3JhbW1hdGljYWxSYW5n
ZShib29sCiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIGd1ZXNzZXM7Ci0jZWxzZQotICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIFVOVVNFRF9QQVJBTShjaGVja0dyYW1tYXIpOwot
ICAgIFVOVVNFRF9QQVJBTShtaXNzcGVsbGVkKTsKLSAgICBVTlVTRURfUEFSQU0odW5ncmFtbWF0
aWNhbCk7Ci0gICAgcmV0dXJuIFZlY3RvcjxTdHJpbmc+KCk7Ci0jZW5kaWYgLy8gVVNFKFVOSUZJ
RURfVEVYVF9DSEVDS0lORykKIH0KIAogCkBAIC02MDcsNCArNTk4LDE2IEBAIHZvaWQgY2hlY2tU
ZXh0T2ZQYXJhZ3JhcGgoVGV4dENoZWNrZXJDbGllbnQqIGNsaWVudCwgY29uc3QgVUNoYXIqIHRl
eHQsIGludCBsZW5nCiAjZW5kaWYKIH0KIAorYm9vbCB1bmlmaWVkVGV4dENoZWNrZXJFbmFibGVk
KEZyYW1lKiBmcmFtZSkKK3sKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBmcmFtZS0+c2V0dGluZ3MoKTsKKyAgICBpZiAo
IXNldHRpbmdzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gc2V0dGluZ3Mt
PnVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQoKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmgKaW5kZXggNDI0MGU3MzUzZWVjNzA4Y2RhNzMzYTUz
NjU0ZDY1MjEzOWI5NDQ1Yy4uODQ2NmI4Nzg1N2ZhZWY4ZjUxYjY2YjkyYjQyODFiNTU4MzRkNDRm
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5oCkBAIC0y
Nyw2ICsyNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmFuZ2U7CiBjbGFzcyBQ
b3NpdGlvbjsKK2NsYXNzIFNldHRpbmdzOwogCiBjbGFzcyBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgg
ewogcHVibGljOgpAQCAtOTUsNiArOTYsOCBAQCBwcml2YXRlOgogdm9pZCBjaGVja1RleHRPZlBh
cmFncmFwaChUZXh0Q2hlY2tlckNsaWVudCosIGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVuZ3Ro
LAogICAgIFRleHRDaGVja2luZ1R5cGVNYXNrIGNoZWNraW5nVHlwZXMsIFZlY3RvcjxUZXh0Q2hl
Y2tpbmdSZXN1bHQ+JiByZXN1bHRzKTsKIAorYm9vbCB1bmlmaWVkVGV4dENoZWNrZXJFbmFibGVk
KEZyYW1lKik7CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFRleHRDaGVj
a2luZ0hlbHBlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCmluZGV4IGUxOTNkMjdkN2EwOWY5
OTkyMzNmMjk0YjgxNGJjMjkwZDVmNjNjMmEuLmM1MzQxM2U0YjU3YjEwYzQxNmE0NjZhOWEzZjI2
MDgwNjI5Mzg1NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCkBAIC0xOTYsNiArMTk2LDEx
IEBAIFNldHRpbmdzOjpTZXR0aW5ncyhQYWdlKiBwYWdlKQogICAgICwgbV9mdWxsU2NyZWVuQVBJ
RW5hYmxlZChmYWxzZSkKICNlbmRpZgogICAgICwgbV9hc3luY2hyb25vdXNTcGVsbENoZWNraW5n
RW5hYmxlZChmYWxzZSkKKyNpZiBVU0UoVU5JRklFRF9URVhUX0NIRUNLSU5HKQorICAgICwgbV91
bmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKHRydWUpCisjZWxzZQorICAgICwgbV91bmlmaWVkVGV4
dENoZWNrZXJFbmFibGVkKGZhbHNlKQorI2VuZGlmCiAgICAgLCBtX21lbW9yeUluZm9FbmFibGVk
KGZhbHNlKQogICAgICwgbV9pbnRlcmFjdGl2ZUZvcm1WYWxpZGF0aW9uKGZhbHNlKQogICAgICwg
bV91c2VQcmVIVE1MNVBhcnNlclF1aXJrcyhmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAppbmRl
eCA1N2VlMjZkZWFkMmMyYmFmZjZlNmVjOTA2YTE0MmZiNTNiYjdiZWQ5Li4xMDczYjQxNzAwNmE0
ZTY1ZjkyZGEyNDFhNmY3ZmJlYmM0YjQwNGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NldHRpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCkBAIC0z
ODEsNiArMzgxLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHNldEFzeW5j
aHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wgZmxhZykgeyBtX2FzeW5jaHJvbm91c1Nw
ZWxsQ2hlY2tpbmdFbmFibGVkID0gZmxhZzsgfQogICAgICAgICBib29sIGFzeW5jaHJvbm91c1Nw
ZWxsQ2hlY2tpbmdFbmFibGVkKCkgY29uc3QgIHsgcmV0dXJuIG1fYXN5bmNocm9ub3VzU3BlbGxD
aGVja2luZ0VuYWJsZWQ7IH0KIAorICAgICAgICB2b2lkIHNldFVuaWZpZWRUZXh0Q2hlY2tlckVu
YWJsZWQoYm9vbCBmbGFnKSB7IG1fdW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCA9IGZsYWc7IH0K
KyAgICAgICAgYm9vbCB1bmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKCkgY29uc3QgeyByZXR1cm4g
bV91bmlmaWVkVGV4dENoZWNrZXJFbmFibGVkOyB9CisKICAgICAgICAgdm9pZCBzZXRNZW1vcnlJ
bmZvRW5hYmxlZChib29sIGZsYWcpIHsgbV9tZW1vcnlJbmZvRW5hYmxlZCA9IGZsYWc7IH0KICAg
ICAgICAgYm9vbCBtZW1vcnlJbmZvRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWVtb3J5SW5m
b0VuYWJsZWQ7IH0KIApAQCAtNTY4LDYgKzU3MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgYm9vbCBtX2Z1bGxTY3JlZW5BUElFbmFibGVkIDogMTsKICNlbmRpZgogICAgICAgICBi
b29sIG1fYXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQ6IDE7CisgICAgICAgIGJvb2wg
bV91bmlmaWVkVGV4dENoZWNrZXJFbmFibGVkOiAxOwogICAgICAgICBib29sIG1fbWVtb3J5SW5m
b0VuYWJsZWQ6IDE7CiAgICAgICAgIGJvb2wgbV9pbnRlcmFjdGl2ZUZvcm1WYWxpZGF0aW9uOiAx
OwogICAgICAgICBib29sIG1fdXNlUHJlSFRNTDVQYXJzZXJRdWlya3M6IDE7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111251</attachid>
            <date>2011-10-17 05:42:14 -0700</date>
            <delta_ts>2011-10-17 18:37:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-69242-20111017214213.patch</filename>
            <type>text/plain</type>
            <size>36276</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTc1ODAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhZmZiMTUyZDc4YWQwZjAy
NzMzODRmYjVjMTM4MmEyOWZkOWEwNjVlLi4wYTNhOWJhMTFkZjQ1NTdmZDAwMTUwYmU4OTBlOWQ0
MDU0ZjAxYmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTcgQEAKKzIwMTEtMTAtMTcgIFNoaW55
YSBLYXdhbmFrYSAgPHNoaW55YWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBVbmlmaWVkIHNwZWxs
LWNoZWNraW5nIGFuZCBsZWdhY3kgc3BlbGwgY2hlY2tpbmcgc2hvdWxkIGJlIGVhc3kgdG8gc3dp
dGNoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTI0
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYkNv
cmUgaGFzIHR3byBkaWZmZXJlbnQgY29kZSBwYXRocyBmb3Igc3BlbGwtY2hlY2tpbmc6CisgICAg
ICAgICAgICAgICAgICAxKSBjaGVja1RleHRPZlBhcmFncmFwaCgpIGZvciBTbm93IExlb3BhcmQg
b3IgbGF0ZXIKKyAgICAgICAgICAgICAgICAgIDIpIGNoZWNrU3BlbGxpbmdPZlN0cmluZygpIGZv
ciBjaGVja0dyYW1tYXJPZlN0cmluZygpIGZvciBvdGhlciBwbGF0Zm9ybXMuCisKKyAgICAgICAg
VGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgZmxhZyB0byBjaGFuZ2UgY29kZSBwYXRocyBkeW5hbWlj
YWxseS4KKyAgICAgICAgVGhpcyBwYXRjaCBhbHNvIGluY2x1ZGVzIGJ1aWxkIGZpeCBmb3IgUVQs
IEdUSywgYW5kIFdpbmRvd3MgcGxhdGZvcm1zLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNh
dXNlIHRoaXMgcGF0Y2ggZG9lcyBub3QgY2hhbmdlIGEgYmVoYXZpb3IuCisKKyAgICAgICAgKiBD
TWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAq
IFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpoYXNNaXNzcGVsbGluZyk6CisgICAgICAg
ICAgQ2hhbmdlZCBzdGF0aWMgaWYtVVNFKFVOSUZJRURfVEVYVF9DSEVDS0lORykgc3RhdGVtZW50
IHRvIGR5bmFtaWMKKyAgICAgICAgICBjb25kaXRpb24gYnJhbmNoIHRvIGFjaGlldmUgZWFzeSBj
b2RlIHBhdGggY2hhbmdlLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyLm1tOiBkaXR0by4KKyAgICAgICAgKEFYQXR0cmlidXRlU3RyaW5n
U2V0U3BlbGxpbmcpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZ0FsbEluT25lLmNwcDoKKyAg
ICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmFk
dmFuY2VUb05leHRNaXNzcGVsbGluZyk6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
OjpndWVzc2VzRm9yTWlzc3BlbGxlZE9yVW5ncmFtbWF0aWNhbFNlbGVjdGlvbik6IGRpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzQWZ0ZXJUeXBpbmdUb1dv
cmQpOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5n
c0FuZEJhZEdyYW1tYXJJblJhbmdlcyk6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
OjpjaGFuZ2VCYWNrVG9SZXBsYWNlZFN0cmluZyk6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hcik6IGRpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yOjp1bmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKToKKyAgICAgICAgICBV
dGlsaXR5IG1ldGhvZCB0byBjaGVjayB1c2luZyB1bmlmaWVkIHRleHQgY2hlY2tpbmcgb3Igbm90
LgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmg6CisgICAgICAgICogZWRpdGluZy9UZXh0Q2hl
Y2tpbmdIZWxwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5nSGVscGVyOjpm
aW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcik6CisgICAgICAgICAgU2FtZSBhcyBXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpoYXNNaXNzcGVsbGluZy4KKyAgICAgICAgKFdlYkNv
cmU6OlRleHRDaGVja2luZ0hlbHBlcjo6Z3Vlc3Nlc0Zvck1pc3NwZWxsZWRPclVuZ3JhbW1hdGlj
YWxSYW5nZSk6IGRpdHRvLgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5nSGVscGVyOjp1
bmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKToKKyAgICAgICAgICBVdGlsaXR5IG1ldGhvZCB0byBj
aGVjayB1c2luZyB1bmlmaWVkIHRleHQgY2hlY2tpbmcgb3Igbm90LgorICAgICAgICAoV2ViQ29y
ZTo6dW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCk6IGRpdHRvLgorICAgICAgICAqIGVkaXRpbmcv
VGV4dENoZWNraW5nSGVscGVyLmg6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTZXR0aW5nczo6U2V0dGluZ3MpOgorICAgICAgICAgIEluY2x1ZGVzIGEg
ZmxhZyB0byBjaGFuZ2UgdGhlIGNvZGUgcGF0aC4KKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmg6
CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6c2V0VW5pZmllZFRleHRDaGVja2VyRW5hYmxl
ZCk6CisgICAgICAgICAgU2V0cyBhIGZsYWcgdG8gY2hhbmdlIHRoZSBjb2RlIHBhdGguCisgICAg
ICAgIChXZWJDb3JlOjpTZXR0aW5nczo6dW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCk6CisgICAg
ICAgICAgQSBmbGFnIHRvIGNoYW5nZSB0aGUgY29kZSBwYXRoLgorCiAyMDExLTEwLTE2ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBHZW5lcmF0ZSBYU0xU
UHJvY2Vzc29yIGNvbnN0cnVjdG9yIGZvciBKU0MgYnkgW0NvbnN0cnVjdG9yXSBJREwuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CmluZGV4IDgyOTI1ZWEzY2EwYjIzOTdmOGExYTMwMjg2ZTAwZjNkZTBiZjUy
NjYuLjUwMmZiYTAwMGQ4NWViM2ZmYzJiZDk5OGY3OGNkNjU2NDk5YTZmY2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CkBAIC02NTAsOSArNjUwLDExIEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBl
ZGl0aW5nL1JlcGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kLmNwcAogICAgIGVkaXRpbmcvUmVwbGFj
ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCiAgICAgZWRpdGluZy9TZXROb2RlQXR0cmlidXRlQ29tbWFu
ZC5jcHAKKyAgICBlZGl0aW5nL1NldFNlbGVjdGlvbkNvbW1hbmQuY3BwCiAgICAgZWRpdGluZy9T
bWFydFJlcGxhY2UuY3BwCiAgICAgZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwCiAgICAgZWRpdGlu
Zy9TcGVsbGluZ0NvcnJlY3Rpb25Db250cm9sbGVyLmNwcAorICAgIGVkaXRpbmcvU3BlbGxpbmdD
b3JyZWN0aW9uQ29tbWFuZC5jcHAKICAgICBlZGl0aW5nL1NwbGl0RWxlbWVudENvbW1hbmQuY3Bw
CiAgICAgZWRpdGluZy9TcGxpdFRleHROb2RlQ29tbWFuZC5jcHAKICAgICBlZGl0aW5nL1NwbGl0
VGV4dE5vZGVDb250YWluaW5nRWxlbWVudENvbW1hbmQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQppbmRleCA4MDE1Y2NjY2I3Nzk4ODdhNDVlZGMxMzIyMGZiMjk1YjdkYWVmMmE2Li41
NzQyMmJiM2U2YzRhYTg5MDgzM2Y4ODFjZmI1MWM1N2JjMDhlY2VhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0KQEAgLTE0MzcsNiArMTQzNyw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBc
CiAJU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NldE5vZGVBdHRyaWJ1dGVDb21tYW5kLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvZWRpdGluZy9TZXROb2RlQXR0cmlidXRlQ29tbWFuZC5oIFwKKwlTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1NldFNlbGVjdGlvbkNvbW1hbmQuY3BwIFwKKwlTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1NldFNlbGVjdGlvbkNvbW1hbmQuaCBcCiAJU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9TbWFydFJlcGxhY2UuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NtYXJ0UmVwbGFj
ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NtYXJ0UmVwbGFjZUlDVS5jcHAgXApAQCAt
MTQ0NCw2ICsxNDQ2LDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1NwZWxsQ2hlY2tlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5n
Q29ycmVjdGlvbkNvbnRyb2xsZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxs
aW5nQ29ycmVjdGlvbkNvbnRyb2xsZXIuaCBcCisJU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVs
bGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVs
bGluZ0NvcnJlY3Rpb25Db21tYW5kLmggXAogCVNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BsaXRF
bGVtZW50Q29tbWFuZC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BsaXRFbGVtZW50
Q29tbWFuZC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggMDEzNDU4ZGJjNmE4ODFmMWFkZWE3MWY0M2M4
MDE0Y2ViNTczNzNkMy4uYjVmNTI0YWUzNTlkODRjYzFkNzVkNWZmOTEzYmVkODRiMzdhM2NlYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5wcm8KQEAgLTYxNSw4ICs2MTUsMTAgQEAgU09VUkNFUyArPSBcCiAgICAgZWRp
dGluZy9SZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZC5jcHAgXAogICAgIGVkaXRpbmcvUmVwbGFj
ZVNlbGVjdGlvbkNvbW1hbmQuY3BwIFwKICAgICBlZGl0aW5nL1NldE5vZGVBdHRyaWJ1dGVDb21t
YW5kLmNwcCBcCisgICAgZWRpdGluZy9TZXRTZWxlY3Rpb25Db21tYW5kLmNwcCBcCiAgICAgZWRp
dGluZy9TbWFydFJlcGxhY2VJQ1UuY3BwIFwKICAgICBlZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHAg
XAorICAgIGVkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAgXAogICAgIGVkaXRp
bmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29udHJvbGxlci5jcHAgXAogICAgIGVkaXRpbmcvU3BsaXRF
bGVtZW50Q29tbWFuZC5jcHAgXAogICAgIGVkaXRpbmcvU3BsaXRUZXh0Tm9kZUNvbW1hbmQuY3Bw
IFwKQEAgLTE2NDUsNiArMTY0Nyw3IEBAIEhFQURFUlMgKz0gXAogICAgIGVkaXRpbmcvUmVwbGFj
ZVNlbGVjdGlvbkNvbW1hbmQuaCBcCiAgICAgZWRpdGluZy9TZXROb2RlQXR0cmlidXRlQ29tbWFu
ZC5oIFwKICAgICBlZGl0aW5nL1NtYXJ0UmVwbGFjZS5oIFwKKyAgICBlZGl0aW5nL1NwZWxsaW5n
Q29ycmVjdGlvbkNvbW1hbmQuaCBcCiAgICAgZWRpdGluZy9TcGVsbGluZ0NvcnJlY3Rpb25Db250
cm9sbGVyLmggXAogICAgIGVkaXRpbmcvU3BsaXRFbGVtZW50Q29tbWFuZC5oIFwKICAgICBlZGl0
aW5nL1NwbGl0VGV4dE5vZGVDb21tYW5kLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBlYmNmN2E2Mjk3MjJmYjI2ZTc4ZmZkOWEzNWE2MzU1
ODc0YmVmOTg2Li5jNWE0YjQ4ZmI4ZjE4NGMyYTgyYTZlY2NhOWE0YTBjMzU5MjkxNDc3IDEwMDc1
NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNTI2MTMs
NiArNTI2MTMsNjIgQEAKIAkJCQkJLz4KIAkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgogCQkJPC9G
aWxlPgorICAgICAgICAgICAgPEZpbGUKKyAgICAgICAgICAgICAgICAgUmVsYXRpdmVQYXRoPSIu
LlxlZGl0aW5nXFNldFNlbGVjdGlvbkNvbW1hbmQuY3BwIgorICAgICAgICAgICAgICAgICA+Cisg
ICAgICAgICAgICAgICAgPEZpbGVDb25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAg
TmFtZT0iRGVidWd8V2luMzIiCisgICAgICAgICAgICAgICAgICAgICAgRXhjbHVkZWRGcm9tQnVp
bGQ9InRydWUiCisgICAgICAgICAgICAgICAgICAgICA+CisgICAgICAgICAgICAgICAgICAgIDxU
b29sCisgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8+CisgICAgICAgICAgICAgICAgICAgIDwvRmlsZUNv
bmZpZ3VyYXRpb24+CisgICAgICAgICAgICAgICAgPEZpbGVDb25maWd1cmF0aW9uCisgICAgICAg
ICAgICAgICAgICAgICAgTmFtZT0iUmVsZWFzZXxXaW4zMiIKKyAgICAgICAgICAgICAgICAgICAg
ICBFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKyAgICAgICAgICAgICAgICAgICAgICA+CisgICAg
ICAgICAgICAgICAgICAgIDxUb29sCisgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWU9IlZD
Q0xDb21waWxlclRvb2wiCisgICAgICAgICAgICAgICAgICAgICAgICAgIC8+CisgICAgICAgICAg
ICAgICAgICAgIDwvRmlsZUNvbmZpZ3VyYXRpb24+CisgICAgICAgICAgICAgICAgPEZpbGVDb25m
aWd1cmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRl
fFdpbjMyIgorICAgICAgICAgICAgICAgICAgICAgIEV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgor
ICAgICAgICAgICAgICAgICAgICAgID4KKyAgICAgICAgICAgICAgICAgICAgPFRvb2wKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgLz4KKyAgICAgICAgICAgICAgICAgICAgPC9GaWxlQ29uZmlndXJhdGlv
bj4KKyAgICAgICAgICAgICAgICA8RmlsZUNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAg
ICAgICBOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKyAgICAgICAgICAgICAgICAg
ICAgICBFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKyAgICAgICAgICAgICAgICAgICAgICA+Cisg
ICAgICAgICAgICAgICAgICAgIDxUb29sCisgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWU9
IlZDQ0xDb21waWxlclRvb2wiCisgICAgICAgICAgICAgICAgICAgICAgICAgIC8+CisgICAgICAg
ICAgICAgICAgICAgIDwvRmlsZUNvbmZpZ3VyYXRpb24+CisgICAgICAgICAgICAgICAgPEZpbGVD
b25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgTmFtZT0iRGVidWdfQWxsfFdpbjMy
IgorICAgICAgICAgICAgICAgICAgICAgIEV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorICAgICAg
ICAgICAgICAgICAgICAgID4KKyAgICAgICAgICAgICAgICAgICAgPFRvb2wKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgLz4KKyAgICAgICAgICAgICAgICAgICAgPC9GaWxlQ29uZmlndXJhdGlvbj4KKyAg
ICAgICAgICAgICAgICA8RmlsZUNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICBO
YW1lPSJQcm9kdWN0aW9ufFdpbjMyIgorICAgICAgICAgICAgICAgICAgICAgIEV4Y2x1ZGVkRnJv
bUJ1aWxkPSJ0cnVlIgorICAgICAgICAgICAgICAgICAgICAgID4KKyAgICAgICAgICAgICAgICAg
ICAgPFRvb2wKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZT0iVkNDTENvbXBpbGVyVG9v
bCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLz4KKyAgICAgICAgICAgICAgICAgICAgPC9G
aWxlQ29uZmlndXJhdGlvbj4KKyAgICAgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICA8
RmlsZQorICAgICAgICAgICAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlxlZGl0aW5nXFNldFNlbGVj
dGlvbkNvbW1hbmQuaCIKKyAgICAgICAgICAgICAgICAgID4KKyAgICAgICAgICAgICAgICA8L0Zp
bGU+CiAJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cZWRpdGluZ1xTbWFydFJlcGxhY2Uu
aCIKIAkJCQk+CkBAIC01MjcyNSw2ICs1Mjc4MSw2MiBAQAogCQkJCVJlbGF0aXZlUGF0aD0iLi5c
ZWRpdGluZ1xTcGVsbENoZWNrZXIuaCIKIAkJCQk+CiAJCQk8L0ZpbGU+CisgICAgICAgICAgICA8
RmlsZQorICAgICAgICAgICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4uXGVkaXRpbmdcU3BlbGxpbmdD
b3JyZWN0aW9uQ29tbWFuZC5jcHAiCisgICAgICAgICAgICAgICAgID4KKyAgICAgICAgICAgICAg
ICA8RmlsZUNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICBOYW1lPSJEZWJ1Z3xX
aW4zMiIKKyAgICAgICAgICAgICAgICAgICAgICBFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKyAg
ICAgICAgICAgICAgICAgICAgICA+CisgICAgICAgICAgICAgICAgICAgIDxUb29sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIE5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8+CisgICAgICAgICAgICAgICAgICAgIDwvRmlsZUNvbmZpZ3VyYXRpb24+
CisgICAgICAgICAgICAgICAgPEZpbGVDb25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgICAg
ICAgTmFtZT0iUmVsZWFzZXxXaW4zMiIKKyAgICAgICAgICAgICAgICAgICAgICBFeGNsdWRlZEZy
b21CdWlsZD0idHJ1ZSIKKyAgICAgICAgICAgICAgICAgICAgICA+CisgICAgICAgICAgICAgICAg
ICAgIDxUb29sCisgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWU9IlZDQ0xDb21waWxlclRv
b2wiCisgICAgICAgICAgICAgICAgICAgICAgICAgIC8+CisgICAgICAgICAgICAgICAgICAgIDwv
RmlsZUNvbmZpZ3VyYXRpb24+CisgICAgICAgICAgICAgICAgPEZpbGVDb25maWd1cmF0aW9uCisg
ICAgICAgICAgICAgICAgICAgICAgTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorICAg
ICAgICAgICAgICAgICAgICAgIEV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorICAgICAgICAgICAg
ICAgICAgICAgID4KKyAgICAgICAgICAgICAgICAgICAgPFRvb2wKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgLz4KKyAgICAgICAgICAgICAgICAgICAgPC9GaWxlQ29uZmlndXJhdGlvbj4KKyAgICAgICAg
ICAgICAgICA8RmlsZUNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICBOYW1lPSJS
ZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKyAgICAgICAgICAgICAgICAgICAgICBFeGNsdWRl
ZEZyb21CdWlsZD0idHJ1ZSIKKyAgICAgICAgICAgICAgICAgICAgICA+CisgICAgICAgICAgICAg
ICAgICAgIDxUb29sCisgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWU9IlZDQ0xDb21waWxl
clRvb2wiCisgICAgICAgICAgICAgICAgICAgICAgICAgIC8+CisgICAgICAgICAgICAgICAgICAg
IDwvRmlsZUNvbmZpZ3VyYXRpb24+CisgICAgICAgICAgICAgICAgPEZpbGVDb25maWd1cmF0aW9u
CisgICAgICAgICAgICAgICAgICAgICAgTmFtZT0iRGVidWdfQWxsfFdpbjMyIgorICAgICAgICAg
ICAgICAgICAgICAgIEV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorICAgICAgICAgICAgICAgICAg
ICAgID4KKyAgICAgICAgICAgICAgICAgICAgPFRvb2wKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLz4K
KyAgICAgICAgICAgICAgICAgICAgPC9GaWxlQ29uZmlndXJhdGlvbj4KKyAgICAgICAgICAgICAg
ICA8RmlsZUNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICBOYW1lPSJSZWxlYXNl
X0xUQ0d8V2luMzIiCisgICAgICAgICAgICAgICAgICAgICAgRXhjbHVkZWRGcm9tQnVpbGQ9InRy
dWUiCisgICAgICAgICAgICAgICAgICAgICAgPgorICAgICAgICAgICAgICAgICAgICA8VG9vbAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAvPgorICAgICAgICAgICAgICAgICAgICA8L0ZpbGVDb25maWd1
cmF0aW9uPgorICAgICAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgIDxGaWxlCisgICAg
ICAgICAgICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4uXGVkaXRpbmdcU3BlbGxpbmdDb3JyZWN0aW9u
Q29tbWFuZC5oIgorICAgICAgICAgICAgICAgICAgPgorICAgICAgICAgICAgPC9GaWxlPgogCQkJ
PEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGVkaXRpbmdcU3BlbGxpbmdDb3JyZWN0aW9uQ29u
dHJvbGxlci5jcHAiCiAJCQkJPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXggN2Q3MWY2YWRiZjI5OGE0YjJjYTZiMGZh
ZGQxZTM5Y2QyYWI3ZjdlMC4uZmVhMGZiM2FmMDc4MjAwNzA3YmY5NWYyZWY1N2MyZDI1ZWU0OGUz
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlPYmplY3QuY3BwCkBAIC01MCw2ICs1MCw3IEBACiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgog
I2luY2x1ZGUgIlJlbmRlcldpZGdldC5oIgogI2luY2x1ZGUgIlJlbmRlcmVkUG9zaXRpb24uaCIK
KyNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlRleHRDaGVja2VyQ2xpZW50LmgiCiAj
aW5jbHVkZSAiVGV4dENoZWNraW5nSGVscGVyLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgi
CkBAIC0yODksMTkgKzI5MCwyMCBAQCBib29sIEFjY2Vzc2liaWxpdHlPYmplY3Q6Omhhc01pc3Nw
ZWxsaW5nKCkgY29uc3QKICAgICBjb25zdCBVQ2hhciogY2hhcnMgPSBzdHJpbmdWYWx1ZSgpLmNo
YXJhY3RlcnMoKTsKICAgICBpbnQgY2hhcnNMZW5ndGggPSBzdHJpbmdWYWx1ZSgpLmxlbmd0aCgp
OwogICAgIGJvb2wgaXNNaXNzcGVsbGVkID0gZmFsc2U7Ci0gICAgCi0jaWYgVVNFKFVOSUZJRURf
VEVYVF9DSEVDS0lORykKLSAgICBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiByZXN1bHRzOwot
ICAgIGNoZWNrVGV4dE9mUGFyYWdyYXBoKHRleHRDaGVja2VyLCBjaGFycywgY2hhcnNMZW5ndGgs
IFRleHRDaGVja2luZ1R5cGVTcGVsbGluZywgcmVzdWx0cyk7Ci0gICAgaWYgKCFyZXN1bHRzLmlz
RW1wdHkoKSkKLSAgICAgICAgaXNNaXNzcGVsbGVkID0gdHJ1ZTsKLSNlbHNlCisKKyAgICBpZiAo
dW5pZmllZFRleHRDaGVja2VyRW5hYmxlZChmcmFtZSkpIHsKKyAgICAgICAgVmVjdG9yPFRleHRD
aGVja2luZ1Jlc3VsdD4gcmVzdWx0czsKKyAgICAgICAgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgodGV4
dENoZWNrZXIsIGNoYXJzLCBjaGFyc0xlbmd0aCwgVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nLCBy
ZXN1bHRzKTsKKyAgICAgICAgaWYgKCFyZXN1bHRzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGlz
TWlzc3BlbGxlZCA9IHRydWU7CisgICAgICAgIHJldHVybiBpc01pc3NwZWxsZWQ7CisgICAgfQor
CiAgICAgaW50IG1pc3NwZWxsaW5nTGVuZ3RoID0gMDsKICAgICBpbnQgbWlzc3BlbGxpbmdMb2Nh
dGlvbiA9IC0xOwogICAgIHRleHRDaGVja2VyLT5jaGVja1NwZWxsaW5nT2ZTdHJpbmcoY2hhcnMs
IGNoYXJzTGVuZ3RoLCAmbWlzc3BlbGxpbmdMb2NhdGlvbiwgJm1pc3NwZWxsaW5nTGVuZ3RoKTsK
ICAgICBpZiAobWlzc3BlbGxpbmdMZW5ndGggfHwgbWlzc3BlbGxpbmdMb2NhdGlvbiAhPSAtMSkK
ICAgICAgICAgaXNNaXNzcGVsbGVkID0gdHJ1ZTsKLSNlbmRpZgogICAgIAogICAgIHJldHVybiBp
c01pc3NwZWxsZWQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbSBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCmluZGV4IGRm
ZTc4ODI0ZWVlMDU0NTEyNWM2ZmNiNzBkODYwNmI5ODEwYzU0ZWQuLjEzNjViNjI2M2RlYTIyMDIw
OWI4ODhhOWZjNDA1MjJmOTQ5YjU2ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
Lm1tCkBAIC02ODksMjEgKzY4OSwyMyBAQCBzdGF0aWMgdm9pZCBBWEF0dHJpYnV0ZVN0cmluZ1Nl
dEJsb2NrcXVvdGVMZXZlbChOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBhdHRyUwogCiBzdGF0
aWMgdm9pZCBBWEF0dHJpYnV0ZVN0cmluZ1NldFNwZWxsaW5nKE5TTXV0YWJsZUF0dHJpYnV0ZWRT
dHJpbmcqIGF0dHJTdHJpbmcsIE5vZGUqIG5vZGUsIGNvbnN0IFVDaGFyKiBjaGFycywgaW50IGNo
YXJMZW5ndGgsIE5TUmFuZ2UgcmFuZ2UpCiB7Ci0jaWYgVVNFKFVOSUZJRURfVEVYVF9DSEVDS0lO
RykKLSAgICAvLyBDaGVjayB0aGUgc3BlbGxpbmcgZGlyZWN0bHkgc2luY2UgZG9jdW1lbnQtPm1h
cmtlcnNGb3JOb2RlKCkgZG9lcyBub3Qgc3RvcmUgdGhlIG1pc3NwZWxsZWQgbWFya2luZyB3aGVu
IHRoZSBjdXJzb3IgaXMgaW4gYSB3b3JkLgotICAgIFRleHRDaGVja2VyQ2xpZW50KiBjaGVja2Vy
ID0gbm9kZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCktPnRleHRDaGVja2VyKCk7Ci0K
LSAgICAvLyBjaGVja1RleHRPZlBhcmFncmFwaCBpcyB0aGUgb25seSBzcGVsbGluZy9ncmFtbWFy
IGNoZWNrZXIgaW1wbGVtZW50ZWQgaW4gV0sxIGFuZCBXSzIKLSAgICBWZWN0b3I8VGV4dENoZWNr
aW5nUmVzdWx0PiByZXN1bHRzOwotICAgIGNoZWNrVGV4dE9mUGFyYWdyYXBoKGNoZWNrZXIsIGNo
YXJzLCBjaGFyTGVuZ3RoLCBUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcsIHJlc3VsdHMpOwotICAg
IAotICAgIHNpemVfdCBzaXplID0gcmVzdWx0cy5zaXplKCk7Ci0gICAgTlNOdW1iZXIqIHRydWVW
YWx1ZSA9IFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpZRVNdOwotICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgY29uc3QgVGV4dENoZWNraW5nUmVzdWx0
JiByZXN1bHQgPSByZXN1bHRzW2ldOwotICAgICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldE51bWJl
cihhdHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlNaXNzcGVsbGVkVGV4dEF0dHJpYnV0ZSwgdHJ1
ZVZhbHVlLCBOU01ha2VSYW5nZShyZXN1bHQubG9jYXRpb24gKyByYW5nZS5sb2NhdGlvbiwgcmVz
dWx0Lmxlbmd0aCkpOwotICAgIH0gICAgCi0jZWxzZQorICAgIGlmICh1bmlmaWVkVGV4dENoZWNr
ZXJFbmFibGVkKG5vZGUtPmRvY3VtZW50KCktPmZyYW1lKCkpKSB7CisgICAgICAgIC8vIENoZWNr
IHRoZSBzcGVsbGluZyBkaXJlY3RseSBzaW5jZSBkb2N1bWVudC0+bWFya2Vyc0Zvck5vZGUoKSBk
b2VzIG5vdCBzdG9yZSB0aGUgbWlzc3BlbGxlZCBtYXJraW5nIHdoZW4gdGhlIGN1cnNvciBpcyBp
biBhIHdvcmQuCisgICAgICAgIFRleHRDaGVja2VyQ2xpZW50KiBjaGVja2VyID0gbm9kZS0+ZG9j
dW1lbnQoKS0+ZnJhbWUoKS0+ZWRpdG9yKCktPnRleHRDaGVja2VyKCk7CisKKyAgICAgICAgLy8g
Y2hlY2tUZXh0T2ZQYXJhZ3JhcGggaXMgdGhlIG9ubHkgc3BlbGxpbmcvZ3JhbW1hciBjaGVja2Vy
IGltcGxlbWVudGVkIGluIFdLMSBhbmQgV0syCisgICAgICAgIFZlY3RvcjxUZXh0Q2hlY2tpbmdS
ZXN1bHQ+IHJlc3VsdHM7CisgICAgICAgIGNoZWNrVGV4dE9mUGFyYWdyYXBoKGNoZWNrZXIsIGNo
YXJzLCBjaGFyTGVuZ3RoLCBUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcsIHJlc3VsdHMpOworCisg
ICAgICAgIHNpemVfdCBzaXplID0gcmVzdWx0cy5zaXplKCk7CisgICAgICAgIE5TTnVtYmVyKiB0
cnVlVmFsdWUgPSBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXTsKKyAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICAgICAgY29uc3QgVGV4dENo
ZWNraW5nUmVzdWx0JiByZXN1bHQgPSByZXN1bHRzW2ldOworICAgICAgICAgICAgQVhBdHRyaWJ1
dGVTdHJpbmdTZXROdW1iZXIoYXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5TWlzc3BlbGxlZFRl
eHRBdHRyaWJ1dGUsIHRydWVWYWx1ZSwgTlNNYWtlUmFuZ2UocmVzdWx0LmxvY2F0aW9uICsgcmFu
Z2UubG9jYXRpb24sIHJlc3VsdC5sZW5ndGgpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47
CisgICAgfQorCiAgICAgaW50IGN1cnJlbnRQb3NpdGlvbiA9IDA7CiAgICAgd2hpbGUgKGNoYXJM
ZW5ndGggPiAwKSB7CiAgICAgICAgIGNvbnN0IFVDaGFyKiBjaGFyRGF0YSA9IGNoYXJzICsgY3Vy
cmVudFBvc2l0aW9uOwpAQCAtNzIwLDcgKzcyMiw2IEBAIHN0YXRpYyB2b2lkIEFYQXR0cmlidXRl
U3RyaW5nU2V0U3BlbGxpbmcoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0clN0cmluZywK
ICAgICAgICAgY2hhckxlbmd0aCAtPSAobWlzc3BlbGxpbmdMb2NhdGlvbiArIG1pc3NwZWxsaW5n
TGVuZ3RoKTsKICAgICAgICAgY3VycmVudFBvc2l0aW9uICs9IChtaXNzcGVsbGluZ0xvY2F0aW9u
ICsgbWlzc3BlbGxpbmdMZW5ndGgpOwogICAgIH0KLSNlbmRpZiAgICAKIH0KIAogc3RhdGljIHZv
aWQgQVhBdHRyaWJ1dGVTdHJpbmdTZXRIZWFkaW5nTGV2ZWwoTlNNdXRhYmxlQXR0cmlidXRlZFN0
cmluZyogYXR0clN0cmluZywgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgTlNSYW5nZSByYW5nZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ0FsbEluT25lLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ0FsbEluT25lLmNwcAppbmRleCBkODYzMDk3
NDE4ZDQ0ZmIwYzUzNjk1M2Q3M2UyZDJmNGUxZjhhZGZmLi5jMDI5OWIzMjBhOGNiMDk5YTAyN2Nl
YWQ2ZDkxZDVmZjRhMDI5ZTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRpbmdBbGxJbk9uZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nQWxs
SW5PbmUuY3BwCkBAIC02MSw4ICs2MSwxMCBAQAogI2luY2x1ZGUgPFJlcGxhY2VOb2RlV2l0aFNw
YW5Db21tYW5kLmNwcD4KICNpbmNsdWRlIDxSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHA+CiAj
aW5jbHVkZSA8U2V0Tm9kZUF0dHJpYnV0ZUNvbW1hbmQuY3BwPgorI2luY2x1ZGUgPFNldFNlbGVj
dGlvbkNvbW1hbmQuY3BwPgogI2luY2x1ZGUgPFNtYXJ0UmVwbGFjZS5jcHA+CiAjaW5jbHVkZSA8
U21hcnRSZXBsYWNlQ0YuY3BwPgorI2luY2x1ZGUgPFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQu
Y3BwPgogI2luY2x1ZGUgPFNwZWxsaW5nQ29ycmVjdGlvbkNvbnRyb2xsZXIuY3BwPgogI2luY2x1
ZGUgPFNwZWxsQ2hlY2tlci5jcHA+CiAjaW5jbHVkZSA8U3BsaXRFbGVtZW50Q29tbWFuZC5jcHA+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggYjQ4YThiNWQ2MDM1ZGMwMDY0YzBjMmNk
OGM5NTc1OTU4M2UyNmQxYi4uMTE1ODgzNTJmMWYyMTIzYzU4ZTAxMDNkYzk3NzIyZmJjNmM0Zjhi
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMTY3NSw0NSArMTY3NSwxMSBAQCB2
b2lkIEVkaXRvcjo6YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxl
Y3Rpb24pCiAgICAgU3RyaW5nIGJhZEdyYW1tYXJQaHJhc2U7CiAgICAgU3RyaW5nIG1pc3NwZWxs
ZWRXb3JkOwogCi0jaWYgVVNFKFVOSUZJRURfVEVYVF9DSEVDS0lORykKLSAgICBncmFtbWFyU2Vh
cmNoUmFuZ2UgPSBzcGVsbGluZ1NlYXJjaFJhbmdlLT5jbG9uZVJhbmdlKGVjKTsKICAgICBib29s
IGlzU3BlbGxpbmcgPSB0cnVlOwogICAgIGludCBmb3VuZE9mZnNldCA9IDA7Ci0gICAgU3RyaW5n
IGZvdW5kSXRlbSA9IFRleHRDaGVja2luZ0hlbHBlcihjbGllbnQoKSwgc3BlbGxpbmdTZWFyY2hS
YW5nZSkuZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIoaXNHcmFtbWFyQ2hlY2tpbmdF
bmFibGVkKCksIGlzU3BlbGxpbmcsIGZvdW5kT2Zmc2V0LCBncmFtbWFyRGV0YWlsKTsKLSAgICBp
ZiAoaXNTcGVsbGluZykgewotICAgICAgICBtaXNzcGVsbGVkV29yZCA9IGZvdW5kSXRlbTsKLSAg
ICAgICAgbWlzc3BlbGxpbmdPZmZzZXQgPSBmb3VuZE9mZnNldDsKLSAgICB9IGVsc2UgewotICAg
ICAgICBiYWRHcmFtbWFyUGhyYXNlID0gZm91bmRJdGVtOwotICAgICAgICBncmFtbWFyUGhyYXNl
T2Zmc2V0ID0gZm91bmRPZmZzZXQ7Ci0gICAgfQotI2Vsc2UKKyAgICBTdHJpbmcgZm91bmRJdGVt
OwogICAgIFJlZlB0cjxSYW5nZT4gZmlyc3RNaXNzcGVsbGluZ1JhbmdlOwotICAgIG1pc3NwZWxs
ZWRXb3JkID0gVGV4dENoZWNraW5nSGVscGVyKGNsaWVudCgpLCBzcGVsbGluZ1NlYXJjaFJhbmdl
KS5maW5kRmlyc3RNaXNzcGVsbGluZyhtaXNzcGVsbGluZ09mZnNldCwgZmFsc2UsIGZpcnN0TWlz
c3BlbGxpbmdSYW5nZSk7Ci0KLSNpZiBVU0UoR1JBTU1BUl9DSEVDS0lORykKLSAgICAvLyBTZWFy
Y2ggZm9yIGJhZCBncmFtbWFyIHRoYXQgb2NjdXJzIHByaW9yIHRvIHRoZSBuZXh0IG1pc3NwZWxs
ZWQgd29yZCAoaWYgYW55KQotICAgIGdyYW1tYXJTZWFyY2hSYW5nZSA9IHNwZWxsaW5nU2VhcmNo
UmFuZ2UtPmNsb25lUmFuZ2UoZWMpOwotICAgIGlmICghbWlzc3BlbGxlZFdvcmQuaXNFbXB0eSgp
KSB7Ci0gICAgICAgIC8vIFN0b3AgbG9va2luZyBhdCBzdGFydCBvZiBuZXh0IG1pc3NwZWxsZWQg
d29yZAotICAgICAgICBDaGFyYWN0ZXJJdGVyYXRvciBjaGFycyhncmFtbWFyU2VhcmNoUmFuZ2Uu
Z2V0KCkpOwotICAgICAgICBjaGFycy5hZHZhbmNlKG1pc3NwZWxsaW5nT2Zmc2V0KTsKLSAgICAg
ICAgZ3JhbW1hclNlYXJjaFJhbmdlLT5zZXRFbmQoY2hhcnMucmFuZ2UoKS0+c3RhcnRDb250YWlu
ZXIoZWMpLCBjaGFycy5yYW5nZSgpLT5zdGFydE9mZnNldChlYyksIGVjKTsKLSAgICB9Ci0gICAg
Ci0gICAgaWYgKGlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgpKQotICAgICAgICBiYWRHcmFtbWFy
UGhyYXNlID0gVGV4dENoZWNraW5nSGVscGVyKGNsaWVudCgpLCBncmFtbWFyU2VhcmNoUmFuZ2Up
LmZpbmRGaXJzdEJhZEdyYW1tYXIoZ3JhbW1hckRldGFpbCwgZ3JhbW1hclBocmFzZU9mZnNldCwg
ZmFsc2UpOwotI2VuZGlmCi0jZW5kaWYKLSAgICAKLSAgICAvLyBJZiB3ZSBmb3VuZCBuZWl0aGVy
IGJhZCBncmFtbWFyIG5vciBhIG1pc3NwZWxsZWQgd29yZCwgd3JhcCBhbmQgdHJ5IGFnYWluIChi
dXQgZG9uJ3QgYm90aGVyIGlmIHdlIHN0YXJ0ZWQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUKLSAg
ICAvLyBibG9jayByYXRoZXIgdGhhbiBhdCBhIHNlbGVjdGlvbikuCi0gICAgaWYgKHN0YXJ0ZWRX
aXRoU2VsZWN0aW9uICYmICFtaXNzcGVsbGVkV29yZCAmJiAhYmFkR3JhbW1hclBocmFzZSkgewot
ICAgICAgICBzcGVsbGluZ1NlYXJjaFJhbmdlLT5zZXRTdGFydCh0b3BOb2RlLCAwLCBlYyk7Ci0g
ICAgICAgIC8vIGdvaW5nIHVudGlsIHRoZSBlbmQgb2YgdGhlIHZlcnkgZmlyc3QgY2h1bmsgd2Ug
dGVzdGVkIGlzIGZhciBlbm91Z2gKLSAgICAgICAgc3BlbGxpbmdTZWFyY2hSYW5nZS0+c2V0RW5k
KHNlYXJjaEVuZE5vZGVBZnRlcldyYXAsIHNlYXJjaEVuZE9mZnNldEFmdGVyV3JhcCwgZWMpOwot
ICAgICAgICAKLSNpZiBVU0UoVU5JRklFRF9URVhUX0NIRUNLSU5HKQorICAgIGlmICh1bmlmaWVk
VGV4dENoZWNrZXJFbmFibGVkKCkpIHsKICAgICAgICAgZ3JhbW1hclNlYXJjaFJhbmdlID0gc3Bl
bGxpbmdTZWFyY2hSYW5nZS0+Y2xvbmVSYW5nZShlYyk7CiAgICAgICAgIGZvdW5kSXRlbSA9IFRl
eHRDaGVja2luZ0hlbHBlcihjbGllbnQoKSwgc3BlbGxpbmdTZWFyY2hSYW5nZSkuZmluZEZpcnN0
TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIoaXNHcmFtbWFyQ2hlY2tpbmdFbmFibGVkKCksIGlzU3Bl
bGxpbmcsIGZvdW5kT2Zmc2V0LCBncmFtbWFyRGV0YWlsKTsKICAgICAgICAgaWYgKGlzU3BlbGxp
bmcpIHsKQEAgLTE3MjMsNyArMTY4OSw3IEBAIHZvaWQgRWRpdG9yOjphZHZhbmNlVG9OZXh0TWlz
c3BlbGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbikKICAgICAgICAgICAgIGJhZEdyYW1t
YXJQaHJhc2UgPSBmb3VuZEl0ZW07CiAgICAgICAgICAgICBncmFtbWFyUGhyYXNlT2Zmc2V0ID0g
Zm91bmRPZmZzZXQ7CiAgICAgICAgIH0KLSNlbHNlCisgICAgfSBlbHNlIHsKICAgICAgICAgbWlz
c3BlbGxlZFdvcmQgPSBUZXh0Q2hlY2tpbmdIZWxwZXIoY2xpZW50KCksIHNwZWxsaW5nU2VhcmNo
UmFuZ2UpLmZpbmRGaXJzdE1pc3NwZWxsaW5nKG1pc3NwZWxsaW5nT2Zmc2V0LCBmYWxzZSwgZmly
c3RNaXNzcGVsbGluZ1JhbmdlKTsKIAogI2lmIFVTRShHUkFNTUFSX0NIRUNLSU5HKQpAQCAtMTcz
NCwxMSArMTcwMCw0NSBAQCB2b2lkIEVkaXRvcjo6YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJv
b2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pCiAgICAgICAgICAgICBjaGFycy5hZHZhbmNlKG1pc3Nw
ZWxsaW5nT2Zmc2V0KTsKICAgICAgICAgICAgIGdyYW1tYXJTZWFyY2hSYW5nZS0+c2V0RW5kKGNo
YXJzLnJhbmdlKCktPnN0YXJ0Q29udGFpbmVyKGVjKSwgY2hhcnMucmFuZ2UoKS0+c3RhcnRPZmZz
ZXQoZWMpLCBlYyk7CiAgICAgICAgIH0KLQorICAgIAogICAgICAgICBpZiAoaXNHcmFtbWFyQ2hl
Y2tpbmdFbmFibGVkKCkpCiAgICAgICAgICAgICBiYWRHcmFtbWFyUGhyYXNlID0gVGV4dENoZWNr
aW5nSGVscGVyKGNsaWVudCgpLCBncmFtbWFyU2VhcmNoUmFuZ2UpLmZpbmRGaXJzdEJhZEdyYW1t
YXIoZ3JhbW1hckRldGFpbCwgZ3JhbW1hclBocmFzZU9mZnNldCwgZmFsc2UpOwogI2VuZGlmCisg
ICAgfQorICAgIAorICAgIC8vIElmIHdlIGZvdW5kIG5laXRoZXIgYmFkIGdyYW1tYXIgbm9yIGEg
bWlzc3BlbGxlZCB3b3JkLCB3cmFwIGFuZCB0cnkgYWdhaW4gKGJ1dCBkb24ndCBib3RoZXIgaWYg
d2Ugc3RhcnRlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZQorICAgIC8vIGJsb2NrIHJhdGhlciB0
aGFuIGF0IGEgc2VsZWN0aW9uKS4KKyAgICBpZiAoc3RhcnRlZFdpdGhTZWxlY3Rpb24gJiYgIW1p
c3NwZWxsZWRXb3JkICYmICFiYWRHcmFtbWFyUGhyYXNlKSB7CisgICAgICAgIHNwZWxsaW5nU2Vh
cmNoUmFuZ2UtPnNldFN0YXJ0KHRvcE5vZGUsIDAsIGVjKTsKKyAgICAgICAgLy8gZ29pbmcgdW50
aWwgdGhlIGVuZCBvZiB0aGUgdmVyeSBmaXJzdCBjaHVuayB3ZSB0ZXN0ZWQgaXMgZmFyIGVub3Vn
aAorICAgICAgICBzcGVsbGluZ1NlYXJjaFJhbmdlLT5zZXRFbmQoc2VhcmNoRW5kTm9kZUFmdGVy
V3JhcCwgc2VhcmNoRW5kT2Zmc2V0QWZ0ZXJXcmFwLCBlYyk7CisgICAgICAgIAorICAgICAgICBp
ZiAodW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCgpKSB7CisgICAgICAgICAgICBncmFtbWFyU2Vh
cmNoUmFuZ2UgPSBzcGVsbGluZ1NlYXJjaFJhbmdlLT5jbG9uZVJhbmdlKGVjKTsKKyAgICAgICAg
ICAgIGZvdW5kSXRlbSA9IFRleHRDaGVja2luZ0hlbHBlcihjbGllbnQoKSwgc3BlbGxpbmdTZWFy
Y2hSYW5nZSkuZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIoaXNHcmFtbWFyQ2hlY2tp
bmdFbmFibGVkKCksIGlzU3BlbGxpbmcsIGZvdW5kT2Zmc2V0LCBncmFtbWFyRGV0YWlsKTsKKyAg
ICAgICAgICAgIGlmIChpc1NwZWxsaW5nKSB7CisgICAgICAgICAgICAgICAgbWlzc3BlbGxlZFdv
cmQgPSBmb3VuZEl0ZW07CisgICAgICAgICAgICAgICAgbWlzc3BlbGxpbmdPZmZzZXQgPSBmb3Vu
ZE9mZnNldDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgYmFkR3JhbW1h
clBocmFzZSA9IGZvdW5kSXRlbTsKKyAgICAgICAgICAgICAgICBncmFtbWFyUGhyYXNlT2Zmc2V0
ID0gZm91bmRPZmZzZXQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICBtaXNzcGVsbGVkV29yZCA9IFRleHRDaGVja2luZ0hlbHBlcihjbGllbnQoKSwgc3BlbGxp
bmdTZWFyY2hSYW5nZSkuZmluZEZpcnN0TWlzc3BlbGxpbmcobWlzc3BlbGxpbmdPZmZzZXQsIGZh
bHNlLCBmaXJzdE1pc3NwZWxsaW5nUmFuZ2UpOworCisjaWYgVVNFKEdSQU1NQVJfQ0hFQ0tJTkcp
CisgICAgICAgICAgICBncmFtbWFyU2VhcmNoUmFuZ2UgPSBzcGVsbGluZ1NlYXJjaFJhbmdlLT5j
bG9uZVJhbmdlKGVjKTsKKyAgICAgICAgICAgIGlmICghbWlzc3BlbGxlZFdvcmQuaXNFbXB0eSgp
KSB7CisgICAgICAgICAgICAgICAgLy8gU3RvcCBsb29raW5nIGF0IHN0YXJ0IG9mIG5leHQgbWlz
c3BlbGxlZCB3b3JkCisgICAgICAgICAgICAgICAgQ2hhcmFjdGVySXRlcmF0b3IgY2hhcnMoZ3Jh
bW1hclNlYXJjaFJhbmdlLmdldCgpKTsKKyAgICAgICAgICAgICAgICBjaGFycy5hZHZhbmNlKG1p
c3NwZWxsaW5nT2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBncmFtbWFyU2VhcmNoUmFuZ2UtPnNl
dEVuZChjaGFycy5yYW5nZSgpLT5zdGFydENvbnRhaW5lcihlYyksIGNoYXJzLnJhbmdlKCktPnN0
YXJ0T2Zmc2V0KGVjKSwgZWMpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoaXNH
cmFtbWFyQ2hlY2tpbmdFbmFibGVkKCkpCisgICAgICAgICAgICAgICAgYmFkR3JhbW1hclBocmFz
ZSA9IFRleHRDaGVja2luZ0hlbHBlcihjbGllbnQoKSwgZ3JhbW1hclNlYXJjaFJhbmdlKS5maW5k
Rmlyc3RCYWRHcmFtbWFyKGdyYW1tYXJEZXRhaWwsIGdyYW1tYXJQaHJhc2VPZmZzZXQsIGZhbHNl
KTsKICNlbmRpZgorICAgICAgICB9CiAgICAgfQogICAgIAogICAgIGlmICghYmFkR3JhbW1hclBo
cmFzZS5pc0VtcHR5KCkpIHsKQEAgLTE4MzgsMTIgKzE4MzgsMTMgQEAgVmVjdG9yPFN0cmluZz4g
RWRpdG9yOjpndWVzc2VzRm9yTWlzc3BlbGxlZFNlbGVjdGlvbigpCiAKIFZlY3RvcjxTdHJpbmc+
IEVkaXRvcjo6Z3Vlc3Nlc0Zvck1pc3NwZWxsZWRPclVuZ3JhbW1hdGljYWxTZWxlY3Rpb24oYm9v
bCYgbWlzc3BlbGxlZCwgYm9vbCYgdW5ncmFtbWF0aWNhbCkKIHsKLSNpZiBVU0UoVU5JRklFRF9U
RVhUX0NIRUNLSU5HKQotICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBmcmFtZSgpLT5zZWxlY3Rp
b24oKS0+dG9Ob3JtYWxpemVkUmFuZ2UoKTsKLSAgICBpZiAoIXJhbmdlKQotICAgICAgICByZXR1
cm4gVmVjdG9yPFN0cmluZz4oKTsKLSAgICByZXR1cm4gVGV4dENoZWNraW5nSGVscGVyKGNsaWVu
dCgpLCByYW5nZSkuZ3Vlc3Nlc0Zvck1pc3NwZWxsZWRPclVuZ3JhbW1hdGljYWxSYW5nZShpc0dy
YW1tYXJDaGVja2luZ0VuYWJsZWQoKSwgbWlzc3BlbGxlZCwgdW5ncmFtbWF0aWNhbCk7Ci0jZWxz
ZQorICAgIGlmICh1bmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKCkpIHsKKyAgICAgICAgUmVmUHRy
PFJhbmdlPiByYW5nZSA9IGZyYW1lKCktPnNlbGVjdGlvbigpLT50b05vcm1hbGl6ZWRSYW5nZSgp
OworICAgICAgICBpZiAoIXJhbmdlKQorICAgICAgICAgICAgcmV0dXJuIFZlY3RvcjxTdHJpbmc+
KCk7CisgICAgICAgIHJldHVybiBUZXh0Q2hlY2tpbmdIZWxwZXIoY2xpZW50KCksIHJhbmdlKS5n
dWVzc2VzRm9yTWlzc3BlbGxlZE9yVW5ncmFtbWF0aWNhbFJhbmdlKGlzR3JhbW1hckNoZWNraW5n
RW5hYmxlZCgpLCBtaXNzcGVsbGVkLCB1bmdyYW1tYXRpY2FsKTsKKyAgICB9CisKICAgICBtaXNz
cGVsbGVkID0gaXNTZWxlY3Rpb25NaXNzcGVsbGVkKCk7CiAgICAgaWYgKG1pc3NwZWxsZWQpIHsK
ICAgICAgICAgdW5ncmFtbWF0aWNhbCA9IGZhbHNlOwpAQCAtMTg1NSw3ICsxODU2LDYgQEAgVmVj
dG9yPFN0cmluZz4gRWRpdG9yOjpndWVzc2VzRm9yTWlzc3BlbGxlZE9yVW5ncmFtbWF0aWNhbFNl
bGVjdGlvbihib29sJiBtaXNzcGUKICAgICB9CiAgICAgdW5ncmFtbWF0aWNhbCA9IGZhbHNlOwog
ICAgIHJldHVybiBWZWN0b3I8U3RyaW5nPigpOwotI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yOjpz
aG93U3BlbGxpbmdHdWVzc1BhbmVsKCkKQEAgLTE4OTcsNDEgKzE4OTcsMzggQEAgdm9pZCBFZGl0
b3I6Om1hcmtNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFyKGNvbnN0IFZpc2libGVTZWxlY3Rpb24g
Jm1vdmluZ1NlbGVjdGkKIAogdm9pZCBFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBZnRlclR5cGlu
Z1RvV29yZChjb25zdCBWaXNpYmxlUG9zaXRpb24gJndvcmRTdGFydCwgY29uc3QgVmlzaWJsZVNl
bGVjdGlvbiYgc2VsZWN0aW9uQWZ0ZXJUeXBpbmcsIGJvb2wgZG9SZXBsYWNlbWVudCkKIHsKLSNp
ZiBVU0UoVU5JRklFRF9URVhUX0NIRUNLSU5HKQotICAgIG1fc3BlbGxpbmdDb3JyZWN0b3ItPmFw
cGx5UGVuZGluZ0NvcnJlY3Rpb24oc2VsZWN0aW9uQWZ0ZXJUeXBpbmcpOworICAgIGlmICh1bmlm
aWVkVGV4dENoZWNrZXJFbmFibGVkKCkpIHsKKyAgICAgICAgbV9zcGVsbGluZ0NvcnJlY3Rvci0+
YXBwbHlQZW5kaW5nQ29ycmVjdGlvbihzZWxlY3Rpb25BZnRlclR5cGluZyk7CiAKLSAgICBUZXh0
Q2hlY2tpbmdUeXBlTWFzayB0ZXh0Q2hlY2tpbmdPcHRpb25zID0gMDsKKyAgICAgICAgVGV4dENo
ZWNraW5nVHlwZU1hc2sgdGV4dENoZWNraW5nT3B0aW9ucyA9IDA7CiAKLSAgICBpZiAoaXNDb250
aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSkKLSAgICAgICAgdGV4dENoZWNraW5nT3B0aW9u
cyB8PSBUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmc7CisgICAgICAgIGlmIChpc0NvbnRpbnVvdXNT
cGVsbENoZWNraW5nRW5hYmxlZCgpKQorICAgICAgICAgICAgdGV4dENoZWNraW5nT3B0aW9ucyB8
PSBUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmc7CiAKICNpZiBVU0UoQVVUT01BVElDX1RFWFRfUkVQ
TEFDRU1FTlQpCi0gICAgaWYgKGRvUmVwbGFjZW1lbnQgCi0gICAgICAgICYmIChpc0F1dG9tYXRp
Y1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZCgpCi0gICAgICAgICAgICB8fCBpc0F1dG9tYXRpY0xp
bmtEZXRlY3Rpb25FbmFibGVkKCkKLSAgICAgICAgICAgIHx8IGlzQXV0b21hdGljRGFzaFN1YnN0
aXR1dGlvbkVuYWJsZWQoKQotICAgICAgICAgICAgfHwgaXNBdXRvbWF0aWNUZXh0UmVwbGFjZW1l
bnRFbmFibGVkKCkKLSAgICAgICAgICAgIHx8ICgodGV4dENoZWNraW5nT3B0aW9ucyAmIFRleHRD
aGVja2luZ1R5cGVTcGVsbGluZykgJiYgaXNBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFi
bGVkKCkpKSkKLSAgICAgICAgdGV4dENoZWNraW5nT3B0aW9ucyB8PSBUZXh0Q2hlY2tpbmdUeXBl
UmVwbGFjZW1lbnQ7CisgICAgICAgIGlmIChkb1JlcGxhY2VtZW50CisgICAgICAgICAgICAmJiAo
aXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQoKQorICAgICAgICAgICAgICAgIHx8
IGlzQXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQoKQorICAgICAgICAgICAgICAgIHx8IGlz
QXV0b21hdGljRGFzaFN1YnN0aXR1dGlvbkVuYWJsZWQoKQorICAgICAgICAgICAgICAgIHx8IGlz
QXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxlZCgpCisgICAgICAgICAgICAgICAgfHwgKCh0
ZXh0Q2hlY2tpbmdPcHRpb25zICYgVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nKSAmJiBpc0F1dG9t
YXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQoKSkpKQorICAgICAgICAgICAgdGV4dENoZWNr
aW5nT3B0aW9ucyB8PSBUZXh0Q2hlY2tpbmdUeXBlUmVwbGFjZW1lbnQ7CiAjZW5kaWYKLSAgICBp
ZiAoIXRleHRDaGVja2luZ09wdGlvbnMgJiAoVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nIHwgVGV4
dENoZWNraW5nVHlwZVJlcGxhY2VtZW50KSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAo
ISh0ZXh0Q2hlY2tpbmdPcHRpb25zICYgKFRleHRDaGVja2luZ1R5cGVTcGVsbGluZyB8IFRleHRD
aGVja2luZ1R5cGVSZXBsYWNlbWVudCkpKQorICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYg
KGlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgpKQotICAgICAgICB0ZXh0Q2hlY2tpbmdPcHRpb25z
IHw9IFRleHRDaGVja2luZ1R5cGVHcmFtbWFyOworICAgICAgICBpZiAoaXNHcmFtbWFyQ2hlY2tp
bmdFbmFibGVkKCkpCisgICAgICAgICAgICB0ZXh0Q2hlY2tpbmdPcHRpb25zIHw9IFRleHRDaGVj
a2luZ1R5cGVHcmFtbWFyOwogCi0gICAgVmlzaWJsZVNlbGVjdGlvbiBhZGphY2VudFdvcmRzID0g
VmlzaWJsZVNlbGVjdGlvbihzdGFydE9mV29yZCh3b3JkU3RhcnQsIExlZnRXb3JkSWZPbkJvdW5k
YXJ5KSwgZW5kT2ZXb3JkKHdvcmRTdGFydCwgUmlnaHRXb3JkSWZPbkJvdW5kYXJ5KSk7Ci0gICAg
aWYgKHRleHRDaGVja2luZ09wdGlvbnMgJiBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcikgewotICAg
ICAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGVkU2VudGVuY2UgPSBWaXNpYmxlU2VsZWN0aW9u
KHN0YXJ0T2ZTZW50ZW5jZSh3b3JkU3RhcnQpLCBlbmRPZlNlbnRlbmNlKHdvcmRTdGFydCkpOwot
ICAgICAgICBtYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKHRleHRDaGVj
a2luZ09wdGlvbnMsIGFkamFjZW50V29yZHMudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgc2Vs
ZWN0ZWRTZW50ZW5jZS50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpKTsKLSAgICB9IGVsc2Ugewot
ICAgICAgICBtYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKHRleHRDaGVj
a2luZ09wdGlvbnMsIGFkamFjZW50V29yZHMudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgYWRq
YWNlbnRXb3Jkcy50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpKTsKKyAgICAgICAgVmlzaWJsZVNl
bGVjdGlvbiBhZGphY2VudFdvcmRzID0gVmlzaWJsZVNlbGVjdGlvbihzdGFydE9mV29yZCh3b3Jk
U3RhcnQsIExlZnRXb3JkSWZPbkJvdW5kYXJ5KSwgZW5kT2ZXb3JkKHdvcmRTdGFydCwgUmlnaHRX
b3JkSWZPbkJvdW5kYXJ5KSk7CisgICAgICAgIGlmICh0ZXh0Q2hlY2tpbmdPcHRpb25zICYgVGV4
dENoZWNraW5nVHlwZUdyYW1tYXIpIHsKKyAgICAgICAgICAgIFZpc2libGVTZWxlY3Rpb24gc2Vs
ZWN0ZWRTZW50ZW5jZSA9IFZpc2libGVTZWxlY3Rpb24oc3RhcnRPZlNlbnRlbmNlKHdvcmRTdGFy
dCksIGVuZE9mU2VudGVuY2Uod29yZFN0YXJ0KSk7CisgICAgICAgICAgICBtYXJrQWxsTWlzc3Bl
bGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKHRleHRDaGVja2luZ09wdGlvbnMsIGFkamFjZW50
V29yZHMudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgc2VsZWN0ZWRTZW50ZW5jZS50b05vcm1h
bGl6ZWRSYW5nZSgpLmdldCgpKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBtYXJrQWxs
TWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKHRleHRDaGVja2luZ09wdGlvbnMsIGFk
amFjZW50V29yZHMudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgYWRqYWNlbnRXb3Jkcy50b05v
cm1hbGl6ZWRSYW5nZSgpLmdldCgpKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAotI2Vsc2UK
LSAgICBVTlVTRURfUEFSQU0oc2VsZWN0aW9uQWZ0ZXJUeXBpbmcpOwotICAgIFVOVVNFRF9QQVJB
TShkb1JlcGxhY2VtZW50KTsKLQogICAgIGlmICghaXNDb250aW51b3VzU3BlbGxDaGVja2luZ0Vu
YWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xOTcwLDcgKzE5NjcsNiBAQCB2b2lkIEVk
aXRvcjo6bWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nVG9Xb3JkKGNvbnN0IFZpc2libGVQb3Np
dGlvbiAmd29yZFN0YXJ0LAogICAgIAogICAgIC8vIENoZWNrIGdyYW1tYXIgb2YgZW50aXJlIHNl
bnRlbmNlCiAgICAgbWFya0JhZEdyYW1tYXIoVmlzaWJsZVNlbGVjdGlvbihzdGFydE9mU2VudGVu
Y2Uod29yZFN0YXJ0KSwgZW5kT2ZTZW50ZW5jZSh3b3JkU3RhcnQpKSk7Ci0jZW5kaWYKIH0KICAg
ICAKIHZvaWQgRWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzT3JCYWRHcmFtbWFyKGNvbnN0IFZpc2li
bGVTZWxlY3Rpb24mIHNlbGVjdGlvbiwgYm9vbCBjaGVja1NwZWxsaW5nLCBSZWZQdHI8UmFuZ2U+
JiBmaXJzdE1pc3NwZWxsaW5nUmFuZ2UpCkBAIC0yMDM4LDcgKzIwMzQsOCBAQCB2b2lkIEVkaXRv
cjo6bWFya0JhZEdyYW1tYXIoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKQogCiB2
b2lkIEVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhUZXh0
Q2hlY2tpbmdUeXBlTWFzayB0ZXh0Q2hlY2tpbmdPcHRpb25zLCBSYW5nZSogc3BlbGxpbmdSYW5n
ZSwgUmFuZ2UqIGdyYW1tYXJSYW5nZSkKIHsKLSNpZiBVU0UoVU5JRklFRF9URVhUX0NIRUNLSU5H
KQorICAgIEFTU0VSVCh1bmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKCkpOworCiAgICAgLy8gVGhl
cmUgc2hvdWxkbid0IGJlIHBlbmRpbmcgYXV0b2NvcnJlY3Rpb24gYXQgdGhpcyBtb21lbnQuCiAg
ICAgQVNTRVJUKCFtX3NwZWxsaW5nQ29ycmVjdG9yLT5oYXNQZW5kaW5nQ29ycmVjdGlvbigpKTsK
IApAQCAtMjIyOSwxNyArMjIyNiwxMiBAQCB2b2lkIEVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5n
c0FuZEJhZEdyYW1tYXJJblJhbmdlcyhUZXh0Q2hlY2tpbmdUeXBlTWFzayB0ZXh0QwogICAgICAg
ICAgICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShGcmFtZVNlbGVjdGlvbjo6QWx0ZXJh
dGlvbk1vdmUsIERpcmVjdGlvbkZvcndhcmQsIENoYXJhY3RlckdyYW51bGFyaXR5KTsKICAgICAg
ICAgfQogICAgIH0KLSNlbHNlCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgVU5VU0VE
X1BBUkFNKHRleHRDaGVja2luZ09wdGlvbnMpOwotICAgIFVOVVNFRF9QQVJBTShzcGVsbGluZ1Jh
bmdlKTsKLSAgICBVTlVTRURfUEFSQU0oZ3JhbW1hclJhbmdlKTsKLSNlbmRpZiAvLyBVU0UoVU5J
RklFRF9URVhUX0NIRUNLSU5HKQogfQogCiB2b2lkIEVkaXRvcjo6Y2hhbmdlQmFja1RvUmVwbGFj
ZWRTdHJpbmcoY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZykKIHsKLSNpZiBVU0UoVU5JRklF
RF9URVhUX0NIRUNLSU5HKQorICAgIEFTU0VSVCh1bmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKCkp
OworCiAgICAgaWYgKHJlcGxhY2VkU3RyaW5nLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwog
CkBAIC0yMjUzLDI4ICsyMjQ1LDI1IEBAIHZvaWQgRWRpdG9yOjpjaGFuZ2VCYWNrVG9SZXBsYWNl
ZFN0cmluZyhjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nKQogICAgIFJlZlB0cjxSYW5nZT4g
Y2hhbmdlZFJhbmdlID0gcGFyYWdyYXBoLnN1YnJhbmdlKHBhcmFncmFwaC5jaGVja2luZ1N0YXJ0
KCksIHJlcGxhY2VkU3RyaW5nLmxlbmd0aCgpKTsKICAgICBjaGFuZ2VkUmFuZ2UtPnN0YXJ0Q29u
dGFpbmVyKCktPmRvY3VtZW50KCktPm1hcmtlcnMoKS0+YWRkTWFya2VyKGNoYW5nZWRSYW5nZS5n
ZXQoKSwgRG9jdW1lbnRNYXJrZXI6OlJlcGxhY2VtZW50LCBTdHJpbmcoKSk7CiAgICAgbV9zcGVs
bGluZ0NvcnJlY3Rvci0+bWFya1JldmVyc2VkKGNoYW5nZWRSYW5nZS5nZXQoKSk7Ci0jZWxzZQot
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIFVOVVNFRF9QQVJBTShyZXBsYWNlZFN0cmlu
Zyk7Ci0jZW5kaWYgLy8gVVNFKFVOSUZJRURfVEVYVF9DSEVDS0lORykKIH0KIAogCiB2b2lkIEVk
aXRvcjo6bWFya01pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXIoY29uc3QgVmlzaWJsZVNlbGVjdGlv
biYgc3BlbGxpbmdTZWxlY3Rpb24sIGJvb2wgbWFya0dyYW1tYXIsIGNvbnN0IFZpc2libGVTZWxl
Y3Rpb24mIGdyYW1tYXJTZWxlY3Rpb24pCiB7Ci0jaWYgVVNFKFVOSUZJRURfVEVYVF9DSEVDS0lO
RykKLSAgICBpZiAoIWlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkpCisgICAgaWYg
KHVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQoKSkgeworICAgICAgICBpZiAoIWlzQ29udGludW91
c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIFRl
eHRDaGVja2luZ1R5cGVNYXNrIHRleHRDaGVja2luZ09wdGlvbnMgPSBUZXh0Q2hlY2tpbmdUeXBl
U3BlbGxpbmcgfCBUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbjsKKyAgICAgICAgaWYgKG1hcmtH
cmFtbWFyICYmIGlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgpKQorICAgICAgICAgICAgdGV4dENo
ZWNraW5nT3B0aW9ucyB8PSBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcjsKKyAgICAgICAgbWFya0Fs
bE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyh0ZXh0Q2hlY2tpbmdPcHRpb25zLCBz
cGVsbGluZ1NlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBncmFtbWFyU2VsZWN0
aW9uLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCkpOwogICAgICAgICByZXR1cm47Ci0gICAgVGV4
dENoZWNraW5nVHlwZU1hc2sgdGV4dENoZWNraW5nT3B0aW9ucyA9IFRleHRDaGVja2luZ1R5cGVT
cGVsbGluZyB8IFRleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uOwotICAgIGlmIChtYXJrR3JhbW1h
ciAmJiBpc0dyYW1tYXJDaGVja2luZ0VuYWJsZWQoKSkKLSAgICAgICAgdGV4dENoZWNraW5nT3B0
aW9ucyB8PSBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcjsKLSAgICBtYXJrQWxsTWlzc3BlbGxpbmdz
QW5kQmFkR3JhbW1hckluUmFuZ2VzKHRleHRDaGVja2luZ09wdGlvbnMsIHNwZWxsaW5nU2VsZWN0
aW9uLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIGdyYW1tYXJTZWxlY3Rpb24udG9Ob3JtYWxp
emVkUmFuZ2UoKS5nZXQoKSk7Ci0jZWxzZQorICAgIH0KKwogICAgIFJlZlB0cjxSYW5nZT4gZmly
c3RNaXNzcGVsbGluZ1JhbmdlOwogICAgIG1hcmtNaXNzcGVsbGluZ3Moc3BlbGxpbmdTZWxlY3Rp
b24sIGZpcnN0TWlzc3BlbGxpbmdSYW5nZSk7CiAgICAgaWYgKG1hcmtHcmFtbWFyKQogICAgICAg
ICBtYXJrQmFkR3JhbW1hcihncmFtbWFyU2VsZWN0aW9uKTsKLSNlbmRpZgogfQogCiB2b2lkIEVk
aXRvcjo6dW5hcHBsaWVkU3BlbGxDb3JyZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNl
bGVjdGlvbk9mQ29ycmVjdGVkLCBjb25zdCBTdHJpbmcmIGNvcnJlY3RlZCwgY29uc3QgU3RyaW5n
JiBjb3JyZWN0aW9uKQpAQCAtMzE2Myw0ICszMTUyLDkgQEAgdm9pZCBFZGl0b3I6OmRldmljZVNj
YWxlRmFjdG9yQ2hhbmdlZCgpCiAgICAgbV9kZWxldGVCdXR0b25Db250cm9sbGVyLT5kZXZpY2VT
Y2FsZUZhY3RvckNoYW5nZWQoKTsKIH0KIAorYm9vbCBFZGl0b3I6OnVuaWZpZWRUZXh0Q2hlY2tl
ckVuYWJsZWQoKSBjb25zdAoreworICAgIHJldHVybiBXZWJDb3JlOjp1bmlmaWVkVGV4dENoZWNr
ZXJFbmFibGVkKG1fZnJhbWUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuaAppbmRleCBlMjg5Y2ZmNzUwNTI5ZmIyNWNkNjQxOGQ0YjJjNjU0Y2M1OGU2
OWNmLi43N2NmNDFlNmZmMWExODg1NDNmY2ZkMzY4NDBlMmM4YzcxYWFiYjJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmgKQEAgLTQyMiw2ICs0MjIsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgY2hh
bmdlU2VsZWN0aW9uQWZ0ZXJDb21tYW5kKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG5ld1NlbGVj
dGlvbiwgYm9vbCBjbG9zZVR5cGluZywgYm9vbCBjbGVhclR5cGluZ1N0eWxlKTsKIAogICAgIE5v
ZGUqIGZpbmRFdmVudFRhcmdldEZyb21TZWxlY3Rpb24oKSBjb25zdDsKKworICAgIGJvb2wgdW5p
ZmllZFRleHRDaGVja2VyRW5hYmxlZCgpIGNvbnN0OwogfTsKIAogaW5saW5lIHZvaWQgRWRpdG9y
OjpzZXRTdGFydE5ld0tpbGxSaW5nU2VxdWVuY2UoYm9vbCBmbGFnKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCmluZGV4IGNmYmFlZDMzYTA2Y2RmM2Fm
MjFkNGIyMGJmYjIxY2EwZGQ2Y2IyZWIuLjA0NzY5MWU1YmEwZmI2OTQwMDY3MzEwZjNiMGZhM2Qz
MzM4YjJkODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5n
SGVscGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBl
ci5jcHAKQEAgLTI5LDcgKzI5LDkgQEAKIAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVk
ZSAiRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNs
dWRlICJSYW5nZS5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiVGV4dENoZWNr
ZXJDbGllbnQuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJWaXNpYmxl
UG9zaXRpb24uaCIKQEAgLTIyNSw3ICsyMjcsOSBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVy
OjpmaW5kRmlyc3RNaXNzcGVsbGluZyhpbnQmIGZpcnN0TWlzc3BlbGxpbmdPZmZzZXQsIGJvbwog
CiBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3Jh
bW1hcihib29sIGNoZWNrR3JhbW1hciwgYm9vbCYgb3V0SXNTcGVsbGluZywgaW50JiBvdXRGaXJz
dEZvdW5kT2Zmc2V0LCBHcmFtbWFyRGV0YWlsJiBvdXRHcmFtbWFyRGV0YWlsKQogewotI2lmIFVT
RShVTklGSUVEX1RFWFRfQ0hFQ0tJTkcpCisgICAgaWYgKCF1bmlmaWVkVGV4dENoZWNrZXJFbmFi
bGVkKCkpCisgICAgICAgIHJldHVybiAiIjsKKwogICAgIFN0cmluZyBmaXJzdEZvdW5kSXRlbTsK
ICAgICBTdHJpbmcgbWlzc3BlbGxlZFdvcmQ7CiAgICAgU3RyaW5nIGJhZEdyYW1tYXJQaHJhc2U7
CkBAIC0zNDQsMTQgKzM0OCw2IEBAIFN0cmluZyBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJz
dE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFyKGJvb2wgY2hlY2tHcmFtbWFyLCBiCiAgICAgICAgIHRv
dGFsTGVuZ3RoUHJvY2Vzc2VkICs9IGN1cnJlbnRMZW5ndGg7CiAgICAgfQogICAgIHJldHVybiBm
aXJzdEZvdW5kSXRlbTsKLSNlbHNlCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgVU5V
U0VEX1BBUkFNKGNoZWNrR3JhbW1hcik7Ci0gICAgVU5VU0VEX1BBUkFNKG91dElzU3BlbGxpbmcp
OwotICAgIFVOVVNFRF9QQVJBTShvdXRGaXJzdEZvdW5kT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFS
QU0ob3V0R3JhbW1hckRldGFpbCk7Ci0gICAgcmV0dXJuICIiOwotI2VuZGlmIC8vIFVTRShVTklG
SUVEX1RFWFRfQ0hFQ0tJTkcpCiB9CiAKIGludCBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJz
dEdyYW1tYXJEZXRhaWwoY29uc3QgVmVjdG9yPEdyYW1tYXJEZXRhaWw+JiBncmFtbWFyRGV0YWls
cywgaW50IGJhZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiwgaW50IC8qYmFkR3JhbW1hclBocmFzZUxl
bmd0aCovLCBpbnQgc3RhcnRPZmZzZXQsIGludCBlbmRPZmZzZXQsIGJvb2wgbWFya0FsbCkKQEAg
LTUxMCw3ICs1MDYsOSBAQCBib29sIFRleHRDaGVja2luZ0hlbHBlcjo6aXNVbmdyYW1tYXRpY2Fs
KFZlY3RvcjxTdHJpbmc+JiBndWVzc2VzVmVjdG9yKSBjb25zdAogCiBWZWN0b3I8U3RyaW5nPiBU
ZXh0Q2hlY2tpbmdIZWxwZXI6Omd1ZXNzZXNGb3JNaXNzcGVsbGVkT3JVbmdyYW1tYXRpY2FsUmFu
Z2UoYm9vbCBjaGVja0dyYW1tYXIsIGJvb2wmIG1pc3NwZWxsZWQsIGJvb2wmIHVuZ3JhbW1hdGlj
YWwpIGNvbnN0CiB7Ci0jaWYgVVNFKFVOSUZJRURfVEVYVF9DSEVDS0lORykKKyAgICBpZiAoIXVu
aWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuIFZlY3RvcjxTdHJpbmc+
KCk7CisKICAgICBWZWN0b3I8U3RyaW5nPiBndWVzc2VzOwogICAgIEV4Y2VwdGlvbkNvZGUgZWM7
CiAgICAgbWlzc3BlbGxlZCA9IGZhbHNlOwpAQCAtNTYyLDEzICs1NjAsNiBAQCBWZWN0b3I8U3Ry
aW5nPiBUZXh0Q2hlY2tpbmdIZWxwZXI6Omd1ZXNzZXNGb3JNaXNzcGVsbGVkT3JVbmdyYW1tYXRp
Y2FsUmFuZ2UoYm9vbAogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBndWVzc2VzOwotI2Vs
c2UKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBVTlVTRURfUEFSQU0oY2hlY2tHcmFt
bWFyKTsKLSAgICBVTlVTRURfUEFSQU0obWlzc3BlbGxlZCk7Ci0gICAgVU5VU0VEX1BBUkFNKHVu
Z3JhbW1hdGljYWwpOwotICAgIHJldHVybiBWZWN0b3I8U3RyaW5nPigpOwotI2VuZGlmIC8vIFVT
RShVTklGSUVEX1RFWFRfQ0hFQ0tJTkcpCiB9CiAKIApAQCAtNTkwLDYgKzU4MSwxOCBAQCB2b2lk
IFRleHRDaGVja2luZ0hlbHBlcjo6bWFya0FsbEJhZEdyYW1tYXIoKQogICAgIGZpbmRGaXJzdEJh
ZEdyYW1tYXIoaWdub3JlZEdyYW1tYXJEZXRhaWwsIGlnbm9yZWRPZmZzZXQsIHRydWUpOwogfQog
Citib29sIFRleHRDaGVja2luZ0hlbHBlcjo6dW5pZmllZFRleHRDaGVja2VyRW5hYmxlZCgpIGNv
bnN0Cit7CisgICAgaWYgKCFtX3JhbmdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBE
b2N1bWVudCogZG9jID0gbV9yYW5nZS0+b3duZXJEb2N1bWVudCgpOworICAgIGlmICghZG9jKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gV2ViQ29yZTo6dW5pZmllZFRleHRD
aGVja2VyRW5hYmxlZChkb2MtPmZyYW1lKCkpOworfQorCiB2b2lkIGNoZWNrVGV4dE9mUGFyYWdy
YXBoKFRleHRDaGVja2VyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVu
Z3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0Q2hlY2tpbmdUeXBlTWFzayBjaGVj
a2luZ1R5cGVzLCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0cykKIHsKQEAgLTYw
Nyw0ICs2MTAsMTYgQEAgdm9pZCBjaGVja1RleHRPZlBhcmFncmFwaChUZXh0Q2hlY2tlckNsaWVu
dCogY2xpZW50LCBjb25zdCBVQ2hhciogdGV4dCwgaW50IGxlbmcKICNlbmRpZgogfQogCitib29s
IHVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQoY29uc3QgRnJhbWUqIGZyYW1lKQoreworICAgIGlm
ICghZnJhbWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGNvbnN0IFNldHRpbmdzKiBz
ZXR0aW5ncyA9IGZyYW1lLT5zZXR0aW5ncygpOworICAgIGlmICghc2V0dGluZ3MpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBzZXR0aW5ncy0+dW5pZmllZFRleHRDaGVja2Vy
RW5hYmxlZCgpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Rl
eHRDaGVja2luZ0hlbHBlci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdI
ZWxwZXIuaAppbmRleCA0MjQwZTczNTNlZWM3MDhjZGE3MzNhNTM2NTRkNjUyMTM5Yjk0NDVjLi4w
MWM4NGNmYjJiZDM2Y2VhNTZkN2NiNGJmZTA5OTIxYzQzMmY2YmFjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmgKQEAgLTkwLDExICs5MCwxNSBAQCBwdWJs
aWM6CiBwcml2YXRlOgogICAgIEVkaXRvckNsaWVudCogbV9jbGllbnQ7CiAgICAgUmVmUHRyPFJh
bmdlPiBtX3JhbmdlOworCisgICAgYm9vbCB1bmlmaWVkVGV4dENoZWNrZXJFbmFibGVkKCkgY29u
c3Q7CiB9OwogCiB2b2lkIGNoZWNrVGV4dE9mUGFyYWdyYXBoKFRleHRDaGVja2VyQ2xpZW50Kiwg
Y29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgsCiAgICAgVGV4dENoZWNraW5nVHlwZU1hc2sg
Y2hlY2tpbmdUeXBlcywgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpOwogCiti
b29sIHVuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQoY29uc3QgRnJhbWUqKTsKKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVGV4dENoZWNraW5nSGVscGVyX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZXR0aW5ncy5jcHAKaW5kZXggZTE5M2QyN2Q3YTA5Zjk5OTIzM2YyOTRiODE0YmMyOTBkNWY2
M2MyYS4uYzUzNDEzZTRiNTdiMTBjNDE2YTQ2NmE5YTNmMjYwODA2MjkzODU2ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9TZXR0aW5ncy5jcHAKQEAgLTE5Niw2ICsxOTYsMTEgQEAgU2V0dGluZ3M6OlNldHRpbmdz
KFBhZ2UqIHBhZ2UpCiAgICAgLCBtX2Z1bGxTY3JlZW5BUElFbmFibGVkKGZhbHNlKQogI2VuZGlm
CiAgICAgLCBtX2FzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGZhbHNlKQorI2lmIFVT
RShVTklGSUVEX1RFWFRfQ0hFQ0tJTkcpCisgICAgLCBtX3VuaWZpZWRUZXh0Q2hlY2tlckVuYWJs
ZWQodHJ1ZSkKKyNlbHNlCisgICAgLCBtX3VuaWZpZWRUZXh0Q2hlY2tlckVuYWJsZWQoZmFsc2Up
CisjZW5kaWYKICAgICAsIG1fbWVtb3J5SW5mb0VuYWJsZWQoZmFsc2UpCiAgICAgLCBtX2ludGVy
YWN0aXZlRm9ybVZhbGlkYXRpb24oZmFsc2UpCiAgICAgLCBtX3VzZVByZUhUTUw1UGFyc2VyUXVp
cmtzKGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCmluZGV4IDU3ZWUyNmRlYWQyYzJiYWZmNmU2
ZWM5MDZhMTQyZmI1M2JiN2JlZDkuLjEwNzNiNDE3MDA2YTRlNjVmOTJkYTI0MWE2ZjdmYmViYzRi
NDA0ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKQEAgLTM4MSw2ICszODEsOSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0Vu
YWJsZWQoYm9vbCBmbGFnKSB7IG1fYXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQgPSBm
bGFnOyB9CiAgICAgICAgIGJvb2wgYXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSBj
b25zdCAgeyByZXR1cm4gbV9hc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZDsgfQogCisg
ICAgICAgIHZvaWQgc2V0VW5pZmllZFRleHRDaGVja2VyRW5hYmxlZChib29sIGZsYWcpIHsgbV91
bmlmaWVkVGV4dENoZWNrZXJFbmFibGVkID0gZmxhZzsgfQorICAgICAgICBib29sIHVuaWZpZWRU
ZXh0Q2hlY2tlckVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3VuaWZpZWRUZXh0Q2hlY2tlckVu
YWJsZWQ7IH0KKwogICAgICAgICB2b2lkIHNldE1lbW9yeUluZm9FbmFibGVkKGJvb2wgZmxhZykg
eyBtX21lbW9yeUluZm9FbmFibGVkID0gZmxhZzsgfQogICAgICAgICBib29sIG1lbW9yeUluZm9F
bmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9tZW1vcnlJbmZvRW5hYmxlZDsgfQogCkBAIC01Njgs
NiArNTcxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIG1fZnVsbFNjcmVl
bkFQSUVuYWJsZWQgOiAxOwogI2VuZGlmCiAgICAgICAgIGJvb2wgbV9hc3luY2hyb25vdXNTcGVs
bENoZWNraW5nRW5hYmxlZDogMTsKKyAgICAgICAgYm9vbCBtX3VuaWZpZWRUZXh0Q2hlY2tlckVu
YWJsZWQ6IDE7CiAgICAgICAgIGJvb2wgbV9tZW1vcnlJbmZvRW5hYmxlZDogMTsKICAgICAgICAg
Ym9vbCBtX2ludGVyYWN0aXZlRm9ybVZhbGlkYXRpb246IDE7CiAgICAgICAgIGJvb2wgbV91c2VQ
cmVIVE1MNVBhcnNlclF1aXJrczogMTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>