<?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>108369</bug_id>
          
          <creation_ts>2013-01-30 12:29:53 -0800</creation_ts>
          <short_desc>Add class name for snapshotted plugin based on dimensions</short_desc>
          <delta_ts>2013-02-12 15:56:51 -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>Plug-ins</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dean Jackson">dino</reporter>
          <assigned_to name="Dean Jackson">dino</assigned_to>
          <cc>benjamin</cc>
    
    <cc>eric</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>820411</commentid>
    <comment_count>0</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-01-30 12:29:53 -0800</bug_when>
    <thetext>Add a CSS class to the shadow root, based on dimensions. This will allow the style to apply a different layout.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820412</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-01-30 12:30:03 -0800</bug_when>
    <thetext>&lt;rdar://problem/13117808&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830464</commentid>
    <comment_count>2</comment_count>
      <attachid>187754</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-02-11 19:13:42 -0800</bug_when>
    <thetext>Created attachment 187754
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830639</commentid>
    <comment_count>3</comment_count>
      <attachid>187754</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-02-12 00:19:17 -0800</bug_when>
    <thetext>Comment on attachment 187754
Patch

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

Not a clue about correctness, but some comments:

&gt; Source/WebCore/html/HTMLPlugInImageElement.cpp:334
&gt; +    shadowContainer-&gt;setAttribute(classAttr, classNameForShadowRootSize(document()-&gt;page()-&gt;mainFrame()-&gt;view()-&gt;contentsSize(), this));   

Aren&apos;t attribute AtomicString?
classNameForShadowRootSize() returns a String.

&gt; Source/WebCore/page/FrameView.cpp:2484
&gt; +        // Caution: it&apos;s possible the object was destroyed again, since loading a
&gt; +        // plugin may run any arbitrary javascript.
&gt; +        embeddedObject-&gt;updateWidgetPosition();

If arbitrary JavaScript can be run, can you be sure embeddedObject always exist at this point?

&gt; Source/WebCore/page/FrameView.cpp:2501
&gt;      objects.reserveCapacity(size);

This should use reserveInitialCapacity.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831069</commentid>
    <comment_count>4</comment_count>
      <attachid>187754</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-02-12 10:42:02 -0800</bug_when>
    <thetext>Comment on attachment 187754
Patch

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

&gt;&gt; Source/WebCore/html/HTMLPlugInImageElement.cpp:334
&gt;&gt; +    shadowContainer-&gt;setAttribute(classAttr, classNameForShadowRootSize(document()-&gt;page()-&gt;mainFrame()-&gt;view()-&gt;contentsSize(), this));   
&gt; 
&gt; Aren&apos;t attribute AtomicString?
&gt; classNameForShadowRootSize() returns a String.

Great point. I&apos;ve changed everything to AtomicString.

&gt;&gt; Source/WebCore/page/FrameView.cpp:2484
&gt;&gt; +        embeddedObject-&gt;updateWidgetPosition();
&gt; 
&gt; If arbitrary JavaScript can be run, can you be sure embeddedObject always exist at this point?

This is existing code, so I&apos;m not sure exactly, but I *think* this is protected by the ref and deref against the RenderArena in the calling function.

&gt;&gt; Source/WebCore/page/FrameView.cpp:2501
&gt;&gt;      objects.reserveCapacity(size);
&gt; 
&gt; This should use reserveInitialCapacity.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831073</commentid>
    <comment_count>5</comment_count>
      <attachid>187894</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-02-12 10:44:03 -0800</bug_when>
    <thetext>Created attachment 187894
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831153</commentid>
    <comment_count>6</comment_count>
      <attachid>187894</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-02-12 12:24:45 -0800</bug_when>
    <thetext>Comment on attachment 187894
Patch

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

&gt; Source/WebCore/html/HTMLPlugInImageElement.cpp:306
&gt; +        return String();

I&apos;d appreciate if you can change this to nullAtom before landing () (for builds with NO_IMPLICIT_ATOMICSTRING). :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831336</commentid>
    <comment_count>7</comment_count>
      <attachid>187894</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-02-12 15:25:31 -0800</bug_when>
    <thetext>Comment on attachment 187894
Patch

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

&gt; Source/WebCore/page/FrameView.cpp:2501
&gt; -    objects.reserveCapacity(size);
&gt; +    Vector&lt;RenderObject*&gt; objects;
&gt; +    objects.reserveInitialCapacity(size);

Why this change (it&apos;s not explained in the changelog)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831341</commentid>
    <comment_count>8</comment_count>
      <attachid>187894</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-02-12 15:26:53 -0800</bug_when>
    <thetext>Comment on attachment 187894
Patch

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

&gt;&gt; Source/WebCore/html/HTMLPlugInImageElement.cpp:306
&gt;&gt; +        return String();
&gt; 
&gt; I&apos;d appreciate if you can change this to nullAtom before landing () (for builds with NO_IMPLICIT_ATOMICSTRING). :)

Oops. :)

&gt;&gt; Source/WebCore/page/FrameView.cpp:2501
&gt;&gt; +    objects.reserveInitialCapacity(size);
&gt; 
&gt; Why this change (it&apos;s not explained in the changelog)?

Because Ben requested it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831376</commentid>
    <comment_count>9</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-02-12 15:56:51 -0800</bug_when>
    <thetext>Committed r142685: &lt;http://trac.webkit.org/changeset/142685&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187754</attachid>
            <date>2013-02-11 19:13:42 -0800</date>
            <delta_ts>2013-02-12 10:43:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108369-20130212141011.patch</filename>
            <type>text/plain</type>
            <size>16309</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyNTA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjZlMjQzMTUzNDhlMjJh
OWI5MjQ1YTIyYjI0ZWQyZGNlNjVhMTg4Yi4uNGIyMDFiM2QxYmRiNGI3ZGY4MWM2Yjk5NzJhZjhm
MTU4ZDE4OTY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM1IEBACiAyMDEzLTAyLTExICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAorICAgICAgICBBZGQgY2xhc3MgbmFtZSBmb3Ig
c25hcHNob3R0ZWQgcGx1Z2luIGJhc2VkIG9uIGRpbWVuc2lvbnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODM2OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFzIHRoZSBzaXplIG9mIHRoZSBwbHVnaW4g
Y2hhbmdlcywgdGhlIFNoYWRvdyBSb290IGZvciB0aGUgc25hcHNob3QKKyAgICAgICAgbWlnaHQg
d2FudCB0byB0b2dnbGUgZGlmZmVyZW50IGludGVyZmFjZXMuIEV4cG9zZSAidGlueSIsICJzbWFs
bCIsCisgICAgICAgICJtZWRpdW0iIGFuZCAibGFyZ2UiIGNsYXNzZXMgb24gdGhlIFNoYWRvdy4g
KFRoZSBkaW1lbnNpb25zIGFyZQorICAgICAgICBjdXJyZW50bHkgY2hvc2VuIGZhaXJseSBhcmJp
dHJhcmlseSkuCisKKyAgICAgICAgQmVjYXVzZSB3ZSBvbmx5IGtub3cgdGhlIGRpbWVuc2lvbnMg
YWZ0ZXIgbGF5b3V0LCB3ZSBzZXQgdXAKKyAgICAgICAgYSBwb3N0IGxheW91dCB0YXNrIHRvIGFk
ZCB0aGUgY2xhc3MuIEx1Y2tpbHkgdGhlcmUgYWxyZWFkeSB3YXMKKyAgICAgICAgYSBwb3N0IGxh
eW91dCB0YXNrIGZvciBwbHVnaW5zIC0gSSBqdXN0IHVwZGF0ZWQgaXQgdG8gaGFuZGxlCisgICAg
ICAgIGJvdGggcmVhbCBhbmQgc25hcHNob3R0ZWQgcGx1Z2lucy4gVGhpcyBpbnZvbHZlZCBtb2Rp
ZnlpbmcKKyAgICAgICAgdGhlIGxpc3Qgb2YgUmVuZGVyRW1iZWRkZWRPYmplY3RzIGluIEZyYW1l
VmlldyB0byB0YWtlIGdlbmVyaWMKKyAgICAgICAgUmVuZGVyT2JqZWN0cywgYW5kIGRlY2lkZSB3
aGljaCB0eXBlIHRoZXkgYXJlIHdoZW4gY2FsbGluZworICAgICAgICB0aGUgdXBkYXRlIG1ldGhv
ZC4KKworICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHA6IFNvbWUgbmV3
IGRpbWVuc2lvbnMgZm9yIHRoZSB2YXJpb3VzIHNpemUgdGhyZXNob2xkcy4KKyAgICAgICAgKFdl
YkNvcmU6OmNsYXNzTmFtZUZvclNoYWRvd1Jvb3RTaXplKTogTmV3IHN0YXRpYyBmdW5jdGlvbiB0
aGF0IHJldHVybnMgYSBjbGFzcyBuYW1lCisgICAgICAgICAgICBhZnRlciBleGFtaW5pbmcgdGhl
IHNpemUgb2YgdGhlIG9iamVjdC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQ6OnVwZGF0ZVNuYXBzaG90SW5mbyk6IFNldHMgdGhlIGNsYXNzIG5hbWUgZm9yCisgICAg
ICAgICAgICB0aGUgc2hhZG93IHJvb3QuIFRoaXMgaXMgY2FsbGVkIGluIHRoZSBwb3N0IGxheW91
dCB0YXNrLgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkUGx1Z0luU2hvd0xhYmVsQXV0b21hdGlj
YWxseSk6IFVzZSBuZXcgc2l6ZSBuYW1lcy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5J
bWFnZUVsZW1lbnQ6OnN1YmZyYW1lTG9hZGVyV2lsbENyZWF0ZVBsdWdJbik6IERpdHRvLgorICAg
ICAgICAqIGh0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oOgorICAgICAgICAoSFRNTFBsdWdJ
bkltYWdlRWxlbWVudCk6IE5ldyBtZXRob2QgdXBkYXRlU25hcHNob3RJbmZvLgorCisyMDEzLTAy
LTExICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKwogICAgICAgICBTb3VyY2UvV2Vi
Q29yZTogU25hcHNob3R0ZWQgcGx1Zy1pbiBzaG91bGQgdXNlIHNoYWRvdyByb290CiAgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDgyODQKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKaW5kZXggMTJmYTEw
NmU4MDM0MzIzMTQ1YWFmNDUxNjZhZmNlYTkzODA0ZmE3MS4uMTA4NjYwMzY2MDg4ZWIyNDg3MjYy
YWU5YWUyYWM2NWIyOWFiZGJhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
UGx1Z0luSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVn
SW5JbWFnZUVsZW1lbnQuY3BwCkBAIC01MywxMCArNTMsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1zdGF0aWMgY29uc3QgaW50IGF1dG9T
dGFydFBsdWdJblNpemVUaHJlc2hvbGRXaWR0aCA9IDE7Ci1zdGF0aWMgY29uc3QgaW50IGF1dG9T
dGFydFBsdWdJblNpemVUaHJlc2hvbGRIZWlnaHQgPSAxOwotc3RhdGljIGNvbnN0IGludCBhdXRv
U2hvd0xhYmVsU2l6ZVRocmVzaG9sZFdpZHRoID0gNDAwOwotc3RhdGljIGNvbnN0IGludCBhdXRv
U2hvd0xhYmVsU2l6ZVRocmVzaG9sZEhlaWdodCA9IDMwMDsKK3N0YXRpYyBjb25zdCBpbnQgYXV0
b1N0YXJ0UGx1Z0luU2l6ZURpbWVuc2lvblRocmVzaG9sZCA9IDE7CitzdGF0aWMgY29uc3QgaW50
IGF1dG9TaG93TGFiZWxTaXplV2lkdGhUaHJlc2hvbGQgPSA0MDA7CitzdGF0aWMgY29uc3QgaW50
IGF1dG9TaG93TGFiZWxTaXplSGVpZ2h0VGhyZXNob2xkID0gMzAwOworCitzdGF0aWMgY29uc3Qg
aW50IHNpemluZ1RpbnlEaW1lbnNpb25UaHJlc2hvbGQgPSA0MDsKK3N0YXRpYyBjb25zdCBpbnQg
c2l6aW5nU21hbGxXaWR0aFRocmVzaG9sZCA9IDI1MDsKK3N0YXRpYyBjb25zdCBpbnQgc2l6aW5n
TWVkaXVtV2lkdGhUaHJlc2hvbGQgPSA2MDA7CisKIC8vIFRoaXMgZGVsYXkgc2hvdWxkIG5vdCBl
eGNlZWQgdGhlIHNuYXBzaG90IGRlbGF5IGluIFBsdWdpblZpZXcuY3BwCiBzdGF0aWMgY29uc3Qg
ZG91YmxlIHNpbXVsYXRlZE1vdXNlQ2xpY2tUaW1lckRlbGF5ID0gLjc1OwogCkBAIC0yODgsNiAr
MjkyLDQ4IEBAIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6dXBkYXRlU25hcHNob3QoUGFz
c1JlZlB0cjxJbWFnZT4gaW1hZ2UpCiAgICAgbV9zd2FwUmVuZGVyZXJUaW1lci5zdGFydE9uZVNo
b3QoMCk7CiB9CiAKK3N0YXRpYyBTdHJpbmcgY2xhc3NOYW1lRm9yU2hhZG93Um9vdFNpemUoY29u
c3QgSW50U2l6ZSYgdmlld0NvbnRlbnRzU2l6ZSwgY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgcGx1Z0luVGlueVNpemVDbGFzc05hbWUs
IChBU0NJSUxpdGVyYWwoInRpbnkiKSkpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3Qg
U3RyaW5nLCBwbHVnSW5TbWFsbFNpemVDbGFzc05hbWUsIChBU0NJSUxpdGVyYWwoInNtYWxsIikp
KTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgcGx1Z0luTWVkaXVtU2l6
ZUNsYXNzTmFtZSwgKEFTQ0lJTGl0ZXJhbCgibWVkaXVtIikpKTsKKyAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKGNvbnN0IFN0cmluZywgcGx1Z0luTGFyZ2VTaXplQ2xhc3NOYW1lLCAoQVNDSUlMaXRl
cmFsKCJsYXJnZSIpKSk7CisKKyAgICBMYXlvdXRSZWN0IHBsdWdJbkNsaXBSZWN0ID0gbm9kZS0+
cmVuZGVyZXIoKS0+YWJzb2x1dGVDbGlwcGVkT3ZlcmZsb3dSZWN0KCk7CisgICAgTGF5b3V0UmVj
dCB2aWV3Q29udGVudHNSZWN0KExheW91dFBvaW50Ojp6ZXJvKCksIExheW91dFNpemUodmlld0Nv
bnRlbnRzU2l6ZSkpOworICAgIGlmICghdmlld0NvbnRlbnRzUmVjdC5jb250YWlucyhwbHVnSW5D
bGlwUmVjdCkpIHsKKyAgICAgICAgTE9HKFBsdWdpbnMsICIlcCBQbHVnLWluIHJlY3Q6ICglZCAl
ZCwgJWQgJWQpIG5vdCBjb250YWluZWQgaW4gZG9jdW1lbnQgb2Ygc2l6ZSAlZCAlZCIsIG5vZGUs
IHBsdWdJbkNsaXBSZWN0LnBpeGVsU25hcHBlZFgoKSwgcGx1Z0luQ2xpcFJlY3QucGl4ZWxTbmFw
cGVkWSgpLCBwbHVnSW5DbGlwUmVjdC5waXhlbFNuYXBwZWRXaWR0aCgpLCBwbHVnSW5DbGlwUmVj
dC5waXhlbFNuYXBwZWRIZWlnaHQoKSwgdmlld0NvbnRlbnRzU2l6ZS53aWR0aCgpLCB2aWV3Q29u
dGVudHNTaXplLmhlaWdodCgpKTsKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIH0KKwor
ICAgIGlmIChwbHVnSW5DbGlwUmVjdC5waXhlbFNuYXBwZWRXaWR0aCgpIDwgc2l6aW5nVGlueURp
bWVuc2lvblRocmVzaG9sZCB8fCBwbHVnSW5DbGlwUmVjdC5waXhlbFNuYXBwZWRIZWlnaHQoKSA8
IHNpemluZ1RpbnlEaW1lbnNpb25UaHJlc2hvbGQpIHsKKyAgICAgICAgTE9HKFBsdWdpbnMsICIl
cCBUaW55IFNpemU6ICVkICVkIiwgbm9kZSwgcGx1Z0luQ2xpcFJlY3QucGl4ZWxTbmFwcGVkV2lk
dGgoKSwgcGx1Z0luQ2xpcFJlY3QucGl4ZWxTbmFwcGVkSGVpZ2h0KCkpOworICAgICAgICByZXR1
cm4gcGx1Z0luVGlueVNpemVDbGFzc05hbWU7CisgICAgfQorCisgICAgaWYgKHBsdWdJbkNsaXBS
ZWN0LnBpeGVsU25hcHBlZFdpZHRoKCkgPCBzaXppbmdTbWFsbFdpZHRoVGhyZXNob2xkKSB7Cisg
ICAgICAgIExPRyhQbHVnaW5zLCAiJXAgU21hbGwgU2l6ZTogJWQgJWQiLCBub2RlLCBwbHVnSW5D
bGlwUmVjdC5waXhlbFNuYXBwZWRXaWR0aCgpLCBwbHVnSW5DbGlwUmVjdC5waXhlbFNuYXBwZWRI
ZWlnaHQoKSk7CisgICAgICAgIHJldHVybiBwbHVnSW5TbWFsbFNpemVDbGFzc05hbWU7CisgICAg
fQorCisgICAgaWYgKHBsdWdJbkNsaXBSZWN0LnBpeGVsU25hcHBlZFdpZHRoKCkgPCBzaXppbmdN
ZWRpdW1XaWR0aFRocmVzaG9sZCkgeworICAgICAgICBMT0coUGx1Z2lucywgIiVwIE1lZGl1bSBT
aXplOiAlZCAlZCIsIG5vZGUsIHBsdWdJbkNsaXBSZWN0LnBpeGVsU25hcHBlZFdpZHRoKCksIHBs
dWdJbkNsaXBSZWN0LnBpeGVsU25hcHBlZEhlaWdodCgpKTsKKyAgICAgICAgcmV0dXJuIHBsdWdJ
bk1lZGl1bVNpemVDbGFzc05hbWU7CisgICAgfQorCisgICAgcmV0dXJuIHBsdWdJbkxhcmdlU2l6
ZUNsYXNzTmFtZTsKK30KKwordm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojp1cGRhdGVTbmFw
c2hvdEluZm8oKQoreworICAgIFNoYWRvd1Jvb3QqIHJvb3QgPSB1c2VyQWdlbnRTaGFkb3dSb290
KCk7CisgICAgaWYgKCFyb290KQorICAgICAgICByZXR1cm47CisKKyAgICBFbGVtZW50KiBzaGFk
b3dDb250YWluZXIgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4ocm9vdC0+Zmlyc3RDaGlsZCgpKTsK
KyAgICBzaGFkb3dDb250YWluZXItPnNldEF0dHJpYnV0ZShjbGFzc0F0dHIsIGNsYXNzTmFtZUZv
clNoYWRvd1Jvb3RTaXplKGRvY3VtZW50KCktPnBhZ2UoKS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+
Y29udGVudHNTaXplKCksIHRoaXMpKTsgICAKK30KKwogdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVt
ZW50OjpkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QqIHJvb3QpCiB7CiAgICAg
RG9jdW1lbnQqIGRvYyA9IGRvY3VtZW50KCk7CkBAIC0zNzgsOCArNDI0LDggQEAgc3RhdGljIGJv
b2wgc2hvdWxkUGx1Z0luU2hvd0xhYmVsQXV0b21hdGljYWxseShjb25zdCBJbnRTaXplJiB2aWV3
Q29udGVudHNTaXplLAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKHBs
dWdJbkNsaXBSZWN0LnBpeGVsU25hcHBlZFdpZHRoKCkgPCBhdXRvU2hvd0xhYmVsU2l6ZVRocmVz
aG9sZFdpZHRoCi0gICAgICAgIHx8IHBsdWdJbkNsaXBSZWN0LnBpeGVsU25hcHBlZEhlaWdodCgp
IDwgYXV0b1Nob3dMYWJlbFNpemVUaHJlc2hvbGRIZWlnaHQpIHsKKyAgICBpZiAocGx1Z0luQ2xp
cFJlY3QucGl4ZWxTbmFwcGVkV2lkdGgoKSA8IGF1dG9TaG93TGFiZWxTaXplV2lkdGhUaHJlc2hv
bGQKKyAgICAgICAgfHwgcGx1Z0luQ2xpcFJlY3QucGl4ZWxTbmFwcGVkSGVpZ2h0KCkgPCBhdXRv
U2hvd0xhYmVsU2l6ZUhlaWdodFRocmVzaG9sZCkgewogICAgICAgICBMT0coUGx1Z2lucywgIiVw
IFNpemU6ICVkICVkIiwgbm9kZSwgcGx1Z0luQ2xpcFJlY3QucGl4ZWxTbmFwcGVkV2lkdGgoKSwg
cGx1Z0luQ2xpcFJlY3QucGl4ZWxTbmFwcGVkSGVpZ2h0KCkpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQpAQCAtNDA3LDcgKzQ1Myw3IEBAIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVu
dDo6c3ViZnJhbWVMb2FkZXJXaWxsQ3JlYXRlUGx1Z0luKGNvbnN0IEtVUkwmIHVybCkKICAgICBM
YXlvdXRSZWN0IHJlY3QgPSB0b1JlbmRlckVtYmVkZGVkT2JqZWN0KHJlbmRlcmVyKCkpLT5jb250
ZW50Qm94UmVjdCgpOwogICAgIGludCB3aWR0aCA9IHJlY3Qud2lkdGgoKTsKICAgICBpbnQgaGVp
Z2h0ID0gcmVjdC5oZWlnaHQoKTsKLSAgICBpZiAoIXdpZHRoIHx8ICFoZWlnaHQgfHwgKHdpZHRo
IDw9IGF1dG9TdGFydFBsdWdJblNpemVUaHJlc2hvbGRXaWR0aCAmJiBoZWlnaHQgPD0gYXV0b1N0
YXJ0UGx1Z0luU2l6ZVRocmVzaG9sZEhlaWdodCkpIHsKKyAgICBpZiAoIXdpZHRoIHx8ICFoZWln
aHQgfHwgKHdpZHRoIDw9IGF1dG9TdGFydFBsdWdJblNpemVEaW1lbnNpb25UaHJlc2hvbGQgJiYg
aGVpZ2h0IDw9IGF1dG9TdGFydFBsdWdJblNpemVEaW1lbnNpb25UaHJlc2hvbGQpKSB7CiAgICAg
ICAgIExPRyhQbHVnaW5zLCAiJXAgUGx1Zy1pbiBpcyAlZHglZCwgc2V0IHRvIHBsYXkiLCB0aGlz
LCB3aWR0aCwgaGVpZ2h0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmgKaW5kZXggMzk0OWNkNzJmNjBlODg0YjA3
ZDAzNDE2YmRjYzgxMmQzNWRhMTFhYS4uMDBlZTRjNThlZmQ5ZjBlYjRkOTllMzNhNzU2M2Q3OWVl
OTc0MzMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50
LmgKQEAgLTYzLDYgKzYzLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TmVlZHNXaWRnZXRVcGRh
dGUoYm9vbCBuZWVkc1dpZGdldFVwZGF0ZSkgeyBtX25lZWRzV2lkZ2V0VXBkYXRlID0gbmVlZHNX
aWRnZXRVcGRhdGU7IH0KIAogICAgIHZvaWQgdXNlckRpZENsaWNrU25hcHNob3QoUGFzc1JlZlB0
cjxNb3VzZUV2ZW50Pik7CisgICAgdm9pZCB1cGRhdGVTbmFwc2hvdEluZm8oKTsKIAogICAgIC8v
IFBsdWctaW4gVVJMIG1pZ2h0IG5vdCBiZSB0aGUgc2FtZSBhcyB1cmwoKSB3aXRoIG92ZXJyaWRp
bmcgcGFyYW1ldGVycy4KICAgICB2b2lkIHN1YmZyYW1lTG9hZGVyV2lsbENyZWF0ZVBsdWdJbihj
b25zdCBLVVJMJiBwbHVnSW5VUkwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDMz
Y2NlYTYwZmM1NWRjMTU5OGVhOWFhYzZiNDY2OTA2YmVhN2ZmOWIuLjkwMDQ5YTk0N2E1MGYyNTlm
ZTViZjA5ZGE3ZmY3ZDIzZDA1MDVhN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAg
LTEzMzEsMTAgKzEzMzEsMTAgQEAgUmVuZGVyQm94KiBGcmFtZVZpZXc6OmVtYmVkZGVkQ29udGVu
dEJveCgpIGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgRnJhbWVWaWV3OjphZGRXaWRn
ZXRUb1VwZGF0ZShSZW5kZXJFbWJlZGRlZE9iamVjdCogb2JqZWN0KQordm9pZCBGcmFtZVZpZXc6
OmFkZFdpZGdldFRvVXBkYXRlKFJlbmRlck9iamVjdCogb2JqZWN0KQogewogICAgIGlmICghbV93
aWRnZXRVcGRhdGVTZXQpCi0gICAgICAgIG1fd2lkZ2V0VXBkYXRlU2V0ID0gYWRvcHRQdHIobmV3
IFJlbmRlckVtYmVkZGVkT2JqZWN0U2V0KTsKKyAgICAgICAgbV93aWRnZXRVcGRhdGVTZXQgPSBh
ZG9wdFB0cihuZXcgUmVuZGVyT2JqZWN0U2V0KTsKIAogICAgIC8vIFRlbGwgdGhlIERPTSBlbGVt
ZW50IHRoYXQgaXQgbmVlZHMgYSB3aWRnZXQgdXBkYXRlLgogICAgIE5vZGUqIG5vZGUgPSBvYmpl
Y3QtPm5vZGUoKTsKQEAgLTEzNDYsNyArMTM0Niw3IEBAIHZvaWQgRnJhbWVWaWV3OjphZGRXaWRn
ZXRUb1VwZGF0ZShSZW5kZXJFbWJlZGRlZE9iamVjdCogb2JqZWN0KQogICAgIG1fd2lkZ2V0VXBk
YXRlU2V0LT5hZGQob2JqZWN0KTsKIH0KIAotdm9pZCBGcmFtZVZpZXc6OnJlbW92ZVdpZGdldFRv
VXBkYXRlKFJlbmRlckVtYmVkZGVkT2JqZWN0KiBvYmplY3QpCit2b2lkIEZyYW1lVmlldzo6cmVt
b3ZlV2lkZ2V0VG9VcGRhdGUoUmVuZGVyT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgaWYgKCFtX3dp
ZGdldFVwZGF0ZVNldCkKICAgICAgICAgcmV0dXJuOwpAQCAtMjQ0OCw3ICsyNDQ4LDcgQEAgdm9p
ZCBGcmFtZVZpZXc6OnNjcm9sbFRvQW5jaG9yKCkKICAgICBtX21haW50YWluU2Nyb2xsUG9zaXRp
b25BbmNob3IgPSBhbmNob3JOb2RlOwogfQogCi12b2lkIEZyYW1lVmlldzo6dXBkYXRlV2lkZ2V0
KFJlbmRlckVtYmVkZGVkT2JqZWN0KiBvYmplY3QpCit2b2lkIEZyYW1lVmlldzo6dXBkYXRlV2lk
Z2V0KFJlbmRlck9iamVjdCogb2JqZWN0KQogewogICAgIEFTU0VSVCghb2JqZWN0LT5ub2RlKCkg
fHwgb2JqZWN0LT5ub2RlKCktPmlzRWxlbWVudE5vZGUoKSk7CiAgICAgRWxlbWVudCogb3duZXJF
bGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG9iamVjdC0+bm9kZSgpKTsKQEAgLTI0NTgs
MjggKzI0NTgsMzYgQEAgdm9pZCBGcmFtZVZpZXc6OnVwZGF0ZVdpZGdldChSZW5kZXJFbWJlZGRl
ZE9iamVjdCogb2JqZWN0KQogICAgIGlmICghb3duZXJFbGVtZW50KQogICAgICAgICByZXR1cm47
CiAKLSAgICAvLyBObyBuZWVkIHRvIHVwZGF0ZSBpZiBpdCdzIGFscmVhZHkgY3Jhc2hlZCBvciBr
bm93biB0byBiZSBtaXNzaW5nLgotICAgIGlmIChvYmplY3QtPnNob3dzVW5hdmFpbGFibGVQbHVn
aW5JbmRpY2F0b3IoKSkKLSAgICAgICAgcmV0dXJuOworICAgIGlmIChvYmplY3QtPmlzRW1iZWRk
ZWRPYmplY3QoKSkgeworICAgICAgICBSZW5kZXJFbWJlZGRlZE9iamVjdCogZW1iZWRkZWRPYmpl
Y3QgPSBzdGF0aWNfY2FzdDxSZW5kZXJFbWJlZGRlZE9iamVjdCo+KG9iamVjdCk7CisgICAgICAg
IC8vIE5vIG5lZWQgdG8gdXBkYXRlIGlmIGl0J3MgYWxyZWFkeSBjcmFzaGVkIG9yIGtub3duIHRv
IGJlIG1pc3NpbmcuCisgICAgICAgIGlmIChlbWJlZGRlZE9iamVjdC0+c2hvd3NVbmF2YWlsYWJs
ZVBsdWdpbkluZGljYXRvcigpKQorICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gRklYTUU6
IFRoaXMgY291bGQgdHVybiBpbnRvIGEgcmVhbCB2aXJ0dWFsIGRpc3BhdGNoIGlmIHdlIGRlZmlu
ZWQKLSAgICAvLyB1cGRhdGVXaWRnZXQoUGx1Z2luQ3JlYXRpb25PcHRpb24pIG9uIEhUTUxFbGVt
ZW50LgotICAgIGlmIChvd25lckVsZW1lbnQtPmhhc1RhZ05hbWUob2JqZWN0VGFnKSB8fCBvd25l
ckVsZW1lbnQtPmhhc1RhZ05hbWUoZW1iZWRUYWcpIHx8IG93bmVyRWxlbWVudC0+aGFzVGFnTmFt
ZShhcHBsZXRUYWcpKSB7Ci0gICAgICAgIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQqIHBsdWdpbkVs
ZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Kj4ob3duZXJFbGVtZW50
KTsKLSAgICAgICAgaWYgKHBsdWdpbkVsZW1lbnQtPm5lZWRzV2lkZ2V0VXBkYXRlKCkpCi0gICAg
ICAgICAgICBwbHVnaW5FbGVtZW50LT51cGRhdGVXaWRnZXQoQ3JlYXRlQW55V2lkZ2V0VHlwZSk7
Ci0gICAgfQotICAgIC8vIEZJWE1FOiBJdCBpcyBub3QgY2xlYXIgdGhhdCBNZWRpYSBlbGVtZW50
cyBuZWVkIG9yIHdhbnQgdGhpcyB1cGRhdGVXaWRnZXQoKSBjYWxsLgorICAgICAgICAvLyBGSVhN
RTogVGhpcyBjb3VsZCB0dXJuIGludG8gYSByZWFsIHZpcnR1YWwgZGlzcGF0Y2ggaWYgd2UgZGVm
aW5lZAorICAgICAgICAvLyB1cGRhdGVXaWRnZXQoUGx1Z2luQ3JlYXRpb25PcHRpb24pIG9uIEhU
TUxFbGVtZW50LgorICAgICAgICBpZiAob3duZXJFbGVtZW50LT5oYXNUYWdOYW1lKG9iamVjdFRh
ZykgfHwgb3duZXJFbGVtZW50LT5oYXNUYWdOYW1lKGVtYmVkVGFnKSB8fCBvd25lckVsZW1lbnQt
Pmhhc1RhZ05hbWUoYXBwbGV0VGFnKSkgeworICAgICAgICAgICAgSFRNTFBsdWdJbkltYWdlRWxl
bWVudCogcGx1Z2luRWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQq
Pihvd25lckVsZW1lbnQpOworICAgICAgICAgICAgaWYgKHBsdWdpbkVsZW1lbnQtPm5lZWRzV2lk
Z2V0VXBkYXRlKCkpCisgICAgICAgICAgICAgICAgcGx1Z2luRWxlbWVudC0+dXBkYXRlV2lkZ2V0
KENyZWF0ZUFueVdpZGdldFR5cGUpOworICAgICAgICB9CisgICAgICAgIC8vIEZJWE1FOiBJdCBp
cyBub3QgY2xlYXIgdGhhdCBNZWRpYSBlbGVtZW50cyBuZWVkIG9yIHdhbnQgdGhpcyB1cGRhdGVX
aWRnZXQoKSBjYWxsLgogI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQotICAgIGVs
c2UgaWYgKG93bmVyRWxlbWVudC0+aXNNZWRpYUVsZW1lbnQoKSkKLSAgICAgICAgc3RhdGljX2Nh
c3Q8SFRNTE1lZGlhRWxlbWVudCo+KG93bmVyRWxlbWVudCktPnVwZGF0ZVdpZGdldChDcmVhdGVB
bnlXaWRnZXRUeXBlKTsKKyAgICAgICAgZWxzZSBpZiAob3duZXJFbGVtZW50LT5pc01lZGlhRWxl
bWVudCgpKQorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTE1lZGlhRWxlbWVudCo+KG93bmVy
RWxlbWVudCktPnVwZGF0ZVdpZGdldChDcmVhdGVBbnlXaWRnZXRUeXBlKTsKICNlbmRpZgotICAg
IGVsc2UKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0KLSAgICAvLyBDYXV0aW9uOiBp
dCdzIHBvc3NpYmxlIHRoZSBvYmplY3Qgd2FzIGRlc3Ryb3llZCBhZ2Fpbiwgc2luY2UgbG9hZGlu
ZyBhCi0gICAgLy8gcGx1Z2luIG1heSBydW4gYW55IGFyYml0cmFyeSBqYXZhc2NyaXB0LgotICAg
IG9iamVjdC0+dXBkYXRlV2lkZ2V0UG9zaXRpb24oKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisKKyAgICAgICAgLy8gQ2F1dGlvbjogaXQncyBwb3Nz
aWJsZSB0aGUgb2JqZWN0IHdhcyBkZXN0cm95ZWQgYWdhaW4sIHNpbmNlIGxvYWRpbmcgYQorICAg
ICAgICAvLyBwbHVnaW4gbWF5IHJ1biBhbnkgYXJiaXRyYXJ5IGphdmFzY3JpcHQuCisgICAgICAg
IGVtYmVkZGVkT2JqZWN0LT51cGRhdGVXaWRnZXRQb3NpdGlvbigpOworICAgIH0gZWxzZSBpZiAo
b2JqZWN0LT5pc1NuYXBzaG90dGVkUGx1Z0luKCkpIHsKKyAgICAgICAgaWYgKG93bmVyRWxlbWVu
dC0+aGFzVGFnTmFtZShvYmplY3RUYWcpIHx8IG93bmVyRWxlbWVudC0+aGFzVGFnTmFtZShlbWJl
ZFRhZykpIHsKKyAgICAgICAgICAgIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQqIHBsdWdpbkVsZW1l
bnQgPSBzdGF0aWNfY2FzdDxIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Kj4ob3duZXJFbGVtZW50KTsK
KyAgICAgICAgICAgIHBsdWdpbkVsZW1lbnQtPnVwZGF0ZVNuYXBzaG90SW5mbygpOworICAgICAg
ICB9CisgICAgfQogfQogCiBib29sIEZyYW1lVmlldzo6dXBkYXRlV2lkZ2V0cygpCkBAIC0yNDg5
LDI0ICsyNDk3LDMzIEBAIGJvb2wgRnJhbWVWaWV3Ojp1cGRhdGVXaWRnZXRzKCkKICAgICAKICAg
ICBzaXplX3Qgc2l6ZSA9IG1fd2lkZ2V0VXBkYXRlU2V0LT5zaXplKCk7CiAKLSAgICBWZWN0b3I8
UmVuZGVyRW1iZWRkZWRPYmplY3QqPiBvYmplY3RzOworICAgIFZlY3RvcjxSZW5kZXJPYmplY3Qq
PiBvYmplY3RzOwogICAgIG9iamVjdHMucmVzZXJ2ZUNhcGFjaXR5KHNpemUpOwogCi0gICAgUmVu
ZGVyRW1iZWRkZWRPYmplY3RTZXQ6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fd2lkZ2V0VXBkYXRl
U2V0LT5lbmQoKTsKLSAgICBmb3IgKFJlbmRlckVtYmVkZGVkT2JqZWN0U2V0Ojpjb25zdF9pdGVy
YXRvciBpdCA9IG1fd2lkZ2V0VXBkYXRlU2V0LT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsK
LSAgICAgICAgb2JqZWN0cy51bmNoZWNrZWRBcHBlbmQoKml0KTsKLSAgICAgICAgKCppdCktPnJl
ZigpOworICAgIFJlbmRlck9iamVjdFNldDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV93aWRnZXRV
cGRhdGVTZXQtPmVuZCgpOworICAgIGZvciAoUmVuZGVyT2JqZWN0U2V0Ojpjb25zdF9pdGVyYXRv
ciBpdCA9IG1fd2lkZ2V0VXBkYXRlU2V0LT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAg
ICAgICAgUmVuZGVyT2JqZWN0KiBvYmplY3QgPSAqaXQ7CisgICAgICAgIG9iamVjdHMudW5jaGVj
a2VkQXBwZW5kKG9iamVjdCk7CisgICAgICAgIGlmIChvYmplY3QtPmlzRW1iZWRkZWRPYmplY3Qo
KSkgeworICAgICAgICAgICAgUmVuZGVyRW1iZWRkZWRPYmplY3QqIGVtYmVkZGVkT2JqZWN0ID0g
c3RhdGljX2Nhc3Q8UmVuZGVyRW1iZWRkZWRPYmplY3QqPihvYmplY3QpOworICAgICAgICAgICAg
ZW1iZWRkZWRPYmplY3QtPnJlZigpOworICAgICAgICB9CiAgICAgfQogCiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgUmVuZGVyRW1iZWRkZWRPYmplY3Qq
IG9iamVjdCA9IG9iamVjdHNbaV07CisgICAgICAgIFJlbmRlck9iamVjdCogb2JqZWN0ID0gb2Jq
ZWN0c1tpXTsKICAgICAgICAgdXBkYXRlV2lkZ2V0KG9iamVjdCk7CiAgICAgICAgIG1fd2lkZ2V0
VXBkYXRlU2V0LT5yZW1vdmUob2JqZWN0KTsKICAgICB9CiAKICAgICBSZW5kZXJBcmVuYSogYXJl
bmEgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5yZW5kZXJBcmVuYSgpOwotICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICBvYmplY3RzW2ldLT5kZXJlZihhcmVuYSk7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgUmVuZGVy
T2JqZWN0KiBvYmplY3QgPSBvYmplY3RzW2ldOworICAgICAgICBpZiAob2JqZWN0LT5pc0VtYmVk
ZGVkT2JqZWN0KCkpIHsKKyAgICAgICAgICAgIFJlbmRlckVtYmVkZGVkT2JqZWN0KiBlbWJlZGRl
ZE9iamVjdCA9IHN0YXRpY19jYXN0PFJlbmRlckVtYmVkZGVkT2JqZWN0Kj4ob2JqZWN0KTsKKyAg
ICAgICAgICAgIGVtYmVkZGVkT2JqZWN0LT5kZXJlZihhcmVuYSk7CisgICAgICAgIH0KKyAgICB9
CiAgICAgCiAgICAgcmV0dXJuIG1fd2lkZ2V0VXBkYXRlU2V0LT5pc0VtcHR5KCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuaAppbmRleCBkMTNhNzY3OTA4M2VkNGZlZjY5NWY5YjBlMzAzOGFjNzRk
Y2JmODM3Li4zMmRmOWZlMjIyZDVjOTlhNGE3NmUyNjc3ZGRiOGVhZDk5OGRhYTdiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTI1NCw4ICsyNTQsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBz
YWZlVG9Qcm9wYWdhdGVTY3JvbGxUb1BhcmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc2FmZVRvUHJv
cGFnYXRlU2Nyb2xsVG9QYXJlbnQ7IH0KICAgICB2b2lkIHNldFNhZmVUb1Byb3BhZ2F0ZVNjcm9s
bFRvUGFyZW50KGJvb2wgaXNTYWZlKSB7IG1fc2FmZVRvUHJvcGFnYXRlU2Nyb2xsVG9QYXJlbnQg
PSBpc1NhZmU7IH0KIAotICAgIHZvaWQgYWRkV2lkZ2V0VG9VcGRhdGUoUmVuZGVyRW1iZWRkZWRP
YmplY3QqKTsKLSAgICB2b2lkIHJlbW92ZVdpZGdldFRvVXBkYXRlKFJlbmRlckVtYmVkZGVkT2Jq
ZWN0Kik7CisgICAgdm9pZCBhZGRXaWRnZXRUb1VwZGF0ZShSZW5kZXJPYmplY3QqKTsKKyAgICB2
b2lkIHJlbW92ZVdpZGdldFRvVXBkYXRlKFJlbmRlck9iamVjdCopOwogCiAgICAgdmlydHVhbCB2
b2lkIHBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgZGFtYWdl
UmVjdCk7CiAgICAgdm9pZCBzZXRQYWludEJlaGF2aW9yKFBhaW50QmVoYXZpb3IpOwpAQCAtNDcw
LDcgKzQ3MCw3IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIGFkanVzdGVkRGVmZXJyZWRSZXBhaW50
RGVsYXkoKSBjb25zdDsKIAogICAgIGJvb2wgdXBkYXRlV2lkZ2V0cygpOwotICAgIHZvaWQgdXBk
YXRlV2lkZ2V0KFJlbmRlckVtYmVkZGVkT2JqZWN0Kik7CisgICAgdm9pZCB1cGRhdGVXaWRnZXQo
UmVuZGVyT2JqZWN0Kik7CiAgICAgdm9pZCBzY3JvbGxUb0FuY2hvcigpOwogICAgIHZvaWQgc2Ny
b2xsUG9zaXRpb25DaGFuZ2VkKCk7CiAKQEAgLTQ5Myw4ICs0OTMsOCBAQCBwcml2YXRlOgogICAg
IExheW91dFNpemUgbV9zaXplOwogICAgIExheW91dFNpemUgbV9tYXJnaW5zOwogICAgIAotICAg
IHR5cGVkZWYgSGFzaFNldDxSZW5kZXJFbWJlZGRlZE9iamVjdCo+IFJlbmRlckVtYmVkZGVkT2Jq
ZWN0U2V0OwotICAgIE93blB0cjxSZW5kZXJFbWJlZGRlZE9iamVjdFNldD4gbV93aWRnZXRVcGRh
dGVTZXQ7CisgICAgdHlwZWRlZiBIYXNoU2V0PFJlbmRlck9iamVjdCo+IFJlbmRlck9iamVjdFNl
dDsKKyAgICBPd25QdHI8UmVuZGVyT2JqZWN0U2V0PiBtX3dpZGdldFVwZGF0ZVNldDsKICAgICBS
ZWZQdHI8RnJhbWU+IG1fZnJhbWU7CiAKICAgICBib29sIG1fZG9GdWxsUmVwYWludDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3Bw
CmluZGV4IDIzZTBiMTAzMjlhYWRmOGJjZmFhMzdjZDM2YjFjOTcxN2UzZjI5NDUuLmRhZGJiOTI0
MGE3YzM0ZTBjYmI3NGM5ZmQ3YWUxNWI1MGJjZmMyN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcApAQCAtMTI1LDYgKzEy
NSwyMSBAQCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50KiBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6
cGx1Z0luSW1hZ2VFbGVtZW50KCkgY29uc3QKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTFBs
dWdJbkltYWdlRWxlbWVudCo+KG5vZGUoKSk7CiB9CiAKK3ZvaWQgUmVuZGVyU25hcHNob3R0ZWRQ
bHVnSW46OmxheW91dCgpCit7CisgICAgU3RhY2tTdGF0czo6TGF5b3V0Q2hlY2tQb2ludCBsYXlv
dXRDaGVja1BvaW50OworICAgIExheW91dFNpemUgb2xkU2l6ZSA9IGNvbnRlbnRCb3hSZWN0KCku
c2l6ZSgpOworCisgICAgUmVuZGVyQmxvY2s6OmxheW91dCgpOworCisgICAgTGF5b3V0U2l6ZSBu
ZXdTaXplID0gY29udGVudEJveFJlY3QoKS5zaXplKCk7CisgICAgaWYgKG5ld1NpemUgPT0gb2xk
U2l6ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGRvY3VtZW50KCktPnZpZXcoKSkKKyAg
ICAgICAgZG9jdW1lbnQoKS0+dmlldygpLT5hZGRXaWRnZXRUb1VwZGF0ZSh0aGlzKTsKK30KKwog
dm9pZCBSZW5kZXJTbmFwc2hvdHRlZFBsdWdJbjo6dXBkYXRlU25hcHNob3QoUGFzc1JlZlB0cjxJ
bWFnZT4gaW1hZ2UpCiB7CiAgICAgLy8gWmVyby1zaXplIHBsdWdpbnMgd2lsbCBoYXZlIG5vIGlt
YWdlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBzaG90
dGVkUGx1Z0luLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQ
bHVnSW4uaAppbmRleCA5NDZhZjlhNDhhNzg3OWFkYzM2NGNkYWQ0NzI3MzRmYmE2OWI1ZTdjLi40
YWIzYzJiNDJmZWFmOWVhZGI5NzY1M2U1MzM0YjgwYTRlZDg1MWY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uaApAQCAtNTksNiAr
NTksOCBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFpbnRTbmFwc2hvdEltYWdlKEltYWdlKiwgUGFp
bnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKICAgICB2b2lkIHJlcGFpbnRMYWJlbCgpOwog
CisgICAgdmlydHVhbCB2b2lkIGxheW91dCgpIE9WRVJSSURFOworCiAgICAgZW51bSBTaG93UmVh
c29uIHsKICAgICAgICAgVXNlck1vdXNlZE92ZXIsCiAgICAgICAgIFNob3VsZFNob3dBdXRvbWF0
aWNhbGx5Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187894</attachid>
            <date>2013-02-12 10:44:03 -0800</date>
            <delta_ts>2013-02-12 15:26:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108369-20130213054032.patch</filename>
            <type>text/plain</type>
            <size>17246</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyNTA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjZlMjQzMTUzNDhlMjJh
OWI5MjQ1YTIyYjI0ZWQyZGNlNjVhMTg4Yi4uYmQxMzA1NGNhZjc0ODg4NWNiNTc5NjU4OTJmODk3
NTYyNDM0YTU0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEzLTAyLTEyICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgY2xhc3MgbmFtZSBmb3Ig
c25hcHNob3R0ZWQgcGx1Z2luIGJhc2VkIG9uIGRpbWVuc2lvbnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODM2OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFzIHRoZSBzaXplIG9mIHRoZSBwbHVnaW4g
Y2hhbmdlcywgdGhlIFNoYWRvdyBSb290IGZvciB0aGUgc25hcHNob3QKKyAgICAgICAgbWlnaHQg
d2FudCB0byB0b2dnbGUgZGlmZmVyZW50IGludGVyZmFjZXMuIEV4cG9zZSAidGlueSIsICJzbWFs
bCIsCisgICAgICAgICJtZWRpdW0iIGFuZCAibGFyZ2UiIGNsYXNzZXMgb24gdGhlIFNoYWRvdy4g
KFRoZSBkaW1lbnNpb25zIGFyZQorICAgICAgICBjdXJyZW50bHkgY2hvc2VuIGZhaXJseSBhcmJp
dHJhcmlseSkuCisKKyAgICAgICAgQmVjYXVzZSB3ZSBvbmx5IGtub3cgdGhlIGRpbWVuc2lvbnMg
YWZ0ZXIgbGF5b3V0LCB3ZSBzZXQgdXAKKyAgICAgICAgYSBwb3N0IGxheW91dCB0YXNrIHRvIGFk
ZCB0aGUgY2xhc3MuIEx1Y2tpbHkgdGhlcmUgYWxyZWFkeSB3YXMKKyAgICAgICAgYSBwb3N0IGxh
eW91dCB0YXNrIGZvciBwbHVnaW5zIC0gSSBqdXN0IHVwZGF0ZWQgaXQgdG8gaGFuZGxlCisgICAg
ICAgIGJvdGggcmVhbCBhbmQgc25hcHNob3R0ZWQgcGx1Z2lucy4gVGhpcyBpbnZvbHZlZCBtb2Rp
ZnlpbmcKKyAgICAgICAgdGhlIGxpc3Qgb2YgUmVuZGVyRW1iZWRkZWRPYmplY3RzIGluIEZyYW1l
VmlldyB0byB0YWtlIGdlbmVyaWMKKyAgICAgICAgUmVuZGVyT2JqZWN0cywgYW5kIGRlY2lkZSB3
aGljaCB0eXBlIHRoZXkgYXJlIHdoZW4gY2FsbGluZworICAgICAgICB0aGUgdXBkYXRlIG1ldGhv
ZC4KKworICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHA6IFNvbWUgbmV3
IGRpbWVuc2lvbnMgZm9yIHRoZSB2YXJpb3VzIHNpemUgdGhyZXNob2xkcy4KKyAgICAgICAgKFdl
YkNvcmU6OmNsYXNzTmFtZUZvclNoYWRvd1Jvb3RTaXplKTogTmV3IHN0YXRpYyBmdW5jdGlvbiB0
aGF0IHJldHVybnMgYSBjbGFzcyBuYW1lCisgICAgICAgICAgICBhZnRlciBleGFtaW5pbmcgdGhl
IHNpemUgb2YgdGhlIG9iamVjdC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFnZUVs
ZW1lbnQ6OnVwZGF0ZVNuYXBzaG90SW5mbyk6IFNldHMgdGhlIGNsYXNzIG5hbWUgZm9yCisgICAg
ICAgICAgICB0aGUgc2hhZG93IHJvb3QuIFRoaXMgaXMgY2FsbGVkIGluIHRoZSBwb3N0IGxheW91
dCB0YXNrLgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkUGx1Z0luU2hvd0xhYmVsQXV0b21hdGlj
YWxseSk6IFVzZSBuZXcgc2l6ZSBuYW1lcy4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5J
bWFnZUVsZW1lbnQ6OnN1YmZyYW1lTG9hZGVyV2lsbENyZWF0ZVBsdWdJbik6IERpdHRvLgorICAg
ICAgICAqIGh0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oOgorICAgICAgICAoSFRNTFBsdWdJ
bkltYWdlRWxlbWVudCk6IE5ldyBtZXRob2QgdXBkYXRlU25hcHNob3RJbmZvLgorCisgICAgICAg
ICogaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6Y2xhc3NOYW1lRm9yU2hhZG93Um9vdFNpemUpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6dXBkYXRlU25hcHNob3RJbmZvKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNob3VsZFBsdWdJblNob3dMYWJlbEF1dG9tYXRpY2FsbHkpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6c3ViZnJhbWVMb2FkZXJXaWxs
Q3JlYXRlUGx1Z0luKToKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaDoK
KyAgICAgICAgKEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQpOgorICAgICAgICAqIHBhZ2UvRnJhbWVW
aWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6YWRkV2lkZ2V0VG9VcGRhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpyZW1vdmVXaWRnZXRUb1VwZGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnVwZGF0ZVdpZGdldCk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZVZpZXc6OnVwZGF0ZVdpZGdldHMpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3
Lmg6CisgICAgICAgIChGcmFtZVZpZXcpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTbmFw
c2hvdHRlZFBsdWdJbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTbmFwc2hvdHRlZFBs
dWdJbjo6bGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5oOgorCiAyMDEzLTAyLTExICBEZWFuIEphY2tzb24gIDxk
aW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBTb3VyY2UvV2ViQ29yZTogU25hcHNob3R0ZWQgcGx1
Zy1pbiBzaG91bGQgdXNlIHNoYWRvdyByb290CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
UGx1Z0luSW1hZ2VFbGVtZW50LmNwcAppbmRleCAxMmZhMTA2ZTgwMzQzMjMxNDVhYWY0NTE2NmFm
Y2VhOTM4MDRmYTcxLi45OWI4MTFhOWMwYjY3NWQ4ZDUzNWMwOTc4MTQ3ZTE4MzI2ZTI1ZGNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKQEAg
LTUzLDEwICs1MywxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBI
VE1MTmFtZXM7CiAKLXN0YXRpYyBjb25zdCBpbnQgYXV0b1N0YXJ0UGx1Z0luU2l6ZVRocmVzaG9s
ZFdpZHRoID0gMTsKLXN0YXRpYyBjb25zdCBpbnQgYXV0b1N0YXJ0UGx1Z0luU2l6ZVRocmVzaG9s
ZEhlaWdodCA9IDE7Ci1zdGF0aWMgY29uc3QgaW50IGF1dG9TaG93TGFiZWxTaXplVGhyZXNob2xk
V2lkdGggPSA0MDA7Ci1zdGF0aWMgY29uc3QgaW50IGF1dG9TaG93TGFiZWxTaXplVGhyZXNob2xk
SGVpZ2h0ID0gMzAwOworc3RhdGljIGNvbnN0IGludCBhdXRvU3RhcnRQbHVnSW5TaXplRGltZW5z
aW9uVGhyZXNob2xkID0gMTsKK3N0YXRpYyBjb25zdCBpbnQgYXV0b1Nob3dMYWJlbFNpemVXaWR0
aFRocmVzaG9sZCA9IDQwMDsKK3N0YXRpYyBjb25zdCBpbnQgYXV0b1Nob3dMYWJlbFNpemVIZWln
aHRUaHJlc2hvbGQgPSAzMDA7CisKK3N0YXRpYyBjb25zdCBpbnQgc2l6aW5nVGlueURpbWVuc2lv
blRocmVzaG9sZCA9IDQwOworc3RhdGljIGNvbnN0IGludCBzaXppbmdTbWFsbFdpZHRoVGhyZXNo
b2xkID0gMjUwOworc3RhdGljIGNvbnN0IGludCBzaXppbmdNZWRpdW1XaWR0aFRocmVzaG9sZCA9
IDYwMDsKKwogLy8gVGhpcyBkZWxheSBzaG91bGQgbm90IGV4Y2VlZCB0aGUgc25hcHNob3QgZGVs
YXkgaW4gUGx1Z2luVmlldy5jcHAKIHN0YXRpYyBjb25zdCBkb3VibGUgc2ltdWxhdGVkTW91c2VD
bGlja1RpbWVyRGVsYXkgPSAuNzU7CiAKQEAgLTI4OCw2ICsyOTIsNDggQEAgdm9pZCBIVE1MUGx1
Z0luSW1hZ2VFbGVtZW50Ojp1cGRhdGVTbmFwc2hvdChQYXNzUmVmUHRyPEltYWdlPiBpbWFnZSkK
ICAgICBtX3N3YXBSZW5kZXJlclRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKIH0KIAorc3RhdGljIEF0
b21pY1N0cmluZyBjbGFzc05hbWVGb3JTaGFkb3dSb290U2l6ZShjb25zdCBJbnRTaXplJiB2aWV3
Q29udGVudHNTaXplLCBjb25zdCBOb2RlKiBub2RlKQoreworICAgIERFRklORV9TVEFUSUNfTE9D
QUwoY29uc3QgQXRvbWljU3RyaW5nLCBwbHVnSW5UaW55U2l6ZUNsYXNzTmFtZSwgKCJ0aW55Iiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIERFRklORV9TVEFUSUNf
TE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBwbHVnSW5TbWFsbFNpemVDbGFzc05hbWUsICgic21h
bGwiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChjb25zdCBBdG9taWNTdHJpbmcsIHBsdWdJbk1lZGl1bVNpemVDbGFzc05hbWUs
ICgibWVkaXVtIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoY29uc3QgQXRvbWljU3RyaW5nLCBwbHVnSW5MYXJnZVNpemVDbGFz
c05hbWUsICgibGFyZ2UiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisK
KyAgICBMYXlvdXRSZWN0IHBsdWdJbkNsaXBSZWN0ID0gbm9kZS0+cmVuZGVyZXIoKS0+YWJzb2x1
dGVDbGlwcGVkT3ZlcmZsb3dSZWN0KCk7CisgICAgTGF5b3V0UmVjdCB2aWV3Q29udGVudHNSZWN0
KExheW91dFBvaW50Ojp6ZXJvKCksIExheW91dFNpemUodmlld0NvbnRlbnRzU2l6ZSkpOworICAg
IGlmICghdmlld0NvbnRlbnRzUmVjdC5jb250YWlucyhwbHVnSW5DbGlwUmVjdCkpIHsKKyAgICAg
ICAgTE9HKFBsdWdpbnMsICIlcCBQbHVnLWluIHJlY3Q6ICglZCAlZCwgJWQgJWQpIG5vdCBjb250
YWluZWQgaW4gZG9jdW1lbnQgb2Ygc2l6ZSAlZCAlZCIsIG5vZGUsIHBsdWdJbkNsaXBSZWN0LnBp
eGVsU25hcHBlZFgoKSwgcGx1Z0luQ2xpcFJlY3QucGl4ZWxTbmFwcGVkWSgpLCBwbHVnSW5DbGlw
UmVjdC5waXhlbFNuYXBwZWRXaWR0aCgpLCBwbHVnSW5DbGlwUmVjdC5waXhlbFNuYXBwZWRIZWln
aHQoKSwgdmlld0NvbnRlbnRzU2l6ZS53aWR0aCgpLCB2aWV3Q29udGVudHNTaXplLmhlaWdodCgp
KTsKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIH0KKworICAgIGlmIChwbHVnSW5DbGlw
UmVjdC5waXhlbFNuYXBwZWRXaWR0aCgpIDwgc2l6aW5nVGlueURpbWVuc2lvblRocmVzaG9sZCB8
fCBwbHVnSW5DbGlwUmVjdC5waXhlbFNuYXBwZWRIZWlnaHQoKSA8IHNpemluZ1RpbnlEaW1lbnNp
b25UaHJlc2hvbGQpIHsKKyAgICAgICAgTE9HKFBsdWdpbnMsICIlcCBUaW55IFNpemU6ICVkICVk
Iiwgbm9kZSwgcGx1Z0luQ2xpcFJlY3QucGl4ZWxTbmFwcGVkV2lkdGgoKSwgcGx1Z0luQ2xpcFJl
Y3QucGl4ZWxTbmFwcGVkSGVpZ2h0KCkpOworICAgICAgICByZXR1cm4gcGx1Z0luVGlueVNpemVD
bGFzc05hbWU7CisgICAgfQorCisgICAgaWYgKHBsdWdJbkNsaXBSZWN0LnBpeGVsU25hcHBlZFdp
ZHRoKCkgPCBzaXppbmdTbWFsbFdpZHRoVGhyZXNob2xkKSB7CisgICAgICAgIExPRyhQbHVnaW5z
LCAiJXAgU21hbGwgU2l6ZTogJWQgJWQiLCBub2RlLCBwbHVnSW5DbGlwUmVjdC5waXhlbFNuYXBw
ZWRXaWR0aCgpLCBwbHVnSW5DbGlwUmVjdC5waXhlbFNuYXBwZWRIZWlnaHQoKSk7CisgICAgICAg
IHJldHVybiBwbHVnSW5TbWFsbFNpemVDbGFzc05hbWU7CisgICAgfQorCisgICAgaWYgKHBsdWdJ
bkNsaXBSZWN0LnBpeGVsU25hcHBlZFdpZHRoKCkgPCBzaXppbmdNZWRpdW1XaWR0aFRocmVzaG9s
ZCkgeworICAgICAgICBMT0coUGx1Z2lucywgIiVwIE1lZGl1bSBTaXplOiAlZCAlZCIsIG5vZGUs
IHBsdWdJbkNsaXBSZWN0LnBpeGVsU25hcHBlZFdpZHRoKCksIHBsdWdJbkNsaXBSZWN0LnBpeGVs
U25hcHBlZEhlaWdodCgpKTsKKyAgICAgICAgcmV0dXJuIHBsdWdJbk1lZGl1bVNpemVDbGFzc05h
bWU7CisgICAgfQorCisgICAgcmV0dXJuIHBsdWdJbkxhcmdlU2l6ZUNsYXNzTmFtZTsKK30KKwor
dm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojp1cGRhdGVTbmFwc2hvdEluZm8oKQoreworICAg
IFNoYWRvd1Jvb3QqIHJvb3QgPSB1c2VyQWdlbnRTaGFkb3dSb290KCk7CisgICAgaWYgKCFyb290
KQorICAgICAgICByZXR1cm47CisKKyAgICBFbGVtZW50KiBzaGFkb3dDb250YWluZXIgPSBzdGF0
aWNfY2FzdDxFbGVtZW50Kj4ocm9vdC0+Zmlyc3RDaGlsZCgpKTsKKyAgICBzaGFkb3dDb250YWlu
ZXItPnNldEF0dHJpYnV0ZShjbGFzc0F0dHIsIGNsYXNzTmFtZUZvclNoYWRvd1Jvb3RTaXplKGRv
Y3VtZW50KCktPnBhZ2UoKS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+Y29udGVudHNTaXplKCksIHRo
aXMpKTsgICAKK30KKwogdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpkaWRBZGRVc2VyQWdl
bnRTaGFkb3dSb290KFNoYWRvd1Jvb3QqIHJvb3QpCiB7CiAgICAgRG9jdW1lbnQqIGRvYyA9IGRv
Y3VtZW50KCk7CkBAIC0zNzgsOCArNDI0LDggQEAgc3RhdGljIGJvb2wgc2hvdWxkUGx1Z0luU2hv
d0xhYmVsQXV0b21hdGljYWxseShjb25zdCBJbnRTaXplJiB2aWV3Q29udGVudHNTaXplLAogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKHBsdWdJbkNsaXBSZWN0LnBpeGVs
U25hcHBlZFdpZHRoKCkgPCBhdXRvU2hvd0xhYmVsU2l6ZVRocmVzaG9sZFdpZHRoCi0gICAgICAg
IHx8IHBsdWdJbkNsaXBSZWN0LnBpeGVsU25hcHBlZEhlaWdodCgpIDwgYXV0b1Nob3dMYWJlbFNp
emVUaHJlc2hvbGRIZWlnaHQpIHsKKyAgICBpZiAocGx1Z0luQ2xpcFJlY3QucGl4ZWxTbmFwcGVk
V2lkdGgoKSA8IGF1dG9TaG93TGFiZWxTaXplV2lkdGhUaHJlc2hvbGQKKyAgICAgICAgfHwgcGx1
Z0luQ2xpcFJlY3QucGl4ZWxTbmFwcGVkSGVpZ2h0KCkgPCBhdXRvU2hvd0xhYmVsU2l6ZUhlaWdo
dFRocmVzaG9sZCkgewogICAgICAgICBMT0coUGx1Z2lucywgIiVwIFNpemU6ICVkICVkIiwgbm9k
ZSwgcGx1Z0luQ2xpcFJlY3QucGl4ZWxTbmFwcGVkV2lkdGgoKSwgcGx1Z0luQ2xpcFJlY3QucGl4
ZWxTbmFwcGVkSGVpZ2h0KCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtNDA3
LDcgKzQ1Myw3IEBAIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6c3ViZnJhbWVMb2FkZXJX
aWxsQ3JlYXRlUGx1Z0luKGNvbnN0IEtVUkwmIHVybCkKICAgICBMYXlvdXRSZWN0IHJlY3QgPSB0
b1JlbmRlckVtYmVkZGVkT2JqZWN0KHJlbmRlcmVyKCkpLT5jb250ZW50Qm94UmVjdCgpOwogICAg
IGludCB3aWR0aCA9IHJlY3Qud2lkdGgoKTsKICAgICBpbnQgaGVpZ2h0ID0gcmVjdC5oZWlnaHQo
KTsKLSAgICBpZiAoIXdpZHRoIHx8ICFoZWlnaHQgfHwgKHdpZHRoIDw9IGF1dG9TdGFydFBsdWdJ
blNpemVUaHJlc2hvbGRXaWR0aCAmJiBoZWlnaHQgPD0gYXV0b1N0YXJ0UGx1Z0luU2l6ZVRocmVz
aG9sZEhlaWdodCkpIHsKKyAgICBpZiAoIXdpZHRoIHx8ICFoZWlnaHQgfHwgKHdpZHRoIDw9IGF1
dG9TdGFydFBsdWdJblNpemVEaW1lbnNpb25UaHJlc2hvbGQgJiYgaGVpZ2h0IDw9IGF1dG9TdGFy
dFBsdWdJblNpemVEaW1lbnNpb25UaHJlc2hvbGQpKSB7CiAgICAgICAgIExPRyhQbHVnaW5zLCAi
JXAgUGx1Zy1pbiBpcyAlZHglZCwgc2V0IHRvIHBsYXkiLCB0aGlzLCB3aWR0aCwgaGVpZ2h0KTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFBsdWdJbkltYWdlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50LmgKaW5kZXggMzk0OWNkNzJmNjBlODg0YjA3ZDAzNDE2YmRjYzgxMmQzNWRh
MTFhYS4uMDBlZTRjNThlZmQ5ZjBlYjRkOTllMzNhNzU2M2Q3OWVlOTc0MzMzYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmgKQEAgLTYzLDYgKzYzLDcg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0TmVlZHNXaWRnZXRVcGRhdGUoYm9vbCBuZWVkc1dpZGdl
dFVwZGF0ZSkgeyBtX25lZWRzV2lkZ2V0VXBkYXRlID0gbmVlZHNXaWRnZXRVcGRhdGU7IH0KIAog
ICAgIHZvaWQgdXNlckRpZENsaWNrU25hcHNob3QoUGFzc1JlZlB0cjxNb3VzZUV2ZW50Pik7Cisg
ICAgdm9pZCB1cGRhdGVTbmFwc2hvdEluZm8oKTsKIAogICAgIC8vIFBsdWctaW4gVVJMIG1pZ2h0
IG5vdCBiZSB0aGUgc2FtZSBhcyB1cmwoKSB3aXRoIG92ZXJyaWRpbmcgcGFyYW1ldGVycy4KICAg
ICB2b2lkIHN1YmZyYW1lTG9hZGVyV2lsbENyZWF0ZVBsdWdJbihjb25zdCBLVVJMJiBwbHVnSW5V
UkwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDMzY2NlYTYwZmM1NWRjMTU5OGVh
OWFhYzZiNDY2OTA2YmVhN2ZmOWIuLjU0NGFiMTdlNDYxYzdlYTFkMWY1YTBhNGU4YzQzZWNjZGU4
Mjg3NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTEzMzEsMTAgKzEzMzEsMTAg
QEAgUmVuZGVyQm94KiBGcmFtZVZpZXc6OmVtYmVkZGVkQ29udGVudEJveCgpIGNvbnN0CiAgICAg
cmV0dXJuIDA7CiB9CiAKLXZvaWQgRnJhbWVWaWV3OjphZGRXaWRnZXRUb1VwZGF0ZShSZW5kZXJF
bWJlZGRlZE9iamVjdCogb2JqZWN0KQordm9pZCBGcmFtZVZpZXc6OmFkZFdpZGdldFRvVXBkYXRl
KFJlbmRlck9iamVjdCogb2JqZWN0KQogewogICAgIGlmICghbV93aWRnZXRVcGRhdGVTZXQpCi0g
ICAgICAgIG1fd2lkZ2V0VXBkYXRlU2V0ID0gYWRvcHRQdHIobmV3IFJlbmRlckVtYmVkZGVkT2Jq
ZWN0U2V0KTsKKyAgICAgICAgbV93aWRnZXRVcGRhdGVTZXQgPSBhZG9wdFB0cihuZXcgUmVuZGVy
T2JqZWN0U2V0KTsKIAogICAgIC8vIFRlbGwgdGhlIERPTSBlbGVtZW50IHRoYXQgaXQgbmVlZHMg
YSB3aWRnZXQgdXBkYXRlLgogICAgIE5vZGUqIG5vZGUgPSBvYmplY3QtPm5vZGUoKTsKQEAgLTEz
NDYsNyArMTM0Niw3IEBAIHZvaWQgRnJhbWVWaWV3OjphZGRXaWRnZXRUb1VwZGF0ZShSZW5kZXJF
bWJlZGRlZE9iamVjdCogb2JqZWN0KQogICAgIG1fd2lkZ2V0VXBkYXRlU2V0LT5hZGQob2JqZWN0
KTsKIH0KIAotdm9pZCBGcmFtZVZpZXc6OnJlbW92ZVdpZGdldFRvVXBkYXRlKFJlbmRlckVtYmVk
ZGVkT2JqZWN0KiBvYmplY3QpCit2b2lkIEZyYW1lVmlldzo6cmVtb3ZlV2lkZ2V0VG9VcGRhdGUo
UmVuZGVyT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgaWYgKCFtX3dpZGdldFVwZGF0ZVNldCkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMjQ0OCw3ICsyNDQ4LDcgQEAgdm9pZCBGcmFtZVZpZXc6OnNjcm9s
bFRvQW5jaG9yKCkKICAgICBtX21haW50YWluU2Nyb2xsUG9zaXRpb25BbmNob3IgPSBhbmNob3JO
b2RlOwogfQogCi12b2lkIEZyYW1lVmlldzo6dXBkYXRlV2lkZ2V0KFJlbmRlckVtYmVkZGVkT2Jq
ZWN0KiBvYmplY3QpCit2b2lkIEZyYW1lVmlldzo6dXBkYXRlV2lkZ2V0KFJlbmRlck9iamVjdCog
b2JqZWN0KQogewogICAgIEFTU0VSVCghb2JqZWN0LT5ub2RlKCkgfHwgb2JqZWN0LT5ub2RlKCkt
PmlzRWxlbWVudE5vZGUoKSk7CiAgICAgRWxlbWVudCogb3duZXJFbGVtZW50ID0gc3RhdGljX2Nh
c3Q8RWxlbWVudCo+KG9iamVjdC0+bm9kZSgpKTsKQEAgLTI0NTgsMjggKzI0NTgsMzYgQEAgdm9p
ZCBGcmFtZVZpZXc6OnVwZGF0ZVdpZGdldChSZW5kZXJFbWJlZGRlZE9iamVjdCogb2JqZWN0KQog
ICAgIGlmICghb3duZXJFbGVtZW50KQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBObyBuZWVk
IHRvIHVwZGF0ZSBpZiBpdCdzIGFscmVhZHkgY3Jhc2hlZCBvciBrbm93biB0byBiZSBtaXNzaW5n
LgotICAgIGlmIChvYmplY3QtPnNob3dzVW5hdmFpbGFibGVQbHVnaW5JbmRpY2F0b3IoKSkKLSAg
ICAgICAgcmV0dXJuOworICAgIGlmIChvYmplY3QtPmlzRW1iZWRkZWRPYmplY3QoKSkgeworICAg
ICAgICBSZW5kZXJFbWJlZGRlZE9iamVjdCogZW1iZWRkZWRPYmplY3QgPSBzdGF0aWNfY2FzdDxS
ZW5kZXJFbWJlZGRlZE9iamVjdCo+KG9iamVjdCk7CisgICAgICAgIC8vIE5vIG5lZWQgdG8gdXBk
YXRlIGlmIGl0J3MgYWxyZWFkeSBjcmFzaGVkIG9yIGtub3duIHRvIGJlIG1pc3NpbmcuCisgICAg
ICAgIGlmIChlbWJlZGRlZE9iamVjdC0+c2hvd3NVbmF2YWlsYWJsZVBsdWdpbkluZGljYXRvcigp
KQorICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gRklYTUU6IFRoaXMgY291bGQgdHVybiBp
bnRvIGEgcmVhbCB2aXJ0dWFsIGRpc3BhdGNoIGlmIHdlIGRlZmluZWQKLSAgICAvLyB1cGRhdGVX
aWRnZXQoUGx1Z2luQ3JlYXRpb25PcHRpb24pIG9uIEhUTUxFbGVtZW50LgotICAgIGlmIChvd25l
ckVsZW1lbnQtPmhhc1RhZ05hbWUob2JqZWN0VGFnKSB8fCBvd25lckVsZW1lbnQtPmhhc1RhZ05h
bWUoZW1iZWRUYWcpIHx8IG93bmVyRWxlbWVudC0+aGFzVGFnTmFtZShhcHBsZXRUYWcpKSB7Ci0g
ICAgICAgIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQqIHBsdWdpbkVsZW1lbnQgPSBzdGF0aWNfY2Fz
dDxIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Kj4ob3duZXJFbGVtZW50KTsKLSAgICAgICAgaWYgKHBs
dWdpbkVsZW1lbnQtPm5lZWRzV2lkZ2V0VXBkYXRlKCkpCi0gICAgICAgICAgICBwbHVnaW5FbGVt
ZW50LT51cGRhdGVXaWRnZXQoQ3JlYXRlQW55V2lkZ2V0VHlwZSk7Ci0gICAgfQotICAgIC8vIEZJ
WE1FOiBJdCBpcyBub3QgY2xlYXIgdGhhdCBNZWRpYSBlbGVtZW50cyBuZWVkIG9yIHdhbnQgdGhp
cyB1cGRhdGVXaWRnZXQoKSBjYWxsLgorICAgICAgICAvLyBGSVhNRTogVGhpcyBjb3VsZCB0dXJu
IGludG8gYSByZWFsIHZpcnR1YWwgZGlzcGF0Y2ggaWYgd2UgZGVmaW5lZAorICAgICAgICAvLyB1
cGRhdGVXaWRnZXQoUGx1Z2luQ3JlYXRpb25PcHRpb24pIG9uIEhUTUxFbGVtZW50LgorICAgICAg
ICBpZiAob3duZXJFbGVtZW50LT5oYXNUYWdOYW1lKG9iamVjdFRhZykgfHwgb3duZXJFbGVtZW50
LT5oYXNUYWdOYW1lKGVtYmVkVGFnKSB8fCBvd25lckVsZW1lbnQtPmhhc1RhZ05hbWUoYXBwbGV0
VGFnKSkgeworICAgICAgICAgICAgSFRNTFBsdWdJbkltYWdlRWxlbWVudCogcGx1Z2luRWxlbWVu
dCA9IHN0YXRpY19jYXN0PEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQqPihvd25lckVsZW1lbnQpOwor
ICAgICAgICAgICAgaWYgKHBsdWdpbkVsZW1lbnQtPm5lZWRzV2lkZ2V0VXBkYXRlKCkpCisgICAg
ICAgICAgICAgICAgcGx1Z2luRWxlbWVudC0+dXBkYXRlV2lkZ2V0KENyZWF0ZUFueVdpZGdldFR5
cGUpOworICAgICAgICB9CisgICAgICAgIC8vIEZJWE1FOiBJdCBpcyBub3QgY2xlYXIgdGhhdCBN
ZWRpYSBlbGVtZW50cyBuZWVkIG9yIHdhbnQgdGhpcyB1cGRhdGVXaWRnZXQoKSBjYWxsLgogI2lm
IEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQotICAgIGVsc2UgaWYgKG93bmVyRWxlbWVu
dC0+aXNNZWRpYUVsZW1lbnQoKSkKLSAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTE1lZGlhRWxlbWVu
dCo+KG93bmVyRWxlbWVudCktPnVwZGF0ZVdpZGdldChDcmVhdGVBbnlXaWRnZXRUeXBlKTsKKyAg
ICAgICAgZWxzZSBpZiAob3duZXJFbGVtZW50LT5pc01lZGlhRWxlbWVudCgpKQorICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8SFRNTE1lZGlhRWxlbWVudCo+KG93bmVyRWxlbWVudCktPnVwZGF0ZVdp
ZGdldChDcmVhdGVBbnlXaWRnZXRUeXBlKTsKICNlbmRpZgotICAgIGVsc2UKLSAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0KLSAgICAvLyBDYXV0aW9uOiBpdCdzIHBvc3NpYmxlIHRoZSBv
YmplY3Qgd2FzIGRlc3Ryb3llZCBhZ2Fpbiwgc2luY2UgbG9hZGluZyBhCi0gICAgLy8gcGx1Z2lu
IG1heSBydW4gYW55IGFyYml0cmFyeSBqYXZhc2NyaXB0LgotICAgIG9iamVjdC0+dXBkYXRlV2lk
Z2V0UG9zaXRpb24oKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisKKyAgICAgICAgLy8gQ2F1dGlvbjogaXQncyBwb3NzaWJsZSB0aGUgb2JqZWN0IHdh
cyBkZXN0cm95ZWQgYWdhaW4sIHNpbmNlIGxvYWRpbmcgYQorICAgICAgICAvLyBwbHVnaW4gbWF5
IHJ1biBhbnkgYXJiaXRyYXJ5IEphdmFTY3JpcHQuCisgICAgICAgIGVtYmVkZGVkT2JqZWN0LT51
cGRhdGVXaWRnZXRQb3NpdGlvbigpOworICAgIH0gZWxzZSBpZiAob2JqZWN0LT5pc1NuYXBzaG90
dGVkUGx1Z0luKCkpIHsKKyAgICAgICAgaWYgKG93bmVyRWxlbWVudC0+aGFzVGFnTmFtZShvYmpl
Y3RUYWcpIHx8IG93bmVyRWxlbWVudC0+aGFzVGFnTmFtZShlbWJlZFRhZykpIHsKKyAgICAgICAg
ICAgIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQqIHBsdWdpbkVsZW1lbnQgPSBzdGF0aWNfY2FzdDxI
VE1MUGx1Z0luSW1hZ2VFbGVtZW50Kj4ob3duZXJFbGVtZW50KTsKKyAgICAgICAgICAgIHBsdWdp
bkVsZW1lbnQtPnVwZGF0ZVNuYXBzaG90SW5mbygpOworICAgICAgICB9CisgICAgfQogfQogCiBi
b29sIEZyYW1lVmlldzo6dXBkYXRlV2lkZ2V0cygpCkBAIC0yNDg5LDI0ICsyNDk3LDMzIEBAIGJv
b2wgRnJhbWVWaWV3Ojp1cGRhdGVXaWRnZXRzKCkKICAgICAKICAgICBzaXplX3Qgc2l6ZSA9IG1f
d2lkZ2V0VXBkYXRlU2V0LT5zaXplKCk7CiAKLSAgICBWZWN0b3I8UmVuZGVyRW1iZWRkZWRPYmpl
Y3QqPiBvYmplY3RzOwotICAgIG9iamVjdHMucmVzZXJ2ZUNhcGFjaXR5KHNpemUpOworICAgIFZl
Y3RvcjxSZW5kZXJPYmplY3QqPiBvYmplY3RzOworICAgIG9iamVjdHMucmVzZXJ2ZUluaXRpYWxD
YXBhY2l0eShzaXplKTsKIAotICAgIFJlbmRlckVtYmVkZGVkT2JqZWN0U2V0Ojpjb25zdF9pdGVy
YXRvciBlbmQgPSBtX3dpZGdldFVwZGF0ZVNldC0+ZW5kKCk7Ci0gICAgZm9yIChSZW5kZXJFbWJl
ZGRlZE9iamVjdFNldDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3dpZGdldFVwZGF0ZVNldC0+YmVn
aW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIG9iamVjdHMudW5jaGVja2VkQXBwZW5k
KCppdCk7Ci0gICAgICAgICgqaXQpLT5yZWYoKTsKKyAgICBSZW5kZXJPYmplY3RTZXQ6OmNvbnN0
X2l0ZXJhdG9yIGVuZCA9IG1fd2lkZ2V0VXBkYXRlU2V0LT5lbmQoKTsKKyAgICBmb3IgKFJlbmRl
ck9iamVjdFNldDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3dpZGdldFVwZGF0ZVNldC0+YmVnaW4o
KTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIFJlbmRlck9iamVjdCogb2JqZWN0ID0gKml0
OworICAgICAgICBvYmplY3RzLnVuY2hlY2tlZEFwcGVuZChvYmplY3QpOworICAgICAgICBpZiAo
b2JqZWN0LT5pc0VtYmVkZGVkT2JqZWN0KCkpIHsKKyAgICAgICAgICAgIFJlbmRlckVtYmVkZGVk
T2JqZWN0KiBlbWJlZGRlZE9iamVjdCA9IHN0YXRpY19jYXN0PFJlbmRlckVtYmVkZGVkT2JqZWN0
Kj4ob2JqZWN0KTsKKyAgICAgICAgICAgIGVtYmVkZGVkT2JqZWN0LT5yZWYoKTsKKyAgICAgICAg
fQogICAgIH0KIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAg
ICAgIFJlbmRlckVtYmVkZGVkT2JqZWN0KiBvYmplY3QgPSBvYmplY3RzW2ldOworICAgICAgICBS
ZW5kZXJPYmplY3QqIG9iamVjdCA9IG9iamVjdHNbaV07CiAgICAgICAgIHVwZGF0ZVdpZGdldChv
YmplY3QpOwogICAgICAgICBtX3dpZGdldFVwZGF0ZVNldC0+cmVtb3ZlKG9iamVjdCk7CiAgICAg
fQogCiAgICAgUmVuZGVyQXJlbmEqIGFyZW5hID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+cmVuZGVy
QXJlbmEoKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAg
b2JqZWN0c1tpXS0+ZGVyZWYoYXJlbmEpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6
ZTsgKytpKSB7CisgICAgICAgIFJlbmRlck9iamVjdCogb2JqZWN0ID0gb2JqZWN0c1tpXTsKKyAg
ICAgICAgaWYgKG9iamVjdC0+aXNFbWJlZGRlZE9iamVjdCgpKSB7CisgICAgICAgICAgICBSZW5k
ZXJFbWJlZGRlZE9iamVjdCogZW1iZWRkZWRPYmplY3QgPSBzdGF0aWNfY2FzdDxSZW5kZXJFbWJl
ZGRlZE9iamVjdCo+KG9iamVjdCk7CisgICAgICAgICAgICBlbWJlZGRlZE9iamVjdC0+ZGVyZWYo
YXJlbmEpOworICAgICAgICB9CisgICAgfQogICAgIAogICAgIHJldHVybiBtX3dpZGdldFVwZGF0
ZVNldC0+aXNFbXB0eSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggZDEzYTc2Nzkw
ODNlZDRmZWY2OTVmOWIwZTMwMzhhYzc0ZGNiZjgzNy4uMzJkZjlmZTIyMmQ1Yzk5YTRhNzZlMjY3
N2RkYjhlYWQ5OThkYWE3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZp
ZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC0yNTQsOCArMjU0
LDggQEAgcHVibGljOgogICAgIGJvb2wgc2FmZVRvUHJvcGFnYXRlU2Nyb2xsVG9QYXJlbnQoKSBj
b25zdCB7IHJldHVybiBtX3NhZmVUb1Byb3BhZ2F0ZVNjcm9sbFRvUGFyZW50OyB9CiAgICAgdm9p
ZCBzZXRTYWZlVG9Qcm9wYWdhdGVTY3JvbGxUb1BhcmVudChib29sIGlzU2FmZSkgeyBtX3NhZmVU
b1Byb3BhZ2F0ZVNjcm9sbFRvUGFyZW50ID0gaXNTYWZlOyB9CiAKLSAgICB2b2lkIGFkZFdpZGdl
dFRvVXBkYXRlKFJlbmRlckVtYmVkZGVkT2JqZWN0Kik7Ci0gICAgdm9pZCByZW1vdmVXaWRnZXRU
b1VwZGF0ZShSZW5kZXJFbWJlZGRlZE9iamVjdCopOworICAgIHZvaWQgYWRkV2lkZ2V0VG9VcGRh
dGUoUmVuZGVyT2JqZWN0Kik7CisgICAgdm9pZCByZW1vdmVXaWRnZXRUb1VwZGF0ZShSZW5kZXJP
YmplY3QqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4
dCosIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpOwogICAgIHZvaWQgc2V0UGFpbnRCZWhhdmlv
cihQYWludEJlaGF2aW9yKTsKQEAgLTQ3MCw3ICs0NzAsNyBAQCBwcml2YXRlOgogICAgIGRvdWJs
ZSBhZGp1c3RlZERlZmVycmVkUmVwYWludERlbGF5KCkgY29uc3Q7CiAKICAgICBib29sIHVwZGF0
ZVdpZGdldHMoKTsKLSAgICB2b2lkIHVwZGF0ZVdpZGdldChSZW5kZXJFbWJlZGRlZE9iamVjdCop
OworICAgIHZvaWQgdXBkYXRlV2lkZ2V0KFJlbmRlck9iamVjdCopOwogICAgIHZvaWQgc2Nyb2xs
VG9BbmNob3IoKTsKICAgICB2b2lkIHNjcm9sbFBvc2l0aW9uQ2hhbmdlZCgpOwogCkBAIC00OTMs
OCArNDkzLDggQEAgcHJpdmF0ZToKICAgICBMYXlvdXRTaXplIG1fc2l6ZTsKICAgICBMYXlvdXRT
aXplIG1fbWFyZ2luczsKICAgICAKLSAgICB0eXBlZGVmIEhhc2hTZXQ8UmVuZGVyRW1iZWRkZWRP
YmplY3QqPiBSZW5kZXJFbWJlZGRlZE9iamVjdFNldDsKLSAgICBPd25QdHI8UmVuZGVyRW1iZWRk
ZWRPYmplY3RTZXQ+IG1fd2lkZ2V0VXBkYXRlU2V0OworICAgIHR5cGVkZWYgSGFzaFNldDxSZW5k
ZXJPYmplY3QqPiBSZW5kZXJPYmplY3RTZXQ7CisgICAgT3duUHRyPFJlbmRlck9iamVjdFNldD4g
bV93aWRnZXRVcGRhdGVTZXQ7CiAgICAgUmVmUHRyPEZyYW1lPiBtX2ZyYW1lOwogCiAgICAgYm9v
bCBtX2RvRnVsbFJlcGFpbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU25hcHNob3R0ZWRQbHVnSW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNuYXBzaG90dGVkUGx1Z0luLmNwcAppbmRleCAyM2UwYjEwMzI5YWFkZjhiY2ZhYTM3Y2Qz
NmIxYzk3MTdlM2YyOTQ1Li5kYWRiYjkyNDBhN2MzNGUwY2JiNzRjOWZkN2FlMTViNTBiY2ZjMjdj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU25hcHNob3R0ZWRQ
bHVnSW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRl
ZFBsdWdJbi5jcHAKQEAgLTEyNSw2ICsxMjUsMjEgQEAgSFRNTFBsdWdJbkltYWdlRWxlbWVudCog
UmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnBsdWdJbkltYWdlRWxlbWVudCgpIGNvbnN0CiAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQqPihub2RlKCkpOwogfQog
Cit2b2lkIFJlbmRlclNuYXBzaG90dGVkUGx1Z0luOjpsYXlvdXQoKQoreworICAgIFN0YWNrU3Rh
dHM6OkxheW91dENoZWNrUG9pbnQgbGF5b3V0Q2hlY2tQb2ludDsKKyAgICBMYXlvdXRTaXplIG9s
ZFNpemUgPSBjb250ZW50Qm94UmVjdCgpLnNpemUoKTsKKworICAgIFJlbmRlckJsb2NrOjpsYXlv
dXQoKTsKKworICAgIExheW91dFNpemUgbmV3U2l6ZSA9IGNvbnRlbnRCb3hSZWN0KCkuc2l6ZSgp
OworICAgIGlmIChuZXdTaXplID09IG9sZFNpemUpCisgICAgICAgIHJldHVybjsKKworICAgIGlm
IChkb2N1bWVudCgpLT52aWV3KCkpCisgICAgICAgIGRvY3VtZW50KCktPnZpZXcoKS0+YWRkV2lk
Z2V0VG9VcGRhdGUodGhpcyk7Cit9CisKIHZvaWQgUmVuZGVyU25hcHNob3R0ZWRQbHVnSW46OnVw
ZGF0ZVNuYXBzaG90KFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKQogewogICAgIC8vIFplcm8tc2l6
ZSBwbHVnaW5zIHdpbGwgaGF2ZSBubyBpbWFnZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJbi5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNuYXBzaG90dGVkUGx1Z0luLmgKaW5kZXggOTQ2YWY5YTQ4YTc4NzlhZGMz
NjRjZGFkNDcyNzM0ZmJhNjliNWU3Yy4uNGFiM2MyYjQyZmVhZjllYWRiOTc2NTNlNTMzNGI4MGE0
ZWQ4NTFmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBz
aG90dGVkUGx1Z0luLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNuYXBz
aG90dGVkUGx1Z0luLmgKQEAgLTU5LDYgKzU5LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhaW50
U25hcHNob3RJbWFnZShJbWFnZSosIFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7CiAg
ICAgdm9pZCByZXBhaW50TGFiZWwoKTsKIAorICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBPVkVS
UklERTsKKwogICAgIGVudW0gU2hvd1JlYXNvbiB7CiAgICAgICAgIFVzZXJNb3VzZWRPdmVyLAog
ICAgICAgICBTaG91bGRTaG93QXV0b21hdGljYWxseQo=
</data>
<flag name="review"
          id="207854"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>