<?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>42806</bug_id>
          
          <creation_ts>2010-07-21 23:08:23 -0700</creation_ts>
          <short_desc>Crash when CSS selector is very long.</short_desc>
          <delta_ts>2022-07-23 12:58:21 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>43783</dependson>
    
    <dependson>43784</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Hayato Ito">hayato</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ahmad.saleem792</cc>
    
    <cc>ap</cc>
    
    <cc>bdakin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>hayato</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>254665</commentid>
    <comment_count>0</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2010-07-21 23:08:23 -0700</bug_when>
    <thetext>Take a look at the attached html. That would cause stack overflow like:


#0  0x00007ffff5b204a2 in WebCore::CSSSelector::hasTag (this=Cannot access memory at address 0x7fffff5aeff8
) at ../../../../webkit3/WebKit/WebCore/css/CSSSelector.h:238
#1  0x00007ffff5b29613 in WebCore::CSSStyleSelector::SelectorChecker::checkOneSelector (this=0xdc03f0, sel=0x2045f50, e=0x3ee6cf0, selectorAttrs=0xdc04a0, dynamicPseudo=@0xdc03e8, isSubSelector=false, elementStyle=0x0, elementParentStyle=0x0) at ../../../../webkit3/WebKit/WebCore/css/CSSStyleSelector.cpp:2078
#2  0x00007ffff5b28acb in WebCore::CSSStyleSelector::SelectorChecker::checkSelector (this=0xdc03f0, sel=0x2045f50, e=0x3ee6cf0, selectorAttrs=0xdc04a0, dynamicPseudo=@0xdc03e8, isSubSelector=false, encounteredLink=false, elementStyle=0x0, elementParentStyle=0x0) at ../../../../webkit3/WebKit/WebCore/css/CSSStyleSelector.cpp:1911
#3  0x00007ffff5b28e6a in WebCore::CSSStyleSelector::SelectorChecker::checkSelector (this=0xdc03f0, sel=0x2045f50, e=0x3ee6cf0, selectorAttrs=0xdc04a0, dynamicPseudo=@0xdc03e8, isSubSelector=false, encounteredLink=false, elementStyle=0x0, elementParentStyle=0x0) at ../../../../webkit3/WebKit/WebCore/css/CSSStyleSelector.cpp:1972
#4  0x00007ffff5b28e6a in WebCore::CSSStyleSelector::SelectorChecker::checkSelector (this=0xdc03f0, sel=0x2045fc0, e=0x3ee6f30, selectorAttrs=0xdc04a0, dynamicPseudo=@0xdc03e8, isSubSelector=false, encounteredLink=false, elementStyle=0x0, elementParentStyle=0x0) at ../../../../webkit3/WebKit/WebCore/css/CSSStyleSelector.cpp:1972</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>254666</commentid>
    <comment_count>1</comment_count>
      <attachid>62265</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2010-07-21 23:10:03 -0700</bug_when>
    <thetext>Created attachment 62265
That would cause stack overflow</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>254667</commentid>
    <comment_count>2</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2010-07-21 23:12:37 -0700</bug_when>
    <thetext>https://bugs.webkit.org/show_bug.cgi?id=41129 is a similar bug which was already fixed.

We have to use an iterative approach instead of recursive one in order to avoid stack overflow.

I found the following functions use recursion:

- CSSSelector::specifity()
- CSSStyleSelector::SelectorChecker::checkSelector()

We need to investige further. There might be other functions which use recursion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>254669</commentid>
    <comment_count>3</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2010-07-21 23:46:01 -0700</bug_when>
    <thetext>&lt;rdar://problem/8220988&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259924</commentid>
    <comment_count>4</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2010-08-04 01:50:42 -0700</bug_when>
    <thetext>Is there anyone working on fix this? If no one is working, I&apos;ll investigate the issue further.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262554</commentid>
    <comment_count>5</comment_count>
      <attachid>63988</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2010-08-10 01:42:09 -0700</bug_when>
    <thetext>Created attachment 63988
make-checkSelector-iterative</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262558</commentid>
    <comment_count>6</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2010-08-10 02:00:26 -0700</bug_when>
    <thetext>I&apos;ve made CSSStyleSelector::SelectorChecker::checkSelector() iterative to avoid stack overflow.
To achieve it, I have to maintain CallStack manually.

Hi reviewers,

I am afraid the code became unintuitive. But I guess it is inevitable. If you have any ideas to make it clean and intuitive, please let me know.

I also have a concern about performance. Is there any standard way to make sure a performance degradation won&apos;t happen by this change?


I&apos;ll fix CSSSelector:specifity() in another patch later. That might be an pretty easy task.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262560</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-10 02:02:37 -0700</bug_when>
    <thetext>Attachment 63988 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/css/CSSStyleSelector.cpp:1999:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
WebCore/css/CSSStyleSelector.cpp:2092:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
Total errors found: 2 in 6 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>262612</commentid>
    <comment_count>8</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2010-08-10 04:11:35 -0700</bug_when>
    <thetext>I&apos;ve canceled the review request.
It might be better to make a couple of bugs to fix them separately step by step.

I&apos;d like to use this bug as a master bug to manage them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262633</commentid>
    <comment_count>9</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2010-08-10 05:37:59 -0700</bug_when>
    <thetext>I&apos;ve filed the bugs:
- https://bugs.webkit.org/show_bug.cgi?id=43783
- https://bugs.webkit.org/show_bug.cgi?id=43784</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296604</commentid>
    <comment_count>10</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2010-10-19 19:32:36 -0700</bug_when>
    <thetext>I&apos;ll close this bug because all sub bugs are now fixed.
If you find any other cases which causes a crash, please reopen this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297791</commentid>
    <comment_count>11</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2010-10-21 19:25:11 -0700</bug_when>
    <thetext>https://bugs.webkit.org/show_bug.cgi?id=43783 is reopened. So this master bug should be also reopened.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1886214</commentid>
    <comment_count>12</comment_count>
    <who name="Ahmad Saleem">ahmad.saleem792</who>
    <bug_when>2022-07-23 07:53:35 -0700</bug_when>
    <thetext>This test case is still crashing tab in Safari 15.6 on macOS 12.5 and after trying multiple refresh, you will notice that the banner &quot;This web page...&quot; starts to render slowly like 15 fps and does not show quickly before change the error to page body like &quot;A problem ...&quot;.

I think it might be good test case to improve &quot;banner&quot; loading performance of tab crash.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>62265</attachid>
            <date>2010-07-21 23:10:03 -0700</date>
            <delta_ts>2010-07-21 23:10:03 -0700</delta_ts>
            <desc>That would cause stack overflow</desc>
            <filename>long-css-selector.html</filename>
            <type>text/html</type>
            <size>799</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPgo8L2hlYWQ+Cjxib2R5Pgo8c2NyaXB0PgpmdW5jdGlvbiBnZW5lcmF0ZV9k
ZWVwbHlfbmVzdGVkX3NlbGVjdG9yKG5lc3QpIHsKICB2YXIgc2VsZWN0b3IgPSBbXQogIGZvciAo
dmFyIGkgPSAwOyBpIDwgbmVzdDsgKytpKSB7CiAgICBzZWxlY3Rvci5wdXNoKCcjaWQnICsgaSAr
ICcgKyBcbicpOwogIH0KICBzZWxlY3Rvci5wdXNoKCcqIHtiYWNrZ3JvdW5kOmJsdWV9Jyk7Cgog
IHZhciBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7CiAgc3R5bGUudHlw
ZSA9ICd0ZXh0L2Nzcyc7CiAgc3R5bGUuaW5uZXJIVE1MID0gc2VsZWN0b3Iuam9pbignJyk7CiAg
ZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzdHlsZSk7Cn0KCmZ1bmN0aW9uIGdlbmVyYXRlX2Rl
ZXBseV9uZXN0ZWRfZWxlbWVudHMobmVzdCkgewogIHZhciB0ZXh0ID0gW107CiAgZm9yICh2YXIg
aSA9IDA7IGkgPCBuZXN0OyArK2kpIHsKICAgIHRleHQucHVzaCgnPGRpdiBpZD1pZCcgKyBpICsg
Jz48L2Rpdj5cbicpOwogIH0KICB0ZXh0LnB1c2goJzxkaXY+SGVsbG9Xb3JsZDwvZGl2PicpOwog
IHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKQogIGRpdi5pbm5lckhUTUwg
PSB0ZXh0LmpvaW4oJycpOwogIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGl2KTsKfQoKZ2Vu
ZXJhdGVfZGVlcGx5X25lc3RlZF9zZWxlY3RvcigxMDAwMDAwKTsKZ2VuZXJhdGVfZGVlcGx5X25l
c3RlZF9lbGVtZW50cygxMDAwMDAwKTsKCjwvc2NyaXB0PgpIZWxsbwo8L2JvZHk+CjwvaHRtbD4K
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63988</attachid>
            <date>2010-08-10 01:42:09 -0700</date>
            <delta_ts>2010-08-10 04:07:50 -0700</delta_ts>
            <desc>make-checkSelector-iterative</desc>
            <filename>bug-42806-20100810174207.patch</filename>
            <type>text/plain</type>
            <size>21781</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5ZGRhODRlNmI4MTk1M2I1MjRkMjgzYzAxYzA2NGM4OTIxMTM0YTcyLi5iZTg2YWU4
YmE0YTgyMzVkYTE2M2YzZjNlMjRjZjczYjkzNjk0MzNiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTAtMDgtMDkgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBhIHN0YWNrIG92ZXJm
bG93IHdoZW4gYSBsb25nIENTUyBzZWxlY3RvciBpcyB1c2VkLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDI4MDYKKworICAgICAgICBGaXhpbmcgdGhp
cyByZXF1aXJlcyByZXdyaXRpbmcgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyIHNv
IHRoYXQKKyAgICAgICAgdGhlIGZ1bmN0aW9uIGRvZXMgbm90IHVzZSByZWN1cnNpdmUgY2FsbC4g
SW5zdGVhZCBvZiByZWN1cnNpb24sIHdlIG1haW50YWluIG91ciBvd24KKyAgICAgICAgY2FsbCBz
dGFjayBhbmQgY2hlY2sgc2VsZWN0b3JzIGl0ZXJhdGl2ZWx5LgorCisgICAgICAgICogZmFzdC9j
c3MvY3NzLXNlbGVjdG9yLWRlZXAtbWF0Y2hlcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvY3NzL2Nzcy1zZWxlY3Rvci1kZWVwLW1hdGNoZXMuaHRtbDogQWRkZWQuCisKIDIw
MTAtMDgtMDkgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBHZW9mZnJleSBHYXJlbi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL2Nz
cy1zZWxlY3Rvci1kZWVwLW1hdGNoZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9j
c3MvY3NzLXNlbGVjdG9yLWRlZXAtbWF0Y2hlcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWNl
OTBlNzM4ZjI0N2NjNWFhODZiMTRhM2E2ZGQ2NjZhMjQ0Y2I3YQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvY3NzL2Nzcy1zZWxlY3Rvci1kZWVwLW1hdGNoZXMtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsNCBAQAorSGVsbG9Xb3JsZAorVGVzdCBjYXNlIGZvciBodHRwOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjgwNgorCitJZiBicm93c2VyIGRpZG4ndCBj
cmFzaCwgdGhlIHRlc3QgcGFzc2VkLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mv
Y3NzLXNlbGVjdG9yLWRlZXAtbWF0Y2hlcy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvY3Nz
LXNlbGVjdG9yLWRlZXAtbWF0Y2hlcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEzZDU5Mjg5MjE0OTYxZjQ3
MGY1MWZlZDAyOTE5OGU2OWZjNTZiYTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2Nzcy9jc3Mtc2VsZWN0b3ItZGVlcC1tYXRjaGVzLmh0bWwKQEAgLTAsMCArMSwzOCBAQAor
PGh0bWw+Cis8aGVhZD48L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CitmdW5jdGlvbiBnZW5lcmF0
ZV9kZWVwbHlfbmVzdGVkX3NlbGVjdG9yKG5lc3QpIHsKKyAgdmFyIHNlbGVjdG9yID0gW10KKyAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBuZXN0OyArK2kpIHsKKyAgICBzZWxlY3Rvci5wdXNoKCcjaWQn
ICsgaSArICcgKyBcbicpOworICB9CisgIHNlbGVjdG9yLnB1c2goJyoge2JhY2tncm91bmQ6Ymx1
ZX0nKTsKKworICB2YXIgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOwor
ICBzdHlsZS50eXBlID0gJ3RleHQvY3NzJzsKKyAgc3R5bGUuaW5uZXJIVE1MID0gc2VsZWN0b3Iu
am9pbignJyk7CisgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc3R5bGUpOworfQorCitmdW5j
dGlvbiBnZW5lcmF0ZV9kZWVwbHlfbmVzdGVkX2VsZW1lbnRzKG5lc3QpIHsKKyAgdmFyIHRleHQg
PSBbXTsKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCBuZXN0OyArK2kpIHsKKyAgICB0ZXh0LnB1c2go
JzxkaXYgaWQ9aWQnICsgaSArICc+PC9kaXY+XG4nKTsKKyAgfQorICB0ZXh0LnB1c2goJzxkaXY+
SGVsbG9Xb3JsZDwvZGl2PicpOworICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
ZGl2JykKKyAgZGl2LmlubmVySFRNTCA9IHRleHQuam9pbignJyk7CisgIGRvY3VtZW50LmJvZHku
YXBwZW5kQ2hpbGQoZGl2KTsKK30KKworZ2VuZXJhdGVfZGVlcGx5X25lc3RlZF9zZWxlY3Rvcigx
MDAwMDApOworZ2VuZXJhdGVfZGVlcGx5X25lc3RlZF9lbGVtZW50cygxMDAwMDApOworCitpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKzwvc2NyaXB0PgorPHA+VGVzdCBjYXNlIGZvciA8YSBocmVmPSJodHRwOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MjgwNiI+aHR0cDovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDI4MDY8L2E+PC9wPgorPHA+SWYgYnJvd3NlciBkaWRuJ3Qg
Y3Jhc2gsIHRoZSB0ZXN0IHBhc3NlZC48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDUxOGM3ZjhmYTg4
ZjExYzBhZDU3MTYxYjIwNjVkMjFmZThkYTZjZDMuLjYyMWZiYTY4MWFjOTM4ODU1OTA3MjgxMTY1
OGQ3N2NlZjZkNzY3MGYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTAtMDgtMDkgIEhheWF0byBJdG8gIDxo
YXlhdG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEZpeCBhIHN0YWNrIG92ZXJmbG93IHdoZW4gYSBsb25nIENTUyBzZWxlY3Rv
ciBpcyB1c2VkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDI4MDYKKworICAgICAgICBGaXhpbmcgdGhpcyByZXF1aXJlcyByZXdyaXRpbmcgQ1NTU3R5
bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyIHNvIHRoYXQKKyAgICAgICAgdGhlIGZ1bmN0aW9u
IGRvZXMgbm90IHVzZSByZWN1cnNpdmUgY2FsbC4gSW5zdGVhZCBvZiByZWN1cnNpb24sIHdlIG1h
aW50YWluIG91ciBvd24KKyAgICAgICAgY2FsbCBzdGFjayBhbmQgY2hlY2sgc2VsZWN0b3JzIGl0
ZXJhdGl2ZWx5LgorCisgICAgICAgIFRlc3Q6IGZhc3QvY3NzL2Nzcy1zZWxlY3Rvci1kZWVwLW1h
dGNoZXMuaHRtbAorCisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVj
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmNoZWNrU2VsZWN0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpD
YWxsU3RhdGU6Oik6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3Rv
ckNoZWNrZXI6OkNhbGxTdGF0ZTo6Q2FsbFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0
eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Q2FsbFN0YWNrOjppc0VtcHR5KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Q2FsbFN0YWNr
OjpwdXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hl
Y2tlcjo6Q2FsbFN0YWNrOjpwb3ApOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmg6
CisKIDIwMTAtMDgtMDkgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcCBiL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3Iu
Y3BwCmluZGV4IDU4MTBiMDA2ZGVlMTZhZGEzZGQwMWEwOGVhNzM5MTBlNGI3YmZjOTkuLjFmOGU4
MWY1YzgyZjA5NzhiNGRhNGQ0NDRhOGZkZWZhNDRhYzQzMGYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
Y3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCisrKyBiL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0
b3IuY3BwCkBAIC05NDUsNyArOTQ1LDcgQEAgRUluc2lkZUxpbmsgQ1NTU3R5bGVTZWxlY3Rvcjo6
U2VsZWN0b3JDaGVja2VyOjpkZXRlcm1pbmVMaW5rU3RhdGVTbG93Q2FzZShFbGVtZW4KIGJvb2wg
Q1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yKENTU1NlbGVj
dG9yKiBzZWwsIEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiB7CiAgICAgUHNldWRvSWQgZHluYW1p
Y1BzZXVkbyA9IE5PUFNFVURPOwotICAgIHJldHVybiBjaGVja1NlbGVjdG9yKHNlbCwgZWxlbWVu
dCwgMCwgZHluYW1pY1BzZXVkbywgZmFsc2UsIGZhbHNlKSA9PSBTZWxlY3Rvck1hdGNoZXM7Cisg
ICAgcmV0dXJuIGNoZWNrU2VsZWN0b3Ioc2VsLCBlbGVtZW50LCAwLCBkeW5hbWljUHNldWRvLCBm
YWxzZSwgZmFsc2UpOwogfQogCiAjaWZkZWYgU1RZTEVfU0hBUklOR19TVEFUUwpAQCAtMTg5Myw4
ICsxODkzLDcgQEAgYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpjaGVja1NlbGVjdG9yKENTU1NlbGVj
dG9yKiBzZWwpCiAgICAgbV9keW5hbWljUHNldWRvID0gTk9QU0VVRE87CiAKICAgICAvLyBDaGVj
ayB0aGUgc2VsZWN0b3IKLSAgICBTZWxlY3Rvck1hdGNoIG1hdGNoID0gbV9jaGVja2VyLmNoZWNr
U2VsZWN0b3Ioc2VsLCBtX2VsZW1lbnQsICZtX3NlbGVjdG9yQXR0cnMsIG1fZHluYW1pY1BzZXVk
bywgZmFsc2UsIGZhbHNlLCBzdHlsZSgpLCBtX3BhcmVudFN0eWxlKTsKLSAgICBpZiAobWF0Y2gg
IT0gU2VsZWN0b3JNYXRjaGVzKQorICAgIGlmICghbV9jaGVja2VyLmNoZWNrU2VsZWN0b3Ioc2Vs
LCBtX2VsZW1lbnQsICZtX3NlbGVjdG9yQXR0cnMsIG1fZHluYW1pY1BzZXVkbywgZmFsc2UsIGZh
bHNlLCBzdHlsZSgpLCBtX3BhcmVudFN0eWxlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgaWYgKG1fY2hlY2tlci5tX3BzZXVkb1N0eWxlICE9IE5PUFNFVURPICYmIG1fY2hlY2tlci5t
X3BzZXVkb1N0eWxlICE9IG1fZHluYW1pY1BzZXVkbykKQEAgLTE5MDMsMTE0ICsxOTAyLDIyNiBA
QCBib29sIENTU1N0eWxlU2VsZWN0b3I6OmNoZWNrU2VsZWN0b3IoQ1NTU2VsZWN0b3IqIHNlbCkK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotLy8gUmVjdXJzaXZlIGNoZWNrIG9mIHNlbGVjdG9ycyBh
bmQgY29tYmluYXRvcnMKLS8vIEl0IGNhbiByZXR1cm4gMyBkaWZmZXJlbnQgdmFsdWVzOgotLy8g
KiBTZWxlY3Rvck1hdGNoZXMgICAgICAgICAtIHRoZSBzZWxlY3RvciBtYXRjaGVzIHRoZSBlbGVt
ZW50IGUKLS8vICogU2VsZWN0b3JGYWlsc0xvY2FsbHkgICAgLSB0aGUgc2VsZWN0b3IgZmFpbHMg
Zm9yIHRoZSBlbGVtZW50IGUKLS8vICogU2VsZWN0b3JGYWlsc0NvbXBsZXRlbHkgLSB0aGUgc2Vs
ZWN0b3IgZmFpbHMgZm9yIGUgYW5kIGFueSBzaWJsaW5nIG9yIGFuY2VzdG9yIG9mIGUKLUNTU1N0
eWxlU2VsZWN0b3I6OlNlbGVjdG9yTWF0Y2ggQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVj
a2VyOjpjaGVja1NlbGVjdG9yKENTU1NlbGVjdG9yKiBzZWwsIEVsZW1lbnQqIGUsIEhhc2hTZXQ8
QXRvbWljU3RyaW5nSW1wbCo+KiBzZWxlY3RvckF0dHJzLCBQc2V1ZG9JZCYgZHluYW1pY1BzZXVk
bywgYm9vbCBpc1N1YlNlbGVjdG9yLCBib29sIGVuY291bnRlcmVkTGluaywgUmVuZGVyU3R5bGUq
IGVsZW1lbnRTdHlsZSwgUmVuZGVyU3R5bGUqIGVsZW1lbnRQYXJlbnRTdHlsZSkgY29uc3QKK2Ns
YXNzIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Q2FsbFN0YXRlIHsKK3B1Ymxp
YzoKKyAgICBlbnVtIFN0YXRlIHsKKyAgICAgICAgU2Vla2luZ0Rlc2NlbmRhbnQsIFNlZWtpbmdJ
bmRpcmVjdEFkamFjZW50LAorICAgIH07CisKKyAgICBTdGF0ZSBtX3N0YXRlOworICAgIENTU1Nl
bGVjdG9yKiBtX3NlbDsKKyAgICBFbGVtZW50KiBtX2U7CisgICAgYm9vbCBtX2lzU3ViU2VsZWN0
b3I7CisgICAgYm9vbCBtX2VuY291bnRlcmVkTGluazsKKyAgICBSZW5kZXJTdHlsZSogbV9lbGVt
ZW50U3R5bGU7CisgICAgUmVuZGVyU3R5bGUqIG1fZWxlbWVudFBhcmVudFN0eWxlOworCisgICAg
Q2FsbFN0YXRlKFN0YXRlIHN0YXRlLCBDU1NTZWxlY3Rvciogc2VsLCBFbGVtZW50KiBlLCBib29s
IGlzU3ViU2VsZWN0b3IsIGJvb2wgZW5jb3VudGVyZWRMaW5rLCBSZW5kZXJTdHlsZSogZWxlbWVu
dFN0eWxlLCBSZW5kZXJTdHlsZSogZWxlbWVudFBhcmVudFN0eWxlKQorICAgICAgICAgICAgOiBt
X3N0YXRlKHN0YXRlKQorICAgICAgICAgICAgLCBtX3NlbChzZWwpCisgICAgICAgICAgICAsIG1f
ZShlKQorICAgICAgICAgICAgLCBtX2lzU3ViU2VsZWN0b3IoaXNTdWJTZWxlY3RvcikKKyAgICAg
ICAgICAgICwgbV9lbmNvdW50ZXJlZExpbmsoZW5jb3VudGVyZWRMaW5rKQorICAgICAgICAgICAg
LCBtX2VsZW1lbnRTdHlsZShlbGVtZW50U3R5bGUpCisgICAgICAgICAgICAsIG1fZWxlbWVudFBh
cmVudFN0eWxlKGVsZW1lbnRQYXJlbnRTdHlsZSkKKyAgICB7CisgICAgfQorfTsKKworY2xhc3Mg
Q1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpDYWxsU3RhY2sgeworcHVibGljOgor
ICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9zdGFjay5p
c0VtcHR5KCk7CisgICAgfQorCisgICAgdm9pZCBwdXNoKENhbGxTdGF0ZSBzdGF0ZSkKKyAgICB7
CisgICAgICAgIG1fc3RhY2suYXBwZW5kKHN0YXRlKTsKKyAgICB9CisKKyAgICBDYWxsU3RhdGUg
cG9wKCkKKyAgICB7CisgICAgICAgIEFTU0VSVCghaXNFbXB0eSgpKTsKKyAgICAgICAgQ2FsbFN0
YXRlIHN0YXRlID0gbV9zdGFjay5sYXN0KCk7CisgICAgICAgIG1fc3RhY2sucmVtb3ZlTGFzdCgp
OworICAgICAgICByZXR1cm4gc3RhdGU7CisgICAgfQorCitwcml2YXRlOgorICAgIFZlY3RvcjxD
YWxsU3RhdGU+IG1fc3RhY2s7Cit9OworCisvLyBDaGVjayBzZWxlY3RvcnMgYW5kIGNvbWJpbmF0
b3JzLgorYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0
b3IoQ1NTU2VsZWN0b3IqIHNlbCwgRWxlbWVudCogZSwgSGFzaFNldDxBdG9taWNTdHJpbmdJbXBs
Kj4qIHNlbGVjdG9yQXR0cnMsIFBzZXVkb0lkJiBkeW5hbWljUHNldWRvLCBib29sIGlzU3ViU2Vs
ZWN0b3IsIGJvb2wgZW5jb3VudGVyZWRMaW5rLCBSZW5kZXJTdHlsZSogZWxlbWVudFN0eWxlLCBS
ZW5kZXJTdHlsZSogZWxlbWVudFBhcmVudFN0eWxlKSBjb25zdAogeworICAgIC8vIFdlIHNob3Vs
ZCBhdm9pZCByZWN1cnNpdmUgY2FsbHMsIHdoaWNoIG1pZ2h0IGNhdXNlIHN0YWNrIG92ZXJmbG93
IGlmIHRoZSBjaGFpbiBvZiBzZWxlY3RvciBpcyB2ZXJ5IGxvbmcuCisgICAgLy8gVGhlcmVmb3Jl
IHdlIGhhdmUgdG8gbWFpbnRhaW4gYSBjYWxsIHN0YWNrIGJ5IG91cnNlbHZlcyBzbyB0aGF0IHdl
IGNhbiBjaGVjayBzZWxlY3RvciBpdGVyYXRpdmVseS4KKyAgICBDYWxsU3RhY2sgY2FsbFN0YWNr
OworICAgIHdoaWxlICh0cnVlKSB7CiAjaWYgRU5BQkxFKFNWRykKLSAgICAvLyBTcGVjOiBDU1My
IHNlbGVjdG9ycyBjYW5ub3QgYmUgYXBwbGllZCB0byB0aGUgKGNvbmNlcHR1YWxseSkgY2xvbmVk
IERPTSB0cmVlCi0gICAgLy8gYmVjYXVzZSBpdHMgY29udGVudHMgYXJlIG5vdCBwYXJ0IG9mIHRo
ZSBmb3JtYWwgZG9jdW1lbnQgc3RydWN0dXJlLgotICAgIGlmIChlLT5pc1NWR0VsZW1lbnQoKSAm
JiBlLT5pc1NoYWRvd05vZGUoKSkKLSAgICAgICAgcmV0dXJuIFNlbGVjdG9yRmFpbHNDb21wbGV0
ZWx5OworICAgICAgICAvLyBTcGVjOiBDU1MyIHNlbGVjdG9ycyBjYW5ub3QgYmUgYXBwbGllZCB0
byB0aGUgKGNvbmNlcHR1YWxseSkgY2xvbmVkIERPTSB0cmVlCisgICAgICAgIC8vIGJlY2F1c2Ug
aXRzIGNvbnRlbnRzIGFyZSBub3QgcGFydCBvZiB0aGUgZm9ybWFsIGRvY3VtZW50IHN0cnVjdHVy
ZS4KKyAgICAgICAgaWYgKGUtPmlzU1ZHRWxlbWVudCgpICYmIGUtPmlzU2hhZG93Tm9kZSgpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCisgICAgICAgIC8vIGZpcnN0IHNlbGVj
dG9yIGhhcyB0byBtYXRjaAorICAgICAgICBjb25zdCBib29sIG1hdGNoZWQgPSBjaGVja09uZVNl
bGVjdG9yKHNlbCwgZSwgc2VsZWN0b3JBdHRycywgZHluYW1pY1BzZXVkbywgaXNTdWJTZWxlY3Rv
ciwgZWxlbWVudFN0eWxlLCBlbGVtZW50UGFyZW50U3R5bGUpOworICAgICAgICBib29sIG5lZWRV
bndpbmRpbmcgPSAhbWF0Y2hlZDsKIAotICAgIC8vIGZpcnN0IHNlbGVjdG9yIGhhcyB0byBtYXRj
aAotICAgIGlmICghY2hlY2tPbmVTZWxlY3RvcihzZWwsIGUsIHNlbGVjdG9yQXR0cnMsIGR5bmFt
aWNQc2V1ZG8sIGlzU3ViU2VsZWN0b3IsIGVsZW1lbnRTdHlsZSwgZWxlbWVudFBhcmVudFN0eWxl
KSkKLSAgICAgICAgcmV0dXJuIFNlbGVjdG9yRmFpbHNMb2NhbGx5OwotCi0gICAgLy8gVGhlIHJl
c3Qgb2YgdGhlIHNlbGVjdG9ycyBoYXMgdG8gbWF0Y2gKLSAgICBDU1NTZWxlY3Rvcjo6UmVsYXRp
b24gcmVsYXRpb24gPSBzZWwtPnJlbGF0aW9uKCk7Ci0KLSAgICAvLyBQcmVwYXJlIG5leHQgc2Vs
Ci0gICAgc2VsID0gc2VsLT50YWdIaXN0b3J5KCk7Ci0gICAgaWYgKCFzZWwpCi0gICAgICAgIHJl
dHVybiBTZWxlY3Rvck1hdGNoZXM7Ci0KLSAgICBpZiAocmVsYXRpb24gIT0gQ1NTU2VsZWN0b3I6
OlN1YlNlbGVjdG9yKQotICAgICAgICAvLyBCYWlsLW91dCBpZiB0aGlzIHNlbGVjdG9yIGlzIGly
cmVsZXZhbnQgZm9yIHRoZSBwc2V1ZG9TdHlsZQotICAgICAgICBpZiAobV9wc2V1ZG9TdHlsZSAh
PSBOT1BTRVVETyAmJiBtX3BzZXVkb1N0eWxlICE9IGR5bmFtaWNQc2V1ZG8pCi0gICAgICAgICAg
ICByZXR1cm4gU2VsZWN0b3JGYWlsc0NvbXBsZXRlbHk7Ci0KLSAgICAvLyBDaGVjayBmb3IgbmVz
dGVkIGxpbmtzLgotICAgIGlmIChtX21hdGNoVmlzaXRlZFBzZXVkb0NsYXNzICYmICFpc1N1YlNl
bGVjdG9yKSB7Ci0gICAgICAgIFJlbmRlclN0eWxlKiBjdXJyZW50U3R5bGUgPSBlbGVtZW50U3R5
bGUgPyBlbGVtZW50U3R5bGUgOiBlLT5yZW5kZXJTdHlsZSgpOwotICAgICAgICBpZiAoY3VycmVu
dFN0eWxlICYmIGN1cnJlbnRTdHlsZS0+aW5zaWRlTGluaygpICYmIGUtPmlzTGluaygpKSB7Ci0g
ICAgICAgICAgICBpZiAoZW5jb3VudGVyZWRMaW5rKQotICAgICAgICAgICAgICAgIG1fbWF0Y2hW
aXNpdGVkUHNldWRvQ2xhc3MgPSBmYWxzZTsgLy8gVGhpcyBsaW5rIGlzIG5vdCByZWxldmFudCB0
byB0aGUgc3R5bGUgYmVpbmcgcmVzb2x2ZWQsIHNvIGRpc2FibGUgbWF0Y2hpbmcuCi0gICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgZW5jb3VudGVyZWRMaW5rID0gdHJ1ZTsKLSAgICAg
ICAgfQotICAgIH0KKyAgICAgICAgaWYgKG1hdGNoZWQpIHsKKyAgICAgICAgICAgIC8vIFRoZSBy
ZXN0IG9mIHRoZSBzZWxlY3RvcnMgaGFzIHRvIG1hdGNoCisgICAgICAgICAgICBDU1NTZWxlY3Rv
cjo6UmVsYXRpb24gcmVsYXRpb24gPSBzZWwtPnJlbGF0aW9uKCk7CiAKLSAgICBzd2l0Y2ggKHJl
bGF0aW9uKSB7Ci0gICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkRlc2NlbmRhbnQ6Ci0gICAgICAg
ICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgLy8gUHJlcGFyZSBuZXh0IHNlbAorICAg
ICAgICAgICAgc2VsID0gc2VsLT50YWdIaXN0b3J5KCk7CisgICAgICAgICAgICBpZiAoIXNlbCkK
KyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAgICAgaWYgKHJlbGF0aW9u
ICE9IENTU1NlbGVjdG9yOjpTdWJTZWxlY3RvcikKKyAgICAgICAgICAgICAgICAvLyBCYWlsLW91
dCBpZiB0aGlzIHNlbGVjdG9yIGlzIGlycmVsZXZhbnQgZm9yIHRoZSBwc2V1ZG9TdHlsZQorICAg
ICAgICAgICAgICAgIGlmIChtX3BzZXVkb1N0eWxlICE9IE5PUFNFVURPICYmIG1fcHNldWRvU3R5
bGUgIT0gZHluYW1pY1BzZXVkbykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgICAgICAgICAvLyBDaGVjayBmb3IgbmVzdGVkIGxpbmtzLgorICAgICAgICAgICAgaWYg
KG1fbWF0Y2hWaXNpdGVkUHNldWRvQ2xhc3MgJiYgIWlzU3ViU2VsZWN0b3IpIHsKKyAgICAgICAg
ICAgICAgICBSZW5kZXJTdHlsZSogY3VycmVudFN0eWxlID0gZWxlbWVudFN0eWxlID8gZWxlbWVu
dFN0eWxlIDogZS0+cmVuZGVyU3R5bGUoKTsKKyAgICAgICAgICAgICAgICBpZiAoY3VycmVudFN0
eWxlICYmIGN1cnJlbnRTdHlsZS0+aW5zaWRlTGluaygpICYmIGUtPmlzTGluaygpKSB7CisgICAg
ICAgICAgICAgICAgICAgIGlmIChlbmNvdW50ZXJlZExpbmspCisgICAgICAgICAgICAgICAgICAg
ICAgICBtX21hdGNoVmlzaXRlZFBzZXVkb0NsYXNzID0gZmFsc2U7IC8vIFRoaXMgbGluayBpcyBu
b3QgcmVsZXZhbnQgdG8gdGhlIHN0eWxlIGJlaW5nIHJlc29sdmVkLCBzbyBkaXNhYmxlIG1hdGNo
aW5nLgorICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBl
bmNvdW50ZXJlZExpbmsgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgc3dpdGNoIChyZWxhdGlvbikgeworICAgICAgICAgICAgY2FzZSBDU1NT
ZWxlY3Rvcjo6RGVzY2VuZGFudDoKKyAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBOb2Rl
KiBuID0gZS0+cGFyZW50Tm9kZSgpOwogICAgICAgICAgICAgICAgIGlmICghbiB8fCAhbi0+aXNF
bGVtZW50Tm9kZSgpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gU2VsZWN0b3JGYWlsc0Nv
bXBsZXRlbHk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAg
ICAgICBlID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG4pOwotICAgICAgICAgICAgICAgIFNlbGVj
dG9yTWF0Y2ggbWF0Y2ggPSBjaGVja1NlbGVjdG9yKHNlbCwgZSwgc2VsZWN0b3JBdHRycywgZHlu
YW1pY1BzZXVkbywgZmFsc2UsIGVuY291bnRlcmVkTGluayk7Ci0gICAgICAgICAgICAgICAgaWYg
KG1hdGNoICE9IFNlbGVjdG9yRmFpbHNMb2NhbGx5KQotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gbWF0Y2g7CisgICAgICAgICAgICAgICAgY2FsbFN0YWNrLnB1c2goQ2FsbFN0YXRlKENhbGxT
dGF0ZTo6U2Vla2luZ0Rlc2NlbmRhbnQsIHNlbCwgZSwgaXNTdWJTZWxlY3RvciwgZW5jb3VudGVy
ZWRMaW5rLCBlbGVtZW50U3R5bGUsIGVsZW1lbnRQYXJlbnRTdHlsZSkpOworICAgICAgICAgICAg
ICAgIGlzU3ViU2VsZWN0b3IgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBlbGVtZW50U3R5bGUg
PSAwOworICAgICAgICAgICAgICAgIGVsZW1lbnRQYXJlbnRTdHlsZSA9IDA7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBDU1NTZWxlY3Rvcjo6Q2hpbGQ6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIE5vZGUqIG4g
PSBlLT5wYXJlbnROb2RlKCk7Ci0gICAgICAgICAgICBpZiAoIW4gfHwgIW4tPmlzRWxlbWVudE5v
ZGUoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gU2VsZWN0b3JGYWlsc0NvbXBsZXRlbHk7Ci0g
ICAgICAgICAgICBlID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG4pOwotICAgICAgICAgICAgcmV0
dXJuIGNoZWNrU2VsZWN0b3Ioc2VsLCBlLCBzZWxlY3RvckF0dHJzLCBkeW5hbWljUHNldWRvLCBm
YWxzZSwgZW5jb3VudGVyZWRMaW5rKTsKLSAgICAgICAgfQotICAgICAgICBjYXNlIENTU1NlbGVj
dG9yOjpEaXJlY3RBZGphY2VudDoKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2NvbGxl
Y3RSdWxlc09ubHkgJiYgZS0+cGFyZW50Tm9kZSgpICYmIGUtPnBhcmVudE5vZGUoKS0+aXNFbGVt
ZW50Tm9kZSgpKSB7Ci0gICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0g
ZWxlbWVudFN0eWxlID8gZWxlbWVudFBhcmVudFN0eWxlIDogZS0+cGFyZW50Tm9kZSgpLT5yZW5k
ZXJTdHlsZSgpOwotICAgICAgICAgICAgICAgIGlmIChwYXJlbnRTdHlsZSkKLSAgICAgICAgICAg
ICAgICAgICAgcGFyZW50U3R5bGUtPnNldENoaWxkcmVuQWZmZWN0ZWRCeURpcmVjdEFkamFjZW50
UnVsZXMoKTsKKyAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkNoaWxkOgorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIE5vZGUqIG4gPSBlLT5wYXJlbnROb2RlKCk7CisgICAgICAg
ICAgICAgICAgaWYgKCFuIHx8ICFuLT5pc0VsZW1lbnROb2RlKCkpCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBlID0gc3RhdGljX2Nhc3Q8RWxlbWVu
dCo+KG4pOworICAgICAgICAgICAgICAgIGlzU3ViU2VsZWN0b3IgPSBmYWxzZTsKKyAgICAgICAg
ICAgICAgICBlbGVtZW50U3R5bGUgPSAwOworICAgICAgICAgICAgICAgIGVsZW1lbnRQYXJlbnRT
dHlsZSA9IDA7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBOb2RlKiBuID0gZS0+cHJldmlvdXNTaWJsaW5nKCk7Ci0gICAgICAgICAgICB3aGlsZSAo
biAmJiAhbi0+aXNFbGVtZW50Tm9kZSgpKQotICAgICAgICAgICAgICAgIG4gPSBuLT5wcmV2aW91
c1NpYmxpbmcoKTsKLSAgICAgICAgICAgIGlmICghbikKLSAgICAgICAgICAgICAgICByZXR1cm4g
U2VsZWN0b3JGYWlsc0xvY2FsbHk7Ci0gICAgICAgICAgICBlID0gc3RhdGljX2Nhc3Q8RWxlbWVu
dCo+KG4pOwotICAgICAgICAgICAgbV9tYXRjaFZpc2l0ZWRQc2V1ZG9DbGFzcyA9IGZhbHNlOwot
ICAgICAgICAgICAgcmV0dXJuIGNoZWNrU2VsZWN0b3Ioc2VsLCBlLCBzZWxlY3RvckF0dHJzLCBk
eW5hbWljUHNldWRvLCBmYWxzZSwgZW5jb3VudGVyZWRMaW5rKTsgCi0gICAgICAgIH0KLSAgICAg
ICAgY2FzZSBDU1NTZWxlY3Rvcjo6SW5kaXJlY3RBZGphY2VudDoKLSAgICAgICAgICAgIGlmICgh
bV9jb2xsZWN0UnVsZXNPbmx5ICYmIGUtPnBhcmVudE5vZGUoKSAmJiBlLT5wYXJlbnROb2RlKCkt
PmlzRWxlbWVudE5vZGUoKSkgewotICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBwYXJlbnRT
dHlsZSA9IGVsZW1lbnRTdHlsZSA/IGVsZW1lbnRQYXJlbnRTdHlsZSA6IGUtPnBhcmVudE5vZGUo
KS0+cmVuZGVyU3R5bGUoKTsKLSAgICAgICAgICAgICAgICBpZiAocGFyZW50U3R5bGUpCi0gICAg
ICAgICAgICAgICAgICAgIHBhcmVudFN0eWxlLT5zZXRDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJk
UG9zaXRpb25hbFJ1bGVzKCk7CisgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpEaXJlY3RB
ZGphY2VudDoKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoIW1fY29sbGVjdFJ1
bGVzT25seSAmJiBlLT5wYXJlbnROb2RlKCkgJiYgZS0+cGFyZW50Tm9kZSgpLT5pc0VsZW1lbnRO
b2RlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0g
ZWxlbWVudFN0eWxlID8gZWxlbWVudFBhcmVudFN0eWxlIDogZS0+cGFyZW50Tm9kZSgpLT5yZW5k
ZXJTdHlsZSgpOworICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50U3R5bGUpCisgICAgICAg
ICAgICAgICAgICAgICAgICBwYXJlbnRTdHlsZS0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5RGlyZWN0
QWRqYWNlbnRSdWxlcygpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBOb2Rl
KiBuID0gZS0+cHJldmlvdXNTaWJsaW5nKCk7CisgICAgICAgICAgICAgICAgd2hpbGUgKG4gJiYg
IW4tPmlzRWxlbWVudE5vZGUoKSkKKyAgICAgICAgICAgICAgICAgICAgbiA9IG4tPnByZXZpb3Vz
U2libGluZygpOworICAgICAgICAgICAgICAgIGlmICghbikgeworICAgICAgICAgICAgICAgICAg
ICBuZWVkVW53aW5kaW5nID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGUgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4o
bik7CisgICAgICAgICAgICAgICAgbV9tYXRjaFZpc2l0ZWRQc2V1ZG9DbGFzcyA9IGZhbHNlOwor
ICAgICAgICAgICAgICAgIGlzU3ViU2VsZWN0b3IgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBl
bGVtZW50U3R5bGUgPSAwOworICAgICAgICAgICAgICAgIGVsZW1lbnRQYXJlbnRTdHlsZSA9IDA7
CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB3aGls
ZSAodHJ1ZSkgeworICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6SW5kaXJlY3RBZGphY2Vu
dDoKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoIW1fY29sbGVjdFJ1bGVzT25s
eSAmJiBlLT5wYXJlbnROb2RlKCkgJiYgZS0+cGFyZW50Tm9kZSgpLT5pc0VsZW1lbnROb2RlKCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gZWxlbWVu
dFN0eWxlID8gZWxlbWVudFBhcmVudFN0eWxlIDogZS0+cGFyZW50Tm9kZSgpLT5yZW5kZXJTdHls
ZSgpOworICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50U3R5bGUpCisgICAgICAgICAgICAg
ICAgICAgICAgICBwYXJlbnRTdHlsZS0+c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0
aW9uYWxSdWxlcygpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBOb2RlKiBu
ID0gZS0+cHJldmlvdXNTaWJsaW5nKCk7CiAgICAgICAgICAgICAgICAgd2hpbGUgKG4gJiYgIW4t
PmlzRWxlbWVudE5vZGUoKSkKICAgICAgICAgICAgICAgICAgICAgbiA9IG4tPnByZXZpb3VzU2li
bGluZygpOwotICAgICAgICAgICAgICAgIGlmICghbikKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIFNlbGVjdG9yRmFpbHNMb2NhbGx5OworICAgICAgICAgICAgICAgIGlmICghbikgeworICAg
ICAgICAgICAgICAgICAgICBuZWVkVW53aW5kaW5nID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGUgPSBzdGF0aWNf
Y2FzdDxFbGVtZW50Kj4obik7CiAgICAgICAgICAgICAgICAgbV9tYXRjaFZpc2l0ZWRQc2V1ZG9D
bGFzcyA9IGZhbHNlOwotICAgICAgICAgICAgICAgIFNlbGVjdG9yTWF0Y2ggbWF0Y2ggPSBjaGVj
a1NlbGVjdG9yKHNlbCwgZSwgc2VsZWN0b3JBdHRycywgZHluYW1pY1BzZXVkbywgZmFsc2UsIGVu
Y291bnRlcmVkTGluayk7Ci0gICAgICAgICAgICAgICAgaWYgKG1hdGNoICE9IFNlbGVjdG9yRmFp
bHNMb2NhbGx5KQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWF0Y2g7Ci0gICAgICAgICAg
ICB9OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlN1YlNl
bGVjdG9yOgotICAgICAgICAgICAgLy8gYSBzZWxlY3RvciBpcyBpbnZhbGlkIGlmIHNvbWV0aGlu
ZyBmb2xsb3dzIGEgcHNldWRvLWVsZW1lbnQKLSAgICAgICAgICAgIC8vIFdlIG1ha2UgYW4gZXhj
ZXB0aW9uIGZvciBzY3JvbGxiYXIgcHNldWRvIGVsZW1lbnRzIGFuZCBhbGxvdyBhIHNldCBvZiBw
c2V1ZG8gY2xhc3NlcyAoYnV0IG5vdGhpbmcgZWxzZSkKLSAgICAgICAgICAgIC8vIHRvIGZvbGxv
dyB0aGUgcHNldWRvIGVsZW1lbnRzLgotICAgICAgICAgICAgaWYgKChlbGVtZW50U3R5bGUgfHwg
bV9jb2xsZWN0UnVsZXNPbmx5KSAmJiBkeW5hbWljUHNldWRvICE9IE5PUFNFVURPICYmIGR5bmFt
aWNQc2V1ZG8gIT0gU0VMRUNUSU9OICYmCi0gICAgICAgICAgICAgICAgISgoUmVuZGVyU2Nyb2xs
YmFyOjpzY3JvbGxiYXJGb3JTdHlsZVJlc29sdmUoKSB8fCBkeW5hbWljUHNldWRvID09IFNDUk9M
TEJBUl9DT1JORVIgfHwgZHluYW1pY1BzZXVkbyA9PSBSRVNJWkVSKSAmJiBzZWwtPm1fbWF0Y2gg
PT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gU2Vs
ZWN0b3JGYWlsc0NvbXBsZXRlbHk7Ci0gICAgICAgICAgICByZXR1cm4gY2hlY2tTZWxlY3Rvcihz
ZWwsIGUsIHNlbGVjdG9yQXR0cnMsIGR5bmFtaWNQc2V1ZG8sIHRydWUsIGVuY291bnRlcmVkTGlu
aywgZWxlbWVudFN0eWxlLCBlbGVtZW50UGFyZW50U3R5bGUpOworICAgICAgICAgICAgICAgIGNh
bGxTdGFjay5wdXNoKENhbGxTdGF0ZShDYWxsU3RhdGU6OlNlZWtpbmdJbmRpcmVjdEFkamFjZW50
LCBzZWwsIGUsIGlzU3ViU2VsZWN0b3IsIGVuY291bnRlcmVkTGluaywgZWxlbWVudFN0eWxlLCBl
bGVtZW50UGFyZW50U3R5bGUpKTsKKyAgICAgICAgICAgICAgICBpc1N1YlNlbGVjdG9yID0gZmFs
c2U7CisgICAgICAgICAgICAgICAgZWxlbWVudFN0eWxlID0gMDsKKyAgICAgICAgICAgICAgICBl
bGVtZW50UGFyZW50U3R5bGUgPSAwOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6U3ViU2VsZWN0b3I6CisgICAgICAg
ICAgICAgICAgLy8gYSBzZWxlY3RvciBpcyBpbnZhbGlkIGlmIHNvbWV0aGluZyBmb2xsb3dzIGEg
cHNldWRvLWVsZW1lbnQKKyAgICAgICAgICAgICAgICAvLyBXZSBtYWtlIGFuIGV4Y2VwdGlvbiBm
b3Igc2Nyb2xsYmFyIHBzZXVkbyBlbGVtZW50cyBhbmQgYWxsb3cgYSBzZXQgb2YgcHNldWRvIGNs
YXNzZXMgKGJ1dCBub3RoaW5nIGVsc2UpCisgICAgICAgICAgICAgICAgLy8gdG8gZm9sbG93IHRo
ZSBwc2V1ZG8gZWxlbWVudHMuCisgICAgICAgICAgICAgICAgaWYgKChlbGVtZW50U3R5bGUgfHwg
bV9jb2xsZWN0UnVsZXNPbmx5KSAmJiBkeW5hbWljUHNldWRvICE9IE5PUFNFVURPICYmIGR5bmFt
aWNQc2V1ZG8gIT0gU0VMRUNUSU9OCisgICAgICAgICAgICAgICAgICAgICYmICEoKFJlbmRlclNj
cm9sbGJhcjo6c2Nyb2xsYmFyRm9yU3R5bGVSZXNvbHZlKCkgfHwgZHluYW1pY1BzZXVkbyA9PSBT
Q1JPTExCQVJfQ09STkVSIHx8IGR5bmFtaWNQc2V1ZG8gPT0gUkVTSVpFUikgJiYgc2VsLT5tX21h
dGNoID09IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcykpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBpc1N1YlNlbGVjdG9yID0gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChuZWVk
VW53aW5kaW5nKSB7CisgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgICAg
IGlmIChjYWxsU3RhY2suaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICAgICAgLy8gVW53aW5kcyBjYWxsIHN0YWNrLgorICAgICAgICAgICAg
ICAgIENhbGxTdGF0ZSBjYWxsU3RhdGUgPSBjYWxsU3RhY2sucG9wKCk7CisgICAgICAgICAgICAg
ICAgc2VsID0gY2FsbFN0YXRlLm1fc2VsOworICAgICAgICAgICAgICAgIGUgPSBjYWxsU3RhdGUu
bV9lOworICAgICAgICAgICAgICAgIGlzU3ViU2VsZWN0b3IgPSBjYWxsU3RhdGUubV9pc1N1YlNl
bGVjdG9yOworICAgICAgICAgICAgICAgIGVuY291bnRlcmVkTGluayA9IGNhbGxTdGF0ZS5tX2Vu
Y291bnRlcmVkTGluazsKKyAgICAgICAgICAgICAgICBlbGVtZW50U3R5bGUgPSBjYWxsU3RhdGUu
bV9lbGVtZW50U3R5bGU7CisgICAgICAgICAgICAgICAgZWxlbWVudFBhcmVudFN0eWxlID0gY2Fs
bFN0YXRlLm1fZWxlbWVudFBhcmVudFN0eWxlOworCisgICAgICAgICAgICAgICAgc3dpdGNoIChj
YWxsU3RhdGUubV9zdGF0ZSkgeworICAgICAgICAgICAgICAgIGNhc2UgQ2FsbFN0YXRlOjpTZWVr
aW5nRGVzY2VuZGFudDoKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIE5v
ZGUqIG4gPSBlLT5wYXJlbnROb2RlKCk7CisgICAgICAgICAgICAgICAgICAgIGlmICghbiB8fCAh
bi0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgICAgICAgICBlID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG4pOworICAg
ICAgICAgICAgICAgICAgICBjYWxsU3RhY2sucHVzaChDYWxsU3RhdGUoQ2FsbFN0YXRlOjpTZWVr
aW5nRGVzY2VuZGFudCwgc2VsLCBlLCBpc1N1YlNlbGVjdG9yLCBlbmNvdW50ZXJlZExpbmssIGVs
ZW1lbnRTdHlsZSwgZWxlbWVudFBhcmVudFN0eWxlKSk7CisgICAgICAgICAgICAgICAgICAgIGlz
U3ViU2VsZWN0b3IgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgZWxlbWVudFN0eWxlID0g
MDsKKyAgICAgICAgICAgICAgICAgICAgZWxlbWVudFBhcmVudFN0eWxlID0gMDsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNh
c2UgQ2FsbFN0YXRlOjpTZWVraW5nSW5kaXJlY3RBZGphY2VudDoKKyAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIG4gPSBlLT5wcmV2aW91c1NpYmxpbmcoKTsKKyAg
ICAgICAgICAgICAgICAgICAgd2hpbGUgKG4gJiYgIW4tPmlzRWxlbWVudE5vZGUoKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG4gPSBuLT5wcmV2aW91c1NpYmxpbmcoKTsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKCFuKQorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7IC8vIENv
bnRpbnVlIHRvIG5leHQgd2hpbGUgbG9vcCB0byB1bndpbmQgY2FsbFN0YWNrIGZ1cnRoZXIuCisg
ICAgICAgICAgICAgICAgICAgIGUgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obik7CisgICAgICAg
ICAgICAgICAgICAgIG1fbWF0Y2hWaXNpdGVkUHNldWRvQ2xhc3MgPSBmYWxzZTsKKyAgICAgICAg
ICAgICAgICAgICAgY2FsbFN0YWNrLnB1c2goQ2FsbFN0YXRlKENhbGxTdGF0ZTo6U2Vla2luZ0lu
ZGlyZWN0QWRqYWNlbnQsIHNlbCwgZSwgaXNTdWJTZWxlY3RvciwgZW5jb3VudGVyZWRMaW5rLCBl
bGVtZW50U3R5bGUsIGVsZW1lbnRQYXJlbnRTdHlsZSkpOworICAgICAgICAgICAgICAgICAgICBp
c1N1YlNlbGVjdG9yID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRTdHlsZSA9
IDA7CisgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRQYXJlbnRTdHlsZSA9IDA7CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KICAgICB9Ci0KLSAgICByZXR1cm4gU2VsZWN0b3JGYWlsc0NvbXBsZXRlbHk7CiB9CiAK
IHN0YXRpYyB2b2lkIGFkZExvY2FsTmFtZVRvU2V0KEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+
KiBzZXQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHFOYW1lKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9j
c3MvQ1NTU3R5bGVTZWxlY3Rvci5oIGIvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCmlu
ZGV4IDZlNGEyNmI2YmQ5YTMxNGRlMGM2MmQ0ZmEyZGZmODFmOWI3NGE0ODUuLmRiMTFlYTZjYzE3
NGIxNTU3NWRmZWVmNWI2NWVjZTM4YWQ3MTUzNGYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NT
U1N0eWxlU2VsZWN0b3IuaAorKysgYi9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgKQEAg
LTE2Nyw4ICsxNjcsNiBAQCBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBib29sIGNyZWF0ZVRyYW5z
Zm9ybU9wZXJhdGlvbnMoQ1NTVmFsdWUqIGluVmFsdWUsIFJlbmRlclN0eWxlKiBpblN0eWxlLCBS
ZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBUcmFuc2Zvcm1PcGVyYXRpb25zJiBvdXRPcGVyYXRpb25z
KTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIGVudW0gU2VsZWN0b3JNYXRjaCB7IFNlbGVjdG9y
TWF0Y2hlcywgU2VsZWN0b3JGYWlsc0xvY2FsbHksIFNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5IH07
Ci0KICAgICAgICAgLy8gVGhpcyBmdW5jdGlvbiBmaXhlcyB1cCB0aGUgZGVmYXVsdCBmb250IHNp
emUgaWYgaXQgZGV0ZWN0cyB0aGF0IHRoZSBjdXJyZW50IGdlbmVyaWMgZm9udCBmYW1pbHkgaGFz
IGNoYW5nZWQuIC1kd2gKICAgICAgICAgdm9pZCBjaGVja0ZvckdlbmVyaWNGYW1pbHlDaGFuZ2Uo
UmVuZGVyU3R5bGUqLCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUpOwogICAgICAgICB2b2lkIGNo
ZWNrRm9yWm9vbUNoYW5nZShSZW5kZXJTdHlsZSosIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSk7
CkBAIC0yMTIsNyArMjEwLDcgQEAgcHVibGljOgogICAgICAgICAgICAgU2VsZWN0b3JDaGVja2Vy
KERvY3VtZW50KiwgYm9vbCBzdHJpY3RQYXJzaW5nKTsKIAogICAgICAgICAgICAgYm9vbCBjaGVj
a1NlbGVjdG9yKENTU1NlbGVjdG9yKiwgRWxlbWVudCopIGNvbnN0OwotICAgICAgICAgICAgU2Vs
ZWN0b3JNYXRjaCBjaGVja1NlbGVjdG9yKENTU1NlbGVjdG9yKiwgRWxlbWVudCosIEhhc2hTZXQ8
QXRvbWljU3RyaW5nSW1wbCo+KiBzZWxlY3RvckF0dHJzLCBQc2V1ZG9JZCYgZHluYW1pY1BzZXVk
bywgYm9vbCBpc1N1YlNlbGVjdG9yLCBib29sIGVuY291bnRlcmVkTGluaywgUmVuZGVyU3R5bGUq
ID0gMCwgUmVuZGVyU3R5bGUqIGVsZW1lbnRQYXJlbnRTdHlsZSA9IDApIGNvbnN0OworICAgICAg
ICAgICAgYm9vbCBjaGVja1NlbGVjdG9yKENTU1NlbGVjdG9yKiwgRWxlbWVudCosIEhhc2hTZXQ8
QXRvbWljU3RyaW5nSW1wbCo+KiBzZWxlY3RvckF0dHJzLCBQc2V1ZG9JZCYgZHluYW1pY1BzZXVk
bywgYm9vbCBpc1N1YlNlbGVjdG9yLCBib29sIGVuY291bnRlcmVkTGluaywgUmVuZGVyU3R5bGUq
ID0gMCwgUmVuZGVyU3R5bGUqIGVsZW1lbnRQYXJlbnRTdHlsZSA9IDApIGNvbnN0OwogICAgICAg
ICAgICAgYm9vbCBjaGVja09uZVNlbGVjdG9yKENTU1NlbGVjdG9yKiwgRWxlbWVudCosIEhhc2hT
ZXQ8QXRvbWljU3RyaW5nSW1wbCo+KiBzZWxlY3RvckF0dHJzLCBQc2V1ZG9JZCYgZHluYW1pY1Bz
ZXVkbywgYm9vbCBpc1N1YlNlbGVjdG9yLCBSZW5kZXJTdHlsZSosIFJlbmRlclN0eWxlKiBlbGVt
ZW50UGFyZW50U3R5bGUpIGNvbnN0OwogICAgICAgICAgICAgYm9vbCBjaGVja1Njcm9sbGJhclBz
ZXVkb0NsYXNzKENTU1NlbGVjdG9yKiwgUHNldWRvSWQmIGR5bmFtaWNQc2V1ZG8pIGNvbnN0Owog
CkBAIC0yMjgsNiArMjI2LDkgQEAgcHVibGljOgogICAgICAgICAgICAgYm9vbCBtX2RvY3VtZW50
SXNIVE1MOwogICAgICAgICAgICAgbXV0YWJsZSBib29sIG1fbWF0Y2hWaXNpdGVkUHNldWRvQ2xh
c3M7CiAgICAgICAgICAgICBtdXRhYmxlIEhhc2hTZXQ8TGlua0hhc2gsIExpbmtIYXNoSGFzaD4g
bV9saW5rc0NoZWNrZWRGb3JWaXNpdGVkU3RhdGU7CisKKyAgICAgICAgICAgIGNsYXNzIENhbGxT
dGF0ZTsKKyAgICAgICAgICAgIGNsYXNzIENhbGxTdGFjazsKICAgICAgICAgfTsKIAogICAgIHBy
aXZhdGU6Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>