<?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>24143</bug_id>
          
          <creation_ts>2009-02-24 16:33:12 -0800</creation_ts>
          <short_desc>Crash occurs at WebCore::AccessibilityTable::isTableExposableThroughAccessibility() when applying a link in GMail</short_desc>
          <delta_ts>2009-05-18 11:32:33 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="chris fleizach">cfleizach</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>110860</commentid>
    <comment_count>0</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-02-24 16:33:12 -0800</bug_when>
    <thetext>Thread 0 Crashed:
0   com.apple.WebCore             	0x00007fff83ef3915 WebCore::AccessibilityTable::isTableExposableThroughAccessibility() + 773
1   com.apple.WebCore             	0x00007fff83ef3c3b WebCore::AccessibilityTable::AccessibilityTable(WebCore::RenderObject*) + 91
2   com.apple.WebCore             	0x00007fff83c7cc12 WebCore::AccessibilityTable::create(WebCore::RenderObject*) + 50
3   com.apple.WebCore             	0x00007fff83bd40eb WebCore::AXObjectCache::get(WebCore::RenderObject*) + 363
4   com.apple.WebCore             	0x00007fff83bdf0ed WebCore::AccessibilityRenderObject::childrenChanged() + 61
5   com.apple.WebCore             	0x00007fff83bd8c05 WebCore::AXObjectCache::childrenChanged(WebCore::RenderObject*) + 101
6   com.apple.WebCore             	0x00007fff83a8febe WebCore::RenderObject::destroy() + 222
7   com.apple.WebCore             	0x00007fff83a8fce7 WebCore::RenderBox::destroy() + 71
8   com.apple.WebCore             	0x00007fff8411570d WebCore::RenderObjectChildList::destroyLeftoverChildren() + 141
9   com.apple.WebCore             	0x00007fff840f7476 WebCore::RenderBlock::destroy() + 54
10  com.apple.WebCore             	0x00007fff83a8fc46 WebCore::Node::detach() + 38
11  com.apple.WebCore             	0x00007fff83a8fafe WebCore::Element::detach() + 110
12  com.apple.WebCore             	0x00007fff83b4cc01 WebCore::HTMLInputElement::detach() + 17
13  com.apple.WebCore             	0x00007fff83a8fa6c WebCore::ContainerNode::detach() + 44
14  com.apple.WebCore             	0x00007fff83a8fafe WebCore::Element::detach() + 110
15  com.apple.WebCore             	0x00007fff83a8fa6c WebCore::ContainerNode::detach() + 44
16  com.apple.WebCore             	0x00007fff83a8fafe WebCore::Element::detach() + 110
17  com.apple.WebCore             	0x00007fff83a8fa6c WebCore::ContainerNode::detach() + 44
18  com.apple.WebCore             	0x00007fff83a8fafe WebCore::Element::detach() + 110
19  com.apple.WebCore             	0x00007fff83a8fa6c WebCore::ContainerNode::detach() + 44
20  com.apple.WebCore             	0x00007fff83a8fafe WebCore::Element::detach() + 110
21  com.apple.WebCore             	0x00007fff83a8fa6c WebCore::ContainerNode::detach() + 44
22  com.apple.WebCore             	0x00007fff83a8fafe WebCore::Element::detach() + 110
23  com.apple.WebCore             	0x00007fff83a8fa6c WebCore::ContainerNode::detach() + 44
24  com.apple.WebCore             	0x00007fff83a8fafe WebCore::Element::detach() + 110
25  com.apple.WebCore             	0x00007fff83a8fa6c WebCore::ContainerNode::detach() + 44
26  com.apple.WebCore             	0x00007fff83a8fafe WebCore::Element::detach() + 110
27  com.apple.WebCore             	0x00007fff83a8fa6c WebCore::ContainerNode::detach() + 44
28  com.apple.WebCore             	0x00007fff83a8fafe WebCore::Element::detach() + 110
29  com.apple.WebCore             	0x00007fff83a8fa6c WebCore::ContainerNode::detach() + 44
30  com.apple.WebCore             	0x00007fff83a8fafe WebCore::Element::detach() + 110
31  com.apple.WebCore             	0x00007fff83a8fa6c WebCore::ContainerNode::detach() + 44
32  com.apple.WebCore             	0x00007fff83a8fafe WebCore::Element::detach() + 110
33  com.apple.WebCore             	0x00007fff83b323f5 WebCore::ContainerNode::removeChild(WebCore::Node*, int&amp;) + 405
34  com.apple.WebCore             	0x00007fff83b4f3c7 WebCore::JSNode::removeChild(JSC::ExecState*, JSC::ArgList const&amp;) + 87
35  com.apple.WebCore             	0x00007fff83b4f36e WebCore::jsNodePrototypeFunctionRemoveChild(JSC::ExecState*, JSC::JSObject*, JSC::JSValuePtr, JSC::ArgList const&amp;) + 110
36  com.apple.JavaScriptCore      	0x00007fff876540b9 JSC::Interpreter::cti_op_call_NotJSFunction(void**) + 537
37  ???                           	0x000000011b4d62ba 0 + 4753023674
38  com.apple.JavaScriptCore      	0x00007fff8760805e JSC::Interpreter::execute(JSC::FunctionBodyNode*, JSC::ExecState*, JSC::JSFunction*, JSC::JSObject*, JSC::ArgList const&amp;, JSC::ScopeChainNode*, JSC::JSValuePtr*) + 558
39  ???</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110881</commentid>
    <comment_count>1</comment_count>
      <attachid>27949</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-02-24 18:34:06 -0800</bug_when>
    <thetext>Created attachment 27949
patch to fix crash</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110883</commentid>
    <comment_count>2</comment_count>
      <attachid>27951</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-02-24 18:34:18 -0800</bug_when>
    <thetext>Created attachment 27951
patch to fix crash</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110884</commentid>
    <comment_count>3</comment_count>
      <attachid>27952</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-02-24 18:34:18 -0800</bug_when>
    <thetext>Created attachment 27952
patch to fix crash</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110886</commentid>
    <comment_count>4</comment_count>
      <attachid>27954</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-02-24 18:36:24 -0800</bug_when>
    <thetext>Created attachment 27954
patch to fix crash</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>111021</commentid>
    <comment_count>5</comment_count>
      <attachid>27954</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2009-02-25 13:35:35 -0800</bug_when>
    <thetext>Comment on attachment 27954
patch to fix crash

Hey Chris! This patch looks good. My only comments really have to go with naming conventions. I am not wild about the names get() and getIfExists(). How about one of the following:

get() = getOrCreate()
getIfExists() = get()

or

get() = add()
getIfExists() = get()

The add() one is a little weird, I know, but that is a common naming convention for this kind of thing is some other parts of WebCore…basically it means add this to the cache or just return it if it already exists. That being said, I like getOrCreate() as well, so you can choose whichever you prefer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>111024</commentid>
    <comment_count>6</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-02-25 13:43:27 -0800</bug_when>
    <thetext>I will go with getOrCreate. that is a little more explicit than &quot;add&quot;, since most of the time this method is used, it is just to get things. changing get to getOrCreate will make this a much bigger patch 

(In reply to comment #5)
&gt; (From update of attachment 27954 [review])
&gt; Hey Chris! This patch looks good. My only comments really have to go with
&gt; naming conventions. I am not wild about the names get() and getIfExists(). How
&gt; about one of the following:
&gt; 
&gt; get() = getOrCreate()
&gt; getIfExists() = get()
&gt; 
&gt; or
&gt; 
&gt; get() = add()
&gt; getIfExists() = get()
&gt; 
&gt; The add() one is a little weird, I know, but that is a common naming convention
&gt; for this kind of thing is some other parts of WebCore…basically it means add
&gt; this to the cache or just return it if it already exists. That being said, I
&gt; like getOrCreate() as well, so you can choose whichever you prefer.
&gt; </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>111074</commentid>
    <comment_count>7</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-02-25 16:28:11 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/41236</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121816</commentid>
    <comment_count>8</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-05-18 11:32:33 -0700</bug_when>
    <thetext>*** Bug 22340 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27949</attachid>
            <date>2009-02-24 18:34:06 -0800</date>
            <delta_ts>2009-02-24 18:35:49 -0800</delta_ts>
            <desc>patch to fix crash</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>14517</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvcGFnZS9BWE9iamVjdENhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BhZ2UvQVhPYmplY3RDYWNoZS5jcHAJKHJldmlzaW9uIDQxMTk4KQorKysgV2ViQ29yZS9w
YWdlL0FYT2JqZWN0Q2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCw0NCArNTgsNTggQEAg
QVhPYmplY3RDYWNoZTo6fkFYT2JqZWN0Q2FjaGUoKQogICAgICAgICBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBvYmogPSAoKml0KS5zZWNvbmQuZ2V0KCk7CiAgICAgICAgIGRldGFjaFdyYXBwZXIob2Jq
KTsKICAgICAgICAgb2JqLT5kZXRhY2goKTsKKyAgICAgICAgcmVtb3ZlQVhJRChvYmopOwogICAg
IH0KIH0KIAotQWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Z2V0KFJlbmRlck9i
amVjdCogcmVuZGVyZXIpCitBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpnZXRJ
ZkV4aXN0cyhSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogewogICAgIGlmICghcmVuZGVyZXIpCiAg
ICAgICAgIHJldHVybiAwOwogICAgIAotICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBv
YmogPSAwOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiA9IDA7CiAgICAgQVhJRCBheElE
ID0gbV9yZW5kZXJPYmplY3RNYXBwaW5nLmdldChyZW5kZXJlcik7CiAgICAgQVNTRVJUKCFIYXNo
VHJhaXRzPEFYSUQ+Ojppc0RlbGV0ZWRWYWx1ZShheElEKSk7CiAKICAgICBpZiAoYXhJRCkKICAg
ICAgICAgb2JqID0gbV9vYmplY3RzLmdldChheElEKS5nZXQoKTsKKyAgICAKKyAgICByZXR1cm4g
b2JqOworfQorCitBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpnZXQoUmVuZGVy
T2JqZWN0KiByZW5kZXJlcikKK3sKKyAgICBpZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1cm4g
MDsKKyAgICAKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmogPSBnZXRJZkV4aXN0cyhyZW5k
ZXJlcik7CiAKLSAgICBOb2RlKiBub2RlID0gcmVuZGVyZXItPm5vZGUoKTsKICAgICBpZiAoIW9i
aikgeworICAgICAgICBOb2RlKiBub2RlID0gcmVuZGVyZXItPm5vZGUoKTsKKyAgICAgICAgUmVm
UHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IG5ld09iaiA9IDA7CiAgICAgICAgIGlmIChyZW5kZXJl
ci0+aXNMaXN0Qm94KCkpCi0gICAgICAgICAgICBvYmogPSBBY2Nlc3NpYmlsaXR5TGlzdEJveDo6
Y3JlYXRlKHJlbmRlcmVyKTsKKyAgICAgICAgICAgIG5ld09iaiA9IEFjY2Vzc2liaWxpdHlMaXN0
Qm94OjpjcmVhdGUocmVuZGVyZXIpOwogICAgICAgICBlbHNlIGlmIChub2RlICYmIChub2RlLT5o
YXNUYWdOYW1lKHVsVGFnKSB8fCBub2RlLT5oYXNUYWdOYW1lKG9sVGFnKSB8fCBub2RlLT5oYXNU
YWdOYW1lKGRsVGFnKSkpCi0gICAgICAgICAgICBvYmogPSBBY2Nlc3NpYmlsaXR5TGlzdDo6Y3Jl
YXRlKHJlbmRlcmVyKTsKKyAgICAgICAgICAgIG5ld09iaiA9IEFjY2Vzc2liaWxpdHlMaXN0Ojpj
cmVhdGUocmVuZGVyZXIpOwogICAgICAgICBlbHNlIGlmIChyZW5kZXJlci0+aXNUYWJsZSgpKQot
ICAgICAgICAgICAgb2JqID0gQWNjZXNzaWJpbGl0eVRhYmxlOjpjcmVhdGUocmVuZGVyZXIpOwor
ICAgICAgICAgICAgbmV3T2JqID0gQWNjZXNzaWJpbGl0eVRhYmxlOjpjcmVhdGUocmVuZGVyZXIp
OwogICAgICAgICBlbHNlIGlmIChyZW5kZXJlci0+aXNUYWJsZVJvdygpKQotICAgICAgICAgICAg
b2JqID0gQWNjZXNzaWJpbGl0eVRhYmxlUm93OjpjcmVhdGUocmVuZGVyZXIpOworICAgICAgICAg
ICAgbmV3T2JqID0gQWNjZXNzaWJpbGl0eVRhYmxlUm93OjpjcmVhdGUocmVuZGVyZXIpOwogICAg
ICAgICBlbHNlIGlmIChyZW5kZXJlci0+aXNUYWJsZUNlbGwoKSkKLSAgICAgICAgICAgIG9iaiA9
IEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmNyZWF0ZShyZW5kZXJlcik7CisgICAgICAgICAgICBu
ZXdPYmogPSBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpjcmVhdGUocmVuZGVyZXIpOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBvYmogPSBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpjcmVh
dGUocmVuZGVyZXIpOworICAgICAgICAgICAgbmV3T2JqID0gQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6Y3JlYXRlKHJlbmRlcmVyKTsKICAgICAgICAgCi0gICAgICAgIGdldEFYSUQob2JqLmdl
dCgpKTsKKyAgICAgICAgb2JqID0gbmV3T2JqLmdldCgpOworICAgICAgICAKKyAgICAgICAgZ2V0
QVhJRChvYmopOwogICAgICAgICAKLSAgICAgICAgbV9yZW5kZXJPYmplY3RNYXBwaW5nLnNldChy
ZW5kZXJlciwgb2JqLmdldCgpLT5heE9iamVjdElEKCkpOwotICAgICAgICBtX29iamVjdHMuc2V0
KG9iai5nZXQoKS0+YXhPYmplY3RJRCgpLCBvYmopOyAgICAKLSAgICAgICAgYXR0YWNoV3JhcHBl
cihvYmouZ2V0KCkpOworICAgICAgICBtX3JlbmRlck9iamVjdE1hcHBpbmcuc2V0KHJlbmRlcmVy
LCBvYmotPmF4T2JqZWN0SUQoKSk7CisgICAgICAgIG1fb2JqZWN0cy5zZXQob2JqLT5heE9iamVj
dElEKCksIG9iaik7ICAgIAorICAgICAgICBhdHRhY2hXcmFwcGVyKG9iaik7CiAgICAgfQogICAg
IAotICAgIHJldHVybiBvYmouZ2V0KCk7CisgICAgcmV0dXJuIG9iajsKIH0KIAogQWNjZXNzaWJp
bGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Z2V0KEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUpCkBA
IC0xODYsNiArMjAwLDkgQEAgQVhJRCBBWE9iamVjdENhY2hlOjpnZXRBWElEKEFjY2Vzc2liaWxp
dAogCiB2b2lkIEFYT2JqZWN0Q2FjaGU6OnJlbW92ZUFYSUQoQWNjZXNzaWJpbGl0eU9iamVjdCog
b2JqKQogeworICAgIGlmICghb2JqKQorICAgICAgICByZXR1cm47CisgICAgCiAgICAgQVhJRCBv
YmpJRCA9IG9iai0+YXhPYmplY3RJRCgpOwogICAgIGlmIChvYmpJRCA9PSAwKQogICAgICAgICBy
ZXR1cm47CkluZGV4OiBXZWJDb3JlL3BhZ2UvQVhPYmplY3RDYWNoZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGFnZS9BWE9iamVjdENhY2hlLmgJKHJldmlzaW9uIDQxMTk4KQorKysgV2ViQ29y
ZS9wYWdlL0FYT2JqZWN0Q2FjaGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjUsNiArNjUsOSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIHVzZWQgZm9yIG9iamVjdHMgd2l0aG91dCBi
YWNraW5nIGVsZW1lbnRzCiAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGdldChBY2Nlc3Np
YmlsaXR5Um9sZSk7CiAgICAgICAgIAorICAgICAgICAvLyB3aWxsIG9ubHkgcmV0dXJuIHRoZSBB
Y2Nlc3NpYmlsaXR5T2JqZWN0IGlmIGl0IGFscmVhZHkgZXhpc3RzCisgICAgICAgIEFjY2Vzc2li
aWxpdHlPYmplY3QqIGdldElmRXhpc3RzKFJlbmRlck9iamVjdCopOworICAgICAgICAKICAgICAg
ICAgdm9pZCByZW1vdmUoUmVuZGVyT2JqZWN0Kik7CiAgICAgICAgIHZvaWQgcmVtb3ZlKEFYSUQp
OwogCkluZGV4OiBXZWJDb3JlL3BhZ2UvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCShyZXZpc2lvbiA0MTE5
OCkKKysrIFdlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzUsNyArNzUsNiBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp+QWNjZXNzaWJpbGl0eU9i
amVjCiAKIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6ZGV0YWNoKCkKIHsKLSAgICByZW1vdmVB
WE9iamVjdElEKCk7CiAjaWYgSEFWRShBQ0NFU1NJQklMSVRZKQogICAgIHNldFdyYXBwZXIoMCk7
CiAjZW5kaWYgICAgCkBAIC0xMTQsNiArMTEzLDExIEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFj
Y2Vzc2liaWxpdHlPYmplY3QKICAgICByZXR1cm4gcGFyZW50OwogfQogCitBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpwYXJlbnRPYmplY3RJZkV4aXN0cygpIGNvbnN0
Cit7CisgICAgcmV0dXJuIDA7Cit9CisgICAgCiBpbnQgQWNjZXNzaWJpbGl0eU9iamVjdDo6bGF5
b3V0Q291bnQoKSBjb25zdAogewogICAgIHJldHVybiAwOwpAQCAtOTk2LDExICsxMDAwLDYgQEAg
dm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRBWE9iamVjdElEKAogICAgIG1faWQgPSBheE9i
amVjdElEOwogfQogCi12b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnJlbW92ZUFYT2JqZWN0SUQo
KQotewotICAgIHJldHVybjsKLX0KLQogY29uc3QgU3RyaW5nJiBBY2Nlc3NpYmlsaXR5T2JqZWN0
OjphY3Rpb25WZXJiKCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogTmVlZCB0byBhZGQgdmVyYnMg
Zm9yIHNlbGVjdCBlbGVtZW50cy4KSW5kZXg6IFdlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlPYmplY3QuaAko
cmV2aXNpb24gNDExOTgpCisrKyBXZWJDb3JlL3BhZ2UvQWNjZXNzaWJpbGl0eU9iamVjdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNjYsNiArMjY2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgQWNj
ZXNzaWJpbGl0eU9iamVjdCogbmV4dFNpYmxpbmcoKSBjb25zdDsKICAgICB2aXJ0dWFsIEFjY2Vz
c2liaWxpdHlPYmplY3QqIHBhcmVudE9iamVjdCgpIGNvbnN0OwogICAgIHZpcnR1YWwgQWNjZXNz
aWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0VW5pZ25vcmVkKCkgY29uc3Q7CisgICAgdmlydHVh
bCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnRPYmplY3RJZkV4aXN0cygpIGNvbnN0OwogICAg
IHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogb2JzZXJ2YWJsZU9iamVjdCgpIGNvbnN0Owog
ICAgIHZpcnR1YWwgdm9pZCBsaW5rZWRVSUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciYpIGNvbnN0OwogICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogdGl0bGVVSUVs
ZW1lbnQoKSBjb25zdDsKQEAgLTQxMCw3ICs0MTEsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgbXV0YWJs
ZSBib29sIG1faGF2ZUNoaWxkcmVuOwogICAgIAogICAgIHZpcnR1YWwgdm9pZCBjbGVhckNoaWxk
cmVuKCk7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZUFYT2JqZWN0SUQoKTsKICAgICB2aXJ0dWFs
IGJvb2wgaXNEZXRhY2hlZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogI2lmIFBMQVRGT1JN
KE1BQykKSW5kZXg6IFdlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAJ
KHJldmlzaW9uIDQxMTk4KQorKysgV2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjAsNiArMTYwLDE4IEBAIEFjY2Vzc2liaWxpdHlP
YmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXIKICAgICByZXR1cm4gbV9yZW5kZXJlci0+ZG9jdW1l
bnQoKS0+YXhPYmplY3RDYWNoZSgpLT5nZXQobmV4dFNpYmxpbmcpOwogfQogCitBY2Nlc3NpYmls
aXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpwYXJlbnRPYmplY3RJZkV4aXN0
cygpIGNvbnN0Cit7CisgICAgaWYgKCFtX3JlbmRlcmVyKQorICAgICAgICByZXR1cm4gMDsKKyAg
ICAKKyAgICBSZW5kZXJPYmplY3QgKnBhcmVudCA9IG1fcmVuZGVyZXItPnBhcmVudCgpOworICAg
IGlmICghcGFyZW50KQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBtX3JlbmRlcmVy
LT5kb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPmdldElmRXhpc3RzKHBhcmVudCk7Cit9Cisg
ICAgCiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpwYXJl
bnRPYmplY3QoKSBjb25zdAogewogICAgIGlmICghbV9yZW5kZXJlcikKQEAgLTIyMCw2ICsyMzIs
OSBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzSW1hZ2UoCiAKIGJvb2wgQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNBdHRhY2htZW50KCkgY29uc3QKIHsKKyAgICBpZiAo
IW1fcmVuZGVyZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKICAgICAvLyBXaWRnZXRz
IGFyZSB0aGUgcmVwbGFjZWQgZWxlbWVudHMgdGhhdCB3ZSByZXByZXNlbnQgdG8gQVggYXMgYXR0
YWNobWVudHMKICAgICBib29sIGlzV2lkZ2V0ID0gbV9yZW5kZXJlciAmJiBtX3JlbmRlcmVyLT5p
c1dpZGdldCgpOwogICAgIEFTU0VSVCghaXNXaWRnZXQgfHwgKG1fcmVuZGVyZXItPmlzUmVwbGFj
ZWQoKSAmJiAhaXNJbWFnZSgpKSk7CkBAIC0yMjU4LDEzICsyMjczLDE1IEBAIHZvaWQgQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6Y2hpbGRyZW4KICAgICAKICAgICBtYXJrQ2hpbGRyZW5EaXJ0
eSgpOwogICAgIAotICAgIC8vIHRoaXMgb2JqZWN0IG1heSBub3QgYmUgYWNjZXNzaWJsZSAoYW5k
IHRodXMgbWF5IG5vdCBhcHBlYXIKKyAgICAvLyBUaGlzIG9iamVjdCBtYXkgbm90IGJlIGFjY2Vz
c2libGUgKGFuZCB0aHVzIG1heSBub3QgYXBwZWFyCiAgICAgLy8gaW4gdGhlIGhpZXJhcmNoeSks
IHdoaWNoIG1lYW5zIHdlIG5lZWQgdG8gZ28gdXAgdGhlIHBhcmVudAogICAgIC8vIGNoYWluIGFu
ZCBtYXJrIHRoZSBwYXJlbnQncyBkaXJ0eS4gSWRlYWxseSwgd2Ugd291bGQgd2FudAogICAgIC8v
IHRvIG9ubHkgYWNjZXNzIHRoZSBuZXh0IG9iamVjdCB0aGF0IGlzIG5vdCBpZ25vcmVkLCBidXQK
ICAgICAvLyBhc2tpbmcgYW4gZWxlbWVudCBpZiBpdCdzIGlnbm9yZWQgY2FuIGxlYWQgdG8gYW4g
ZXhhbWluYXRpb24gb2YgdGhlCi0gICAgLy8gcmVuZGVyIHRyZWUgd2hpY2ggaXMgZGFuZ2Vyb3Vz
LgotICAgIGZvciAoQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0KCk7
IHBhcmVudDsgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRPYmplY3QoKSkgeworICAgIC8vIHJlbmRl
ciB0cmVlIHdoaWNoIGlzIGRhbmdlcm91cy4gCisgICAgLy8gT25seSBwYXJlbnRzIHRoYXQgYWxy
ZWFkeSBleGlzdCBtdXN0IGJlIHJldHJpZXZlZCwgb3RoZXJ3aXNlIG9iamVjdHMgY2FuIGJlIGNy
ZWF0ZWQKKyAgICAvLyBhdCBiYWQgdGltZXMKKyAgICBmb3IgKEFjY2Vzc2liaWxpdHlPYmplY3Qq
IHBhcmVudCA9IHBhcmVudE9iamVjdElmRXhpc3RzKCk7IHBhcmVudDsgcGFyZW50ID0gcGFyZW50
LT5wYXJlbnRPYmplY3RJZkV4aXN0cygpKSB7CiAgICAgICAgIGlmIChwYXJlbnQtPmlzQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdCgpKQogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8QWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdCAqPihwYXJlbnQpLT5tYXJrQ2hpbGRyZW5EaXJ0eSgpOwogICAgIH0K
QEAgLTI0MTcsMTUgKzI0MzQsNiBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnZp
c2libGVDCiAgICAgcmV0dXJuIGFyaWFMaXN0Ym94VmlzaWJsZUNoaWxkcmVuKHJlc3VsdCk7CiB9
CiAgCi12b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnJlbW92ZUFYT2JqZWN0SUQoKQot
ewotICAgIGlmICghbV9pZCkKLSAgICAgICAgcmV0dXJuOwotI2lmIFBMQVRGT1JNKE1BQykKLSAg
ICBtX3JlbmRlcmVyLT5kb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPnJlbW92ZUFYSUQodGhp
cyk7Ci0jZW5kaWYKLX0gICAKLSAgICAKIGNvbnN0IFN0cmluZyYgQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6YWN0aW9uVmVyYigpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IE5lZWQgdG8gYWRk
IHZlcmJzIGZvciBzZWxlY3QgZWxlbWVudHMuCkluZGV4OiBXZWJDb3JlL3BhZ2UvQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9BY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0LmgJKHJldmlzaW9uIDQxMTk4KQorKysgV2ViQ29yZS9wYWdlL0FjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDYgKzEyNSw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHByZXZpb3VzU2libGlu
ZygpIGNvbnN0OwogICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogbmV4dFNpYmxpbmco
KSBjb25zdDsKICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudE9iamVjdCgp
IGNvbnN0OworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0SWZF
eGlzdHMoKSBjb25zdDsKICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9ic2VydmFi
bGVPYmplY3QoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgbGlua2VkVUlFbGVtZW50cyhBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdDsKICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxp
dHlPYmplY3QqIHRpdGxlVUlFbGVtZW50KCkgY29uc3Q7CkBAIC0yMTgsNyArMjE5LDYgQEAgcHJv
dGVjdGVkOgogICAgIG11dGFibGUgYm9vbCBtX2NoaWxkcmVuRGlydHk7CiAgICAgCiAgICAgdm9p
ZCBzZXRSZW5kZXJPYmplY3QoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgeyBtX3JlbmRlcmVyID0g
cmVuZGVyZXI7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQVhPYmplY3RJRCgpOwogICAgIAog
ICAgIHZpcnR1YWwgYm9vbCBpc0RldGFjaGVkKCkgY29uc3QgeyByZXR1cm4gIW1fcmVuZGVyZXI7
IH0KIApJbmRleDogV2ViQ29yZS9wYWdlL21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyLm1tCShyZXZpc2lvbiA0MTE5OCkKKysrIFdlYkNvcmUvcGFnZS9tYWMvQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTU4Miw2ICs1ODIsOSBAQCBzdGF0
aWMgV2ViQ29yZVRleHRNYXJrZXJSYW5nZSogdGV4dE1hcmtlCiAKIC0gKE5TQXJyYXkqKWFjY2Vz
c2liaWxpdHlBY3Rpb25OYW1lcwogeworICAgIGlmICghbV9vYmplY3QpCisgICAgICAgIHJldHVy
biBuaWw7CisKICAgICBtX29iamVjdC0+dXBkYXRlQmFja2luZ1N0b3JlKCk7CiAKICAgICBzdGF0
aWMgTlNBcnJheSogYWN0aW9uRWxlbWVudEFjdGlvbnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRX
aXRoT2JqZWN0czogTlNBY2Nlc3NpYmlsaXR5UHJlc3NBY3Rpb24sIE5TQWNjZXNzaWJpbGl0eVNo
b3dNZW51QWN0aW9uLCBuaWxdOwpAQCAtNjAzLDYgKzYwNiw5IEBAIHN0YXRpYyBXZWJDb3JlVGV4
dE1hcmtlclJhbmdlKiB0ZXh0TWFya2UKIAogLSAoTlNBcnJheSopYWNjZXNzaWJpbGl0eUF0dHJp
YnV0ZU5hbWVzCiB7CisgICAgaWYgKCFtX29iamVjdCkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAg
ICAKICAgICBtX29iamVjdC0+dXBkYXRlQmFja2luZ1N0b3JlKCk7CiAgICAgCiAgICAgaWYgKG1f
b2JqZWN0LT5pc0F0dGFjaG1lbnQoKSkKQEAgLTE0NDUsNiArMTQ1MSw5IEBAIHN0YXRpYyBOU1N0
cmluZyogcm9sZVZhbHVlVG9OU1N0cmluZyhBY2MKIAogLSAoaWQpYWNjZXNzaWJpbGl0eUZvY3Vz
ZWRVSUVsZW1lbnQKIHsKKyAgICBpZiAoIW1fb2JqZWN0KQorICAgICAgICByZXR1cm4gbmlsOwor
CiAgICAgbV9vYmplY3QtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOwogCiAgICAgUmVmUHRyPEFjY2Vz
c2liaWxpdHlPYmplY3Q+IGZvY3VzZWRPYmogPSBtX29iamVjdC0+Zm9jdXNlZFVJRWxlbWVudCgp
OwpAQCAtMTQ1Nyw2ICsxNDY2LDkgQEAgc3RhdGljIE5TU3RyaW5nKiByb2xlVmFsdWVUb05TU3Ry
aW5nKEFjYwogCiAtIChpZClhY2Nlc3NpYmlsaXR5SGl0VGVzdDooTlNQb2ludClwb2ludAogewor
ICAgIGlmICghbV9vYmplY3QpCisgICAgICAgIHJldHVybiBuaWw7CisKICAgICBtX29iamVjdC0+
dXBkYXRlQmFja2luZ1N0b3JlKCk7CiAKICAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4g
YXhPYmplY3QgPSBtX29iamVjdC0+ZG9BY2Nlc3NpYmlsaXR5SGl0VGVzdChJbnRQb2ludChwb2lu
dCkpOwpAQCAtMTQ2Nyw2ICsxNDc5LDkgQEAgc3RhdGljIE5TU3RyaW5nKiByb2xlVmFsdWVUb05T
U3RyaW5nKEFjYwogCiAtIChCT09MKWFjY2Vzc2liaWxpdHlJc0F0dHJpYnV0ZVNldHRhYmxlOihO
U1N0cmluZyopYXR0cmlidXRlTmFtZQogeworICAgIGlmICghbV9vYmplY3QpCisgICAgICAgIHJl
dHVybiBuaWw7CisKICAgICBtX29iamVjdC0+dXBkYXRlQmFja2luZ1N0b3JlKCk7CiAKICAgICBp
ZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBAIkFYU2VsZWN0ZWRUZXh0TWFya2Vy
UmFuZ2UiXSkKQEAgLTE1MDMsNiArMTUxOCw5IEBAIHN0YXRpYyBOU1N0cmluZyogcm9sZVZhbHVl
VG9OU1N0cmluZyhBY2MKIC8vIFJlZ2lzdGVyaW5nIGFuIG9iamVjdCBpcyBhbHNvIHJlcXVpcmVk
IGZvciBvYnNlcnZpbmcgbm90aWZpY2F0aW9ucy4gT25seSByZWdpc3RlcmVkIG9iamVjdHMgY2Fu
IGJlIG9ic2VydmVkLgogLSAoQk9PTClhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkCiB7CisgICAgaWYg
KCFtX29iamVjdCkKKyAgICAgICAgcmV0dXJuIG5pbDsKKwogICAgIG1fb2JqZWN0LT51cGRhdGVC
YWNraW5nU3RvcmUoKTsKIAogICAgIGlmIChtX29iamVjdC0+aXNBdHRhY2htZW50KCkpCkBAIC0x
NTEyLDYgKzE1MzAsOSBAQCBzdGF0aWMgTlNTdHJpbmcqIHJvbGVWYWx1ZVRvTlNTdHJpbmcoQWNj
CiAKIC0gKE5TQXJyYXkqIClhY2Nlc3NpYmlsaXR5UGFyYW1ldGVyaXplZEF0dHJpYnV0ZU5hbWVz
CiB7CisgICAgaWYgKCFtX29iamVjdCkKKyAgICAgICAgcmV0dXJuIG5pbDsKKwogICAgIG1fb2Jq
ZWN0LT51cGRhdGVCYWNraW5nU3RvcmUoKTsKIAogICAgIGlmIChtX29iamVjdC0+aXNBdHRhY2ht
ZW50KCkpIApAQCAtMTU5NCw2ICsxNjE1LDkgQEAgc3RhdGljIE5TU3RyaW5nKiByb2xlVmFsdWVU
b05TU3RyaW5nKEFjYwogCiAtICh2b2lkKWFjY2Vzc2liaWxpdHlQZXJmb3JtUHJlc3NBY3Rpb24K
IHsKKyAgICBpZiAoIW1fb2JqZWN0KQorICAgICAgICByZXR1cm47CisKICAgICBtX29iamVjdC0+
dXBkYXRlQmFja2luZ1N0b3JlKCk7CiAKICAgICBpZiAobV9vYmplY3QtPmlzQXR0YWNobWVudCgp
KQpAQCAtMTY0MCw2ICsxNjY0LDkgQEAgc3RhdGljIE5TU3RyaW5nKiByb2xlVmFsdWVUb05TU3Ry
aW5nKEFjYwogCiAtICh2b2lkKWFjY2Vzc2liaWxpdHlQZXJmb3JtQWN0aW9uOihOU1N0cmluZyop
YWN0aW9uCiB7CisgICAgaWYgKCFtX29iamVjdCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgbV9v
YmplY3QtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOwogCiAgICAgaWYgKFthY3Rpb24gaXNFcXVhbFRv
U3RyaW5nOk5TQWNjZXNzaWJpbGl0eVByZXNzQWN0aW9uXSkKQEAgLTE2NTEsNiArMTY3OCw5IEBA
IHN0YXRpYyBOU1N0cmluZyogcm9sZVZhbHVlVG9OU1N0cmluZyhBY2MKIAogLSAodm9pZClhY2Nl
c3NpYmlsaXR5U2V0VmFsdWU6KGlkKXZhbHVlIGZvckF0dHJpYnV0ZTooTlNTdHJpbmcqKWF0dHJp
YnV0ZU5hbWUKIHsKKyAgICBpZiAoIW1fb2JqZWN0KQorICAgICAgICByZXR1cm47CisKICAgICBt
X29iamVjdC0+dXBkYXRlQmFja2luZ1N0b3JlKCk7CiAKICAgICBXZWJDb3JlVGV4dE1hcmtlclJh
bmdlKiB0ZXh0TWFya2VyUmFuZ2UgPSBuaWw7CkBAIC0yMDIyLDYgKzIwNTIsOSBAQCBzdGF0aWMg
UmVuZGVyT2JqZWN0KiByZW5kZXJlckZvclZpZXcoTlNWCiAvLyBBUEkgdGhhdCBBcHBLaXQgdXNl
cyBmb3IgZmFzdGVyIGFjY2VzcwogLSAoTlNVSW50ZWdlcilhY2Nlc3NpYmlsaXR5SW5kZXhPZkNo
aWxkOihpZCljaGlsZAogeworICAgIGlmICghbV9vYmplY3QpCisgICAgICAgIHJldHVybiBOU05v
dEZvdW5kOworCiAgICAgbV9vYmplY3QtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOwogICAgIAogICAg
IGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYg
Y2hpbGRyZW4gPSBtX29iamVjdC0+Y2hpbGRyZW4oKTsKQEAgLTIwNDAsNiArMjA3Myw5IEBAIHN0
YXRpYyBSZW5kZXJPYmplY3QqIHJlbmRlcmVyRm9yVmlldyhOU1YKIAogLSAoTlNVSW50ZWdlcilh
Y2Nlc3NpYmlsaXR5QXJyYXlBdHRyaWJ1dGVDb3VudDooTlNTdHJpbmcgKilhdHRyaWJ1dGUKIHsK
KyAgICBpZiAoIW1fb2JqZWN0KQorICAgICAgICByZXR1cm4gMDsKKwogICAgIG1fb2JqZWN0LT51
cGRhdGVCYWNraW5nU3RvcmUoKTsKICAgICAKICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9T
dHJpbmc6TlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5BdHRyaWJ1dGVdKSB7CkBAIC0yMDU1LDYgKzIw
OTEsOSBAQCBzdGF0aWMgUmVuZGVyT2JqZWN0KiByZW5kZXJlckZvclZpZXcoTlNWCiAKIC0gKE5T
QXJyYXkgKilhY2Nlc3NpYmlsaXR5QXJyYXlBdHRyaWJ1dGVWYWx1ZXM6KE5TU3RyaW5nICopYXR0
cmlidXRlIGluZGV4OihOU1VJbnRlZ2VyKWluZGV4IG1heENvdW50OihOU1VJbnRlZ2VyKW1heENv
dW50IAogeworICAgIGlmICghbV9vYmplY3QpCisgICAgICAgIHJldHVybiBuaWw7CisKICAgICBt
X29iamVjdC0+dXBkYXRlQmFja2luZ1N0b3JlKCk7CiAgICAgCiAgICAgaWYgKFthdHRyaWJ1dGUg
aXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlXSkgewpJbmRl
eDogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90YWJsZS11cGRhdGluZy1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90YWJsZS11cGRhdGluZy1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3Rh
YmxlLXVwZGF0aW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorVGVz
dCBwYXNzZXMgaWYgbm8gY3Jhc2guCkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3Rh
YmxlLXVwZGF0aW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS90YWJsZS11cGRhdGluZy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS90YWJsZS11cGRhdGluZy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ3IEBA
Cis8aHRtbD4KKworPGhlYWQ+Cis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKzwv
c2NyaXB0PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCitmdW5jdGlvbiByZW1v
dmVUYWJsZSgpCit7CisgICAgdmFyIHRhYmxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rh
YmxlMScpOworICAgIHZhciBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGFi
bGVjb250YWluZXInKTsKKyAKKyAgICBjb250YWluZXIucmVtb3ZlQ2hpbGQodGFibGUpOyAgCit9
CisKKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keSBpZD0iYm9keSI+CisKKzxkaXYgaWQ9J3Rh
YmxlY29udGFpbmVyJz4KKzx0YWJsZSBpZD0ndGFibGUxJyBib3JkZXI9JzEnIHdpZHRoPTEwMD48
dHIgaWQ9InJvdyI+PHRkPkE8L3RkPjx0ZD5CPC90ZD48dGQ+QzwvdGQ+PC90cj48L3RhYmxlPgor
PC9kaXY+CisKKzxzY3JpcHQ+CisgICAgICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIpIHsKKworICAgICAgICAgICAgdmFyIGJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiYm9keSIpOworICAgICAgICAgICAgYm9keS5mb2N1cygpOworICAgICAgICAgICAgdmFyIGRp
dkNvbnRhaW5lciA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxk
QXRJbmRleCgwKTsKKworICAgICAgICAgICAgdmFyIHJlc3VsdHMgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgicmVzdWx0cyIpOworCisgICAgICAgICAgICBkaXZDb250YWluZXIuYWxsQXR0cmli
dXRlcygpOworCisgICAgICAgICAgICByZW1vdmVUYWJsZSgpOworCisgICAgICAgICAgICBkaXZD
b250YWluZXIuYWxsQXR0cmlidXRlcygpOworICAgICAgICB9Cis8L3NjcmlwdD4KKworVGVzdCBw
YXNzZXMgaWYgbm8gY3Jhc2guCisKKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27951</attachid>
            <date>2009-02-24 18:34:18 -0800</date>
            <delta_ts>2009-02-24 18:34:31 -0800</delta_ts>
            <desc>patch to fix crash</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>14517</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvcGFnZS9BWE9iamVjdENhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BhZ2UvQVhPYmplY3RDYWNoZS5jcHAJKHJldmlzaW9uIDQxMTk4KQorKysgV2ViQ29yZS9w
YWdlL0FYT2JqZWN0Q2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCw0NCArNTgsNTggQEAg
QVhPYmplY3RDYWNoZTo6fkFYT2JqZWN0Q2FjaGUoKQogICAgICAgICBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBvYmogPSAoKml0KS5zZWNvbmQuZ2V0KCk7CiAgICAgICAgIGRldGFjaFdyYXBwZXIob2Jq
KTsKICAgICAgICAgb2JqLT5kZXRhY2goKTsKKyAgICAgICAgcmVtb3ZlQVhJRChvYmopOwogICAg
IH0KIH0KIAotQWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Z2V0KFJlbmRlck9i
amVjdCogcmVuZGVyZXIpCitBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpnZXRJ
ZkV4aXN0cyhSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogewogICAgIGlmICghcmVuZGVyZXIpCiAg
ICAgICAgIHJldHVybiAwOwogICAgIAotICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBv
YmogPSAwOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiA9IDA7CiAgICAgQVhJRCBheElE
ID0gbV9yZW5kZXJPYmplY3RNYXBwaW5nLmdldChyZW5kZXJlcik7CiAgICAgQVNTRVJUKCFIYXNo
VHJhaXRzPEFYSUQ+Ojppc0RlbGV0ZWRWYWx1ZShheElEKSk7CiAKICAgICBpZiAoYXhJRCkKICAg
ICAgICAgb2JqID0gbV9vYmplY3RzLmdldChheElEKS5nZXQoKTsKKyAgICAKKyAgICByZXR1cm4g
b2JqOworfQorCitBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpnZXQoUmVuZGVy
T2JqZWN0KiByZW5kZXJlcikKK3sKKyAgICBpZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1cm4g
MDsKKyAgICAKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmogPSBnZXRJZkV4aXN0cyhyZW5k
ZXJlcik7CiAKLSAgICBOb2RlKiBub2RlID0gcmVuZGVyZXItPm5vZGUoKTsKICAgICBpZiAoIW9i
aikgeworICAgICAgICBOb2RlKiBub2RlID0gcmVuZGVyZXItPm5vZGUoKTsKKyAgICAgICAgUmVm
UHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IG5ld09iaiA9IDA7CiAgICAgICAgIGlmIChyZW5kZXJl
ci0+aXNMaXN0Qm94KCkpCi0gICAgICAgICAgICBvYmogPSBBY2Nlc3NpYmlsaXR5TGlzdEJveDo6
Y3JlYXRlKHJlbmRlcmVyKTsKKyAgICAgICAgICAgIG5ld09iaiA9IEFjY2Vzc2liaWxpdHlMaXN0
Qm94OjpjcmVhdGUocmVuZGVyZXIpOwogICAgICAgICBlbHNlIGlmIChub2RlICYmIChub2RlLT5o
YXNUYWdOYW1lKHVsVGFnKSB8fCBub2RlLT5oYXNUYWdOYW1lKG9sVGFnKSB8fCBub2RlLT5oYXNU
YWdOYW1lKGRsVGFnKSkpCi0gICAgICAgICAgICBvYmogPSBBY2Nlc3NpYmlsaXR5TGlzdDo6Y3Jl
YXRlKHJlbmRlcmVyKTsKKyAgICAgICAgICAgIG5ld09iaiA9IEFjY2Vzc2liaWxpdHlMaXN0Ojpj
cmVhdGUocmVuZGVyZXIpOwogICAgICAgICBlbHNlIGlmIChyZW5kZXJlci0+aXNUYWJsZSgpKQot
ICAgICAgICAgICAgb2JqID0gQWNjZXNzaWJpbGl0eVRhYmxlOjpjcmVhdGUocmVuZGVyZXIpOwor
ICAgICAgICAgICAgbmV3T2JqID0gQWNjZXNzaWJpbGl0eVRhYmxlOjpjcmVhdGUocmVuZGVyZXIp
OwogICAgICAgICBlbHNlIGlmIChyZW5kZXJlci0+aXNUYWJsZVJvdygpKQotICAgICAgICAgICAg
b2JqID0gQWNjZXNzaWJpbGl0eVRhYmxlUm93OjpjcmVhdGUocmVuZGVyZXIpOworICAgICAgICAg
ICAgbmV3T2JqID0gQWNjZXNzaWJpbGl0eVRhYmxlUm93OjpjcmVhdGUocmVuZGVyZXIpOwogICAg
ICAgICBlbHNlIGlmIChyZW5kZXJlci0+aXNUYWJsZUNlbGwoKSkKLSAgICAgICAgICAgIG9iaiA9
IEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmNyZWF0ZShyZW5kZXJlcik7CisgICAgICAgICAgICBu
ZXdPYmogPSBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpjcmVhdGUocmVuZGVyZXIpOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBvYmogPSBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpjcmVh
dGUocmVuZGVyZXIpOworICAgICAgICAgICAgbmV3T2JqID0gQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6Y3JlYXRlKHJlbmRlcmVyKTsKICAgICAgICAgCi0gICAgICAgIGdldEFYSUQob2JqLmdl
dCgpKTsKKyAgICAgICAgb2JqID0gbmV3T2JqLmdldCgpOworICAgICAgICAKKyAgICAgICAgZ2V0
QVhJRChvYmopOwogICAgICAgICAKLSAgICAgICAgbV9yZW5kZXJPYmplY3RNYXBwaW5nLnNldChy
ZW5kZXJlciwgb2JqLmdldCgpLT5heE9iamVjdElEKCkpOwotICAgICAgICBtX29iamVjdHMuc2V0
KG9iai5nZXQoKS0+YXhPYmplY3RJRCgpLCBvYmopOyAgICAKLSAgICAgICAgYXR0YWNoV3JhcHBl
cihvYmouZ2V0KCkpOworICAgICAgICBtX3JlbmRlck9iamVjdE1hcHBpbmcuc2V0KHJlbmRlcmVy
LCBvYmotPmF4T2JqZWN0SUQoKSk7CisgICAgICAgIG1fb2JqZWN0cy5zZXQob2JqLT5heE9iamVj
dElEKCksIG9iaik7ICAgIAorICAgICAgICBhdHRhY2hXcmFwcGVyKG9iaik7CiAgICAgfQogICAg
IAotICAgIHJldHVybiBvYmouZ2V0KCk7CisgICAgcmV0dXJuIG9iajsKIH0KIAogQWNjZXNzaWJp
bGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Z2V0KEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUpCkBA
IC0xODYsNiArMjAwLDkgQEAgQVhJRCBBWE9iamVjdENhY2hlOjpnZXRBWElEKEFjY2Vzc2liaWxp
dAogCiB2b2lkIEFYT2JqZWN0Q2FjaGU6OnJlbW92ZUFYSUQoQWNjZXNzaWJpbGl0eU9iamVjdCog
b2JqKQogeworICAgIGlmICghb2JqKQorICAgICAgICByZXR1cm47CisgICAgCiAgICAgQVhJRCBv
YmpJRCA9IG9iai0+YXhPYmplY3RJRCgpOwogICAgIGlmIChvYmpJRCA9PSAwKQogICAgICAgICBy
ZXR1cm47CkluZGV4OiBXZWJDb3JlL3BhZ2UvQVhPYmplY3RDYWNoZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGFnZS9BWE9iamVjdENhY2hlLmgJKHJldmlzaW9uIDQxMTk4KQorKysgV2ViQ29y
ZS9wYWdlL0FYT2JqZWN0Q2FjaGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjUsNiArNjUsOSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIHVzZWQgZm9yIG9iamVjdHMgd2l0aG91dCBi
YWNraW5nIGVsZW1lbnRzCiAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGdldChBY2Nlc3Np
YmlsaXR5Um9sZSk7CiAgICAgICAgIAorICAgICAgICAvLyB3aWxsIG9ubHkgcmV0dXJuIHRoZSBB
Y2Nlc3NpYmlsaXR5T2JqZWN0IGlmIGl0IGFscmVhZHkgZXhpc3RzCisgICAgICAgIEFjY2Vzc2li
aWxpdHlPYmplY3QqIGdldElmRXhpc3RzKFJlbmRlck9iamVjdCopOworICAgICAgICAKICAgICAg
ICAgdm9pZCByZW1vdmUoUmVuZGVyT2JqZWN0Kik7CiAgICAgICAgIHZvaWQgcmVtb3ZlKEFYSUQp
OwogCkluZGV4OiBXZWJDb3JlL3BhZ2UvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCShyZXZpc2lvbiA0MTE5
OCkKKysrIFdlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzUsNyArNzUsNiBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp+QWNjZXNzaWJpbGl0eU9i
amVjCiAKIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6ZGV0YWNoKCkKIHsKLSAgICByZW1vdmVB
WE9iamVjdElEKCk7CiAjaWYgSEFWRShBQ0NFU1NJQklMSVRZKQogICAgIHNldFdyYXBwZXIoMCk7
CiAjZW5kaWYgICAgCkBAIC0xMTQsNiArMTEzLDExIEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFj
Y2Vzc2liaWxpdHlPYmplY3QKICAgICByZXR1cm4gcGFyZW50OwogfQogCitBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpwYXJlbnRPYmplY3RJZkV4aXN0cygpIGNvbnN0
Cit7CisgICAgcmV0dXJuIDA7Cit9CisgICAgCiBpbnQgQWNjZXNzaWJpbGl0eU9iamVjdDo6bGF5
b3V0Q291bnQoKSBjb25zdAogewogICAgIHJldHVybiAwOwpAQCAtOTk2LDExICsxMDAwLDYgQEAg
dm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRBWE9iamVjdElEKAogICAgIG1faWQgPSBheE9i
amVjdElEOwogfQogCi12b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnJlbW92ZUFYT2JqZWN0SUQo
KQotewotICAgIHJldHVybjsKLX0KLQogY29uc3QgU3RyaW5nJiBBY2Nlc3NpYmlsaXR5T2JqZWN0
OjphY3Rpb25WZXJiKCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogTmVlZCB0byBhZGQgdmVyYnMg
Zm9yIHNlbGVjdCBlbGVtZW50cy4KSW5kZXg6IFdlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlPYmplY3QuaAko
cmV2aXNpb24gNDExOTgpCisrKyBXZWJDb3JlL3BhZ2UvQWNjZXNzaWJpbGl0eU9iamVjdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNjYsNiArMjY2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgQWNj
ZXNzaWJpbGl0eU9iamVjdCogbmV4dFNpYmxpbmcoKSBjb25zdDsKICAgICB2aXJ0dWFsIEFjY2Vz
c2liaWxpdHlPYmplY3QqIHBhcmVudE9iamVjdCgpIGNvbnN0OwogICAgIHZpcnR1YWwgQWNjZXNz
aWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0VW5pZ25vcmVkKCkgY29uc3Q7CisgICAgdmlydHVh
bCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnRPYmplY3RJZkV4aXN0cygpIGNvbnN0OwogICAg
IHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogb2JzZXJ2YWJsZU9iamVjdCgpIGNvbnN0Owog
ICAgIHZpcnR1YWwgdm9pZCBsaW5rZWRVSUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciYpIGNvbnN0OwogICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogdGl0bGVVSUVs
ZW1lbnQoKSBjb25zdDsKQEAgLTQxMCw3ICs0MTEsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgbXV0YWJs
ZSBib29sIG1faGF2ZUNoaWxkcmVuOwogICAgIAogICAgIHZpcnR1YWwgdm9pZCBjbGVhckNoaWxk
cmVuKCk7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZUFYT2JqZWN0SUQoKTsKICAgICB2aXJ0dWFs
IGJvb2wgaXNEZXRhY2hlZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogI2lmIFBMQVRGT1JN
KE1BQykKSW5kZXg6IFdlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAJ
KHJldmlzaW9uIDQxMTk4KQorKysgV2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjAsNiArMTYwLDE4IEBAIEFjY2Vzc2liaWxpdHlP
YmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXIKICAgICByZXR1cm4gbV9yZW5kZXJlci0+ZG9jdW1l
bnQoKS0+YXhPYmplY3RDYWNoZSgpLT5nZXQobmV4dFNpYmxpbmcpOwogfQogCitBY2Nlc3NpYmls
aXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpwYXJlbnRPYmplY3RJZkV4aXN0
cygpIGNvbnN0Cit7CisgICAgaWYgKCFtX3JlbmRlcmVyKQorICAgICAgICByZXR1cm4gMDsKKyAg
ICAKKyAgICBSZW5kZXJPYmplY3QgKnBhcmVudCA9IG1fcmVuZGVyZXItPnBhcmVudCgpOworICAg
IGlmICghcGFyZW50KQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBtX3JlbmRlcmVy
LT5kb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPmdldElmRXhpc3RzKHBhcmVudCk7Cit9Cisg
ICAgCiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpwYXJl
bnRPYmplY3QoKSBjb25zdAogewogICAgIGlmICghbV9yZW5kZXJlcikKQEAgLTIyMCw2ICsyMzIs
OSBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzSW1hZ2UoCiAKIGJvb2wgQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNBdHRhY2htZW50KCkgY29uc3QKIHsKKyAgICBpZiAo
IW1fcmVuZGVyZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKICAgICAvLyBXaWRnZXRz
IGFyZSB0aGUgcmVwbGFjZWQgZWxlbWVudHMgdGhhdCB3ZSByZXByZXNlbnQgdG8gQVggYXMgYXR0
YWNobWVudHMKICAgICBib29sIGlzV2lkZ2V0ID0gbV9yZW5kZXJlciAmJiBtX3JlbmRlcmVyLT5p
c1dpZGdldCgpOwogICAgIEFTU0VSVCghaXNXaWRnZXQgfHwgKG1fcmVuZGVyZXItPmlzUmVwbGFj
ZWQoKSAmJiAhaXNJbWFnZSgpKSk7CkBAIC0yMjU4LDEzICsyMjczLDE1IEBAIHZvaWQgQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6Y2hpbGRyZW4KICAgICAKICAgICBtYXJrQ2hpbGRyZW5EaXJ0
eSgpOwogICAgIAotICAgIC8vIHRoaXMgb2JqZWN0IG1heSBub3QgYmUgYWNjZXNzaWJsZSAoYW5k
IHRodXMgbWF5IG5vdCBhcHBlYXIKKyAgICAvLyBUaGlzIG9iamVjdCBtYXkgbm90IGJlIGFjY2Vz
c2libGUgKGFuZCB0aHVzIG1heSBub3QgYXBwZWFyCiAgICAgLy8gaW4gdGhlIGhpZXJhcmNoeSks
IHdoaWNoIG1lYW5zIHdlIG5lZWQgdG8gZ28gdXAgdGhlIHBhcmVudAogICAgIC8vIGNoYWluIGFu
ZCBtYXJrIHRoZSBwYXJlbnQncyBkaXJ0eS4gSWRlYWxseSwgd2Ugd291bGQgd2FudAogICAgIC8v
IHRvIG9ubHkgYWNjZXNzIHRoZSBuZXh0IG9iamVjdCB0aGF0IGlzIG5vdCBpZ25vcmVkLCBidXQK
ICAgICAvLyBhc2tpbmcgYW4gZWxlbWVudCBpZiBpdCdzIGlnbm9yZWQgY2FuIGxlYWQgdG8gYW4g
ZXhhbWluYXRpb24gb2YgdGhlCi0gICAgLy8gcmVuZGVyIHRyZWUgd2hpY2ggaXMgZGFuZ2Vyb3Vz
LgotICAgIGZvciAoQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0KCk7
IHBhcmVudDsgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRPYmplY3QoKSkgeworICAgIC8vIHJlbmRl
ciB0cmVlIHdoaWNoIGlzIGRhbmdlcm91cy4gCisgICAgLy8gT25seSBwYXJlbnRzIHRoYXQgYWxy
ZWFkeSBleGlzdCBtdXN0IGJlIHJldHJpZXZlZCwgb3RoZXJ3aXNlIG9iamVjdHMgY2FuIGJlIGNy
ZWF0ZWQKKyAgICAvLyBhdCBiYWQgdGltZXMKKyAgICBmb3IgKEFjY2Vzc2liaWxpdHlPYmplY3Qq
IHBhcmVudCA9IHBhcmVudE9iamVjdElmRXhpc3RzKCk7IHBhcmVudDsgcGFyZW50ID0gcGFyZW50
LT5wYXJlbnRPYmplY3RJZkV4aXN0cygpKSB7CiAgICAgICAgIGlmIChwYXJlbnQtPmlzQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdCgpKQogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8QWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdCAqPihwYXJlbnQpLT5tYXJrQ2hpbGRyZW5EaXJ0eSgpOwogICAgIH0K
QEAgLTI0MTcsMTUgKzI0MzQsNiBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnZp
c2libGVDCiAgICAgcmV0dXJuIGFyaWFMaXN0Ym94VmlzaWJsZUNoaWxkcmVuKHJlc3VsdCk7CiB9
CiAgCi12b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnJlbW92ZUFYT2JqZWN0SUQoKQot
ewotICAgIGlmICghbV9pZCkKLSAgICAgICAgcmV0dXJuOwotI2lmIFBMQVRGT1JNKE1BQykKLSAg
ICBtX3JlbmRlcmVyLT5kb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPnJlbW92ZUFYSUQodGhp
cyk7Ci0jZW5kaWYKLX0gICAKLSAgICAKIGNvbnN0IFN0cmluZyYgQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6YWN0aW9uVmVyYigpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IE5lZWQgdG8gYWRk
IHZlcmJzIGZvciBzZWxlY3QgZWxlbWVudHMuCkluZGV4OiBXZWJDb3JlL3BhZ2UvQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9BY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0LmgJKHJldmlzaW9uIDQxMTk4KQorKysgV2ViQ29yZS9wYWdlL0FjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDYgKzEyNSw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHByZXZpb3VzU2libGlu
ZygpIGNvbnN0OwogICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogbmV4dFNpYmxpbmco
KSBjb25zdDsKICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudE9iamVjdCgp
IGNvbnN0OworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0SWZF
eGlzdHMoKSBjb25zdDsKICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9ic2VydmFi
bGVPYmplY3QoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgbGlua2VkVUlFbGVtZW50cyhBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdDsKICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxp
dHlPYmplY3QqIHRpdGxlVUlFbGVtZW50KCkgY29uc3Q7CkBAIC0yMTgsNyArMjE5LDYgQEAgcHJv
dGVjdGVkOgogICAgIG11dGFibGUgYm9vbCBtX2NoaWxkcmVuRGlydHk7CiAgICAgCiAgICAgdm9p
ZCBzZXRSZW5kZXJPYmplY3QoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgeyBtX3JlbmRlcmVyID0g
cmVuZGVyZXI7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQVhPYmplY3RJRCgpOwogICAgIAog
ICAgIHZpcnR1YWwgYm9vbCBpc0RldGFjaGVkKCkgY29uc3QgeyByZXR1cm4gIW1fcmVuZGVyZXI7
IH0KIApJbmRleDogV2ViQ29yZS9wYWdlL21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyLm1tCShyZXZpc2lvbiA0MTE5OCkKKysrIFdlYkNvcmUvcGFnZS9tYWMvQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTU4Miw2ICs1ODIsOSBAQCBzdGF0
aWMgV2ViQ29yZVRleHRNYXJrZXJSYW5nZSogdGV4dE1hcmtlCiAKIC0gKE5TQXJyYXkqKWFjY2Vz
c2liaWxpdHlBY3Rpb25OYW1lcwogeworICAgIGlmICghbV9vYmplY3QpCisgICAgICAgIHJldHVy
biBuaWw7CisKICAgICBtX29iamVjdC0+dXBkYXRlQmFja2luZ1N0b3JlKCk7CiAKICAgICBzdGF0
aWMgTlNBcnJheSogYWN0aW9uRWxlbWVudEFjdGlvbnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRX
aXRoT2JqZWN0czogTlNBY2Nlc3NpYmlsaXR5UHJlc3NBY3Rpb24sIE5TQWNjZXNzaWJpbGl0eVNo
b3dNZW51QWN0aW9uLCBuaWxdOwpAQCAtNjAzLDYgKzYwNiw5IEBAIHN0YXRpYyBXZWJDb3JlVGV4
dE1hcmtlclJhbmdlKiB0ZXh0TWFya2UKIAogLSAoTlNBcnJheSopYWNjZXNzaWJpbGl0eUF0dHJp
YnV0ZU5hbWVzCiB7CisgICAgaWYgKCFtX29iamVjdCkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAg
ICAKICAgICBtX29iamVjdC0+dXBkYXRlQmFja2luZ1N0b3JlKCk7CiAgICAgCiAgICAgaWYgKG1f
b2JqZWN0LT5pc0F0dGFjaG1lbnQoKSkKQEAgLTE0NDUsNiArMTQ1MSw5IEBAIHN0YXRpYyBOU1N0
cmluZyogcm9sZVZhbHVlVG9OU1N0cmluZyhBY2MKIAogLSAoaWQpYWNjZXNzaWJpbGl0eUZvY3Vz
ZWRVSUVsZW1lbnQKIHsKKyAgICBpZiAoIW1fb2JqZWN0KQorICAgICAgICByZXR1cm4gbmlsOwor
CiAgICAgbV9vYmplY3QtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOwogCiAgICAgUmVmUHRyPEFjY2Vz
c2liaWxpdHlPYmplY3Q+IGZvY3VzZWRPYmogPSBtX29iamVjdC0+Zm9jdXNlZFVJRWxlbWVudCgp
OwpAQCAtMTQ1Nyw2ICsxNDY2LDkgQEAgc3RhdGljIE5TU3RyaW5nKiByb2xlVmFsdWVUb05TU3Ry
aW5nKEFjYwogCiAtIChpZClhY2Nlc3NpYmlsaXR5SGl0VGVzdDooTlNQb2ludClwb2ludAogewor
ICAgIGlmICghbV9vYmplY3QpCisgICAgICAgIHJldHVybiBuaWw7CisKICAgICBtX29iamVjdC0+
dXBkYXRlQmFja2luZ1N0b3JlKCk7CiAKICAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4g
YXhPYmplY3QgPSBtX29iamVjdC0+ZG9BY2Nlc3NpYmlsaXR5SGl0VGVzdChJbnRQb2ludChwb2lu
dCkpOwpAQCAtMTQ2Nyw2ICsxNDc5LDkgQEAgc3RhdGljIE5TU3RyaW5nKiByb2xlVmFsdWVUb05T
U3RyaW5nKEFjYwogCiAtIChCT09MKWFjY2Vzc2liaWxpdHlJc0F0dHJpYnV0ZVNldHRhYmxlOihO
U1N0cmluZyopYXR0cmlidXRlTmFtZQogeworICAgIGlmICghbV9vYmplY3QpCisgICAgICAgIHJl
dHVybiBuaWw7CisKICAgICBtX29iamVjdC0+dXBkYXRlQmFja2luZ1N0b3JlKCk7CiAKICAgICBp
ZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBAIkFYU2VsZWN0ZWRUZXh0TWFya2Vy
UmFuZ2UiXSkKQEAgLTE1MDMsNiArMTUxOCw5IEBAIHN0YXRpYyBOU1N0cmluZyogcm9sZVZhbHVl
VG9OU1N0cmluZyhBY2MKIC8vIFJlZ2lzdGVyaW5nIGFuIG9iamVjdCBpcyBhbHNvIHJlcXVpcmVk
IGZvciBvYnNlcnZpbmcgbm90aWZpY2F0aW9ucy4gT25seSByZWdpc3RlcmVkIG9iamVjdHMgY2Fu
IGJlIG9ic2VydmVkLgogLSAoQk9PTClhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkCiB7CisgICAgaWYg
KCFtX29iamVjdCkKKyAgICAgICAgcmV0dXJuIG5pbDsKKwogICAgIG1fb2JqZWN0LT51cGRhdGVC
YWNraW5nU3RvcmUoKTsKIAogICAgIGlmIChtX29iamVjdC0+aXNBdHRhY2htZW50KCkpCkBAIC0x
NTEyLDYgKzE1MzAsOSBAQCBzdGF0aWMgTlNTdHJpbmcqIHJvbGVWYWx1ZVRvTlNTdHJpbmcoQWNj
CiAKIC0gKE5TQXJyYXkqIClhY2Nlc3NpYmlsaXR5UGFyYW1ldGVyaXplZEF0dHJpYnV0ZU5hbWVz
CiB7CisgICAgaWYgKCFtX29iamVjdCkKKyAgICAgICAgcmV0dXJuIG5pbDsKKwogICAgIG1fb2Jq
ZWN0LT51cGRhdGVCYWNraW5nU3RvcmUoKTsKIAogICAgIGlmIChtX29iamVjdC0+aXNBdHRhY2ht
ZW50KCkpIApAQCAtMTU5NCw2ICsxNjE1LDkgQEAgc3RhdGljIE5TU3RyaW5nKiByb2xlVmFsdWVU
b05TU3RyaW5nKEFjYwogCiAtICh2b2lkKWFjY2Vzc2liaWxpdHlQZXJmb3JtUHJlc3NBY3Rpb24K
IHsKKyAgICBpZiAoIW1fb2JqZWN0KQorICAgICAgICByZXR1cm47CisKICAgICBtX29iamVjdC0+
dXBkYXRlQmFja2luZ1N0b3JlKCk7CiAKICAgICBpZiAobV9vYmplY3QtPmlzQXR0YWNobWVudCgp
KQpAQCAtMTY0MCw2ICsxNjY0LDkgQEAgc3RhdGljIE5TU3RyaW5nKiByb2xlVmFsdWVUb05TU3Ry
aW5nKEFjYwogCiAtICh2b2lkKWFjY2Vzc2liaWxpdHlQZXJmb3JtQWN0aW9uOihOU1N0cmluZyop
YWN0aW9uCiB7CisgICAgaWYgKCFtX29iamVjdCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgbV9v
YmplY3QtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOwogCiAgICAgaWYgKFthY3Rpb24gaXNFcXVhbFRv
U3RyaW5nOk5TQWNjZXNzaWJpbGl0eVByZXNzQWN0aW9uXSkKQEAgLTE2NTEsNiArMTY3OCw5IEBA
IHN0YXRpYyBOU1N0cmluZyogcm9sZVZhbHVlVG9OU1N0cmluZyhBY2MKIAogLSAodm9pZClhY2Nl
c3NpYmlsaXR5U2V0VmFsdWU6KGlkKXZhbHVlIGZvckF0dHJpYnV0ZTooTlNTdHJpbmcqKWF0dHJp
YnV0ZU5hbWUKIHsKKyAgICBpZiAoIW1fb2JqZWN0KQorICAgICAgICByZXR1cm47CisKICAgICBt
X29iamVjdC0+dXBkYXRlQmFja2luZ1N0b3JlKCk7CiAKICAgICBXZWJDb3JlVGV4dE1hcmtlclJh
bmdlKiB0ZXh0TWFya2VyUmFuZ2UgPSBuaWw7CkBAIC0yMDIyLDYgKzIwNTIsOSBAQCBzdGF0aWMg
UmVuZGVyT2JqZWN0KiByZW5kZXJlckZvclZpZXcoTlNWCiAvLyBBUEkgdGhhdCBBcHBLaXQgdXNl
cyBmb3IgZmFzdGVyIGFjY2VzcwogLSAoTlNVSW50ZWdlcilhY2Nlc3NpYmlsaXR5SW5kZXhPZkNo
aWxkOihpZCljaGlsZAogeworICAgIGlmICghbV9vYmplY3QpCisgICAgICAgIHJldHVybiBOU05v
dEZvdW5kOworCiAgICAgbV9vYmplY3QtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOwogICAgIAogICAg
IGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYg
Y2hpbGRyZW4gPSBtX29iamVjdC0+Y2hpbGRyZW4oKTsKQEAgLTIwNDAsNiArMjA3Myw5IEBAIHN0
YXRpYyBSZW5kZXJPYmplY3QqIHJlbmRlcmVyRm9yVmlldyhOU1YKIAogLSAoTlNVSW50ZWdlcilh
Y2Nlc3NpYmlsaXR5QXJyYXlBdHRyaWJ1dGVDb3VudDooTlNTdHJpbmcgKilhdHRyaWJ1dGUKIHsK
KyAgICBpZiAoIW1fb2JqZWN0KQorICAgICAgICByZXR1cm4gMDsKKwogICAgIG1fb2JqZWN0LT51
cGRhdGVCYWNraW5nU3RvcmUoKTsKICAgICAKICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9T
dHJpbmc6TlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5BdHRyaWJ1dGVdKSB7CkBAIC0yMDU1LDYgKzIw
OTEsOSBAQCBzdGF0aWMgUmVuZGVyT2JqZWN0KiByZW5kZXJlckZvclZpZXcoTlNWCiAKIC0gKE5T
QXJyYXkgKilhY2Nlc3NpYmlsaXR5QXJyYXlBdHRyaWJ1dGVWYWx1ZXM6KE5TU3RyaW5nICopYXR0
cmlidXRlIGluZGV4OihOU1VJbnRlZ2VyKWluZGV4IG1heENvdW50OihOU1VJbnRlZ2VyKW1heENv
dW50IAogeworICAgIGlmICghbV9vYmplY3QpCisgICAgICAgIHJldHVybiBuaWw7CisKICAgICBt
X29iamVjdC0+dXBkYXRlQmFja2luZ1N0b3JlKCk7CiAgICAgCiAgICAgaWYgKFthdHRyaWJ1dGUg
aXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlXSkgewpJbmRl
eDogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90YWJsZS11cGRhdGluZy1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90YWJsZS11cGRhdGluZy1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3Rh
YmxlLXVwZGF0aW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorVGVz
dCBwYXNzZXMgaWYgbm8gY3Jhc2guCkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3Rh
YmxlLXVwZGF0aW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS90YWJsZS11cGRhdGluZy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS90YWJsZS11cGRhdGluZy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ3IEBA
Cis8aHRtbD4KKworPGhlYWQ+Cis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKzwv
c2NyaXB0PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCitmdW5jdGlvbiByZW1v
dmVUYWJsZSgpCit7CisgICAgdmFyIHRhYmxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rh
YmxlMScpOworICAgIHZhciBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGFi
bGVjb250YWluZXInKTsKKyAKKyAgICBjb250YWluZXIucmVtb3ZlQ2hpbGQodGFibGUpOyAgCit9
CisKKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keSBpZD0iYm9keSI+CisKKzxkaXYgaWQ9J3Rh
YmxlY29udGFpbmVyJz4KKzx0YWJsZSBpZD0ndGFibGUxJyBib3JkZXI9JzEnIHdpZHRoPTEwMD48
dHIgaWQ9InJvdyI+PHRkPkE8L3RkPjx0ZD5CPC90ZD48dGQ+QzwvdGQ+PC90cj48L3RhYmxlPgor
PC9kaXY+CisKKzxzY3JpcHQ+CisgICAgICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIpIHsKKworICAgICAgICAgICAgdmFyIGJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiYm9keSIpOworICAgICAgICAgICAgYm9keS5mb2N1cygpOworICAgICAgICAgICAgdmFyIGRp
dkNvbnRhaW5lciA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxk
QXRJbmRleCgwKTsKKworICAgICAgICAgICAgdmFyIHJlc3VsdHMgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgicmVzdWx0cyIpOworCisgICAgICAgICAgICBkaXZDb250YWluZXIuYWxsQXR0cmli
dXRlcygpOworCisgICAgICAgICAgICByZW1vdmVUYWJsZSgpOworCisgICAgICAgICAgICBkaXZD
b250YWluZXIuYWxsQXR0cmlidXRlcygpOworICAgICAgICB9Cis8L3NjcmlwdD4KKworVGVzdCBw
YXNzZXMgaWYgbm8gY3Jhc2guCisKKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27952</attachid>
            <date>2009-02-24 18:34:18 -0800</date>
            <delta_ts>2009-02-24 18:34:38 -0800</delta_ts>
            <desc>patch to fix crash</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>14517</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvcGFnZS9BWE9iamVjdENhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BhZ2UvQVhPYmplY3RDYWNoZS5jcHAJKHJldmlzaW9uIDQxMTk4KQorKysgV2ViQ29yZS9w
YWdlL0FYT2JqZWN0Q2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCw0NCArNTgsNTggQEAg
QVhPYmplY3RDYWNoZTo6fkFYT2JqZWN0Q2FjaGUoKQogICAgICAgICBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBvYmogPSAoKml0KS5zZWNvbmQuZ2V0KCk7CiAgICAgICAgIGRldGFjaFdyYXBwZXIob2Jq
KTsKICAgICAgICAgb2JqLT5kZXRhY2goKTsKKyAgICAgICAgcmVtb3ZlQVhJRChvYmopOwogICAg
IH0KIH0KIAotQWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Z2V0KFJlbmRlck9i
amVjdCogcmVuZGVyZXIpCitBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpnZXRJ
ZkV4aXN0cyhSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogewogICAgIGlmICghcmVuZGVyZXIpCiAg
ICAgICAgIHJldHVybiAwOwogICAgIAotICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBv
YmogPSAwOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiA9IDA7CiAgICAgQVhJRCBheElE
ID0gbV9yZW5kZXJPYmplY3RNYXBwaW5nLmdldChyZW5kZXJlcik7CiAgICAgQVNTRVJUKCFIYXNo
VHJhaXRzPEFYSUQ+Ojppc0RlbGV0ZWRWYWx1ZShheElEKSk7CiAKICAgICBpZiAoYXhJRCkKICAg
ICAgICAgb2JqID0gbV9vYmplY3RzLmdldChheElEKS5nZXQoKTsKKyAgICAKKyAgICByZXR1cm4g
b2JqOworfQorCitBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpnZXQoUmVuZGVy
T2JqZWN0KiByZW5kZXJlcikKK3sKKyAgICBpZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1cm4g
MDsKKyAgICAKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmogPSBnZXRJZkV4aXN0cyhyZW5k
ZXJlcik7CiAKLSAgICBOb2RlKiBub2RlID0gcmVuZGVyZXItPm5vZGUoKTsKICAgICBpZiAoIW9i
aikgeworICAgICAgICBOb2RlKiBub2RlID0gcmVuZGVyZXItPm5vZGUoKTsKKyAgICAgICAgUmVm
UHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IG5ld09iaiA9IDA7CiAgICAgICAgIGlmIChyZW5kZXJl
ci0+aXNMaXN0Qm94KCkpCi0gICAgICAgICAgICBvYmogPSBBY2Nlc3NpYmlsaXR5TGlzdEJveDo6
Y3JlYXRlKHJlbmRlcmVyKTsKKyAgICAgICAgICAgIG5ld09iaiA9IEFjY2Vzc2liaWxpdHlMaXN0
Qm94OjpjcmVhdGUocmVuZGVyZXIpOwogICAgICAgICBlbHNlIGlmIChub2RlICYmIChub2RlLT5o
YXNUYWdOYW1lKHVsVGFnKSB8fCBub2RlLT5oYXNUYWdOYW1lKG9sVGFnKSB8fCBub2RlLT5oYXNU
YWdOYW1lKGRsVGFnKSkpCi0gICAgICAgICAgICBvYmogPSBBY2Nlc3NpYmlsaXR5TGlzdDo6Y3Jl
YXRlKHJlbmRlcmVyKTsKKyAgICAgICAgICAgIG5ld09iaiA9IEFjY2Vzc2liaWxpdHlMaXN0Ojpj
cmVhdGUocmVuZGVyZXIpOwogICAgICAgICBlbHNlIGlmIChyZW5kZXJlci0+aXNUYWJsZSgpKQot
ICAgICAgICAgICAgb2JqID0gQWNjZXNzaWJpbGl0eVRhYmxlOjpjcmVhdGUocmVuZGVyZXIpOwor
ICAgICAgICAgICAgbmV3T2JqID0gQWNjZXNzaWJpbGl0eVRhYmxlOjpjcmVhdGUocmVuZGVyZXIp
OwogICAgICAgICBlbHNlIGlmIChyZW5kZXJlci0+aXNUYWJsZVJvdygpKQotICAgICAgICAgICAg
b2JqID0gQWNjZXNzaWJpbGl0eVRhYmxlUm93OjpjcmVhdGUocmVuZGVyZXIpOworICAgICAgICAg
ICAgbmV3T2JqID0gQWNjZXNzaWJpbGl0eVRhYmxlUm93OjpjcmVhdGUocmVuZGVyZXIpOwogICAg
ICAgICBlbHNlIGlmIChyZW5kZXJlci0+aXNUYWJsZUNlbGwoKSkKLSAgICAgICAgICAgIG9iaiA9
IEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmNyZWF0ZShyZW5kZXJlcik7CisgICAgICAgICAgICBu
ZXdPYmogPSBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsOjpjcmVhdGUocmVuZGVyZXIpOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBvYmogPSBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpjcmVh
dGUocmVuZGVyZXIpOworICAgICAgICAgICAgbmV3T2JqID0gQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6Y3JlYXRlKHJlbmRlcmVyKTsKICAgICAgICAgCi0gICAgICAgIGdldEFYSUQob2JqLmdl
dCgpKTsKKyAgICAgICAgb2JqID0gbmV3T2JqLmdldCgpOworICAgICAgICAKKyAgICAgICAgZ2V0
QVhJRChvYmopOwogICAgICAgICAKLSAgICAgICAgbV9yZW5kZXJPYmplY3RNYXBwaW5nLnNldChy
ZW5kZXJlciwgb2JqLmdldCgpLT5heE9iamVjdElEKCkpOwotICAgICAgICBtX29iamVjdHMuc2V0
KG9iai5nZXQoKS0+YXhPYmplY3RJRCgpLCBvYmopOyAgICAKLSAgICAgICAgYXR0YWNoV3JhcHBl
cihvYmouZ2V0KCkpOworICAgICAgICBtX3JlbmRlck9iamVjdE1hcHBpbmcuc2V0KHJlbmRlcmVy
LCBvYmotPmF4T2JqZWN0SUQoKSk7CisgICAgICAgIG1fb2JqZWN0cy5zZXQob2JqLT5heE9iamVj
dElEKCksIG9iaik7ICAgIAorICAgICAgICBhdHRhY2hXcmFwcGVyKG9iaik7CiAgICAgfQogICAg
IAotICAgIHJldHVybiBvYmouZ2V0KCk7CisgICAgcmV0dXJuIG9iajsKIH0KIAogQWNjZXNzaWJp
bGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Z2V0KEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUpCkBA
IC0xODYsNiArMjAwLDkgQEAgQVhJRCBBWE9iamVjdENhY2hlOjpnZXRBWElEKEFjY2Vzc2liaWxp
dAogCiB2b2lkIEFYT2JqZWN0Q2FjaGU6OnJlbW92ZUFYSUQoQWNjZXNzaWJpbGl0eU9iamVjdCog
b2JqKQogeworICAgIGlmICghb2JqKQorICAgICAgICByZXR1cm47CisgICAgCiAgICAgQVhJRCBv
YmpJRCA9IG9iai0+YXhPYmplY3RJRCgpOwogICAgIGlmIChvYmpJRCA9PSAwKQogICAgICAgICBy
ZXR1cm47CkluZGV4OiBXZWJDb3JlL3BhZ2UvQVhPYmplY3RDYWNoZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGFnZS9BWE9iamVjdENhY2hlLmgJKHJldmlzaW9uIDQxMTk4KQorKysgV2ViQ29y
ZS9wYWdlL0FYT2JqZWN0Q2FjaGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjUsNiArNjUsOSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIHVzZWQgZm9yIG9iamVjdHMgd2l0aG91dCBi
YWNraW5nIGVsZW1lbnRzCiAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGdldChBY2Nlc3Np
YmlsaXR5Um9sZSk7CiAgICAgICAgIAorICAgICAgICAvLyB3aWxsIG9ubHkgcmV0dXJuIHRoZSBB
Y2Nlc3NpYmlsaXR5T2JqZWN0IGlmIGl0IGFscmVhZHkgZXhpc3RzCisgICAgICAgIEFjY2Vzc2li
aWxpdHlPYmplY3QqIGdldElmRXhpc3RzKFJlbmRlck9iamVjdCopOworICAgICAgICAKICAgICAg
ICAgdm9pZCByZW1vdmUoUmVuZGVyT2JqZWN0Kik7CiAgICAgICAgIHZvaWQgcmVtb3ZlKEFYSUQp
OwogCkluZGV4OiBXZWJDb3JlL3BhZ2UvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCShyZXZpc2lvbiA0MTE5
OCkKKysrIFdlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzUsNyArNzUsNiBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp+QWNjZXNzaWJpbGl0eU9i
amVjCiAKIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6ZGV0YWNoKCkKIHsKLSAgICByZW1vdmVB
WE9iamVjdElEKCk7CiAjaWYgSEFWRShBQ0NFU1NJQklMSVRZKQogICAgIHNldFdyYXBwZXIoMCk7
CiAjZW5kaWYgICAgCkBAIC0xMTQsNiArMTEzLDExIEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFj
Y2Vzc2liaWxpdHlPYmplY3QKICAgICByZXR1cm4gcGFyZW50OwogfQogCitBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpwYXJlbnRPYmplY3RJZkV4aXN0cygpIGNvbnN0
Cit7CisgICAgcmV0dXJuIDA7Cit9CisgICAgCiBpbnQgQWNjZXNzaWJpbGl0eU9iamVjdDo6bGF5
b3V0Q291bnQoKSBjb25zdAogewogICAgIHJldHVybiAwOwpAQCAtOTk2LDExICsxMDAwLDYgQEAg
dm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRBWE9iamVjdElEKAogICAgIG1faWQgPSBheE9i
amVjdElEOwogfQogCi12b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnJlbW92ZUFYT2JqZWN0SUQo
KQotewotICAgIHJldHVybjsKLX0KLQogY29uc3QgU3RyaW5nJiBBY2Nlc3NpYmlsaXR5T2JqZWN0
OjphY3Rpb25WZXJiKCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogTmVlZCB0byBhZGQgdmVyYnMg
Zm9yIHNlbGVjdCBlbGVtZW50cy4KSW5kZXg6IFdlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlPYmplY3QuaAko
cmV2aXNpb24gNDExOTgpCisrKyBXZWJDb3JlL3BhZ2UvQWNjZXNzaWJpbGl0eU9iamVjdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNjYsNiArMjY2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgQWNj
ZXNzaWJpbGl0eU9iamVjdCogbmV4dFNpYmxpbmcoKSBjb25zdDsKICAgICB2aXJ0dWFsIEFjY2Vz
c2liaWxpdHlPYmplY3QqIHBhcmVudE9iamVjdCgpIGNvbnN0OwogICAgIHZpcnR1YWwgQWNjZXNz
aWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0VW5pZ25vcmVkKCkgY29uc3Q7CisgICAgdmlydHVh
bCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnRPYmplY3RJZkV4aXN0cygpIGNvbnN0OwogICAg
IHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogb2JzZXJ2YWJsZU9iamVjdCgpIGNvbnN0Owog
ICAgIHZpcnR1YWwgdm9pZCBsaW5rZWRVSUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZl
Y3RvciYpIGNvbnN0OwogICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogdGl0bGVVSUVs
ZW1lbnQoKSBjb25zdDsKQEAgLTQxMCw3ICs0MTEsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgbXV0YWJs
ZSBib29sIG1faGF2ZUNoaWxkcmVuOwogICAgIAogICAgIHZpcnR1YWwgdm9pZCBjbGVhckNoaWxk
cmVuKCk7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZUFYT2JqZWN0SUQoKTsKICAgICB2aXJ0dWFs
IGJvb2wgaXNEZXRhY2hlZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogI2lmIFBMQVRGT1JN
KE1BQykKSW5kZXg6IFdlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAJ
KHJldmlzaW9uIDQxMTk4KQorKysgV2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjAsNiArMTYwLDE4IEBAIEFjY2Vzc2liaWxpdHlP
YmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXIKICAgICByZXR1cm4gbV9yZW5kZXJlci0+ZG9jdW1l
bnQoKS0+YXhPYmplY3RDYWNoZSgpLT5nZXQobmV4dFNpYmxpbmcpOwogfQogCitBY2Nlc3NpYmls
aXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpwYXJlbnRPYmplY3RJZkV4aXN0
cygpIGNvbnN0Cit7CisgICAgaWYgKCFtX3JlbmRlcmVyKQorICAgICAgICByZXR1cm4gMDsKKyAg
ICAKKyAgICBSZW5kZXJPYmplY3QgKnBhcmVudCA9IG1fcmVuZGVyZXItPnBhcmVudCgpOworICAg
IGlmICghcGFyZW50KQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBtX3JlbmRlcmVy
LT5kb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPmdldElmRXhpc3RzKHBhcmVudCk7Cit9Cisg
ICAgCiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpwYXJl
bnRPYmplY3QoKSBjb25zdAogewogICAgIGlmICghbV9yZW5kZXJlcikKQEAgLTIyMCw2ICsyMzIs
OSBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzSW1hZ2UoCiAKIGJvb2wgQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNBdHRhY2htZW50KCkgY29uc3QKIHsKKyAgICBpZiAo
IW1fcmVuZGVyZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKICAgICAvLyBXaWRnZXRz
IGFyZSB0aGUgcmVwbGFjZWQgZWxlbWVudHMgdGhhdCB3ZSByZXByZXNlbnQgdG8gQVggYXMgYXR0
YWNobWVudHMKICAgICBib29sIGlzV2lkZ2V0ID0gbV9yZW5kZXJlciAmJiBtX3JlbmRlcmVyLT5p
c1dpZGdldCgpOwogICAgIEFTU0VSVCghaXNXaWRnZXQgfHwgKG1fcmVuZGVyZXItPmlzUmVwbGFj
ZWQoKSAmJiAhaXNJbWFnZSgpKSk7CkBAIC0yMjU4LDEzICsyMjczLDE1IEBAIHZvaWQgQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6Y2hpbGRyZW4KICAgICAKICAgICBtYXJrQ2hpbGRyZW5EaXJ0
eSgpOwogICAgIAotICAgIC8vIHRoaXMgb2JqZWN0IG1heSBub3QgYmUgYWNjZXNzaWJsZSAoYW5k
IHRodXMgbWF5IG5vdCBhcHBlYXIKKyAgICAvLyBUaGlzIG9iamVjdCBtYXkgbm90IGJlIGFjY2Vz
c2libGUgKGFuZCB0aHVzIG1heSBub3QgYXBwZWFyCiAgICAgLy8gaW4gdGhlIGhpZXJhcmNoeSks
IHdoaWNoIG1lYW5zIHdlIG5lZWQgdG8gZ28gdXAgdGhlIHBhcmVudAogICAgIC8vIGNoYWluIGFu
ZCBtYXJrIHRoZSBwYXJlbnQncyBkaXJ0eS4gSWRlYWxseSwgd2Ugd291bGQgd2FudAogICAgIC8v
IHRvIG9ubHkgYWNjZXNzIHRoZSBuZXh0IG9iamVjdCB0aGF0IGlzIG5vdCBpZ25vcmVkLCBidXQK
ICAgICAvLyBhc2tpbmcgYW4gZWxlbWVudCBpZiBpdCdzIGlnbm9yZWQgY2FuIGxlYWQgdG8gYW4g
ZXhhbWluYXRpb24gb2YgdGhlCi0gICAgLy8gcmVuZGVyIHRyZWUgd2hpY2ggaXMgZGFuZ2Vyb3Vz
LgotICAgIGZvciAoQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0KCk7
IHBhcmVudDsgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRPYmplY3QoKSkgeworICAgIC8vIHJlbmRl
ciB0cmVlIHdoaWNoIGlzIGRhbmdlcm91cy4gCisgICAgLy8gT25seSBwYXJlbnRzIHRoYXQgYWxy
ZWFkeSBleGlzdCBtdXN0IGJlIHJldHJpZXZlZCwgb3RoZXJ3aXNlIG9iamVjdHMgY2FuIGJlIGNy
ZWF0ZWQKKyAgICAvLyBhdCBiYWQgdGltZXMKKyAgICBmb3IgKEFjY2Vzc2liaWxpdHlPYmplY3Qq
IHBhcmVudCA9IHBhcmVudE9iamVjdElmRXhpc3RzKCk7IHBhcmVudDsgcGFyZW50ID0gcGFyZW50
LT5wYXJlbnRPYmplY3RJZkV4aXN0cygpKSB7CiAgICAgICAgIGlmIChwYXJlbnQtPmlzQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdCgpKQogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8QWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdCAqPihwYXJlbnQpLT5tYXJrQ2hpbGRyZW5EaXJ0eSgpOwogICAgIH0K
QEAgLTI0MTcsMTUgKzI0MzQsNiBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnZp
c2libGVDCiAgICAgcmV0dXJuIGFyaWFMaXN0Ym94VmlzaWJsZUNoaWxkcmVuKHJlc3VsdCk7CiB9
CiAgCi12b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnJlbW92ZUFYT2JqZWN0SUQoKQot
ewotICAgIGlmICghbV9pZCkKLSAgICAgICAgcmV0dXJuOwotI2lmIFBMQVRGT1JNKE1BQykKLSAg
ICBtX3JlbmRlcmVyLT5kb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPnJlbW92ZUFYSUQodGhp
cyk7Ci0jZW5kaWYKLX0gICAKLSAgICAKIGNvbnN0IFN0cmluZyYgQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6YWN0aW9uVmVyYigpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IE5lZWQgdG8gYWRk
IHZlcmJzIGZvciBzZWxlY3QgZWxlbWVudHMuCkluZGV4OiBXZWJDb3JlL3BhZ2UvQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9BY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0LmgJKHJldmlzaW9uIDQxMTk4KQorKysgV2ViQ29yZS9wYWdlL0FjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDYgKzEyNSw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHByZXZpb3VzU2libGlu
ZygpIGNvbnN0OwogICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogbmV4dFNpYmxpbmco
KSBjb25zdDsKICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudE9iamVjdCgp
IGNvbnN0OworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0SWZF
eGlzdHMoKSBjb25zdDsKICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9ic2VydmFi
bGVPYmplY3QoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgbGlua2VkVUlFbGVtZW50cyhBY2Nl
c3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKSBjb25zdDsKICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxp
dHlPYmplY3QqIHRpdGxlVUlFbGVtZW50KCkgY29uc3Q7CkBAIC0yMTgsNyArMjE5LDYgQEAgcHJv
dGVjdGVkOgogICAgIG11dGFibGUgYm9vbCBtX2NoaWxkcmVuRGlydHk7CiAgICAgCiAgICAgdm9p
ZCBzZXRSZW5kZXJPYmplY3QoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgeyBtX3JlbmRlcmVyID0g
cmVuZGVyZXI7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQVhPYmplY3RJRCgpOwogICAgIAog
ICAgIHZpcnR1YWwgYm9vbCBpc0RldGFjaGVkKCkgY29uc3QgeyByZXR1cm4gIW1fcmVuZGVyZXI7
IH0KIApJbmRleDogV2ViQ29yZS9wYWdlL21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyLm1tCShyZXZpc2lvbiA0MTE5OCkKKysrIFdlYkNvcmUvcGFnZS9tYWMvQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTU4Miw2ICs1ODIsOSBAQCBzdGF0
aWMgV2ViQ29yZVRleHRNYXJrZXJSYW5nZSogdGV4dE1hcmtlCiAKIC0gKE5TQXJyYXkqKWFjY2Vz
c2liaWxpdHlBY3Rpb25OYW1lcwogeworICAgIGlmICghbV9vYmplY3QpCisgICAgICAgIHJldHVy
biBuaWw7CisKICAgICBtX29iamVjdC0+dXBkYXRlQmFja2luZ1N0b3JlKCk7CiAKICAgICBzdGF0
aWMgTlNBcnJheSogYWN0aW9uRWxlbWVudEFjdGlvbnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRX
aXRoT2JqZWN0czogTlNBY2Nlc3NpYmlsaXR5UHJlc3NBY3Rpb24sIE5TQWNjZXNzaWJpbGl0eVNo
b3dNZW51QWN0aW9uLCBuaWxdOwpAQCAtNjAzLDYgKzYwNiw5IEBAIHN0YXRpYyBXZWJDb3JlVGV4
dE1hcmtlclJhbmdlKiB0ZXh0TWFya2UKIAogLSAoTlNBcnJheSopYWNjZXNzaWJpbGl0eUF0dHJp
YnV0ZU5hbWVzCiB7CisgICAgaWYgKCFtX29iamVjdCkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAg
ICAKICAgICBtX29iamVjdC0+dXBkYXRlQmFja2luZ1N0b3JlKCk7CiAgICAgCiAgICAgaWYgKG1f
b2JqZWN0LT5pc0F0dGFjaG1lbnQoKSkKQEAgLTE0NDUsNiArMTQ1MSw5IEBAIHN0YXRpYyBOU1N0
cmluZyogcm9sZVZhbHVlVG9OU1N0cmluZyhBY2MKIAogLSAoaWQpYWNjZXNzaWJpbGl0eUZvY3Vz
ZWRVSUVsZW1lbnQKIHsKKyAgICBpZiAoIW1fb2JqZWN0KQorICAgICAgICByZXR1cm4gbmlsOwor
CiAgICAgbV9vYmplY3QtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOwogCiAgICAgUmVmUHRyPEFjY2Vz
c2liaWxpdHlPYmplY3Q+IGZvY3VzZWRPYmogPSBtX29iamVjdC0+Zm9jdXNlZFVJRWxlbWVudCgp
OwpAQCAtMTQ1Nyw2ICsxNDY2LDkgQEAgc3RhdGljIE5TU3RyaW5nKiByb2xlVmFsdWVUb05TU3Ry
aW5nKEFjYwogCiAtIChpZClhY2Nlc3NpYmlsaXR5SGl0VGVzdDooTlNQb2ludClwb2ludAogewor
ICAgIGlmICghbV9vYmplY3QpCisgICAgICAgIHJldHVybiBuaWw7CisKICAgICBtX29iamVjdC0+
dXBkYXRlQmFja2luZ1N0b3JlKCk7CiAKICAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4g
YXhPYmplY3QgPSBtX29iamVjdC0+ZG9BY2Nlc3NpYmlsaXR5SGl0VGVzdChJbnRQb2ludChwb2lu
dCkpOwpAQCAtMTQ2Nyw2ICsxNDc5LDkgQEAgc3RhdGljIE5TU3RyaW5nKiByb2xlVmFsdWVUb05T
U3RyaW5nKEFjYwogCiAtIChCT09MKWFjY2Vzc2liaWxpdHlJc0F0dHJpYnV0ZVNldHRhYmxlOihO
U1N0cmluZyopYXR0cmlidXRlTmFtZQogeworICAgIGlmICghbV9vYmplY3QpCisgICAgICAgIHJl
dHVybiBuaWw7CisKICAgICBtX29iamVjdC0+dXBkYXRlQmFja2luZ1N0b3JlKCk7CiAKICAgICBp
ZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBAIkFYU2VsZWN0ZWRUZXh0TWFya2Vy
UmFuZ2UiXSkKQEAgLTE1MDMsNiArMTUxOCw5IEBAIHN0YXRpYyBOU1N0cmluZyogcm9sZVZhbHVl
VG9OU1N0cmluZyhBY2MKIC8vIFJlZ2lzdGVyaW5nIGFuIG9iamVjdCBpcyBhbHNvIHJlcXVpcmVk
IGZvciBvYnNlcnZpbmcgbm90aWZpY2F0aW9ucy4gT25seSByZWdpc3RlcmVkIG9iamVjdHMgY2Fu
IGJlIG9ic2VydmVkLgogLSAoQk9PTClhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkCiB7CisgICAgaWYg
KCFtX29iamVjdCkKKyAgICAgICAgcmV0dXJuIG5pbDsKKwogICAgIG1fb2JqZWN0LT51cGRhdGVC
YWNraW5nU3RvcmUoKTsKIAogICAgIGlmIChtX29iamVjdC0+aXNBdHRhY2htZW50KCkpCkBAIC0x
NTEyLDYgKzE1MzAsOSBAQCBzdGF0aWMgTlNTdHJpbmcqIHJvbGVWYWx1ZVRvTlNTdHJpbmcoQWNj
CiAKIC0gKE5TQXJyYXkqIClhY2Nlc3NpYmlsaXR5UGFyYW1ldGVyaXplZEF0dHJpYnV0ZU5hbWVz
CiB7CisgICAgaWYgKCFtX29iamVjdCkKKyAgICAgICAgcmV0dXJuIG5pbDsKKwogICAgIG1fb2Jq
ZWN0LT51cGRhdGVCYWNraW5nU3RvcmUoKTsKIAogICAgIGlmIChtX29iamVjdC0+aXNBdHRhY2ht
ZW50KCkpIApAQCAtMTU5NCw2ICsxNjE1LDkgQEAgc3RhdGljIE5TU3RyaW5nKiByb2xlVmFsdWVU
b05TU3RyaW5nKEFjYwogCiAtICh2b2lkKWFjY2Vzc2liaWxpdHlQZXJmb3JtUHJlc3NBY3Rpb24K
IHsKKyAgICBpZiAoIW1fb2JqZWN0KQorICAgICAgICByZXR1cm47CisKICAgICBtX29iamVjdC0+
dXBkYXRlQmFja2luZ1N0b3JlKCk7CiAKICAgICBpZiAobV9vYmplY3QtPmlzQXR0YWNobWVudCgp
KQpAQCAtMTY0MCw2ICsxNjY0LDkgQEAgc3RhdGljIE5TU3RyaW5nKiByb2xlVmFsdWVUb05TU3Ry
aW5nKEFjYwogCiAtICh2b2lkKWFjY2Vzc2liaWxpdHlQZXJmb3JtQWN0aW9uOihOU1N0cmluZyop
YWN0aW9uCiB7CisgICAgaWYgKCFtX29iamVjdCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgbV9v
YmplY3QtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOwogCiAgICAgaWYgKFthY3Rpb24gaXNFcXVhbFRv
U3RyaW5nOk5TQWNjZXNzaWJpbGl0eVByZXNzQWN0aW9uXSkKQEAgLTE2NTEsNiArMTY3OCw5IEBA
IHN0YXRpYyBOU1N0cmluZyogcm9sZVZhbHVlVG9OU1N0cmluZyhBY2MKIAogLSAodm9pZClhY2Nl
c3NpYmlsaXR5U2V0VmFsdWU6KGlkKXZhbHVlIGZvckF0dHJpYnV0ZTooTlNTdHJpbmcqKWF0dHJp
YnV0ZU5hbWUKIHsKKyAgICBpZiAoIW1fb2JqZWN0KQorICAgICAgICByZXR1cm47CisKICAgICBt
X29iamVjdC0+dXBkYXRlQmFja2luZ1N0b3JlKCk7CiAKICAgICBXZWJDb3JlVGV4dE1hcmtlclJh
bmdlKiB0ZXh0TWFya2VyUmFuZ2UgPSBuaWw7CkBAIC0yMDIyLDYgKzIwNTIsOSBAQCBzdGF0aWMg
UmVuZGVyT2JqZWN0KiByZW5kZXJlckZvclZpZXcoTlNWCiAvLyBBUEkgdGhhdCBBcHBLaXQgdXNl
cyBmb3IgZmFzdGVyIGFjY2VzcwogLSAoTlNVSW50ZWdlcilhY2Nlc3NpYmlsaXR5SW5kZXhPZkNo
aWxkOihpZCljaGlsZAogeworICAgIGlmICghbV9vYmplY3QpCisgICAgICAgIHJldHVybiBOU05v
dEZvdW5kOworCiAgICAgbV9vYmplY3QtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOwogICAgIAogICAg
IGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYg
Y2hpbGRyZW4gPSBtX29iamVjdC0+Y2hpbGRyZW4oKTsKQEAgLTIwNDAsNiArMjA3Myw5IEBAIHN0
YXRpYyBSZW5kZXJPYmplY3QqIHJlbmRlcmVyRm9yVmlldyhOU1YKIAogLSAoTlNVSW50ZWdlcilh
Y2Nlc3NpYmlsaXR5QXJyYXlBdHRyaWJ1dGVDb3VudDooTlNTdHJpbmcgKilhdHRyaWJ1dGUKIHsK
KyAgICBpZiAoIW1fb2JqZWN0KQorICAgICAgICByZXR1cm4gMDsKKwogICAgIG1fb2JqZWN0LT51
cGRhdGVCYWNraW5nU3RvcmUoKTsKICAgICAKICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9T
dHJpbmc6TlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5BdHRyaWJ1dGVdKSB7CkBAIC0yMDU1LDYgKzIw
OTEsOSBAQCBzdGF0aWMgUmVuZGVyT2JqZWN0KiByZW5kZXJlckZvclZpZXcoTlNWCiAKIC0gKE5T
QXJyYXkgKilhY2Nlc3NpYmlsaXR5QXJyYXlBdHRyaWJ1dGVWYWx1ZXM6KE5TU3RyaW5nICopYXR0
cmlidXRlIGluZGV4OihOU1VJbnRlZ2VyKWluZGV4IG1heENvdW50OihOU1VJbnRlZ2VyKW1heENv
dW50IAogeworICAgIGlmICghbV9vYmplY3QpCisgICAgICAgIHJldHVybiBuaWw7CisKICAgICBt
X29iamVjdC0+dXBkYXRlQmFja2luZ1N0b3JlKCk7CiAgICAgCiAgICAgaWYgKFthdHRyaWJ1dGUg
aXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlXSkgewpJbmRl
eDogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90YWJsZS11cGRhdGluZy1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90YWJsZS11cGRhdGluZy1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3Rh
YmxlLXVwZGF0aW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorVGVz
dCBwYXNzZXMgaWYgbm8gY3Jhc2guCkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3Rh
YmxlLXVwZGF0aW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS90YWJsZS11cGRhdGluZy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS90YWJsZS11cGRhdGluZy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ3IEBA
Cis8aHRtbD4KKworPGhlYWQ+Cis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKzwv
c2NyaXB0PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCitmdW5jdGlvbiByZW1v
dmVUYWJsZSgpCit7CisgICAgdmFyIHRhYmxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rh
YmxlMScpOworICAgIHZhciBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGFi
bGVjb250YWluZXInKTsKKyAKKyAgICBjb250YWluZXIucmVtb3ZlQ2hpbGQodGFibGUpOyAgCit9
CisKKzwvc2NyaXB0PgorPC9oZWFkPgorCis8Ym9keSBpZD0iYm9keSI+CisKKzxkaXYgaWQ9J3Rh
YmxlY29udGFpbmVyJz4KKzx0YWJsZSBpZD0ndGFibGUxJyBib3JkZXI9JzEnIHdpZHRoPTEwMD48
dHIgaWQ9InJvdyI+PHRkPkE8L3RkPjx0ZD5CPC90ZD48dGQ+QzwvdGQ+PC90cj48L3RhYmxlPgor
PC9kaXY+CisKKzxzY3JpcHQ+CisgICAgICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIpIHsKKworICAgICAgICAgICAgdmFyIGJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiYm9keSIpOworICAgICAgICAgICAgYm9keS5mb2N1cygpOworICAgICAgICAgICAgdmFyIGRp
dkNvbnRhaW5lciA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxk
QXRJbmRleCgwKTsKKworICAgICAgICAgICAgdmFyIHJlc3VsdHMgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgicmVzdWx0cyIpOworCisgICAgICAgICAgICBkaXZDb250YWluZXIuYWxsQXR0cmli
dXRlcygpOworCisgICAgICAgICAgICByZW1vdmVUYWJsZSgpOworCisgICAgICAgICAgICBkaXZD
b250YWluZXIuYWxsQXR0cmlidXRlcygpOworICAgICAgICB9Cis8L3NjcmlwdD4KKworVGVzdCBw
YXNzZXMgaWYgbm8gY3Jhc2guCisKKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27954</attachid>
            <date>2009-02-24 18:36:24 -0800</date>
            <delta_ts>2009-02-25 13:35:35 -0800</delta_ts>
            <desc>patch to fix crash</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>17985</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MTIwNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDcgQEAKKzIwMDktMDItMjQgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBCdWcgMjQxNDM6IENyYXNoIG9jY3VycyBhdCBXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6
OmlzVGFibGVFeHBvc2FibGVUaHJvdWdoQWNjZXNzaWJpbGl0eSgpIHdoZW4gYXBwbHlpbmcgYSBs
aW5rIGluIEdNYWlsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yNDE0MworIAorICAgICAgICBXaGVuIGFuIEFYIG9iamVjdCBpcyBtYXJrZWQgZGlydHks
IGRvIG5vdCBjcmVhdGUgQVggZWxlbWVudHMgd2hpbGUgZ29pbmcgdXAgdGhlIHBhcmVudCBjaGFp
bi4KKyAgICAgICAgRG8gbm90IGFsbG93IEFYUmVuZGVyT2JqZWN0cyB0byByZW1vdmUgdGhlaXIg
b3duIElEcyBmcm9tIHRoZSBjYWNoZSwgYWxsIHRoZSBjYWNoZSB0byBkbyB0aGF0IHdvcmsKKyAg
ICAgICAgTWFrZSBzdXJlIHRoZSBBWE9iamVjdFdyYXBwZXIncyBoYXZlIGFuIG9iamVjdCBiZWZv
cmUgY2FsbGluZyB0aGVtCisKKyAgICAgICAgVGVzdDogYWNjZXNzaWJpbGl0eS90YWJsZS11cGRh
dGluZy5odG1sCisKKyAgICAgICAgKiBwYWdlL0FYT2JqZWN0Q2FjaGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6fkFYT2JqZWN0Q2FjaGUpOgorICAgICAgICAoV2ViQ29y
ZTo6QVhPYmplY3RDYWNoZTo6Z2V0SWZFeGlzdHMpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmpl
Y3RDYWNoZTo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnJlbW92ZUFY
SUQpOgorICAgICAgICAqIHBhZ2UvQVhPYmplY3RDYWNoZS5oOgorICAgICAgICAqIHBhZ2UvQWNj
ZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0OjpkZXRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6cGFy
ZW50T2JqZWN0SWZFeGlzdHMpOgorICAgICAgICAqIHBhZ2UvQWNjZXNzaWJpbGl0eU9iamVjdC5o
OgorICAgICAgICAqIHBhZ2UvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpwYXJlbnRPYmplY3RJZkV4aXN0
cyk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc0F0dGFj
aG1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Y2hp
bGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKiBwYWdlL0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnNldFJlbmRl
ck9iamVjdCk6CisgICAgICAgICogcGFnZS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIu
bW06CisgICAgICAgICgtW0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlB
Y3Rpb25OYW1lc10pOgorICAgICAgICAoLVtBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nl
c3NpYmlsaXR5QXR0cmlidXRlTmFtZXNdKToKKyAgICAgICAgKC1bQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXIgYWNjZXNzaWJpbGl0eUZvY3VzZWRVSUVsZW1lbnRdKToKKyAgICAgICAgKC1bQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUhpdFRlc3Q6XSk6CisgICAgICAg
ICgtW0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlJc0F0dHJpYnV0ZVNl
dHRhYmxlOl0pOgorICAgICAgICAoLVtBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3Np
YmlsaXR5SXNJZ25vcmVkXSk6CisgICAgICAgICgtW0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
IGFjY2Vzc2liaWxpdHlQYXJhbWV0ZXJpemVkQXR0cmlidXRlTmFtZXNdKToKKyAgICAgICAgKC1b
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eVBlcmZvcm1QcmVzc0FjdGlv
bl0pOgorICAgICAgICAoLVtBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5
UGVyZm9ybUFjdGlvbjpdKToKKyAgICAgICAgKC1bQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIg
YWNjZXNzaWJpbGl0eVNldFZhbHVlOmZvckF0dHJpYnV0ZTpdKToKKyAgICAgICAgKC1bQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUluZGV4T2ZDaGlsZDpdKToKKyAgICAg
ICAgKC1bQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUFycmF5QXR0cmli
dXRlQ291bnQ6XSk6CisgICAgICAgICgtW0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vz
c2liaWxpdHlBcnJheUF0dHJpYnV0ZVZhbHVlczppbmRleDptYXhDb3VudDpdKToKKwogMjAwOS0w
Mi0yNCAgT2phbiBWYWZhaSAgPG9qYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEVyaWMgU2VpZGVsLgpJbmRleDogV2ViQ29yZS9wYWdlL0FYT2JqZWN0Q2FjaGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9BWE9iamVjdENhY2hlLmNwcAkocmV2aXNpb24gNDEx
OTgpCisrKyBXZWJDb3JlL3BhZ2UvQVhPYmplY3RDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTU4LDQ0ICs1OCw1OCBAQCBBWE9iamVjdENhY2hlOjp+QVhPYmplY3RDYWNoZSgpCiAgICAgICAg
IEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiA9ICgqaXQpLnNlY29uZC5nZXQoKTsKICAgICAgICAg
ZGV0YWNoV3JhcHBlcihvYmopOwogICAgICAgICBvYmotPmRldGFjaCgpOworICAgICAgICByZW1v
dmVBWElEKG9iaik7CiAgICAgfQogfQogCi1BY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENh
Y2hlOjpnZXQoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKK0FjY2Vzc2liaWxpdHlPYmplY3QqIEFY
T2JqZWN0Q2FjaGU6OmdldElmRXhpc3RzKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiB7CiAgICAg
aWYgKCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJuIDA7CiAgICAgCi0gICAgUmVmUHRyPEFjY2Vz
c2liaWxpdHlPYmplY3Q+IG9iaiA9IDA7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqID0g
MDsKICAgICBBWElEIGF4SUQgPSBtX3JlbmRlck9iamVjdE1hcHBpbmcuZ2V0KHJlbmRlcmVyKTsK
ICAgICBBU1NFUlQoIUhhc2hUcmFpdHM8QVhJRD46OmlzRGVsZXRlZFZhbHVlKGF4SUQpKTsKIAog
ICAgIGlmIChheElEKQogICAgICAgICBvYmogPSBtX29iamVjdHMuZ2V0KGF4SUQpLmdldCgpOwor
ICAgIAorICAgIHJldHVybiBvYmo7Cit9CisKK0FjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0
Q2FjaGU6OmdldChSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQoreworICAgIGlmICghcmVuZGVyZXIp
CisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiA9
IGdldElmRXhpc3RzKHJlbmRlcmVyKTsKIAotICAgIE5vZGUqIG5vZGUgPSByZW5kZXJlci0+bm9k
ZSgpOwogICAgIGlmICghb2JqKSB7CisgICAgICAgIE5vZGUqIG5vZGUgPSByZW5kZXJlci0+bm9k
ZSgpOworICAgICAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4gbmV3T2JqID0gMDsKICAg
ICAgICAgaWYgKHJlbmRlcmVyLT5pc0xpc3RCb3goKSkKLSAgICAgICAgICAgIG9iaiA9IEFjY2Vz
c2liaWxpdHlMaXN0Qm94OjpjcmVhdGUocmVuZGVyZXIpOworICAgICAgICAgICAgbmV3T2JqID0g
QWNjZXNzaWJpbGl0eUxpc3RCb3g6OmNyZWF0ZShyZW5kZXJlcik7CiAgICAgICAgIGVsc2UgaWYg
KG5vZGUgJiYgKG5vZGUtPmhhc1RhZ05hbWUodWxUYWcpIHx8IG5vZGUtPmhhc1RhZ05hbWUob2xU
YWcpIHx8IG5vZGUtPmhhc1RhZ05hbWUoZGxUYWcpKSkKLSAgICAgICAgICAgIG9iaiA9IEFjY2Vz
c2liaWxpdHlMaXN0OjpjcmVhdGUocmVuZGVyZXIpOworICAgICAgICAgICAgbmV3T2JqID0gQWNj
ZXNzaWJpbGl0eUxpc3Q6OmNyZWF0ZShyZW5kZXJlcik7CiAgICAgICAgIGVsc2UgaWYgKHJlbmRl
cmVyLT5pc1RhYmxlKCkpCi0gICAgICAgICAgICBvYmogPSBBY2Nlc3NpYmlsaXR5VGFibGU6OmNy
ZWF0ZShyZW5kZXJlcik7CisgICAgICAgICAgICBuZXdPYmogPSBBY2Nlc3NpYmlsaXR5VGFibGU6
OmNyZWF0ZShyZW5kZXJlcik7CiAgICAgICAgIGVsc2UgaWYgKHJlbmRlcmVyLT5pc1RhYmxlUm93
KCkpCi0gICAgICAgICAgICBvYmogPSBBY2Nlc3NpYmlsaXR5VGFibGVSb3c6OmNyZWF0ZShyZW5k
ZXJlcik7CisgICAgICAgICAgICBuZXdPYmogPSBBY2Nlc3NpYmlsaXR5VGFibGVSb3c6OmNyZWF0
ZShyZW5kZXJlcik7CiAgICAgICAgIGVsc2UgaWYgKHJlbmRlcmVyLT5pc1RhYmxlQ2VsbCgpKQot
ICAgICAgICAgICAgb2JqID0gQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6Y3JlYXRlKHJlbmRlcmVy
KTsKKyAgICAgICAgICAgIG5ld09iaiA9IEFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6OmNyZWF0ZShy
ZW5kZXJlcik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIG9iaiA9IEFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3Q6OmNyZWF0ZShyZW5kZXJlcik7CisgICAgICAgICAgICBuZXdPYmogPSBBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpjcmVhdGUocmVuZGVyZXIpOwogICAgICAgICAKLSAgICAg
ICAgZ2V0QVhJRChvYmouZ2V0KCkpOworICAgICAgICBvYmogPSBuZXdPYmouZ2V0KCk7CisgICAg
ICAgIAorICAgICAgICBnZXRBWElEKG9iaik7CiAgICAgICAgIAotICAgICAgICBtX3JlbmRlck9i
amVjdE1hcHBpbmcuc2V0KHJlbmRlcmVyLCBvYmouZ2V0KCktPmF4T2JqZWN0SUQoKSk7Ci0gICAg
ICAgIG1fb2JqZWN0cy5zZXQob2JqLmdldCgpLT5heE9iamVjdElEKCksIG9iaik7ICAgIAotICAg
ICAgICBhdHRhY2hXcmFwcGVyKG9iai5nZXQoKSk7CisgICAgICAgIG1fcmVuZGVyT2JqZWN0TWFw
cGluZy5zZXQocmVuZGVyZXIsIG9iai0+YXhPYmplY3RJRCgpKTsKKyAgICAgICAgbV9vYmplY3Rz
LnNldChvYmotPmF4T2JqZWN0SUQoKSwgb2JqKTsgICAgCisgICAgICAgIGF0dGFjaFdyYXBwZXIo
b2JqKTsKICAgICB9CiAgICAgCi0gICAgcmV0dXJuIG9iai5nZXQoKTsKKyAgICByZXR1cm4gb2Jq
OwogfQogCiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpnZXQoQWNjZXNzaWJp
bGl0eVJvbGUgcm9sZSkKQEAgLTE4Niw2ICsyMDAsOSBAQCBBWElEIEFYT2JqZWN0Q2FjaGU6Omdl
dEFYSUQoQWNjZXNzaWJpbGl0CiAKIHZvaWQgQVhPYmplY3RDYWNoZTo6cmVtb3ZlQVhJRChBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBvYmopCiB7CisgICAgaWYgKCFvYmopCisgICAgICAgIHJldHVybjsK
KyAgICAKICAgICBBWElEIG9iaklEID0gb2JqLT5heE9iamVjdElEKCk7CiAgICAgaWYgKG9iaklE
ID09IDApCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFdlYkNvcmUvcGFnZS9BWE9iamVjdENhY2hl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0FYT2JqZWN0Q2FjaGUuaAkocmV2aXNpb24g
NDExOTgpCisrKyBXZWJDb3JlL3BhZ2UvQVhPYmplY3RDYWNoZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC02NSw2ICs2NSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gdXNlZCBmb3Ig
b2JqZWN0cyB3aXRob3V0IGJhY2tpbmcgZWxlbWVudHMKICAgICAgICAgQWNjZXNzaWJpbGl0eU9i
amVjdCogZ2V0KEFjY2Vzc2liaWxpdHlSb2xlKTsKICAgICAgICAgCisgICAgICAgIC8vIHdpbGwg
b25seSByZXR1cm4gdGhlIEFjY2Vzc2liaWxpdHlPYmplY3QgaWYgaXQgYWxyZWFkeSBleGlzdHMK
KyAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogZ2V0SWZFeGlzdHMoUmVuZGVyT2JqZWN0Kik7
CisgICAgICAgIAogICAgICAgICB2b2lkIHJlbW92ZShSZW5kZXJPYmplY3QqKTsKICAgICAgICAg
dm9pZCByZW1vdmUoQVhJRCk7CiAKSW5kZXg6IFdlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvQWNjZXNzaWJpbGl0eU9iamVjdC5j
cHAJKHJldmlzaW9uIDQxMTk4KQorKysgV2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlPYmplY3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw2IEBAIEFjY2Vzc2liaWxpdHlPYmplY3Q6
On5BY2Nlc3NpYmlsaXR5T2JqZWMKIAogdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpkZXRhY2go
KQogewotICAgIHJlbW92ZUFYT2JqZWN0SUQoKTsKICNpZiBIQVZFKEFDQ0VTU0lCSUxJVFkpCiAg
ICAgc2V0V3JhcHBlcigwKTsKICNlbmRpZiAgICAKQEAgLTExNCw2ICsxMTMsMTEgQEAgQWNjZXNz
aWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eU9iamVjdAogICAgIHJldHVybiBwYXJlbnQ7CiB9
CiAKK0FjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnBhcmVudE9iamVj
dElmRXhpc3RzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gMDsKK30KKyAgICAKIGludCBBY2Nlc3Np
YmlsaXR5T2JqZWN0OjpsYXlvdXRDb3VudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIDA7CkBAIC05
OTYsMTEgKzEwMDAsNiBAQCB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnNldEFYT2JqZWN0SUQo
CiAgICAgbV9pZCA9IGF4T2JqZWN0SUQ7CiB9CiAKLXZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6
cmVtb3ZlQVhPYmplY3RJRCgpCi17Ci0gICAgcmV0dXJuOwotfQotCiBjb25zdCBTdHJpbmcmIEFj
Y2Vzc2liaWxpdHlPYmplY3Q6OmFjdGlvblZlcmIoKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBO
ZWVkIHRvIGFkZCB2ZXJicyBmb3Igc2VsZWN0IGVsZW1lbnRzLgpJbmRleDogV2ViQ29yZS9wYWdl
L0FjY2Vzc2liaWxpdHlPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvQWNjZXNz
aWJpbGl0eU9iamVjdC5oCShyZXZpc2lvbiA0MTE5OCkKKysrIFdlYkNvcmUvcGFnZS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2Niw2ICsyNjYsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBuZXh0U2libGluZygpIGNvbnN0Owog
ICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0KCkgY29uc3Q7CiAg
ICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnRPYmplY3RVbmlnbm9yZWQoKSBj
b25zdDsKKyAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudE9iamVjdElmRXhp
c3RzKCkgY29uc3Q7CiAgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYnNlcnZhYmxl
T2JqZWN0KCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGxpbmtlZFVJRWxlbWVudHMoQWNjZXNz
aWJpbGl0eUNoaWxkcmVuVmVjdG9yJikgY29uc3Q7CiAgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiB0aXRsZVVJRWxlbWVudCgpIGNvbnN0OwpAQCAtNDEwLDcgKzQxMSw2IEBAIHByb3Rl
Y3RlZDoKICAgICBtdXRhYmxlIGJvb2wgbV9oYXZlQ2hpbGRyZW47CiAgICAgCiAgICAgdmlydHVh
bCB2b2lkIGNsZWFyQ2hpbGRyZW4oKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQVhPYmplY3RJ
RCgpOwogICAgIHZpcnR1YWwgYm9vbCBpc0RldGFjaGVkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsg
fQogCiAjaWYgUExBVEZPUk0oTUFDKQpJbmRleDogV2ViQ29yZS9wYWdlL0FjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9BY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24gNDExOTgpCisrKyBXZWJDb3JlL3BhZ2UvQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MCw2ICsxNjAsMTgg
QEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRlcgogICAgIHJldHVybiBt
X3JlbmRlcmVyLT5kb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPmdldChuZXh0U2libGluZyk7
CiB9CiAKK0FjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnBh
cmVudE9iamVjdElmRXhpc3RzKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcmVuZGVyZXIpCisgICAg
ICAgIHJldHVybiAwOworICAgIAorICAgIFJlbmRlck9iamVjdCAqcGFyZW50ID0gbV9yZW5kZXJl
ci0+cGFyZW50KCk7CisgICAgaWYgKCFwYXJlbnQpCisgICAgICAgIHJldHVybiAwOworCisgICAg
cmV0dXJuIG1fcmVuZGVyZXItPmRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+Z2V0SWZFeGlz
dHMocGFyZW50KTsKK30KKyAgICAKIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3Q6OnBhcmVudE9iamVjdCgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3JlbmRlcmVy
KQpAQCAtMjIwLDYgKzIzMiw5IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6aXNJ
bWFnZSgKIAogYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojppc0F0dGFjaG1lbnQoKSBj
b25zdAogeworICAgIGlmICghbV9yZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IAogICAgIC8vIFdpZGdldHMgYXJlIHRoZSByZXBsYWNlZCBlbGVtZW50cyB0aGF0IHdlIHJlcHJl
c2VudCB0byBBWCBhcyBhdHRhY2htZW50cwogICAgIGJvb2wgaXNXaWRnZXQgPSBtX3JlbmRlcmVy
ICYmIG1fcmVuZGVyZXItPmlzV2lkZ2V0KCk7CiAgICAgQVNTRVJUKCFpc1dpZGdldCB8fCAobV9y
ZW5kZXJlci0+aXNSZXBsYWNlZCgpICYmICFpc0ltYWdlKCkpKTsKQEAgLTIyNTgsMTMgKzIyNzMs
MTUgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpjaGlsZHJlbgogICAgIAogICAg
IG1hcmtDaGlsZHJlbkRpcnR5KCk7CiAgICAgCi0gICAgLy8gdGhpcyBvYmplY3QgbWF5IG5vdCBi
ZSBhY2Nlc3NpYmxlIChhbmQgdGh1cyBtYXkgbm90IGFwcGVhcgorICAgIC8vIFRoaXMgb2JqZWN0
IG1heSBub3QgYmUgYWNjZXNzaWJsZSAoYW5kIHRodXMgbWF5IG5vdCBhcHBlYXIKICAgICAvLyBp
biB0aGUgaGllcmFyY2h5KSwgd2hpY2ggbWVhbnMgd2UgbmVlZCB0byBnbyB1cCB0aGUgcGFyZW50
CiAgICAgLy8gY2hhaW4gYW5kIG1hcmsgdGhlIHBhcmVudCdzIGRpcnR5LiBJZGVhbGx5LCB3ZSB3
b3VsZCB3YW50CiAgICAgLy8gdG8gb25seSBhY2Nlc3MgdGhlIG5leHQgb2JqZWN0IHRoYXQgaXMg
bm90IGlnbm9yZWQsIGJ1dAogICAgIC8vIGFza2luZyBhbiBlbGVtZW50IGlmIGl0J3MgaWdub3Jl
ZCBjYW4gbGVhZCB0byBhbiBleGFtaW5hdGlvbiBvZiB0aGUKLSAgICAvLyByZW5kZXIgdHJlZSB3
aGljaCBpcyBkYW5nZXJvdXMuCi0gICAgZm9yIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQg
PSBwYXJlbnRPYmplY3QoKTsgcGFyZW50OyBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudE9iamVjdCgp
KSB7CisgICAgLy8gcmVuZGVyIHRyZWUgd2hpY2ggaXMgZGFuZ2Vyb3VzLiAKKyAgICAvLyBPbmx5
IHBhcmVudHMgdGhhdCBhbHJlYWR5IGV4aXN0IG11c3QgYmUgcmV0cmlldmVkLCBvdGhlcndpc2Ug
b2JqZWN0cyBjYW4gYmUgY3JlYXRlZAorICAgIC8vIGF0IGJhZCB0aW1lcworICAgIGZvciAoQWNj
ZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0SWZFeGlzdHMoKTsgcGFyZW50
OyBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudE9iamVjdElmRXhpc3RzKCkpIHsKICAgICAgICAgaWYg
KHBhcmVudC0+aXNBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KCkpCiAgICAgICAgICAgICBzdGF0
aWNfY2FzdDxBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0ICo+KHBhcmVudCktPm1hcmtDaGlsZHJl
bkRpcnR5KCk7CiAgICAgfQpAQCAtMjQxNywxNSArMjQzNCw2IEBAIHZvaWQgQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6dmlzaWJsZUMKICAgICByZXR1cm4gYXJpYUxpc3Rib3hWaXNpYmxlQ2hp
bGRyZW4ocmVzdWx0KTsKIH0KICAKLXZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6cmVt
b3ZlQVhPYmplY3RJRCgpCi17Ci0gICAgaWYgKCFtX2lkKQotICAgICAgICByZXR1cm47Ci0jaWYg
UExBVEZPUk0oTUFDKQotICAgIG1fcmVuZGVyZXItPmRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUo
KS0+cmVtb3ZlQVhJRCh0aGlzKTsKLSNlbmRpZgotfSAgIAotICAgIAogY29uc3QgU3RyaW5nJiBB
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphY3Rpb25WZXJiKCkgY29uc3QKIHsKICAgICAvLyBG
SVhNRTogTmVlZCB0byBhZGQgdmVyYnMgZm9yIHNlbGVjdCBlbGVtZW50cy4KSW5kZXg6IFdlYkNv
cmUvcGFnZS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wYWdlL0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAkocmV2aXNpb24gNDExOTgpCisrKyBX
ZWJDb3JlL3BhZ2UvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjUsNiArMTI1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVj
dCogcHJldmlvdXNTaWJsaW5nKCkgY29uc3Q7CiAgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBuZXh0U2libGluZygpIGNvbnN0OwogICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVj
dCogcGFyZW50T2JqZWN0KCkgY29uc3Q7CisgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBwYXJlbnRPYmplY3RJZkV4aXN0cygpIGNvbnN0OwogICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0
eU9iamVjdCogb2JzZXJ2YWJsZU9iamVjdCgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBsaW5r
ZWRVSUVsZW1lbnRzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpIGNvbnN0OwogICAgIHZp
cnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogdGl0bGVVSUVsZW1lbnQoKSBjb25zdDsKQEAgLTIx
OCw3ICsyMTksNiBAQCBwcm90ZWN0ZWQ6CiAgICAgbXV0YWJsZSBib29sIG1fY2hpbGRyZW5EaXJ0
eTsKICAgICAKICAgICB2b2lkIHNldFJlbmRlck9iamVjdChSZW5kZXJPYmplY3QqIHJlbmRlcmVy
KSB7IG1fcmVuZGVyZXIgPSByZW5kZXJlcjsgfQotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVBWE9i
amVjdElEKCk7CiAgICAgCiAgICAgdmlydHVhbCBib29sIGlzRGV0YWNoZWQoKSBjb25zdCB7IHJl
dHVybiAhbV9yZW5kZXJlcjsgfQogCkluZGV4OiBXZWJDb3JlL3BhZ2UvbWFjL0FjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9tYWMvQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXIubW0JKHJldmlzaW9uIDQxMTk4KQorKysgV2ViQ29yZS9wYWdl
L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbQkod29ya2luZyBjb3B5KQpAQCAtNTgy
LDYgKzU4Miw5IEBAIHN0YXRpYyBXZWJDb3JlVGV4dE1hcmtlclJhbmdlKiB0ZXh0TWFya2UKIAog
LSAoTlNBcnJheSopYWNjZXNzaWJpbGl0eUFjdGlvbk5hbWVzCiB7CisgICAgaWYgKCFtX29iamVj
dCkKKyAgICAgICAgcmV0dXJuIG5pbDsKKwogICAgIG1fb2JqZWN0LT51cGRhdGVCYWNraW5nU3Rv
cmUoKTsKIAogICAgIHN0YXRpYyBOU0FycmF5KiBhY3Rpb25FbGVtZW50QWN0aW9ucyA9IFtbTlNB
cnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOiBOU0FjY2Vzc2liaWxpdHlQcmVzc0FjdGlvbiwg
TlNBY2Nlc3NpYmlsaXR5U2hvd01lbnVBY3Rpb24sIG5pbF07CkBAIC02MDMsNiArNjA2LDkgQEAg
c3RhdGljIFdlYkNvcmVUZXh0TWFya2VyUmFuZ2UqIHRleHRNYXJrZQogCiAtIChOU0FycmF5Kilh
Y2Nlc3NpYmlsaXR5QXR0cmlidXRlTmFtZXMKIHsKKyAgICBpZiAoIW1fb2JqZWN0KQorICAgICAg
ICByZXR1cm4gbmlsOworICAgIAogICAgIG1fb2JqZWN0LT51cGRhdGVCYWNraW5nU3RvcmUoKTsK
ICAgICAKICAgICBpZiAobV9vYmplY3QtPmlzQXR0YWNobWVudCgpKQpAQCAtMTQ0NSw2ICsxNDUx
LDkgQEAgc3RhdGljIE5TU3RyaW5nKiByb2xlVmFsdWVUb05TU3RyaW5nKEFjYwogCiAtIChpZClh
Y2Nlc3NpYmlsaXR5Rm9jdXNlZFVJRWxlbWVudAogeworICAgIGlmICghbV9vYmplY3QpCisgICAg
ICAgIHJldHVybiBuaWw7CisKICAgICBtX29iamVjdC0+dXBkYXRlQmFja2luZ1N0b3JlKCk7CiAK
ICAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4gZm9jdXNlZE9iaiA9IG1fb2JqZWN0LT5m
b2N1c2VkVUlFbGVtZW50KCk7CkBAIC0xNDU3LDYgKzE0NjYsOSBAQCBzdGF0aWMgTlNTdHJpbmcq
IHJvbGVWYWx1ZVRvTlNTdHJpbmcoQWNjCiAKIC0gKGlkKWFjY2Vzc2liaWxpdHlIaXRUZXN0OihO
U1BvaW50KXBvaW50CiB7CisgICAgaWYgKCFtX29iamVjdCkKKyAgICAgICAgcmV0dXJuIG5pbDsK
KwogICAgIG1fb2JqZWN0LT51cGRhdGVCYWNraW5nU3RvcmUoKTsKIAogICAgIFJlZlB0cjxBY2Nl
c3NpYmlsaXR5T2JqZWN0PiBheE9iamVjdCA9IG1fb2JqZWN0LT5kb0FjY2Vzc2liaWxpdHlIaXRU
ZXN0KEludFBvaW50KHBvaW50KSk7CkBAIC0xNDY3LDYgKzE0NzksOSBAQCBzdGF0aWMgTlNTdHJp
bmcqIHJvbGVWYWx1ZVRvTlNTdHJpbmcoQWNjCiAKIC0gKEJPT0wpYWNjZXNzaWJpbGl0eUlzQXR0
cmlidXRlU2V0dGFibGU6KE5TU3RyaW5nKilhdHRyaWJ1dGVOYW1lCiB7CisgICAgaWYgKCFtX29i
amVjdCkKKyAgICAgICAgcmV0dXJuIG5pbDsKKwogICAgIG1fb2JqZWN0LT51cGRhdGVCYWNraW5n
U3RvcmUoKTsKIAogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IEAiQVhT
ZWxlY3RlZFRleHRNYXJrZXJSYW5nZSJdKQpAQCAtMTUwMyw2ICsxNTE4LDkgQEAgc3RhdGljIE5T
U3RyaW5nKiByb2xlVmFsdWVUb05TU3RyaW5nKEFjYwogLy8gUmVnaXN0ZXJpbmcgYW4gb2JqZWN0
IGlzIGFsc28gcmVxdWlyZWQgZm9yIG9ic2VydmluZyBub3RpZmljYXRpb25zLiBPbmx5IHJlZ2lz
dGVyZWQgb2JqZWN0cyBjYW4gYmUgb2JzZXJ2ZWQuCiAtIChCT09MKWFjY2Vzc2liaWxpdHlJc0ln
bm9yZWQKIHsKKyAgICBpZiAoIW1fb2JqZWN0KQorICAgICAgICByZXR1cm4gbmlsOworCiAgICAg
bV9vYmplY3QtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOwogCiAgICAgaWYgKG1fb2JqZWN0LT5pc0F0
dGFjaG1lbnQoKSkKQEAgLTE1MTIsNiArMTUzMCw5IEBAIHN0YXRpYyBOU1N0cmluZyogcm9sZVZh
bHVlVG9OU1N0cmluZyhBY2MKIAogLSAoTlNBcnJheSogKWFjY2Vzc2liaWxpdHlQYXJhbWV0ZXJp
emVkQXR0cmlidXRlTmFtZXMKIHsKKyAgICBpZiAoIW1fb2JqZWN0KQorICAgICAgICByZXR1cm4g
bmlsOworCiAgICAgbV9vYmplY3QtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOwogCiAgICAgaWYgKG1f
b2JqZWN0LT5pc0F0dGFjaG1lbnQoKSkgCkBAIC0xNTk0LDYgKzE2MTUsOSBAQCBzdGF0aWMgTlNT
dHJpbmcqIHJvbGVWYWx1ZVRvTlNTdHJpbmcoQWNjCiAKIC0gKHZvaWQpYWNjZXNzaWJpbGl0eVBl
cmZvcm1QcmVzc0FjdGlvbgogeworICAgIGlmICghbV9vYmplY3QpCisgICAgICAgIHJldHVybjsK
KwogICAgIG1fb2JqZWN0LT51cGRhdGVCYWNraW5nU3RvcmUoKTsKIAogICAgIGlmIChtX29iamVj
dC0+aXNBdHRhY2htZW50KCkpCkBAIC0xNjQwLDYgKzE2NjQsOSBAQCBzdGF0aWMgTlNTdHJpbmcq
IHJvbGVWYWx1ZVRvTlNTdHJpbmcoQWNjCiAKIC0gKHZvaWQpYWNjZXNzaWJpbGl0eVBlcmZvcm1B
Y3Rpb246KE5TU3RyaW5nKilhY3Rpb24KIHsKKyAgICBpZiAoIW1fb2JqZWN0KQorICAgICAgICBy
ZXR1cm47CisKICAgICBtX29iamVjdC0+dXBkYXRlQmFja2luZ1N0b3JlKCk7CiAKICAgICBpZiAo
W2FjdGlvbiBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5UHJlc3NBY3Rpb25dKQpAQCAt
MTY1MSw2ICsxNjc4LDkgQEAgc3RhdGljIE5TU3RyaW5nKiByb2xlVmFsdWVUb05TU3RyaW5nKEFj
YwogCiAtICh2b2lkKWFjY2Vzc2liaWxpdHlTZXRWYWx1ZTooaWQpdmFsdWUgZm9yQXR0cmlidXRl
OihOU1N0cmluZyopYXR0cmlidXRlTmFtZQogeworICAgIGlmICghbV9vYmplY3QpCisgICAgICAg
IHJldHVybjsKKwogICAgIG1fb2JqZWN0LT51cGRhdGVCYWNraW5nU3RvcmUoKTsKIAogICAgIFdl
YkNvcmVUZXh0TWFya2VyUmFuZ2UqIHRleHRNYXJrZXJSYW5nZSA9IG5pbDsKQEAgLTIwMjIsNiAr
MjA1Miw5IEBAIHN0YXRpYyBSZW5kZXJPYmplY3QqIHJlbmRlcmVyRm9yVmlldyhOU1YKIC8vIEFQ
SSB0aGF0IEFwcEtpdCB1c2VzIGZvciBmYXN0ZXIgYWNjZXNzCiAtIChOU1VJbnRlZ2VyKWFjY2Vz
c2liaWxpdHlJbmRleE9mQ2hpbGQ6KGlkKWNoaWxkCiB7CisgICAgaWYgKCFtX29iamVjdCkKKyAg
ICAgICAgcmV0dXJuIE5TTm90Rm91bmQ7CisKICAgICBtX29iamVjdC0+dXBkYXRlQmFja2luZ1N0
b3JlKCk7CiAgICAgCiAgICAgY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0
eUNoaWxkcmVuVmVjdG9yJiBjaGlsZHJlbiA9IG1fb2JqZWN0LT5jaGlsZHJlbigpOwpAQCAtMjA0
MCw2ICsyMDczLDkgQEAgc3RhdGljIFJlbmRlck9iamVjdCogcmVuZGVyZXJGb3JWaWV3KE5TVgog
CiAtIChOU1VJbnRlZ2VyKWFjY2Vzc2liaWxpdHlBcnJheUF0dHJpYnV0ZUNvdW50OihOU1N0cmlu
ZyAqKWF0dHJpYnV0ZQogeworICAgIGlmICghbV9vYmplY3QpCisgICAgICAgIHJldHVybiAwOwor
CiAgICAgbV9vYmplY3QtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOwogICAgIAogICAgIGlmIChbYXR0
cmlidXRlIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZV0p
IHsKQEAgLTIwNTUsNiArMjA5MSw5IEBAIHN0YXRpYyBSZW5kZXJPYmplY3QqIHJlbmRlcmVyRm9y
VmlldyhOU1YKIAogLSAoTlNBcnJheSAqKWFjY2Vzc2liaWxpdHlBcnJheUF0dHJpYnV0ZVZhbHVl
czooTlNTdHJpbmcgKilhdHRyaWJ1dGUgaW5kZXg6KE5TVUludGVnZXIpaW5kZXggbWF4Q291bnQ6
KE5TVUludGVnZXIpbWF4Q291bnQgCiB7CisgICAgaWYgKCFtX29iamVjdCkKKyAgICAgICAgcmV0
dXJuIG5pbDsKKwogICAgIG1fb2JqZWN0LT51cGRhdGVCYWNraW5nU3RvcmUoKTsKICAgICAKICAg
ICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5B
dHRyaWJ1dGVdKSB7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA0MTIwNikKKysrIExheW91dFRlc3RzL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDA5LTAyLTI0ICBDaHJp
cyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQnVnIDI0MTQzOiBDcmFzaCBvY2N1cnMgYXQgV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlOjppc1RhYmxlRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2li
aWxpdHkoKSB3aGVuIGFwcGx5aW5nIGEgbGluayBpbiBHTWFpbAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQxNDMKKworICAgICAgICBBZGRlZCB0ZXN0
IGZvciBob3cgYWNjZXNzaWJpbGl0eSBoYW5kbGVzIHdoZW4gYSB0YWJsZSBpcyBkZWxldGVkIHRo
cm91Z2ggamF2YXNjcmlwdC4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvdGFibGUtdXBkYXRp
bmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L3RhYmxlLXVw
ZGF0aW5nLmh0bWw6IEFkZGVkLgorCiAyMDA5LTAyLTI0ICBEYXZpZCBIeWF0dCAgPGh5YXR0QGFw
cGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbApJbmRleDogTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS90YWJsZS11cGRhdGluZy1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90YWJsZS11cGRhdGluZy1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RhYmxlLXVwZGF0
aW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorVGVzdCBwYXNzZXMg
aWYgbm8gY3Jhc2guCkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RhYmxlLXVwZGF0
aW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90YWJsZS11
cGRhdGluZy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90
YWJsZS11cGRhdGluZy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ3IEBACis8aHRtbD4K
KworPGhlYWQ+Cis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKzwvc2NyaXB0Pgor
PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCitmdW5jdGlvbiByZW1vdmVUYWJsZSgp
Cit7CisgICAgdmFyIHRhYmxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RhYmxlMScpOwor
ICAgIHZhciBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGFibGVjb250YWlu
ZXInKTsKKyAKKyAgICBjb250YWluZXIucmVtb3ZlQ2hpbGQodGFibGUpOyAgCit9CisKKzwvc2Ny
aXB0PgorPC9oZWFkPgorCis8Ym9keSBpZD0iYm9keSI+CisKKzxkaXYgaWQ9J3RhYmxlY29udGFp
bmVyJz4KKzx0YWJsZSBpZD0ndGFibGUxJyBib3JkZXI9JzEnIHdpZHRoPTEwMD48dHIgaWQ9InJv
dyI+PHRkPkE8L3RkPjx0ZD5CPC90ZD48dGQ+QzwvdGQ+PC90cj48L3RhYmxlPgorPC9kaXY+CisK
KzxzY3JpcHQ+CisgICAgICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsK
KworICAgICAgICAgICAgdmFyIGJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYm9keSIp
OworICAgICAgICAgICAgYm9keS5mb2N1cygpOworICAgICAgICAgICAgdmFyIGRpdkNvbnRhaW5l
ciA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgw
KTsKKworICAgICAgICAgICAgdmFyIHJlc3VsdHMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cmVzdWx0cyIpOworCisgICAgICAgICAgICBkaXZDb250YWluZXIuYWxsQXR0cmlidXRlcygpOwor
CisgICAgICAgICAgICByZW1vdmVUYWJsZSgpOworCisgICAgICAgICAgICBkaXZDb250YWluZXIu
YWxsQXR0cmlidXRlcygpOworICAgICAgICB9Cis8L3NjcmlwdD4KKworVGVzdCBwYXNzZXMgaWYg
bm8gY3Jhc2guCisKKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="13618"
          type_id="1"
          status="+"
          setter="bdakin"
    />
          </attachment>
      

    </bug>

</bugzilla>