<?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>52683</bug_id>
          
          <creation_ts>2011-01-18 16:51:56 -0800</creation_ts>
          <short_desc>perspective() transform function should take lengths</short_desc>
          <delta_ts>2011-01-24 21:16:27 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>cmarrin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dino</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>shanestephens</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>336214</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-01-18 16:51:56 -0800</bug_when>
    <thetext>The perspective() transform function currently takes a unitless number. It should instead take a Length.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336346</commentid>
    <comment_count>1</comment_count>
      <attachid>79391</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-01-18 22:37:24 -0800</bug_when>
    <thetext>Created attachment 79391
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336347</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-18 22:39:03 -0800</bug_when>
    <thetext>Attachment 79391 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/anim...&quot; exit_code: 1

Source/WebCore/platform/graphics/transforms/PerspectiveTransformOperation.h:44:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Source/WebCore/css/CSSParser.cpp:5319:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 2 in 10 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>336351</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-18 22:49:19 -0800</bug_when>
    <thetext>Attachment 79391 did not build on chromium:
Build output: http://queues.webkit.org/results/7594202</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336356</commentid>
    <comment_count>4</comment_count>
      <attachid>79394</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-01-18 23:13:00 -0800</bug_when>
    <thetext>Created attachment 79394
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336357</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-18 23:16:11 -0800</bug_when>
    <thetext>Attachment 79394 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/anim...&quot; exit_code: 1

Source/WebCore/platform/graphics/transforms/PerspectiveTransformOperation.h:44:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Source/WebCore/css/CSSParser.cpp:5319:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 2 in 10 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>336359</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-18 23:27:35 -0800</bug_when>
    <thetext>Attachment 79391 did not build on gtk:
Build output: http://queues.webkit.org/results/7633060</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336389</commentid>
    <comment_count>7</comment_count>
      <attachid>79394</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2011-01-19 01:20:06 -0800</bug_when>
    <thetext>Comment on attachment 79394
Patch

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

&gt; LayoutTests/transforms/3d/general/3dtransform-values.html:47
&gt; +      { &apos;transform&apos; : &apos;perspective(banana)&apos;, &apos;result&apos; : &apos;none&apos; }, // unit must be length

Test for bare perspective() ?

{ &apos;transform&apos; : &apos;perspective()&apos;, &apos;result&apos; : &apos;none&apos; }

Although maybe it&apos;s already there, just not in this diff.

&gt; Source/WebCore/ChangeLog:9
&gt; +        be a Length, rather than a bare number.

Add a comment to say that bare numbers are still accepted (and are evaluated as px, as $DEITY intended)?

&gt; Source/WebCore/css/CSSStyleSelector.cpp:7057
&gt; +                    // This is a quirk that should go away when 3d transforms are finalized.

I think you should say it is deprecated, but in honesty I&apos;m not sure we can ever make it go away. I don&apos;t see what the deal is with interpreting a bare number as px. In this case there is no possible confusion - the problem is with properties like line-height in which a bare number is a multiplier, not a length.

&gt; Source/WebCore/platform/graphics/transforms/PerspectiveTransformOperation.cpp:59
&gt; +    toT.applyPerspective(toP.calcFloatValue(1));

This is a question to educate me rather than a comment, but why do you pass 1 in as the maxvalue for calcFloatValue? If it is a percentage, then why clamp it? (and what does a percentage used in perspective mean?).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336544</commentid>
    <comment_count>8</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-01-19 08:25:16 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 79394 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=79394&amp;action=review
&gt; 
&gt; &gt; LayoutTests/transforms/3d/general/3dtransform-values.html:47
&gt; &gt; +      { &apos;transform&apos; : &apos;perspective(banana)&apos;, &apos;result&apos; : &apos;none&apos; }, // unit must be length
&gt; 
&gt; Test for bare perspective() ?

It&apos;s handled, but I could add a test, yeah.

&gt; &gt; Source/WebCore/ChangeLog:9
&gt; &gt; +        be a Length, rather than a bare number.
&gt; 
&gt; Add a comment to say that bare numbers are still accepted (and are evaluated as px, as $DEITY intended)?

Sure.

&gt; &gt; Source/WebCore/css/CSSStyleSelector.cpp:7057
&gt; &gt; +                    // This is a quirk that should go away when 3d transforms are finalized.
&gt; 
&gt; I think you should say it is deprecated, but in honesty I&apos;m not sure we can ever make it go away. I don&apos;t see what the deal is with interpreting a bare number as px. In this case there is no possible confusion - the problem is with properties like line-height in which a bare number is a multiplier, not a length.

It should match translate() etc, for which I think we require units.

&gt; &gt; Source/WebCore/platform/graphics/transforms/PerspectiveTransformOperation.cpp:59
&gt; &gt; +    toT.applyPerspective(toP.calcFloatValue(1));
&gt; 
&gt; This is a question to educate me rather than a comment, but why do you pass 1 in as the maxvalue for calcFloatValue? If it is a percentage, then why clamp it? (and what does a percentage used in perspective mean?).

I believe the argument is unused for non-percentage units.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336600</commentid>
    <comment_count>9</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2011-01-19 10:09:36 -0800</bug_when>
    <thetext>(In reply to comment #8)

&gt; &gt; &gt; Source/WebCore/css/CSSStyleSelector.cpp:7057
&gt; &gt; &gt; +                    // This is a quirk that should go away when 3d transforms are finalized.
&gt; &gt; 
&gt; &gt; I think you should say it is deprecated, but in honesty I&apos;m not sure we can ever make it go away. I don&apos;t see what the deal is with interpreting a bare number as px. In this case there is no possible confusion - the problem is with properties like line-height in which a bare number is a multiplier, not a length.
&gt; 
&gt; It should match translate() etc, for which I think we require units.

Obviously I wouldn&apos;t mind if translate didn&apos;t require units :)

&gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/transforms/PerspectiveTransformOperation.cpp:59
&gt; &gt; &gt; +    toT.applyPerspective(toP.calcFloatValue(1));
&gt; &gt; 
&gt; &gt; This is a question to educate me rather than a comment, but why do you pass 1 in as the maxvalue for calcFloatValue? If it is a percentage, then why clamp it? (and what does a percentage used in perspective mean?).
&gt; 
&gt; I believe the argument is unused for non-percentage units.

That&apos;s true, but why clamp it if I put perspective(120%) ? Maybe I misunderstand.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337839</commentid>
    <comment_count>10</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-01-20 20:15:01 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; 
&gt; &gt; &gt; &gt; Source/WebCore/css/CSSStyleSelector.cpp:7057
&gt; &gt; &gt; &gt; +                    // This is a quirk that should go away when 3d transforms are finalized.
&gt; &gt; &gt; 
&gt; &gt; &gt; I think you should say it is deprecated, but in honesty I&apos;m not sure we can ever make it go away. I don&apos;t see what the deal is with interpreting a bare number as px. In this case there is no possible confusion - the problem is with properties like line-height in which a bare number is a multiplier, not a length.
&gt; &gt; 
&gt; &gt; It should match translate() etc, for which I think we require units.
&gt; 
&gt; Obviously I wouldn&apos;t mind if translate didn&apos;t require units :)

We have to use units in CSS. This ain&apos;t SVG!

&gt; &gt; &gt; &gt; Source/WebCore/platform/graphics/transforms/PerspectiveTransformOperation.cpp:59
&gt; &gt; &gt; &gt; +    toT.applyPerspective(toP.calcFloatValue(1));
&gt; &gt; &gt; 
&gt; &gt; &gt; This is a question to educate me rather than a comment, but why do you pass 1 in as the maxvalue for calcFloatValue? If it is a percentage, then why clamp it? (and what does a percentage used in perspective mean?).
&gt; &gt; 
&gt; &gt; I believe the argument is unused for non-percentage units.
&gt; 
&gt; That&apos;s true, but why clamp it if I put perspective(120%) ? Maybe I misunderstand.

Percentages are not allowed in perspective(), only lengths.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338156</commentid>
    <comment_count>11</comment_count>
      <attachid>79394</attachid>
    <who name="Chris Marrin">cmarrin</who>
    <bug_when>2011-01-21 10:45:08 -0800</bug_when>
    <thetext>Comment on attachment 79394
Patch

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

r=me after possibly clarifying a couple of lines and fixing the style issues.

&gt;&gt;&gt; Source/WebCore/css/CSSStyleSelector.cpp:7057
&gt;&gt;&gt; +                    // This is a quirk that should go away when 3d transforms are finalized.
&gt;&gt; 
&gt;&gt; I think you should say it is deprecated, but in honesty I&apos;m not sure we can ever make it go away. I don&apos;t see what the deal is with interpreting a bare number as px. In this case there is no possible confusion - the problem is with properties like line-height in which a bare number is a multiplier, not a length.
&gt; 
&gt; It should match translate() etc, for which I think we require units.

Also, you should say what the quirk is (which I think is that we still accept bare naked numbers in perspective())

&gt; Source/WebCore/css/CSSStyleSelector.cpp:7060
&gt; +                    val = min&lt;double&gt;(val, numeric_limits&lt;int&gt;::max());

Wow, this looks icky. You really have to use templates here? It sure hides what you&apos;re actually doing in all that noise.

&gt; Source/WebCore/platform/graphics/transforms/PerspectiveTransformOperation.cpp:38
&gt; +    return static_cast&lt;int&gt;(max&lt;double&gt;(min&lt;double&gt;(val, numeric_limits&lt;int&gt;::max()), 0));

Again, holy obfuscation Batman, what is this actually doing? Maybe at least split this into 3 lines: max, min and cast?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339469</commentid>
    <comment_count>12</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-01-24 21:16:27 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/76568</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79391</attachid>
            <date>2011-01-18 22:37:24 -0800</date>
            <delta_ts>2011-01-18 23:12:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52683-20110118223723.patch</filename>
            <type>text/plain</type>
            <size>14289</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzNzhmMWU1M2FmMWZiYjVkNzg3MDk0NmZjMjAyYTA4MTljYzdkZjFkLi5lY2M0OTE4
MmU2NGFjMDE0YzJmY2QzZTkyY2U4ZTU1MmJhOWE2MzU2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTEtMDEtMTggIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgcGVyc3BlY3RpdmUo
KSB0cmFuc2Zvcm0gZnVuY3Rpb24gc2hvdWxkIHRha2UgbGVuZ3RocworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI2ODMKKyAgICAgICAgCisgICAgICAg
IEFkZCB0ZXN0cyBmb3IgcGVyc3BlY3RpdmUoKSBoYW5kbGluZywgYW5kIGludGVycG9sYXRpb24g
Zm9yIGFuaW1hdGlvbi4KKworICAgICAgICAqIGFuaW1hdGlvbnMvM2QvdHJhbnNmb3JtLXBlcnNw
ZWN0aXZlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogYW5pbWF0aW9ucy8zZC90cmFu
c2Zvcm0tcGVyc3BlY3RpdmUuaHRtbDogQWRkZWQuCisgICAgICAgICogdHJhbnNmb3Jtcy8zZC9n
ZW5lcmFsLzNkdHJhbnNmb3JtLXZhbHVlcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogdHJhbnNm
b3Jtcy8zZC9nZW5lcmFsLzNkdHJhbnNmb3JtLXZhbHVlcy5odG1sOgorCiAyMDExLTAxLTE4ICBN
YWNpZWogU3RhY2hvd2lhayAgPG1qc0BhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
U2FtIFdlaW5pZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvM2QvdHJhbnNm
b3JtLXBlcnNwZWN0aXZlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvM2Qv
dHJhbnNmb3JtLXBlcnNwZWN0aXZlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZTY4MjI5Yjg4
M2M4MTk1Y2Q0MzZmZTBhODY5ODgwYmQ2YTdjYTY4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvYW5pbWF0aW9ucy8zZC90cmFuc2Zvcm0tcGVyc3BlY3RpdmUtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMyBAQAorUEFTUyAtICJ3ZWJraXRUcmFuc2Zvcm0iIHByb3BlcnR5IGZvciAiYm94
IiBlbGVtZW50IGF0IDAuNXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMSwwLDAsMCwwLDEsMCww
LDAsMCwxLC0wLjAwNzUsMCwwLDAsMQorUEFTUyAtICJ3ZWJraXRUcmFuc2Zvcm0iIHByb3BlcnR5
IGZvciAiYm94MiIgZWxlbWVudCBhdCAwLjVzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDEsMCww
LDAsMCwxLDAsMCwwLDAsMSwtMC4wMDE5OSwwLDAsMCwxCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2FuaW1hdGlvbnMvM2QvdHJhbnNmb3JtLXBlcnNwZWN0aXZlLmh0bWwgYi9MYXlvdXRUZXN0
cy9hbmltYXRpb25zLzNkL3RyYW5zZm9ybS1wZXJzcGVjdGl2ZS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFj
MGFjNDRiODMzYjAyZjI3NDNkNjJlZWJkNTU1NTgxYzlkZDQ0NGIKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9hbmltYXRpb25zLzNkL3RyYW5zZm9ybS1wZXJzcGVjdGl2ZS5odG1sCkBA
IC0wLDAgKzEsNTQgQEAKKzwhRE9DVFlQRSBodG1sPgorCis8aHRtbD4KKzxoZWFkPgorICA8c3R5
bGUgdHlwZT0idGV4dC9jc3MiPgorICAgIC5ib3ggeworICAgICAgaGVpZ2h0OiAxMDBweDsKKyAg
ICAgIHdpZHRoOiAxMDBweDsKKyAgICAgIGJhY2tncm91bmQtY29sb3I6IGJsdWU7CisgICAgfQor
ICAgIAorICAgICNib3ggeworICAgICAgLXdlYmtpdC1hbmltYXRpb246IGFuaW0gMnMgbGluZWFy
OworICAgIH0KKyAgICAKKyAgICAjYm94MiB7CisgICAgICAtd2Via2l0LWFuaW1hdGlvbjogYW5p
bTIgMnMgbGluZWFyOworICAgIH0KKworICAgIEAtd2Via2l0LWtleWZyYW1lcyBhbmltIHsKKyAg
ICAgICAgZnJvbSB7IC13ZWJraXQtdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSgxMDBweCk7IH0KKyAg
ICAgICAgdG8gICB7IC13ZWJraXQtdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSgyMDBweCk7IH0KKyAg
ICB9CisKKyAgICBALXdlYmtpdC1rZXlmcmFtZXMgYW5pbTIgeworICAgICAgICBmcm9tIHsgLXdl
YmtpdC10cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDEwMDBweCk7IH0KKyAgICAgICAgdG8gICB7IC13
ZWJraXQtdHJhbnNmb3JtOiBub25lOyB9CisgICAgfQorICA8L3N0eWxlPgorICA8c2NyaXB0IHNy
Yz0iLi4vYW5pbWF0aW9uLXRlc3QtaGVscGVycy5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48
L3NjcmlwdD4KKyAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIGNvbnN0IGV4
cGVjdGVkVmFsdWVzID0gWworICAgICAgLy8gW3RpbWUsIGVsZW1lbnQtaWQsIHByb3BlcnR5LCBl
eHBlY3RlZC12YWx1ZSwgdG9sZXJhbmNlXQorICAgICAgWyJhbmltIiwgIDAuNSwgImJveCIsICAi
d2Via2l0VHJhbnNmb3JtIiwgWzEsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDEsIC0wLjAw
NzUsIDAsIDAsIDAsIDFdLCAwLjAwMl0sCisgICAgICBbImFuaW0yIiwgMC41LCAiYm94MiIsICJ3
ZWJraXRUcmFuc2Zvcm0iLCBbMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMSwgLTAuMDAx
OTksIDAsIDAsIDAsIDFdLCAwLjAwMl0sCisgICAgXTsKKyAgICAKKyAgICBmdW5jdGlvbiBzZXR1
cFRlc3QoKQorICAgIHsKKyAgICAgIHZhciBib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
Ym94Jyk7CisgICAgICBib3guc3R5bGUud2Via2l0VHJhbnNmb3JtID0gJ3BlcnNwZWN0aXZlKDEw
MDBweCkgcm90YXRlWCg5MGRlZyknOworICAgIH0KKyAgICAKKyAgICBydW5BbmltYXRpb25UZXN0
KGV4cGVjdGVkVmFsdWVzKTsKKyAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKworPGRpdiBj
bGFzcz0iYm94IiBpZD0iYm94Ij48L2Rpdj4KKzxkaXYgY2xhc3M9ImJveCIgaWQ9ImJveDIiPjwv
ZGl2PgorPGRpdiBpZD0icmVzdWx0Ij48L2Rpdj4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvdHJhbnNmb3Jtcy8zZC9nZW5lcmFsLzNkdHJhbnNmb3JtLXZhbHVl
cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90cmFuc2Zvcm1zLzNkL2dlbmVyYWwvM2R0cmFu
c2Zvcm0tdmFsdWVzLWV4cGVjdGVkLnR4dAppbmRleCAzNTNkM2Y4NGQ0NDg0YzQ0NjM3Nzk2Njky
ZGI5ZTQyODM0OTY1MjZjLi5iMmM5Njk4YmE3MDQyYzYzZTc0YmViOGI3NmZkOWNjMTViOTA5NGNl
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy90cmFuc2Zvcm1zLzNkL2dlbmVyYWwvM2R0cmFuc2Zv
cm0tdmFsdWVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy90cmFuc2Zvcm1zLzNkL2dl
bmVyYWwvM2R0cmFuc2Zvcm0tdmFsdWVzLWV4cGVjdGVkLnR4dApAQCAtOSw0ICs5LDEyIEBAIHRy
YW5zZm9ybSAidHJhbnNsYXRlWigxMCkiIGV4cGVjdGVkICJub25lIiA6IFBBU1MKIHRyYW5zZm9y
bSAicm90YXRlM2QoMCwgMSwgMCwgMTgwKSIgZXhwZWN0ZWQgIm5vbmUiIDogUEFTUwogdHJhbnNm
b3JtICJyb3RhdGUzZCgwLCAxLCAwLCAxODBweCkiIGV4cGVjdGVkICJub25lIiA6IFBBU1MKIHRy
YW5zZm9ybSAicm90YXRlM2QoMCwgMSwgMCwgMTgwcHgpIiBleHBlY3RlZCAibm9uZSIgOiBQQVNT
Cit0cmFuc2Zvcm0gInBlcnNwZWN0aXZlKDQwMCkiIGV4cGVjdGVkICJtYXRyaXgzZCgxLCAwLCAw
LCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAxLCAtMC4wMDI1LCAwLCAwLCAwLCAxKSIgOiBQQVNTCit0
cmFuc2Zvcm0gInBlcnNwZWN0aXZlKDQwMHB4KSIgZXhwZWN0ZWQgIm1hdHJpeDNkKDEsIDAsIDAs
IDAsIDAsIDEsIDAsIDAsIDAsIDAsIDEsIC0wLjAwMjUsIDAsIDAsIDAsIDEpIiA6IFBBU1MKK3Ry
YW5zZm9ybSAicGVyc3BlY3RpdmUoNDAwZW0pIiBleHBlY3RlZCAibWF0cml4M2QoMSwgMCwgMCwg
MCwgMCwgMSwgMCwgMCwgMCwgMCwgMSwgLTAuMDAwMTU2MjUsIDAsIDAsIDAsIDEpIiA6IFBBU1MK
K3RyYW5zZm9ybSAicGVyc3BlY3RpdmUoNTAlKSIgZXhwZWN0ZWQgIm5vbmUiIDogUEFTUwordHJh
bnNmb3JtICJwZXJzcGVjdGl2ZSgtNDAwKSIgZXhwZWN0ZWQgIm5vbmUiIDogUEFTUwordHJhbnNm
b3JtICJwZXJzcGVjdGl2ZSgwKSIgZXhwZWN0ZWQgIm1hdHJpeCgxLCAwLCAwLCAxLCAwLCAwKSIg
OiBQQVNTCit0cmFuc2Zvcm0gInBlcnNwZWN0aXZlKDQwMGRlZykiIGV4cGVjdGVkICJub25lIiA6
IFBBU1MKK3RyYW5zZm9ybSAicGVyc3BlY3RpdmUoYmFuYW5hKSIgZXhwZWN0ZWQgIm5vbmUiIDog
UEFTUwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90cmFuc2Zvcm1zLzNkL2dlbmVyYWwvM2R0
cmFuc2Zvcm0tdmFsdWVzLmh0bWwgYi9MYXlvdXRUZXN0cy90cmFuc2Zvcm1zLzNkL2dlbmVyYWwv
M2R0cmFuc2Zvcm0tdmFsdWVzLmh0bWwKaW5kZXggZjZhMWVhOWZiNDNkOTk2ZDlkNmVhY2MzYzE3
NWFmYWY1NzBjMjQyMi4uNjAzOTMyNjEzMGE2MGNhMTIyNGMwOGMwMTUwYzJjNzEwYWU2NTExNiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvdHJhbnNmb3Jtcy8zZC9nZW5lcmFsLzNkdHJhbnNmb3Jt
LXZhbHVlcy5odG1sCisrKyBiL0xheW91dFRlc3RzL3RyYW5zZm9ybXMvM2QvZ2VuZXJhbC8zZHRy
YW5zZm9ybS12YWx1ZXMuaHRtbApAQCAtMzcsNiArMzcsMTQgQEAKICAgICAgIHsgJ3RyYW5zZm9y
bScgOiAncm90YXRlM2QoMCwgMSwgMCwgMTgwKScsICdyZXN1bHQnIDogJ25vbmUnIH0sIC8vIGxh
c3QgdmFsdWUgbXVzdCBiZSBhbiBhbmdsZQogICAgICAgeyAndHJhbnNmb3JtJyA6ICdyb3RhdGUz
ZCgwLCAxLCAwLCAxODBweCknLCAncmVzdWx0JyA6ICdub25lJyB9LCAvLyBsYXN0IHZhbHVlIG11
c3QgYmUgYW4gYW5nbGUKICAgICAgIHsgJ3RyYW5zZm9ybScgOiAncm90YXRlM2QoMCwgMSwgMCwg
MTgwcHgpJywgJ3Jlc3VsdCcgOiAnbm9uZScgfSwgLy8gbGFzdCB2YWx1ZSBtdXN0IGJlIGFuIGFu
Z2xlCisgICAgICB7ICd0cmFuc2Zvcm0nIDogJ3BlcnNwZWN0aXZlKDQwMCknLCAncmVzdWx0JyA6
ICdtYXRyaXgzZCgxLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAxLCAtMC4wMDI1LCAwLCAw
LCAwLCAxKScgfSwgLy8gbGVnYWN5CisgICAgICB7ICd0cmFuc2Zvcm0nIDogJ3BlcnNwZWN0aXZl
KDQwMHB4KScsICdyZXN1bHQnIDogJ21hdHJpeDNkKDEsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAs
IDAsIDEsIC0wLjAwMjUsIDAsIDAsIDAsIDEpJyB9LAorICAgICAgeyAndHJhbnNmb3JtJyA6ICdw
ZXJzcGVjdGl2ZSg0MDBlbSknLCAncmVzdWx0JyA6ICdtYXRyaXgzZCgxLCAwLCAwLCAwLCAwLCAx
LCAwLCAwLCAwLCAwLCAxLCAtMC4wMDAxNTYyNSwgMCwgMCwgMCwgMSknIH0sCisgICAgICB7ICd0
cmFuc2Zvcm0nIDogJ3BlcnNwZWN0aXZlKDUwJSknLCAncmVzdWx0JyA6ICdub25lJyB9LAorICAg
ICAgeyAndHJhbnNmb3JtJyA6ICdwZXJzcGVjdGl2ZSgtNDAwKScsICdyZXN1bHQnIDogJ25vbmUn
IH0sCisgICAgICB7ICd0cmFuc2Zvcm0nIDogJ3BlcnNwZWN0aXZlKDApJywgJ3Jlc3VsdCcgOiAn
bWF0cml4KDEsIDAsIDAsIDEsIDAsIDApJyB9LAorICAgICAgeyAndHJhbnNmb3JtJyA6ICdwZXJz
cGVjdGl2ZSg0MDBkZWcpJywgJ3Jlc3VsdCcgOiAnbm9uZScgfSwgLy8gdW5pdCBtdXN0IGJlIGxl
bmd0aAorICAgICAgeyAndHJhbnNmb3JtJyA6ICdwZXJzcGVjdGl2ZShiYW5hbmEpJywgJ3Jlc3Vs
dCcgOiAnbm9uZScgfSwgLy8gdW5pdCBtdXN0IGJlIGxlbmd0aAogICAgIF07CiAgICAgCiAgICAg
ZnVuY3Rpb24gcnVuVGVzdHMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDAwZjFlMjE4YjM1OWYzZTUxYjFhMjRi
ZTdhN2I0NWUyNzA3MjE1YWMuLjMzMzEzNGFhNWZlZjVhYjdjYjNmNWZmMTg1NGJlMDE5MDI1MDM5
ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAxMS0wMS0xOCAgU2ltb24gRnJhc2Vy
ICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBwZXJzcGVjdGl2ZSgpIHRyYW5zZm9ybSBmdW5jdGlvbiBzaG91
bGQgdGFrZSBsZW5ndGhzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01MjY4MworICAgICAgICAKKyAgICAgICAgVGhlIGFyZ3VtZW50IHRvIHRoZSBwZXJz
cGVjdGl2ZSgpIHRyYW5zZm9ybSBmdW5jdGlvbiBzaG91bGQKKyAgICAgICAgYmUgYSBMZW5ndGgs
IHJhdGhlciB0aGFuIGEgYmFyZSBudW1iZXIuCisKKyAgICAgICAgVGVzdDogYW5pbWF0aW9ucy8z
ZC90cmFuc2Zvcm0tcGVyc3BlY3RpdmUuaHRtbAorCisgICAgICAgICogY3NzL0NTU1BhcnNlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlVHJhbnNmb3JtKTogQ2hlY2sg
dGhlIHVuaXRzIGZvciB0aGUgcGVyc3BlY3RpdmUoKQorICAgICAgICBmdW5jdGlvbi4gQWxsb3cg
YmFyZSBudW1iZXJzIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS4KKyAgICAgICAgKiBjc3Mv
Q1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9y
OjpjcmVhdGVUcmFuc2Zvcm1PcGVyYXRpb25zKTogQ29udmVydAorICAgICAgICB2YWx1ZSB0byBM
ZW5ndGguCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9QZXJzcGVjdGl2
ZVRyYW5zZm9ybU9wZXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjbGFtcFRvUG9zdGl2
ZUludGVnZXIpOiBIZWxwZXIuCisgICAgICAgIChXZWJDb3JlOjpQZXJzcGVjdGl2ZVRyYW5zZm9y
bU9wZXJhdGlvbjo6YmxlbmQpOiBCbGVuZCB2aWEgTGVuZ3Rocy4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL1BlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKTog
ZG91YmxlIC0+IExlbmd0aC4KKyAgICAgICAgKFdlYkNvcmU6OlBlcnNwZWN0aXZlVHJhbnNmb3Jt
T3BlcmF0aW9uOjpwZXJzcGVjdGl2ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UGVyc3Bl
Y3RpdmVUcmFuc2Zvcm1PcGVyYXRpb246OmlzSWRlbnRpdHkpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OlBlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uOjphcHBseSk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6UGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb246OlBlcnNwZWN0aXZl
VHJhbnNmb3JtT3BlcmF0aW9uKTogQXNzZXJ0CisgICAgICAgIHRoYXQgdGhlIExlbmd0aCBpcyBh
IGZpeGVkIHR5cGUuCisKIDIwMTEtMDEtMTggTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xl
LmNvbT4KIAogICAgICAgICBSZWZhY3RvcmluZzogRXZlbnRIYW5kbGVyOjpoYW5kbGVUZXh0SW5w
dXRFdmVudCBzaG91bGQgYWNjZXB0IGFuIGVudW0gaW5zdGVhZCBvZiBib29scy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1BhcnNlci5jcHAKaW5kZXggYTRkZWQ2NTcyNDFkOGZmYTVmNDE5OWFlNmQxYmRjOGJmMTQ3
M2M5ZS4uODkyMjBjZGYxMjA2NzE0MGYyZWVmNzZmYjJlNTdjMDk3N2Y5ZjUwZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5jcHAKQEAgLTUzMTYsNiArNTMxNiwxMCBAQCBQYXNzUmVmUHRyPENTU1Zh
bHVlTGlzdD4gQ1NTUGFyc2VyOjpwYXJzZVRyYW5zZm9ybSgpCiAgICAgICAgICAgICAgICAgLy8g
MXN0IHBhcmFtIG9mIHRyYW5zbGF0ZVooKSBjYW5ub3QgYmUgYSBwZXJjZW50YWdlCiAgICAgICAg
ICAgICAgICAgaWYgKCF2YWxpZFVuaXQoYSwgRkxlbmd0aCwgdHJ1ZSkpCiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfSBlbHNlIGlmIChpbmZvLnR5cGUoKSA9PSBX
ZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6UGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24gJiYg
YXJnTnVtYmVyID09IDApIHsKKyAgICAgICAgICAgICAgICAvLyAxc3QgcGFyYW0gb2YgcGVyc3Bl
Y3RpdmUoKSBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlciAoZGVwcmVjYXRlZCkgb3IgbGVu
Z3RoLgorICAgICAgICAgICAgICAgIGlmICghdmFsaWRVbml0KGEsIEZOdW1iZXIgfCBGTGVuZ3Ro
IHwgRk5vbk5lZywgdHJ1ZSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAg
ICAgICAgfSBlbHNlIGlmICghdmFsaWRVbml0KGEsIHVuaXQsIHRydWUpKQogICAgICAgICAgICAg
ICAgIHJldHVybiAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVT
ZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKaW5k
ZXggZmMwNzIyYWQ1MTAzMjIxZjEwMGQzNmI0Y2RkNDc5NDQ1M2RhOTM1ZC4uNzM5MDg3NmMwZjIw
YTBlYzU2ODU2MzE4NTMxZWZjOWU4Zjc0NTVmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHls
ZVNlbGVjdG9yLmNwcApAQCAtNzA0OSw5ICs3MDQ5LDIxIEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rv
cjo6Y3JlYXRlVHJhbnNmb3JtT3BlcmF0aW9ucyhDU1NWYWx1ZSogaW5WYWx1ZSwgUmVuZGVyU3R5
bGUqCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9ICAgCiAgICAgICAgICAg
ICBjYXNlIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJh
dGlvbjogewotICAgICAgICAgICAgICAgIGRvdWJsZSBwID0gZmlyc3RWYWx1ZS0+Z2V0RG91Ymxl
VmFsdWUoKTsKLSAgICAgICAgICAgICAgICBpZiAocCA8IDAuMCkKKyAgICAgICAgICAgICAgICBi
b29sIG9rID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBMZW5ndGggcCA9IExlbmd0aCgwLCBGaXhl
ZCk7CisgICAgICAgICAgICAgICAgaWYgKENTU1ByaW1pdGl2ZVZhbHVlOjppc1VuaXRUeXBlTGVu
Z3RoKGZpcnN0VmFsdWUtPnByaW1pdGl2ZVR5cGUoKSkpCisgICAgICAgICAgICAgICAgICAgIHAg
PSBjb252ZXJ0VG9MZW5ndGgoZmlyc3RWYWx1ZSwgc3R5bGUsIHJvb3RTdHlsZSwgem9vbUZhY3Rv
ciwgJm9rKTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLy8g
VGhpcyBpcyBhIHF1aXJrIHRoYXQgc2hvdWxkIGdvIGF3YXkgd2hlbiAzZCB0cmFuc2Zvcm1zIGFy
ZSBmaW5hbGl6ZWQuCisgICAgICAgICAgICAgICAgICAgIGRvdWJsZSB2YWwgPSBmaXJzdFZhbHVl
LT5nZXREb3VibGVWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICBvayA9IHZhbCA+PSAwOwor
ICAgICAgICAgICAgICAgICAgICB2YWwgPSBtaW48ZG91YmxlPih2YWwsIG51bWVyaWNfbGltaXRz
PGludD46Om1heCgpKTsKKyAgICAgICAgICAgICAgICAgICAgcCA9IExlbmd0aChzdGF0aWNfY2Fz
dDxpbnQ+KHZhbCksIEZpeGVkKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
CisgICAgICAgICAgICAgICAgaWYgKCFvaykKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworCiAgICAgICAgICAgICAgICAgb3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5kKFBl
cnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUocCkpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9QZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1BlcnNwZWN0aXZl
VHJhbnNmb3JtT3BlcmF0aW9uLmNwcAppbmRleCA5ZmQwM2ExMjgyMWY5NTRiMDM2OTVjYTQwZDBj
YjNmOTVkMDEyYzg5Li4yNzMyMzgzZGM4YWRmN2UxOTQyOGM0MTM1NzA4MWMzYTliMDkyZmU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1Bl
cnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1BlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uLmNw
cApAQCAtMzIsMjcgKzMyLDM5IEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorc3RhdGljIGludCBjbGFtcFRvUG9zdGl2ZUludGVnZXIoZG91YmxlIHZhbCkK
K3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihtYXg8ZG91YmxlPihtaW48ZG91YmxlPih2
YWwsIG51bWVyaWNfbGltaXRzPGludD46Om1heCgpKSwgMCkpOworfQorCiBQYXNzUmVmUHRyPFRy
YW5zZm9ybU9wZXJhdGlvbj4gUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb246OmJsZW5kKGNv
bnN0IFRyYW5zZm9ybU9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5k
VG9JZGVudGl0eSkKIHsKICAgICBpZiAoZnJvbSAmJiAhZnJvbS0+aXNTYW1lVHlwZSgqdGhpcykp
CiAgICAgICAgIHJldHVybiB0aGlzOwogICAgIAotICAgIGlmIChibGVuZFRvSWRlbnRpdHkpCi0g
ICAgICAgIHJldHVybiBQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKG1fcCAr
ICgxLiAtIG1fcCkgKiBwcm9ncmVzcyk7CisgICAgaWYgKGJsZW5kVG9JZGVudGl0eSkgeworICAg
ICAgICBkb3VibGUgcCA9IG1fcC5jYWxjRmxvYXRWYWx1ZSgxKTsKKyAgICAgICAgcCA9IHAgKyAo
MS4gLSBwKSAqIHByb2dyZXNzOyAvLyBGSVhNRTogdGhpcyBzZWVtcyB3cm9uZy4gaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyNzAwCisgICAgICAgIHJldHVybiBQZXJz
cGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKExlbmd0aChjbGFtcFRvUG9zdGl2ZUlu
dGVnZXIocCksIEZpeGVkKSk7CisgICAgfQogICAgIAogICAgIGNvbnN0IFBlcnNwZWN0aXZlVHJh
bnNmb3JtT3BlcmF0aW9uKiBmcm9tT3AgPSBzdGF0aWNfY2FzdDxjb25zdCBQZXJzcGVjdGl2ZVRy
YW5zZm9ybU9wZXJhdGlvbio+KGZyb20pOwotICAgIGRvdWJsZSBmcm9tUCA9IGZyb21PcCA/IGZy
b21PcC0+bV9wIDogMDsKLSAgICBkb3VibGUgdG9QID0gbV9wOworICAgIExlbmd0aCBmcm9tUCA9
IGZyb21PcCA/IGZyb21PcC0+bV9wIDogTGVuZ3RoKG1fcC50eXBlKCkpOworICAgIExlbmd0aCB0
b1AgPSBtX3A7CiAKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBmcm9tVDsKICAgICBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCB0b1Q7Ci0gICAgZnJvbVQuYXBwbHlQZXJzcGVjdGl2ZShmcm9tUCk7Ci0g
ICAgdG9ULmFwcGx5UGVyc3BlY3RpdmUodG9QKTsKKyAgICBmcm9tVC5hcHBseVBlcnNwZWN0aXZl
KGZyb21QLmNhbGNGbG9hdFZhbHVlKDEpKTsKKyAgICB0b1QuYXBwbHlQZXJzcGVjdGl2ZSh0b1Au
Y2FsY0Zsb2F0VmFsdWUoMSkpOwogICAgIHRvVC5ibGVuZChmcm9tVCwgcHJvZ3Jlc3MpOwogICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4OjpEZWNvbXBvc2VkVHlwZSBkZWNvbXA7CiAgICAgdG9ULmRl
Y29tcG9zZShkZWNvbXApOwotICAgIAotICAgIHJldHVybiBQZXJzcGVjdGl2ZVRyYW5zZm9ybU9w
ZXJhdGlvbjo6Y3JlYXRlKGRlY29tcC5wZXJzcGVjdGl2ZVogPyAtMS4wIC8gZGVjb21wLnBlcnNw
ZWN0aXZlWiA6IDAuMCk7CisKKyAgICBpZiAoZGVjb21wLnBlcnNwZWN0aXZlWikgeworICAgICAg
ICBkb3VibGUgdmFsID0gLTEuMCAvIGRlY29tcC5wZXJzcGVjdGl2ZVo7CisgICAgICAgIHJldHVy
biBQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKExlbmd0aChjbGFtcFRvUG9z
dGl2ZUludGVnZXIodmFsKSwgRml4ZWQpKTsKKyAgICB9CisgICAgcmV0dXJuIFBlcnNwZWN0aXZl
VHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoTGVuZ3RoKDAsIEZpeGVkKSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RyYW5zZm9ybXMvUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvUGVyc3BlY3RpdmVUcmFuc2Zv
cm1PcGVyYXRpb24uaAppbmRleCA4MzRjYzgzMDllMmI3NTdiNzU0MmEwN2FlMGIyNzg3NTI1MWVm
OWZhLi44ODZkM2RjZWM2NTIxNTM3MzQ3MDFhNDZiMzRhZjlmZDE2N2E2MDQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1BlcnNwZWN0aXZl
VHJhbnNmb3JtT3BlcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdHJhbnNmb3Jtcy9QZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbi5oCkBAIC0yNiwyMSAr
MjYsMjIgQEAKICNpZm5kZWYgUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb25faAogI2RlZmlu
ZSBQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbl9oCiAKKyNpbmNsdWRlICJMZW5ndGguaCIK
ICNpbmNsdWRlICJUcmFuc2Zvcm1PcGVyYXRpb24uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbiA6IHB1YmxpYyBUcmFuc2Zvcm1P
cGVyYXRpb24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBlcnNwZWN0aXZlVHJh
bnNmb3JtT3BlcmF0aW9uPiBjcmVhdGUoZG91YmxlIHApCisgICAgc3RhdGljIFBhc3NSZWZQdHI8
UGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24+IGNyZWF0ZShjb25zdCBMZW5ndGgmIHApCiAg
ICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBlcnNwZWN0aXZlVHJhbnNmb3JtT3Bl
cmF0aW9uKHApKTsKICAgICB9CiAKLSAgICBkb3VibGUgcGVyc3BlY3RpdmUoKSBjb25zdCB7IHJl
dHVybiBtX3A7IH0KKyAgICBMZW5ndGggcGVyc3BlY3RpdmUoKSBjb25zdCB7IHJldHVybiBtX3A7
IH0KICAgICAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIGlzSWRlbnRpdHkoKSBjb25zdCB7
IHJldHVybiBtX3AgPT0gMDsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0lkZW50aXR5KCkgY29uc3Qg
eyByZXR1cm4gbV9wLmNhbGNGbG9hdFZhbHVlKDEpID09IDA7IH0KICAgICB2aXJ0dWFsIE9wZXJh
dGlvblR5cGUgZ2V0T3BlcmF0aW9uVHlwZSgpIGNvbnN0IHsgcmV0dXJuIFBFUlNQRUNUSVZFOyB9
CiAgICAgdmlydHVhbCBib29sIGlzU2FtZVR5cGUoY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uJiBv
KSBjb25zdCB7IHJldHVybiBvLmdldE9wZXJhdGlvblR5cGUoKSA9PSBQRVJTUEVDVElWRTsgfQog
CkBAIC01NCwxOCArNTUsMTkgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCBhcHBseShU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBJbnRTaXplJikgY29uc3QKICAg
ICB7Ci0gICAgICAgIHRyYW5zZm9ybS5hcHBseVBlcnNwZWN0aXZlKG1fcCk7CisgICAgICAgIHRy
YW5zZm9ybS5hcHBseVBlcnNwZWN0aXZlKG1fcC5jYWxjRmxvYXRWYWx1ZSgxKSk7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VHJhbnNmb3Jt
T3BlcmF0aW9uPiBibGVuZChjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24qIGZyb20sIGRvdWJsZSBw
cm9ncmVzcywgYm9vbCBibGVuZFRvSWRlbnRpdHkgPSBmYWxzZSk7CiAKLSAgICBQZXJzcGVjdGl2
ZVRyYW5zZm9ybU9wZXJhdGlvbihkb3VibGUgcCkKKyAgICBQZXJzcGVjdGl2ZVRyYW5zZm9ybU9w
ZXJhdGlvbihjb25zdCBMZW5ndGgmIHApCiAgICAgICAgIDogbV9wKHApCiAgICAgeworICAgICAg
ICBBU1NFUlQocC5pc0ZpeGVkKCkpOwogICAgIH0KIAotICAgIGRvdWJsZSBtX3A7CisgICAgTGVu
Z3RoIG1fcDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79394</attachid>
            <date>2011-01-18 23:13:00 -0800</date>
            <delta_ts>2011-01-21 10:45:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52683-20110118231258.patch</filename>
            <type>text/plain</type>
            <size>14379</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzNzhmMWU1M2FmMWZiYjVkNzg3MDk0NmZjMjAyYTA4MTljYzdkZjFkLi5lY2M0OTE4
MmU2NGFjMDE0YzJmY2QzZTkyY2U4ZTU1MmJhOWE2MzU2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTEtMDEtMTggIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgcGVyc3BlY3RpdmUo
KSB0cmFuc2Zvcm0gZnVuY3Rpb24gc2hvdWxkIHRha2UgbGVuZ3RocworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTI2ODMKKyAgICAgICAgCisgICAgICAg
IEFkZCB0ZXN0cyBmb3IgcGVyc3BlY3RpdmUoKSBoYW5kbGluZywgYW5kIGludGVycG9sYXRpb24g
Zm9yIGFuaW1hdGlvbi4KKworICAgICAgICAqIGFuaW1hdGlvbnMvM2QvdHJhbnNmb3JtLXBlcnNw
ZWN0aXZlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogYW5pbWF0aW9ucy8zZC90cmFu
c2Zvcm0tcGVyc3BlY3RpdmUuaHRtbDogQWRkZWQuCisgICAgICAgICogdHJhbnNmb3Jtcy8zZC9n
ZW5lcmFsLzNkdHJhbnNmb3JtLXZhbHVlcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogdHJhbnNm
b3Jtcy8zZC9nZW5lcmFsLzNkdHJhbnNmb3JtLXZhbHVlcy5odG1sOgorCiAyMDExLTAxLTE4ICBN
YWNpZWogU3RhY2hvd2lhayAgPG1qc0BhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
U2FtIFdlaW5pZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvM2QvdHJhbnNm
b3JtLXBlcnNwZWN0aXZlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvM2Qv
dHJhbnNmb3JtLXBlcnNwZWN0aXZlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZTY4MjI5Yjg4
M2M4MTk1Y2Q0MzZmZTBhODY5ODgwYmQ2YTdjYTY4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvYW5pbWF0aW9ucy8zZC90cmFuc2Zvcm0tcGVyc3BlY3RpdmUtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMyBAQAorUEFTUyAtICJ3ZWJraXRUcmFuc2Zvcm0iIHByb3BlcnR5IGZvciAiYm94
IiBlbGVtZW50IGF0IDAuNXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMSwwLDAsMCwwLDEsMCww
LDAsMCwxLC0wLjAwNzUsMCwwLDAsMQorUEFTUyAtICJ3ZWJraXRUcmFuc2Zvcm0iIHByb3BlcnR5
IGZvciAiYm94MiIgZWxlbWVudCBhdCAwLjVzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDEsMCww
LDAsMCwxLDAsMCwwLDAsMSwtMC4wMDE5OSwwLDAsMCwxCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2FuaW1hdGlvbnMvM2QvdHJhbnNmb3JtLXBlcnNwZWN0aXZlLmh0bWwgYi9MYXlvdXRUZXN0
cy9hbmltYXRpb25zLzNkL3RyYW5zZm9ybS1wZXJzcGVjdGl2ZS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFj
MGFjNDRiODMzYjAyZjI3NDNkNjJlZWJkNTU1NTgxYzlkZDQ0NGIKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9hbmltYXRpb25zLzNkL3RyYW5zZm9ybS1wZXJzcGVjdGl2ZS5odG1sCkBA
IC0wLDAgKzEsNTQgQEAKKzwhRE9DVFlQRSBodG1sPgorCis8aHRtbD4KKzxoZWFkPgorICA8c3R5
bGUgdHlwZT0idGV4dC9jc3MiPgorICAgIC5ib3ggeworICAgICAgaGVpZ2h0OiAxMDBweDsKKyAg
ICAgIHdpZHRoOiAxMDBweDsKKyAgICAgIGJhY2tncm91bmQtY29sb3I6IGJsdWU7CisgICAgfQor
ICAgIAorICAgICNib3ggeworICAgICAgLXdlYmtpdC1hbmltYXRpb246IGFuaW0gMnMgbGluZWFy
OworICAgIH0KKyAgICAKKyAgICAjYm94MiB7CisgICAgICAtd2Via2l0LWFuaW1hdGlvbjogYW5p
bTIgMnMgbGluZWFyOworICAgIH0KKworICAgIEAtd2Via2l0LWtleWZyYW1lcyBhbmltIHsKKyAg
ICAgICAgZnJvbSB7IC13ZWJraXQtdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSgxMDBweCk7IH0KKyAg
ICAgICAgdG8gICB7IC13ZWJraXQtdHJhbnNmb3JtOiBwZXJzcGVjdGl2ZSgyMDBweCk7IH0KKyAg
ICB9CisKKyAgICBALXdlYmtpdC1rZXlmcmFtZXMgYW5pbTIgeworICAgICAgICBmcm9tIHsgLXdl
YmtpdC10cmFuc2Zvcm06IHBlcnNwZWN0aXZlKDEwMDBweCk7IH0KKyAgICAgICAgdG8gICB7IC13
ZWJraXQtdHJhbnNmb3JtOiBub25lOyB9CisgICAgfQorICA8L3N0eWxlPgorICA8c2NyaXB0IHNy
Yz0iLi4vYW5pbWF0aW9uLXRlc3QtaGVscGVycy5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48
L3NjcmlwdD4KKyAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIGNvbnN0IGV4
cGVjdGVkVmFsdWVzID0gWworICAgICAgLy8gW3RpbWUsIGVsZW1lbnQtaWQsIHByb3BlcnR5LCBl
eHBlY3RlZC12YWx1ZSwgdG9sZXJhbmNlXQorICAgICAgWyJhbmltIiwgIDAuNSwgImJveCIsICAi
d2Via2l0VHJhbnNmb3JtIiwgWzEsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAsIDAsIDEsIC0wLjAw
NzUsIDAsIDAsIDAsIDFdLCAwLjAwMl0sCisgICAgICBbImFuaW0yIiwgMC41LCAiYm94MiIsICJ3
ZWJraXRUcmFuc2Zvcm0iLCBbMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMSwgLTAuMDAx
OTksIDAsIDAsIDAsIDFdLCAwLjAwMl0sCisgICAgXTsKKyAgICAKKyAgICBmdW5jdGlvbiBzZXR1
cFRlc3QoKQorICAgIHsKKyAgICAgIHZhciBib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
Ym94Jyk7CisgICAgICBib3guc3R5bGUud2Via2l0VHJhbnNmb3JtID0gJ3BlcnNwZWN0aXZlKDEw
MDBweCkgcm90YXRlWCg5MGRlZyknOworICAgIH0KKyAgICAKKyAgICBydW5BbmltYXRpb25UZXN0
KGV4cGVjdGVkVmFsdWVzKTsKKyAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKworPGRpdiBj
bGFzcz0iYm94IiBpZD0iYm94Ij48L2Rpdj4KKzxkaXYgY2xhc3M9ImJveCIgaWQ9ImJveDIiPjwv
ZGl2PgorPGRpdiBpZD0icmVzdWx0Ij48L2Rpdj4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvdHJhbnNmb3Jtcy8zZC9nZW5lcmFsLzNkdHJhbnNmb3JtLXZhbHVl
cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy90cmFuc2Zvcm1zLzNkL2dlbmVyYWwvM2R0cmFu
c2Zvcm0tdmFsdWVzLWV4cGVjdGVkLnR4dAppbmRleCAzNTNkM2Y4NGQ0NDg0YzQ0NjM3Nzk2Njky
ZGI5ZTQyODM0OTY1MjZjLi5iMmM5Njk4YmE3MDQyYzYzZTc0YmViOGI3NmZkOWNjMTViOTA5NGNl
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy90cmFuc2Zvcm1zLzNkL2dlbmVyYWwvM2R0cmFuc2Zv
cm0tdmFsdWVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy90cmFuc2Zvcm1zLzNkL2dl
bmVyYWwvM2R0cmFuc2Zvcm0tdmFsdWVzLWV4cGVjdGVkLnR4dApAQCAtOSw0ICs5LDEyIEBAIHRy
YW5zZm9ybSAidHJhbnNsYXRlWigxMCkiIGV4cGVjdGVkICJub25lIiA6IFBBU1MKIHRyYW5zZm9y
bSAicm90YXRlM2QoMCwgMSwgMCwgMTgwKSIgZXhwZWN0ZWQgIm5vbmUiIDogUEFTUwogdHJhbnNm
b3JtICJyb3RhdGUzZCgwLCAxLCAwLCAxODBweCkiIGV4cGVjdGVkICJub25lIiA6IFBBU1MKIHRy
YW5zZm9ybSAicm90YXRlM2QoMCwgMSwgMCwgMTgwcHgpIiBleHBlY3RlZCAibm9uZSIgOiBQQVNT
Cit0cmFuc2Zvcm0gInBlcnNwZWN0aXZlKDQwMCkiIGV4cGVjdGVkICJtYXRyaXgzZCgxLCAwLCAw
LCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAxLCAtMC4wMDI1LCAwLCAwLCAwLCAxKSIgOiBQQVNTCit0
cmFuc2Zvcm0gInBlcnNwZWN0aXZlKDQwMHB4KSIgZXhwZWN0ZWQgIm1hdHJpeDNkKDEsIDAsIDAs
IDAsIDAsIDEsIDAsIDAsIDAsIDAsIDEsIC0wLjAwMjUsIDAsIDAsIDAsIDEpIiA6IFBBU1MKK3Ry
YW5zZm9ybSAicGVyc3BlY3RpdmUoNDAwZW0pIiBleHBlY3RlZCAibWF0cml4M2QoMSwgMCwgMCwg
MCwgMCwgMSwgMCwgMCwgMCwgMCwgMSwgLTAuMDAwMTU2MjUsIDAsIDAsIDAsIDEpIiA6IFBBU1MK
K3RyYW5zZm9ybSAicGVyc3BlY3RpdmUoNTAlKSIgZXhwZWN0ZWQgIm5vbmUiIDogUEFTUwordHJh
bnNmb3JtICJwZXJzcGVjdGl2ZSgtNDAwKSIgZXhwZWN0ZWQgIm5vbmUiIDogUEFTUwordHJhbnNm
b3JtICJwZXJzcGVjdGl2ZSgwKSIgZXhwZWN0ZWQgIm1hdHJpeCgxLCAwLCAwLCAxLCAwLCAwKSIg
OiBQQVNTCit0cmFuc2Zvcm0gInBlcnNwZWN0aXZlKDQwMGRlZykiIGV4cGVjdGVkICJub25lIiA6
IFBBU1MKK3RyYW5zZm9ybSAicGVyc3BlY3RpdmUoYmFuYW5hKSIgZXhwZWN0ZWQgIm5vbmUiIDog
UEFTUwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy90cmFuc2Zvcm1zLzNkL2dlbmVyYWwvM2R0
cmFuc2Zvcm0tdmFsdWVzLmh0bWwgYi9MYXlvdXRUZXN0cy90cmFuc2Zvcm1zLzNkL2dlbmVyYWwv
M2R0cmFuc2Zvcm0tdmFsdWVzLmh0bWwKaW5kZXggZjZhMWVhOWZiNDNkOTk2ZDlkNmVhY2MzYzE3
NWFmYWY1NzBjMjQyMi4uNjAzOTMyNjEzMGE2MGNhMTIyNGMwOGMwMTUwYzJjNzEwYWU2NTExNiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvdHJhbnNmb3Jtcy8zZC9nZW5lcmFsLzNkdHJhbnNmb3Jt
LXZhbHVlcy5odG1sCisrKyBiL0xheW91dFRlc3RzL3RyYW5zZm9ybXMvM2QvZ2VuZXJhbC8zZHRy
YW5zZm9ybS12YWx1ZXMuaHRtbApAQCAtMzcsNiArMzcsMTQgQEAKICAgICAgIHsgJ3RyYW5zZm9y
bScgOiAncm90YXRlM2QoMCwgMSwgMCwgMTgwKScsICdyZXN1bHQnIDogJ25vbmUnIH0sIC8vIGxh
c3QgdmFsdWUgbXVzdCBiZSBhbiBhbmdsZQogICAgICAgeyAndHJhbnNmb3JtJyA6ICdyb3RhdGUz
ZCgwLCAxLCAwLCAxODBweCknLCAncmVzdWx0JyA6ICdub25lJyB9LCAvLyBsYXN0IHZhbHVlIG11
c3QgYmUgYW4gYW5nbGUKICAgICAgIHsgJ3RyYW5zZm9ybScgOiAncm90YXRlM2QoMCwgMSwgMCwg
MTgwcHgpJywgJ3Jlc3VsdCcgOiAnbm9uZScgfSwgLy8gbGFzdCB2YWx1ZSBtdXN0IGJlIGFuIGFu
Z2xlCisgICAgICB7ICd0cmFuc2Zvcm0nIDogJ3BlcnNwZWN0aXZlKDQwMCknLCAncmVzdWx0JyA6
ICdtYXRyaXgzZCgxLCAwLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAwLCAxLCAtMC4wMDI1LCAwLCAw
LCAwLCAxKScgfSwgLy8gbGVnYWN5CisgICAgICB7ICd0cmFuc2Zvcm0nIDogJ3BlcnNwZWN0aXZl
KDQwMHB4KScsICdyZXN1bHQnIDogJ21hdHJpeDNkKDEsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAs
IDAsIDEsIC0wLjAwMjUsIDAsIDAsIDAsIDEpJyB9LAorICAgICAgeyAndHJhbnNmb3JtJyA6ICdw
ZXJzcGVjdGl2ZSg0MDBlbSknLCAncmVzdWx0JyA6ICdtYXRyaXgzZCgxLCAwLCAwLCAwLCAwLCAx
LCAwLCAwLCAwLCAwLCAxLCAtMC4wMDAxNTYyNSwgMCwgMCwgMCwgMSknIH0sCisgICAgICB7ICd0
cmFuc2Zvcm0nIDogJ3BlcnNwZWN0aXZlKDUwJSknLCAncmVzdWx0JyA6ICdub25lJyB9LAorICAg
ICAgeyAndHJhbnNmb3JtJyA6ICdwZXJzcGVjdGl2ZSgtNDAwKScsICdyZXN1bHQnIDogJ25vbmUn
IH0sCisgICAgICB7ICd0cmFuc2Zvcm0nIDogJ3BlcnNwZWN0aXZlKDApJywgJ3Jlc3VsdCcgOiAn
bWF0cml4KDEsIDAsIDAsIDEsIDAsIDApJyB9LAorICAgICAgeyAndHJhbnNmb3JtJyA6ICdwZXJz
cGVjdGl2ZSg0MDBkZWcpJywgJ3Jlc3VsdCcgOiAnbm9uZScgfSwgLy8gdW5pdCBtdXN0IGJlIGxl
bmd0aAorICAgICAgeyAndHJhbnNmb3JtJyA6ICdwZXJzcGVjdGl2ZShiYW5hbmEpJywgJ3Jlc3Vs
dCcgOiAnbm9uZScgfSwgLy8gdW5pdCBtdXN0IGJlIGxlbmd0aAogICAgIF07CiAgICAgCiAgICAg
ZnVuY3Rpb24gcnVuVGVzdHMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDAwZjFlMjE4YjM1OWYzZTUxYjFhMjRi
ZTdhN2I0NWUyNzA3MjE1YWMuLjMzMzEzNGFhNWZlZjVhYjdjYjNmNWZmMTg1NGJlMDE5MDI1MDM5
ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAxMS0wMS0xOCAgU2ltb24gRnJhc2Vy
ICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBwZXJzcGVjdGl2ZSgpIHRyYW5zZm9ybSBmdW5jdGlvbiBzaG91
bGQgdGFrZSBsZW5ndGhzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01MjY4MworICAgICAgICAKKyAgICAgICAgVGhlIGFyZ3VtZW50IHRvIHRoZSBwZXJz
cGVjdGl2ZSgpIHRyYW5zZm9ybSBmdW5jdGlvbiBzaG91bGQKKyAgICAgICAgYmUgYSBMZW5ndGgs
IHJhdGhlciB0aGFuIGEgYmFyZSBudW1iZXIuCisKKyAgICAgICAgVGVzdDogYW5pbWF0aW9ucy8z
ZC90cmFuc2Zvcm0tcGVyc3BlY3RpdmUuaHRtbAorCisgICAgICAgICogY3NzL0NTU1BhcnNlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlVHJhbnNmb3JtKTogQ2hlY2sg
dGhlIHVuaXRzIGZvciB0aGUgcGVyc3BlY3RpdmUoKQorICAgICAgICBmdW5jdGlvbi4gQWxsb3cg
YmFyZSBudW1iZXJzIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS4KKyAgICAgICAgKiBjc3Mv
Q1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9y
OjpjcmVhdGVUcmFuc2Zvcm1PcGVyYXRpb25zKTogQ29udmVydAorICAgICAgICB2YWx1ZSB0byBM
ZW5ndGguCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9QZXJzcGVjdGl2
ZVRyYW5zZm9ybU9wZXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjbGFtcFRvUG9zdGl2
ZUludGVnZXIpOiBIZWxwZXIuCisgICAgICAgIChXZWJDb3JlOjpQZXJzcGVjdGl2ZVRyYW5zZm9y
bU9wZXJhdGlvbjo6YmxlbmQpOiBCbGVuZCB2aWEgTGVuZ3Rocy4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL1BlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKTog
ZG91YmxlIC0+IExlbmd0aC4KKyAgICAgICAgKFdlYkNvcmU6OlBlcnNwZWN0aXZlVHJhbnNmb3Jt
T3BlcmF0aW9uOjpwZXJzcGVjdGl2ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UGVyc3Bl
Y3RpdmVUcmFuc2Zvcm1PcGVyYXRpb246OmlzSWRlbnRpdHkpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OlBlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uOjphcHBseSk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6UGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb246OlBlcnNwZWN0aXZl
VHJhbnNmb3JtT3BlcmF0aW9uKTogQXNzZXJ0CisgICAgICAgIHRoYXQgdGhlIExlbmd0aCBpcyBh
IGZpeGVkIHR5cGUuCisKIDIwMTEtMDEtMTggTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xl
LmNvbT4KIAogICAgICAgICBSZWZhY3RvcmluZzogRXZlbnRIYW5kbGVyOjpoYW5kbGVUZXh0SW5w
dXRFdmVudCBzaG91bGQgYWNjZXB0IGFuIGVudW0gaW5zdGVhZCBvZiBib29scy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1BhcnNlci5jcHAKaW5kZXggYTRkZWQ2NTcyNDFkOGZmYTVmNDE5OWFlNmQxYmRjOGJmMTQ3
M2M5ZS4uODkyMjBjZGYxMjA2NzE0MGYyZWVmNzZmYjJlNTdjMDk3N2Y5ZjUwZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5jcHAKQEAgLTUzMTYsNiArNTMxNiwxMCBAQCBQYXNzUmVmUHRyPENTU1Zh
bHVlTGlzdD4gQ1NTUGFyc2VyOjpwYXJzZVRyYW5zZm9ybSgpCiAgICAgICAgICAgICAgICAgLy8g
MXN0IHBhcmFtIG9mIHRyYW5zbGF0ZVooKSBjYW5ub3QgYmUgYSBwZXJjZW50YWdlCiAgICAgICAg
ICAgICAgICAgaWYgKCF2YWxpZFVuaXQoYSwgRkxlbmd0aCwgdHJ1ZSkpCiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfSBlbHNlIGlmIChpbmZvLnR5cGUoKSA9PSBX
ZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6UGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24gJiYg
YXJnTnVtYmVyID09IDApIHsKKyAgICAgICAgICAgICAgICAvLyAxc3QgcGFyYW0gb2YgcGVyc3Bl
Y3RpdmUoKSBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIG51bWJlciAoZGVwcmVjYXRlZCkgb3IgbGVu
Z3RoLgorICAgICAgICAgICAgICAgIGlmICghdmFsaWRVbml0KGEsIEZOdW1iZXIgfCBGTGVuZ3Ro
IHwgRk5vbk5lZywgdHJ1ZSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAg
ICAgICAgfSBlbHNlIGlmICghdmFsaWRVbml0KGEsIHVuaXQsIHRydWUpKQogICAgICAgICAgICAg
ICAgIHJldHVybiAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVT
ZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKaW5k
ZXggZmMwNzIyYWQ1MTAzMjIxZjEwMGQzNmI0Y2RkNDc5NDQ1M2RhOTM1ZC4uNzM5MDg3NmMwZjIw
YTBlYzU2ODU2MzE4NTMxZWZjOWU4Zjc0NTVmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHls
ZVNlbGVjdG9yLmNwcApAQCAtNzA0OSw5ICs3MDQ5LDIxIEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rv
cjo6Y3JlYXRlVHJhbnNmb3JtT3BlcmF0aW9ucyhDU1NWYWx1ZSogaW5WYWx1ZSwgUmVuZGVyU3R5
bGUqCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9ICAgCiAgICAgICAgICAg
ICBjYXNlIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJh
dGlvbjogewotICAgICAgICAgICAgICAgIGRvdWJsZSBwID0gZmlyc3RWYWx1ZS0+Z2V0RG91Ymxl
VmFsdWUoKTsKLSAgICAgICAgICAgICAgICBpZiAocCA8IDAuMCkKKyAgICAgICAgICAgICAgICBi
b29sIG9rID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBMZW5ndGggcCA9IExlbmd0aCgwLCBGaXhl
ZCk7CisgICAgICAgICAgICAgICAgaWYgKENTU1ByaW1pdGl2ZVZhbHVlOjppc1VuaXRUeXBlTGVu
Z3RoKGZpcnN0VmFsdWUtPnByaW1pdGl2ZVR5cGUoKSkpCisgICAgICAgICAgICAgICAgICAgIHAg
PSBjb252ZXJ0VG9MZW5ndGgoZmlyc3RWYWx1ZSwgc3R5bGUsIHJvb3RTdHlsZSwgem9vbUZhY3Rv
ciwgJm9rKTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLy8g
VGhpcyBpcyBhIHF1aXJrIHRoYXQgc2hvdWxkIGdvIGF3YXkgd2hlbiAzZCB0cmFuc2Zvcm1zIGFy
ZSBmaW5hbGl6ZWQuCisgICAgICAgICAgICAgICAgICAgIGRvdWJsZSB2YWwgPSBmaXJzdFZhbHVl
LT5nZXREb3VibGVWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICBvayA9IHZhbCA+PSAwOwor
ICAgICAgICAgICAgICAgICAgICB2YWwgPSBtaW48ZG91YmxlPih2YWwsIG51bWVyaWNfbGltaXRz
PGludD46Om1heCgpKTsKKyAgICAgICAgICAgICAgICAgICAgcCA9IExlbmd0aChzdGF0aWNfY2Fz
dDxpbnQ+KHZhbCksIEZpeGVkKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
CisgICAgICAgICAgICAgICAgaWYgKCFvaykKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworCiAgICAgICAgICAgICAgICAgb3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5kKFBl
cnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUocCkpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9QZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1BlcnNwZWN0aXZl
VHJhbnNmb3JtT3BlcmF0aW9uLmNwcAppbmRleCA5ZmQwM2ExMjgyMWY5NTRiMDM2OTVjYTQwZDBj
YjNmOTVkMDEyYzg5Li4yNThjZmJlNWM3M2NlZWNhNjU0OGY2MmFkMjVmMTQzNjg1ZTFkODQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1Bl
cnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1BlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uLmNw
cApAQCAtMjcsMzIgKzI3LDQ1IEBACiAjaW5jbHVkZSAiUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVy
YXRpb24uaCIKIAogI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxsaW1pdHM+CiAKIHVz
aW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorc3RhdGljIGludCBj
bGFtcFRvUG9zdGl2ZUludGVnZXIoZG91YmxlIHZhbCkKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8aW50PihtYXg8ZG91YmxlPihtaW48ZG91YmxlPih2YWwsIG51bWVyaWNfbGltaXRzPGludD46
Om1heCgpKSwgMCkpOworfQorCiBQYXNzUmVmUHRyPFRyYW5zZm9ybU9wZXJhdGlvbj4gUGVyc3Bl
Y3RpdmVUcmFuc2Zvcm1PcGVyYXRpb246OmJsZW5kKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiog
ZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9JZGVudGl0eSkKIHsKICAgICBpZiAo
ZnJvbSAmJiAhZnJvbS0+aXNTYW1lVHlwZSgqdGhpcykpCiAgICAgICAgIHJldHVybiB0aGlzOwog
ICAgIAotICAgIGlmIChibGVuZFRvSWRlbnRpdHkpCi0gICAgICAgIHJldHVybiBQZXJzcGVjdGl2
ZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKG1fcCArICgxLiAtIG1fcCkgKiBwcm9ncmVzcyk7
CisgICAgaWYgKGJsZW5kVG9JZGVudGl0eSkgeworICAgICAgICBkb3VibGUgcCA9IG1fcC5jYWxj
RmxvYXRWYWx1ZSgxKTsKKyAgICAgICAgcCA9IHAgKyAoMS4gLSBwKSAqIHByb2dyZXNzOyAvLyBG
SVhNRTogdGhpcyBzZWVtcyB3cm9uZy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTUyNzAwCisgICAgICAgIHJldHVybiBQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlv
bjo6Y3JlYXRlKExlbmd0aChjbGFtcFRvUG9zdGl2ZUludGVnZXIocCksIEZpeGVkKSk7CisgICAg
fQogICAgIAogICAgIGNvbnN0IFBlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uKiBmcm9tT3Ag
PSBzdGF0aWNfY2FzdDxjb25zdCBQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbio+KGZyb20p
OwotICAgIGRvdWJsZSBmcm9tUCA9IGZyb21PcCA/IGZyb21PcC0+bV9wIDogMDsKLSAgICBkb3Vi
bGUgdG9QID0gbV9wOworICAgIExlbmd0aCBmcm9tUCA9IGZyb21PcCA/IGZyb21PcC0+bV9wIDog
TGVuZ3RoKG1fcC50eXBlKCkpOworICAgIExlbmd0aCB0b1AgPSBtX3A7CiAKICAgICBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBmcm9tVDsKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0b1Q7Ci0gICAg
ZnJvbVQuYXBwbHlQZXJzcGVjdGl2ZShmcm9tUCk7Ci0gICAgdG9ULmFwcGx5UGVyc3BlY3RpdmUo
dG9QKTsKKyAgICBmcm9tVC5hcHBseVBlcnNwZWN0aXZlKGZyb21QLmNhbGNGbG9hdFZhbHVlKDEp
KTsKKyAgICB0b1QuYXBwbHlQZXJzcGVjdGl2ZSh0b1AuY2FsY0Zsb2F0VmFsdWUoMSkpOwogICAg
IHRvVC5ibGVuZChmcm9tVCwgcHJvZ3Jlc3MpOwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4OjpE
ZWNvbXBvc2VkVHlwZSBkZWNvbXA7CiAgICAgdG9ULmRlY29tcG9zZShkZWNvbXApOwotICAgIAot
ICAgIHJldHVybiBQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKGRlY29tcC5w
ZXJzcGVjdGl2ZVogPyAtMS4wIC8gZGVjb21wLnBlcnNwZWN0aXZlWiA6IDAuMCk7CisKKyAgICBp
ZiAoZGVjb21wLnBlcnNwZWN0aXZlWikgeworICAgICAgICBkb3VibGUgdmFsID0gLTEuMCAvIGRl
Y29tcC5wZXJzcGVjdGl2ZVo7CisgICAgICAgIHJldHVybiBQZXJzcGVjdGl2ZVRyYW5zZm9ybU9w
ZXJhdGlvbjo6Y3JlYXRlKExlbmd0aChjbGFtcFRvUG9zdGl2ZUludGVnZXIodmFsKSwgRml4ZWQp
KTsKKyAgICB9CisgICAgcmV0dXJuIFBlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVh
dGUoTGVuZ3RoKDAsIEZpeGVkKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvUGVyc3Bl
Y3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RyYW5zZm9ybXMvUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24uaAppbmRleCA4MzRj
YzgzMDllMmI3NTdiNzU0MmEwN2FlMGIyNzg3NTI1MWVmOWZhLi44ODZkM2RjZWM2NTIxNTM3MzQ3
MDFhNDZiMzRhZjlmZDE2N2E2MDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL1BlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9QZXJzcGVjdGl2
ZVRyYW5zZm9ybU9wZXJhdGlvbi5oCkBAIC0yNiwyMSArMjYsMjIgQEAKICNpZm5kZWYgUGVyc3Bl
Y3RpdmVUcmFuc2Zvcm1PcGVyYXRpb25faAogI2RlZmluZSBQZXJzcGVjdGl2ZVRyYW5zZm9ybU9w
ZXJhdGlvbl9oCiAKKyNpbmNsdWRlICJMZW5ndGguaCIKICNpbmNsdWRlICJUcmFuc2Zvcm1PcGVy
YXRpb24uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBQZXJzcGVjdGl2ZVRyYW5z
Zm9ybU9wZXJhdGlvbiA6IHB1YmxpYyBUcmFuc2Zvcm1PcGVyYXRpb24gewogcHVibGljOgotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFBlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uPiBjcmVhdGUo
ZG91YmxlIHApCisgICAgc3RhdGljIFBhc3NSZWZQdHI8UGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVy
YXRpb24+IGNyZWF0ZShjb25zdCBMZW5ndGgmIHApCiAgICAgewogICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFBlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uKHApKTsKICAgICB9CiAKLSAg
ICBkb3VibGUgcGVyc3BlY3RpdmUoKSBjb25zdCB7IHJldHVybiBtX3A7IH0KKyAgICBMZW5ndGgg
cGVyc3BlY3RpdmUoKSBjb25zdCB7IHJldHVybiBtX3A7IH0KICAgICAKIHByaXZhdGU6Ci0gICAg
dmlydHVhbCBib29sIGlzSWRlbnRpdHkoKSBjb25zdCB7IHJldHVybiBtX3AgPT0gMDsgfQorICAg
IHZpcnR1YWwgYm9vbCBpc0lkZW50aXR5KCkgY29uc3QgeyByZXR1cm4gbV9wLmNhbGNGbG9hdFZh
bHVlKDEpID09IDA7IH0KICAgICB2aXJ0dWFsIE9wZXJhdGlvblR5cGUgZ2V0T3BlcmF0aW9uVHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIFBFUlNQRUNUSVZFOyB9CiAgICAgdmlydHVhbCBib29sIGlzU2Ft
ZVR5cGUoY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uJiBvKSBjb25zdCB7IHJldHVybiBvLmdldE9w
ZXJhdGlvblR5cGUoKSA9PSBQRVJTUEVDVElWRTsgfQogCkBAIC01NCwxOCArNTUsMTkgQEAgcHJp
dmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCBhcHBseShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJh
bnNmb3JtLCBjb25zdCBJbnRTaXplJikgY29uc3QKICAgICB7Ci0gICAgICAgIHRyYW5zZm9ybS5h
cHBseVBlcnNwZWN0aXZlKG1fcCk7CisgICAgICAgIHRyYW5zZm9ybS5hcHBseVBlcnNwZWN0aXZl
KG1fcC5jYWxjRmxvYXRWYWx1ZSgxKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
ICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8VHJhbnNmb3JtT3BlcmF0aW9uPiBibGVuZChjb25zdCBU
cmFuc2Zvcm1PcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvSWRl
bnRpdHkgPSBmYWxzZSk7CiAKLSAgICBQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbihkb3Vi
bGUgcCkKKyAgICBQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbihjb25zdCBMZW5ndGgmIHAp
CiAgICAgICAgIDogbV9wKHApCiAgICAgeworICAgICAgICBBU1NFUlQocC5pc0ZpeGVkKCkpOwog
ICAgIH0KIAotICAgIGRvdWJsZSBtX3A7CisgICAgTGVuZ3RoIG1fcDsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUK
</data>
<flag name="review"
          id="70808"
          type_id="1"
          status="+"
          setter="cmarrin"
    />
          </attachment>
      

    </bug>

</bugzilla>