<?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>107579</bug_id>
          
          <creation_ts>2013-01-22 12:21:13 -0800</creation_ts>
          <short_desc>REGRESSION(r140231): media track layout tests crashing</short_desc>
          <delta_ts>2013-01-31 19:59:17 -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>Media</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="Hin-Chung Lam">hclam</reporter>
          <assigned_to name="Dima Gorbik">dgorbik</assigned_to>
          <cc>abarth</cc>
    
    <cc>allan.jensen</cc>
    
    <cc>buildbot</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dgorbik</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn</cc>
    
    <cc>keishi</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>peter+ews</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>scherkus</cc>
    
    <cc>silviapf</cc>
    
    <cc>vcarbune</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>813306</commentid>
    <comment_count>0</comment_count>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2013-01-22 12:21:13 -0800</bug_when>
    <thetext>On Chromium bots we recorded these crashes:

media/track/track-css-cue-lifetime.html
media/track/track-css-matching.html
media/track/track-css-property-whitelist.html

http://test-results.appspot.com/dashboards/flakiness_dashboard.html#group=@ToT - chromium.org&amp;tests=media/track/track-css-cue-lifetime.html,media/track/track-css-matching.html,media/track/track-css-property-whitelist.html

Log points to r140231.

Crash log:

crash log for DumpRenderTree (pid 14860):
STDOUT: &lt;empty&gt;
STDERR: ASSERTION FAILED: !element || element-&gt;isHTMLUnknownElement()
STDERR: Backtrace:
STDERR: 	std::_Init_locks::operator= [0x5FC49F63+172035]
STDERR: 	std::_Init_locks::operator= [0x5FC49EEA+171914]
STDERR: 	WebKit::WebFilterOperation::WebFilterOperation [0x5F29AB88+15414024]
STDERR: 	WebKit::WebFilterOperation::WebFilterOperation [0x5F22C79E+14962462]
STDERR: 	WebKit::WebFilterOperation::WebFilterOperation [0x5E52BA62+1327586]
STDERR: 	WebKit::WebFilterOperation::WebFilterOperation [0x5E52AE50+1324496]
STDERR: 	v8::Locker::StopPreemption [0x6BF16357+811159]
STDERR: 	v8::Locker::StopPreemption [0x6BF18D6A+821930]
STDERR: 	v8::Locker::StopPreemption [0x6C163D0C+3226188]
STDERR: 	v8::Locker::StopPreemption [0x6C169EF1+3251249]
STDERR: 	(No symbol) [0x1C80A3F6]
STDERR: 	(No symbol) [0x1C83C53B]
STDERR: 	(No symbol) [0x1C80E581]
STDERR: 	(No symbol) [0x1C83B624]
STDERR: 	(No symbol) [0x1C822679]
STDERR: 	(No symbol) [0x1C8134CA]
STDERR: 	v8::Locker::StopPreemption [0x6BEB9B05+432197]
STDERR: 	v8::Locker::StopPreemption [0x6BEB98B4+431604]
STDERR: 	v8::Function::Call [0x6BE33334+516]
STDERR: 	WebKit::WebFilterOperation::WebFilterOperation [0x5EF43273+11909619]
STDERR: 	WebKit::WebFilterOperation::WebFilterOperation [0x5EF42FF7+11908983]
STDERR: 	WebKit::WebFilterOperation::WebFilterOperation [0x5F68CB3F+19550911]
STDERR: 	WebKit::WebFilterOperation::WebFilterOperation [0x5F69A3F2+19606386]
STDERR: 	WebKit::WebFilterOperation::WebFilterOperation [0x5F69A0F0+19605616]
STDERR: 	WebKit::WebFilterOperation::WebFilterOperation [0x5E99D49F+5987359]
STDERR: 	WebKit::WebFilterOperation::WebFilterOperation [0x5E99CDDF+5985631]
STDERR: 	WebKit::WebFilterOperation::WebFilterOperation [0x5E9CC0AB+6178859]
STDERR: 	WebKit::WebFilterOperation::WebFilterOperation [0x5EB21217+7575959]
STDERR: 	WebKit::WebFilterOperation::WebFilterOperation [0x5EAEC198+7358744]
STDERR: 	WebKit::WebFilterOperation::WebFilterOperation [0x5EAEB8AC+7356460]
STDERR: 	WebKit::WebFilterOperation::WebFilterOperation [0x5EAE929C+7346716]
STDERR: 	WebKit::WebFilterOperation::WebFilterOperation [0x5EAEA5FC+7351676]
STDERR: 	WebKit::WebFilterOperation::WebFilterOperation [0x5E9CC323+6179491]
STDERR: 	WebKit::WebFilterOperation::WebFilterOperation [0x5EB73503+7912579]
STDERR: 	std::_Init_locks::operator= [0x5FDF6E88+1929000]
STDERR: 	std::_Init_locks::operator= [0x5FDF7033+1929427]
STDERR: 	WebKit::WebFilterOperation::WebFilterOperation [0x5EE52233+10922419]
STDERR: 	WebKit::WebFilterOperation::WebFilterOperation [0x5EE52146+10922182]
STDERR: 	WebDropData::operator= [0x69E635FB+214387]
STDERR: 	WebDropData::operator= [0x69E712CB+270915]
STDERR: 	WebDropData::operator= [0x69E7121A+270738]
STDERR: 	WebDropData::operator= [0x69E7113A+270514]
STDERR: 	tracked_objects::ParentChildPairSnapshot::ParentChildPairSnapshot [0x6D1DE35F+451578]
STDERR: 	tracked_objects::ParentChildPairSnapshot::ParentChildPairSnapshot [0x6D292D6B+1191430]
STDERR: 	tracked_objects::ParentChildPairSnapshot::ParentChildPairSnapshot [0x6D292A96+1190705]
STDERR: 	tracked_objects::ParentChildPairSnapshot::ParentChildPairSnapshot [0x6D29350B+1193382]
STDERR: 	tracked_objects::ParentChildPairSnapshot::ParentChildPairSnapshot [0x6D2934BA+1193301]
STDERR: 	tracked_objects::ParentChildPairSnapshot::ParentChildPairSnapshot [0x6D29341A+1193141]
STDERR: 	tracked_objects::ParentChildPairSnapshot::ParentChildPairSnapshot [0x6D1DE35F+451578]
STDERR: 	tracked_objects::ParentChildPairSnapshot::ParentChildPairSnapshot [0x6D1E9974+498191]
STDERR: 	tracked_objects::ParentChildPairSnapshot::ParentChildPairSnapshot [0x6D1E9DA4+499263]
STDERR: 	tracked_objects::ParentChildPairSnapshot::ParentChildPairSnapshot [0x6D1EAC63+503038]
STDERR: 	tracked_objects::ParentChildPairSnapshot::ParentChildPairSnapshot [0x6D1F9444+562399]
STDERR: 	tracked_objects::ParentChildPairSnapshot::ParentChildPairSnapshot [0x6D1F8552+558573]
STDERR: 	tracked_objects::ParentChildPairSnapshot::ParentChildPairSnapshot [0x6D18660C+91815]
STDERR: 	tracked_objects::ParentChildPairSnapshot::ParentChildPairSnapshot [0x6D1E94B9+496980]
STDERR: 	tracked_objects::ParentChildPairSnapshot::ParentChildPairSnapshot [0x6D1E920B+496294]
STDERR: 	tracked_objects::ParentChildPairSnapshot::ParentChildPairSnapshot [0x6D1B4CE9+281988]
STDERR: 	tracked_objects::ParentChildPairSnapshot::ParentChildPairSnapshot [0x6D1E8501+492956]
STDERR: 	(No symbol) [0x00D61A4D]
STDERR: 	(No symbol) [0x00C7E45D]
STDERR: 	(No symbol) [0x00CC6D38]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>813310</commentid>
    <comment_count>1</comment_count>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2013-01-22 12:28:12 -0800</bug_when>
    <thetext>Committed r140450: &lt;http://trac.webkit.org/changeset/140450&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>813313</commentid>
    <comment_count>2</comment_count>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2013-01-22 12:29:33 -0800</bug_when>
    <thetext>Sorry that was a bad trace from Win.. Here&apos;s a trace on OSX 10.7 dbg:

crash log for DumpRenderTree (pid 2583):
STDOUT: &lt;empty&gt;
STDERR: objc[2583]: Class MockCrApp is implemented in both /Volumes/data/b/build/slave/WebKit_Mac10_7__dbg_/build/src/xcodebuild/Debug/libwebkit.dylib and /Volumes/data/b/build/slave/WebKit_Mac10_7__dbg_/build/src/xcodebuild/Debug/DumpRenderTree.app/Contents/MacOS/DumpRenderTree. One of the two will be used. Which one is undefined.
STDERR: ASSERTION FAILED: !element || element-&gt;isHTMLUnknownElement()
STDERR: ../../third_party/WebKit/Source/WebCore/html/HTMLUnknownElement.h(57) : WebCore::HTMLUnknownElement *WebCore::toHTMLUnknownElement(WebCore::HTMLElement *)
STDERR: 1   0x6f1403f WebCore::toHTMLUnknownElement(WebCore::HTMLElement*)
STDERR: 2   0x6f11449 WebCore::createV8HTMLWrapper(WebCore::HTMLElement*, v8::Handle&lt;v8::Object&gt;, v8::Isolate*)
STDERR: 3   0x7a82c14 WebCore::wrap(WebCore::HTMLElement*, v8::Handle&lt;v8::Object&gt;, v8::Isolate*)
STDERR: 4   0x7a9f2d3 WebCore::wrap(WebCore::Node*, v8::Handle&lt;v8::Object&gt;, v8::Isolate*)
STDERR: 5   0x6e46e64 v8::Handle&lt;v8::Value&gt; WebCore::toV8Fast&lt;v8::AccessorInfo, WebCore::Node&gt;(WebCore::Node*, v8::AccessorInfo const&amp;, WebCore::Node*)
STDERR: 6   0x6e26bd8 _ZN7WebCore14NodeV8InternalL20firstChildAttrGetterEN2v85LocalINS1_6StringEEERKNS1_12AccessorInfoE
STDERR: 7   0x110efb0 v8::internal::JSObject::GetPropertyWithCallback(v8::internal::Object*, v8::internal::Object*, v8::internal::String*)
STDERR: 8   0x110eaa9 v8::internal::Object::GetProperty(v8::internal::Object*, v8::internal::LookupResult*, v8::internal::String*, PropertyAttributes*)
STDERR: 9   0x1050128 v8::internal::LoadIC::Load(v8::internal::InlineCacheState, v8::internal::Handle&lt;v8::internal::Object&gt;, v8::internal::Handle&lt;v8::internal::String&gt;)
STDERR: 10  0x105803e v8::internal::LoadIC_Miss(v8::internal::Arguments, v8::internal::Isolate*)
STDERR: 11  0x34a0a3f6
STDERR: Received signal 11 SEGV_MAPERR 0000bbadbeef
STDERR:  [0x000003d391af]
STDERR:  [0x000003d3914b]
STDERR:  [0x000003d38ddb]
STDERR:  [0x000096f1059b]
STDERR:  [0x0000ffffffff]
STDERR:  [0x000006f11449]
STDERR:  [0x000007a82c14]
STDERR:  [0x000007a9f2d3]
STDERR:  [0x000006e46e64]
STDERR:  [0x000006e26bd8]
STDERR:  [0x00000110efb0]
STDERR:  [0x00000110eaa9]
STDERR:  [0x000001050128]
STDERR:  [0x00000105803e]
STDERR:  [0x000034a0a3f6]
STDERR: ax: bbadbeef, bx: 6fb2dd00, cx: 6fb2dde5, dx: 6fb2dde5
STDERR: di: 880b1f2, si: 880b19f, bp: c00a67b8, sp: c00a6780, ss: 23, flags: 10286
STDERR: ip: 6f14049, cs: 1b, ds: 23, es: 23, fs: 0, gs: f</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>813335</commentid>
    <comment_count>3</comment_count>
    <who name="Dima Gorbik">dgorbik</who>
    <bug_when>2013-01-22 13:04:40 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Sorry that was a bad trace from Win.. Here&apos;s a trace on OSX 10.7 dbg:
&gt; 
&gt; crash log for DumpRenderTree (pid 2583):
&gt; STDOUT: &lt;empty&gt;
&gt; STDERR: objc[2583]: Class MockCrApp is implemented in both /Volumes/data/b/build/slave/WebKit_Mac10_7__dbg_/build/src/xcodebuild/Debug/libwebkit.dylib and /Volumes/data/b/build/slave/WebKit_Mac10_7__dbg_/build/src/xcodebuild/Debug/DumpRenderTree.app/Contents/MacOS/DumpRenderTree. One of the two will be used. Which one is undefined.
&gt; STDERR: ASSERTION FAILED: !element || element-&gt;isHTMLUnknownElement()
&gt; STDERR: ../../third_party/WebKit/Source/WebCore/html/HTMLUnknownElement.h(57) : WebCore::HTMLUnknownElement *WebCore::toHTMLUnknownElement(WebCore::HTMLElement *)
&gt; STDERR: 1   0x6f1403f WebCore::toHTMLUnknownElement(WebCore::HTMLElement*)
&gt; STDERR: 2   0x6f11449 WebCore::createV8HTMLWrapper(WebCore::HTMLElement*, v8::Handle&lt;v8::Object&gt;, v8::Isolate*)
&gt; STDERR: 3   0x7a82c14 WebCore::wrap(WebCore::HTMLElement*, v8::Handle&lt;v8::Object&gt;, v8::Isolate*)

I wonder why was this call made to toHTMLUnknownElement? Where the code for createV8HTMLWrapper is located?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>813339</commentid>
    <comment_count>4</comment_count>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2013-01-22 13:11:34 -0800</bug_when>
    <thetext>Adding abarth@ to see if he knows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>813356</commentid>
    <comment_count>5</comment_count>
    <who name="Hin-Chung Lam">hclam</who>
    <bug_when>2013-01-22 13:25:00 -0800</bug_when>
    <thetext>Adding scherkus@chromium.org</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>813537</commentid>
    <comment_count>6</comment_count>
    <who name="Dima Gorbik">dgorbik</who>
    <bug_when>2013-01-22 16:29:57 -0800</bug_when>
    <thetext>Discussed this with Elliott on IRC. Will subclass Element instead of HTMLElement for the WebVTTElement, because sometimes it doesn&apos;t use general element names that are declared in HTMLNames.in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815897</commentid>
    <comment_count>7</comment_count>
      <attachid>184592</attachid>
    <who name="Dima Gorbik">dgorbik</who>
    <bug_when>2013-01-24 15:23:54 -0800</bug_when>
    <thetext>Created attachment 184592
Proposed fix 0.1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815899</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-01-24 15:24:59 -0800</bug_when>
    <thetext>&lt;rdar://problem/13081759&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815915</commentid>
    <comment_count>9</comment_count>
      <attachid>184597</attachid>
    <who name="Dima Gorbik">dgorbik</who>
    <bug_when>2013-01-24 15:46:00 -0800</bug_when>
    <thetext>Created attachment 184597
Proposed fix 0.2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816305</commentid>
    <comment_count>10</comment_count>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2013-01-24 23:32:22 -0800</bug_when>
    <thetext>*** Bug 107921 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816888</commentid>
    <comment_count>11</comment_count>
      <attachid>184597</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-01-25 13:44:30 -0800</bug_when>
    <thetext>Comment on attachment 184597
Proposed fix 0.2

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

This won&apos;t work because now you create a &lt;b&gt; element in the xhtml namespace that isn&apos;t an HTMLElement.

&gt; Source/WebCore/html/track/TextTrackCue.cpp:512
&gt; +            clonedNode = HTMLElement::create(toElement(node)-&gt;tagQName(), static_cast&lt;Document*&gt;(m_scriptExecutionContext));

It would be much nicer if you just added a method on TextTrackCue called document() that did this and got rid of these casts all over.

&gt; Source/WebCore/html/track/WebVTTElement.cpp:37
&gt; +    : Element(tagName, document, CreateElement)

This isn&apos;t okay since WebVTTParser::constructTreeFromToken still creates qnames in the xhtmlNamespace so your Elements are still in the HTML namespace, but now they&apos;re not even HTMLElement instances. :( You should put them in the empty namespace, or some webvtt namespace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818133</commentid>
    <comment_count>12</comment_count>
    <who name="Dima Gorbik">dgorbik</who>
    <bug_when>2013-01-28 14:48:16 -0800</bug_when>
    <thetext>*** Bug 108024 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818272</commentid>
    <comment_count>13</comment_count>
      <attachid>185106</attachid>
    <who name="Dima Gorbik">dgorbik</who>
    <bug_when>2013-01-28 16:53:49 -0800</bug_when>
    <thetext>Created attachment 185106
Proposed fix 0.3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818281</commentid>
    <comment_count>14</comment_count>
      <attachid>185106</attachid>
    <who name="Dima Gorbik">dgorbik</who>
    <bug_when>2013-01-28 17:00:45 -0800</bug_when>
    <thetext>Comment on attachment 185106
Proposed fix 0.3

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

&gt; Source/WebCore/html/track/WebVTTElement.cpp:86
&gt; -    return adoptRef(new WebVTTElement(tagName, document));
&gt; +    RefPtr&lt;WebVTTElement&gt; newElement = adoptRef(new WebVTTElement(nodeType, document));
&gt; +    return newElement;

Oops, this seem unnecessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818282</commentid>
    <comment_count>15</comment_count>
      <attachid>185106</attachid>
    <who name="Dima Gorbik">dgorbik</who>
    <bug_when>2013-01-28 17:00:48 -0800</bug_when>
    <thetext>Comment on attachment 185106
Proposed fix 0.3

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

&gt; Source/WebCore/html/track/WebVTTElement.cpp:86
&gt; -    return adoptRef(new WebVTTElement(tagName, document));
&gt; +    RefPtr&lt;WebVTTElement&gt; newElement = adoptRef(new WebVTTElement(nodeType, document));
&gt; +    return newElement;

Oops, this seem unnecessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818292</commentid>
    <comment_count>16</comment_count>
      <attachid>185106</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-28 17:10:23 -0800</bug_when>
    <thetext>Comment on attachment 185106
Proposed fix 0.3

Attachment 185106 did not pass win-ews (win):
Output: http://queues.webkit.org/results/16125004</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818314</commentid>
    <comment_count>17</comment_count>
      <attachid>185106</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2013-01-28 17:44:09 -0800</bug_when>
    <thetext>Comment on attachment 185106
Proposed fix 0.3

Attachment 185106 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/16165825</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818326</commentid>
    <comment_count>18</comment_count>
      <attachid>185106</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-01-28 17:58:15 -0800</bug_when>
    <thetext>Comment on attachment 185106
Proposed fix 0.3

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

&gt; Source/WebCore/html/track/WebVTTElement.cpp:74
&gt; +}

You need a return here to prevent a compiler error on some ports. Please also add an ASSERT_NOT_REACHED().

&gt; Source/WebCore/html/track/WebVTTElement.cpp:79
&gt; +: Element(nodeTypeToTagName(nodeType), document, CreateElement)
&gt; +, m_isPastNode(0)
&gt; +, m_webVTTNodeType(nodeType)

Nit: these should be indented.

&gt; Source/WebCore/html/track/WebVTTElement.cpp:124
&gt; +    htmlElement.get()-&gt;setAttribute(langAttributeName(), getAttribute(langAttributeName()));
&gt; +    htmlElement.get()-&gt;setAttribute(HTMLNames::classAttr, getAttribute(HTMLNames::classAttr));

Why langAttributeName() instead of langAttr?

Previously we only set &apos;class&apos; and &apos;lang&apos; for voice, lang, and class nodes. Was that incorrect?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818370</commentid>
    <comment_count>19</comment_count>
    <who name="Dima Gorbik">dgorbik</who>
    <bug_when>2013-01-28 18:33:49 -0800</bug_when>
    <thetext>&gt; &gt; Source/WebCore/html/track/WebVTTElement.cpp:124
&gt; &gt; +    htmlElement.get()-&gt;setAttribute(langAttributeName(), getAttribute(langAttributeName()));
&gt; &gt; +    htmlElement.get()-&gt;setAttribute(HTMLNames::classAttr, getAttribute(HTMLNames::classAttr));
&gt; 
&gt; Why langAttributeName() instead of langAttr?

These are not standard html names, they are not defined in HTMLAttributeNames.in. Or would you like to rename langAttributeName to langAttr? 

&gt; Previously we only set &apos;class&apos; and &apos;lang&apos; for voice, lang, and class nodes. Was that incorrect?

I think we set class for all nodes before. But in case of lang — yes, it should be set to all nodes, that was a bug before.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818385</commentid>
    <comment_count>20</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-01-28 18:51:36 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; &gt; &gt; Source/WebCore/html/track/WebVTTElement.cpp:124
&gt; &gt; &gt; +    htmlElement.get()-&gt;setAttribute(langAttributeName(), getAttribute(langAttributeName()));
&gt; &gt; &gt; +    htmlElement.get()-&gt;setAttribute(HTMLNames::classAttr, getAttribute(HTMLNames::classAttr));
&gt; &gt; 
&gt; &gt; Why langAttributeName() instead of langAttr?
&gt; 
&gt; These are not standard html names, they are not defined in HTMLAttributeNames.in. Or would you like to rename langAttributeName to langAttr? 
&gt; 

I am not sure what you mean. This method creates the equivalent HTMLElement. In the current code we have:

    setAttribute(langAttr, ...

so why would we not now have:

  setAttribute(HTMLNames::langAttr, ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818388</commentid>
    <comment_count>21</comment_count>
    <who name="Dima Gorbik">dgorbik</who>
    <bug_when>2013-01-28 18:54:37 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt;     setAttribute(langAttr, ...
&gt; 
&gt; so why would we not now have:
&gt; 
&gt;   setAttribute(HTMLNames::langAttr, ...

Oh, I didn&apos;t release we have &apos;lang&apos; is the html namespace. I guess langAttributeName() may be removed then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818422</commentid>
    <comment_count>22</comment_count>
      <attachid>185106</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-28 20:01:29 -0800</bug_when>
    <thetext>Comment on attachment 185106
Proposed fix 0.3

Attachment 185106 did not pass mac-wk2-ews (mac-wk2):
Output: http://queues.webkit.org/results/16149937</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818457</commentid>
    <comment_count>23</comment_count>
      <attachid>185106</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-01-28 21:04:57 -0800</bug_when>
    <thetext>Comment on attachment 185106
Proposed fix 0.3

Attachment 185106 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/16188007</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818501</commentid>
    <comment_count>24</comment_count>
      <attachid>185106</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-28 21:50:03 -0800</bug_when>
    <thetext>Comment on attachment 185106
Proposed fix 0.3

Attachment 185106 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16161966</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818554</commentid>
    <comment_count>25</comment_count>
      <attachid>185106</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-28 22:43:09 -0800</bug_when>
    <thetext>Comment on attachment 185106
Proposed fix 0.3

Attachment 185106 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/16185121</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819377</commentid>
    <comment_count>26</comment_count>
      <attachid>185106</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-01-29 15:11:12 -0800</bug_when>
    <thetext>Comment on attachment 185106
Proposed fix 0.3

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

Looking pretty good, just a couple things.

&gt; Source/WebCore/html/track/TextTrackCue.cpp:507
&gt; +            clonedNode = toWebVTTElement(node)-&gt;createEquivalentHTMLElement(document());

Is there a reason to pass in the document() instead of just using the document() inside the node?

&gt; Source/WebCore/html/track/TextTrackCue.h:255
&gt; +    inline Document* document() { return static_cast&lt;Document*&gt;(m_scriptExecutionContext); }

This method is not needed, you already have ownerDocument() right above. Also you don&apos;t need &quot;inline&quot; if the method is inside the class def.

&gt; Source/WebCore/html/track/WebVTTElement.cpp:64
&gt; +        break;

Remove the break statements after the returns. You don&apos;t need them.

&gt;&gt; Source/WebCore/html/track/WebVTTElement.cpp:74
&gt;&gt; +}
&gt; 
&gt; You need a return here to prevent a compiler error on some ports. Please also add an ASSERT_NOT_REACHED().

I don&apos;t think you actually need that return, ex. ShadowRoot::childTypeAllowed

&gt;&gt; Source/WebCore/html/track/WebVTTElement.cpp:124
&gt;&gt; +    htmlElement.get()-&gt;setAttribute(HTMLNames::classAttr, getAttribute(HTMLNames::classAttr));
&gt; 
&gt; Why langAttributeName() instead of langAttr?
&gt; 
&gt; Previously we only set &apos;class&apos; and &apos;lang&apos; for voice, lang, and class nodes. Was that incorrect?

This is an HTML Element, so you need to use HTMLNames::langAttr.

&gt; Source/WebCore/html/track/WebVTTElement.h:33
&gt; +    WebVTTNodeTypeNone,

Make None = 0 by default.

&gt; Source/WebCore/html/track/WebVTTElement.h:77
&gt; +    unsigned m_webVTTNodeType:4;

Spaces around the colon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820707</commentid>
    <comment_count>27</comment_count>
    <who name="Dima Gorbik">dgorbik</who>
    <bug_when>2013-01-30 15:39:06 -0800</bug_when>
    <thetext>(In reply to comment #26)
&gt; &gt; Source/WebCore/html/track/TextTrackCue.cpp:507
&gt; &gt; +            clonedNode = toWebVTTElement(node)-&gt;createEquivalentHTMLElement(document());
&gt; 
&gt; Is there a reason to pass in the document() instead of just using the document() inside the node?

Document is an m_scriptExecutionContext which is a member of TextTrackCue. I guess it will not be visible inside the element.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820719</commentid>
    <comment_count>28</comment_count>
      <attachid>185600</attachid>
    <who name="Dima Gorbik">dgorbik</who>
    <bug_when>2013-01-30 15:45:40 -0800</bug_when>
    <thetext>Created attachment 185600
Proposed fix 0.4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820720</commentid>
    <comment_count>29</comment_count>
      <attachid>185600</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-01-30 15:46:53 -0800</bug_when>
    <thetext>Comment on attachment 185600
Proposed fix 0.4

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

&gt; Source/WebCore/html/track/WebVTTElement.cpp:93
&gt; +        htmlElement = HTMLElement::create(HTMLNames::spanTag, document);

Just call document() here, you shouldn&apos;t need to pass it in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820759</commentid>
    <comment_count>30</comment_count>
      <attachid>185600</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-30 16:16:50 -0800</bug_when>
    <thetext>Comment on attachment 185600
Proposed fix 0.4

Attachment 185600 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16198933</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820762</commentid>
    <comment_count>31</comment_count>
      <attachid>185600</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2013-01-30 16:17:23 -0800</bug_when>
    <thetext>Comment on attachment 185600
Proposed fix 0.4

Attachment 185600 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/16249020</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820868</commentid>
    <comment_count>32</comment_count>
      <attachid>185635</attachid>
    <who name="Dima Gorbik">dgorbik</who>
    <bug_when>2013-01-30 17:37:39 -0800</bug_when>
    <thetext>Created attachment 185635
Proposed fix 0.5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820899</commentid>
    <comment_count>33</comment_count>
      <attachid>185635</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-01-30 18:06:59 -0800</bug_when>
    <thetext>Comment on attachment 185635
Proposed fix 0.5

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

&gt; Source/WebCore/html/track/WebVTTElement.cpp:36
&gt; +static QualifiedName&amp; nodeTypeToTagName(WebVTTNodeType nodeType)

Can we use const QualifiedName&amp; instead?

&gt; Source/WebCore/html/track/WebVTTParser.cpp:361
&gt; +        if (token.name()[0] == &apos;r&apos; &amp;&amp; token.name()[1] == &apos;t&apos;)

Is it really too slow to do token.name() == &quot;rt&quot; or token.name() == HTMLNames::rtTag.localName()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820968</commentid>
    <comment_count>34</comment_count>
    <who name="Dima Gorbik">dgorbik</who>
    <bug_when>2013-01-30 19:02:33 -0800</bug_when>
    <thetext>(In reply to comment #33)
&gt; &gt; Source/WebCore/html/track/WebVTTParser.cpp:361
&gt; &gt; +        if (token.name()[0] == &apos;r&apos; &amp;&amp; token.name()[1] == &apos;t&apos;)
&gt; 
&gt; Is it really too slow to do token.name() == &quot;rt&quot; or token.name() == HTMLNames::rtTag.localName()?

I am not really sure how you can compare pointers like this. The token comes from the parser, we don&apos;t use constant values like HTMLNames::rtTag.localName() to populate its name, if we did your second suggestion would work. We could construct AtomicStrings or Just Strings from the token  and compare but I am not sure it&apos;s worth doing. I will use hash tables later if we end up with lots of different tokens in WebVTT in future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820974</commentid>
    <comment_count>35</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-01-30 19:11:18 -0800</bug_when>
    <thetext>(In reply to comment #34)
&gt; (In reply to comment #33)
&gt; &gt; &gt; Source/WebCore/html/track/WebVTTParser.cpp:361
&gt; &gt; &gt; +        if (token.name()[0] == &apos;r&apos; &amp;&amp; token.name()[1] == &apos;t&apos;)
&gt; &gt; 
&gt; &gt; Is it really too slow to do token.name() == &quot;rt&quot; or token.name() == HTMLNames::rtTag.localName()?
&gt; 
&gt; I am not really sure how you can compare pointers like this. The token comes from the parser, we don&apos;t use constant values like HTMLNames::rtTag.localName() to populate its name, if we did your second suggestion would work. We could construct AtomicStrings or Just Strings from the token  and compare but I am not sure it&apos;s worth doing. I will use hash tables later if we end up with lots of different tokens in WebVTT in future.

Ah, ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821498</commentid>
    <comment_count>36</comment_count>
      <attachid>185635</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-01-31 07:03:23 -0800</bug_when>
    <thetext>Comment on attachment 185635
Proposed fix 0.5

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

&gt; Source/WebCore/html/track/WebVTTParser.cpp:357
&gt; +    switch (token.name().size()) {
&gt; +    case 1:
&gt; +        if (token.name()[0] == &apos;c&apos;)
&gt; +            return WebVTTNodeTypeClass;
&gt; +        if (token.name()[0] == &apos;v&apos;)
&gt; +            return WebVTTNodeTypeVoice;
&gt; +        if (token.name()[0] == &apos;b&apos;)
&gt; +            return WebVTTNodeTypeBold;
&gt; +        if (token.name()[0] == &apos;i&apos;)
&gt; +            return WebVTTNodeTypeItalic;
&gt; +        if (token.name()[0] == &apos;u&apos;)

Nit: this function does a lot of &quot;token.name()&quot;. I would be cleaner to put the token name into a local variable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>822005</commentid>
    <comment_count>37</comment_count>
      <attachid>185875</attachid>
    <who name="Dima Gorbik">dgorbik</who>
    <bug_when>2013-01-31 15:07:03 -0800</bug_when>
    <thetext>Created attachment 185875
Proposed fix 0.5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>822255</commentid>
    <comment_count>38</comment_count>
      <attachid>185875</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-31 19:59:10 -0800</bug_when>
    <thetext>Comment on attachment 185875
Proposed fix 0.5

Clearing flags on attachment: 185875

Committed r141529: &lt;http://trac.webkit.org/changeset/141529&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>822256</commentid>
    <comment_count>39</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-31 19:59:17 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184592</attachid>
            <date>2013-01-24 15:23:54 -0800</date>
            <delta_ts>2013-01-24 15:46:00 -0800</delta_ts>
            <desc>Proposed fix 0.1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>5382</size>
            <attacher name="Dima Gorbik">dgorbik</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlMDQxZjc1Li43NzFiNGZjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMDEt
MjQgIERpbWEgR29yYmlrICA8ZGdvcmJpa0BhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lP
TihyMTQwMjMxKTogbWVkaWEgdHJhY2sgbGF5b3V0IHRlc3RzIGNyYXNoaW5nCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDc1NzkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVt
L1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMTMtMDEtMjQgIEFkYW0gS2xlaW4gIDxhZGFta0BjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgTGF5b3V0IFRlc3QgZmFzdC9kb20vSFRNTFRlbXBsYXRlRWxl
bWVudC9vd25lckRvY3VtZW50LWFkb3B0Tm9kZS5odG1sIGlzIGZsYWt5CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwppbmRleCA5ZTg5ODhiLi5hNzQ2
MTM1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0
YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlv
bnMKQEAgLTk5LDkgKzk5LDYgQEAgd2Via2l0Lm9yZy9iLzEwNzU4NyBbIFdpbjcgRGVidWcgXSBw
bGF0Zm9ybS9jaHJvbWl1bS92aXJ0dWFsL2dwdS9mYXN0L2hpZHBpL2NsaXAKIHdlYmtpdC5vcmcv
Yi8xMDc1ODcgWyBXaW43IERlYnVnIF0gcGxhdGZvcm0vY2hyb21pdW0vdmlydHVhbC9ncHUvZmFz
dC9oaWRwaS9kZXZpY2Utc2NhbGUtZmFjdG9yLXBhaW50Lmh0bWwgWyBQYXNzIFNsb3cgXQogd2Vi
a2l0Lm9yZy9iLzEwNzU4NyBbIFdpbjcgRGVidWcgXSBwbGF0Zm9ybS9jaHJvbWl1bS92aXJ0dWFs
L2dwdS9mYXN0L2hpZHBpL2ZvY3VzLXJpbmdzLmh0bWwgWyBQYXNzIFNsb3cgXQogCi0jIENyYXNo
aW5nIGFmdGVyIHIxNDAyMzEsIHNlZSBidWcgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwNzU3OQotd2Via2l0Lm9yZy9iLzEwNjg1MyBbIERlYnVnIF0gbWVkaWEvdHJh
Y2svdHJhY2stY3NzLWN1ZS1saWZldGltZS5odG1sIFsgUGFzcyBUaW1lb3V0IENyYXNoIF0KLQog
IyBUaGVzZSB0ZXN0cyBzdGFydGVkIGJlaW5nIHNsb3cgd2hlbiB3ZSBzd2l0Y2hlZCB0byBEUlQu
CiB3ZWJraXQub3JnL2IvOTA0ODggWyBEZWJ1ZyBdIGluc3BlY3RvciBbIFBhc3MgU2xvdyBdCiB3
ZWJraXQub3JnL2IvOTA0ODggWyBEZWJ1ZyBdIGh0dHAvdGVzdHMvaW5zcGVjdG9yIFsgUGFzcyBT
bG93IF0KQEAgLTQzMjksOSArNDMyNiw2IEBAIHdlYmtpdC5vcmcvYi8xMDczMTYgWyBXaW4gRGVi
dWcgXSBmYXN0L2lubGluZS9maXhlZC1wb3MtbW92ZXMtd2l0aC1hYnNwb3MtaW5saW5lCiB3ZWJr
aXQub3JnL2IvMTA3MzI4IGh0dHAvdGVzdHMvY2FjaGUvY2FuY2VsLW11bHRpcGxlLXBvc3QteGhy
cy5odG1sIFsgTWlzc2luZyBdCiB3ZWJraXQub3JnL2IvMTA3MzQxIFsgRGVidWcgXSBpbnNwZWN0
b3IvcHJvZmlsZXIvbWVtb3J5LWluc3RydW1lbnRhdGlvbi1jYWNoZWQtaW1hZ2VzLmh0bWwgWyBG
YWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzEwNzU3OSBbIERlYnVnIF0gbWVkaWEvdHJhY2svdHJh
Y2stY3NzLW1hdGNoaW5nLmh0bWwgWyBDcmFzaCBdCi13ZWJraXQub3JnL2IvMTA3NTc5IFsgRGVi
dWcgXSBtZWRpYS90cmFjay90cmFjay1jc3MtcHJvcGVydHktd2hpdGVsaXN0Lmh0bWwgWyBDcmFz
aCBdCi0KICMgUmViYXNlbGluZSByZXF1aXJlZCBhZnRlciBodHRwczovL3dlYmtpdC5vcmcvYi8z
MTM5Nwogd2Via2l0Lm9yZy9iLzEwNzU2NyBzdmcvYmF0aWsvdGV4dC94bWxTcGFjZS5zdmcgWyBG
YWlsdXJlIF0gCiB3ZWJraXQub3JnL2IvMTA3NTY3IGZhc3QvdGV4dC9jYXBpdGFsaXplLWVtcHR5
LWdlbmVyYXRlZC1zdHJpbmcuaHRtbCBbIEZhaWx1cmUgXSAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmY2E3MGQx
Li5jMDk3YTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTMtMDEtMjQgIERpbWEg
R29yYmlrICA8ZGdvcmJpa0BhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTihyMTQwMjMx
KTogbWVkaWEgdHJhY2sgbGF5b3V0IHRlc3RzIGNyYXNoaW5nCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDc1NzkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFdlIHdlcmUgdXNpbmcgbm9uLXN0
YW5kYXJkIGVsZW1lbnQgbmFtZXMgd2l0aCBIVE1MRWxlbWVudCwgd2hpY2ggbWFkZSB2OCB0cnkg
dG8gY2FzdAorICAgICAgICBXZWJWVFRFbGVtZW50cyB0byBIVE1MVW5rbm93bkVsZW1lbnRzIHdo
aWNoIHdhcyBub3QgcG9zc2libGUuIFN1YmNsYXNzaW5nIEVsZW1lbnQgaW5zdGVhZAorICAgICAg
ICBvZiBIVE1MRWxlbWVudCwgdGhvdWdoIHRoaXMgcmVxdWlyZXMgYnVpbGRpbmcgSFRNTEVsZW1l
bnRzIGZyb20gV2ViVlRURWxlbWVudHMgZm9yIGNyZWF0aW5nCisgICAgICAgIGEgRE9NIHRyZWUu
CisKKyAgICAgICAgVW5za2lwcGluZyB0ZXN0cyB0byBjb3ZlciB0aGlzLgorCisgICAgICAgICog
aHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNr
Q3VlOjpjb3B5V2ViVlRUTm9kZVRvRE9NVHJlZSk6IGNyZWF0ZSBIVE1MRWxlbWVudHMgZnJvbSBX
ZWJWVFRFbGVtZW50cy4KKyAgICAgICAgKiBodG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViVlRURWxlbWVudDo6V2ViVlRURWxlbWVudCk6CisgICAgICAg
ICogaHRtbC90cmFjay9XZWJWVFRFbGVtZW50Lmg6CisKIDIwMTMtMDEtMjQgIEplciBOb2JsZSAg
PGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXggZm9y
IE1hYy9MaW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJh
Y2tDdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCmlu
ZGV4IDM4NDVhNzQuLmQwNzcyMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVGV4dFRyYWNrQ3VlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRU
cmFja0N1ZS5jcHAKQEAgLTUwOCw2ICs1MDgsOSBAQCB2b2lkIFRleHRUcmFja0N1ZTo6Y29weVdl
YlZUVE5vZGVUb0RPTVRyZWUoQ29udGFpbmVyTm9kZSogd2ViVlRUTm9kZSwgQ29udGFpbmVyTgog
ICAgICAgICAgICAgY2xvbmVkTm9kZSA9IEhUTUxTcGFuRWxlbWVudDo6Y3JlYXRlKHNwYW5UYWcs
IHN0YXRpY19jYXN0PERvY3VtZW50Kj4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KSk7CiAgICAg
ICAgICAgICB0b0VsZW1lbnQoY2xvbmVkTm9kZS5nZXQoKSktPnNldEF0dHJpYnV0ZShjbGFzc0F0
dHIsIHRvRWxlbWVudChub2RlKS0+Z2V0QXR0cmlidXRlKGNsYXNzQXR0cikpOwogICAgICAgICAg
ICAgdG9FbGVtZW50KGNsb25lZE5vZGUuZ2V0KCkpLT5zZXRBdHRyaWJ1dGUodGl0bGVBdHRyLCB0
b0VsZW1lbnQobm9kZSktPmdldEF0dHJpYnV0ZSh2b2ljZUF0dHJpYnV0ZU5hbWUoKSkpOworICAg
ICAgICB9IGVsc2UgaWYgKG5vZGUtPmlzRWxlbWVudE5vZGUoKSAmJiBXZWJWVFRQYXJzZXI6Omlz
UmVjb2duaXplZFRhZyh0b0VsZW1lbnQobm9kZSktPnRhZ05hbWUoKSkpIHsKKyAgICAgICAgICAg
IGNsb25lZE5vZGUgPSBIVE1MRWxlbWVudDo6Y3JlYXRlKHRvRWxlbWVudChub2RlKS0+dGFnUU5h
bWUoKSwgc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpKTsK
KyAgICAgICAgICAgIHRvRWxlbWVudChjbG9uZWROb2RlLmdldCgpKS0+c2V0QXR0cmlidXRlKGNs
YXNzQXR0ciwgdG9FbGVtZW50KG5vZGUpLT5nZXRBdHRyaWJ1dGUoY2xhc3NBdHRyKSk7CiAgICAg
ICAgIH0gZWxzZQogICAgICAgICAgICAgY2xvbmVkTm9kZSA9IG5vZGUtPmNsb25lTm9kZShmYWxz
ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuY3BwCmluZGV4
IDJlODk3YzMuLjBiZDM2YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
V2ViVlRURWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRF
bGVtZW50LmNwcApAQCAtMzQsNyArMzQsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXZWJW
VFRFbGVtZW50OjpXZWJWVFRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERv
Y3VtZW50KiBkb2N1bWVudCkKLSAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQor
ICAgIDogRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgQ3JlYXRlRWxlbWVudCkKICAgICAsIG1f
d2ViVlRUTm9kZVR5cGUoV2ViVlRUTm9kZVR5cGVOb25lKQogewogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuaAppbmRleCBkM2ZlMWIyLi5kYjU4YjYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuaApAQCAtMzUsNyArMzUsNyBAQCBl
bnVtIFdlYlZUVE5vZGVUeXBlIHsKICAgICBXZWJWVFROb2RlVHlwZVBhc3QKIH07CiAKLWNsYXNz
IFdlYlZUVEVsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQgeworY2xhc3MgV2ViVlRURWxlbWVu
dCA6IHB1YmxpYyBFbGVtZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJW
VFRFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPEVsZW1lbnQ+IGNsb25lRWxlbWVudFdpdGhvdXRBdHRyaWJ1dGVz
QW5kQ2hpbGRyZW4oKSBPVkVSUklERTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184597</attachid>
            <date>2013-01-24 15:46:00 -0800</date>
            <delta_ts>2013-01-28 16:53:49 -0800</delta_ts>
            <desc>Proposed fix 0.2</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>5401</size>
            <attacher name="Dima Gorbik">dgorbik</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwZGZmZDc2Li4wNjNkZGIxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMDEt
MjQgIERpbWEgR29yYmlrICA8ZGdvcmJpa0BhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lP
TihyMTQwMjMxKTogbWVkaWEgdHJhY2sgbGF5b3V0IHRlc3RzIGNyYXNoaW5nCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDc1NzkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVt
L1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMTMtMDEtMjQgIEVtaWwgQSBFa2x1bmQgIDxlYWVAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFtzdmddIFJlbW92ZSB1bm5lY2Vzc2FyeSByb3VuZGluZyBp
biBTVkdSb290SW5saW5lQm94OjpsYXlvdXRSb290Qm94CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwppbmRleCA1N2FjMjE4Li5hOWI2YTA1IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTk5
LDkgKzk5LDYgQEAgd2Via2l0Lm9yZy9iLzEwNzU4NyBbIFdpbjcgRGVidWcgXSBwbGF0Zm9ybS9j
aHJvbWl1bS92aXJ0dWFsL2dwdS9mYXN0L2hpZHBpL2NsaXAKIHdlYmtpdC5vcmcvYi8xMDc1ODcg
WyBXaW43IERlYnVnIF0gcGxhdGZvcm0vY2hyb21pdW0vdmlydHVhbC9ncHUvZmFzdC9oaWRwaS9k
ZXZpY2Utc2NhbGUtZmFjdG9yLXBhaW50Lmh0bWwgWyBQYXNzIFNsb3cgXQogd2Via2l0Lm9yZy9i
LzEwNzU4NyBbIFdpbjcgRGVidWcgXSBwbGF0Zm9ybS9jaHJvbWl1bS92aXJ0dWFsL2dwdS9mYXN0
L2hpZHBpL2ZvY3VzLXJpbmdzLmh0bWwgWyBQYXNzIFNsb3cgXQogCi0jIENyYXNoaW5nIGFmdGVy
IHIxNDAyMzEsIHNlZSBidWcgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwNzU3OQotd2Via2l0Lm9yZy9iLzEwNjg1MyBbIERlYnVnIF0gbWVkaWEvdHJhY2svdHJhY2st
Y3NzLWN1ZS1saWZldGltZS5odG1sIFsgUGFzcyBUaW1lb3V0IENyYXNoIF0KLQogIyBUaGVzZSB0
ZXN0cyBzdGFydGVkIGJlaW5nIHNsb3cgd2hlbiB3ZSBzd2l0Y2hlZCB0byBEUlQuCiB3ZWJraXQu
b3JnL2IvOTA0ODggWyBEZWJ1ZyBdIGluc3BlY3RvciBbIFBhc3MgU2xvdyBdCiB3ZWJraXQub3Jn
L2IvOTA0ODggWyBEZWJ1ZyBdIGh0dHAvdGVzdHMvaW5zcGVjdG9yIFsgUGFzcyBTbG93IF0KQEAg
LTQzMDEsOSArNDI5OCw2IEBAIHdlYmtpdC5vcmcvYi8xMDczMTYgWyBXaW4gRGVidWcgXSBmYXN0
L2lubGluZS9maXhlZC1wb3MtbW92ZXMtd2l0aC1hYnNwb3MtaW5saW5lCiB3ZWJraXQub3JnL2Iv
MTA3MzI4IGh0dHAvdGVzdHMvY2FjaGUvY2FuY2VsLW11bHRpcGxlLXBvc3QteGhycy5odG1sIFsg
TWlzc2luZyBdCiB3ZWJraXQub3JnL2IvMTA3MzQxIFsgRGVidWcgXSBpbnNwZWN0b3IvcHJvZmls
ZXIvbWVtb3J5LWluc3RydW1lbnRhdGlvbi1jYWNoZWQtaW1hZ2VzLmh0bWwgWyBGYWlsdXJlIF0K
IAotd2Via2l0Lm9yZy9iLzEwNzU3OSBbIERlYnVnIF0gbWVkaWEvdHJhY2svdHJhY2stY3NzLW1h
dGNoaW5nLmh0bWwgWyBDcmFzaCBdCi13ZWJraXQub3JnL2IvMTA3NTc5IFsgRGVidWcgXSBtZWRp
YS90cmFjay90cmFjay1jc3MtcHJvcGVydHktd2hpdGVsaXN0Lmh0bWwgWyBDcmFzaCBdCi0KICMg
TmVlZHMgcmViYXNlbGluZXMgYWZ5ZXIgMTA3NzcxCiB3ZWJraXQub3JnL2IvMTA3NzcxIGNzczMv
em9vbS1jb29yZHMueGh0bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xMDc3NzEgcGxhdGZv
cm0vY2hyb21pdW0tbGludXgvc3ZnL3RleHQvdGV4dC13aXRoLWdlb21ldHJpYy1wcmVjaXNpb24u
c3ZnIFsgRmFpbHVyZSBdCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjk1N2RjOC4uYzEyZmM1YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIzIEBACisyMDEzLTAxLTI0ICBEaW1hIEdvcmJpayAgPGRnb3JiaWtAYXBw
bGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04ocjE0MDIzMSk6IG1lZGlhIHRyYWNrIGxheW91
dCB0ZXN0cyBjcmFzaGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTA3NTc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgV2Ugd2VyZSB1c2luZyBub24tc3RhbmRhcmQgZWxlbWVudCBuYW1lcyB3aXRoIEhU
TUxFbGVtZW50LCB3aGljaCBtYWRlIHY4IHRyeSB0byBjYXN0CisgICAgICAgIFdlYlZUVEVsZW1l
bnRzIHRvIEhUTUxVbmtub3duRWxlbWVudHMgd2hpY2ggd2FzIG5vdCBwb3NzaWJsZS4gU3ViY2xh
c3NpbmcgRWxlbWVudCBpbnN0ZWFkCisgICAgICAgIG9mIEhUTUxFbGVtZW50LCB0aG91Z2ggdGhp
cyByZXF1aXJlcyBidWlsZGluZyBIVE1MRWxlbWVudHMgZnJvbSBXZWJWVFRFbGVtZW50cyBmb3Ig
Y3JlYXRpbmcKKyAgICAgICAgYSBET00gdHJlZS4KKworICAgICAgICBVbnNraXBwaW5nIHRlc3Rz
IHRvIGNvdmVyIHRoaXMuCisKKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OmNvcHlXZWJWVFROb2RlVG9ET01UcmVl
KTogY3JlYXRlIEhUTUxFbGVtZW50cyBmcm9tIFdlYlZUVEVsZW1lbnRzLgorICAgICAgICAqIGh0
bWwvdHJhY2svV2ViVlRURWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJWVFRFbGVt
ZW50OjpXZWJWVFRFbGVtZW50KToKKyAgICAgICAgKiBodG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQu
aDoKKwogMjAxMy0wMS0yNCAgUHJhdGlrIFNvbGFua2kgIDxwc29sYW5raUBhcHBsZS5jb20+CiAK
ICAgICAgICAgQ2VydGlmaWNhdGVDaGFpbiBmdW5jdGlvbnMgaW4gUmVzb3VyY2VSZXNwb25zZSBz
aG91bGQgYmUgaW5zaWRlIHByb3BlciBpZmRlZnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VGV4dFRyYWNrQ3VlLmNwcAppbmRleCAzODQ1YTc0Li5kMDc3MjA5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCkBAIC01MDgsNiArNTA4LDkgQEAgdm9pZCBU
ZXh0VHJhY2tDdWU6OmNvcHlXZWJWVFROb2RlVG9ET01UcmVlKENvbnRhaW5lck5vZGUqIHdlYlZU
VE5vZGUsIENvbnRhaW5lck4KICAgICAgICAgICAgIGNsb25lZE5vZGUgPSBIVE1MU3BhbkVsZW1l
bnQ6OmNyZWF0ZShzcGFuVGFnLCBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KG1fc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCkpOwogICAgICAgICAgICAgdG9FbGVtZW50KGNsb25lZE5vZGUuZ2V0KCkpLT5z
ZXRBdHRyaWJ1dGUoY2xhc3NBdHRyLCB0b0VsZW1lbnQobm9kZSktPmdldEF0dHJpYnV0ZShjbGFz
c0F0dHIpKTsKICAgICAgICAgICAgIHRvRWxlbWVudChjbG9uZWROb2RlLmdldCgpKS0+c2V0QXR0
cmlidXRlKHRpdGxlQXR0ciwgdG9FbGVtZW50KG5vZGUpLT5nZXRBdHRyaWJ1dGUodm9pY2VBdHRy
aWJ1dGVOYW1lKCkpKTsKKyAgICAgICAgfSBlbHNlIGlmIChub2RlLT5pc0VsZW1lbnROb2RlKCkg
JiYgV2ViVlRUUGFyc2VyOjppc1JlY29nbml6ZWRUYWcodG9FbGVtZW50KG5vZGUpLT50YWdOYW1l
KCkpKSB7CisgICAgICAgICAgICBjbG9uZWROb2RlID0gSFRNTEVsZW1lbnQ6OmNyZWF0ZSh0b0Vs
ZW1lbnQobm9kZSktPnRhZ1FOYW1lKCksIHN0YXRpY19jYXN0PERvY3VtZW50Kj4obV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0KSk7CisgICAgICAgICAgICB0b0VsZW1lbnQoY2xvbmVkTm9kZS5nZXQo
KSktPnNldEF0dHJpYnV0ZShjbGFzc0F0dHIsIHRvRWxlbWVudChub2RlKS0+Z2V0QXR0cmlidXRl
KGNsYXNzQXR0cikpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGNsb25lZE5vZGUgPSBu
b2RlLT5jbG9uZU5vZGUoZmFsc2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL1dlYlZUVEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJW
VFRFbGVtZW50LmNwcAppbmRleCAyZTg5N2MzLi4wYmQzNmFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogV2ViVlRURWxlbWVudDo6V2ViVlRURWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCi0gICAgOiBIVE1MRWxlbWVudCh0
YWdOYW1lLCBkb2N1bWVudCkKKyAgICA6IEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIENyZWF0
ZUVsZW1lbnQpCiAgICAgLCBtX3dlYlZUVE5vZGVUeXBlKFdlYlZUVE5vZGVUeXBlTm9uZSkKIHsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmgKaW5kZXggZDNmZTFi
Mi4uZGI1OGI2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmgK
QEAgLTM1LDcgKzM1LDcgQEAgZW51bSBXZWJWVFROb2RlVHlwZSB7CiAgICAgV2ViVlRUTm9kZVR5
cGVQYXN0CiB9OwogCi1jbGFzcyBXZWJWVFRFbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50IHsK
K2NsYXNzIFdlYlZUVEVsZW1lbnQgOiBwdWJsaWMgRWxlbWVudCB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8V2ViVlRURWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBEb2N1bWVudCopOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxFbGVtZW50PiBjbG9uZUVsZW1l
bnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKCkgT1ZFUlJJREU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185106</attachid>
            <date>2013-01-28 16:53:49 -0800</date>
            <delta_ts>2013-01-30 15:45:40 -0800</delta_ts>
            <desc>Proposed fix 0.3</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>23175</size>
            <attacher name="Dima Gorbik">dgorbik</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2MTZlYzRmLi4yYmRjZDc5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMDEt
MjggIERpbWEgR29yYmlrICA8ZGdvcmJpa0BhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lP
TihyMTQwMjMxKTogbWVkaWEgdHJhY2sgbGF5b3V0IHRlc3RzIGNyYXNoaW5nCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDc1NzkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVt
L1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMTMtMDEtMjggIEpvc2h1YSBCZWxsICA8anNiZWxsQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIFVucmV2aWV3ZWQgZ2FyZGVuaW5nLCBy
ZW1vdmluZyBDcmFzaCBleHBlY3RhdGlvbnMgZnJvbSBzdG9yYWdlL2luZGV4ZWRkYiB0ZXN0cy4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlv
bnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCmluZGV4
IGUxMWYwMmQuLmMzZThhY2MgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
VGVzdEV4cGVjdGF0aW9ucwpAQCAtMTAxLDExICsxMDEsNiBAQCB3ZWJraXQub3JnL2IvMTA3NTg3
IFsgV2luNyBEZWJ1ZyBdIHBsYXRmb3JtL2Nocm9taXVtL3ZpcnR1YWwvZ3B1L2Zhc3QvaGlkcGkv
Zm9jdQogY3JidWcuY29tLzI0MTgyIFsgTWFjIERlYnVnIF0gZmFzdC9mcmFtZXMvcmVtb3ZlLWZy
YW1lLXdpdGgtc2Nyb2xsYmFycy1jcmFzaC5odG1sIFsgUGFzcyBTbG93IF0KIGNyYnVnLmNvbS8y
NDE4MiBbIE1hYyBEZWJ1ZyBdIGZhc3QvZm9ybXMvcG9zdC1wb3B1cC1uby1tdWx0aXBsZS13aW5k
b3dzLmh0bWwgWyBQYXNzIFNsb3cgXQogCi0jIENyYXNoaW5nIGFmdGVyIHIxNDAyMzEsIHNlZSBi
dWcgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzU3OQotd2Via2l0
Lm9yZy9iLzEwNjg1MyBbIERlYnVnIF0gbWVkaWEvdHJhY2svdHJhY2stY3NzLWN1ZS1saWZldGlt
ZS5odG1sIFsgUGFzcyBUaW1lb3V0IENyYXNoIF0KLXdlYmtpdC5vcmcvYi8xMDgwMjQgWyBEZWJ1
ZyBdIG1lZGlhL3RyYWNrL3RyYWNrLWNzcy1tYXRjaGluZy10aW1lc3RhbXBzLmh0bWwgWyBDcmFz
aCBdCi13ZWJraXQub3JnL2IvMTA4MDI0IFsgRGVidWcgXSBtZWRpYS90cmFjay90cmFjay1jc3Mt
bWF0Y2hpbmctbGFuZy5odG1sIFsgQ3Jhc2ggXQotCiAjIFRoZXNlIHRlc3RzIHN0YXJ0ZWQgYmVp
bmcgc2xvdyB3aGVuIHdlIHN3aXRjaGVkIHRvIERSVC4KIHdlYmtpdC5vcmcvYi85MDQ4OCBbIERl
YnVnIF0gaW5zcGVjdG9yIFsgUGFzcyBTbG93IF0KIHdlYmtpdC5vcmcvYi85MDQ4OCBbIERlYnVn
IF0gaHR0cC90ZXN0cy9pbnNwZWN0b3IgWyBQYXNzIFNsb3cgXQpAQCAtNDMxMSw5ICs0MzA2LDYg
QEAgd2Via2l0Lm9yZy9iLzEwNzMxNiBbIFdpbiBEZWJ1ZyBdIGZhc3QvaW5saW5lL2ZpeGVkLXBv
cy1tb3Zlcy13aXRoLWFic3Bvcy1pbmxpbmUKIHdlYmtpdC5vcmcvYi8xMDczMjggaHR0cC90ZXN0
cy9jYWNoZS9jYW5jZWwtbXVsdGlwbGUtcG9zdC14aHJzLmh0bWwgWyBNaXNzaW5nIF0KIHdlYmtp
dC5vcmcvYi8xMDczNDEgWyBEZWJ1ZyBdIGluc3BlY3Rvci9wcm9maWxlci9tZW1vcnktaW5zdHJ1
bWVudGF0aW9uLWNhY2hlZC1pbWFnZXMuaHRtbCBbIEZhaWx1cmUgXQogCi13ZWJraXQub3JnL2Iv
MTA3NTc5IFsgRGVidWcgXSBtZWRpYS90cmFjay90cmFjay1jc3MtbWF0Y2hpbmcuaHRtbCBbIENy
YXNoIF0KLXdlYmtpdC5vcmcvYi8xMDc1NzkgWyBEZWJ1ZyBdIG1lZGlhL3RyYWNrL3RyYWNrLWNz
cy1wcm9wZXJ0eS13aGl0ZWxpc3QuaHRtbCBbIENyYXNoIF0KLQogIyBSZWJhc2VsaW5lIHJlcXVp
cmVkIGFmdGVyIGh0dHBzOi8vd2Via2l0Lm9yZy9iLzMxMzk3CiB3ZWJraXQub3JnL2IvMTA3NTY3
IHN2Zy9iYXRpay90ZXh0L3htbFNwYWNlLnN2ZyBbIEZhaWx1cmUgXSAKIHdlYmtpdC5vcmcvYi8x
MDc1NjcgZmFzdC90ZXh0L2NhcGl0YWxpemUtZW1wdHktZ2VuZXJhdGVkLXN0cmluZy5odG1sIFsg
RmFpbHVyZSBdIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDk5ZDhkMzkuLjY0YmEwMDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw1MCBAQAorMjAxMy0wMS0yOCAgRGltYSBHb3JiaWsgIDxkZ29yYmlrQGFwcGxlLmNv
bT4KKworICAgICAgICBSRUdSRVNTSU9OKHIxNDAyMzEpOiBtZWRpYSB0cmFjayBsYXlvdXQgdGVz
dHMgY3Jhc2hpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwNzU3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFdlIHdlcmUgdXNpbmcgbm9uLXN0YW5kYXJkIGVsZW1lbnQgbmFtZXMgd2l0aCBIVE1MRWxl
bWVudCwgd2hpY2ggbWFkZSB2OCB0cnkgdG8gY2FzdAorICAgICAgICBXZWJWVFRFbGVtZW50cyB0
byBIVE1MVW5rbm93bkVsZW1lbnRzIHdoaWNoIHdhcyBub3QgcG9zc2libGUuIFN1YmNsYXNzaW5n
IEVsZW1lbnQgaW5zdGVhZAorICAgICAgICBvZiBIVE1MRWxlbWVudCwgdGhvdWdoIHRoaXMgcmVx
dWlyZXMgYnVpbGRpbmcgSFRNTEVsZW1lbnRzIGZyb20gV2ViVlRURWxlbWVudHMgZm9yIGNyZWF0
aW5nCisgICAgICAgIGEgRE9NIHRyZWUuIFRoZSBjb2RlIGhhcyBiZWVuIHJlZmFjdG9yZWQgdG8g
bW92ZSBXZWJWVFQgbm9kZSB0eXBlIHRvIFF1aWFsaWZpZWROYW1lIG1hcHBpbmdzIAorICAgICAg
ICBpbnNpZGUgdGhlIFdlYlZUVEVsZW1lbnQgY2xhc3MuIEFsbCBXZWJWVFRFbGVtZW50cyBpbiB0
aGUgc2hhZG93IGRvbSB0cmVlIG5vdyBhcmUgaW4gdGhlIAorICAgICAgICBuYW1lc3BhY2UgZGVm
aW5lZCBieSAnTnVsbEF0b20nLiBUaGlzIHByZXZlbnRzIHJlZ3VsYXIgc3R5bGVzIGZyb20gYmVp
bmcgYXBwbGllZCB0byA8Yj4sIDxpPgorICAgICAgICBhbmQgc2ltaWxhciB0YWdzLiBUaG9zZSBo
YXZlIHRvIGJlIHN0eWxlZCBzZXBhcmF0ZWx5IHdpdGhvdXQgcmV1c2luZyBleGlzdGluZyBRdWFs
aWZpZWROYW1lcworICAgICAgICBhbmQgdGhlaXIgc3R5bGVzLiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3MjE0CisKKyAgICAgICAgVW5za2lwcGluZyB0ZXN0cyB0
byBjb3ZlciB0aGlzLgorCisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lKToKKyAgICAgICAgKiBjc3Mv
U3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjb2xs
ZWN0TWF0Y2hpbmdSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjYW5T
aGFyZVN0eWxlV2l0aEVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3Vl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6Y29weVdlYlZUVE5vZGVUb0RP
TVRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpnZXRDdWVBc0hUTUwpOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpjcmVhdGVDdWVSZW5kZXJpbmdUcmVlKToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6bWFya0Z1dHVyZUFuZFBhc3ROb2Rlcyk6
CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRUcmFja0N1ZTo6Y3VlU2hhZG93UHNldWRvSWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dFRyYWNrQ3VlOjpkb2N1bWVudCk6CisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5vZGVUeXBlVG9UYWdOYW1lKTogZ2V0IGEgUXVhbGlm
aWVkTmFtZSB0byB1c2UgaW4gdGhlIHNoYWRvdyBET00gdHJlZS4KKyAgICAgICAgKFdlYkNvcmU6
OldlYlZUVEVsZW1lbnQ6OldlYlZUVEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViVlRU
RWxlbWVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlZUVEVsZW1lbnQ6OmNsb25l
RWxlbWVudFdpdGhvdXRBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6
V2ViVlRURWxlbWVudDo6Y3JlYXRlRXF1aXZhbGVudEhUTUxFbGVtZW50KTogY3JlYXRlIGFuIEhU
TUxFbGVtZW50IHRvIHVzZSBpbiB0aGUgRE9NIHRyZWUuCisgICAgICAgICogaHRtbC90cmFjay9X
ZWJWVFRFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJWVFRFbGVtZW50OjpzZXRXZWJW
VFROb2RlVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJWVFRFbGVtZW50Ojp3ZWJWVFROb2Rl
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJWVFRFbGVtZW50Ojppc1Bhc3ROb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlZUVEVsZW1lbnQ6OnNldElzUGFzdE5vZGUpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViVlRURWxlbWVudDo6dm9pY2VBdHRyaWJ1dGVOYW1lKToKKyAgICAgICAgKiBo
dG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b2tlblRvTm9k
ZVR5cGUpOiBkZXRlcm1pbmUgYSBXZWJWVFQgbm9kZSB0eXBlIGZvciB0aGUgdG9rZW4uCisgICAg
ICAgIChXZWJDb3JlOjpXZWJWVFRQYXJzZXI6OmNvbnN0cnVjdFRyZWVGcm9tVG9rZW4pOgorCiAy
MDEzLTAxLTI4ICBNaW4gUWluICA8cWlubWluQGNocm9taXVtLm9yZz4KIAogICAgICAgICBhZGRp
bmcgc3VwcG9ydCBmb3IgRGlzY2FyZGFibGVQaXhlbFJlZiBmb3IgY2FjaGluZyBsYXppbHkgZGVj
b2RlZCBpbWFnZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNr
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKaW5kZXggMWY1
ZTBjMC4uZmFiNzA0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hl
Y2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKQEAg
LTg2OSw5ICs4NjksOSBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmUoY29uc3QgU2Vs
ZWN0b3JDaGVja2luZ0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IFNpYgogICAgICAgICAgICAgcmV0
dXJuIGVsZW1lbnQtPmlzT3V0T2ZSYW5nZSgpOwogI2lmIEVOQUJMRShWSURFT19UUkFDSykKICAg
ICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvRnV0dXJlQ3VlOgotICAgICAgICAgICAgcmV0
dXJuIChlbGVtZW50LT5pc1dlYlZUVEVsZW1lbnQoKSAmJiB0b1dlYlZUVEVsZW1lbnQoZWxlbWVu
dCktPndlYlZUVE5vZGVUeXBlKCkgPT0gV2ViVlRUTm9kZVR5cGVGdXR1cmUpOworICAgICAgICAg
ICAgcmV0dXJuIChlbGVtZW50LT5pc1dlYlZUVEVsZW1lbnQoKSAmJiAhdG9XZWJWVFRFbGVtZW50
KGVsZW1lbnQpLT5pc1Bhc3ROb2RlKCkpOwogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1
ZG9QYXN0Q3VlOgotICAgICAgICAgICAgcmV0dXJuIChlbGVtZW50LT5pc1dlYlZUVEVsZW1lbnQo
KSAmJiB0b1dlYlZUVEVsZW1lbnQoZWxlbWVudCktPndlYlZUVE5vZGVUeXBlKCkgPT0gV2ViVlRU
Tm9kZVR5cGVQYXN0KTsKKyAgICAgICAgICAgIHJldHVybiAoZWxlbWVudC0+aXNXZWJWVFRFbGVt
ZW50KCkgJiYgdG9XZWJWVFRFbGVtZW50KGVsZW1lbnQpLT5pc1Bhc3ROb2RlKCkpOwogI2VuZGlm
CiAKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvSG9yaXpvbnRhbDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCA2ODdiMzY5Li5iNmY1ZDI3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC02NjksNyArNjY5LDcgQEAgdm9pZCBTdHlsZVJl
c29sdmVyOjpjb2xsZWN0TWF0Y2hpbmdSdWxlcyhjb25zdCBNYXRjaFJlcXVlc3QmIG1hdGNoUmVx
dWVzdCwgUnVsZVIKICAgICB9CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgaWYgKG1f
ZWxlbWVudC0+aXNXZWJWVFRFbGVtZW50KCkgJiYgdG9XZWJWVFRFbGVtZW50KG1fZWxlbWVudCkt
PndlYlZUVE5vZGVUeXBlKCkpCisgICAgaWYgKG1fZWxlbWVudC0+aXNXZWJWVFRFbGVtZW50KCkp
CiAgICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChtYXRjaFJlcXVlc3QucnVsZVNl
dC0+Y3VlUHNldWRvUnVsZXMoKSwgbWF0Y2hSZXF1ZXN0LCBydWxlUmFuZ2UpOwogI2VuZGlmCiAg
ICAgLy8gQ2hlY2sgd2hldGhlciBvdGhlciB0eXBlcyBvZiBydWxlcyBhcmUgYXBwbGljYWJsZSBp
biB0aGUgY3VycmVudCB0cmVlIHNjb3BlLiBDcml0ZXJpYSBmb3IgdGhpczoKQEAgLTEyNjIsNyAr
MTI2Miw3IEBAIGJvb2wgU3R5bGVSZXNvbHZlcjo6Y2FuU2hhcmVTdHlsZVdpdGhFbGVtZW50KFN0
eWxlZEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiAgICAgaWYgKGVsZW1lbnQtPmlzV2ViVlRURWxl
bWVudCgpICE9IG1fZWxlbWVudC0+aXNXZWJWVFRFbGVtZW50KCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIGlmIChlbGVtZW50LT5pc1dlYlZUVEVsZW1lbnQoKSAmJiBtX2VsZW1lbnQt
PmlzV2ViVlRURWxlbWVudCgpICYmIHRvV2ViVlRURWxlbWVudChlbGVtZW50KS0+d2ViVlRUTm9k
ZVR5cGUoKSAhPSB0b1dlYlZUVEVsZW1lbnQobV9lbGVtZW50KS0+d2ViVlRUTm9kZVR5cGUoKSkK
KyAgICBpZiAoZWxlbWVudC0+aXNXZWJWVFRFbGVtZW50KCkgJiYgbV9lbGVtZW50LT5pc1dlYlZU
VEVsZW1lbnQoKSAmJiB0b1dlYlZUVEVsZW1lbnQoZWxlbWVudCktPmlzUGFzdE5vZGUoKSAhPSB0
b1dlYlZUVEVsZW1lbnQobV9lbGVtZW50KS0+aXNQYXN0Tm9kZSgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
ZXh0VHJhY2tDdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUu
Y3BwCmluZGV4IDJmMWEwNzkuLjc5YjcyZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1RleHRUcmFja0N1ZS5jcHAKQEAgLTUwMywxNSArNTAzLDEwIEBAIHZvaWQgVGV4dFRyYWNrQ3Vl
Ojpjb3B5V2ViVlRUTm9kZVRvRE9NVHJlZShDb250YWluZXJOb2RlKiB3ZWJWVFROb2RlLCBDb250
YWluZXJOCiB7CiAgICAgZm9yIChOb2RlKiBub2RlID0gd2ViVlRUTm9kZS0+Zmlyc3RDaGlsZCgp
OyBub2RlOyBub2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICBSZWZQdHI8Tm9k
ZT4gY2xvbmVkTm9kZTsKLSAgICAgICAgLy8gU3BlY3MgcmVxdWlyZSB2b2ljZSBhbmQgY2xhc3Mg
V2ViVlRUIGVsZW1lbnRzIHRvIGJlIHNwYW5zIGZvciBET00gdHJlZXMuCi0gICAgICAgIGlmIChu
b2RlLT5oYXNUYWdOYW1lKHZvaWNlRWxlbWVudFRhZ05hbWUoKSkgfHwgbm9kZS0+aGFzVGFnTmFt
ZShjbGFzc0VsZW1lbnRUYWdOYW1lKCkpIHx8IG5vZGUtPmhhc1RhZ05hbWUobGFuZ0VsZW1lbnRU
YWdOYW1lKCkpKSB7Ci0gICAgICAgICAgICBjbG9uZWROb2RlID0gSFRNTFNwYW5FbGVtZW50Ojpj
cmVhdGUoc3BhblRhZywgc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQpKTsKLSAgICAgICAgICAgIHRvRWxlbWVudChjbG9uZWROb2RlLmdldCgpKS0+c2V0QXR0
cmlidXRlKGNsYXNzQXR0ciwgdG9FbGVtZW50KG5vZGUpLT5nZXRBdHRyaWJ1dGUoY2xhc3NBdHRy
KSk7Ci0gICAgICAgICAgICB0b0VsZW1lbnQoY2xvbmVkTm9kZS5nZXQoKSktPnNldEF0dHJpYnV0
ZSh0aXRsZUF0dHIsIHRvRWxlbWVudChub2RlKS0+Z2V0QXR0cmlidXRlKHZvaWNlQXR0cmlidXRl
TmFtZSgpKSk7Ci0gICAgICAgICAgICB0b0VsZW1lbnQoY2xvbmVkTm9kZS5nZXQoKSktPnNldEF0
dHJpYnV0ZShsYW5nQXR0ciwgdG9FbGVtZW50KG5vZGUpLT5nZXRBdHRyaWJ1dGUobGFuZ0F0dHJp
YnV0ZU5hbWUoKSkpOwotICAgICAgICB9IGVsc2UKKyAgICAgICAgaWYgKG5vZGUtPmlzV2ViVlRU
RWxlbWVudCgpKQorICAgICAgICAgICAgY2xvbmVkTm9kZSA9IHRvV2ViVlRURWxlbWVudChub2Rl
KS0+Y3JlYXRlRXF1aXZhbGVudEhUTUxFbGVtZW50KGRvY3VtZW50KCkpOworICAgICAgICBlbHNl
CiAgICAgICAgICAgICBjbG9uZWROb2RlID0gbm9kZS0+Y2xvbmVOb2RlKGZhbHNlKTsKLQogICAg
ICAgICBwYXJlbnQtPmFwcGVuZENoaWxkKGNsb25lZE5vZGUsIEFTU0VSVF9OT19FWENFUFRJT04p
OwogICAgICAgICBpZiAobm9kZS0+aXNDb250YWluZXJOb2RlKCkpCiAgICAgICAgICAgICBjb3B5
V2ViVlRUTm9kZVRvRE9NVHJlZSh0b0NvbnRhaW5lck5vZGUobm9kZSksIHRvQ29udGFpbmVyTm9k
ZShjbG9uZWROb2RlLmdldCgpKSk7CkBAIC01MjEsOCArNTE2LDcgQEAgdm9pZCBUZXh0VHJhY2tD
dWU6OmNvcHlXZWJWVFROb2RlVG9ET01UcmVlKENvbnRhaW5lck5vZGUqIHdlYlZUVE5vZGUsIENv
bnRhaW5lck4KIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gVGV4dFRyYWNrQ3VlOjpnZXRD
dWVBc0hUTUwoKQogewogICAgIGNyZWF0ZVdlYlZUVE5vZGVUcmVlKCk7Ci0gICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpOwotICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjbG9uZWRGcmFnbWVudCA9IERvY3Vt
ZW50RnJhZ21lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CisgICAgUmVmUHRyPERvY3VtZW50RnJhZ21l
bnQ+IGNsb25lZEZyYWdtZW50ID0gRG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkp
OwogICAgIGNvcHlXZWJWVFROb2RlVG9ET01UcmVlKG1fd2ViVlRUTm9kZVRyZWUuZ2V0KCksIGNs
b25lZEZyYWdtZW50LmdldCgpKTsKICAgICByZXR1cm4gY2xvbmVkRnJhZ21lbnQucmVsZWFzZSgp
OwogfQpAQCAtNTMxLDggKzUyNSw3IEBAIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gVGV4
dFRyYWNrQ3VlOjpjcmVhdGVDdWVSZW5kZXJpbmdUcmVlKCkKIHsKICAgICBSZWZQdHI8RG9jdW1l
bnRGcmFnbWVudD4gY2xvbmVkRnJhZ21lbnQ7CiAgICAgY3JlYXRlV2ViVlRUTm9kZVRyZWUoKTsK
LSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KG1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCk7Ci0gICAgY2xvbmVkRnJhZ21lbnQgPSBEb2N1bWVudEZyYWdtZW50
OjpjcmVhdGUoZG9jdW1lbnQpOworICAgIGNsb25lZEZyYWdtZW50ID0gRG9jdW1lbnRGcmFnbWVu
dDo6Y3JlYXRlKGRvY3VtZW50KCkpOwogICAgIG1fd2ViVlRUTm9kZVRyZWUtPmNsb25lQ2hpbGRO
b2RlcyhjbG9uZWRGcmFnbWVudC5nZXQoKSk7CiAgICAgcmV0dXJuIGNsb25lZEZyYWdtZW50LnJl
bGVhc2UoKTsKIH0KQEAgLTcwOCw3ICs3MDEsNyBAQCB2b2lkIFRleHRUcmFja0N1ZTo6bWFya0Z1
dHVyZUFuZFBhc3ROb2RlcyhDb250YWluZXJOb2RlKiByb290LCBkb3VibGUgcHJldmlvdXNUaQog
ICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAoY2hpbGQtPmlzV2ViVlRURWxlbWVudCgp
KSB7Ci0gICAgICAgICAgICB0b1dlYlZUVEVsZW1lbnQoY2hpbGQpLT5zZXRXZWJWVFROb2RlVHlw
ZShpc1Bhc3ROb2RlID8gV2ViVlRUTm9kZVR5cGVQYXN0IDogV2ViVlRUTm9kZVR5cGVGdXR1cmUp
OworICAgICAgICAgICAgdG9XZWJWVFRFbGVtZW50KGNoaWxkKS0+c2V0SXNQYXN0Tm9kZShpc1Bh
c3ROb2RlKTsKICAgICAgICAgICAgIC8vIE1ha2UgYW4gZWxlbWVuZXQgaWQgbWF0Y2ggYSBjdWUg
aWQgZm9yIHN0eWxlIG1hdGNoaW5nIHB1cnBvc2VzLgogICAgICAgICAgICAgaWYgKCFtX2lkLmlz
RW1wdHkoKSkKICAgICAgICAgICAgICAgICB0b0VsZW1lbnQoY2hpbGQpLT5zZXRJZEF0dHJpYnV0
ZShBdG9taWNTdHJpbmcobV9pZC5jaGFyYWN0ZXJzKCksIG1faWQubGVuZ3RoKCkpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oCmluZGV4IDI4N2FiZWQuLjJjZDIzODEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaApAQCAtODUsMzYgKzg1
LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gY3VlOwogICAgIH0KIAotICAgIHN0YXRpYyBj
b25zdCBRdWFsaWZpZWROYW1lJiBsYW5nRWxlbWVudFRhZ05hbWUoKQotICAgIHsKLSAgICAgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChRdWFsaWZpZWROYW1lLCBsYW5nVGFnLCAobnVsbEF0b20sICJs
YW5nIiwgbnVsbEF0b20pKTsKLSAgICAgICAgcmV0dXJuIGxhbmdUYWc7Ci0gICAgfQotCi0gICAg
c3RhdGljIGNvbnN0IFF1YWxpZmllZE5hbWUmIHZvaWNlRWxlbWVudFRhZ05hbWUoKQotICAgIHsK
LSAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChRdWFsaWZpZWROYW1lLCB2VGFnLCAobnVsbEF0
b20sICJ2IiwgbnVsbEF0b20pKTsKLSAgICAgICAgcmV0dXJuIHZUYWc7Ci0gICAgfQotCi0gICAg
c3RhdGljIGNvbnN0IFF1YWxpZmllZE5hbWUmIGNsYXNzRWxlbWVudFRhZ05hbWUoKQotICAgIHsK
LSAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChRdWFsaWZpZWROYW1lLCBjVGFnLCAobnVsbEF0
b20sICJjIiwgbnVsbEF0b20pKTsKLSAgICAgICAgcmV0dXJuIGNUYWc7Ci0gICAgfQotCi0gICAg
c3RhdGljIGNvbnN0IFF1YWxpZmllZE5hbWUmIHZvaWNlQXR0cmlidXRlTmFtZSgpCi0gICAgewot
ICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFF1YWxpZmllZE5hbWUsIHZvaWNlQXR0ciwgKG51
bGxBdG9tLCAidm9pY2UiLCBudWxsQXRvbSkpOwotICAgICAgICByZXR1cm4gdm9pY2VBdHRyOwot
ICAgIH0KLQotICAgIHN0YXRpYyBjb25zdCBRdWFsaWZpZWROYW1lJiBsYW5nQXR0cmlidXRlTmFt
ZSgpCi0gICAgewotICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFF1YWxpZmllZE5hbWUsIHZv
aWNlQXR0ciwgKG51bGxBdG9tLCAibGFuZyIsIG51bGxBdG9tKSk7Ci0gICAgICAgIHJldHVybiB2
b2ljZUF0dHI7Ci0gICAgfQotCiAgICAgdmlydHVhbCB+VGV4dFRyYWNrQ3VlKCk7CiAKICAgICBz
dGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBhbGxOb2Rlc1NoYWRvd1BzZXVkb0lkKCk7CkBAIC0y
ODIsNiArMjUyLDggQEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+IG1f
ZGlzcGxheVBvc2l0aW9uOwogCisgICAgaW5saW5lIERvY3VtZW50KiBkb2N1bWVudCgpIHsgcmV0
dXJuIHN0YXRpY19jYXN0PERvY3VtZW50Kj4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsgfQor
CiAgICAgdm9pZCBjcmVhdGVXZWJWVFROb2RlVHJlZSgpOwogICAgIHZvaWQgY29weVdlYlZUVE5v
ZGVUb0RPTVRyZWUoQ29udGFpbmVyTm9kZSogV2ViVlRUTm9kZSwgQ29udGFpbmVyTm9kZSogcm9v
dCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5jcHAKaW5k
ZXggMmU4OTdjMy4uMjE1NjdjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9XZWJWVFRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZU
VEVsZW1lbnQuY3BwCkBAIC0zMywyMCArMzMsOTYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1XZWJWVFRFbGVtZW50OjpXZWJWVFRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50KiBkb2N1bWVudCkKLSAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3Vt
ZW50KQotICAgICwgbV93ZWJWVFROb2RlVHlwZShXZWJWVFROb2RlVHlwZU5vbmUpCitzdGF0aWMg
UXVhbGlmaWVkTmFtZSYgbm9kZVR5cGVUb1RhZ05hbWUoV2ViVlRUTm9kZVR5cGUgbm9kZVR5cGUp
Cit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChRdWFsaWZpZWROYW1lLCBjVGFnLCAobnVsbEF0
b20sICJjIiwgbnVsbEF0b20pKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFF1YWxpZmllZE5h
bWUsIHZUYWcsIChudWxsQXRvbSwgInYiLCBudWxsQXRvbSkpOworICAgIERFRklORV9TVEFUSUNf
TE9DQUwoUXVhbGlmaWVkTmFtZSwgbGFuZ1RhZywgKG51bGxBdG9tLCAibGFuZyIsIG51bGxBdG9t
KSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChRdWFsaWZpZWROYW1lLCBiVGFnLCAobnVsbEF0
b20sICJiIiwgbnVsbEF0b20pKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFF1YWxpZmllZE5h
bWUsIHVUYWcsIChudWxsQXRvbSwgInUiLCBudWxsQXRvbSkpOworICAgIERFRklORV9TVEFUSUNf
TE9DQUwoUXVhbGlmaWVkTmFtZSwgaVRhZywgKG51bGxBdG9tLCAiaSIsIG51bGxBdG9tKSk7Cisg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChRdWFsaWZpZWROYW1lLCBydWJ5VGFnLCAobnVsbEF0b20s
ICJydWJ5IiwgbnVsbEF0b20pKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFF1YWxpZmllZE5h
bWUsIHJ0VGFnLCAobnVsbEF0b20sICJydCIsIG51bGxBdG9tKSk7CisgICAgc3dpdGNoIChub2Rl
VHlwZSkgeworICAgIGNhc2UgV2ViVlRUTm9kZVR5cGVDbGFzczoKKyAgICAgICAgcmV0dXJuIGNU
YWc7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2ViVlRUTm9kZVR5cGVJdGFsaWM6CisgICAg
ICAgIHJldHVybiBpVGFnOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdlYlZUVE5vZGVUeXBl
TGFuZ3VhZ2U6CisgICAgICAgIHJldHVybiBsYW5nVGFnOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFdlYlZUVE5vZGVUeXBlQm9sZDoKKyAgICAgICAgcmV0dXJuIGJUYWc7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgV2ViVlRUTm9kZVR5cGVVbmRlcmxpbmU6CisgICAgICAgIHJldHVybiB1
VGFnOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdlYlZUVE5vZGVUeXBlUnVieToKKyAgICAg
ICAgcmV0dXJuIHJ1YnlUYWc7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2ViVlRUTm9kZVR5
cGVSdWJ5VGV4dDoKKyAgICAgICAgcmV0dXJuIHJ0VGFnOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFdlYlZUVE5vZGVUeXBlVm9pY2U6CisgICAgICAgIHJldHVybiB2VGFnOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFdlYlZUVE5vZGVUeXBlTm9uZToKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgfQorfQorICAgIAorV2ViVlRURWxlbWVudDo6V2ViVlRURWxlbWVudChX
ZWJWVFROb2RlVHlwZSBub2RlVHlwZSwgRG9jdW1lbnQqIGRvY3VtZW50KQorOiBFbGVtZW50KG5v
ZGVUeXBlVG9UYWdOYW1lKG5vZGVUeXBlKSwgZG9jdW1lbnQsIENyZWF0ZUVsZW1lbnQpCissIG1f
aXNQYXN0Tm9kZSgwKQorLCBtX3dlYlZUVE5vZGVUeXBlKG5vZGVUeXBlKQogewogfQogCi1QYXNz
UmVmUHRyPFdlYlZUVEVsZW1lbnQ+IFdlYlZUVEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCitQYXNzUmVmUHRyPFdlYlZUVEVs
ZW1lbnQ+IFdlYlZUVEVsZW1lbnQ6OmNyZWF0ZShXZWJWVFROb2RlVHlwZSBub2RlVHlwZSwgRG9j
dW1lbnQqIGRvY3VtZW50KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViVlRURWxlbWVu
dCh0YWdOYW1lLCBkb2N1bWVudCkpOworICAgIFJlZlB0cjxXZWJWVFRFbGVtZW50PiBuZXdFbGVt
ZW50ID0gYWRvcHRSZWYobmV3IFdlYlZUVEVsZW1lbnQobm9kZVR5cGUsIGRvY3VtZW50KSk7Cisg
ICAgcmV0dXJuIG5ld0VsZW1lbnQ7CiB9CiAKIFBhc3NSZWZQdHI8RWxlbWVudD4gV2ViVlRURWxl
bWVudDo6Y2xvbmVFbGVtZW50V2l0aG91dEF0dHJpYnV0ZXNBbmRDaGlsZHJlbigpCiB7Ci0gICAg
cmV0dXJuIGNyZWF0ZSh0YWdRTmFtZSgpLCBkb2N1bWVudCgpKTsKKyAgICByZXR1cm4gY3JlYXRl
KHN0YXRpY19jYXN0PFdlYlZUVE5vZGVUeXBlPihtX3dlYlZUVE5vZGVUeXBlKSwgZG9jdW1lbnQo
KSk7Cit9CisKK1Bhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IFdlYlZUVEVsZW1lbnQ6OmNyZWF0ZUVx
dWl2YWxlbnRIVE1MRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgUmVmUHRyPEhU
TUxFbGVtZW50PiBodG1sRWxlbWVudDsKKyAgICBzd2l0Y2ggKG1fd2ViVlRUTm9kZVR5cGUpIHsK
KyAgICBjYXNlIFdlYlZUVE5vZGVUeXBlQ2xhc3M6CisgICAgY2FzZSBXZWJWVFROb2RlVHlwZUxh
bmd1YWdlOgorICAgIGNhc2UgV2ViVlRUTm9kZVR5cGVWb2ljZToKKyAgICAgICAgaHRtbEVsZW1l
bnQgPSBIVE1MRWxlbWVudDo6Y3JlYXRlKEhUTUxOYW1lczo6c3BhblRhZywgZG9jdW1lbnQpOwor
ICAgICAgICBodG1sRWxlbWVudC5nZXQoKS0+c2V0QXR0cmlidXRlKEhUTUxOYW1lczo6dGl0bGVB
dHRyLCBnZXRBdHRyaWJ1dGUodm9pY2VBdHRyaWJ1dGVOYW1lKCkpKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBXZWJWVFROb2RlVHlwZUl0YWxpYzoKKyAgICAgICAgaHRtbEVsZW1lbnQgPSBI
VE1MRWxlbWVudDo6Y3JlYXRlKEhUTUxOYW1lczo6aVRhZywgZG9jdW1lbnQpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFdlYlZUVE5vZGVUeXBlQm9sZDoKKyAgICAgICAgaHRtbEVsZW1lbnQg
PSBIVE1MRWxlbWVudDo6Y3JlYXRlKEhUTUxOYW1lczo6YlRhZywgZG9jdW1lbnQpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFdlYlZUVE5vZGVUeXBlVW5kZXJsaW5lOgorICAgICAgICBodG1s
RWxlbWVudCA9IEhUTUxFbGVtZW50OjpjcmVhdGUoSFRNTE5hbWVzOjp1VGFnLCBkb2N1bWVudCk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2ViVlRUTm9kZVR5cGVSdWJ5OgorICAgICAgICBo
dG1sRWxlbWVudCA9IEhUTUxFbGVtZW50OjpjcmVhdGUoSFRNTE5hbWVzOjpydWJ5VGFnLCBkb2N1
bWVudCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2ViVlRUTm9kZVR5cGVSdWJ5VGV4dDoK
KyAgICAgICAgaHRtbEVsZW1lbnQgPSBIVE1MRWxlbWVudDo6Y3JlYXRlKEhUTUxOYW1lczo6cnRU
YWcsIGRvY3VtZW50KTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgaHRtbEVsZW1lbnQuZ2V0KCktPnNldEF0
dHJpYnV0ZShsYW5nQXR0cmlidXRlTmFtZSgpLCBnZXRBdHRyaWJ1dGUobGFuZ0F0dHJpYnV0ZU5h
bWUoKSkpOworICAgIGh0bWxFbGVtZW50LmdldCgpLT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjpj
bGFzc0F0dHIsIGdldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmNsYXNzQXR0cikpOworICAgIHJldHVy
biBodG1sRWxlbWVudDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuaAppbmRleCBkM2ZlMWIyLi41Y2U4MTI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuaApAQCAtMzAsMjMgKzMwLDUy
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gV2ViVlRUTm9kZVR5cGUgewotICAgIFdl
YlZUVE5vZGVUeXBlTm9uZSA9IDAsCi0gICAgV2ViVlRUTm9kZVR5cGVGdXR1cmUsCi0gICAgV2Vi
VlRUTm9kZVR5cGVQYXN0CisgICAgV2ViVlRUTm9kZVR5cGVOb25lLAorICAgIFdlYlZUVE5vZGVU
eXBlQ2xhc3MsCisgICAgV2ViVlRUTm9kZVR5cGVJdGFsaWMsCisgICAgV2ViVlRUTm9kZVR5cGVM
YW5ndWFnZSwKKyAgICBXZWJWVFROb2RlVHlwZUJvbGQsCisgICAgV2ViVlRUTm9kZVR5cGVVbmRl
cmxpbmUsCisgICAgV2ViVlRUTm9kZVR5cGVSdWJ5LAorICAgIFdlYlZUVE5vZGVUeXBlUnVieVRl
eHQsCisgICAgV2ViVlRUTm9kZVR5cGVWb2ljZQogfTsKIAotY2xhc3MgV2ViVlRURWxlbWVudCA6
IHB1YmxpYyBIVE1MRWxlbWVudCB7CitjbGFzcyBXZWJWVFRFbGVtZW50IDogcHVibGljIEVsZW1l
bnQgewogcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlZUVEVsZW1lbnQ+IGNyZWF0
ZShjb25zdCBXZWJWVFROb2RlVHlwZSwgRG9jdW1lbnQqKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxXZWJWVFRFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7
CisgICAgUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gY3JlYXRlRXF1aXZhbGVudEhUTUxFbGVtZW50
KERvY3VtZW50Kik7CisKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RWxlbWVudD4gY2xvbmVFbGVt
ZW50V2l0aG91dEF0dHJpYnV0ZXNBbmRDaGlsZHJlbigpIE9WRVJSSURFOwogCi0gICAgdm9pZCBz
ZXRXZWJWVFROb2RlVHlwZShXZWJWVFROb2RlVHlwZSB0eXBlKSB7IG1fd2ViVlRUTm9kZVR5cGUg
PSB0eXBlOyB9Ci0gICAgV2ViVlRUTm9kZVR5cGUgd2ViVlRUTm9kZVR5cGUoKSBjb25zdCB7IHJl
dHVybiBtX3dlYlZUVE5vZGVUeXBlOyB9CisgICAgdm9pZCBzZXRXZWJWVFROb2RlVHlwZShXZWJW
VFROb2RlVHlwZSB0eXBlKSB7IG1fd2ViVlRUTm9kZVR5cGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4odHlwZSk7IH0KKyAgICBXZWJWVFROb2RlVHlwZSB3ZWJWVFROb2RlVHlwZSgpIGNvbnN0IHsg
cmV0dXJuIHN0YXRpY19jYXN0PFdlYlZUVE5vZGVUeXBlPihtX3dlYlZUVE5vZGVUeXBlKTsgfQor
CisgICAgYm9vbCBpc1Bhc3ROb2RlKCkgY29uc3QgeyByZXR1cm4gbV9pc1Bhc3ROb2RlOyB9Cisg
ICAgdm9pZCBzZXRJc1Bhc3ROb2RlKGJvb2wgdmFsdWUpIHsgbV9pc1Bhc3ROb2RlID0gdmFsdWU7
IH0KKwogICAgIHZpcnR1YWwgYm9vbCBpc1dlYlZUVEVsZW1lbnQoKSBjb25zdCBPVkVSUklERSB7
IHJldHVybiB0cnVlOyB9CiAKKyAgICBzdGF0aWMgY29uc3QgUXVhbGlmaWVkTmFtZSYgdm9pY2VB
dHRyaWJ1dGVOYW1lKCkKKyAgICB7CisgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoUXVhbGlm
aWVkTmFtZSwgdm9pY2VBdHRyLCAobnVsbEF0b20sICJ2b2ljZSIsIG51bGxBdG9tKSk7CisgICAg
ICAgIHJldHVybiB2b2ljZUF0dHI7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBjb25zdCBRdWFs
aWZpZWROYW1lJiBsYW5nQXR0cmlidXRlTmFtZSgpCisgICAgeworICAgICAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKFF1YWxpZmllZE5hbWUsIHZvaWNlQXR0ciwgKG51bGxBdG9tLCAibGFuZyIsIG51
bGxBdG9tKSk7CisgICAgICAgIHJldHVybiB2b2ljZUF0dHI7CisgICAgfQorCiBwcml2YXRlOgog
ICAgIFdlYlZUVEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7Ci0gICAg
V2ViVlRUTm9kZVR5cGUgbV93ZWJWVFROb2RlVHlwZTsKKyAgICBXZWJWVFRFbGVtZW50KFdlYlZU
VE5vZGVUeXBlLCBEb2N1bWVudCopOworCisgICAgdW5zaWduZWQgbV9pc1Bhc3ROb2RlOjE7Cisg
ICAgdW5zaWduZWQgbV93ZWJWVFROb2RlVHlwZTo0OworICAgIAogfTsKIAogaW5saW5lIFdlYlZU
VEVsZW1lbnQqIHRvV2ViVlRURWxlbWVudChOb2RlKiBub2RlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCmluZGV4IDZhMThjMGMuLjg4MTQ1YmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKQEAgLTM0MSwxMCArMzQxLDM0
IEBAIGRvdWJsZSBXZWJWVFRQYXJzZXI6OmNvbGxlY3RUaW1lU3RhbXAoY29uc3QgU3RyaW5nJiBs
aW5lLCB1bnNpZ25lZCogcG9zaXRpb24pCiAgICAgLy8gMjAtMjEgLSBDYWxjdWxhdGUgcmVzdWx0
LgogICAgIHJldHVybiAodmFsdWUxICogc2Vjb25kc1BlckhvdXIpICsgKHZhbHVlMiAqIHNlY29u
ZHNQZXJNaW51dGUpICsgdmFsdWUzICsgKHZhbHVlNCAqIHNlY29uZHNQZXJNaWxsaXNlY29uZCk7
CiB9Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBpc0xhbmdUb2tlbihXZWJWVFRUb2tlbiYgdG9rZW4p
CisgICAgCitzdGF0aWMgV2ViVlRUTm9kZVR5cGUgdG9rZW5Ub05vZGVUeXBlKFdlYlZUVFRva2Vu
JiB0b2tlbikKIHsKLSAgICByZXR1cm4gdG9rZW4ubmFtZSgpLnNpemUoKSA9PSA0ICYmIHRva2Vu
Lm5hbWUoKVswXSA9PSAnbCcgJiYgdG9rZW4ubmFtZSgpWzFdID09ICdhJyAmJiB0b2tlbi5uYW1l
KClbMl0gPT0gJ24nICYmIHRva2VuLm5hbWUoKVszXSA9PSAnZyc7CisgICAgc3dpdGNoICh0b2tl
bi5uYW1lKCkuc2l6ZSgpKSB7CisgICAgY2FzZSAxOgorICAgICAgICBpZiAodG9rZW4ubmFtZSgp
WzBdID09ICdjJykKKyAgICAgICAgICAgIHJldHVybiBXZWJWVFROb2RlVHlwZUNsYXNzOworICAg
ICAgICBpZiAodG9rZW4ubmFtZSgpWzBdID09ICd2JykKKyAgICAgICAgICAgIHJldHVybiBXZWJW
VFROb2RlVHlwZVZvaWNlOworICAgICAgICBpZiAodG9rZW4ubmFtZSgpWzBdID09ICdiJykKKyAg
ICAgICAgICAgIHJldHVybiBXZWJWVFROb2RlVHlwZUJvbGQ7CisgICAgICAgIGlmICh0b2tlbi5u
YW1lKClbMF0gPT0gJ2knKQorICAgICAgICAgICAgcmV0dXJuIFdlYlZUVE5vZGVUeXBlSXRhbGlj
OworICAgICAgICBpZiAodG9rZW4ubmFtZSgpWzBdID09ICd1JykKKyAgICAgICAgICAgIHJldHVy
biBXZWJWVFROb2RlVHlwZVVuZGVybGluZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAyOgor
ICAgICAgICBpZiAodG9rZW4ubmFtZSgpWzBdID09ICdyJyAmJiB0b2tlbi5uYW1lKClbMV0gPT0g
J3QnKQorICAgICAgICAgICAgcmV0dXJuIFdlYlZUVE5vZGVUeXBlUnVieVRleHQ7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgNDoKKyAgICAgICAgaWYgKHRva2VuLm5hbWUoKVswXSA9PSAncicg
JiYgdG9rZW4ubmFtZSgpWzFdID09ICd1JyAmJiB0b2tlbi5uYW1lKClbMl0gPT0gJ2InICYmIHRv
a2VuLm5hbWUoKVszXSA9PSAneScpCisgICAgICAgICAgICByZXR1cm4gV2ViVlRUTm9kZVR5cGVS
dWJ5OworICAgICAgICBpZiAodG9rZW4ubmFtZSgpWzBdID09ICdsJyAmJiB0b2tlbi5uYW1lKClb
MV0gPT0gJ2EnICYmIHRva2VuLm5hbWUoKVsyXSA9PSAnbicgJiYgdG9rZW4ubmFtZSgpWzNdID09
ICdnJykKKyAgICAgICAgICAgIHJldHVybiBXZWJWVFROb2RlVHlwZUxhbmd1YWdlOworICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIFdlYlZUVE5vZGVUeXBlTm9uZTsKIH0KIAogdm9p
ZCBXZWJWVFRQYXJzZXI6OmNvbnN0cnVjdFRyZWVGcm9tVG9rZW4oRG9jdW1lbnQqIGRvY3VtZW50
KQpAQCAtMzYzLDQzICszODcsMzYgQEAgdm9pZCBXZWJWVFRQYXJzZXI6OmNvbnN0cnVjdFRyZWVG
cm9tVG9rZW4oRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIH0KICAgICBjYXNlIFdlYlZUVFRva2Vu
VHlwZXM6OlN0YXJ0VGFnOiB7CiAgICAgICAgIFJlZlB0cjxXZWJWVFRFbGVtZW50PiBjaGlsZDsK
LSAgICAgICAgaWYgKGlzUmVjb2duaXplZFRhZyh0b2tlblRhZ05hbWUpKQotICAgICAgICAgICAg
Y2hpbGQgPSBXZWJWVFRFbGVtZW50OjpjcmVhdGUodGFnTmFtZSwgZG9jdW1lbnQpOwotICAgICAg
ICBlbHNlIGlmIChtX3Rva2VuLm5hbWUoKS5zaXplKCkgPT0gMSAmJiBtX3Rva2VuLm5hbWUoKVsw
XSA9PSAnYycpCi0gICAgICAgICAgICBjaGlsZCA9IFdlYlZUVEVsZW1lbnQ6OmNyZWF0ZShUZXh0
VHJhY2tDdWU6OmNsYXNzRWxlbWVudFRhZ05hbWUoKSwgZG9jdW1lbnQpOwotICAgICAgICBlbHNl
IGlmIChtX3Rva2VuLm5hbWUoKS5zaXplKCkgPT0gMSAmJiBtX3Rva2VuLm5hbWUoKVswXSA9PSAn
dicpCi0gICAgICAgICAgICBjaGlsZCA9IFdlYlZUVEVsZW1lbnQ6OmNyZWF0ZShUZXh0VHJhY2tD
dWU6OnZvaWNlRWxlbWVudFRhZ05hbWUoKSwgZG9jdW1lbnQpOwotICAgICAgICBlbHNlIGlmIChp
c0xhbmdUb2tlbihtX3Rva2VuKSkKLSAgICAgICAgICAgIGNoaWxkID0gV2ViVlRURWxlbWVudDo6
Y3JlYXRlKFRleHRUcmFja0N1ZTo6bGFuZ0VsZW1lbnRUYWdOYW1lKCksIGRvY3VtZW50KTsKLQor
ICAgICAgICBXZWJWVFROb2RlVHlwZSBub2RlVHlwZSA9IHRva2VuVG9Ob2RlVHlwZShtX3Rva2Vu
KTsKKyAgICAgICAgaWYgKG5vZGVUeXBlICE9IFdlYlZUVE5vZGVUeXBlTm9uZSkKKyAgICAgICAg
ICAgIGNoaWxkID0gV2ViVlRURWxlbWVudDo6Y3JlYXRlKG5vZGVUeXBlLCBkb2N1bWVudCk7CiAg
ICAgICAgIGlmIChjaGlsZCkgewogICAgICAgICAgICAgaWYgKG1fdG9rZW4uY2xhc3NlcygpLnNp
emUoKSA+IDApCiAgICAgICAgICAgICAgICAgY2hpbGQtPnNldEF0dHJpYnV0ZShjbGFzc0F0dHIs
IEF0b21pY1N0cmluZyhtX3Rva2VuLmNsYXNzZXMoKS5kYXRhKCksIG1fdG9rZW4uY2xhc3Nlcygp
LnNpemUoKSkpOwotICAgICAgICAgICAgaWYgKGNoaWxkLT5oYXNUYWdOYW1lKFRleHRUcmFja0N1
ZTo6dm9pY2VFbGVtZW50VGFnTmFtZSgpKSkKLSAgICAgICAgICAgICAgICBjaGlsZC0+c2V0QXR0
cmlidXRlKFRleHRUcmFja0N1ZTo6dm9pY2VBdHRyaWJ1dGVOYW1lKCksIEF0b21pY1N0cmluZyht
X3Rva2VuLmFubm90YXRpb24oKS5kYXRhKCksIG1fdG9rZW4uYW5ub3RhdGlvbigpLnNpemUoKSkp
OwotICAgICAgICAgICAgaWYgKGNoaWxkLT5oYXNUYWdOYW1lKFRleHRUcmFja0N1ZTo6bGFuZ0Vs
ZW1lbnRUYWdOYW1lKCkpKQorCisgICAgICAgICAgICBpZiAoY2hpbGQtPndlYlZUVE5vZGVUeXBl
KCkgPT0gV2ViVlRUTm9kZVR5cGVWb2ljZSkKKyAgICAgICAgICAgICAgICBjaGlsZC0+c2V0QXR0
cmlidXRlKFdlYlZUVEVsZW1lbnQ6OnZvaWNlQXR0cmlidXRlTmFtZSgpLCBBdG9taWNTdHJpbmco
bV90b2tlbi5hbm5vdGF0aW9uKCkuZGF0YSgpLCBtX3Rva2VuLmFubm90YXRpb24oKS5zaXplKCkp
KTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGNoaWxkLT53ZWJWVFROb2RlVHlwZSgpID09IFdlYlZU
VE5vZGVUeXBlTGFuZ3VhZ2UpCiAgICAgICAgICAgICAgICAgbV9sYW5ndWFnZVN0YWNrLmFwcGVu
ZChBdG9taWNTdHJpbmcobV90b2tlbi5hbm5vdGF0aW9uKCkuZGF0YSgpLCBtX3Rva2VuLmFubm90
YXRpb24oKS5zaXplKCkpKTsKKwogICAgICAgICAgICAgaWYgKCFtX2xhbmd1YWdlU3RhY2suaXNF
bXB0eSgpKQotICAgICAgICAgICAgICAgIGNoaWxkLT5zZXRBdHRyaWJ1dGUoVGV4dFRyYWNrQ3Vl
OjpsYW5nQXR0cmlidXRlTmFtZSgpLCBtX2xhbmd1YWdlU3RhY2subGFzdCgpKTsKKyAgICAgICAg
ICAgICAgICBjaGlsZC0+c2V0QXR0cmlidXRlKFdlYlZUVEVsZW1lbnQ6OmxhbmdBdHRyaWJ1dGVO
YW1lKCksIG1fbGFuZ3VhZ2VTdGFjay5sYXN0KCkpOworCiAgICAgICAgICAgICBtX2N1cnJlbnRO
b2RlLT5wYXJzZXJBcHBlbmRDaGlsZChjaGlsZCk7CiAgICAgICAgICAgICBtX2N1cnJlbnROb2Rl
ID0gY2hpbGQ7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgV2Vi
VlRUVG9rZW5UeXBlczo6RW5kVGFnOgotICAgICAgICBpZiAoaXNSZWNvZ25pemVkVGFnKHRva2Vu
VGFnTmFtZSkKLSAgICAgICAgICAgIHx8IChtX3Rva2VuLm5hbWUoKS5zaXplKCkgPT0gMSAmJiBt
X3Rva2VuLm5hbWUoKVswXSA9PSAnYycpCi0gICAgICAgICAgICB8fCAobV90b2tlbi5uYW1lKCku
c2l6ZSgpID09IDEgJiYgbV90b2tlbi5uYW1lKClbMF0gPT0gJ3YnKSkgewotICAgICAgICAgICAg
aWYgKG1fY3VycmVudE5vZGUtPnBhcmVudE5vZGUoKSkKLSAgICAgICAgICAgICAgICBtX2N1cnJl
bnROb2RlID0gbV9jdXJyZW50Tm9kZS0+cGFyZW50Tm9kZSgpOwotICAgICAgICB9Ci0gICAgICAg
IGlmIChpc0xhbmdUb2tlbihtX3Rva2VuKSkgewotICAgICAgICAgICAgaWYgKG1fY3VycmVudE5v
ZGUtPmhhc1RhZ05hbWUoVGV4dFRyYWNrQ3VlOjpsYW5nRWxlbWVudFRhZ05hbWUoKSkpCisgICAg
Y2FzZSBXZWJWVFRUb2tlblR5cGVzOjpFbmRUYWc6IHsKKyAgICAgICAgV2ViVlRUTm9kZVR5cGUg
bm9kZVR5cGUgPSB0b2tlblRvTm9kZVR5cGUobV90b2tlbik7CisgICAgICAgIGlmIChub2RlVHlw
ZSAhPSBXZWJWVFROb2RlVHlwZU5vbmUpIHsKKyAgICAgICAgICAgIGlmIChub2RlVHlwZSA9PSBX
ZWJWVFROb2RlVHlwZUxhbmd1YWdlICYmIG1fY3VycmVudE5vZGUtPmlzV2ViVlRURWxlbWVudCgp
ICYmIHRvV2ViVlRURWxlbWVudChtX2N1cnJlbnROb2RlLmdldCgpKS0+d2ViVlRUTm9kZVR5cGUo
KSA9PSBXZWJWVFROb2RlVHlwZUxhbmd1YWdlKQogICAgICAgICAgICAgICAgIG1fbGFuZ3VhZ2VT
dGFjay5yZW1vdmVMYXN0KCk7CiAgICAgICAgICAgICBpZiAobV9jdXJyZW50Tm9kZS0+cGFyZW50
Tm9kZSgpKQogICAgICAgICAgICAgICAgIG1fY3VycmVudE5vZGUgPSBtX2N1cnJlbnROb2RlLT5w
YXJlbnROb2RlKCk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CisgICAgfQogICAgIGNhc2Ug
V2ViVlRUVG9rZW5UeXBlczo6VGltZXN0YW1wVGFnOiB7CiAgICAgICAgIHVuc2lnbmVkIHBvc2l0
aW9uID0gMDsKICAgICAgICAgZG91YmxlIHRpbWUgPSBjb2xsZWN0VGltZVN0YW1wKG1fdG9rZW4u
Y2hhcmFjdGVycygpLmRhdGEoKSwgJnBvc2l0aW9uKTsK
</data>
<flag name="commit-queue"
          id="204055"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185600</attachid>
            <date>2013-01-30 15:45:40 -0800</date>
            <delta_ts>2013-01-30 17:37:39 -0800</delta_ts>
            <desc>Proposed fix 0.4</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>22621</size>
            <attacher name="Dima Gorbik">dgorbik</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwOGVjNGExLi5iM2RlMTAwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMDEt
MjggIERpbWEgR29yYmlrICA8ZGdvcmJpa0BhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lP
TihyMTQwMjMxKTogbWVkaWEgdHJhY2sgbGF5b3V0IHRlc3RzIGNyYXNoaW5nCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDc1NzkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVt
L1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMTMtMDEtMzAgIFBoaWxpcCBSb2dlcnMgIDxwZHJAZ29v
Z2xlLmNvbT4KIAogICAgICAgICBVcGRhdGUgY2hyb21pdW0tbWFjIHN2Zy96b29tIHRlc3QgZXhw
ZWN0YXRpb25zIGFmdGVyIHIxNDEzMDMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGQ3YjBkM2EuLjAyNmVlZmUgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTAxLDExICsxMDEs
NiBAQCB3ZWJraXQub3JnL2IvMTA3NTg3IFsgV2luNyBEZWJ1ZyBdIHBsYXRmb3JtL2Nocm9taXVt
L3ZpcnR1YWwvZ3B1L2Zhc3QvaGlkcGkvZm9jdQogY3JidWcuY29tLzI0MTgyIFsgTWFjIERlYnVn
IF0gZmFzdC9mcmFtZXMvcmVtb3ZlLWZyYW1lLXdpdGgtc2Nyb2xsYmFycy1jcmFzaC5odG1sIFsg
UGFzcyBTbG93IF0KIGNyYnVnLmNvbS8yNDE4MiBbIE1hYyBEZWJ1ZyBdIGZhc3QvZm9ybXMvcG9z
dC1wb3B1cC1uby1tdWx0aXBsZS13aW5kb3dzLmh0bWwgWyBQYXNzIFNsb3cgXQogCi0jIENyYXNo
aW5nIGFmdGVyIHIxNDAyMzEsIHNlZSBidWcgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwNzU3OQotd2Via2l0Lm9yZy9iLzEwNjg1MyBbIERlYnVnIF0gbWVkaWEvdHJh
Y2svdHJhY2stY3NzLWN1ZS1saWZldGltZS5odG1sIFsgUGFzcyBUaW1lb3V0IENyYXNoIF0KLXdl
YmtpdC5vcmcvYi8xMDgwMjQgWyBEZWJ1ZyBdIG1lZGlhL3RyYWNrL3RyYWNrLWNzcy1tYXRjaGlu
Zy10aW1lc3RhbXBzLmh0bWwgWyBDcmFzaCBdCi13ZWJraXQub3JnL2IvMTA4MDI0IFsgRGVidWcg
XSBtZWRpYS90cmFjay90cmFjay1jc3MtbWF0Y2hpbmctbGFuZy5odG1sIFsgQ3Jhc2ggXQotCiAj
IFRoZXNlIHRlc3RzIHN0YXJ0ZWQgYmVpbmcgc2xvdyB3aGVuIHdlIHN3aXRjaGVkIHRvIERSVC4K
IHdlYmtpdC5vcmcvYi85MDQ4OCBbIERlYnVnIF0gaW5zcGVjdG9yIFsgUGFzcyBTbG93IF0KIHdl
YmtpdC5vcmcvYi85MDQ4OCBbIERlYnVnIF0gaHR0cC90ZXN0cy9pbnNwZWN0b3IgWyBQYXNzIFNs
b3cgXQpAQCAtNDMzOSw5ICs0MzM0LDYgQEAgd2Via2l0Lm9yZy9iLzEwNzMxNiBbIFdpbiBEZWJ1
ZyBdIGZhc3QvaW5saW5lL2ZpeGVkLXBvcy1tb3Zlcy13aXRoLWFic3Bvcy1pbmxpbmUKIHdlYmtp
dC5vcmcvYi8xMDczMjggaHR0cC90ZXN0cy9jYWNoZS9jYW5jZWwtbXVsdGlwbGUtcG9zdC14aHJz
Lmh0bWwgWyBNaXNzaW5nIF0KIHdlYmtpdC5vcmcvYi8xMDczNDEgWyBEZWJ1ZyBdIGluc3BlY3Rv
ci9wcm9maWxlci9tZW1vcnktaW5zdHJ1bWVudGF0aW9uLWNhY2hlZC1pbWFnZXMuaHRtbCBbIEZh
aWx1cmUgXQogCi13ZWJraXQub3JnL2IvMTA3NTc5IFsgRGVidWcgXSBtZWRpYS90cmFjay90cmFj
ay1jc3MtbWF0Y2hpbmcuaHRtbCBbIENyYXNoIF0KLXdlYmtpdC5vcmcvYi8xMDc1NzkgWyBEZWJ1
ZyBdIG1lZGlhL3RyYWNrL3RyYWNrLWNzcy1wcm9wZXJ0eS13aGl0ZWxpc3QuaHRtbCBbIENyYXNo
IF0KLQogd2Via2l0Lm9yZy9iLzEwODE2MyBbIERlYnVnIF0gcGxhdGZvcm0vY2hyb21pdW0vdmly
dHVhbC9kZWZlcnJlZC9mYXN0L2ltYWdlcy9pY29uLTBjb2xvcnMuaHRtbCBbIENyYXNoIF0KIAog
IyBOZXcgY2xhbXBpbmcgbG9naWMgaW4gdGhlIHRpbGUgc2hhZGVyIHdpbGwgY2F1c2VzIHNsaWdo
dCBkaWZmcy4gVGhlc2UgaW1hZ2VzIG11c3QgYmUgcmViYXNlbGluZWQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZTU0OGIzMi4uMzdiZTQ3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEzLTAxLTI4
ICBEaW1hIEdvcmJpayAgPGRnb3JiaWtAYXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04o
cjE0MDIzMSk6IG1lZGlhIHRyYWNrIGxheW91dCB0ZXN0cyBjcmFzaGluZworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3NTc5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2Ugd2VyZSB1c2luZyBub24tc3Rh
bmRhcmQgZWxlbWVudCBuYW1lcyB3aXRoIEhUTUxFbGVtZW50LCB3aGljaCBtYWRlIHY4IHRyeSB0
byBjYXN0CisgICAgICAgIFdlYlZUVEVsZW1lbnRzIHRvIEhUTUxVbmtub3duRWxlbWVudHMgd2hp
Y2ggd2FzIG5vdCBwb3NzaWJsZS4gU3ViY2xhc3NpbmcgRWxlbWVudCBpbnN0ZWFkCisgICAgICAg
IG9mIEhUTUxFbGVtZW50LCB0aG91Z2ggdGhpcyByZXF1aXJlcyBidWlsZGluZyBIVE1MRWxlbWVu
dHMgZnJvbSBXZWJWVFRFbGVtZW50cyBmb3IgY3JlYXRpbmcKKyAgICAgICAgYSBET00gdHJlZS4g
VGhlIGNvZGUgaGFzIGJlZW4gcmVmYWN0b3JlZCB0byBtb3ZlIFdlYlZUVCBub2RlIHR5cGUgdG8g
UXVpYWxpZmllZE5hbWUgbWFwcGluZ3MgCisgICAgICAgIGluc2lkZSB0aGUgV2ViVlRURWxlbWVu
dCBjbGFzcy4gQWxsIFdlYlZUVEVsZW1lbnRzIGluIHRoZSBzaGFkb3cgZG9tIHRyZWUgbm93IGFy
ZSBpbiB0aGUgCisgICAgICAgIG5hbWVzcGFjZSBkZWZpbmVkIGJ5ICdOdWxsQXRvbScuIFRoaXMg
cHJldmVudHMgcmVndWxhciBzdHlsZXMgZnJvbSBiZWluZyBhcHBsaWVkIHRvIDxiPiwgPGk+Cisg
ICAgICAgIGFuZCBzaW1pbGFyIHRhZ3MuIFRob3NlIGhhdmUgdG8gYmUgc3R5bGVkIHNlcGFyYXRl
bHkgd2l0aG91dCByZXVzaW5nIGV4aXN0aW5nIFF1YWxpZmllZE5hbWVzCisgICAgICAgIGFuZCB0
aGVpciBzdHlsZXMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDcy
MTQKKworICAgICAgICBVbnNraXBwaW5nIHRlc3RzIHRvIGNvdmVyIHRoaXMuCisKKyAgICAgICAg
KiBjc3MvU2VsZWN0b3JDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hl
Y2tlcjo6Y2hlY2tPbmUpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RNYXRjaGluZ1J1bGVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNhblNoYXJlU3R5bGVXaXRoRWxlbWVudCk6Cisg
ICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dFRyYWNrQ3VlOjpjb3B5V2ViVlRUTm9kZVRvRE9NVHJlZSk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0VHJhY2tDdWU6OmdldEN1ZUFzSFRNTCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJh
Y2tDdWU6OmNyZWF0ZUN1ZVJlbmRlcmluZ1RyZWUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRy
YWNrQ3VlOjptYXJrRnV0dXJlQW5kUGFzdE5vZGVzKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1Rl
eHRUcmFja0N1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpjdWVTaGFkb3dQ
c2V1ZG9JZCk6CisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Om5vZGVUeXBlVG9UYWdOYW1lKTogZ2V0IGEgUXVhbGlmaWVkTmFtZSB0byB1
c2UgaW4gdGhlIHNoYWRvdyBET00gdHJlZS4KKyAgICAgICAgKFdlYkNvcmU6OldlYlZUVEVsZW1l
bnQ6OldlYlZUVEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViVlRURWxlbWVudDo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlZUVEVsZW1lbnQ6OmNsb25lRWxlbWVudFdpdGhv
dXRBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6V2ViVlRURWxlbWVu
dDo6Y3JlYXRlRXF1aXZhbGVudEhUTUxFbGVtZW50KTogY3JlYXRlIGFuIEhUTUxFbGVtZW50IHRv
IHVzZSBpbiB0aGUgRE9NIHRyZWUuCisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRFbGVtZW50
Lmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJWVFRFbGVtZW50OjpzZXRXZWJWVFROb2RlVHlwZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJWVFRFbGVtZW50Ojp3ZWJWVFROb2RlVHlwZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJWVFRFbGVtZW50Ojppc1Bhc3ROb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYlZUVEVsZW1lbnQ6OnNldElzUGFzdE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
VlRURWxlbWVudDo6dm9pY2VBdHRyaWJ1dGVOYW1lKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1dl
YlZUVFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b2tlblRvTm9kZVR5cGUpOiBkZXRl
cm1pbmUgYSBXZWJWVFQgbm9kZSB0eXBlIGZvciB0aGUgdG9rZW4uCisgICAgICAgIChXZWJDb3Jl
OjpXZWJWVFRQYXJzZXI6OmNvbnN0cnVjdFRyZWVGcm9tVG9rZW4pOgorCiAyMDEzLTAxLTMwICBN
YXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBEYXRhYmFzZUNvbnRleHQg
c2hvdWxkIGltcGxlbWVudCBUaHJlYWRTYWZlUmVmQ291bnRlZC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1Nl
bGVjdG9yQ2hlY2tlci5jcHAKaW5kZXggMWY1ZTBjMC4uZmFiNzA0OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKQEAgLTg2OSw5ICs4NjksOSBAQCBib29sIFNlbGVjdG9y
Q2hlY2tlcjo6Y2hlY2tPbmUoY29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IFNpYgogICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQtPmlzT3V0T2ZSYW5nZSgpOwog
I2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRv
RnV0dXJlQ3VlOgotICAgICAgICAgICAgcmV0dXJuIChlbGVtZW50LT5pc1dlYlZUVEVsZW1lbnQo
KSAmJiB0b1dlYlZUVEVsZW1lbnQoZWxlbWVudCktPndlYlZUVE5vZGVUeXBlKCkgPT0gV2ViVlRU
Tm9kZVR5cGVGdXR1cmUpOworICAgICAgICAgICAgcmV0dXJuIChlbGVtZW50LT5pc1dlYlZUVEVs
ZW1lbnQoKSAmJiAhdG9XZWJWVFRFbGVtZW50KGVsZW1lbnQpLT5pc1Bhc3ROb2RlKCkpOwogICAg
ICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9QYXN0Q3VlOgotICAgICAgICAgICAgcmV0dXJu
IChlbGVtZW50LT5pc1dlYlZUVEVsZW1lbnQoKSAmJiB0b1dlYlZUVEVsZW1lbnQoZWxlbWVudCkt
PndlYlZUVE5vZGVUeXBlKCkgPT0gV2ViVlRUTm9kZVR5cGVQYXN0KTsKKyAgICAgICAgICAgIHJl
dHVybiAoZWxlbWVudC0+aXNXZWJWVFRFbGVtZW50KCkgJiYgdG9XZWJWVFRFbGVtZW50KGVsZW1l
bnQpLT5pc1Bhc3ROb2RlKCkpOwogI2VuZGlmCiAKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6
UHNldWRvSG9yaXpvbnRhbDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJl
c29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCA4
ODUzODVmLi44MjUzODIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNv
bHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC02
NjksNyArNjY5LDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0Y2hpbmdSdWxlcyhj
b25zdCBNYXRjaFJlcXVlc3QmIG1hdGNoUmVxdWVzdCwgUnVsZVIKICAgICB9CiAKICNpZiBFTkFC
TEUoVklERU9fVFJBQ0spCi0gICAgaWYgKG1fZWxlbWVudC0+aXNXZWJWVFRFbGVtZW50KCkgJiYg
dG9XZWJWVFRFbGVtZW50KG1fZWxlbWVudCktPndlYlZUVE5vZGVUeXBlKCkpCisgICAgaWYgKG1f
ZWxlbWVudC0+aXNXZWJWVFRFbGVtZW50KCkpCiAgICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVz
Rm9yTGlzdChtYXRjaFJlcXVlc3QucnVsZVNldC0+Y3VlUHNldWRvUnVsZXMoKSwgbWF0Y2hSZXF1
ZXN0LCBydWxlUmFuZ2UpOwogI2VuZGlmCiAgICAgLy8gQ2hlY2sgd2hldGhlciBvdGhlciB0eXBl
cyBvZiBydWxlcyBhcmUgYXBwbGljYWJsZSBpbiB0aGUgY3VycmVudCB0cmVlIHNjb3BlLiBDcml0
ZXJpYSBmb3IgdGhpczoKQEAgLTEyNzAsNyArMTI3MCw3IEBAIGJvb2wgU3R5bGVSZXNvbHZlcjo6
Y2FuU2hhcmVTdHlsZVdpdGhFbGVtZW50KFN0eWxlZEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiAg
ICAgaWYgKGVsZW1lbnQtPmlzV2ViVlRURWxlbWVudCgpICE9IG1fZWxlbWVudC0+aXNXZWJWVFRF
bGVtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChlbGVtZW50LT5pc1dl
YlZUVEVsZW1lbnQoKSAmJiBtX2VsZW1lbnQtPmlzV2ViVlRURWxlbWVudCgpICYmIHRvV2ViVlRU
RWxlbWVudChlbGVtZW50KS0+d2ViVlRUTm9kZVR5cGUoKSAhPSB0b1dlYlZUVEVsZW1lbnQobV9l
bGVtZW50KS0+d2ViVlRUTm9kZVR5cGUoKSkKKyAgICBpZiAoZWxlbWVudC0+aXNXZWJWVFRFbGVt
ZW50KCkgJiYgbV9lbGVtZW50LT5pc1dlYlZUVEVsZW1lbnQoKSAmJiB0b1dlYlZUVEVsZW1lbnQo
ZWxlbWVudCktPmlzUGFzdE5vZGUoKSAhPSB0b1dlYlZUVEVsZW1lbnQobV9lbGVtZW50KS0+aXNQ
YXN0Tm9kZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCmluZGV4IGIwNjQyNmIuLmYzYjkzNTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKQEAgLTUwNCwxNSAr
NTA0LDEwIEBAIHZvaWQgVGV4dFRyYWNrQ3VlOjpjb3B5V2ViVlRUTm9kZVRvRE9NVHJlZShDb250
YWluZXJOb2RlKiB3ZWJWVFROb2RlLCBDb250YWluZXJOCiB7CiAgICAgZm9yIChOb2RlKiBub2Rl
ID0gd2ViVlRUTm9kZS0+Zmlyc3RDaGlsZCgpOyBub2RlOyBub2RlID0gbm9kZS0+bmV4dFNpYmxp
bmcoKSkgewogICAgICAgICBSZWZQdHI8Tm9kZT4gY2xvbmVkTm9kZTsKLSAgICAgICAgLy8gU3Bl
Y3MgcmVxdWlyZSB2b2ljZSBhbmQgY2xhc3MgV2ViVlRUIGVsZW1lbnRzIHRvIGJlIHNwYW5zIGZv
ciBET00gdHJlZXMuCi0gICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKHZvaWNlRWxlbWVudFRh
Z05hbWUoKSkgfHwgbm9kZS0+aGFzVGFnTmFtZShjbGFzc0VsZW1lbnRUYWdOYW1lKCkpIHx8IG5v
ZGUtPmhhc1RhZ05hbWUobGFuZ0VsZW1lbnRUYWdOYW1lKCkpKSB7Ci0gICAgICAgICAgICBjbG9u
ZWROb2RlID0gSFRNTFNwYW5FbGVtZW50OjpjcmVhdGUoc3BhblRhZywgc3RhdGljX2Nhc3Q8RG9j
dW1lbnQqPihtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpKTsKLSAgICAgICAgICAgIHRvRWxlbWVu
dChjbG9uZWROb2RlLmdldCgpKS0+c2V0QXR0cmlidXRlKGNsYXNzQXR0ciwgdG9FbGVtZW50KG5v
ZGUpLT5nZXRBdHRyaWJ1dGUoY2xhc3NBdHRyKSk7Ci0gICAgICAgICAgICB0b0VsZW1lbnQoY2xv
bmVkTm9kZS5nZXQoKSktPnNldEF0dHJpYnV0ZSh0aXRsZUF0dHIsIHRvRWxlbWVudChub2RlKS0+
Z2V0QXR0cmlidXRlKHZvaWNlQXR0cmlidXRlTmFtZSgpKSk7Ci0gICAgICAgICAgICB0b0VsZW1l
bnQoY2xvbmVkTm9kZS5nZXQoKSktPnNldEF0dHJpYnV0ZShsYW5nQXR0ciwgdG9FbGVtZW50KG5v
ZGUpLT5nZXRBdHRyaWJ1dGUobGFuZ0F0dHJpYnV0ZU5hbWUoKSkpOwotICAgICAgICB9IGVsc2UK
KyAgICAgICAgaWYgKG5vZGUtPmlzV2ViVlRURWxlbWVudCgpKQorICAgICAgICAgICAgY2xvbmVk
Tm9kZSA9IHRvV2ViVlRURWxlbWVudChub2RlKS0+Y3JlYXRlRXF1aXZhbGVudEhUTUxFbGVtZW50
KG93bmVyRG9jdW1lbnQoKSk7CisgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNsb25lZE5vZGUg
PSBub2RlLT5jbG9uZU5vZGUoZmFsc2UpOwotCiAgICAgICAgIHBhcmVudC0+YXBwZW5kQ2hpbGQo
Y2xvbmVkTm9kZSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAgICAgIGlmIChub2RlLT5pc0Nv
bnRhaW5lck5vZGUoKSkKICAgICAgICAgICAgIGNvcHlXZWJWVFROb2RlVG9ET01UcmVlKHRvQ29u
dGFpbmVyTm9kZShub2RlKSwgdG9Db250YWluZXJOb2RlKGNsb25lZE5vZGUuZ2V0KCkpKTsKQEAg
LTUyMiw4ICs1MTcsNyBAQCB2b2lkIFRleHRUcmFja0N1ZTo6Y29weVdlYlZUVE5vZGVUb0RPTVRy
ZWUoQ29udGFpbmVyTm9kZSogd2ViVlRUTm9kZSwgQ29udGFpbmVyTgogUGFzc1JlZlB0cjxEb2N1
bWVudEZyYWdtZW50PiBUZXh0VHJhY2tDdWU6OmdldEN1ZUFzSFRNTCgpCiB7CiAgICAgY3JlYXRl
V2ViVlRUTm9kZVRyZWUoKTsKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxE
b2N1bWVudCo+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7Ci0gICAgUmVmUHRyPERvY3VtZW50
RnJhZ21lbnQ+IGNsb25lZEZyYWdtZW50ID0gRG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRlKGRvY3Vt
ZW50KTsKKyAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY2xvbmVkRnJhZ21lbnQgPSBEb2N1
bWVudEZyYWdtZW50OjpjcmVhdGUob3duZXJEb2N1bWVudCgpKTsKICAgICBjb3B5V2ViVlRUTm9k
ZVRvRE9NVHJlZShtX3dlYlZUVE5vZGVUcmVlLmdldCgpLCBjbG9uZWRGcmFnbWVudC5nZXQoKSk7
CiAgICAgcmV0dXJuIGNsb25lZEZyYWdtZW50LnJlbGVhc2UoKTsKIH0KQEAgLTUzMiw4ICs1MjYs
NyBAQCBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IFRleHRUcmFja0N1ZTo6Y3JlYXRlQ3Vl
UmVuZGVyaW5nVHJlZSgpCiB7CiAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNsb25lZEZy
YWdtZW50OwogICAgIGNyZWF0ZVdlYlZUVE5vZGVUcmVlKCk7Ci0gICAgRG9jdW1lbnQqIGRvY3Vt
ZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwot
ICAgIGNsb25lZEZyYWdtZW50ID0gRG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsK
KyAgICBjbG9uZWRGcmFnbWVudCA9IERvY3VtZW50RnJhZ21lbnQ6OmNyZWF0ZShvd25lckRvY3Vt
ZW50KCkpOwogICAgIG1fd2ViVlRUTm9kZVRyZWUtPmNsb25lQ2hpbGROb2RlcyhjbG9uZWRGcmFn
bWVudC5nZXQoKSk7CiAgICAgcmV0dXJuIGNsb25lZEZyYWdtZW50LnJlbGVhc2UoKTsKIH0KQEAg
LTcwOSw3ICs3MDIsNyBAQCB2b2lkIFRleHRUcmFja0N1ZTo6bWFya0Z1dHVyZUFuZFBhc3ROb2Rl
cyhDb250YWluZXJOb2RlKiByb290LCBkb3VibGUgcHJldmlvdXNUaQogICAgICAgICB9CiAgICAg
ICAgIAogICAgICAgICBpZiAoY2hpbGQtPmlzV2ViVlRURWxlbWVudCgpKSB7Ci0gICAgICAgICAg
ICB0b1dlYlZUVEVsZW1lbnQoY2hpbGQpLT5zZXRXZWJWVFROb2RlVHlwZShpc1Bhc3ROb2RlID8g
V2ViVlRUTm9kZVR5cGVQYXN0IDogV2ViVlRUTm9kZVR5cGVGdXR1cmUpOworICAgICAgICAgICAg
dG9XZWJWVFRFbGVtZW50KGNoaWxkKS0+c2V0SXNQYXN0Tm9kZShpc1Bhc3ROb2RlKTsKICAgICAg
ICAgICAgIC8vIE1ha2UgYW4gZWxlbWVuZXQgaWQgbWF0Y2ggYSBjdWUgaWQgZm9yIHN0eWxlIG1h
dGNoaW5nIHB1cnBvc2VzLgogICAgICAgICAgICAgaWYgKCFtX2lkLmlzRW1wdHkoKSkKICAgICAg
ICAgICAgICAgICB0b0VsZW1lbnQoY2hpbGQpLT5zZXRJZEF0dHJpYnV0ZShBdG9taWNTdHJpbmco
bV9pZC5jaGFyYWN0ZXJzKCksIG1faWQubGVuZ3RoKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1RleHRUcmFja0N1ZS5oCmluZGV4IDI4N2FiZWQuLjM4NTE3YWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaApAQCAtODUsMzYgKzg1LDYgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gY3VlOwogICAgIH0KIAotICAgIHN0YXRpYyBjb25zdCBRdWFsaWZpZWRO
YW1lJiBsYW5nRWxlbWVudFRhZ05hbWUoKQotICAgIHsKLSAgICAgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChRdWFsaWZpZWROYW1lLCBsYW5nVGFnLCAobnVsbEF0b20sICJsYW5nIiwgbnVsbEF0b20p
KTsKLSAgICAgICAgcmV0dXJuIGxhbmdUYWc7Ci0gICAgfQotCi0gICAgc3RhdGljIGNvbnN0IFF1
YWxpZmllZE5hbWUmIHZvaWNlRWxlbWVudFRhZ05hbWUoKQotICAgIHsKLSAgICAgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChRdWFsaWZpZWROYW1lLCB2VGFnLCAobnVsbEF0b20sICJ2IiwgbnVsbEF0
b20pKTsKLSAgICAgICAgcmV0dXJuIHZUYWc7Ci0gICAgfQotCi0gICAgc3RhdGljIGNvbnN0IFF1
YWxpZmllZE5hbWUmIGNsYXNzRWxlbWVudFRhZ05hbWUoKQotICAgIHsKLSAgICAgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChRdWFsaWZpZWROYW1lLCBjVGFnLCAobnVsbEF0b20sICJjIiwgbnVsbEF0
b20pKTsKLSAgICAgICAgcmV0dXJuIGNUYWc7Ci0gICAgfQotCi0gICAgc3RhdGljIGNvbnN0IFF1
YWxpZmllZE5hbWUmIHZvaWNlQXR0cmlidXRlTmFtZSgpCi0gICAgewotICAgICAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKFF1YWxpZmllZE5hbWUsIHZvaWNlQXR0ciwgKG51bGxBdG9tLCAidm9pY2Ui
LCBudWxsQXRvbSkpOwotICAgICAgICByZXR1cm4gdm9pY2VBdHRyOwotICAgIH0KLQotICAgIHN0
YXRpYyBjb25zdCBRdWFsaWZpZWROYW1lJiBsYW5nQXR0cmlidXRlTmFtZSgpCi0gICAgewotICAg
ICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFF1YWxpZmllZE5hbWUsIHZvaWNlQXR0ciwgKG51bGxB
dG9tLCAibGFuZyIsIG51bGxBdG9tKSk7Ci0gICAgICAgIHJldHVybiB2b2ljZUF0dHI7Ci0gICAg
fQotCiAgICAgdmlydHVhbCB+VGV4dFRyYWNrQ3VlKCk7CiAKICAgICBzdGF0aWMgY29uc3QgQXRv
bWljU3RyaW5nJiBhbGxOb2Rlc1NoYWRvd1BzZXVkb0lkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9XZWJWVFRFbGVtZW50LmNwcAppbmRleCAyZTg5N2MzLi5hMDRlMmI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5jcHAKQEAgLTMzLDIwICszMyw4
OCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdlYlZUVEVsZW1lbnQ6OldlYlZUVEVsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQotICAg
IDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCi0gICAgLCBtX3dlYlZUVE5vZGVUeXBl
KFdlYlZUVE5vZGVUeXBlTm9uZSkKK3N0YXRpYyBRdWFsaWZpZWROYW1lJiBub2RlVHlwZVRvVGFn
TmFtZShXZWJWVFROb2RlVHlwZSBub2RlVHlwZSkKIHsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KFF1YWxpZmllZE5hbWUsIGNUYWcsIChudWxsQXRvbSwgImMiLCBudWxsQXRvbSkpOworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoUXVhbGlmaWVkTmFtZSwgdlRhZywgKG51bGxBdG9tLCAidiIsIG51
bGxBdG9tKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChRdWFsaWZpZWROYW1lLCBsYW5nVGFn
LCAobnVsbEF0b20sICJsYW5nIiwgbnVsbEF0b20pKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KFF1YWxpZmllZE5hbWUsIGJUYWcsIChudWxsQXRvbSwgImIiLCBudWxsQXRvbSkpOworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoUXVhbGlmaWVkTmFtZSwgdVRhZywgKG51bGxBdG9tLCAidSIsIG51
bGxBdG9tKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChRdWFsaWZpZWROYW1lLCBpVGFnLCAo
bnVsbEF0b20sICJpIiwgbnVsbEF0b20pKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFF1YWxp
ZmllZE5hbWUsIHJ1YnlUYWcsIChudWxsQXRvbSwgInJ1YnkiLCBudWxsQXRvbSkpOworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoUXVhbGlmaWVkTmFtZSwgcnRUYWcsIChudWxsQXRvbSwgInJ0Iiwg
bnVsbEF0b20pKTsKKyAgICBzd2l0Y2ggKG5vZGVUeXBlKSB7CisgICAgY2FzZSBXZWJWVFROb2Rl
VHlwZUNsYXNzOgorICAgICAgICByZXR1cm4gY1RhZzsKKyAgICBjYXNlIFdlYlZUVE5vZGVUeXBl
SXRhbGljOgorICAgICAgICByZXR1cm4gaVRhZzsKKyAgICBjYXNlIFdlYlZUVE5vZGVUeXBlTGFu
Z3VhZ2U6CisgICAgICAgIHJldHVybiBsYW5nVGFnOworICAgIGNhc2UgV2ViVlRUTm9kZVR5cGVC
b2xkOgorICAgICAgICByZXR1cm4gYlRhZzsKKyAgICBjYXNlIFdlYlZUVE5vZGVUeXBlVW5kZXJs
aW5lOgorICAgICAgICByZXR1cm4gdVRhZzsKKyAgICBjYXNlIFdlYlZUVE5vZGVUeXBlUnVieToK
KyAgICAgICAgcmV0dXJuIHJ1YnlUYWc7CisgICAgY2FzZSBXZWJWVFROb2RlVHlwZVJ1YnlUZXh0
OgorICAgICAgICByZXR1cm4gcnRUYWc7CisgICAgY2FzZSBXZWJWVFROb2RlVHlwZVZvaWNlOgor
ICAgICAgICByZXR1cm4gdlRhZzsKKyAgICBjYXNlIFdlYlZUVE5vZGVUeXBlTm9uZToKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBjVGFnOyAvLyBNYWtlIHRo
ZSBjb21waWxlciBoYXBweS4KKyAgICB9CiB9CiAKLVBhc3NSZWZQdHI8V2ViVlRURWxlbWVudD4g
V2ViVlRURWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50KiBkb2N1bWVudCkKK1dlYlZUVEVsZW1lbnQ6OldlYlZUVEVsZW1lbnQoV2ViVlRUTm9kZVR5
cGUgbm9kZVR5cGUsIERvY3VtZW50KiBkb2N1bWVudCkKKyAgICA6IEVsZW1lbnQobm9kZVR5cGVU
b1RhZ05hbWUobm9kZVR5cGUpLCBkb2N1bWVudCwgQ3JlYXRlRWxlbWVudCkKKyAgICAsIG1faXNQ
YXN0Tm9kZSgwKQorICAgICwgbV93ZWJWVFROb2RlVHlwZShub2RlVHlwZSkKIHsKLSAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFdlYlZUVEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKK30KKwor
UGFzc1JlZlB0cjxXZWJWVFRFbGVtZW50PiBXZWJWVFRFbGVtZW50OjpjcmVhdGUoV2ViVlRUTm9k
ZVR5cGUgbm9kZVR5cGUsIERvY3VtZW50KiBkb2N1bWVudCkKK3sKKyAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFdlYlZUVEVsZW1lbnQobm9kZVR5cGUsIGRvY3VtZW50KSk7CiB9CiAKIFBhc3NSZWZQ
dHI8RWxlbWVudD4gV2ViVlRURWxlbWVudDo6Y2xvbmVFbGVtZW50V2l0aG91dEF0dHJpYnV0ZXNB
bmRDaGlsZHJlbigpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZSh0YWdRTmFtZSgpLCBkb2N1bWVudCgp
KTsKKyAgICByZXR1cm4gY3JlYXRlKHN0YXRpY19jYXN0PFdlYlZUVE5vZGVUeXBlPihtX3dlYlZU
VE5vZGVUeXBlKSwgZG9jdW1lbnQoKSk7Cit9CisKK1Bhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IFdl
YlZUVEVsZW1lbnQ6OmNyZWF0ZUVxdWl2YWxlbnRIVE1MRWxlbWVudChEb2N1bWVudCogZG9jdW1l
bnQpCit7CisgICAgUmVmUHRyPEhUTUxFbGVtZW50PiBodG1sRWxlbWVudDsKKyAgICBzd2l0Y2gg
KG1fd2ViVlRUTm9kZVR5cGUpIHsKKyAgICBjYXNlIFdlYlZUVE5vZGVUeXBlQ2xhc3M6CisgICAg
Y2FzZSBXZWJWVFROb2RlVHlwZUxhbmd1YWdlOgorICAgIGNhc2UgV2ViVlRUTm9kZVR5cGVWb2lj
ZToKKyAgICAgICAgaHRtbEVsZW1lbnQgPSBIVE1MRWxlbWVudDo6Y3JlYXRlKEhUTUxOYW1lczo6
c3BhblRhZywgZG9jdW1lbnQpOworICAgICAgICBodG1sRWxlbWVudC5nZXQoKS0+c2V0QXR0cmli
dXRlKEhUTUxOYW1lczo6dGl0bGVBdHRyLCBnZXRBdHRyaWJ1dGUodm9pY2VBdHRyaWJ1dGVOYW1l
KCkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJWVFROb2RlVHlwZUl0YWxpYzoKKyAg
ICAgICAgaHRtbEVsZW1lbnQgPSBIVE1MRWxlbWVudDo6Y3JlYXRlKEhUTUxOYW1lczo6aVRhZywg
ZG9jdW1lbnQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdlYlZUVE5vZGVUeXBlQm9sZDoK
KyAgICAgICAgaHRtbEVsZW1lbnQgPSBIVE1MRWxlbWVudDo6Y3JlYXRlKEhUTUxOYW1lczo6YlRh
ZywgZG9jdW1lbnQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdlYlZUVE5vZGVUeXBlVW5k
ZXJsaW5lOgorICAgICAgICBodG1sRWxlbWVudCA9IEhUTUxFbGVtZW50OjpjcmVhdGUoSFRNTE5h
bWVzOjp1VGFnLCBkb2N1bWVudCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2ViVlRUTm9k
ZVR5cGVSdWJ5OgorICAgICAgICBodG1sRWxlbWVudCA9IEhUTUxFbGVtZW50OjpjcmVhdGUoSFRN
TE5hbWVzOjpydWJ5VGFnLCBkb2N1bWVudCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2Vi
VlRUTm9kZVR5cGVSdWJ5VGV4dDoKKyAgICAgICAgaHRtbEVsZW1lbnQgPSBIVE1MRWxlbWVudDo6
Y3JlYXRlKEhUTUxOYW1lczo6cnRUYWcsIGRvY3VtZW50KTsKKyAgICAgICAgYnJlYWs7CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgaHRt
bEVsZW1lbnQuZ2V0KCktPnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmxhbmdBdHRyLCBnZXRBdHRy
aWJ1dGUobGFuZ0F0dHJpYnV0ZU5hbWUoKSkpOworICAgIGh0bWxFbGVtZW50LmdldCgpLT5zZXRB
dHRyaWJ1dGUoSFRNTE5hbWVzOjpjbGFzc0F0dHIsIGdldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmNs
YXNzQXR0cikpOworICAgIHJldHVybiBodG1sRWxlbWVudDsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuaAppbmRleCBk
M2ZlMWIyLi44MmY5NzBmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9X
ZWJWVFRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVt
ZW50LmgKQEAgLTMxLDIyICszMSw1MSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gV2Vi
VlRUTm9kZVR5cGUgewogICAgIFdlYlZUVE5vZGVUeXBlTm9uZSA9IDAsCi0gICAgV2ViVlRUTm9k
ZVR5cGVGdXR1cmUsCi0gICAgV2ViVlRUTm9kZVR5cGVQYXN0CisgICAgV2ViVlRUTm9kZVR5cGVD
bGFzcywKKyAgICBXZWJWVFROb2RlVHlwZUl0YWxpYywKKyAgICBXZWJWVFROb2RlVHlwZUxhbmd1
YWdlLAorICAgIFdlYlZUVE5vZGVUeXBlQm9sZCwKKyAgICBXZWJWVFROb2RlVHlwZVVuZGVybGlu
ZSwKKyAgICBXZWJWVFROb2RlVHlwZVJ1YnksCisgICAgV2ViVlRUTm9kZVR5cGVSdWJ5VGV4dCwK
KyAgICBXZWJWVFROb2RlVHlwZVZvaWNlCiB9OwogCi1jbGFzcyBXZWJWVFRFbGVtZW50IDogcHVi
bGljIEhUTUxFbGVtZW50IHsKK2NsYXNzIFdlYlZUVEVsZW1lbnQgOiBwdWJsaWMgRWxlbWVudCB7
CiBwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViVlRURWxlbWVudD4gY3JlYXRlKGNv
bnN0IFdlYlZUVE5vZGVUeXBlLCBEb2N1bWVudCopOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdl
YlZUVEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKKyAg
ICBQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBjcmVhdGVFcXVpdmFsZW50SFRNTEVsZW1lbnQoRG9j
dW1lbnQqKTsKKwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxFbGVtZW50PiBjbG9uZUVsZW1lbnRX
aXRob3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKCkgT1ZFUlJJREU7CiAKLSAgICB2b2lkIHNldFdl
YlZUVE5vZGVUeXBlKFdlYlZUVE5vZGVUeXBlIHR5cGUpIHsgbV93ZWJWVFROb2RlVHlwZSA9IHR5
cGU7IH0KLSAgICBXZWJWVFROb2RlVHlwZSB3ZWJWVFROb2RlVHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fd2ViVlRUTm9kZVR5cGU7IH0KKyAgICB2b2lkIHNldFdlYlZUVE5vZGVUeXBlKFdlYlZUVE5v
ZGVUeXBlIHR5cGUpIHsgbV93ZWJWVFROb2RlVHlwZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPih0
eXBlKTsgfQorICAgIFdlYlZUVE5vZGVUeXBlIHdlYlZUVE5vZGVUeXBlKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8V2ViVlRUTm9kZVR5cGU+KG1fd2ViVlRUTm9kZVR5cGUpOyB9CisKKyAg
ICBib29sIGlzUGFzdE5vZGUoKSBjb25zdCB7IHJldHVybiBtX2lzUGFzdE5vZGU7IH0KKyAgICB2
b2lkIHNldElzUGFzdE5vZGUoYm9vbCB2YWx1ZSkgeyBtX2lzUGFzdE5vZGUgPSB2YWx1ZTsgfQor
CiAgICAgdmlydHVhbCBib29sIGlzV2ViVlRURWxlbWVudCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0
dXJuIHRydWU7IH0KIAorICAgIHN0YXRpYyBjb25zdCBRdWFsaWZpZWROYW1lJiB2b2ljZUF0dHJp
YnV0ZU5hbWUoKQorICAgIHsKKyAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChRdWFsaWZpZWRO
YW1lLCB2b2ljZUF0dHIsIChudWxsQXRvbSwgInZvaWNlIiwgbnVsbEF0b20pKTsKKyAgICAgICAg
cmV0dXJuIHZvaWNlQXR0cjsKKyAgICB9CisgICAgCisgICAgc3RhdGljIGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGxhbmdBdHRyaWJ1dGVOYW1lKCkKKyAgICB7CisgICAgICAgIERFRklORV9TVEFUSUNf
TE9DQUwoUXVhbGlmaWVkTmFtZSwgdm9pY2VBdHRyLCAobnVsbEF0b20sICJsYW5nIiwgbnVsbEF0
b20pKTsKKyAgICAgICAgcmV0dXJuIHZvaWNlQXR0cjsKKyAgICB9CisKIHByaXZhdGU6CiAgICAg
V2ViVlRURWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKLSAgICBXZWJW
VFROb2RlVHlwZSBtX3dlYlZUVE5vZGVUeXBlOworICAgIFdlYlZUVEVsZW1lbnQoV2ViVlRUTm9k
ZVR5cGUsIERvY3VtZW50Kik7CisKKyAgICB1bnNpZ25lZCBtX2lzUGFzdE5vZGUgOiAxOworICAg
IHVuc2lnbmVkIG1fd2ViVlRUTm9kZVR5cGUgOiA0OworICAgIAogfTsKIAogaW5saW5lIFdlYlZU
VEVsZW1lbnQqIHRvV2ViVlRURWxlbWVudChOb2RlKiBub2RlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9XZWJWVFRQYXJzZXIuY3BwCmluZGV4IDZhMThjMGMuLmY4MzUwNjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKQEAgLTM0Miw5ICszNDIsMzMg
QEAgZG91YmxlIFdlYlZUVFBhcnNlcjo6Y29sbGVjdFRpbWVTdGFtcChjb25zdCBTdHJpbmcmIGxp
bmUsIHVuc2lnbmVkKiBwb3NpdGlvbikKICAgICByZXR1cm4gKHZhbHVlMSAqIHNlY29uZHNQZXJI
b3VyKSArICh2YWx1ZTIgKiBzZWNvbmRzUGVyTWludXRlKSArIHZhbHVlMyArICh2YWx1ZTQgKiBz
ZWNvbmRzUGVyTWlsbGlzZWNvbmQpOwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgaXNMYW5nVG9r
ZW4oV2ViVlRUVG9rZW4mIHRva2VuKQorc3RhdGljIFdlYlZUVE5vZGVUeXBlIHRva2VuVG9Ob2Rl
VHlwZShXZWJWVFRUb2tlbiYgdG9rZW4pCiB7Ci0gICAgcmV0dXJuIHRva2VuLm5hbWUoKS5zaXpl
KCkgPT0gNCAmJiB0b2tlbi5uYW1lKClbMF0gPT0gJ2wnICYmIHRva2VuLm5hbWUoKVsxXSA9PSAn
YScgJiYgdG9rZW4ubmFtZSgpWzJdID09ICduJyAmJiB0b2tlbi5uYW1lKClbM10gPT0gJ2cnOwor
ICAgIHN3aXRjaCAodG9rZW4ubmFtZSgpLnNpemUoKSkgeworICAgIGNhc2UgMToKKyAgICAgICAg
aWYgKHRva2VuLm5hbWUoKVswXSA9PSAnYycpCisgICAgICAgICAgICByZXR1cm4gV2ViVlRUTm9k
ZVR5cGVDbGFzczsKKyAgICAgICAgaWYgKHRva2VuLm5hbWUoKVswXSA9PSAndicpCisgICAgICAg
ICAgICByZXR1cm4gV2ViVlRUTm9kZVR5cGVWb2ljZTsKKyAgICAgICAgaWYgKHRva2VuLm5hbWUo
KVswXSA9PSAnYicpCisgICAgICAgICAgICByZXR1cm4gV2ViVlRUTm9kZVR5cGVCb2xkOworICAg
ICAgICBpZiAodG9rZW4ubmFtZSgpWzBdID09ICdpJykKKyAgICAgICAgICAgIHJldHVybiBXZWJW
VFROb2RlVHlwZUl0YWxpYzsKKyAgICAgICAgaWYgKHRva2VuLm5hbWUoKVswXSA9PSAndScpCisg
ICAgICAgICAgICByZXR1cm4gV2ViVlRUTm9kZVR5cGVVbmRlcmxpbmU7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgMjoKKyAgICAgICAgaWYgKHRva2VuLm5hbWUoKVswXSA9PSAncicgJiYgdG9r
ZW4ubmFtZSgpWzFdID09ICd0JykKKyAgICAgICAgICAgIHJldHVybiBXZWJWVFROb2RlVHlwZVJ1
YnlUZXh0OworICAgICAgICBicmVhazsKKyAgICBjYXNlIDQ6CisgICAgICAgIGlmICh0b2tlbi5u
YW1lKClbMF0gPT0gJ3InICYmIHRva2VuLm5hbWUoKVsxXSA9PSAndScgJiYgdG9rZW4ubmFtZSgp
WzJdID09ICdiJyAmJiB0b2tlbi5uYW1lKClbM10gPT0gJ3knKQorICAgICAgICAgICAgcmV0dXJu
IFdlYlZUVE5vZGVUeXBlUnVieTsKKyAgICAgICAgaWYgKHRva2VuLm5hbWUoKVswXSA9PSAnbCcg
JiYgdG9rZW4ubmFtZSgpWzFdID09ICdhJyAmJiB0b2tlbi5uYW1lKClbMl0gPT0gJ24nICYmIHRv
a2VuLm5hbWUoKVszXSA9PSAnZycpCisgICAgICAgICAgICByZXR1cm4gV2ViVlRUTm9kZVR5cGVM
YW5ndWFnZTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiBXZWJWVFROb2RlVHlw
ZU5vbmU7CiB9CiAKIHZvaWQgV2ViVlRUUGFyc2VyOjpjb25zdHJ1Y3RUcmVlRnJvbVRva2VuKERv
Y3VtZW50KiBkb2N1bWVudCkKQEAgLTM2Myw0MyArMzg3LDM2IEBAIHZvaWQgV2ViVlRUUGFyc2Vy
Ojpjb25zdHJ1Y3RUcmVlRnJvbVRva2VuKERvY3VtZW50KiBkb2N1bWVudCkKICAgICB9CiAgICAg
Y2FzZSBXZWJWVFRUb2tlblR5cGVzOjpTdGFydFRhZzogewogICAgICAgICBSZWZQdHI8V2ViVlRU
RWxlbWVudD4gY2hpbGQ7Ci0gICAgICAgIGlmIChpc1JlY29nbml6ZWRUYWcodG9rZW5UYWdOYW1l
KSkKLSAgICAgICAgICAgIGNoaWxkID0gV2ViVlRURWxlbWVudDo6Y3JlYXRlKHRhZ05hbWUsIGRv
Y3VtZW50KTsKLSAgICAgICAgZWxzZSBpZiAobV90b2tlbi5uYW1lKCkuc2l6ZSgpID09IDEgJiYg
bV90b2tlbi5uYW1lKClbMF0gPT0gJ2MnKQotICAgICAgICAgICAgY2hpbGQgPSBXZWJWVFRFbGVt
ZW50OjpjcmVhdGUoVGV4dFRyYWNrQ3VlOjpjbGFzc0VsZW1lbnRUYWdOYW1lKCksIGRvY3VtZW50
KTsKLSAgICAgICAgZWxzZSBpZiAobV90b2tlbi5uYW1lKCkuc2l6ZSgpID09IDEgJiYgbV90b2tl
bi5uYW1lKClbMF0gPT0gJ3YnKQotICAgICAgICAgICAgY2hpbGQgPSBXZWJWVFRFbGVtZW50Ojpj
cmVhdGUoVGV4dFRyYWNrQ3VlOjp2b2ljZUVsZW1lbnRUYWdOYW1lKCksIGRvY3VtZW50KTsKLSAg
ICAgICAgZWxzZSBpZiAoaXNMYW5nVG9rZW4obV90b2tlbikpCi0gICAgICAgICAgICBjaGlsZCA9
IFdlYlZUVEVsZW1lbnQ6OmNyZWF0ZShUZXh0VHJhY2tDdWU6OmxhbmdFbGVtZW50VGFnTmFtZSgp
LCBkb2N1bWVudCk7Ci0KKyAgICAgICAgV2ViVlRUTm9kZVR5cGUgbm9kZVR5cGUgPSB0b2tlblRv
Tm9kZVR5cGUobV90b2tlbik7CisgICAgICAgIGlmIChub2RlVHlwZSAhPSBXZWJWVFROb2RlVHlw
ZU5vbmUpCisgICAgICAgICAgICBjaGlsZCA9IFdlYlZUVEVsZW1lbnQ6OmNyZWF0ZShub2RlVHlw
ZSwgZG9jdW1lbnQpOwogICAgICAgICBpZiAoY2hpbGQpIHsKICAgICAgICAgICAgIGlmIChtX3Rv
a2VuLmNsYXNzZXMoKS5zaXplKCkgPiAwKQogICAgICAgICAgICAgICAgIGNoaWxkLT5zZXRBdHRy
aWJ1dGUoY2xhc3NBdHRyLCBBdG9taWNTdHJpbmcobV90b2tlbi5jbGFzc2VzKCkuZGF0YSgpLCBt
X3Rva2VuLmNsYXNzZXMoKS5zaXplKCkpKTsKLSAgICAgICAgICAgIGlmIChjaGlsZC0+aGFzVGFn
TmFtZShUZXh0VHJhY2tDdWU6OnZvaWNlRWxlbWVudFRhZ05hbWUoKSkpCi0gICAgICAgICAgICAg
ICAgY2hpbGQtPnNldEF0dHJpYnV0ZShUZXh0VHJhY2tDdWU6OnZvaWNlQXR0cmlidXRlTmFtZSgp
LCBBdG9taWNTdHJpbmcobV90b2tlbi5hbm5vdGF0aW9uKCkuZGF0YSgpLCBtX3Rva2VuLmFubm90
YXRpb24oKS5zaXplKCkpKTsKLSAgICAgICAgICAgIGlmIChjaGlsZC0+aGFzVGFnTmFtZShUZXh0
VHJhY2tDdWU6OmxhbmdFbGVtZW50VGFnTmFtZSgpKSkKKworICAgICAgICAgICAgaWYgKGNoaWxk
LT53ZWJWVFROb2RlVHlwZSgpID09IFdlYlZUVE5vZGVUeXBlVm9pY2UpCisgICAgICAgICAgICAg
ICAgY2hpbGQtPnNldEF0dHJpYnV0ZShXZWJWVFRFbGVtZW50Ojp2b2ljZUF0dHJpYnV0ZU5hbWUo
KSwgQXRvbWljU3RyaW5nKG1fdG9rZW4uYW5ub3RhdGlvbigpLmRhdGEoKSwgbV90b2tlbi5hbm5v
dGF0aW9uKCkuc2l6ZSgpKSk7CisgICAgICAgICAgICBlbHNlIGlmIChjaGlsZC0+d2ViVlRUTm9k
ZVR5cGUoKSA9PSBXZWJWVFROb2RlVHlwZUxhbmd1YWdlKQogICAgICAgICAgICAgICAgIG1fbGFu
Z3VhZ2VTdGFjay5hcHBlbmQoQXRvbWljU3RyaW5nKG1fdG9rZW4uYW5ub3RhdGlvbigpLmRhdGEo
KSwgbV90b2tlbi5hbm5vdGF0aW9uKCkuc2l6ZSgpKSk7CisKICAgICAgICAgICAgIGlmICghbV9s
YW5ndWFnZVN0YWNrLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBjaGlsZC0+c2V0QXR0cmli
dXRlKFRleHRUcmFja0N1ZTo6bGFuZ0F0dHJpYnV0ZU5hbWUoKSwgbV9sYW5ndWFnZVN0YWNrLmxh
c3QoKSk7CisgICAgICAgICAgICAgICAgY2hpbGQtPnNldEF0dHJpYnV0ZShXZWJWVFRFbGVtZW50
OjpsYW5nQXR0cmlidXRlTmFtZSgpLCBtX2xhbmd1YWdlU3RhY2subGFzdCgpKTsKKwogICAgICAg
ICAgICAgbV9jdXJyZW50Tm9kZS0+cGFyc2VyQXBwZW5kQ2hpbGQoY2hpbGQpOwogICAgICAgICAg
ICAgbV9jdXJyZW50Tm9kZSA9IGNoaWxkOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAg
IH0KLSAgICBjYXNlIFdlYlZUVFRva2VuVHlwZXM6OkVuZFRhZzoKLSAgICAgICAgaWYgKGlzUmVj
b2duaXplZFRhZyh0b2tlblRhZ05hbWUpCi0gICAgICAgICAgICB8fCAobV90b2tlbi5uYW1lKCku
c2l6ZSgpID09IDEgJiYgbV90b2tlbi5uYW1lKClbMF0gPT0gJ2MnKQotICAgICAgICAgICAgfHwg
KG1fdG9rZW4ubmFtZSgpLnNpemUoKSA9PSAxICYmIG1fdG9rZW4ubmFtZSgpWzBdID09ICd2Jykp
IHsKLSAgICAgICAgICAgIGlmIChtX2N1cnJlbnROb2RlLT5wYXJlbnROb2RlKCkpCi0gICAgICAg
ICAgICAgICAgbV9jdXJyZW50Tm9kZSA9IG1fY3VycmVudE5vZGUtPnBhcmVudE5vZGUoKTsKLSAg
ICAgICAgfQotICAgICAgICBpZiAoaXNMYW5nVG9rZW4obV90b2tlbikpIHsKLSAgICAgICAgICAg
IGlmIChtX2N1cnJlbnROb2RlLT5oYXNUYWdOYW1lKFRleHRUcmFja0N1ZTo6bGFuZ0VsZW1lbnRU
YWdOYW1lKCkpKQorICAgIGNhc2UgV2ViVlRUVG9rZW5UeXBlczo6RW5kVGFnOiB7CisgICAgICAg
IFdlYlZUVE5vZGVUeXBlIG5vZGVUeXBlID0gdG9rZW5Ub05vZGVUeXBlKG1fdG9rZW4pOworICAg
ICAgICBpZiAobm9kZVR5cGUgIT0gV2ViVlRUTm9kZVR5cGVOb25lKSB7CisgICAgICAgICAgICBp
ZiAobm9kZVR5cGUgPT0gV2ViVlRUTm9kZVR5cGVMYW5ndWFnZSAmJiBtX2N1cnJlbnROb2RlLT5p
c1dlYlZUVEVsZW1lbnQoKSAmJiB0b1dlYlZUVEVsZW1lbnQobV9jdXJyZW50Tm9kZS5nZXQoKSkt
PndlYlZUVE5vZGVUeXBlKCkgPT0gV2ViVlRUTm9kZVR5cGVMYW5ndWFnZSkKICAgICAgICAgICAg
ICAgICBtX2xhbmd1YWdlU3RhY2sucmVtb3ZlTGFzdCgpOwogICAgICAgICAgICAgaWYgKG1fY3Vy
cmVudE5vZGUtPnBhcmVudE5vZGUoKSkKICAgICAgICAgICAgICAgICBtX2N1cnJlbnROb2RlID0g
bV9jdXJyZW50Tm9kZS0+cGFyZW50Tm9kZSgpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwor
ICAgIH0KICAgICBjYXNlIFdlYlZUVFRva2VuVHlwZXM6OlRpbWVzdGFtcFRhZzogewogICAgICAg
ICB1bnNpZ25lZCBwb3NpdGlvbiA9IDA7CiAgICAgICAgIGRvdWJsZSB0aW1lID0gY29sbGVjdFRp
bWVTdGFtcChtX3Rva2VuLmNoYXJhY3RlcnMoKS5kYXRhKCksICZwb3NpdGlvbik7Cg==
</data>
<flag name="commit-queue"
          id="204731"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185635</attachid>
            <date>2013-01-30 17:37:39 -0800</date>
            <delta_ts>2013-01-31 15:07:03 -0800</delta_ts>
            <desc>Proposed fix 0.5</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>22635</size>
            <attacher name="Dima Gorbik">dgorbik</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwOGVjNGExLi5iM2RlMTAwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMDEt
MjggIERpbWEgR29yYmlrICA8ZGdvcmJpa0BhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lP
TihyMTQwMjMxKTogbWVkaWEgdHJhY2sgbGF5b3V0IHRlc3RzIGNyYXNoaW5nCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDc1NzkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVt
L1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMTMtMDEtMzAgIFBoaWxpcCBSb2dlcnMgIDxwZHJAZ29v
Z2xlLmNvbT4KIAogICAgICAgICBVcGRhdGUgY2hyb21pdW0tbWFjIHN2Zy96b29tIHRlc3QgZXhw
ZWN0YXRpb25zIGFmdGVyIHIxNDEzMDMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGQ3YjBkM2EuLjAyNmVlZmUgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTAxLDExICsxMDEs
NiBAQCB3ZWJraXQub3JnL2IvMTA3NTg3IFsgV2luNyBEZWJ1ZyBdIHBsYXRmb3JtL2Nocm9taXVt
L3ZpcnR1YWwvZ3B1L2Zhc3QvaGlkcGkvZm9jdQogY3JidWcuY29tLzI0MTgyIFsgTWFjIERlYnVn
IF0gZmFzdC9mcmFtZXMvcmVtb3ZlLWZyYW1lLXdpdGgtc2Nyb2xsYmFycy1jcmFzaC5odG1sIFsg
UGFzcyBTbG93IF0KIGNyYnVnLmNvbS8yNDE4MiBbIE1hYyBEZWJ1ZyBdIGZhc3QvZm9ybXMvcG9z
dC1wb3B1cC1uby1tdWx0aXBsZS13aW5kb3dzLmh0bWwgWyBQYXNzIFNsb3cgXQogCi0jIENyYXNo
aW5nIGFmdGVyIHIxNDAyMzEsIHNlZSBidWcgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwNzU3OQotd2Via2l0Lm9yZy9iLzEwNjg1MyBbIERlYnVnIF0gbWVkaWEvdHJh
Y2svdHJhY2stY3NzLWN1ZS1saWZldGltZS5odG1sIFsgUGFzcyBUaW1lb3V0IENyYXNoIF0KLXdl
YmtpdC5vcmcvYi8xMDgwMjQgWyBEZWJ1ZyBdIG1lZGlhL3RyYWNrL3RyYWNrLWNzcy1tYXRjaGlu
Zy10aW1lc3RhbXBzLmh0bWwgWyBDcmFzaCBdCi13ZWJraXQub3JnL2IvMTA4MDI0IFsgRGVidWcg
XSBtZWRpYS90cmFjay90cmFjay1jc3MtbWF0Y2hpbmctbGFuZy5odG1sIFsgQ3Jhc2ggXQotCiAj
IFRoZXNlIHRlc3RzIHN0YXJ0ZWQgYmVpbmcgc2xvdyB3aGVuIHdlIHN3aXRjaGVkIHRvIERSVC4K
IHdlYmtpdC5vcmcvYi85MDQ4OCBbIERlYnVnIF0gaW5zcGVjdG9yIFsgUGFzcyBTbG93IF0KIHdl
YmtpdC5vcmcvYi85MDQ4OCBbIERlYnVnIF0gaHR0cC90ZXN0cy9pbnNwZWN0b3IgWyBQYXNzIFNs
b3cgXQpAQCAtNDMzOSw5ICs0MzM0LDYgQEAgd2Via2l0Lm9yZy9iLzEwNzMxNiBbIFdpbiBEZWJ1
ZyBdIGZhc3QvaW5saW5lL2ZpeGVkLXBvcy1tb3Zlcy13aXRoLWFic3Bvcy1pbmxpbmUKIHdlYmtp
dC5vcmcvYi8xMDczMjggaHR0cC90ZXN0cy9jYWNoZS9jYW5jZWwtbXVsdGlwbGUtcG9zdC14aHJz
Lmh0bWwgWyBNaXNzaW5nIF0KIHdlYmtpdC5vcmcvYi8xMDczNDEgWyBEZWJ1ZyBdIGluc3BlY3Rv
ci9wcm9maWxlci9tZW1vcnktaW5zdHJ1bWVudGF0aW9uLWNhY2hlZC1pbWFnZXMuaHRtbCBbIEZh
aWx1cmUgXQogCi13ZWJraXQub3JnL2IvMTA3NTc5IFsgRGVidWcgXSBtZWRpYS90cmFjay90cmFj
ay1jc3MtbWF0Y2hpbmcuaHRtbCBbIENyYXNoIF0KLXdlYmtpdC5vcmcvYi8xMDc1NzkgWyBEZWJ1
ZyBdIG1lZGlhL3RyYWNrL3RyYWNrLWNzcy1wcm9wZXJ0eS13aGl0ZWxpc3QuaHRtbCBbIENyYXNo
IF0KLQogd2Via2l0Lm9yZy9iLzEwODE2MyBbIERlYnVnIF0gcGxhdGZvcm0vY2hyb21pdW0vdmly
dHVhbC9kZWZlcnJlZC9mYXN0L2ltYWdlcy9pY29uLTBjb2xvcnMuaHRtbCBbIENyYXNoIF0KIAog
IyBOZXcgY2xhbXBpbmcgbG9naWMgaW4gdGhlIHRpbGUgc2hhZGVyIHdpbGwgY2F1c2VzIHNsaWdo
dCBkaWZmcy4gVGhlc2UgaW1hZ2VzIG11c3QgYmUgcmViYXNlbGluZWQuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZTU0OGIzMi4uMzdiZTQ3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEzLTAxLTI4
ICBEaW1hIEdvcmJpayAgPGRnb3JiaWtAYXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04o
cjE0MDIzMSk6IG1lZGlhIHRyYWNrIGxheW91dCB0ZXN0cyBjcmFzaGluZworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3NTc5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2Ugd2VyZSB1c2luZyBub24tc3Rh
bmRhcmQgZWxlbWVudCBuYW1lcyB3aXRoIEhUTUxFbGVtZW50LCB3aGljaCBtYWRlIHY4IHRyeSB0
byBjYXN0CisgICAgICAgIFdlYlZUVEVsZW1lbnRzIHRvIEhUTUxVbmtub3duRWxlbWVudHMgd2hp
Y2ggd2FzIG5vdCBwb3NzaWJsZS4gU3ViY2xhc3NpbmcgRWxlbWVudCBpbnN0ZWFkCisgICAgICAg
IG9mIEhUTUxFbGVtZW50LCB0aG91Z2ggdGhpcyByZXF1aXJlcyBidWlsZGluZyBIVE1MRWxlbWVu
dHMgZnJvbSBXZWJWVFRFbGVtZW50cyBmb3IgY3JlYXRpbmcKKyAgICAgICAgYSBET00gdHJlZS4g
VGhlIGNvZGUgaGFzIGJlZW4gcmVmYWN0b3JlZCB0byBtb3ZlIFdlYlZUVCBub2RlIHR5cGUgdG8g
UXVpYWxpZmllZE5hbWUgbWFwcGluZ3MgCisgICAgICAgIGluc2lkZSB0aGUgV2ViVlRURWxlbWVu
dCBjbGFzcy4gQWxsIFdlYlZUVEVsZW1lbnRzIGluIHRoZSBzaGFkb3cgZG9tIHRyZWUgbm93IGFy
ZSBpbiB0aGUgCisgICAgICAgIG5hbWVzcGFjZSBkZWZpbmVkIGJ5ICdOdWxsQXRvbScuIFRoaXMg
cHJldmVudHMgcmVndWxhciBzdHlsZXMgZnJvbSBiZWluZyBhcHBsaWVkIHRvIDxiPiwgPGk+Cisg
ICAgICAgIGFuZCBzaW1pbGFyIHRhZ3MuIFRob3NlIGhhdmUgdG8gYmUgc3R5bGVkIHNlcGFyYXRl
bHkgd2l0aG91dCByZXVzaW5nIGV4aXN0aW5nIFF1YWxpZmllZE5hbWVzCisgICAgICAgIGFuZCB0
aGVpciBzdHlsZXMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDcy
MTQKKworICAgICAgICBVbnNraXBwaW5nIHRlc3RzIHRvIGNvdmVyIHRoaXMuCisKKyAgICAgICAg
KiBjc3MvU2VsZWN0b3JDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hl
Y2tlcjo6Y2hlY2tPbmUpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RNYXRjaGluZ1J1bGVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNhblNoYXJlU3R5bGVXaXRoRWxlbWVudCk6Cisg
ICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dFRyYWNrQ3VlOjpjb3B5V2ViVlRUTm9kZVRvRE9NVHJlZSk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0VHJhY2tDdWU6OmdldEN1ZUFzSFRNTCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJh
Y2tDdWU6OmNyZWF0ZUN1ZVJlbmRlcmluZ1RyZWUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRy
YWNrQ3VlOjptYXJrRnV0dXJlQW5kUGFzdE5vZGVzKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1Rl
eHRUcmFja0N1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpjdWVTaGFkb3dQ
c2V1ZG9JZCk6CisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Om5vZGVUeXBlVG9UYWdOYW1lKTogZ2V0IGEgUXVhbGlmaWVkTmFtZSB0byB1
c2UgaW4gdGhlIHNoYWRvdyBET00gdHJlZS4KKyAgICAgICAgKFdlYkNvcmU6OldlYlZUVEVsZW1l
bnQ6OldlYlZUVEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViVlRURWxlbWVudDo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlZUVEVsZW1lbnQ6OmNsb25lRWxlbWVudFdpdGhv
dXRBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6V2ViVlRURWxlbWVu
dDo6Y3JlYXRlRXF1aXZhbGVudEhUTUxFbGVtZW50KTogY3JlYXRlIGFuIEhUTUxFbGVtZW50IHRv
IHVzZSBpbiB0aGUgRE9NIHRyZWUuCisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRFbGVtZW50
Lmg6CisgICAgICAgIChXZWJDb3JlOjpXZWJWVFRFbGVtZW50OjpzZXRXZWJWVFROb2RlVHlwZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJWVFRFbGVtZW50Ojp3ZWJWVFROb2RlVHlwZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJWVFRFbGVtZW50Ojppc1Bhc3ROb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYlZUVEVsZW1lbnQ6OnNldElzUGFzdE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
VlRURWxlbWVudDo6dm9pY2VBdHRyaWJ1dGVOYW1lKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1dl
YlZUVFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b2tlblRvTm9kZVR5cGUpOiBkZXRl
cm1pbmUgYSBXZWJWVFQgbm9kZSB0eXBlIGZvciB0aGUgdG9rZW4uCisgICAgICAgIChXZWJDb3Jl
OjpXZWJWVFRQYXJzZXI6OmNvbnN0cnVjdFRyZWVGcm9tVG9rZW4pOgorCiAyMDEzLTAxLTMwICBN
YXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBEYXRhYmFzZUNvbnRleHQg
c2hvdWxkIGltcGxlbWVudCBUaHJlYWRTYWZlUmVmQ291bnRlZC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1Nl
bGVjdG9yQ2hlY2tlci5jcHAKaW5kZXggMWY1ZTBjMC4uZmFiNzA0OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKQEAgLTg2OSw5ICs4NjksOSBAQCBib29sIFNlbGVjdG9y
Q2hlY2tlcjo6Y2hlY2tPbmUoY29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNvbnRleHQs
IGNvbnN0IFNpYgogICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQtPmlzT3V0T2ZSYW5nZSgpOwog
I2lmIEVOQUJMRShWSURFT19UUkFDSykKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRv
RnV0dXJlQ3VlOgotICAgICAgICAgICAgcmV0dXJuIChlbGVtZW50LT5pc1dlYlZUVEVsZW1lbnQo
KSAmJiB0b1dlYlZUVEVsZW1lbnQoZWxlbWVudCktPndlYlZUVE5vZGVUeXBlKCkgPT0gV2ViVlRU
Tm9kZVR5cGVGdXR1cmUpOworICAgICAgICAgICAgcmV0dXJuIChlbGVtZW50LT5pc1dlYlZUVEVs
ZW1lbnQoKSAmJiAhdG9XZWJWVFRFbGVtZW50KGVsZW1lbnQpLT5pc1Bhc3ROb2RlKCkpOwogICAg
ICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9QYXN0Q3VlOgotICAgICAgICAgICAgcmV0dXJu
IChlbGVtZW50LT5pc1dlYlZUVEVsZW1lbnQoKSAmJiB0b1dlYlZUVEVsZW1lbnQoZWxlbWVudCkt
PndlYlZUVE5vZGVUeXBlKCkgPT0gV2ViVlRUTm9kZVR5cGVQYXN0KTsKKyAgICAgICAgICAgIHJl
dHVybiAoZWxlbWVudC0+aXNXZWJWVFRFbGVtZW50KCkgJiYgdG9XZWJWVFRFbGVtZW50KGVsZW1l
bnQpLT5pc1Bhc3ROb2RlKCkpOwogI2VuZGlmCiAKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6
UHNldWRvSG9yaXpvbnRhbDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJl
c29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCA4
ODUzODVmLi44MjUzODIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNv
bHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBAIC02
NjksNyArNjY5LDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0Y2hpbmdSdWxlcyhj
b25zdCBNYXRjaFJlcXVlc3QmIG1hdGNoUmVxdWVzdCwgUnVsZVIKICAgICB9CiAKICNpZiBFTkFC
TEUoVklERU9fVFJBQ0spCi0gICAgaWYgKG1fZWxlbWVudC0+aXNXZWJWVFRFbGVtZW50KCkgJiYg
dG9XZWJWVFRFbGVtZW50KG1fZWxlbWVudCktPndlYlZUVE5vZGVUeXBlKCkpCisgICAgaWYgKG1f
ZWxlbWVudC0+aXNXZWJWVFRFbGVtZW50KCkpCiAgICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVz
Rm9yTGlzdChtYXRjaFJlcXVlc3QucnVsZVNldC0+Y3VlUHNldWRvUnVsZXMoKSwgbWF0Y2hSZXF1
ZXN0LCBydWxlUmFuZ2UpOwogI2VuZGlmCiAgICAgLy8gQ2hlY2sgd2hldGhlciBvdGhlciB0eXBl
cyBvZiBydWxlcyBhcmUgYXBwbGljYWJsZSBpbiB0aGUgY3VycmVudCB0cmVlIHNjb3BlLiBDcml0
ZXJpYSBmb3IgdGhpczoKQEAgLTEyNzAsNyArMTI3MCw3IEBAIGJvb2wgU3R5bGVSZXNvbHZlcjo6
Y2FuU2hhcmVTdHlsZVdpdGhFbGVtZW50KFN0eWxlZEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiAg
ICAgaWYgKGVsZW1lbnQtPmlzV2ViVlRURWxlbWVudCgpICE9IG1fZWxlbWVudC0+aXNXZWJWVFRF
bGVtZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChlbGVtZW50LT5pc1dl
YlZUVEVsZW1lbnQoKSAmJiBtX2VsZW1lbnQtPmlzV2ViVlRURWxlbWVudCgpICYmIHRvV2ViVlRU
RWxlbWVudChlbGVtZW50KS0+d2ViVlRUTm9kZVR5cGUoKSAhPSB0b1dlYlZUVEVsZW1lbnQobV9l
bGVtZW50KS0+d2ViVlRUTm9kZVR5cGUoKSkKKyAgICBpZiAoZWxlbWVudC0+aXNXZWJWVFRFbGVt
ZW50KCkgJiYgbV9lbGVtZW50LT5pc1dlYlZUVEVsZW1lbnQoKSAmJiB0b1dlYlZUVEVsZW1lbnQo
ZWxlbWVudCktPmlzUGFzdE5vZGUoKSAhPSB0b1dlYlZUVEVsZW1lbnQobV9lbGVtZW50KS0+aXNQ
YXN0Tm9kZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCmluZGV4IGIwNjQyNmIuLmYzYjkzNTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKQEAgLTUwNCwxNSAr
NTA0LDEwIEBAIHZvaWQgVGV4dFRyYWNrQ3VlOjpjb3B5V2ViVlRUTm9kZVRvRE9NVHJlZShDb250
YWluZXJOb2RlKiB3ZWJWVFROb2RlLCBDb250YWluZXJOCiB7CiAgICAgZm9yIChOb2RlKiBub2Rl
ID0gd2ViVlRUTm9kZS0+Zmlyc3RDaGlsZCgpOyBub2RlOyBub2RlID0gbm9kZS0+bmV4dFNpYmxp
bmcoKSkgewogICAgICAgICBSZWZQdHI8Tm9kZT4gY2xvbmVkTm9kZTsKLSAgICAgICAgLy8gU3Bl
Y3MgcmVxdWlyZSB2b2ljZSBhbmQgY2xhc3MgV2ViVlRUIGVsZW1lbnRzIHRvIGJlIHNwYW5zIGZv
ciBET00gdHJlZXMuCi0gICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKHZvaWNlRWxlbWVudFRh
Z05hbWUoKSkgfHwgbm9kZS0+aGFzVGFnTmFtZShjbGFzc0VsZW1lbnRUYWdOYW1lKCkpIHx8IG5v
ZGUtPmhhc1RhZ05hbWUobGFuZ0VsZW1lbnRUYWdOYW1lKCkpKSB7Ci0gICAgICAgICAgICBjbG9u
ZWROb2RlID0gSFRNTFNwYW5FbGVtZW50OjpjcmVhdGUoc3BhblRhZywgc3RhdGljX2Nhc3Q8RG9j
dW1lbnQqPihtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpKTsKLSAgICAgICAgICAgIHRvRWxlbWVu
dChjbG9uZWROb2RlLmdldCgpKS0+c2V0QXR0cmlidXRlKGNsYXNzQXR0ciwgdG9FbGVtZW50KG5v
ZGUpLT5nZXRBdHRyaWJ1dGUoY2xhc3NBdHRyKSk7Ci0gICAgICAgICAgICB0b0VsZW1lbnQoY2xv
bmVkTm9kZS5nZXQoKSktPnNldEF0dHJpYnV0ZSh0aXRsZUF0dHIsIHRvRWxlbWVudChub2RlKS0+
Z2V0QXR0cmlidXRlKHZvaWNlQXR0cmlidXRlTmFtZSgpKSk7Ci0gICAgICAgICAgICB0b0VsZW1l
bnQoY2xvbmVkTm9kZS5nZXQoKSktPnNldEF0dHJpYnV0ZShsYW5nQXR0ciwgdG9FbGVtZW50KG5v
ZGUpLT5nZXRBdHRyaWJ1dGUobGFuZ0F0dHJpYnV0ZU5hbWUoKSkpOwotICAgICAgICB9IGVsc2UK
KyAgICAgICAgaWYgKG5vZGUtPmlzV2ViVlRURWxlbWVudCgpKQorICAgICAgICAgICAgY2xvbmVk
Tm9kZSA9IHRvV2ViVlRURWxlbWVudChub2RlKS0+Y3JlYXRlRXF1aXZhbGVudEhUTUxFbGVtZW50
KG93bmVyRG9jdW1lbnQoKSk7CisgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNsb25lZE5vZGUg
PSBub2RlLT5jbG9uZU5vZGUoZmFsc2UpOwotCiAgICAgICAgIHBhcmVudC0+YXBwZW5kQ2hpbGQo
Y2xvbmVkTm9kZSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAgICAgIGlmIChub2RlLT5pc0Nv
bnRhaW5lck5vZGUoKSkKICAgICAgICAgICAgIGNvcHlXZWJWVFROb2RlVG9ET01UcmVlKHRvQ29u
dGFpbmVyTm9kZShub2RlKSwgdG9Db250YWluZXJOb2RlKGNsb25lZE5vZGUuZ2V0KCkpKTsKQEAg
LTUyMiw4ICs1MTcsNyBAQCB2b2lkIFRleHRUcmFja0N1ZTo6Y29weVdlYlZUVE5vZGVUb0RPTVRy
ZWUoQ29udGFpbmVyTm9kZSogd2ViVlRUTm9kZSwgQ29udGFpbmVyTgogUGFzc1JlZlB0cjxEb2N1
bWVudEZyYWdtZW50PiBUZXh0VHJhY2tDdWU6OmdldEN1ZUFzSFRNTCgpCiB7CiAgICAgY3JlYXRl
V2ViVlRUTm9kZVRyZWUoKTsKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxE
b2N1bWVudCo+KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7Ci0gICAgUmVmUHRyPERvY3VtZW50
RnJhZ21lbnQ+IGNsb25lZEZyYWdtZW50ID0gRG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRlKGRvY3Vt
ZW50KTsKKyAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY2xvbmVkRnJhZ21lbnQgPSBEb2N1
bWVudEZyYWdtZW50OjpjcmVhdGUob3duZXJEb2N1bWVudCgpKTsKICAgICBjb3B5V2ViVlRUTm9k
ZVRvRE9NVHJlZShtX3dlYlZUVE5vZGVUcmVlLmdldCgpLCBjbG9uZWRGcmFnbWVudC5nZXQoKSk7
CiAgICAgcmV0dXJuIGNsb25lZEZyYWdtZW50LnJlbGVhc2UoKTsKIH0KQEAgLTUzMiw4ICs1MjYs
NyBAQCBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IFRleHRUcmFja0N1ZTo6Y3JlYXRlQ3Vl
UmVuZGVyaW5nVHJlZSgpCiB7CiAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNsb25lZEZy
YWdtZW50OwogICAgIGNyZWF0ZVdlYlZUVE5vZGVUcmVlKCk7Ci0gICAgRG9jdW1lbnQqIGRvY3Vt
ZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwot
ICAgIGNsb25lZEZyYWdtZW50ID0gRG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsK
KyAgICBjbG9uZWRGcmFnbWVudCA9IERvY3VtZW50RnJhZ21lbnQ6OmNyZWF0ZShvd25lckRvY3Vt
ZW50KCkpOwogICAgIG1fd2ViVlRUTm9kZVRyZWUtPmNsb25lQ2hpbGROb2RlcyhjbG9uZWRGcmFn
bWVudC5nZXQoKSk7CiAgICAgcmV0dXJuIGNsb25lZEZyYWdtZW50LnJlbGVhc2UoKTsKIH0KQEAg
LTcwOSw3ICs3MDIsNyBAQCB2b2lkIFRleHRUcmFja0N1ZTo6bWFya0Z1dHVyZUFuZFBhc3ROb2Rl
cyhDb250YWluZXJOb2RlKiByb290LCBkb3VibGUgcHJldmlvdXNUaQogICAgICAgICB9CiAgICAg
ICAgIAogICAgICAgICBpZiAoY2hpbGQtPmlzV2ViVlRURWxlbWVudCgpKSB7Ci0gICAgICAgICAg
ICB0b1dlYlZUVEVsZW1lbnQoY2hpbGQpLT5zZXRXZWJWVFROb2RlVHlwZShpc1Bhc3ROb2RlID8g
V2ViVlRUTm9kZVR5cGVQYXN0IDogV2ViVlRUTm9kZVR5cGVGdXR1cmUpOworICAgICAgICAgICAg
dG9XZWJWVFRFbGVtZW50KGNoaWxkKS0+c2V0SXNQYXN0Tm9kZShpc1Bhc3ROb2RlKTsKICAgICAg
ICAgICAgIC8vIE1ha2UgYW4gZWxlbWVuZXQgaWQgbWF0Y2ggYSBjdWUgaWQgZm9yIHN0eWxlIG1h
dGNoaW5nIHB1cnBvc2VzLgogICAgICAgICAgICAgaWYgKCFtX2lkLmlzRW1wdHkoKSkKICAgICAg
ICAgICAgICAgICB0b0VsZW1lbnQoY2hpbGQpLT5zZXRJZEF0dHJpYnV0ZShBdG9taWNTdHJpbmco
bV9pZC5jaGFyYWN0ZXJzKCksIG1faWQubGVuZ3RoKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1RleHRUcmFja0N1ZS5oCmluZGV4IDI4N2FiZWQuLjM4NTE3YWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaApAQCAtODUsMzYgKzg1LDYgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gY3VlOwogICAgIH0KIAotICAgIHN0YXRpYyBjb25zdCBRdWFsaWZpZWRO
YW1lJiBsYW5nRWxlbWVudFRhZ05hbWUoKQotICAgIHsKLSAgICAgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChRdWFsaWZpZWROYW1lLCBsYW5nVGFnLCAobnVsbEF0b20sICJsYW5nIiwgbnVsbEF0b20p
KTsKLSAgICAgICAgcmV0dXJuIGxhbmdUYWc7Ci0gICAgfQotCi0gICAgc3RhdGljIGNvbnN0IFF1
YWxpZmllZE5hbWUmIHZvaWNlRWxlbWVudFRhZ05hbWUoKQotICAgIHsKLSAgICAgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChRdWFsaWZpZWROYW1lLCB2VGFnLCAobnVsbEF0b20sICJ2IiwgbnVsbEF0
b20pKTsKLSAgICAgICAgcmV0dXJuIHZUYWc7Ci0gICAgfQotCi0gICAgc3RhdGljIGNvbnN0IFF1
YWxpZmllZE5hbWUmIGNsYXNzRWxlbWVudFRhZ05hbWUoKQotICAgIHsKLSAgICAgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChRdWFsaWZpZWROYW1lLCBjVGFnLCAobnVsbEF0b20sICJjIiwgbnVsbEF0
b20pKTsKLSAgICAgICAgcmV0dXJuIGNUYWc7Ci0gICAgfQotCi0gICAgc3RhdGljIGNvbnN0IFF1
YWxpZmllZE5hbWUmIHZvaWNlQXR0cmlidXRlTmFtZSgpCi0gICAgewotICAgICAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKFF1YWxpZmllZE5hbWUsIHZvaWNlQXR0ciwgKG51bGxBdG9tLCAidm9pY2Ui
LCBudWxsQXRvbSkpOwotICAgICAgICByZXR1cm4gdm9pY2VBdHRyOwotICAgIH0KLQotICAgIHN0
YXRpYyBjb25zdCBRdWFsaWZpZWROYW1lJiBsYW5nQXR0cmlidXRlTmFtZSgpCi0gICAgewotICAg
ICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFF1YWxpZmllZE5hbWUsIHZvaWNlQXR0ciwgKG51bGxB
dG9tLCAibGFuZyIsIG51bGxBdG9tKSk7Ci0gICAgICAgIHJldHVybiB2b2ljZUF0dHI7Ci0gICAg
fQotCiAgICAgdmlydHVhbCB+VGV4dFRyYWNrQ3VlKCk7CiAKICAgICBzdGF0aWMgY29uc3QgQXRv
bWljU3RyaW5nJiBhbGxOb2Rlc1NoYWRvd1BzZXVkb0lkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9XZWJWVFRFbGVtZW50LmNwcAppbmRleCAyZTg5N2MzLi45ODYzMzU4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5jcHAKQEAgLTMzLDIwICszMyw4
OSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdlYlZUVEVsZW1lbnQ6OldlYlZUVEVsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQotICAg
IDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCi0gICAgLCBtX3dlYlZUVE5vZGVUeXBl
KFdlYlZUVE5vZGVUeXBlTm9uZSkKK3N0YXRpYyBRdWFsaWZpZWROYW1lJiBub2RlVHlwZVRvVGFn
TmFtZShXZWJWVFROb2RlVHlwZSBub2RlVHlwZSkKIHsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KFF1YWxpZmllZE5hbWUsIGNUYWcsIChudWxsQXRvbSwgImMiLCBudWxsQXRvbSkpOworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoUXVhbGlmaWVkTmFtZSwgdlRhZywgKG51bGxBdG9tLCAidiIsIG51
bGxBdG9tKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChRdWFsaWZpZWROYW1lLCBsYW5nVGFn
LCAobnVsbEF0b20sICJsYW5nIiwgbnVsbEF0b20pKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KFF1YWxpZmllZE5hbWUsIGJUYWcsIChudWxsQXRvbSwgImIiLCBudWxsQXRvbSkpOworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoUXVhbGlmaWVkTmFtZSwgdVRhZywgKG51bGxBdG9tLCAidSIsIG51
bGxBdG9tKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChRdWFsaWZpZWROYW1lLCBpVGFnLCAo
bnVsbEF0b20sICJpIiwgbnVsbEF0b20pKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFF1YWxp
ZmllZE5hbWUsIHJ1YnlUYWcsIChudWxsQXRvbSwgInJ1YnkiLCBudWxsQXRvbSkpOworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoUXVhbGlmaWVkTmFtZSwgcnRUYWcsIChudWxsQXRvbSwgInJ0Iiwg
bnVsbEF0b20pKTsKKyAgICBzd2l0Y2ggKG5vZGVUeXBlKSB7CisgICAgY2FzZSBXZWJWVFROb2Rl
VHlwZUNsYXNzOgorICAgICAgICByZXR1cm4gY1RhZzsKKyAgICBjYXNlIFdlYlZUVE5vZGVUeXBl
SXRhbGljOgorICAgICAgICByZXR1cm4gaVRhZzsKKyAgICBjYXNlIFdlYlZUVE5vZGVUeXBlTGFu
Z3VhZ2U6CisgICAgICAgIHJldHVybiBsYW5nVGFnOworICAgIGNhc2UgV2ViVlRUTm9kZVR5cGVC
b2xkOgorICAgICAgICByZXR1cm4gYlRhZzsKKyAgICBjYXNlIFdlYlZUVE5vZGVUeXBlVW5kZXJs
aW5lOgorICAgICAgICByZXR1cm4gdVRhZzsKKyAgICBjYXNlIFdlYlZUVE5vZGVUeXBlUnVieToK
KyAgICAgICAgcmV0dXJuIHJ1YnlUYWc7CisgICAgY2FzZSBXZWJWVFROb2RlVHlwZVJ1YnlUZXh0
OgorICAgICAgICByZXR1cm4gcnRUYWc7CisgICAgY2FzZSBXZWJWVFROb2RlVHlwZVZvaWNlOgor
ICAgICAgICByZXR1cm4gdlRhZzsKKyAgICBjYXNlIFdlYlZUVE5vZGVUeXBlTm9uZToKKyAgICBk
ZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIGNU
YWc7IC8vIE1ha2UgdGhlIGNvbXBpbGVyIGhhcHB5LgorICAgIH0KIH0KIAotUGFzc1JlZlB0cjxX
ZWJWVFRFbGVtZW50PiBXZWJWVFRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQorV2ViVlRURWxlbWVudDo6V2ViVlRURWxlbWVu
dChXZWJWVFROb2RlVHlwZSBub2RlVHlwZSwgRG9jdW1lbnQqIGRvY3VtZW50KQorICAgIDogRWxl
bWVudChub2RlVHlwZVRvVGFnTmFtZShub2RlVHlwZSksIGRvY3VtZW50LCBDcmVhdGVFbGVtZW50
KQorICAgICwgbV9pc1Bhc3ROb2RlKDApCisgICAgLCBtX3dlYlZUVE5vZGVUeXBlKG5vZGVUeXBl
KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViVlRURWxlbWVudCh0YWdOYW1lLCBkb2N1
bWVudCkpOworfQorCitQYXNzUmVmUHRyPFdlYlZUVEVsZW1lbnQ+IFdlYlZUVEVsZW1lbnQ6OmNy
ZWF0ZShXZWJWVFROb2RlVHlwZSBub2RlVHlwZSwgRG9jdW1lbnQqIGRvY3VtZW50KQoreworICAg
IHJldHVybiBhZG9wdFJlZihuZXcgV2ViVlRURWxlbWVudChub2RlVHlwZSwgZG9jdW1lbnQpKTsK
IH0KIAogUGFzc1JlZlB0cjxFbGVtZW50PiBXZWJWVFRFbGVtZW50OjpjbG9uZUVsZW1lbnRXaXRo
b3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKCkKIHsKLSAgICByZXR1cm4gY3JlYXRlKHRhZ1FOYW1l
KCksIGRvY3VtZW50KCkpOworICAgIHJldHVybiBjcmVhdGUoc3RhdGljX2Nhc3Q8V2ViVlRUTm9k
ZVR5cGU+KG1fd2ViVlRUTm9kZVR5cGUpLCBkb2N1bWVudCgpKTsKK30KKworUGFzc1JlZlB0cjxI
VE1MRWxlbWVudD4gV2ViVlRURWxlbWVudDo6Y3JlYXRlRXF1aXZhbGVudEhUTUxFbGVtZW50KERv
Y3VtZW50KiBkb2N1bWVudCkKK3sKKyAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IGh0bWxFbGVtZW50
OworICAgIHN3aXRjaCAobV93ZWJWVFROb2RlVHlwZSkgeworICAgIGNhc2UgV2ViVlRUTm9kZVR5
cGVDbGFzczoKKyAgICBjYXNlIFdlYlZUVE5vZGVUeXBlTGFuZ3VhZ2U6CisgICAgY2FzZSBXZWJW
VFROb2RlVHlwZVZvaWNlOgorICAgICAgICBodG1sRWxlbWVudCA9IEhUTUxFbGVtZW50OjpjcmVh
dGUoSFRNTE5hbWVzOjpzcGFuVGFnLCBkb2N1bWVudCk7CisgICAgICAgIGh0bWxFbGVtZW50Lmdl
dCgpLT5zZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjp0aXRsZUF0dHIsIGdldEF0dHJpYnV0ZSh2b2lj
ZUF0dHJpYnV0ZU5hbWUoKSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdlYlZUVE5vZGVU
eXBlSXRhbGljOgorICAgICAgICBodG1sRWxlbWVudCA9IEhUTUxFbGVtZW50OjpjcmVhdGUoSFRN
TE5hbWVzOjppVGFnLCBkb2N1bWVudCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2ViVlRU
Tm9kZVR5cGVCb2xkOgorICAgICAgICBodG1sRWxlbWVudCA9IEhUTUxFbGVtZW50OjpjcmVhdGUo
SFRNTE5hbWVzOjpiVGFnLCBkb2N1bWVudCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2Vi
VlRUTm9kZVR5cGVVbmRlcmxpbmU6CisgICAgICAgIGh0bWxFbGVtZW50ID0gSFRNTEVsZW1lbnQ6
OmNyZWF0ZShIVE1MTmFtZXM6OnVUYWcsIGRvY3VtZW50KTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBXZWJWVFROb2RlVHlwZVJ1Ynk6CisgICAgICAgIGh0bWxFbGVtZW50ID0gSFRNTEVsZW1l
bnQ6OmNyZWF0ZShIVE1MTmFtZXM6OnJ1YnlUYWcsIGRvY3VtZW50KTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBXZWJWVFROb2RlVHlwZVJ1YnlUZXh0OgorICAgICAgICBodG1sRWxlbWVudCA9
IEhUTUxFbGVtZW50OjpjcmVhdGUoSFRNTE5hbWVzOjpydFRhZywgZG9jdW1lbnQpOworICAgICAg
ICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICB9CisKKyAgICBodG1sRWxlbWVudC5nZXQoKS0+c2V0QXR0cmlidXRlKEhUTUxOYW1lczo6bGFu
Z0F0dHIsIGdldEF0dHJpYnV0ZShsYW5nQXR0cmlidXRlTmFtZSgpKSk7CisgICAgaHRtbEVsZW1l
bnQuZ2V0KCktPnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmNsYXNzQXR0ciwgZ2V0QXR0cmlidXRl
KEhUTUxOYW1lczo6Y2xhc3NBdHRyKSk7CisgICAgcmV0dXJuIGh0bWxFbGVtZW50OwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1dlYlZUVEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxl
bWVudC5oCmluZGV4IGQzZmUxYjIuLjgyZjk3MGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1dlYlZUVEVsZW1lbnQuaApAQCAtMzEsMjIgKzMxLDUxIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogZW51bSBXZWJWVFROb2RlVHlwZSB7CiAgICAgV2ViVlRUTm9kZVR5cGVOb25lID0gMCwK
LSAgICBXZWJWVFROb2RlVHlwZUZ1dHVyZSwKLSAgICBXZWJWVFROb2RlVHlwZVBhc3QKKyAgICBX
ZWJWVFROb2RlVHlwZUNsYXNzLAorICAgIFdlYlZUVE5vZGVUeXBlSXRhbGljLAorICAgIFdlYlZU
VE5vZGVUeXBlTGFuZ3VhZ2UsCisgICAgV2ViVlRUTm9kZVR5cGVCb2xkLAorICAgIFdlYlZUVE5v
ZGVUeXBlVW5kZXJsaW5lLAorICAgIFdlYlZUVE5vZGVUeXBlUnVieSwKKyAgICBXZWJWVFROb2Rl
VHlwZVJ1YnlUZXh0LAorICAgIFdlYlZUVE5vZGVUeXBlVm9pY2UKIH07CiAKLWNsYXNzIFdlYlZU
VEVsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQgeworY2xhc3MgV2ViVlRURWxlbWVudCA6IHB1
YmxpYyBFbGVtZW50IHsKIHB1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJWVFRFbGVt
ZW50PiBjcmVhdGUoY29uc3QgV2ViVlRUTm9kZVR5cGUsIERvY3VtZW50Kik7CiAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8V2ViVlRURWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBE
b2N1bWVudCopOworICAgIFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGNyZWF0ZUVxdWl2YWxlbnRI
VE1MRWxlbWVudChEb2N1bWVudCopOworCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEVsZW1lbnQ+
IGNsb25lRWxlbWVudFdpdGhvdXRBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4oKSBPVkVSUklERTsKIAot
ICAgIHZvaWQgc2V0V2ViVlRUTm9kZVR5cGUoV2ViVlRUTm9kZVR5cGUgdHlwZSkgeyBtX3dlYlZU
VE5vZGVUeXBlID0gdHlwZTsgfQotICAgIFdlYlZUVE5vZGVUeXBlIHdlYlZUVE5vZGVUeXBlKCkg
Y29uc3QgeyByZXR1cm4gbV93ZWJWVFROb2RlVHlwZTsgfQorICAgIHZvaWQgc2V0V2ViVlRUTm9k
ZVR5cGUoV2ViVlRUTm9kZVR5cGUgdHlwZSkgeyBtX3dlYlZUVE5vZGVUeXBlID0gc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHR5cGUpOyB9CisgICAgV2ViVlRUTm9kZVR5cGUgd2ViVlRUTm9kZVR5cGUo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxXZWJWVFROb2RlVHlwZT4obV93ZWJWVFROb2Rl
VHlwZSk7IH0KKworICAgIGJvb2wgaXNQYXN0Tm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNQYXN0
Tm9kZTsgfQorICAgIHZvaWQgc2V0SXNQYXN0Tm9kZShib29sIHZhbHVlKSB7IG1faXNQYXN0Tm9k
ZSA9IHZhbHVlOyB9CisKICAgICB2aXJ0dWFsIGJvb2wgaXNXZWJWVFRFbGVtZW50KCkgY29uc3Qg
T1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQogCisgICAgc3RhdGljIGNvbnN0IFF1YWxpZmllZE5h
bWUmIHZvaWNlQXR0cmlidXRlTmFtZSgpCisgICAgeworICAgICAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKFF1YWxpZmllZE5hbWUsIHZvaWNlQXR0ciwgKG51bGxBdG9tLCAidm9pY2UiLCBudWxsQXRv
bSkpOworICAgICAgICByZXR1cm4gdm9pY2VBdHRyOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMg
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbGFuZ0F0dHJpYnV0ZU5hbWUoKQorICAgIHsKKyAgICAgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChRdWFsaWZpZWROYW1lLCB2b2ljZUF0dHIsIChudWxsQXRvbSwg
ImxhbmciLCBudWxsQXRvbSkpOworICAgICAgICByZXR1cm4gdm9pY2VBdHRyOworICAgIH0KKwog
cHJpdmF0ZToKICAgICBXZWJWVFRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCopOwotICAgIFdlYlZUVE5vZGVUeXBlIG1fd2ViVlRUTm9kZVR5cGU7CisgICAgV2ViVlRURWxl
bWVudChXZWJWVFROb2RlVHlwZSwgRG9jdW1lbnQqKTsKKworICAgIHVuc2lnbmVkIG1faXNQYXN0
Tm9kZSA6IDE7CisgICAgdW5zaWduZWQgbV93ZWJWVFROb2RlVHlwZSA6IDQ7CisgICAgCiB9Owog
CiBpbmxpbmUgV2ViVlRURWxlbWVudCogdG9XZWJWVFRFbGVtZW50KE5vZGUqIG5vZGUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKaW5kZXggNmExOGMwYy4uZjgz
NTA2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRQYXJzZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcApAQCAt
MzQyLDkgKzM0MiwzMyBAQCBkb3VibGUgV2ViVlRUUGFyc2VyOjpjb2xsZWN0VGltZVN0YW1wKGNv
bnN0IFN0cmluZyYgbGluZSwgdW5zaWduZWQqIHBvc2l0aW9uKQogICAgIHJldHVybiAodmFsdWUx
ICogc2Vjb25kc1BlckhvdXIpICsgKHZhbHVlMiAqIHNlY29uZHNQZXJNaW51dGUpICsgdmFsdWUz
ICsgKHZhbHVlNCAqIHNlY29uZHNQZXJNaWxsaXNlY29uZCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUg
Ym9vbCBpc0xhbmdUb2tlbihXZWJWVFRUb2tlbiYgdG9rZW4pCitzdGF0aWMgV2ViVlRUTm9kZVR5
cGUgdG9rZW5Ub05vZGVUeXBlKFdlYlZUVFRva2VuJiB0b2tlbikKIHsKLSAgICByZXR1cm4gdG9r
ZW4ubmFtZSgpLnNpemUoKSA9PSA0ICYmIHRva2VuLm5hbWUoKVswXSA9PSAnbCcgJiYgdG9rZW4u
bmFtZSgpWzFdID09ICdhJyAmJiB0b2tlbi5uYW1lKClbMl0gPT0gJ24nICYmIHRva2VuLm5hbWUo
KVszXSA9PSAnZyc7CisgICAgc3dpdGNoICh0b2tlbi5uYW1lKCkuc2l6ZSgpKSB7CisgICAgY2Fz
ZSAxOgorICAgICAgICBpZiAodG9rZW4ubmFtZSgpWzBdID09ICdjJykKKyAgICAgICAgICAgIHJl
dHVybiBXZWJWVFROb2RlVHlwZUNsYXNzOworICAgICAgICBpZiAodG9rZW4ubmFtZSgpWzBdID09
ICd2JykKKyAgICAgICAgICAgIHJldHVybiBXZWJWVFROb2RlVHlwZVZvaWNlOworICAgICAgICBp
ZiAodG9rZW4ubmFtZSgpWzBdID09ICdiJykKKyAgICAgICAgICAgIHJldHVybiBXZWJWVFROb2Rl
VHlwZUJvbGQ7CisgICAgICAgIGlmICh0b2tlbi5uYW1lKClbMF0gPT0gJ2knKQorICAgICAgICAg
ICAgcmV0dXJuIFdlYlZUVE5vZGVUeXBlSXRhbGljOworICAgICAgICBpZiAodG9rZW4ubmFtZSgp
WzBdID09ICd1JykKKyAgICAgICAgICAgIHJldHVybiBXZWJWVFROb2RlVHlwZVVuZGVybGluZTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAyOgorICAgICAgICBpZiAodG9rZW4ubmFtZSgpWzBd
ID09ICdyJyAmJiB0b2tlbi5uYW1lKClbMV0gPT0gJ3QnKQorICAgICAgICAgICAgcmV0dXJuIFdl
YlZUVE5vZGVUeXBlUnVieVRleHQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgNDoKKyAgICAg
ICAgaWYgKHRva2VuLm5hbWUoKVswXSA9PSAncicgJiYgdG9rZW4ubmFtZSgpWzFdID09ICd1JyAm
JiB0b2tlbi5uYW1lKClbMl0gPT0gJ2InICYmIHRva2VuLm5hbWUoKVszXSA9PSAneScpCisgICAg
ICAgICAgICByZXR1cm4gV2ViVlRUTm9kZVR5cGVSdWJ5OworICAgICAgICBpZiAodG9rZW4ubmFt
ZSgpWzBdID09ICdsJyAmJiB0b2tlbi5uYW1lKClbMV0gPT0gJ2EnICYmIHRva2VuLm5hbWUoKVsy
XSA9PSAnbicgJiYgdG9rZW4ubmFtZSgpWzNdID09ICdnJykKKyAgICAgICAgICAgIHJldHVybiBX
ZWJWVFROb2RlVHlwZUxhbmd1YWdlOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJu
IFdlYlZUVE5vZGVUeXBlTm9uZTsKIH0KIAogdm9pZCBXZWJWVFRQYXJzZXI6OmNvbnN0cnVjdFRy
ZWVGcm9tVG9rZW4oRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtMzYzLDQzICszODcsMzYgQEAgdm9p
ZCBXZWJWVFRQYXJzZXI6OmNvbnN0cnVjdFRyZWVGcm9tVG9rZW4oRG9jdW1lbnQqIGRvY3VtZW50
KQogICAgIH0KICAgICBjYXNlIFdlYlZUVFRva2VuVHlwZXM6OlN0YXJ0VGFnOiB7CiAgICAgICAg
IFJlZlB0cjxXZWJWVFRFbGVtZW50PiBjaGlsZDsKLSAgICAgICAgaWYgKGlzUmVjb2duaXplZFRh
Zyh0b2tlblRhZ05hbWUpKQotICAgICAgICAgICAgY2hpbGQgPSBXZWJWVFRFbGVtZW50OjpjcmVh
dGUodGFnTmFtZSwgZG9jdW1lbnQpOwotICAgICAgICBlbHNlIGlmIChtX3Rva2VuLm5hbWUoKS5z
aXplKCkgPT0gMSAmJiBtX3Rva2VuLm5hbWUoKVswXSA9PSAnYycpCi0gICAgICAgICAgICBjaGls
ZCA9IFdlYlZUVEVsZW1lbnQ6OmNyZWF0ZShUZXh0VHJhY2tDdWU6OmNsYXNzRWxlbWVudFRhZ05h
bWUoKSwgZG9jdW1lbnQpOwotICAgICAgICBlbHNlIGlmIChtX3Rva2VuLm5hbWUoKS5zaXplKCkg
PT0gMSAmJiBtX3Rva2VuLm5hbWUoKVswXSA9PSAndicpCi0gICAgICAgICAgICBjaGlsZCA9IFdl
YlZUVEVsZW1lbnQ6OmNyZWF0ZShUZXh0VHJhY2tDdWU6OnZvaWNlRWxlbWVudFRhZ05hbWUoKSwg
ZG9jdW1lbnQpOwotICAgICAgICBlbHNlIGlmIChpc0xhbmdUb2tlbihtX3Rva2VuKSkKLSAgICAg
ICAgICAgIGNoaWxkID0gV2ViVlRURWxlbWVudDo6Y3JlYXRlKFRleHRUcmFja0N1ZTo6bGFuZ0Vs
ZW1lbnRUYWdOYW1lKCksIGRvY3VtZW50KTsKLQorICAgICAgICBXZWJWVFROb2RlVHlwZSBub2Rl
VHlwZSA9IHRva2VuVG9Ob2RlVHlwZShtX3Rva2VuKTsKKyAgICAgICAgaWYgKG5vZGVUeXBlICE9
IFdlYlZUVE5vZGVUeXBlTm9uZSkKKyAgICAgICAgICAgIGNoaWxkID0gV2ViVlRURWxlbWVudDo6
Y3JlYXRlKG5vZGVUeXBlLCBkb2N1bWVudCk7CiAgICAgICAgIGlmIChjaGlsZCkgewogICAgICAg
ICAgICAgaWYgKG1fdG9rZW4uY2xhc3NlcygpLnNpemUoKSA+IDApCiAgICAgICAgICAgICAgICAg
Y2hpbGQtPnNldEF0dHJpYnV0ZShjbGFzc0F0dHIsIEF0b21pY1N0cmluZyhtX3Rva2VuLmNsYXNz
ZXMoKS5kYXRhKCksIG1fdG9rZW4uY2xhc3NlcygpLnNpemUoKSkpOwotICAgICAgICAgICAgaWYg
KGNoaWxkLT5oYXNUYWdOYW1lKFRleHRUcmFja0N1ZTo6dm9pY2VFbGVtZW50VGFnTmFtZSgpKSkK
LSAgICAgICAgICAgICAgICBjaGlsZC0+c2V0QXR0cmlidXRlKFRleHRUcmFja0N1ZTo6dm9pY2VB
dHRyaWJ1dGVOYW1lKCksIEF0b21pY1N0cmluZyhtX3Rva2VuLmFubm90YXRpb24oKS5kYXRhKCks
IG1fdG9rZW4uYW5ub3RhdGlvbigpLnNpemUoKSkpOwotICAgICAgICAgICAgaWYgKGNoaWxkLT5o
YXNUYWdOYW1lKFRleHRUcmFja0N1ZTo6bGFuZ0VsZW1lbnRUYWdOYW1lKCkpKQorCisgICAgICAg
ICAgICBpZiAoY2hpbGQtPndlYlZUVE5vZGVUeXBlKCkgPT0gV2ViVlRUTm9kZVR5cGVWb2ljZSkK
KyAgICAgICAgICAgICAgICBjaGlsZC0+c2V0QXR0cmlidXRlKFdlYlZUVEVsZW1lbnQ6OnZvaWNl
QXR0cmlidXRlTmFtZSgpLCBBdG9taWNTdHJpbmcobV90b2tlbi5hbm5vdGF0aW9uKCkuZGF0YSgp
LCBtX3Rva2VuLmFubm90YXRpb24oKS5zaXplKCkpKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGNo
aWxkLT53ZWJWVFROb2RlVHlwZSgpID09IFdlYlZUVE5vZGVUeXBlTGFuZ3VhZ2UpCiAgICAgICAg
ICAgICAgICAgbV9sYW5ndWFnZVN0YWNrLmFwcGVuZChBdG9taWNTdHJpbmcobV90b2tlbi5hbm5v
dGF0aW9uKCkuZGF0YSgpLCBtX3Rva2VuLmFubm90YXRpb24oKS5zaXplKCkpKTsKKwogICAgICAg
ICAgICAgaWYgKCFtX2xhbmd1YWdlU3RhY2suaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIGNo
aWxkLT5zZXRBdHRyaWJ1dGUoVGV4dFRyYWNrQ3VlOjpsYW5nQXR0cmlidXRlTmFtZSgpLCBtX2xh
bmd1YWdlU3RhY2subGFzdCgpKTsKKyAgICAgICAgICAgICAgICBjaGlsZC0+c2V0QXR0cmlidXRl
KFdlYlZUVEVsZW1lbnQ6OmxhbmdBdHRyaWJ1dGVOYW1lKCksIG1fbGFuZ3VhZ2VTdGFjay5sYXN0
KCkpOworCiAgICAgICAgICAgICBtX2N1cnJlbnROb2RlLT5wYXJzZXJBcHBlbmRDaGlsZChjaGls
ZCk7CiAgICAgICAgICAgICBtX2N1cnJlbnROb2RlID0gY2hpbGQ7CiAgICAgICAgIH0KICAgICAg
ICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgV2ViVlRUVG9rZW5UeXBlczo6RW5kVGFnOgotICAg
ICAgICBpZiAoaXNSZWNvZ25pemVkVGFnKHRva2VuVGFnTmFtZSkKLSAgICAgICAgICAgIHx8ICht
X3Rva2VuLm5hbWUoKS5zaXplKCkgPT0gMSAmJiBtX3Rva2VuLm5hbWUoKVswXSA9PSAnYycpCi0g
ICAgICAgICAgICB8fCAobV90b2tlbi5uYW1lKCkuc2l6ZSgpID09IDEgJiYgbV90b2tlbi5uYW1l
KClbMF0gPT0gJ3YnKSkgewotICAgICAgICAgICAgaWYgKG1fY3VycmVudE5vZGUtPnBhcmVudE5v
ZGUoKSkKLSAgICAgICAgICAgICAgICBtX2N1cnJlbnROb2RlID0gbV9jdXJyZW50Tm9kZS0+cGFy
ZW50Tm9kZSgpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChpc0xhbmdUb2tlbihtX3Rva2VuKSkg
ewotICAgICAgICAgICAgaWYgKG1fY3VycmVudE5vZGUtPmhhc1RhZ05hbWUoVGV4dFRyYWNrQ3Vl
OjpsYW5nRWxlbWVudFRhZ05hbWUoKSkpCisgICAgY2FzZSBXZWJWVFRUb2tlblR5cGVzOjpFbmRU
YWc6IHsKKyAgICAgICAgV2ViVlRUTm9kZVR5cGUgbm9kZVR5cGUgPSB0b2tlblRvTm9kZVR5cGUo
bV90b2tlbik7CisgICAgICAgIGlmIChub2RlVHlwZSAhPSBXZWJWVFROb2RlVHlwZU5vbmUpIHsK
KyAgICAgICAgICAgIGlmIChub2RlVHlwZSA9PSBXZWJWVFROb2RlVHlwZUxhbmd1YWdlICYmIG1f
Y3VycmVudE5vZGUtPmlzV2ViVlRURWxlbWVudCgpICYmIHRvV2ViVlRURWxlbWVudChtX2N1cnJl
bnROb2RlLmdldCgpKS0+d2ViVlRUTm9kZVR5cGUoKSA9PSBXZWJWVFROb2RlVHlwZUxhbmd1YWdl
KQogICAgICAgICAgICAgICAgIG1fbGFuZ3VhZ2VTdGFjay5yZW1vdmVMYXN0KCk7CiAgICAgICAg
ICAgICBpZiAobV9jdXJyZW50Tm9kZS0+cGFyZW50Tm9kZSgpKQogICAgICAgICAgICAgICAgIG1f
Y3VycmVudE5vZGUgPSBtX2N1cnJlbnROb2RlLT5wYXJlbnROb2RlKCk7CiAgICAgICAgIH0KICAg
ICAgICAgYnJlYWs7CisgICAgfQogICAgIGNhc2UgV2ViVlRUVG9rZW5UeXBlczo6VGltZXN0YW1w
VGFnOiB7CiAgICAgICAgIHVuc2lnbmVkIHBvc2l0aW9uID0gMDsKICAgICAgICAgZG91YmxlIHRp
bWUgPSBjb2xsZWN0VGltZVN0YW1wKG1fdG9rZW4uY2hhcmFjdGVycygpLmRhdGEoKSwgJnBvc2l0
aW9uKTsK
</data>
<flag name="review"
          id="204763"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185875</attachid>
            <date>2013-01-31 15:07:03 -0800</date>
            <delta_ts>2013-01-31 19:59:10 -0800</delta_ts>
            <desc>Proposed fix 0.5</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>22609</size>
            <attacher name="Dima Gorbik">dgorbik</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1MmQ0YTM1Li5kNWY3MDFkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTMtMDEt
MzEgIERpbWEgR29yYmlrICA8ZGdvcmJpa0BhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lP
TihyMTQwMjMxKTogbWVkaWEgdHJhY2sgbGF5b3V0IHRlc3RzIGNyYXNoaW5nCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDc1NzkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVt
L1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMTMtMDEtMzEgIEplc3NpZSBCZXJsaW4gIDxqYmVybGlu
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZWJhc2VsaW5lIGFmdGVyIHIxNDE0NTkuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwppbmRleCA4YjBmZjY4
Li5kMjM4ODZiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0
RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBl
Y3RhdGlvbnMKQEAgLTEwMSwxMSArMTAxLDYgQEAgd2Via2l0Lm9yZy9iLzEwNzU4NyBbIFdpbjcg
RGVidWcgXSBwbGF0Zm9ybS9jaHJvbWl1bS92aXJ0dWFsL2dwdS9mYXN0L2hpZHBpL2ZvY3UKIGNy
YnVnLmNvbS8yNDE4MiBbIE1hYyBEZWJ1ZyBdIGZhc3QvZnJhbWVzL3JlbW92ZS1mcmFtZS13aXRo
LXNjcm9sbGJhcnMtY3Jhc2guaHRtbCBbIFBhc3MgU2xvdyBdCiBjcmJ1Zy5jb20vMjQxODIgWyBN
YWMgRGVidWcgXSBmYXN0L2Zvcm1zL3Bvc3QtcG9wdXAtbm8tbXVsdGlwbGUtd2luZG93cy5odG1s
IFsgUGFzcyBTbG93IF0KIAotIyBDcmFzaGluZyBhZnRlciByMTQwMjMxLCBzZWUgYnVnIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDc1NzkKLXdlYmtpdC5vcmcvYi8x
MDY4NTMgWyBEZWJ1ZyBdIG1lZGlhL3RyYWNrL3RyYWNrLWNzcy1jdWUtbGlmZXRpbWUuaHRtbCBb
IFBhc3MgVGltZW91dCBDcmFzaCBdCi13ZWJraXQub3JnL2IvMTA4MDI0IFsgRGVidWcgXSBtZWRp
YS90cmFjay90cmFjay1jc3MtbWF0Y2hpbmctdGltZXN0YW1wcy5odG1sIFsgQ3Jhc2ggXQotd2Vi
a2l0Lm9yZy9iLzEwODAyNCBbIERlYnVnIF0gbWVkaWEvdHJhY2svdHJhY2stY3NzLW1hdGNoaW5n
LWxhbmcuaHRtbCBbIENyYXNoIF0KLQogIyBUaGVzZSB0ZXN0cyBzdGFydGVkIGJlaW5nIHNsb3cg
d2hlbiB3ZSBzd2l0Y2hlZCB0byBEUlQuCiB3ZWJraXQub3JnL2IvOTA0ODggWyBEZWJ1ZyBdIGlu
c3BlY3RvciBbIFBhc3MgU2xvdyBdCiB3ZWJraXQub3JnL2IvOTA0ODggWyBEZWJ1ZyBdIGh0dHAv
dGVzdHMvaW5zcGVjdG9yIFsgUGFzcyBTbG93IF0KQEAgLTQzMTEsOSArNDMwNiw2IEBAIHdlYmtp
dC5vcmcvYi8xMDczMTYgWyBXaW4gRGVidWcgXSBmYXN0L2lubGluZS9maXhlZC1wb3MtbW92ZXMt
d2l0aC1hYnNwb3MtaW5saW5lCiB3ZWJraXQub3JnL2IvMTA3MzI4IGh0dHAvdGVzdHMvY2FjaGUv
Y2FuY2VsLW11bHRpcGxlLXBvc3QteGhycy5odG1sIFsgTWlzc2luZyBdCiB3ZWJraXQub3JnL2Iv
MTA3MzQxIFsgRGVidWcgXSBpbnNwZWN0b3IvcHJvZmlsZXIvbWVtb3J5LWluc3RydW1lbnRhdGlv
bi1jYWNoZWQtaW1hZ2VzLmh0bWwgWyBGYWlsdXJlIF0KIAotd2Via2l0Lm9yZy9iLzEwNzU3OSBb
IERlYnVnIF0gbWVkaWEvdHJhY2svdHJhY2stY3NzLW1hdGNoaW5nLmh0bWwgWyBDcmFzaCBdCi13
ZWJraXQub3JnL2IvMTA3NTc5IFsgRGVidWcgXSBtZWRpYS90cmFjay90cmFjay1jc3MtcHJvcGVy
dHktd2hpdGVsaXN0Lmh0bWwgWyBDcmFzaCBdCi0KIHdlYmtpdC5vcmcvYi8xMDgxNjMgWyBEZWJ1
ZyBdIHBsYXRmb3JtL2Nocm9taXVtL3ZpcnR1YWwvZGVmZXJyZWQvZmFzdC9pbWFnZXMvaWNvbi0w
Y29sb3JzLmh0bWwgWyBDcmFzaCBdCiAKICMgTmV3IGNsYW1waW5nIGxvZ2ljIGluIHRoZSB0aWxl
IHNoYWRlciB3aWxsIGNhdXNlcyBzbGlnaHQgZGlmZnMuIFRoZXNlIGltYWdlcyBtdXN0IGJlIHJl
YmFzZWxpbmVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDc1YTk2OWYuLjY3N2U1YzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw0OSBAQAorMjAxMy0wMS0zMSAgRGltYSBHb3JiaWsgIDxkZ29yYmlrQGFwcGxlLmNv
bT4KKworICAgICAgICBSRUdSRVNTSU9OKHIxNDAyMzEpOiBtZWRpYSB0cmFjayBsYXlvdXQgdGVz
dHMgY3Jhc2hpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwNzU3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFdlIHdlcmUgdXNpbmcgbm9uLXN0YW5kYXJkIGVsZW1lbnQgbmFtZXMgd2l0aCBIVE1MRWxl
bWVudCwgd2hpY2ggbWFkZSB2OCB0cnkgdG8gY2FzdAorICAgICAgICBXZWJWVFRFbGVtZW50cyB0
byBIVE1MVW5rbm93bkVsZW1lbnRzIHdoaWNoIHdhcyBub3QgcG9zc2libGUuIFN1YmNsYXNzaW5n
IEVsZW1lbnQgaW5zdGVhZAorICAgICAgICBvZiBIVE1MRWxlbWVudCwgdGhvdWdoIHRoaXMgcmVx
dWlyZXMgYnVpbGRpbmcgSFRNTEVsZW1lbnRzIGZyb20gV2ViVlRURWxlbWVudHMgZm9yIGNyZWF0
aW5nCisgICAgICAgIGEgRE9NIHRyZWUuIFRoZSBjb2RlIGhhcyBiZWVuIHJlZmFjdG9yZWQgdG8g
bW92ZSBXZWJWVFQgbm9kZSB0eXBlIHRvIFF1aWFsaWZpZWROYW1lIG1hcHBpbmdzIAorICAgICAg
ICBpbnNpZGUgdGhlIFdlYlZUVEVsZW1lbnQgY2xhc3MuIEFsbCBXZWJWVFRFbGVtZW50cyBpbiB0
aGUgc2hhZG93IGRvbSB0cmVlIG5vdyBhcmUgaW4gdGhlIAorICAgICAgICBuYW1lc3BhY2UgZGVm
aW5lZCBieSAnTnVsbEF0b20nLiBUaGlzIHByZXZlbnRzIHJlZ3VsYXIgc3R5bGVzIGZyb20gYmVp
bmcgYXBwbGllZCB0byA8Yj4sIDxpPgorICAgICAgICBhbmQgc2ltaWxhciB0YWdzLiBUaG9zZSBo
YXZlIHRvIGJlIHN0eWxlZCBzZXBhcmF0ZWx5IHdpdGhvdXQgcmV1c2luZyBleGlzdGluZyBRdWFs
aWZpZWROYW1lcworICAgICAgICBhbmQgdGhlaXIgc3R5bGVzLiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3MjE0CisKKyAgICAgICAgVW5za2lwcGluZyB0ZXN0cyB0
byBjb3ZlciB0aGlzLgorCisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lKToKKyAgICAgICAgKiBjc3Mv
U3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjb2xs
ZWN0TWF0Y2hpbmdSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjYW5T
aGFyZVN0eWxlV2l0aEVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3Vl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6Y29weVdlYlZUVE5vZGVUb0RP
TVRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpnZXRDdWVBc0hUTUwpOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpjcmVhdGVDdWVSZW5kZXJpbmdUcmVlKToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6bWFya0Z1dHVyZUFuZFBhc3ROb2Rlcyk6
CisgICAgICAgICogaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRUcmFja0N1ZTo6Y3VlU2hhZG93UHNldWRvSWQpOgorICAgICAgICAqIGh0bWwvdHJhY2sv
V2ViVlRURWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpub2RlVHlwZVRvVGFnTmFtZSk6
IGdldCBhIFF1YWxpZmllZE5hbWUgdG8gdXNlIGluIHRoZSBzaGFkb3cgRE9NIHRyZWUuCisgICAg
ICAgIChXZWJDb3JlOjpXZWJWVFRFbGVtZW50OjpXZWJWVFRFbGVtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OldlYlZUVEVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJWVFRF
bGVtZW50OjpjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmlidXRlc0FuZENoaWxkcmVuKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYlZUVEVsZW1lbnQ6OmNyZWF0ZUVxdWl2YWxlbnRIVE1MRWxlbWVudCk6
IGNyZWF0ZSBhbiBIVE1MRWxlbWVudCB0byB1c2UgaW4gdGhlIERPTSB0cmVlLgorICAgICAgICAq
IGh0bWwvdHJhY2svV2ViVlRURWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6V2ViVlRURWxl
bWVudDo6c2V0V2ViVlRUTm9kZVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViVlRURWxlbWVu
dDo6d2ViVlRUTm9kZVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViVlRURWxlbWVudDo6aXNQ
YXN0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJWVFRFbGVtZW50OjpzZXRJc1Bhc3ROb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlZUVEVsZW1lbnQ6OnZvaWNlQXR0cmlidXRlTmFtZSk6
CisgICAgICAgICogaHRtbC90cmFjay9XZWJWVFRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6dG9rZW5Ub05vZGVUeXBlKTogZGV0ZXJtaW5lIGEgV2ViVlRUIG5vZGUgdHlwZSBmb3IgdGhl
IHRva2VuLgorICAgICAgICAoV2ViQ29yZTo6V2ViVlRUUGFyc2VyOjpjb25zdHJ1Y3RUcmVlRnJv
bVRva2VuKToKKwogMjAxMy0wMS0zMSAgSmFja3kgSmlhbmcgIDx6aGFqaWFuZ0ByaW0uY29tPgog
CiAgICAgICAgIFtCbGFja0JlcnJ5XSBCaW5nIEltYWdlcyB2aWV3cG9ydCBjYXVzZXMgbGF5b3V0
ICJmdW4iCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCmluZGV4IDFmNWUwYzAu
LmZhYjcwNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwCkBAIC04Njks
OSArODY5LDkgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lKGNvbnN0IFNlbGVjdG9y
Q2hlY2tpbmdDb250ZXh0JiBjb250ZXh0LCBjb25zdCBTaWIKICAgICAgICAgICAgIHJldHVybiBl
bGVtZW50LT5pc091dE9mUmFuZ2UoKTsKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgICAg
IGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0Z1dHVyZUN1ZToKLSAgICAgICAgICAgIHJldHVybiAo
ZWxlbWVudC0+aXNXZWJWVFRFbGVtZW50KCkgJiYgdG9XZWJWVFRFbGVtZW50KGVsZW1lbnQpLT53
ZWJWVFROb2RlVHlwZSgpID09IFdlYlZUVE5vZGVUeXBlRnV0dXJlKTsKKyAgICAgICAgICAgIHJl
dHVybiAoZWxlbWVudC0+aXNXZWJWVFRFbGVtZW50KCkgJiYgIXRvV2ViVlRURWxlbWVudChlbGVt
ZW50KS0+aXNQYXN0Tm9kZSgpKTsKICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvUGFz
dEN1ZToKLSAgICAgICAgICAgIHJldHVybiAoZWxlbWVudC0+aXNXZWJWVFRFbGVtZW50KCkgJiYg
dG9XZWJWVFRFbGVtZW50KGVsZW1lbnQpLT53ZWJWVFROb2RlVHlwZSgpID09IFdlYlZUVE5vZGVU
eXBlUGFzdCk7CisgICAgICAgICAgICByZXR1cm4gKGVsZW1lbnQtPmlzV2ViVlRURWxlbWVudCgp
ICYmIHRvV2ViVlRURWxlbWVudChlbGVtZW50KS0+aXNQYXN0Tm9kZSgpKTsKICNlbmRpZgogCiAg
ICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0hvcml6b250YWw6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVSZXNvbHZlci5jcHAKaW5kZXggYzA5NjhkZC4uMjE3YTFjOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJlc29sdmVyLmNwcApAQCAtNjY2LDcgKzY2Niw3IEBAIHZvaWQgU3R5bGVSZXNvbHZl
cjo6Y29sbGVjdE1hdGNoaW5nUnVsZXMoY29uc3QgTWF0Y2hSZXF1ZXN0JiBtYXRjaFJlcXVlc3Qs
IFJ1bGVSCiAgICAgfQogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIGlmIChtX2VsZW1l
bnQtPmlzV2ViVlRURWxlbWVudCgpICYmIHRvV2ViVlRURWxlbWVudChtX2VsZW1lbnQpLT53ZWJW
VFROb2RlVHlwZSgpKQorICAgIGlmIChtX2VsZW1lbnQtPmlzV2ViVlRURWxlbWVudCgpKQogICAg
ICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QobWF0Y2hSZXF1ZXN0LnJ1bGVTZXQtPmN1
ZVBzZXVkb1J1bGVzKCksIG1hdGNoUmVxdWVzdCwgcnVsZVJhbmdlKTsKICNlbmRpZgogICAgIC8v
IENoZWNrIHdoZXRoZXIgb3RoZXIgdHlwZXMgb2YgcnVsZXMgYXJlIGFwcGxpY2FibGUgaW4gdGhl
IGN1cnJlbnQgdHJlZSBzY29wZS4gQ3JpdGVyaWEgZm9yIHRoaXM6CkBAIC0xMjY3LDcgKzEyNjcs
NyBAQCBib29sIFN0eWxlUmVzb2x2ZXI6OmNhblNoYXJlU3R5bGVXaXRoRWxlbWVudChTdHlsZWRF
bGVtZW50KiBlbGVtZW50KSBjb25zdAogICAgIGlmIChlbGVtZW50LT5pc1dlYlZUVEVsZW1lbnQo
KSAhPSBtX2VsZW1lbnQtPmlzV2ViVlRURWxlbWVudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBpZiAoZWxlbWVudC0+aXNXZWJWVFRFbGVtZW50KCkgJiYgbV9lbGVtZW50LT5pc1dl
YlZUVEVsZW1lbnQoKSAmJiB0b1dlYlZUVEVsZW1lbnQoZWxlbWVudCktPndlYlZUVE5vZGVUeXBl
KCkgIT0gdG9XZWJWVFRFbGVtZW50KG1fZWxlbWVudCktPndlYlZUVE5vZGVUeXBlKCkpCisgICAg
aWYgKGVsZW1lbnQtPmlzV2ViVlRURWxlbWVudCgpICYmIG1fZWxlbWVudC0+aXNXZWJWVFRFbGVt
ZW50KCkgJiYgdG9XZWJWVFRFbGVtZW50KGVsZW1lbnQpLT5pc1Bhc3ROb2RlKCkgIT0gdG9XZWJW
VFRFbGVtZW50KG1fZWxlbWVudCktPmlzUGFzdE5vZGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRy
YWNrQ3VlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcApp
bmRleCBiMDY0MjZiLi5mM2I5MzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1RleHRUcmFja0N1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0
VHJhY2tDdWUuY3BwCkBAIC01MDQsMTUgKzUwNCwxMCBAQCB2b2lkIFRleHRUcmFja0N1ZTo6Y29w
eVdlYlZUVE5vZGVUb0RPTVRyZWUoQ29udGFpbmVyTm9kZSogd2ViVlRUTm9kZSwgQ29udGFpbmVy
TgogewogICAgIGZvciAoTm9kZSogbm9kZSA9IHdlYlZUVE5vZGUtPmZpcnN0Q2hpbGQoKTsgbm9k
ZTsgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgUmVmUHRyPE5vZGU+IGNs
b25lZE5vZGU7Ci0gICAgICAgIC8vIFNwZWNzIHJlcXVpcmUgdm9pY2UgYW5kIGNsYXNzIFdlYlZU
VCBlbGVtZW50cyB0byBiZSBzcGFucyBmb3IgRE9NIHRyZWVzLgotICAgICAgICBpZiAobm9kZS0+
aGFzVGFnTmFtZSh2b2ljZUVsZW1lbnRUYWdOYW1lKCkpIHx8IG5vZGUtPmhhc1RhZ05hbWUoY2xh
c3NFbGVtZW50VGFnTmFtZSgpKSB8fCBub2RlLT5oYXNUYWdOYW1lKGxhbmdFbGVtZW50VGFnTmFt
ZSgpKSkgewotICAgICAgICAgICAgY2xvbmVkTm9kZSA9IEhUTUxTcGFuRWxlbWVudDo6Y3JlYXRl
KHNwYW5UYWcsIHN0YXRpY19jYXN0PERvY3VtZW50Kj4obV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
KSk7Ci0gICAgICAgICAgICB0b0VsZW1lbnQoY2xvbmVkTm9kZS5nZXQoKSktPnNldEF0dHJpYnV0
ZShjbGFzc0F0dHIsIHRvRWxlbWVudChub2RlKS0+Z2V0QXR0cmlidXRlKGNsYXNzQXR0cikpOwot
ICAgICAgICAgICAgdG9FbGVtZW50KGNsb25lZE5vZGUuZ2V0KCkpLT5zZXRBdHRyaWJ1dGUodGl0
bGVBdHRyLCB0b0VsZW1lbnQobm9kZSktPmdldEF0dHJpYnV0ZSh2b2ljZUF0dHJpYnV0ZU5hbWUo
KSkpOwotICAgICAgICAgICAgdG9FbGVtZW50KGNsb25lZE5vZGUuZ2V0KCkpLT5zZXRBdHRyaWJ1
dGUobGFuZ0F0dHIsIHRvRWxlbWVudChub2RlKS0+Z2V0QXR0cmlidXRlKGxhbmdBdHRyaWJ1dGVO
YW1lKCkpKTsKLSAgICAgICAgfSBlbHNlCisgICAgICAgIGlmIChub2RlLT5pc1dlYlZUVEVsZW1l
bnQoKSkKKyAgICAgICAgICAgIGNsb25lZE5vZGUgPSB0b1dlYlZUVEVsZW1lbnQobm9kZSktPmNy
ZWF0ZUVxdWl2YWxlbnRIVE1MRWxlbWVudChvd25lckRvY3VtZW50KCkpOworICAgICAgICBlbHNl
CiAgICAgICAgICAgICBjbG9uZWROb2RlID0gbm9kZS0+Y2xvbmVOb2RlKGZhbHNlKTsKLQogICAg
ICAgICBwYXJlbnQtPmFwcGVuZENoaWxkKGNsb25lZE5vZGUsIEFTU0VSVF9OT19FWENFUFRJT04p
OwogICAgICAgICBpZiAobm9kZS0+aXNDb250YWluZXJOb2RlKCkpCiAgICAgICAgICAgICBjb3B5
V2ViVlRUTm9kZVRvRE9NVHJlZSh0b0NvbnRhaW5lck5vZGUobm9kZSksIHRvQ29udGFpbmVyTm9k
ZShjbG9uZWROb2RlLmdldCgpKSk7CkBAIC01MjIsOCArNTE3LDcgQEAgdm9pZCBUZXh0VHJhY2tD
dWU6OmNvcHlXZWJWVFROb2RlVG9ET01UcmVlKENvbnRhaW5lck5vZGUqIHdlYlZUVE5vZGUsIENv
bnRhaW5lck4KIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gVGV4dFRyYWNrQ3VlOjpnZXRD
dWVBc0hUTUwoKQogewogICAgIGNyZWF0ZVdlYlZUVE5vZGVUcmVlKCk7Ci0gICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihtX3NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpOwotICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjbG9uZWRGcmFnbWVudCA9IERvY3Vt
ZW50RnJhZ21lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CisgICAgUmVmUHRyPERvY3VtZW50RnJhZ21l
bnQ+IGNsb25lZEZyYWdtZW50ID0gRG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRlKG93bmVyRG9jdW1l
bnQoKSk7CiAgICAgY29weVdlYlZUVE5vZGVUb0RPTVRyZWUobV93ZWJWVFROb2RlVHJlZS5nZXQo
KSwgY2xvbmVkRnJhZ21lbnQuZ2V0KCkpOwogICAgIHJldHVybiBjbG9uZWRGcmFnbWVudC5yZWxl
YXNlKCk7CiB9CkBAIC01MzIsOCArNTI2LDcgQEAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50
PiBUZXh0VHJhY2tDdWU6OmNyZWF0ZUN1ZVJlbmRlcmluZ1RyZWUoKQogewogICAgIFJlZlB0cjxE
b2N1bWVudEZyYWdtZW50PiBjbG9uZWRGcmFnbWVudDsKICAgICBjcmVhdGVXZWJWVFROb2RlVHJl
ZSgpOwotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4obV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KTsKLSAgICBjbG9uZWRGcmFnbWVudCA9IERvY3VtZW50RnJh
Z21lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CisgICAgY2xvbmVkRnJhZ21lbnQgPSBEb2N1bWVudEZy
YWdtZW50OjpjcmVhdGUob3duZXJEb2N1bWVudCgpKTsKICAgICBtX3dlYlZUVE5vZGVUcmVlLT5j
bG9uZUNoaWxkTm9kZXMoY2xvbmVkRnJhZ21lbnQuZ2V0KCkpOwogICAgIHJldHVybiBjbG9uZWRG
cmFnbWVudC5yZWxlYXNlKCk7CiB9CkBAIC03MDksNyArNzAyLDcgQEAgdm9pZCBUZXh0VHJhY2tD
dWU6Om1hcmtGdXR1cmVBbmRQYXN0Tm9kZXMoQ29udGFpbmVyTm9kZSogcm9vdCwgZG91YmxlIHBy
ZXZpb3VzVGkKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKGNoaWxkLT5pc1dlYlZU
VEVsZW1lbnQoKSkgewotICAgICAgICAgICAgdG9XZWJWVFRFbGVtZW50KGNoaWxkKS0+c2V0V2Vi
VlRUTm9kZVR5cGUoaXNQYXN0Tm9kZSA/IFdlYlZUVE5vZGVUeXBlUGFzdCA6IFdlYlZUVE5vZGVU
eXBlRnV0dXJlKTsKKyAgICAgICAgICAgIHRvV2ViVlRURWxlbWVudChjaGlsZCktPnNldElzUGFz
dE5vZGUoaXNQYXN0Tm9kZSk7CiAgICAgICAgICAgICAvLyBNYWtlIGFuIGVsZW1lbmV0IGlkIG1h
dGNoIGEgY3VlIGlkIGZvciBzdHlsZSBtYXRjaGluZyBwdXJwb3Nlcy4KICAgICAgICAgICAgIGlm
ICghbV9pZC5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgdG9FbGVtZW50KGNoaWxkKS0+c2V0
SWRBdHRyaWJ1dGUoQXRvbWljU3RyaW5nKG1faWQuY2hhcmFjdGVycygpLCBtX2lkLmxlbmd0aCgp
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuaAppbmRleCAyODdhYmVk
Li4zODUxN2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFj
a0N1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmgKQEAg
LTg1LDM2ICs4NSw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGN1ZTsKICAgICB9CiAKLSAg
ICBzdGF0aWMgY29uc3QgUXVhbGlmaWVkTmFtZSYgbGFuZ0VsZW1lbnRUYWdOYW1lKCkKLSAgICB7
Ci0gICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoUXVhbGlmaWVkTmFtZSwgbGFuZ1RhZywgKG51
bGxBdG9tLCAibGFuZyIsIG51bGxBdG9tKSk7Ci0gICAgICAgIHJldHVybiBsYW5nVGFnOwotICAg
IH0KLQotICAgIHN0YXRpYyBjb25zdCBRdWFsaWZpZWROYW1lJiB2b2ljZUVsZW1lbnRUYWdOYW1l
KCkKLSAgICB7Ci0gICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoUXVhbGlmaWVkTmFtZSwgdlRh
ZywgKG51bGxBdG9tLCAidiIsIG51bGxBdG9tKSk7Ci0gICAgICAgIHJldHVybiB2VGFnOwotICAg
IH0KLQotICAgIHN0YXRpYyBjb25zdCBRdWFsaWZpZWROYW1lJiBjbGFzc0VsZW1lbnRUYWdOYW1l
KCkKLSAgICB7Ci0gICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoUXVhbGlmaWVkTmFtZSwgY1Rh
ZywgKG51bGxBdG9tLCAiYyIsIG51bGxBdG9tKSk7Ci0gICAgICAgIHJldHVybiBjVGFnOwotICAg
IH0KLQotICAgIHN0YXRpYyBjb25zdCBRdWFsaWZpZWROYW1lJiB2b2ljZUF0dHJpYnV0ZU5hbWUo
KQotICAgIHsKLSAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChRdWFsaWZpZWROYW1lLCB2b2lj
ZUF0dHIsIChudWxsQXRvbSwgInZvaWNlIiwgbnVsbEF0b20pKTsKLSAgICAgICAgcmV0dXJuIHZv
aWNlQXR0cjsKLSAgICB9Ci0KLSAgICBzdGF0aWMgY29uc3QgUXVhbGlmaWVkTmFtZSYgbGFuZ0F0
dHJpYnV0ZU5hbWUoKQotICAgIHsKLSAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChRdWFsaWZp
ZWROYW1lLCB2b2ljZUF0dHIsIChudWxsQXRvbSwgImxhbmciLCBudWxsQXRvbSkpOwotICAgICAg
ICByZXR1cm4gdm9pY2VBdHRyOwotICAgIH0KLQogICAgIHZpcnR1YWwgflRleHRUcmFja0N1ZSgp
OwogCiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgYWxsTm9kZXNTaGFkb3dQc2V1ZG9J
ZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRURWxlbWVudC5jcHAKaW5kZXgg
MmU4OTdjMy4uZDY3NzI3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9X
ZWJWVFRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVs
ZW1lbnQuY3BwCkBAIC0zMywyMCArMzMsODkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1X
ZWJWVFRFbGVtZW50OjpXZWJWVFRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50KiBkb2N1bWVudCkKLSAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50
KQotICAgICwgbV93ZWJWVFROb2RlVHlwZShXZWJWVFROb2RlVHlwZU5vbmUpCitzdGF0aWMgY29u
c3QgUXVhbGlmaWVkTmFtZSYgbm9kZVR5cGVUb1RhZ05hbWUoV2ViVlRUTm9kZVR5cGUgbm9kZVR5
cGUpCiB7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChRdWFsaWZpZWROYW1lLCBjVGFnLCAobnVs
bEF0b20sICJjIiwgbnVsbEF0b20pKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFF1YWxpZmll
ZE5hbWUsIHZUYWcsIChudWxsQXRvbSwgInYiLCBudWxsQXRvbSkpOworICAgIERFRklORV9TVEFU
SUNfTE9DQUwoUXVhbGlmaWVkTmFtZSwgbGFuZ1RhZywgKG51bGxBdG9tLCAibGFuZyIsIG51bGxB
dG9tKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChRdWFsaWZpZWROYW1lLCBiVGFnLCAobnVs
bEF0b20sICJiIiwgbnVsbEF0b20pKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFF1YWxpZmll
ZE5hbWUsIHVUYWcsIChudWxsQXRvbSwgInUiLCBudWxsQXRvbSkpOworICAgIERFRklORV9TVEFU
SUNfTE9DQUwoUXVhbGlmaWVkTmFtZSwgaVRhZywgKG51bGxBdG9tLCAiaSIsIG51bGxBdG9tKSk7
CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChRdWFsaWZpZWROYW1lLCBydWJ5VGFnLCAobnVsbEF0
b20sICJydWJ5IiwgbnVsbEF0b20pKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFF1YWxpZmll
ZE5hbWUsIHJ0VGFnLCAobnVsbEF0b20sICJydCIsIG51bGxBdG9tKSk7CisgICAgc3dpdGNoIChu
b2RlVHlwZSkgeworICAgIGNhc2UgV2ViVlRUTm9kZVR5cGVDbGFzczoKKyAgICAgICAgcmV0dXJu
IGNUYWc7CisgICAgY2FzZSBXZWJWVFROb2RlVHlwZUl0YWxpYzoKKyAgICAgICAgcmV0dXJuIGlU
YWc7CisgICAgY2FzZSBXZWJWVFROb2RlVHlwZUxhbmd1YWdlOgorICAgICAgICByZXR1cm4gbGFu
Z1RhZzsKKyAgICBjYXNlIFdlYlZUVE5vZGVUeXBlQm9sZDoKKyAgICAgICAgcmV0dXJuIGJUYWc7
CisgICAgY2FzZSBXZWJWVFROb2RlVHlwZVVuZGVybGluZToKKyAgICAgICAgcmV0dXJuIHVUYWc7
CisgICAgY2FzZSBXZWJWVFROb2RlVHlwZVJ1Ynk6CisgICAgICAgIHJldHVybiBydWJ5VGFnOwor
ICAgIGNhc2UgV2ViVlRUTm9kZVR5cGVSdWJ5VGV4dDoKKyAgICAgICAgcmV0dXJuIHJ0VGFnOwor
ICAgIGNhc2UgV2ViVlRUTm9kZVR5cGVWb2ljZToKKyAgICAgICAgcmV0dXJuIHZUYWc7CisgICAg
Y2FzZSBXZWJWVFROb2RlVHlwZU5vbmU6CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBjVGFnOyAvLyBNYWtlIHRoZSBjb21waWxlciBo
YXBweS4KKyAgICB9CiB9CiAKLVBhc3NSZWZQdHI8V2ViVlRURWxlbWVudD4gV2ViVlRURWxlbWVu
dDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVu
dCkKK1dlYlZUVEVsZW1lbnQ6OldlYlZUVEVsZW1lbnQoV2ViVlRUTm9kZVR5cGUgbm9kZVR5cGUs
IERvY3VtZW50KiBkb2N1bWVudCkKKyAgICA6IEVsZW1lbnQobm9kZVR5cGVUb1RhZ05hbWUobm9k
ZVR5cGUpLCBkb2N1bWVudCwgQ3JlYXRlRWxlbWVudCkKKyAgICAsIG1faXNQYXN0Tm9kZSgwKQor
ICAgICwgbV93ZWJWVFROb2RlVHlwZShub2RlVHlwZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFdlYlZUVEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKK30KKworUGFzc1JlZlB0cjxX
ZWJWVFRFbGVtZW50PiBXZWJWVFRFbGVtZW50OjpjcmVhdGUoV2ViVlRUTm9kZVR5cGUgbm9kZVR5
cGUsIERvY3VtZW50KiBkb2N1bWVudCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlZU
VEVsZW1lbnQobm9kZVR5cGUsIGRvY3VtZW50KSk7CiB9CiAKIFBhc3NSZWZQdHI8RWxlbWVudD4g
V2ViVlRURWxlbWVudDo6Y2xvbmVFbGVtZW50V2l0aG91dEF0dHJpYnV0ZXNBbmRDaGlsZHJlbigp
CiB7Ci0gICAgcmV0dXJuIGNyZWF0ZSh0YWdRTmFtZSgpLCBkb2N1bWVudCgpKTsKKyAgICByZXR1
cm4gY3JlYXRlKHN0YXRpY19jYXN0PFdlYlZUVE5vZGVUeXBlPihtX3dlYlZUVE5vZGVUeXBlKSwg
ZG9jdW1lbnQoKSk7Cit9CisKK1Bhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IFdlYlZUVEVsZW1lbnQ6
OmNyZWF0ZUVxdWl2YWxlbnRIVE1MRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAg
UmVmUHRyPEhUTUxFbGVtZW50PiBodG1sRWxlbWVudDsKKyAgICBzd2l0Y2ggKG1fd2ViVlRUTm9k
ZVR5cGUpIHsKKyAgICBjYXNlIFdlYlZUVE5vZGVUeXBlQ2xhc3M6CisgICAgY2FzZSBXZWJWVFRO
b2RlVHlwZUxhbmd1YWdlOgorICAgIGNhc2UgV2ViVlRUTm9kZVR5cGVWb2ljZToKKyAgICAgICAg
aHRtbEVsZW1lbnQgPSBIVE1MRWxlbWVudDo6Y3JlYXRlKEhUTUxOYW1lczo6c3BhblRhZywgZG9j
dW1lbnQpOworICAgICAgICBodG1sRWxlbWVudC5nZXQoKS0+c2V0QXR0cmlidXRlKEhUTUxOYW1l
czo6dGl0bGVBdHRyLCBnZXRBdHRyaWJ1dGUodm9pY2VBdHRyaWJ1dGVOYW1lKCkpKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBXZWJWVFROb2RlVHlwZUl0YWxpYzoKKyAgICAgICAgaHRtbEVs
ZW1lbnQgPSBIVE1MRWxlbWVudDo6Y3JlYXRlKEhUTUxOYW1lczo6aVRhZywgZG9jdW1lbnQpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFdlYlZUVE5vZGVUeXBlQm9sZDoKKyAgICAgICAgaHRt
bEVsZW1lbnQgPSBIVE1MRWxlbWVudDo6Y3JlYXRlKEhUTUxOYW1lczo6YlRhZywgZG9jdW1lbnQp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdlYlZUVE5vZGVUeXBlVW5kZXJsaW5lOgorICAg
ICAgICBodG1sRWxlbWVudCA9IEhUTUxFbGVtZW50OjpjcmVhdGUoSFRNTE5hbWVzOjp1VGFnLCBk
b2N1bWVudCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2ViVlRUTm9kZVR5cGVSdWJ5Ogor
ICAgICAgICBodG1sRWxlbWVudCA9IEhUTUxFbGVtZW50OjpjcmVhdGUoSFRNTE5hbWVzOjpydWJ5
VGFnLCBkb2N1bWVudCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2ViVlRUTm9kZVR5cGVS
dWJ5VGV4dDoKKyAgICAgICAgaHRtbEVsZW1lbnQgPSBIVE1MRWxlbWVudDo6Y3JlYXRlKEhUTUxO
YW1lczo6cnRUYWcsIGRvY3VtZW50KTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgaHRtbEVsZW1lbnQuZ2V0
KCktPnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmxhbmdBdHRyLCBnZXRBdHRyaWJ1dGUobGFuZ0F0
dHJpYnV0ZU5hbWUoKSkpOworICAgIGh0bWxFbGVtZW50LmdldCgpLT5zZXRBdHRyaWJ1dGUoSFRN
TE5hbWVzOjpjbGFzc0F0dHIsIGdldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmNsYXNzQXR0cikpOwor
ICAgIHJldHVybiBodG1sRWxlbWVudDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL1dlYlZUVEVsZW1lbnQuaAppbmRleCBkM2ZlMWIyLi44MmY5
NzBmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJWVFRFbGVtZW50LmgKQEAgLTMx
LDIyICszMSw1MSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGVudW0gV2ViVlRUTm9kZVR5cGUg
ewogICAgIFdlYlZUVE5vZGVUeXBlTm9uZSA9IDAsCi0gICAgV2ViVlRUTm9kZVR5cGVGdXR1cmUs
Ci0gICAgV2ViVlRUTm9kZVR5cGVQYXN0CisgICAgV2ViVlRUTm9kZVR5cGVDbGFzcywKKyAgICBX
ZWJWVFROb2RlVHlwZUl0YWxpYywKKyAgICBXZWJWVFROb2RlVHlwZUxhbmd1YWdlLAorICAgIFdl
YlZUVE5vZGVUeXBlQm9sZCwKKyAgICBXZWJWVFROb2RlVHlwZVVuZGVybGluZSwKKyAgICBXZWJW
VFROb2RlVHlwZVJ1YnksCisgICAgV2ViVlRUTm9kZVR5cGVSdWJ5VGV4dCwKKyAgICBXZWJWVFRO
b2RlVHlwZVZvaWNlCiB9OwogCi1jbGFzcyBXZWJWVFRFbGVtZW50IDogcHVibGljIEhUTUxFbGVt
ZW50IHsKK2NsYXNzIFdlYlZUVEVsZW1lbnQgOiBwdWJsaWMgRWxlbWVudCB7CiBwdWJsaWM6Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViVlRURWxlbWVudD4gY3JlYXRlKGNvbnN0IFdlYlZUVE5v
ZGVUeXBlLCBEb2N1bWVudCopOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlZUVEVsZW1lbnQ+
IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKKyAgICBQYXNzUmVmUHRy
PEhUTUxFbGVtZW50PiBjcmVhdGVFcXVpdmFsZW50SFRNTEVsZW1lbnQoRG9jdW1lbnQqKTsKKwog
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxFbGVtZW50PiBjbG9uZUVsZW1lbnRXaXRob3V0QXR0cmli
dXRlc0FuZENoaWxkcmVuKCkgT1ZFUlJJREU7CiAKLSAgICB2b2lkIHNldFdlYlZUVE5vZGVUeXBl
KFdlYlZUVE5vZGVUeXBlIHR5cGUpIHsgbV93ZWJWVFROb2RlVHlwZSA9IHR5cGU7IH0KLSAgICBX
ZWJWVFROb2RlVHlwZSB3ZWJWVFROb2RlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2ViVlRUTm9k
ZVR5cGU7IH0KKyAgICB2b2lkIHNldFdlYlZUVE5vZGVUeXBlKFdlYlZUVE5vZGVUeXBlIHR5cGUp
IHsgbV93ZWJWVFROb2RlVHlwZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPih0eXBlKTsgfQorICAg
IFdlYlZUVE5vZGVUeXBlIHdlYlZUVE5vZGVUeXBlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8V2ViVlRUTm9kZVR5cGU+KG1fd2ViVlRUTm9kZVR5cGUpOyB9CisKKyAgICBib29sIGlzUGFz
dE5vZGUoKSBjb25zdCB7IHJldHVybiBtX2lzUGFzdE5vZGU7IH0KKyAgICB2b2lkIHNldElzUGFz
dE5vZGUoYm9vbCB2YWx1ZSkgeyBtX2lzUGFzdE5vZGUgPSB2YWx1ZTsgfQorCiAgICAgdmlydHVh
bCBib29sIGlzV2ViVlRURWxlbWVudCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0K
IAorICAgIHN0YXRpYyBjb25zdCBRdWFsaWZpZWROYW1lJiB2b2ljZUF0dHJpYnV0ZU5hbWUoKQor
ICAgIHsKKyAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChRdWFsaWZpZWROYW1lLCB2b2ljZUF0
dHIsIChudWxsQXRvbSwgInZvaWNlIiwgbnVsbEF0b20pKTsKKyAgICAgICAgcmV0dXJuIHZvaWNl
QXR0cjsKKyAgICB9CisgICAgCisgICAgc3RhdGljIGNvbnN0IFF1YWxpZmllZE5hbWUmIGxhbmdB
dHRyaWJ1dGVOYW1lKCkKKyAgICB7CisgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoUXVhbGlm
aWVkTmFtZSwgdm9pY2VBdHRyLCAobnVsbEF0b20sICJsYW5nIiwgbnVsbEF0b20pKTsKKyAgICAg
ICAgcmV0dXJuIHZvaWNlQXR0cjsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgV2ViVlRURWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKLSAgICBXZWJWVFROb2RlVHlwZSBt
X3dlYlZUVE5vZGVUeXBlOworICAgIFdlYlZUVEVsZW1lbnQoV2ViVlRUTm9kZVR5cGUsIERvY3Vt
ZW50Kik7CisKKyAgICB1bnNpZ25lZCBtX2lzUGFzdE5vZGUgOiAxOworICAgIHVuc2lnbmVkIG1f
d2ViVlRUTm9kZVR5cGUgOiA0OworICAgIAogfTsKIAogaW5saW5lIFdlYlZUVEVsZW1lbnQqIHRv
V2ViVlRURWxlbWVudChOb2RlKiBub2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9XZWJWVFRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9XZWJW
VFRQYXJzZXIuY3BwCmluZGV4IDZhMThjMGMuLmY4MzUwNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svV2ViVlRUUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAKQEAgLTM0Miw5ICszNDIsMzMgQEAgZG91YmxlIFdl
YlZUVFBhcnNlcjo6Y29sbGVjdFRpbWVTdGFtcChjb25zdCBTdHJpbmcmIGxpbmUsIHVuc2lnbmVk
KiBwb3NpdGlvbikKICAgICByZXR1cm4gKHZhbHVlMSAqIHNlY29uZHNQZXJIb3VyKSArICh2YWx1
ZTIgKiBzZWNvbmRzUGVyTWludXRlKSArIHZhbHVlMyArICh2YWx1ZTQgKiBzZWNvbmRzUGVyTWls
bGlzZWNvbmQpOwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgaXNMYW5nVG9rZW4oV2ViVlRUVG9r
ZW4mIHRva2VuKQorc3RhdGljIFdlYlZUVE5vZGVUeXBlIHRva2VuVG9Ob2RlVHlwZShXZWJWVFRU
b2tlbiYgdG9rZW4pCiB7Ci0gICAgcmV0dXJuIHRva2VuLm5hbWUoKS5zaXplKCkgPT0gNCAmJiB0
b2tlbi5uYW1lKClbMF0gPT0gJ2wnICYmIHRva2VuLm5hbWUoKVsxXSA9PSAnYScgJiYgdG9rZW4u
bmFtZSgpWzJdID09ICduJyAmJiB0b2tlbi5uYW1lKClbM10gPT0gJ2cnOworICAgIHN3aXRjaCAo
dG9rZW4ubmFtZSgpLnNpemUoKSkgeworICAgIGNhc2UgMToKKyAgICAgICAgaWYgKHRva2VuLm5h
bWUoKVswXSA9PSAnYycpCisgICAgICAgICAgICByZXR1cm4gV2ViVlRUTm9kZVR5cGVDbGFzczsK
KyAgICAgICAgaWYgKHRva2VuLm5hbWUoKVswXSA9PSAndicpCisgICAgICAgICAgICByZXR1cm4g
V2ViVlRUTm9kZVR5cGVWb2ljZTsKKyAgICAgICAgaWYgKHRva2VuLm5hbWUoKVswXSA9PSAnYicp
CisgICAgICAgICAgICByZXR1cm4gV2ViVlRUTm9kZVR5cGVCb2xkOworICAgICAgICBpZiAodG9r
ZW4ubmFtZSgpWzBdID09ICdpJykKKyAgICAgICAgICAgIHJldHVybiBXZWJWVFROb2RlVHlwZUl0
YWxpYzsKKyAgICAgICAgaWYgKHRva2VuLm5hbWUoKVswXSA9PSAndScpCisgICAgICAgICAgICBy
ZXR1cm4gV2ViVlRUTm9kZVR5cGVVbmRlcmxpbmU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
MjoKKyAgICAgICAgaWYgKHRva2VuLm5hbWUoKVswXSA9PSAncicgJiYgdG9rZW4ubmFtZSgpWzFd
ID09ICd0JykKKyAgICAgICAgICAgIHJldHVybiBXZWJWVFROb2RlVHlwZVJ1YnlUZXh0OworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIDQ6CisgICAgICAgIGlmICh0b2tlbi5uYW1lKClbMF0gPT0g
J3InICYmIHRva2VuLm5hbWUoKVsxXSA9PSAndScgJiYgdG9rZW4ubmFtZSgpWzJdID09ICdiJyAm
JiB0b2tlbi5uYW1lKClbM10gPT0gJ3knKQorICAgICAgICAgICAgcmV0dXJuIFdlYlZUVE5vZGVU
eXBlUnVieTsKKyAgICAgICAgaWYgKHRva2VuLm5hbWUoKVswXSA9PSAnbCcgJiYgdG9rZW4ubmFt
ZSgpWzFdID09ICdhJyAmJiB0b2tlbi5uYW1lKClbMl0gPT0gJ24nICYmIHRva2VuLm5hbWUoKVsz
XSA9PSAnZycpCisgICAgICAgICAgICByZXR1cm4gV2ViVlRUTm9kZVR5cGVMYW5ndWFnZTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiBXZWJWVFROb2RlVHlwZU5vbmU7CiB9CiAK
IHZvaWQgV2ViVlRUUGFyc2VyOjpjb25zdHJ1Y3RUcmVlRnJvbVRva2VuKERvY3VtZW50KiBkb2N1
bWVudCkKQEAgLTM2Myw0MyArMzg3LDM2IEBAIHZvaWQgV2ViVlRUUGFyc2VyOjpjb25zdHJ1Y3RU
cmVlRnJvbVRva2VuKERvY3VtZW50KiBkb2N1bWVudCkKICAgICB9CiAgICAgY2FzZSBXZWJWVFRU
b2tlblR5cGVzOjpTdGFydFRhZzogewogICAgICAgICBSZWZQdHI8V2ViVlRURWxlbWVudD4gY2hp
bGQ7Ci0gICAgICAgIGlmIChpc1JlY29nbml6ZWRUYWcodG9rZW5UYWdOYW1lKSkKLSAgICAgICAg
ICAgIGNoaWxkID0gV2ViVlRURWxlbWVudDo6Y3JlYXRlKHRhZ05hbWUsIGRvY3VtZW50KTsKLSAg
ICAgICAgZWxzZSBpZiAobV90b2tlbi5uYW1lKCkuc2l6ZSgpID09IDEgJiYgbV90b2tlbi5uYW1l
KClbMF0gPT0gJ2MnKQotICAgICAgICAgICAgY2hpbGQgPSBXZWJWVFRFbGVtZW50OjpjcmVhdGUo
VGV4dFRyYWNrQ3VlOjpjbGFzc0VsZW1lbnRUYWdOYW1lKCksIGRvY3VtZW50KTsKLSAgICAgICAg
ZWxzZSBpZiAobV90b2tlbi5uYW1lKCkuc2l6ZSgpID09IDEgJiYgbV90b2tlbi5uYW1lKClbMF0g
PT0gJ3YnKQotICAgICAgICAgICAgY2hpbGQgPSBXZWJWVFRFbGVtZW50OjpjcmVhdGUoVGV4dFRy
YWNrQ3VlOjp2b2ljZUVsZW1lbnRUYWdOYW1lKCksIGRvY3VtZW50KTsKLSAgICAgICAgZWxzZSBp
ZiAoaXNMYW5nVG9rZW4obV90b2tlbikpCi0gICAgICAgICAgICBjaGlsZCA9IFdlYlZUVEVsZW1l
bnQ6OmNyZWF0ZShUZXh0VHJhY2tDdWU6OmxhbmdFbGVtZW50VGFnTmFtZSgpLCBkb2N1bWVudCk7
Ci0KKyAgICAgICAgV2ViVlRUTm9kZVR5cGUgbm9kZVR5cGUgPSB0b2tlblRvTm9kZVR5cGUobV90
b2tlbik7CisgICAgICAgIGlmIChub2RlVHlwZSAhPSBXZWJWVFROb2RlVHlwZU5vbmUpCisgICAg
ICAgICAgICBjaGlsZCA9IFdlYlZUVEVsZW1lbnQ6OmNyZWF0ZShub2RlVHlwZSwgZG9jdW1lbnQp
OwogICAgICAgICBpZiAoY2hpbGQpIHsKICAgICAgICAgICAgIGlmIChtX3Rva2VuLmNsYXNzZXMo
KS5zaXplKCkgPiAwKQogICAgICAgICAgICAgICAgIGNoaWxkLT5zZXRBdHRyaWJ1dGUoY2xhc3NB
dHRyLCBBdG9taWNTdHJpbmcobV90b2tlbi5jbGFzc2VzKCkuZGF0YSgpLCBtX3Rva2VuLmNsYXNz
ZXMoKS5zaXplKCkpKTsKLSAgICAgICAgICAgIGlmIChjaGlsZC0+aGFzVGFnTmFtZShUZXh0VHJh
Y2tDdWU6OnZvaWNlRWxlbWVudFRhZ05hbWUoKSkpCi0gICAgICAgICAgICAgICAgY2hpbGQtPnNl
dEF0dHJpYnV0ZShUZXh0VHJhY2tDdWU6OnZvaWNlQXR0cmlidXRlTmFtZSgpLCBBdG9taWNTdHJp
bmcobV90b2tlbi5hbm5vdGF0aW9uKCkuZGF0YSgpLCBtX3Rva2VuLmFubm90YXRpb24oKS5zaXpl
KCkpKTsKLSAgICAgICAgICAgIGlmIChjaGlsZC0+aGFzVGFnTmFtZShUZXh0VHJhY2tDdWU6Omxh
bmdFbGVtZW50VGFnTmFtZSgpKSkKKworICAgICAgICAgICAgaWYgKGNoaWxkLT53ZWJWVFROb2Rl
VHlwZSgpID09IFdlYlZUVE5vZGVUeXBlVm9pY2UpCisgICAgICAgICAgICAgICAgY2hpbGQtPnNl
dEF0dHJpYnV0ZShXZWJWVFRFbGVtZW50Ojp2b2ljZUF0dHJpYnV0ZU5hbWUoKSwgQXRvbWljU3Ry
aW5nKG1fdG9rZW4uYW5ub3RhdGlvbigpLmRhdGEoKSwgbV90b2tlbi5hbm5vdGF0aW9uKCkuc2l6
ZSgpKSk7CisgICAgICAgICAgICBlbHNlIGlmIChjaGlsZC0+d2ViVlRUTm9kZVR5cGUoKSA9PSBX
ZWJWVFROb2RlVHlwZUxhbmd1YWdlKQogICAgICAgICAgICAgICAgIG1fbGFuZ3VhZ2VTdGFjay5h
cHBlbmQoQXRvbWljU3RyaW5nKG1fdG9rZW4uYW5ub3RhdGlvbigpLmRhdGEoKSwgbV90b2tlbi5h
bm5vdGF0aW9uKCkuc2l6ZSgpKSk7CisKICAgICAgICAgICAgIGlmICghbV9sYW5ndWFnZVN0YWNr
LmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBjaGlsZC0+c2V0QXR0cmlidXRlKFRleHRUcmFj
a0N1ZTo6bGFuZ0F0dHJpYnV0ZU5hbWUoKSwgbV9sYW5ndWFnZVN0YWNrLmxhc3QoKSk7CisgICAg
ICAgICAgICAgICAgY2hpbGQtPnNldEF0dHJpYnV0ZShXZWJWVFRFbGVtZW50OjpsYW5nQXR0cmli
dXRlTmFtZSgpLCBtX2xhbmd1YWdlU3RhY2subGFzdCgpKTsKKwogICAgICAgICAgICAgbV9jdXJy
ZW50Tm9kZS0+cGFyc2VyQXBwZW5kQ2hpbGQoY2hpbGQpOwogICAgICAgICAgICAgbV9jdXJyZW50
Tm9kZSA9IGNoaWxkOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNl
IFdlYlZUVFRva2VuVHlwZXM6OkVuZFRhZzoKLSAgICAgICAgaWYgKGlzUmVjb2duaXplZFRhZyh0
b2tlblRhZ05hbWUpCi0gICAgICAgICAgICB8fCAobV90b2tlbi5uYW1lKCkuc2l6ZSgpID09IDEg
JiYgbV90b2tlbi5uYW1lKClbMF0gPT0gJ2MnKQotICAgICAgICAgICAgfHwgKG1fdG9rZW4ubmFt
ZSgpLnNpemUoKSA9PSAxICYmIG1fdG9rZW4ubmFtZSgpWzBdID09ICd2JykpIHsKLSAgICAgICAg
ICAgIGlmIChtX2N1cnJlbnROb2RlLT5wYXJlbnROb2RlKCkpCi0gICAgICAgICAgICAgICAgbV9j
dXJyZW50Tm9kZSA9IG1fY3VycmVudE5vZGUtPnBhcmVudE5vZGUoKTsKLSAgICAgICAgfQotICAg
ICAgICBpZiAoaXNMYW5nVG9rZW4obV90b2tlbikpIHsKLSAgICAgICAgICAgIGlmIChtX2N1cnJl
bnROb2RlLT5oYXNUYWdOYW1lKFRleHRUcmFja0N1ZTo6bGFuZ0VsZW1lbnRUYWdOYW1lKCkpKQor
ICAgIGNhc2UgV2ViVlRUVG9rZW5UeXBlczo6RW5kVGFnOiB7CisgICAgICAgIFdlYlZUVE5vZGVU
eXBlIG5vZGVUeXBlID0gdG9rZW5Ub05vZGVUeXBlKG1fdG9rZW4pOworICAgICAgICBpZiAobm9k
ZVR5cGUgIT0gV2ViVlRUTm9kZVR5cGVOb25lKSB7CisgICAgICAgICAgICBpZiAobm9kZVR5cGUg
PT0gV2ViVlRUTm9kZVR5cGVMYW5ndWFnZSAmJiBtX2N1cnJlbnROb2RlLT5pc1dlYlZUVEVsZW1l
bnQoKSAmJiB0b1dlYlZUVEVsZW1lbnQobV9jdXJyZW50Tm9kZS5nZXQoKSktPndlYlZUVE5vZGVU
eXBlKCkgPT0gV2ViVlRUTm9kZVR5cGVMYW5ndWFnZSkKICAgICAgICAgICAgICAgICBtX2xhbmd1
YWdlU3RhY2sucmVtb3ZlTGFzdCgpOwogICAgICAgICAgICAgaWYgKG1fY3VycmVudE5vZGUtPnBh
cmVudE5vZGUoKSkKICAgICAgICAgICAgICAgICBtX2N1cnJlbnROb2RlID0gbV9jdXJyZW50Tm9k
ZS0+cGFyZW50Tm9kZSgpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOworICAgIH0KICAgICBj
YXNlIFdlYlZUVFRva2VuVHlwZXM6OlRpbWVzdGFtcFRhZzogewogICAgICAgICB1bnNpZ25lZCBw
b3NpdGlvbiA9IDA7CiAgICAgICAgIGRvdWJsZSB0aW1lID0gY29sbGVjdFRpbWVTdGFtcChtX3Rv
a2VuLmNoYXJhY3RlcnMoKS5kYXRhKCksICZwb3NpdGlvbik7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>