<?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>121467</bug_id>
          
          <creation_ts>2013-09-16 21:08:36 -0700</creation_ts>
          <short_desc>[Windows] Clean up WinLauncher by using smart pointers</short_desc>
          <delta_ts>2013-09-16 21:22:12 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>930041</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-09-16 21:08:36 -0700</bug_when>
    <thetext>Get rid of a lot of ugly (and error-prone) boilerplate by switching to smart pointers for the various data types in the program.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930042</commentid>
    <comment_count>1</comment_count>
      <attachid>211861</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-09-16 21:11:23 -0700</bug_when>
    <thetext>Created attachment 211861
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930046</commentid>
    <comment_count>2</comment_count>
      <attachid>211861</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-09-16 21:15:18 -0700</bug_when>
    <thetext>Comment on attachment 211861
Patch

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

&gt; Tools/WinLauncher/WinLauncher.cpp:82
&gt; +IWebInspectorPtr gInspector;
&gt; +IWebViewPtr gWebView;
&gt; +IWebViewPrivatePtr gWebViewPrivate;
&gt; +IWebPreferencesPtr gStandardPreferences;
&gt; +IWebPreferencesPrivatePtr gPrefsPrivate;

I don&apos;t think these need to be smart pointers, and I think that making them smart pointers will cause global constructors.

&gt; Tools/WinLauncher/WinLauncher.cpp:88
&gt; +std::vector&lt;IWebHistoryItemPtr&gt; gHistoryItems;

Same thing here. Maybe you should just create an application class/struct?

&gt; Tools/WinLauncher/WinLauncher.cpp:537
&gt; +        static _bstr_t defaultHTML(TEXT(&quot;&lt;p style=\&quot;background-color: #00FF00\&quot;&gt;Testing&lt;/p&gt;&lt;img id=\&quot;webkit logo\&quot; src=\&quot;http://webkit.org/images/icon-gold.png\&quot; alt=\&quot;Face\&quot;&gt;&lt;div style=\&quot;border: solid blue; background: white;\&quot; contenteditable=\&quot;true\&quot;&gt;div with blue border&lt;/div&gt;&lt;ul&gt;&lt;li&gt;foo&lt;li&gt;bar&lt;li&gt;baz&lt;/ul&gt;&quot;));

I don&apos;t think this needs to be static.

&gt; Tools/WinLauncher/WinLauncher.cpp:915
&gt; +    static _bstr_t methodBStr(TEXT(&quot;GET&quot;));

Same thing here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930048</commentid>
    <comment_count>3</comment_count>
      <attachid>211861</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-09-16 21:21:30 -0700</bug_when>
    <thetext>Comment on attachment 211861
Patch

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

Thanks for looking this over. I&apos;ll make some more adjustments in a follow-up patch.

&gt;&gt; Tools/WinLauncher/WinLauncher.cpp:82
&gt;&gt; +IWebPreferencesPrivatePtr gPrefsPrivate;
&gt; 
&gt; I don&apos;t think these need to be smart pointers, and I think that making them smart pointers will cause global constructors.

Hmm. I have some other cleanup to do; I&apos;ll revise this when I make those changes.

&gt;&gt; Tools/WinLauncher/WinLauncher.cpp:88
&gt;&gt; +std::vector&lt;IWebHistoryItemPtr&gt; gHistoryItems;
&gt; 
&gt; Same thing here. Maybe you should just create an application class/struct?

Agreed. I&apos;ll do that next.

&gt;&gt; Tools/WinLauncher/WinLauncher.cpp:537
&gt;&gt; +        static _bstr_t defaultHTML(TEXT(&quot;&lt;p style=\&quot;background-color: #00FF00\&quot;&gt;Testing&lt;/p&gt;&lt;img id=\&quot;webkit logo\&quot; src=\&quot;http://webkit.org/images/icon-gold.png\&quot; alt=\&quot;Face\&quot;&gt;&lt;div style=\&quot;border: solid blue; background: white;\&quot; contenteditable=\&quot;true\&quot;&gt;div with blue border&lt;/div&gt;&lt;ul&gt;&lt;li&gt;foo&lt;li&gt;bar&lt;li&gt;baz&lt;/ul&gt;&quot;));
&gt; 
&gt; I don&apos;t think this needs to be static.

Done.

&gt;&gt; Tools/WinLauncher/WinLauncher.cpp:915
&gt;&gt; +    static _bstr_t methodBStr(TEXT(&quot;GET&quot;));
&gt; 
&gt; Same thing here.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>930050</commentid>
    <comment_count>4</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-09-16 21:22:12 -0700</bug_when>
    <thetext>Committed r155929: &lt;http://trac.webkit.org/changeset/155929&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211861</attachid>
            <date>2013-09-16 21:11:23 -0700</date>
            <delta_ts>2013-09-16 21:21:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-121467-20130916211047.patch</filename>
            <type>text/plain</type>
            <size>20340</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE1NTkyNikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI1IEBACisyMDEzLTA5LTE2ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29t
PgorCisgICAgICAgIFtXaW5kb3dzXSBDbGVhbiB1cCBXaW5MYXVuY2hlciBieSB1c2luZyBzbWFy
dCBwb2ludGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTIxNDY3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXaW5MYXVuY2hlci9QcmludFdlYlVJRGVsZWdhdGUuY3BwOgorICAgICAgICAoUHJpbnRX
ZWJVSURlbGVnYXRlOjp3ZWJWaWV3UHJpbnRpbmdNYXJnaW5SZWN0KTogU3dpdGNoIHRvIHNtYXJ0
IHBvaW50ZXJzLgorICAgICAgICAqIFdpbkxhdW5jaGVyL1dpbkxhdW5jaGVyLmNwcDoKKyAgICAg
ICAgKFdpbkxhdW5jaGVyV2ViSG9zdDo6dXBkYXRlQWRkcmVzc0Jhcik6IFVzZSBfYnN0cl90IGFu
ZCBzbWFydCBwb2ludGVycy4KKyAgICAgICAgKFdpbkxhdW5jaGVyV2ViSG9zdDo6ZGlkRmFpbFBy
b3Zpc2lvbmFsTG9hZFdpdGhFcnJvcik6IERpdHRvLgorICAgICAgICAoc2hvd0xhc3RWaXNpdGVk
U2l0ZXMpOiBTbWFydCBwb2ludGVyIHVwZGF0ZXMuCisgICAgICAgIChXaW5MYXVuY2hlcldlYkhv
c3Q6OmRpZEZpbmlzaExvYWRGb3JGcmFtZSk6IERpdHRvLgorICAgICAgICAoc2V0VG9EZWZhdWx0
UHJlZmVyZW5jZXMpOiBEaXR0by4KKyAgICAgICAgKGRsbExhdW5jaGVyRW50cnlQb2ludCk6IERp
dHRvLgorICAgICAgICAoUHJpbnRWaWV3KTogRGl0dG8uCisgICAgICAgIChMYXVuY2hJbnNwZWN0
b3IpOiBEaXR0by4KKyAgICAgICAgKE5hdmlnYXRlVG9IaXN0b3J5KTogRGl0dG8uCisgICAgICAg
IChNeUVkaXRQcm9jKTogRGl0dG8uCisgICAgICAgIChsb2FkVVJMKTogRGl0dG8uCisKIDIwMTMt
MDktMTYgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dp
bmRvd3NdIEFkZCBydWRpbWVudGFyeSBoaXN0b3J5IHRvIFdpbkxhdW5jaGVyLgpJbmRleDogVG9v
bHMvV2luTGF1bmNoZXIvUHJpbnRXZWJVSURlbGVnYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9XaW5MYXVuY2hlci9QcmludFdlYlVJRGVsZWdhdGUuY3BwCShyZXZpc2lvbiAxNTU5MjEpCisr
KyBUb29scy9XaW5MYXVuY2hlci9QcmludFdlYlVJRGVsZWdhdGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTMgQXBwbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA5IEJyZW50IEZ1bGdo
YW0uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yOCw2ICsyOCw3
IEBACiAjaW5jbHVkZSAiUHJpbnRXZWJVSURlbGVnYXRlLmgiCiAKICNpbmNsdWRlIDxXZWJLaXQv
V2ViS2l0Q09NQVBJLmg+CisjaW5jbHVkZSA8Y29taXAuaD4KICNpbmNsdWRlIDxjb21tY3RybC5o
PgogI2luY2x1ZGUgPGNvbW1kbGcuaD4KICNpbmNsdWRlIDxvYmpiYXNlLmg+CkBAIC02NCwyMCAr
NjUsMjEgQEAgVUxPTkcgUHJpbnRXZWJVSURlbGVnYXRlOjpSZWxlYXNlKHZvaWQpCiAgICAgcmV0
dXJuIG5ld1JlZjsKIH0KIAordHlwZWRlZiBfY29tX3B0cl90PF9jb21fSUlJRDxJV2ViRnJhbWUs
ICZfX3V1aWRvZihJV2ViRnJhbWUpPj4gSVdlYkZyYW1lUHRyOwordHlwZWRlZiBfY29tX3B0cl90
PF9jb21fSUlJRDxJV2ViRnJhbWVQcml2YXRlLCAmX191dWlkb2YoSVdlYkZyYW1lUHJpdmF0ZSk+
PiBJV2ViRnJhbWVQcml2YXRlUHRyOworCiBIUkVTVUxUIFByaW50V2ViVUlEZWxlZ2F0ZTo6d2Vi
Vmlld1ByaW50aW5nTWFyZ2luUmVjdChJV2ViVmlldyogdmlldywgUkVDVCogcmVjdCkKIHsKICAg
ICBpZiAoIXZpZXcgfHwgIXJlY3QpCiAgICAgICAgIHJldHVybiBFX1BPSU5URVI7CiAKLSAgICBJ
V2ViRnJhbWUqIG1haW5GcmFtZSA9IDA7Ci0gICAgaWYgKEZBSUxFRCh2aWV3LT5tYWluRnJhbWUo
Jm1haW5GcmFtZSkpKQorICAgIElXZWJGcmFtZVB0ciBtYWluRnJhbWU7CisgICAgaWYgKEZBSUxF
RCh2aWV3LT5tYWluRnJhbWUoJm1haW5GcmFtZS5HZXRJbnRlcmZhY2VQdHIoKSkpKQogICAgICAg
ICByZXR1cm4gRV9GQUlMOwogCi0gICAgSVdlYkZyYW1lUHJpdmF0ZSogcHJpdmF0ZUZyYW1lID0g
MDsKLSAgICBpZiAoRkFJTEVEKG1haW5GcmFtZS0+UXVlcnlJbnRlcmZhY2UoJnByaXZhdGVGcmFt
ZSkpKSB7Ci0gICAgICAgIG1haW5GcmFtZS0+UmVsZWFzZSgpOworICAgIElXZWJGcmFtZVByaXZh
dGVQdHIgcHJpdmF0ZUZyYW1lOworICAgIGlmIChGQUlMRUQobWFpbkZyYW1lLT5RdWVyeUludGVy
ZmFjZSgmcHJpdmF0ZUZyYW1lLkdldEludGVyZmFjZVB0cigpKSkpCiAgICAgICAgIHJldHVybiBF
X0ZBSUw7Ci0gICAgfQogCiAgICAgcHJpdmF0ZUZyYW1lLT5mcmFtZUJvdW5kcyhyZWN0KTsKIApA
QCAtODgsOSArOTAsNiBAQCBIUkVTVUxUIFByaW50V2ViVUlEZWxlZ2F0ZTo6d2ViVmlld1ByaW50
CiAgICAgcmVjdC0+Ym90dG9tID0gKDo6R2V0RGV2aWNlQ2FwcyhkYywgTE9HUElYRUxTWSkgKiAx
MSkgLSBNQVJHSU47CiAgICAgOjpSZWxlYXNlREMoMCwgZGMpOwogCi0gICAgcHJpdmF0ZUZyYW1l
LT5SZWxlYXNlKCk7Ci0gICAgbWFpbkZyYW1lLT5SZWxlYXNlKCk7Ci0KICAgICByZXR1cm4gU19P
SzsKIH0KIApJbmRleDogVG9vbHMvV2luTGF1bmNoZXIvV2luTGF1bmNoZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1dpbkxhdW5jaGVyL1dpbkxhdW5jaGVyLmNwcAkocmV2aXNpb24gMTU1OTIy
KQorKysgVG9vbHMvV2luTGF1bmNoZXIvV2luTGF1bmNoZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00MCwxNSArNDAsMTggQEAKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9DRlJ1bkxvb3AuaD4K
ICNlbmRpZgogCisjaW5jbHVkZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPGFzc2VydC5oPgogI2lu
Y2x1ZGUgPGNvbWlwLmg+CiAjaW5jbHVkZSA8Y29tbWN0cmwuaD4KICNpbmNsdWRlIDxjb21tZGxn
Lmg+CiAjaW5jbHVkZSA8Y29tdXRpbC5oPgorI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVk
ZSA8b2JqYmFzZS5oPgogI2luY2x1ZGUgPHNoZWxsYXBpLmg+CiAjaW5jbHVkZSA8c2hsd2FwaS5o
PgogI2luY2x1ZGUgPHN0cmluZz4KKyNpbmNsdWRlIDx2ZWN0b3I+CiAjaW5jbHVkZSA8d2luaW5l
dC5oPgogCiAjZGVmaW5lIE1BWF9MT0FEU1RSSU5HIDEwMApAQCAtNTYsMjQgKzU5LDMzIEBACiAK
IHN0YXRpYyBjb25zdCBpbnQgbWF4SGlzdG9yeVNpemUgPSAxMDsKIAordHlwZWRlZiBfY29tX3B0
cl90PF9jb21fSUlJRDxJV2ViRnJhbWUsICZfX3V1aWRvZihJV2ViRnJhbWUpPj4gSVdlYkZyYW1l
UHRyOwordHlwZWRlZiBfY29tX3B0cl90PF9jb21fSUlJRDxJV2ViSGlzdG9yeSwgJl9fdXVpZG9m
KElXZWJIaXN0b3J5KT4+IElXZWJIaXN0b3J5UHRyOwordHlwZWRlZiBfY29tX3B0cl90PF9jb21f
SUlJRDxJV2ViSGlzdG9yeUl0ZW0sICZfX3V1aWRvZihJV2ViSGlzdG9yeUl0ZW0pPj4gSVdlYkhp
c3RvcnlJdGVtUHRyOwordHlwZWRlZiBfY29tX3B0cl90PF9jb21fSUlJRDxJV2ViSW5zcGVjdG9y
LCAmX191dWlkb2YoSVdlYkluc3BlY3Rvcik+PiBJV2ViSW5zcGVjdG9yUHRyOwordHlwZWRlZiBf
Y29tX3B0cl90PF9jb21fSUlJRDxJV2ViTXV0YWJsZVVSTFJlcXVlc3QsICZfX3V1aWRvZihJV2Vi
TXV0YWJsZVVSTFJlcXVlc3QpPj4gSVdlYk11dGFibGVVUkxSZXF1ZXN0UHRyOwordHlwZWRlZiBf
Y29tX3B0cl90PF9jb21fSUlJRDxJV2ViUHJlZmVyZW5jZXMsICZfX3V1aWRvZihJV2ViUHJlZmVy
ZW5jZXMpPj4gSVdlYlByZWZlcmVuY2VzUHRyOwordHlwZWRlZiBfY29tX3B0cl90PF9jb21fSUlJ
RDxJV2ViUHJlZmVyZW5jZXNQcml2YXRlLCAmX191dWlkb2YoSVdlYlByZWZlcmVuY2VzUHJpdmF0
ZSk+PiBJV2ViUHJlZmVyZW5jZXNQcml2YXRlUHRyOwordHlwZWRlZiBfY29tX3B0cl90PF9jb21f
SUlJRDxJV2ViVmlldywgJl9fdXVpZG9mKElXZWJWaWV3KT4+IElXZWJWaWV3UHRyOwordHlwZWRl
ZiBfY29tX3B0cl90PF9jb21fSUlJRDxJV2ViVmlld1ByaXZhdGUsICZfX3V1aWRvZihJV2ViVmll
d1ByaXZhdGUpPj4gSVdlYlZpZXdQcml2YXRlUHRyOworCiAvLyBHbG9iYWwgVmFyaWFibGVzOgog
SElOU1RBTkNFIGhJbnN0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY3VycmVu
dCBpbnN0YW5jZQogSFdORCBoTWFpblduZDsKIEhXTkQgaFVSTEJhclduZDsKIFdORFBST0MgRGVm
RWRpdFByb2MgPSAwOwogV05EUFJPQyBEZWZXZWJLaXRQcm9jID0gMDsKLUlXZWJJbnNwZWN0b3Iq
IGdJbnNwZWN0b3IgPSAwOwotSVdlYlZpZXcqIGdXZWJWaWV3ID0gMDsKLUlXZWJWaWV3UHJpdmF0
ZSogZ1dlYlZpZXdQcml2YXRlID0gMDsKLUlXZWJQcmVmZXJlbmNlcyogZ1N0YW5kYXJkUHJlZmVy
ZW5jZXMgPSAwOwotSVdlYlByZWZlcmVuY2VzUHJpdmF0ZSogZ1ByZWZzUHJpdmF0ZSA9IDA7CitJ
V2ViSW5zcGVjdG9yUHRyIGdJbnNwZWN0b3I7CitJV2ViVmlld1B0ciBnV2ViVmlldzsKK0lXZWJW
aWV3UHJpdmF0ZVB0ciBnV2ViVmlld1ByaXZhdGU7CitJV2ViUHJlZmVyZW5jZXNQdHIgZ1N0YW5k
YXJkUHJlZmVyZW5jZXM7CitJV2ViUHJlZmVyZW5jZXNQcml2YXRlUHRyIGdQcmVmc1ByaXZhdGU7
CiBIV05EIGdWaWV3V2luZG93ID0gMDsKIFdpbkxhdW5jaGVyV2ViSG9zdCogZ1dlYkhvc3QgPSAw
OwogUHJpbnRXZWJVSURlbGVnYXRlKiBnUHJpbnREZWxlZ2F0ZSA9IDA7CiBBY2Nlc3NpYmlsaXR5
RGVsZWdhdGUqIGdBY2Nlc3NpYmlsaXR5RGVsZWdhdGUgPSAwOwotSVdlYkhpc3RvcnkqIGdXZWJI
aXN0b3J5ID0gMDsKLUlXZWJIaXN0b3J5SXRlbSoqIGdIaXN0b3J5SXRlbXMgPSAwOwotaW50IGdI
aXN0b3J5TWVudUl0ZW1zID0gMDsKK0lXZWJIaXN0b3J5UHRyIGdXZWJIaXN0b3J5Oworc3RkOjp2
ZWN0b3I8SVdlYkhpc3RvcnlJdGVtUHRyPiBnSGlzdG9yeUl0ZW1zOwogVENIQVIgc3pUaXRsZVtN
QVhfTE9BRFNUUklOR107ICAgICAgICAgICAgICAgICAgICAvLyBUaGUgdGl0bGUgYmFyIHRleHQK
IFRDSEFSIHN6V2luZG93Q2xhc3NbTUFYX0xPQURTVFJJTkddOyAgICAgICAgICAgIC8vIHRoZSBt
YWluIHdpbmRvdyBjbGFzcyBuYW1lCiAKQEAgLTEyMiw1NiArMTM0LDQ1IEBAIHByaXZhdGU6CiAg
ICAgd2NoYXJfdCBtX2V2ZW50VHlwZVsxMDBdOwogfTsKIAordHlwZWRlZiBfY29tX3B0cl90PF9j
b21fSUlJRDxJV2ViRGF0YVNvdXJjZSwgJl9fdXVpZG9mKElXZWJEYXRhU291cmNlKT4+IElXZWJE
YXRhU291cmNlUHRyOworCiBIUkVTVUxUIFdpbkxhdW5jaGVyV2ViSG9zdDo6dXBkYXRlQWRkcmVz
c0JhcihJV2ViVmlldyogd2ViVmlldykKIHsKLSAgICBJV2ViRnJhbWUqIG1haW5GcmFtZSA9IDA7
Ci0gICAgSVdlYkRhdGFTb3VyY2UqIGRhdGFTb3VyY2UgPSAwOwotICAgIElXZWJNdXRhYmxlVVJM
UmVxdWVzdCogcmVxdWVzdCA9IDA7Ci0gICAgQlNUUiBmcmFtZVVSTCA9IDA7Ci0KLSAgICBIUkVT
VUxUIGhyID0gU19PSzsKLQotICAgIGhyID0gd2ViVmlldy0+bWFpbkZyYW1lKCZtYWluRnJhbWUp
OworICAgIElXZWJGcmFtZVB0ciBtYWluRnJhbWU7CisgICAgSFJFU1VMVCBociA9IHdlYlZpZXct
Pm1haW5GcmFtZSgmbWFpbkZyYW1lLkdldEludGVyZmFjZVB0cigpKTsKICAgICBpZiAoRkFJTEVE
KGhyKSkKLSAgICAgICAgZ290byBleGl0OworICAgICAgICByZXR1cm4gMDsKIAotICAgIGhyID0g
bWFpbkZyYW1lLT5kYXRhU291cmNlKCZkYXRhU291cmNlKTsKKyAgICBJV2ViRGF0YVNvdXJjZVB0
ciBkYXRhU291cmNlOworICAgIGhyID0gbWFpbkZyYW1lLT5kYXRhU291cmNlKCZkYXRhU291cmNl
LkdldEludGVyZmFjZVB0cigpKTsKICAgICBpZiAoRkFJTEVEKGhyKSB8fCAhZGF0YVNvdXJjZSkK
LSAgICAgICAgaHIgPSBtYWluRnJhbWUtPnByb3Zpc2lvbmFsRGF0YVNvdXJjZSgmZGF0YVNvdXJj
ZSk7CisgICAgICAgIGhyID0gbWFpbkZyYW1lLT5wcm92aXNpb25hbERhdGFTb3VyY2UoJmRhdGFT
b3VyY2UuR2V0SW50ZXJmYWNlUHRyKCkpOwogICAgIGlmIChGQUlMRUQoaHIpIHx8ICFkYXRhU291
cmNlKQotICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIHJldHVybiAwOwogCi0gICAgaHIgPSBk
YXRhU291cmNlLT5yZXF1ZXN0KCZyZXF1ZXN0KTsKKyAgICBJV2ViTXV0YWJsZVVSTFJlcXVlc3RQ
dHIgcmVxdWVzdDsKKyAgICBociA9IGRhdGFTb3VyY2UtPnJlcXVlc3QoJnJlcXVlc3QuR2V0SW50
ZXJmYWNlUHRyKCkpOwogICAgIGlmIChGQUlMRUQoaHIpIHx8ICFyZXF1ZXN0KQotICAgICAgICBn
b3RvIGV4aXQ7CisgICAgICAgIHJldHVybiAwOwogCi0gICAgaHIgPSByZXF1ZXN0LT5tYWluRG9j
dW1lbnRVUkwoJmZyYW1lVVJMKTsKKyAgICBfYnN0cl90IGZyYW1lVVJMOworICAgIGhyID0gcmVx
dWVzdC0+bWFpbkRvY3VtZW50VVJMKGZyYW1lVVJMLkdldEFkZHJlc3MoKSk7CiAgICAgaWYgKEZB
SUxFRChocikpCi0gICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBT
ZW5kTWVzc2FnZShoVVJMQmFyV25kLCAoVUlOVClXTV9TRVRURVhULCAwLCAoTFBBUkFNKWZyYW1l
VVJMKTsKKyAgICA6OlNlbmRNZXNzYWdlKGhVUkxCYXJXbmQsIHN0YXRpY19jYXN0PFVJTlQ+KFdN
X1NFVFRFWFQpLCAwLCByZWludGVycHJldF9jYXN0PExQQVJBTT4oZnJhbWVVUkwuR2V0QlNUUigp
KSk7CiAKLWV4aXQ6Ci0gICAgaWYgKG1haW5GcmFtZSkKLSAgICAgICAgbWFpbkZyYW1lLT5SZWxl
YXNlKCk7Ci0gICAgaWYgKGRhdGFTb3VyY2UpCi0gICAgICAgIGRhdGFTb3VyY2UtPlJlbGVhc2Uo
KTsKLSAgICBpZiAocmVxdWVzdCkKLSAgICAgICAgcmVxdWVzdC0+UmVsZWFzZSgpOwotICAgIFN5
c0ZyZWVTdHJpbmcoZnJhbWVVUkwpOwogICAgIHJldHVybiAwOwogfQogCi1IUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIFdpbkxhdW5jaGVyV2ViSG9zdDo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdp
dGhFcnJvcihJV2ViVmlldyosIElXZWJFcnJvciAqZXJyb3IsIElXZWJGcmFtZSopCitIUkVTVUxU
IFdpbkxhdW5jaGVyV2ViSG9zdDo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvcihJV2Vi
VmlldyosIElXZWJFcnJvciAqZXJyb3IsIElXZWJGcmFtZSopCiB7Ci0gICAgQlNUUiBlcnJvckRl
c2NyaXB0aW9uID0gMDsKLSAgICBIUkVTVUxUIGhyID0gZXJyb3ItPmxvY2FsaXplZERlc2NyaXB0
aW9uKCZlcnJvckRlc2NyaXB0aW9uKTsKKyAgICBfYnN0cl90IGVycm9yRGVzY3JpcHRpb247Cisg
ICAgSFJFU1VMVCBociA9IGVycm9yLT5sb2NhbGl6ZWREZXNjcmlwdGlvbihlcnJvckRlc2NyaXB0
aW9uLkdldEFkZHJlc3MoKSk7CiAgICAgaWYgKEZBSUxFRChocikpCiAgICAgICAgIGVycm9yRGVz
Y3JpcHRpb24gPSBMIkZhaWxlZCB0byBsb2FkIHBhZ2UgYW5kIHRvIGxvY2FsaXplIGVycm9yIGRl
c2NyaXB0aW9uLiI7CiAKICAgICA6Ok1lc3NhZ2VCb3hXKDAsIHN0YXRpY19jYXN0PExQQ1dTVFI+
KGVycm9yRGVzY3JpcHRpb24pLCBMIkVycm9yIiwgTUJfQVBQTE1PREFMIHwgTUJfT0spOwotICAg
IGlmIChTVUNDRUVERUQoaHIpKQotICAgICAgICBTeXNGcmVlU3RyaW5nKGVycm9yRGVzY3JpcHRp
b24pOwogCiAgICAgcmV0dXJuIFNfT0s7CiB9CkBAIC0yMjEsNyArMjIyLDcgQEAgc3RhdGljIHZv
aWQgdXBkYXRlTWVudUl0ZW1Gb3JIaXN0b3J5SXRlbQogICAgIDo6RW5hYmxlTWVudUl0ZW0obWVu
dSwgbWVudUlELCBNRl9CWUNPTU1BTkQgfCBNRl9FTkFCTEVEKTsKIH0KIAotc3RhdGljIHZvaWQg
c2hvd0xhc3RWaXNpdGVkU2l0ZXMoSVdlYlZpZXcmIHdlYlZpZXcsIElXZWJGcmFtZSYgd2ViRnJh
bWUpCitzdGF0aWMgdm9pZCBzaG93TGFzdFZpc2l0ZWRTaXRlcyhJV2ViVmlldyYgd2ViVmlldykK
IHsKICAgICBITUVOVSBtZW51ID0gOjpHZXRNZW51KGhNYWluV25kKTsKIApAQCAtMjUxLDcgKzI1
Miw3IEBAIHN0YXRpYyB2b2lkIHNob3dMYXN0VmlzaXRlZFNpdGVzKElXZWJWaWUKICAgICBVSU5U
IGZvcndhcmRTZXR0aW5nID0gTUZfQllDT01NQU5EIHwgKGZvcndhcmRDb3VudCkgPyBNRl9FTkFC
TEVEIDogTUZfRElTQUJMRUQ7CiAgICAgOjpFbmFibGVNZW51SXRlbShtZW51LCBJRE1fSElTVE9S
WV9GT1JXQVJELCBmb3J3YXJkU2V0dGluZyk7CiAKLSAgICBfY29tX3B0cl90PF9jb21fSUlJRDxJ
V2ViSGlzdG9yeUl0ZW0sICZfX3V1aWRvZihJV2ViSGlzdG9yeUl0ZW0pPj4gY3VycmVudEl0ZW07
CisgICAgSVdlYkhpc3RvcnlJdGVtUHRyIGN1cnJlbnRJdGVtOwogICAgIGhyID0gYmFja0Zvcndh
cmRMaXN0LT5jdXJyZW50SXRlbSgmY3VycmVudEl0ZW0uR2V0SW50ZXJmYWNlUHRyKCkpOwogICAg
IGlmIChGQUlMRUQoaHIpKQogICAgICAgICByZXR1cm47CkBAIC0yNzAsMjMgKzI3MSwxOSBAQCBz
dGF0aWMgdm9pZCBzaG93TGFzdFZpc2l0ZWRTaXRlcyhJV2ViVmllCiAgICAgaWYgKEZBSUxFRCho
cikpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChnSGlzdG9yeUl0ZW1zKSB7Ci0gICAgICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgZ0hpc3RvcnlNZW51SXRlbXM7ICsraSkKLSAgICAgICAgICAg
IGdIaXN0b3J5SXRlbXNbaV0tPlJlbGVhc2UoKTsKLQotICAgICAgICBkZWxldGVbXSBnSGlzdG9y
eUl0ZW1zOwotICAgIH0KLQotICAgIGdIaXN0b3J5SXRlbXMgPSBuZXcgSVdlYkhpc3RvcnlJdGVt
Klt0b3RhbExpc3RDb3VudF07Ci0gICAgaWYgKCFnSGlzdG9yeUl0ZW1zKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBnSGlzdG9yeU1lbnVJdGVtcyA9IHRvdGFsTGlzdENvdW50OworICAgIGdIaXN0
b3J5SXRlbXMucmVzaXplKHRvdGFsTGlzdENvdW50KTsKIAotICAgIGhyID0gd2ViSGlzdG9yeS0+
YWxsSXRlbXMoJnRvdGFsTGlzdENvdW50LCBnSGlzdG9yeUl0ZW1zKTsKKyAgICBzdGQ6OnZlY3Rv
cjxJV2ViSGlzdG9yeUl0ZW0qPiBoaXN0b3J5VG9Mb2FkKHRvdGFsTGlzdENvdW50KTsKKyAgICBo
ciA9IHdlYkhpc3RvcnktPmFsbEl0ZW1zKCZ0b3RhbExpc3RDb3VudCwgaGlzdG9yeVRvTG9hZC5k
YXRhKCkpOwogICAgIGlmIChGQUlMRUQoaHIpKQogICAgICAgICByZXR1cm47CiAKKyAgICBzaXpl
X3QgaSA9IDA7CisgICAgZm9yIChhdXRvIGN1ciA9IGhpc3RvcnlUb0xvYWQuYmVnaW4oKTsgY3Vy
ICE9IGhpc3RvcnlUb0xvYWQuZW5kKCk7ICsrY3VyKSB7CisgICAgICAgIGdIaXN0b3J5SXRlbXNb
aV0uQXR0YWNoKCpjdXIpOworICAgICAgICArK2k7CisgICAgfQorCiAgICAgaW50IGFsbEl0ZW1z
T2Zmc2V0ID0gMDsKICAgICBpZiAodG90YWxMaXN0Q291bnQgPiBtYXhIaXN0b3J5U2l6ZSkKICAg
ICAgICAgYWxsSXRlbXNPZmZzZXQgPSB0b3RhbExpc3RDb3VudCAtIG1heEhpc3RvcnlTaXplOwpA
QCAtMzAyLDM2ICsyOTksMzIgQEAgc3RhdGljIHZvaWQgc2hvd0xhc3RWaXNpdGVkU2l0ZXMoSVdl
YlZpZQogICAgICAgICA6OkVuYWJsZU1lbnVJdGVtKG1lbnUsIElETV9ISVNUT1JZX0xJTkswICsg
aSwgTUZfQllDT01NQU5EIHwgTUZfRElTQUJMRUQpOwogfQogCit0eXBlZGVmIF9jb21fcHRyX3Q8
X2NvbV9JSUlEPElET01Eb2N1bWVudCwgJl9fdXVpZG9mKElET01Eb2N1bWVudCk+PiBJRE9NRG9j
dW1lbnRQdHI7Cit0eXBlZGVmIF9jb21fcHRyX3Q8X2NvbV9JSUlEPElET01FbGVtZW50LCAmX191
dWlkb2YoSURPTUVsZW1lbnQpPj4gSURPTUVsZW1lbnRQdHI7Cit0eXBlZGVmIF9jb21fcHRyX3Q8
X2NvbV9JSUlEPElET01FdmVudFRhcmdldCwgJl9fdXVpZG9mKElET01FdmVudFRhcmdldCk+PiBJ
RE9NRXZlbnRUYXJnZXRQdHI7CisKIEhSRVNVTFQgV2luTGF1bmNoZXJXZWJIb3N0OjpkaWRGaW5p
c2hMb2FkRm9yRnJhbWUoSVdlYlZpZXcqIHdlYlZpZXcsIElXZWJGcmFtZSogZnJhbWUpCiB7Ci0g
ICAgSURPTURvY3VtZW50KiBkb2MgPSAwOwotICAgIGZyYW1lLT5ET01Eb2N1bWVudCgmZG9jKTsK
KyAgICBJRE9NRG9jdW1lbnRQdHIgZG9jOworICAgIGZyYW1lLT5ET01Eb2N1bWVudCgmZG9jLkdl
dEludGVyZmFjZVB0cigpKTsKIAotICAgIElET01FbGVtZW50KiBlbGVtZW50ID0gMDsKLSAgICBJ
RE9NRXZlbnRUYXJnZXQqIHRhcmdldCA9IDA7CisgICAgSURPTUVsZW1lbnRQdHIgZWxlbWVudDsK
KyAgICBJRE9NRXZlbnRUYXJnZXRQdHIgdGFyZ2V0OwogCi0gICAgc2hvd0xhc3RWaXNpdGVkU2l0
ZXMoKndlYlZpZXcsICpmcmFtZSk7CisgICAgc2hvd0xhc3RWaXNpdGVkU2l0ZXMoKndlYlZpZXcp
OwogCiAgICAgLy8gVGhlIGZvbGxvd2luZyBpcyBmb3IgdGhlIHRlc3QgcGFnZToKLSAgICBIUkVT
VUxUIGhyID0gZG9jLT5nZXRFbGVtZW50QnlJZChMIndlYmtpdCBsb2dvIiwgJmVsZW1lbnQpOwor
ICAgIEhSRVNVTFQgaHIgPSBkb2MtPmdldEVsZW1lbnRCeUlkKEwid2Via2l0IGxvZ28iLCAmZWxl
bWVudC5HZXRJbnRlcmZhY2VQdHIoKSk7CiAgICAgaWYgKCFTVUNDRUVERUQoaHIpKQotICAgICAg
ICBnb3RvIGV4aXQ7CisgICAgICAgIHJldHVybiBocjsKIAotICAgIGhyID0gZWxlbWVudC0+UXVl
cnlJbnRlcmZhY2UoSUlEX0lET01FdmVudFRhcmdldCwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+
KCZ0YXJnZXQpKTsKKyAgICBociA9IGVsZW1lbnQtPlF1ZXJ5SW50ZXJmYWNlKElJRF9JRE9NRXZl
bnRUYXJnZXQsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmdGFyZ2V0LkdldEludGVyZmFjZVB0
cigpKSk7CiAgICAgaWYgKCFTVUNDRUVERUQoaHIpKQotICAgICAgICBnb3RvIGV4aXQ7CisgICAg
ICAgIHJldHVybiBocjsKIAogICAgIGhyID0gdGFyZ2V0LT5hZGRFdmVudExpc3RlbmVyKEwiY2xp
Y2siLCBuZXcgU2ltcGxlRXZlbnRMaXN0ZW5lciAoTCJ3ZWJraXQgbG9nbyBjbGljayIpLCBGQUxT
RSk7CiAgICAgaWYgKCFTVUNDRUVERUQoaHIpKQotICAgICAgICBnb3RvIGV4aXQ7Ci0KLWV4aXQ6
Ci0gICAgaWYgKHRhcmdldCkKLSAgICAgICAgdGFyZ2V0LT5SZWxlYXNlKCk7Ci0gICAgaWYgKGVs
ZW1lbnQpCi0gICAgICAgIGVsZW1lbnQtPlJlbGVhc2UoKTsKLSAgICBpZiAoZG9jKQotICAgICAg
ICBkb2MtPlJlbGVhc2UoKTsKKyAgICAgICAgcmV0dXJuIGhyOwogCiAgICAgcmV0dXJuIGhyOwog
fQpAQCAtMzgxLDcgKzM3NCw3IEBAIEJPT0wgV0lOQVBJIERsbE1haW4oSElOU1RBTkNFIGRsbElu
c3RhbmMKIAogc3RhdGljIGJvb2wgc2V0VG9EZWZhdWx0UHJlZmVyZW5jZXMoKQogewotICAgIEhS
RVNVTFQgaHIgPSBnU3RhbmRhcmRQcmVmZXJlbmNlcy0+UXVlcnlJbnRlcmZhY2UoSUlEX0lXZWJQ
cmVmZXJlbmNlc1ByaXZhdGUsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmZ1ByZWZzUHJpdmF0
ZSkpOworICAgIEhSRVNVTFQgaHIgPSBnU3RhbmRhcmRQcmVmZXJlbmNlcy0+UXVlcnlJbnRlcmZh
Y2UoSUlEX0lXZWJQcmVmZXJlbmNlc1ByaXZhdGUsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigm
Z1ByZWZzUHJpdmF0ZS5HZXRJbnRlcmZhY2VQdHIoKSkpOwogICAgIGlmICghU1VDQ0VFREVEKGhy
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC00MjcsNyArNDIwLDcgQEAgZXh0ZXJuICJD
IiBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgaW50IFdJTgogICAgIEluaXRDdHJsRXguZHdJQ0MgID0g
MHgwMDAwNDAwMDsgLy9JQ0NfU1RBTkRBUkRfQ0xBU1NFUzsKICAgICBJbml0Q29tbW9uQ29udHJv
bHNFeCgmSW5pdEN0cmxFeCk7CiAKLSAgICBCU1RSIHJlcXVlc3RlZFVSTCA9IDA7CisgICAgX2Jz
dHJfdCByZXF1ZXN0ZWRVUkw7CiAgICAgaW50IGFyZ2MgPSAwOwogICAgIFdDSEFSKiogYXJndiA9
IENvbW1hbmRMaW5lVG9Bcmd2VyhHZXRDb21tYW5kTGluZVcoKSwgJmFyZ2MpOwogICAgIGZvciAo
aW50IGkgPSAxOyBpIDwgYXJnYzsgKytpKSB7CkBAIC00MzYsNyArNDI5LDcgQEAgZXh0ZXJuICJD
IiBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgaW50IFdJTgogICAgICAgICBlbHNlIGlmICghd2NzaWNt
cChhcmd2W2ldLCBMIi0tZGVza3RvcCIpKQogICAgICAgICAgICAgc19mdWxsRGVza3RvcCA9IHRy
dWU7CiAgICAgICAgIGVsc2UgaWYgKCFyZXF1ZXN0ZWRVUkwpCi0gICAgICAgICAgICByZXF1ZXN0
ZWRVUkwgPSA6OlN5c0FsbG9jU3RyaW5nKGFyZ3ZbaV0pOworICAgICAgICAgICAgcmVxdWVzdGVk
VVJMID0gYXJndltpXTsKICAgICB9CiAKICAgICAvLyBJbml0aWFsaXplIGdsb2JhbCBzdHJpbmdz
CkBAIC00ODcsMjUgKzQ4MCwyNSBAQCBleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBp
bnQgV0lOCiAKICAgICBSRUNUIGNsaWVudFJlY3QgPSB7IHNfd2luZG93UG9zaXRpb24ueCwgc193
aW5kb3dQb3NpdGlvbi55LCBzX3dpbmRvd1Bvc2l0aW9uLnggKyBzX3dpbmRvd1NpemUuY3gsIHNf
d2luZG93UG9zaXRpb24ueSArIHNfd2luZG93U2l6ZS5jeSB9OwogCi0gICAgSVdlYlByZWZlcmVu
Y2VzKiB0bXBQcmVmZXJlbmNlcyA9IDA7Ci0gICAgaWYgKEZBSUxFRChXZWJLaXRDcmVhdGVJbnN0
YW5jZShDTFNJRF9XZWJQcmVmZXJlbmNlcywgMCwgSUlEX0lXZWJQcmVmZXJlbmNlcywgcmVpbnRl
cnByZXRfY2FzdDx2b2lkKio+KCZ0bXBQcmVmZXJlbmNlcykpKSkKKyAgICBJV2ViUHJlZmVyZW5j
ZXNQdHIgdG1wUHJlZmVyZW5jZXM7CisgICAgaWYgKEZBSUxFRChXZWJLaXRDcmVhdGVJbnN0YW5j
ZShDTFNJRF9XZWJQcmVmZXJlbmNlcywgMCwgSUlEX0lXZWJQcmVmZXJlbmNlcywgcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKio+KCZ0bXBQcmVmZXJlbmNlcy5HZXRJbnRlcmZhY2VQdHIoKSkpKSkKICAg
ICAgICAgZ290byBleGl0OwogCi0gICAgaWYgKEZBSUxFRCh0bXBQcmVmZXJlbmNlcy0+c3RhbmRh
cmRQcmVmZXJlbmNlcygmZ1N0YW5kYXJkUHJlZmVyZW5jZXMpKSkKKyAgICBpZiAoRkFJTEVEKHRt
cFByZWZlcmVuY2VzLT5zdGFuZGFyZFByZWZlcmVuY2VzKCZnU3RhbmRhcmRQcmVmZXJlbmNlcy5H
ZXRJbnRlcmZhY2VQdHIoKSkpKQogICAgICAgICBnb3RvIGV4aXQ7CiAKICAgICBpZiAoIXNldFRv
RGVmYXVsdFByZWZlcmVuY2VzKCkpCiAgICAgICAgIGdvdG8gZXhpdDsKIAotICAgIEhSRVNVTFQg
aHIgPSBXZWJLaXRDcmVhdGVJbnN0YW5jZShDTFNJRF9XZWJWaWV3LCAwLCBJSURfSVdlYlZpZXcs
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoqPigmZ1dlYlZpZXcpKTsKKyAgICBIUkVTVUxUIGhyID0g
V2ViS2l0Q3JlYXRlSW5zdGFuY2UoQ0xTSURfV2ViVmlldywgMCwgSUlEX0lXZWJWaWV3LCByZWlu
dGVycHJldF9jYXN0PHZvaWQqKj4oJmdXZWJWaWV3LkdldEludGVyZmFjZVB0cigpKSk7CiAgICAg
aWYgKEZBSUxFRChocikpCiAgICAgICAgIGdvdG8gZXhpdDsKIAotICAgIGhyID0gZ1dlYlZpZXct
PlF1ZXJ5SW50ZXJmYWNlKElJRF9JV2ViVmlld1ByaXZhdGUsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCoqPigmZ1dlYlZpZXdQcml2YXRlKSk7CisgICAgaHIgPSBnV2ViVmlldy0+UXVlcnlJbnRlcmZh
Y2UoSUlEX0lXZWJWaWV3UHJpdmF0ZSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKio+KCZnV2ViVmll
d1ByaXZhdGUuR2V0SW50ZXJmYWNlUHRyKCkpKTsKICAgICBpZiAoRkFJTEVEKGhyKSkKICAgICAg
ICAgZ290byBleGl0OwogCi0gICAgaHIgPSBXZWJLaXRDcmVhdGVJbnN0YW5jZShDTFNJRF9XZWJI
aXN0b3J5LCAwLCBfX3V1aWRvZihnV2ViSGlzdG9yeSksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCoq
PigmZ1dlYkhpc3RvcnkpKTsKKyAgICBociA9IFdlYktpdENyZWF0ZUluc3RhbmNlKENMU0lEX1dl
Ykhpc3RvcnksIDAsIF9fdXVpZG9mKGdXZWJIaXN0b3J5KSwgcmVpbnRlcnByZXRfY2FzdDx2b2lk
Kio+KCZnV2ViSGlzdG9yeS5HZXRJbnRlcmZhY2VQdHIoKSkpOwogICAgIGlmIChGQUlMRUQoaHIp
KQogICAgICAgICBnb3RvIGV4aXQ7CiAKQEAgLTUzNiwxNCArNTI5LDEzIEBAIGV4dGVybiAiQyIg
X19kZWNsc3BlYyhkbGxleHBvcnQpIGludCBXSU4KICAgICAgICAgZ290byBleGl0OwogCiAgICAg
aWYgKCFyZXF1ZXN0ZWRVUkwpIHsKLSAgICAgICAgSVdlYkZyYW1lKiBmcmFtZTsKLSAgICAgICAg
aHIgPSBnV2ViVmlldy0+bWFpbkZyYW1lKCZmcmFtZSk7CisgICAgICAgIElXZWJGcmFtZVB0ciBm
cmFtZTsKKyAgICAgICAgaHIgPSBnV2ViVmlldy0+bWFpbkZyYW1lKCZmcmFtZS5HZXRJbnRlcmZh
Y2VQdHIoKSk7CiAgICAgICAgIGlmIChGQUlMRUQoaHIpKQogICAgICAgICAgICAgZ290byBleGl0
OwogCi0gICAgICAgIHN0YXRpYyBCU1RSIGRlZmF1bHRIVE1MID0gU3lzQWxsb2NTdHJpbmcoVEVY
VCgiPHAgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiAjMDBGRjAwXCI+VGVzdGluZzwvcD48aW1n
IGlkPVwid2Via2l0IGxvZ29cIiBzcmM9XCJodHRwOi8vd2Via2l0Lm9yZy9pbWFnZXMvaWNvbi1n
b2xkLnBuZ1wiIGFsdD1cIkZhY2VcIj48ZGl2IHN0eWxlPVwiYm9yZGVyOiBzb2xpZCBibHVlOyBi
YWNrZ3JvdW5kOiB3aGl0ZTtcIiBjb250ZW50ZWRpdGFibGU9XCJ0cnVlXCI+ZGl2IHdpdGggYmx1
ZSBib3JkZXI8L2Rpdj48dWw+PGxpPmZvbzxsaT5iYXI8bGk+YmF6PC91bD4iKSk7Ci0gICAgICAg
IGZyYW1lLT5sb2FkSFRNTFN0cmluZyhkZWZhdWx0SFRNTCwgMCk7Ci0gICAgICAgIGZyYW1lLT5S
ZWxlYXNlKCk7CisgICAgICAgIHN0YXRpYyBfYnN0cl90IGRlZmF1bHRIVE1MKFRFWFQoIjxwIHN0
eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogIzAwRkYwMFwiPlRlc3Rpbmc8L3A+PGltZyBpZD1cIndl
YmtpdCBsb2dvXCIgc3JjPVwiaHR0cDovL3dlYmtpdC5vcmcvaW1hZ2VzL2ljb24tZ29sZC5wbmdc
IiBhbHQ9XCJGYWNlXCI+PGRpdiBzdHlsZT1cImJvcmRlcjogc29saWQgYmx1ZTsgYmFja2dyb3Vu
ZDogd2hpdGU7XCIgY29udGVudGVkaXRhYmxlPVwidHJ1ZVwiPmRpdiB3aXRoIGJsdWUgYm9yZGVy
PC9kaXY+PHVsPjxsaT5mb288bGk+YmFyPGxpPmJhejwvdWw+IikpOworICAgICAgICBmcmFtZS0+
bG9hZEhUTUxTdHJpbmcoZGVmYXVsdEhUTUwuR2V0QlNUUigpLCAwKTsKICAgICB9CiAKICAgICBo
ciA9IGdXZWJWaWV3UHJpdmF0ZS0+c2V0VHJhbnNwYXJlbnQodXNlc0xheWVyZWRXZWJWaWV3KCkp
OwpAQCAtNTY4LDExICs1NjAsOCBAQCBleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSBp
bnQgV0lOCiAKICAgICBoQWNjZWxUYWJsZSA9IExvYWRBY2NlbGVyYXRvcnMoaEluc3QsIE1BS0VJ
TlRSRVNPVVJDRShJRENfV0lOTEFVTkNIRVIpKTsKIAotICAgIGlmIChyZXF1ZXN0ZWRVUkwpIHsK
LSAgICAgICAgbG9hZFVSTChyZXF1ZXN0ZWRVUkwpOwotICAgICAgICA6OlN5c0ZyZWVTdHJpbmco
cmVxdWVzdGVkVVJMKTsKLSAgICAgICAgcmVxdWVzdGVkVVJMID0gMDsKLSAgICB9CisgICAgaWYg
KHJlcXVlc3RlZFVSTC5sZW5ndGgoKSkKKyAgICAgICAgbG9hZFVSTChyZXF1ZXN0ZWRVUkwuR2V0
QlNUUigpKTsKIAogICAgIC8vIE1haW4gbWVzc2FnZSBsb29wOgogI2lmIFVTRShDRikKQEAgLTU4
OCwyNSArNTc3LDcgQEAgZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGV4cG9ydCkgaW50IFdJTgog
I2VuZGlmCiAKIGV4aXQ6Ci0gICAgaWYgKGdIaXN0b3J5SXRlbXMpCi0gICAgICAgIGRlbGV0ZVtd
IGdIaXN0b3J5SXRlbXM7CiAgICAgZ1ByaW50RGVsZWdhdGUtPlJlbGVhc2UoKTsKLSAgICBpZiAo
Z1dlYlZpZXdQcml2YXRlKQotICAgICAgICBnV2ViVmlld1ByaXZhdGUtPlJlbGVhc2UoKTsKLSAg
ICBpZiAoZ0luc3BlY3RvcikgewotICAgICAgICBnSW5zcGVjdG9yLT5SZWxlYXNlKCk7Ci0gICAg
ICAgIGdJbnNwZWN0b3IgPSAwOwotICAgIH0KLSAgICBnV2ViVmlldy0+UmVsZWFzZSgpOwotICAg
IGlmIChnUHJlZnNQcml2YXRlKSB7Ci0gICAgICAgIGdQcmVmc1ByaXZhdGUtPlJlbGVhc2UoKTsK
LSAgICAgICAgZ1ByZWZzUHJpdmF0ZSA9IDA7Ci0gICAgfQotICAgIGlmIChnU3RhbmRhcmRQcmVm
ZXJlbmNlcykgewotICAgICAgICBnU3RhbmRhcmRQcmVmZXJlbmNlcy0+UmVsZWFzZSgpOwotICAg
ICAgICBnU3RhbmRhcmRQcmVmZXJlbmNlcyA9IDA7Ci0gICAgfQotICAgIHRtcFByZWZlcmVuY2Vz
LT5SZWxlYXNlKCk7CiAKICAgICBzaHV0RG93bldlYktpdCgpOwogI2lmZGVmIF9DUlREQkdfTUFQ
X0FMTE9DCkBAIC02NzAsNiArNjQxLDggQEAgc3RhdGljIHZvaWQgaW5pdERvY1N0cnVjdChET0NJ
TkZPKiBkaSwgVAogICAgIGRpLT5scHN6RG9jTmFtZSA9IGRvY25hbWU7CiB9CiAKK3R5cGVkZWYg
X2NvbV9wdHJfdDxfY29tX0lJSUQ8SVdlYkZyYW1lUHJpdmF0ZSwgJl9fdXVpZG9mKElXZWJGcmFt
ZVByaXZhdGUpPj4gSVdlYkZyYW1lUHJpdmF0ZVB0cjsKKwogdm9pZCBQcmludFZpZXcoSFdORCBo
V25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0pCiB7CiAgICAg
SERDIHByaW50REMgPSBnZXRQcmludGVyREMoKTsKQEAgLTY4MywxMyArNjU2LDEzIEBAIHZvaWQg
UHJpbnRWaWV3KEhXTkQgaFduZCwgVUlOVCBtZXNzYWdlLAogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgSVdlYkZyYW1lKiBmcmFtZSA9IDA7Ci0gICAgSVdlYkZyYW1lUHJpdmF0ZSogZnJh
bWVQcml2YXRlID0gMDsKLSAgICBpZiAoRkFJTEVEKGdXZWJWaWV3LT5tYWluRnJhbWUoJmZyYW1l
KSkpCi0gICAgICAgIGdvdG8gZXhpdDsKKyAgICBJV2ViRnJhbWVQdHIgZnJhbWU7CisgICAgSVdl
YkZyYW1lUHJpdmF0ZVB0ciBmcmFtZVByaXZhdGU7CisgICAgaWYgKEZBSUxFRChnV2ViVmlldy0+
bWFpbkZyYW1lKCZmcmFtZS5HZXRJbnRlcmZhY2VQdHIoKSkpKQorICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAoRkFJTEVEKGZyYW1lLT5RdWVyeUludGVyZmFjZSgmZnJhbWVQcml2YXRlKSkpCi0g
ICAgICAgIGdvdG8gZXhpdDsKKyAgICBpZiAoRkFJTEVEKGZyYW1lLT5RdWVyeUludGVyZmFjZSgm
ZnJhbWVQcml2YXRlLkdldEludGVyZmFjZVB0cigpKSkpCisgICAgICAgIHJldHVybjsKIAogICAg
IGZyYW1lUHJpdmF0ZS0+c2V0SW5QcmludGluZ01vZGUoVFJVRSwgcHJpbnREQyk7CiAKQEAgLTcx
MiwxMiArNjg1LDYgQEAgdm9pZCBQcmludFZpZXcoSFdORCBoV25kLCBVSU5UIG1lc3NhZ2UsCiAK
ICAgICA6OkVuZERvYyhwcmludERDKTsKICAgICA6OkRlbGV0ZURDKHByaW50REMpOwotCi1leGl0
OgotICAgIGlmIChmcmFtZSkKLSAgICAgICAgZnJhbWUtPlJlbGVhc2UoKTsKLSAgICBpZiAoZnJh
bWVQcml2YXRlKQotICAgICAgICBmcmFtZVByaXZhdGUtPlJlbGVhc2UoKTsKIH0KIAogc3RhdGlj
IHZvaWQgVG9nZ2xlTWVudUl0ZW0oSFdORCBoV25kLCBVSU5UIG1lbnVJRCkKQEAgLTc3NiwxMiAr
NzQzLDcgQEAgc3RhdGljIHZvaWQgTGF1bmNoSW5zcGVjdG9yKEhXTkQgaHduZCkKICAgICBpZiAo
IWdXZWJWaWV3UHJpdmF0ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGdJbnNwZWN0b3Ip
IHsKLSAgICAgICAgZ0luc3BlY3Rvci0+UmVsZWFzZSgpOwotICAgICAgICBnSW5zcGVjdG9yID0g
MDsKLSAgICB9Ci0KLSAgICBpZiAoIVNVQ0NFRURFRChnV2ViVmlld1ByaXZhdGUtPmluc3BlY3Rv
cigmZ0luc3BlY3RvcikpKQorICAgIGlmICghU1VDQ0VFREVEKGdXZWJWaWV3UHJpdmF0ZS0+aW5z
cGVjdG9yKCZnSW5zcGVjdG9yLkdldEludGVyZmFjZVB0cigpKSkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIGdJbnNwZWN0b3ItPnNob3coKTsKQEAgLTgwNSwxMCArNzY3LDEwIEBAIHN0YXRpYyB2
b2lkIE5hdmlnYXRlVG9IaXN0b3J5KEhXTkQgaFduZCwKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aW50IGhpc3RvcnlFbnRyeSA9IG1lbnVJRCAtIElETV9ISVNUT1JZX0xJTkswOwotICAgIGlmICho
aXN0b3J5RW50cnkgPiBnSGlzdG9yeU1lbnVJdGVtcykKKyAgICBpZiAoaGlzdG9yeUVudHJ5ID4g
Z0hpc3RvcnlJdGVtcy5zaXplKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIElXZWJIaXN0b3J5
SXRlbSogZGVzaXJlZEhpc3RvcnlJdGVtID0gZ0hpc3RvcnlJdGVtc1toaXN0b3J5RW50cnldOwor
ICAgIElXZWJIaXN0b3J5SXRlbVB0ciBkZXNpcmVkSGlzdG9yeUl0ZW0gPSBnSGlzdG9yeUl0ZW1z
W2hpc3RvcnlFbnRyeV07CiAgICAgaWYgKCFkZXNpcmVkSGlzdG9yeUl0ZW0pCiAgICAgICAgIHJl
dHVybjsKIApAQCAtOTE1LDkgKzg3Nyw5IEBAIExSRVNVTFQgQ0FMTEJBQ0sgTXlFZGl0UHJvYyhI
V05EIGhEbGcsIFUKICAgICAgICAgICAgICAgICAqKChMUFdPUkQpc3RyUHRyKSA9IE1BWF9VUkxf
TEVOR1RIOyAKICAgICAgICAgICAgICAgICBpbnQgc3RyTGVuID0gU2VuZE1lc3NhZ2UoaERsZywg
RU1fR0VUTElORSwgMCwgKExQQVJBTSlzdHJQdHIpOwogCi0gICAgICAgICAgICAgICAgQlNUUiBi
c3RyID0gU3lzQWxsb2NTdHJpbmdMZW4oc3RyUHRyLCBzdHJMZW4pOworICAgICAgICAgICAgICAg
IHN0clB0cltzdHJMZW5dID0gMDsKKyAgICAgICAgICAgICAgICBfYnN0cl90IGJzdHIoc3RyUHRy
KTsKICAgICAgICAgICAgICAgICBsb2FkVVJMKGJzdHIpOwotICAgICAgICAgICAgICAgIFN5c0Zy
ZWVTdHJpbmcoYnN0cik7CiAKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAg
IH0gZWxzZQpAQCAtOTUwLDEwICs5MTIsNyBAQCBJTlRfUFRSIENBTExCQUNLIEFib3V0KEhXTkQg
aERsZywgVUlOVCBtCiAKIHN0YXRpYyB2b2lkIGxvYWRVUkwoQlNUUiB1cmxCU3RyKQogewotICAg
IElXZWJGcmFtZSogZnJhbWUgPSAwOwotICAgIElXZWJNdXRhYmxlVVJMUmVxdWVzdCogcmVxdWVz
dCA9IDA7Ci0KLSAgICBzdGF0aWMgQlNUUiBtZXRob2RCU3RyID0gU3lzQWxsb2NTdHJpbmcoVEVY
VCgiR0VUIikpOworICAgIHN0YXRpYyBfYnN0cl90IG1ldGhvZEJTdHIoVEVYVCgiR0VUIikpOwog
CiAgICAgaWYgKHVybEJTdHIgJiYgdXJsQlN0clswXSAmJiAoUGF0aEZpbGVFeGlzdHModXJsQlN0
cikgfHwgUGF0aElzVU5DKHVybEJTdHIpKSkgewogICAgICAgICBUQ0hBUiBmaWxlVVJMW0lOVEVS
TkVUX01BWF9VUkxfTEVOR1RIXTsKQEAgLTk2MywzMSArOTIyLDI3IEBAIHN0YXRpYyB2b2lkIGxv
YWRVUkwoQlNUUiB1cmxCU3RyKQogICAgICAgICAgICAgU3lzUmVBbGxvY1N0cmluZygmdXJsQlN0
ciwgZmlsZVVSTCk7CiAgICAgfQogCi0gICAgSFJFU1VMVCBociA9IGdXZWJWaWV3LT5tYWluRnJh
bWUoJmZyYW1lKTsKKyAgICBJV2ViRnJhbWVQdHIgZnJhbWU7CisgICAgSFJFU1VMVCBociA9IGdX
ZWJWaWV3LT5tYWluRnJhbWUoJmZyYW1lLkdldEludGVyZmFjZVB0cigpKTsKICAgICBpZiAoRkFJ
TEVEKGhyKSkKLSAgICAgICAgZ290byBleGl0OworICAgICAgICByZXR1cm47CiAKKyAgICBJV2Vi
TXV0YWJsZVVSTFJlcXVlc3RQdHIgcmVxdWVzdDsKICAgICBociA9IFdlYktpdENyZWF0ZUluc3Rh
bmNlKENMU0lEX1dlYk11dGFibGVVUkxSZXF1ZXN0LCAwLCBJSURfSVdlYk11dGFibGVVUkxSZXF1
ZXN0LCAodm9pZCoqKSZyZXF1ZXN0KTsKICAgICBpZiAoRkFJTEVEKGhyKSkKLSAgICAgICAgZ290
byBleGl0OworICAgICAgICByZXR1cm47CiAKICAgICBociA9IHJlcXVlc3QtPmluaXRXaXRoVVJM
KHVybEJTdHIsIFdlYlVSTFJlcXVlc3RVc2VQcm90b2NvbENhY2hlUG9saWN5LCA2MCk7CiAgICAg
aWYgKEZBSUxFRChocikpCi0gICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgcmV0dXJuOwogCiAg
ICAgaHIgPSByZXF1ZXN0LT5zZXRIVFRQTWV0aG9kKG1ldGhvZEJTdHIpOwogICAgIGlmIChGQUlM
RUQoaHIpKQotICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIHJldHVybjsKIAogICAgIGhyID0g
ZnJhbWUtPmxvYWRSZXF1ZXN0KHJlcXVlc3QpOwogICAgIGlmIChGQUlMRUQoaHIpKQotICAgICAg
ICBnb3RvIGV4aXQ7CisgICAgICAgIHJldHVybjsKIAogICAgIFNldEZvY3VzKGdWaWV3V2luZG93
KTsKLQotZXhpdDoKLSAgICBpZiAoZnJhbWUpCi0gICAgICAgIGZyYW1lLT5SZWxlYXNlKCk7Ci0g
ICAgaWYgKHJlcXVlc3QpCi0gICAgICAgIHJlcXVlc3QtPlJlbGVhc2UoKTsKIH0K
</data>
<flag name="review"
          id="233991"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>