无法ca保存为图片ca6z09mn.109是什么意思

< - oO6Ejm - Online PHP Interpreter & Debugging Tool
requires JavaScript to work.
esc to close
方倍工作室&
http://w...content-available-to-author-only...s.com/txw1958/&
CopyRight 2014 All Rights Reserved*/&&#40;&TOKEN&, &cochunanbang&&#41;;&#40;&caidan&,&请输入以下指令以获得更好的服务\n阵型部分\n【100】或【阵型编辑器】:阵型编辑器\n【106】或【6本阵型】:6本阵型\n【107】或【6本阵型】:7本阵型\n【108】或【6本阵型】:8本阵型\n【109】或【6本阵型】:9本阵型\n【110】或【6本阵型】:10本阵型\n视频部分\n【200】或【部落战】:部落战之最\n【208】或【8本视频】:8本视频\n【209】或【9本视频】:9本视频\n【210】或【10本视频】:10本视频\n数据部分\n【301】或【防御】:防御设施\n【302】或【军事】:军事设施\n【303】或【资源】:资源设施\n【304】或【兵种】:兵种\n【305】或【其他】:其他设施\n钻石加速时间查询请输入%+钻石数量\n例如输入:%90\n升级经验查询请输入exp+查询等级\n例如输入:exp90\n提交您满意的阵型可以直接回复图片即可\n回复【菜单】或【主页】:查看最新指令信息&&#41;;&&&$wechatObj = new wechatCallbackapiTest&#40;&#41;;if &#40;!&#40;$_GET&#91;'echostr'&#93;&#41;&#41; &#123;
$wechatObj-&responseMsg&#40;&#41;;&#125;else&#123;
$wechatObj-&valid&#40;&#41;;&#125;&class wechatCallbackapiTest&#123;
//验证签名
public function valid&#40;&#41;
$echoStr = $_GET&#91;&echostr&&#93;;
$signature = $_GET&#91;&signature&&#93;;
$timestamp = $_GET&#91;&timestamp&&#93;;
$nonce = $_GET&#91;&nonce&&#93;;
$token = TOKEN;
$tmpArr = &#40;$token, $timestamp, $nonce&#41;;
&#40;$tmpArr&#41;;
$tmpStr = &#40;$tmpArr&#41;;
$tmpStr = &#40;$tmpStr&#41;;
if&#40;$tmpStr == $signature&#41;&#123;
echo $echoStr;
//响应消息
public function responseMsg&#40;&#41;
$postStr = $GLOBALS&#91;&HTTP_RAW_POST_DATA&&#93;;
if &#40;!&#40;$postStr&#41;&#41;&#123;
$this-&logger&#40;&R &.$postStr&#41;;
$postObj = &#40;$postStr, 'SimpleXMLElement', LIBXML_NOCDATA&#41;;
$RX_TYPE = &#40;$postObj-&MsgType&#41;;&
//消息类型分离
switch &#40;$RX_TYPE&#41;
case &event&:
$result = $this-&receiveEvent&#40;$postObj&#41;;
case &text&:
$result = $this-&receiveText&#40;$postObj&#41;;
case &image&:
$result = $this-&receiveImage&#40;$postObj&#41;;
case &location&:
//$result = $this-&receiveLocation($postObj);
case &voice&:
//$result = $this-&receiveVoice($postObj);
case &video&:
//$result = $this-&receiveVideo($postObj);
case &link&:
//$result = $this-&receiveLink($postObj);
$result = &请输入正确的指令&.$RX_TYPE;
$this-&logger&#40;&T &.$result&#41;;
echo $result;
&#125;else &#123;
//接收事件消息
private function receiveEvent&#40;$object&#41;
$content = &&;
switch &#40;$object-&Event&#41;
case &subscribe&:
$content = &欢迎关注湖南帮部落微信公众号\n&.caidan;
$content .= &#40;!&#40;$object-&EventKey&#41;&#41;?&#40;&\n来自二维码场景 &.&#40;&qrscene_&,&&,$object-&EventKey&#41;&#41;:&&;
case &unsubscribe&:
$content = &成功取消关注湖南帮部落微信公众号&;
case &SCAN&:
//$content = &扫描场景 &.$object-&EventK
case &CLICK&:
switch ($object-&EventKey)&
case &COMPANY&:
$content = array();&
$content[] = array(&Title&=&&多图文1标题&, &Description&=&&&, &PicUrl&=&&http://d...content-available-to-author-only...i.com/weixin/weather/icon/cartoon.jpg&, &Url& =&&http://m...content-available-to-author-only...s.com/?u=txw1958&);&
$content = &点击菜单:&.$object-&EventK&
case &LOCATION&:
//$content = &上传位置:纬度 &.$object-&Latitude.&;经度 &.$object-&L
case &VIEW&:
//$content = &跳转链接 &.$object-&EventK
case &MASSSENDJOBFINISH&:
//$content = &消息ID:&.$object-&MsgID.&,结果:&.$object-&Status.&,粉丝数:&.$object-&TotalCount.&,过滤:&.$object-&FilterCount.&,发送成功:&.$object-&SentCount.&,发送失败:&.$object-&ErrorC
//$content = &receive a new event: &.$object-&E
if&#40;&#40;$content&#41;&#41;&#123;
if &#40;&#40;$content&#91;0&#93;&#41;&#41;&#123;
$result = $this-&transmitNews&#40;$object, $content&#41;;
&#125;else if &#40;&#40;$content&#91;'MusicUrl'&#93;&#41;&#41;&#123;
$result = $this-&transmitMusic&#40;$object, $content&#41;;
&#125;else&#123;
$result = $this-&transmitText&#40;$object, $content&#41;;
return $result;
&#125;&&&public function calcGemsToTime&#40;$gems&#41;&#123; $seconds=0; $days=0; $hours=0; $minutes=0;& if&#40;$gems&=0&#41; &#123;
$result=&宝石数量输入错误!\n输入举例:想知道90颗钻石能够加速多长时间\n输入 【%90】 即可&;
return $result;
&#125; else if&#40;$gems===0&#41; &#123;
$seconds=0; &#125;else if&#40;$gems&=1&#41; &#123;
$seconds=246; &#125;else &#123; $gems=$gems+1; if&#40;$gems&=20&#41;
$seconds=&#40;&#40;$gems-1&#41;*&#40;3540/19&#41;+60&#41;-1; &#125;else if&#40;$gems&=260&#41;
$seconds=&#40;&#40;$gems-20&#41;*&#40;82800/240&#41;+3600&#41;-1; &#125;else
$seconds=&#40;&#40;$gems-260&#41;*&#40;518400/740&#41;+86400&#41;-1;
&#125; $gems=$gems-1; &#125; $days=&#40;$seconds/&#40;24*60*60&#41;&#41;; $seconds=$seconds%&#40;24*60*60&#41;; $hours=&#40;$seconds/&#40;60*60&#41;&#41;; $seconds=$seconds%&#40;60*60&#41;; $minutes=&#40;$seconds/60&#41;; $seconds=$seconds%60; $result=&#40;string&#41;$gems.&个钻石可以加速&.&#40;string&#41;$days.&天&.&#40;string&#41;$hours.&时&.&#40;string&#41;$minutes.&分&.&#40;string&#41;$seconds.&秒&; return $result;&#125;&&public function calcTimeToGems&#40;$h&#41;&#123;& $res=0; $sec=$h*3600;if&#40;$sec&0&#41;
$result=&时间输入错误!\n输入举例:想知道加速12小时30分钟需要多少钻石\n输入【spd12.5即可】&;
return $result; &#125;else if&#40;$sec===0&#41;
$res=0; &#125;else if&#40;$sec&=60&#41;
$res=1; &#125;else if&#40;$sec&=3600&#41;
$res=&#40;&#40;$sec-60&#41;/&#40;3540/19&#41;+1&#41;; &#125;else if&#40;$sec&=86400&#41;
$res=&#40;&#40;$sec-3600&#41;/&#40;&#40;82800/240&#41;+20&#41;; &#125;else
$res=&#40;&#40;$sec-86400&#41;/&#40;518400/740&#41;+260&#41;; &#125;
$result=&加速&.&#40;string&#41;$h.&小时需要【&.&#40;string&#41;$res.&】个宝石&;
return $result; &#125;&public function calcupgradeexp&#40;$grade&#41;&#123;
$currentexp=0;
$totalexp=0;&
if&#40;$grade&1||$grade&300&#41;
$result=&等级输入错误,请输入正确的等级,最低1级最高不超过300级。\n例如:\n查询100级升级经验,输入【exp100】即可&;
return $result;
else if&#40;$grade&=200&#41;
$currentexp=&#40;$grade-1&#41;*50;
$totalexp=$grade*&#40;$grade-1&#41;*25;
else if&#40;$grade&=300&#41;
$currentexp=9950+&#40;$grade-200&#41;*500;
$totalexp=995000+&#40;$grade-200&#41;*9950+&#40;$grade-200&#41;*&#40;$grade-201&#41;*250;
$result=&#40;string&#41;$grade.&级升级经验是【&.&#40;string&#41;$currentexp.&】\n升至&.&#40;string&#41;$grade.&级需要经验值【&.&#40;string&#41;$totalexp.&】&;
return $result;& &#125;&&&&&&&&&
//接收文本消息
private function receiveText&#40;$object&#41;
$keyword = &#40;&#40;$object-&Content&#41;&#41;;
//多客服人工回复模式
if &#40;&#40;$keyword, &您好&&#41; || &#40;$keyword, &你好&&#41; || &#40;$keyword, &在吗&&#41;&#41;&#123;
//$result = $this-&transmitService($object);
//自动回复模式
else&#123;
if &#40;&#40;$keyword, &菜单&&#41; || &#40;$keyword, &帮助&&#41; || &#40;$keyword, &caidan&&#41;&#41;&#123;
$content = caidan;&
&#125;else if &#40;&#40;$keyword, &%&&#41;&#41;&#123;
//钻石2时间
$gems=&#40;int&#41;&#40;$keyword,1&#41;;
//$gems=100;
$content=$this-&calcGemsToTime&#40;$gems&#41;;
&#125;else if &#40;&#40;$keyword, &exp&&#41;&#41;&#123;
//等级经验
$grade=&#40;int&#41;&#40;$keyword,3&#41;;
//$grade=100;
$content=$this-&calcupgradeexp&#40;$grade&#41;;
&#125;else if &#40;&#40;$keyword, &spd&&#41;&#41;&#123;
//时间2钻石
$time=&#40;float&#41;&#40;$keyword,3&#41;;
$content=$this-&calcTimeToGems&#40;$time&#41;;
&#125;else if &#40;$keyword===&100& ||$keyword===&阵型编辑器& &#41;&#123;
$content = &#40;&#41;;
$content&#91;&#93; = &#40;&Title&=&&阵型编辑器&, &Description&=&&&, &PicUrl&=&&http://1...content-available-to-author-only...p.com/layoutedit.png&, &Url& =&&http://m...content-available-to-author-only...q.com/s?__biz=MzAxMjYxNTkzMQ==&mid=&idx=1&sn=fea18c2fa7bfec#rd&&#41;;
&#125;else if &#40;$keyword===&106& ||$keyword===&6本阵型& &#41;&#123;
$content = &#40;&#41;;
$content&#91;&#93; = &#40;&Title&=&&6本部落战阵型&, &Description&=&&&, &PicUrl&=&&http://1...content-available-to-author-only...p.com/coc.jpg&, &Url& =&&http://m...content-available-to-author-only...q.com/s?__biz=MzAxMjYxNTkzMQ==&mid=&idx=1&sn=d0bfcac43c0f3&scene=18#rd&&#41;;
$content&#91;&#93; = &#40;&Title&=&&6本护资源阵型&, &Description&=&&&, &PicUrl&=&&http://1...content-available-to-author-only...p.com/logo2.jpg&, &Url& =&&http://m...content-available-to-author-only...q.com/s?__biz=MzAxMjYxNTkzMQ==&mid=&idx=2&sn=a423dd8c1ceeec363eee596&scene=18#rd&&#41;;
&#125;else if &#40;$keyword===&107& ||$keyword===&7本阵型& &#41;&#123;
$content = &#40;&#41;;
$content&#91;&#93; = &#40;&Title&=&&7本部落战阵型&, &Description&=&&&, &PicUrl&=&&http://1...content-available-to-author-only...p.com/coc.jpg&, &Url& =&&http://m...content-available-to-author-only...q.com/s?__biz=MzAxMjYxNTkzMQ==&mid=&idx=1&sn=b8cbab618b6fa989abb0b&scene=18#rd&&#41;;
$content&#91;&#93; = &#40;&Title&=&&7本护资源阵型&, &Description&=&&&, &PicUrl&=&&http://1...content-available-to-author-only...p.com/logo2.jpg&, &Url& =&&http://m...content-available-to-author-only...q.com/s?__biz=MzAxMjYxNTkzMQ==&mid=&idx=2&sn=a477bb8e953febc4bcb940ffae7970fb&scene=18#rd&&#41;;
&#125;else if &#40;$keyword===&108& ||$keyword===&8本阵型& &#41;&#123;
$content = &#40;&#41;;
$content&#91;&#93; = &#40;&Title&=&&8本部落战阵型&, &Description&=&&&, &PicUrl&=&&http://1...content-available-to-author-only...p.com/coc.jpg&, &Url& =&&http://m...content-available-to-author-only...q.com/s?__biz=MzAxMjYxNTkzMQ==&mid=&idx=1&sn=b6f1a39c620e0d6ab78a42b70bc30c6a&scene=18#rd&&#41;;
$content&#91;&#93; = &#40;&Title&=&&8本护资源阵型&, &Description&=&&&, &PicUrl&=&&http://1...content-available-to-author-only...p.com/logo2.jpg&, &Url& =&&http://m...content-available-to-author-only...q.com/s?__biz=MzAxMjYxNTkzMQ==&mid=&idx=2&sn=aff7bceb025f&scene=18#rd&&#41;;
&#125;else if &#40;$keyword===&109& ||$keyword===&9本阵型& &#41;&#123;
$content = &#40;&#41;;
$content&#91;&#93; = &#40;&Title&=&&9本部落战阵型&, &Description&=&&&, &PicUrl&=&&http://1...content-available-to-author-only...p.com/coc.jpg&, &Url& =&&http://m...content-available-to-author-only...q.com/s?__biz=MzAxMjYxNTkzMQ==&mid=&idx=1&sn=ba99c98f#rd&&#41;;
$content&#91;&#93; = &#40;&Title&=&&9本护资源阵型&, &Description&=&&&, &PicUrl&=&&http://1...content-available-to-author-only...p.com/logo2.jpg&, &Url& =&&http://m...content-available-to-author-only...q.com/s?__biz=MzAxMjYxNTkzMQ==&mid=&idx=2&sn=b41816ccb871fe7bedc43#rd&&#41;;
&#125;else if &#40;$keyword===&110& ||$keyword===&10本阵型& &#41;&#123;
//10本阵型
$content = &#40;&#41;;
$content&#91;&#93; = &#40;&Title&=&&10本部落战阵型&, &Description&=&&&, &PicUrl&=&&http://1...content-available-to-author-only...p.com/coc.jpg&, &Url& =&&http://m...content-available-to-author-only...q.com/s?__biz=MzAxMjYxNTkzMQ==&mid=&idx=1&sn=6ef26abd6ea556c83b44#rd&&#41;;
$content&#91;&#93; = &#40;&Title&=&&10本护资源阵型&, &Description&=&&&, &PicUrl&=&&http://1...content-available-to-author-only...p.com/logo2.jpg&, &Url& =&&http://m...content-available-to-author-only...q.com/s?__biz=MzAxMjYxNTkzMQ==&mid=&idx=2&sn=2aeea08ce989d74e1913d4#rd&&#41;;
&#125;else if &#40;$keyword===&200& ||$keyword===&部落战& &#41;&#123;
//部落战之最
$content = &#40;&#41;;
$content&#91;&#93; = &#40;&Title&=&&部作战之最经典的战役&, &Description&=&&收集部落战之最&, &PicUrl&=&&http://1...content-available-to-author-only...p.com/LOGO1.jpg&, &Url& =&&http://m...content-available-to-author-only...q.com/s?__biz=MzAxMjYxNTkzMQ==&mid=&idx=1&sn=d775e6aa79ecf#rd&&#41;;
$content&#91;&#93; = &#40;&Title&=&&部作战之最英勇的进攻&, &Description&=&&&, &PicUrl&=&&http://1...content-available-to-author-only...p.com/touxiang.jpg&, &Url& =&&http://m...content-available-to-author-only...q.com/s?__biz=MzAxMjYxNTkzMQ==&mid=&idx=2&sn=5caa7ea69e9f24e241e16b4#rd&&#41;;
$content&#91;&#93; = &#40;&Title&=&&部落战之最顽强的防御&, &Description&=&&&, &PicUrl&=&&http://1...content-available-to-author-only...p.com/touxiang.jpg&, &Url& =&&http://m...content-available-to-author-only...q.com/s?__biz=MzAxMjYxNTkzMQ==&mid=&idx=3&sn=314127cbb568b5ba8efbf81#rd&&#41;;
&#125;else if &#40;$keyword===&208& ||$keyword===&8本视频& &#41;&#123;
$content = &#40;&#41;;
$content&#91;&#93; = &#40;&Title&=&&8本-龙流&, &Description&=&&各种8本经典三星流视频&, &PicUrl&=&&http://1...content-available-to-author-only...p.com/long.jpg&, &Url& =&&http://m...content-available-to-author-only...q.com/s?__biz=MzAxMjYxNTkzMQ==&mid=&idx=1&sn=2fbae7ee904b5#rd&&#41;;
$content&#91;&#93; = &#40;&Title&=&&8本-猪流&, &Description&=&&&, &PicUrl&=&&http://1...content-available-to-author-only...p.com/zhu.jpg&, &Url& =&&http://m...content-available-to-author-only...q.com/s?__biz=MzAxMjYxNTkzMQ==&mid=&idx=2&sn=dd72ef809af2d60db56083#rd&&#41;;
$content&#91;&#93; = &#40;&Title&=&&8本-石法皮卡流&, &Description&=&&&, &PicUrl&=&&http://1...content-available-to-author-only...p.com/pika.jpg&, &Url& =&&http://m...content-available-to-author-only...q.com/s?__biz=MzAxMjYxNTkzMQ==&mid=&idx=3&sn=146dcf97edc#rd&&#41;;
$content&#91;&#93; = &#40;&Title&=&&8本-其他&, &Description&=&&&, &PicUrl&=&&http://1...content-available-to-author-only...p.com/touxiang.jpg&, &Url& =&&http://m...content-available-to-author-only...q.com/s?__biz=MzAxMjYxNTkzMQ==&mid=&idx=4&sn=c54cf352a382f#rd&&#41;;
&#125;else if &#40;$keyword===&209& ||$keyword===&9本视频& &#41;&#123;
$content = &#40;&#41;;
$content&#91;&#93; = &#40;&Title&=&&9本-石狗球&, &Description&=&&各种9本经典三星流视频&, &PicUrl&=&&http://1...content-available-to-author-only...p.com/shifagouqiu.jpg&, &Url& =&&http://m...content-available-to-author-only...q.com/s?__biz=MzAxMjYxNTkzMQ==&mid=&idx=1&sn=e5aa1bbbb9f9c4c584f6e9#rd&&#41;;
$content&#91;&#93; = &#40;&Title&=&&9本-石猪流&, &Description&=&&&, &PicUrl&=&&http://1...content-available-to-author-only...p.com/zhu.jpg&, &Url& =&&http://m...content-available-to-author-only...q.com/s?__biz=MzAxMjYxNTkzMQ==&mid=&idx=2&sn=cb083cde143b#rd&&#41;;
$content&#91;&#93; = &#40;&Title&=&&9本-石法皮卡流&, &Description&=&&&, &PicUrl&=&&http://1...content-available-to-author-only...p.com/pika.jpg&, &Url& =&&http://m...content-available-to-author-only...q.com/s?__biz=MzAxMjYxNTkzMQ==&mid=&idx=3&sn=dffb5f00ffa#rd&&#41;;
$content&#91;&#93; = &#40;&Title&=&&9本-其他&, &Description&=&&&, &PicUrl&=&&http://1...content-available-to-author-only...p.com/touxiang.jpg&, &Url& =&&http://m...content-available-to-author-only...q.com/s?__biz=MzAxMjYxNTkzMQ==&mid=&idx=4&sn=e1ba7deece3#rd&&#41;;
&#125;else if &#40;$keyword===&210& ||$keyword===&10本视频& &#41;&#123;
//10本视频
$content = &#40;&#41;;
$content&#91;&#93; = &#40;&Title&=&&10本经典三星视频&, &Description&=&&各种10本经典三星视频&, &PicUrl&=&&http://1...content-available-to-author-only...p.com/coc.jpg&, &Url& =&&http://m...content-available-to-author-only...q.com/s?__biz=MzAxMjYxNTkzMQ==&mid=&idx=1&sn=ba81adb58caf482e6ba1e827fa21d48c#rd&&#41;;
&#125;else if &#40;$keyword===&301& ||$keyword===&防御& &#41;&#123;
//防御设施
$content = &#40;&#41;;
$content&#91;&#93; = &#40;&Title&=&&防御设施数据查询&, &Description&=&&&, &PicUrl&=&&http://1...content-available-to-author-only...p.com/coc.jpg&, &Url& =&&http://c...content-available-to-author-only...3.com/18291.html&&#41;;
&#125;else if &#40;$keyword===&302& ||$keyword===&军事&&#41;&#123;
//军事设施
$content = &#40;&#41;;
$content&#91;&#93; = &#40;&Title&=&&军事设施数据查询&, &Description&=&&&, &PicUrl&=&&http://1...content-available-to-author-only...p.com/coc.jpg&, &Url& =&&http://c...content-available-to-author-only...3.com/52239.html&&#41;;
&#125;else if &#40;$keyword===&303& ||$keyword===&资源&&#41;&#123;
//资源设施
$content = &#40;&#41;;
$content&#91;&#93; = &#40;&Title&=&&资源设施数据查询&, &Description&=&&&, &PicUrl&=&&http://1...content-available-to-author-only...p.com/coc.jpg&, &Url& =&&http://c...content-available-to-author-only...3.com/17841.html&&#41;;
&#125;else if &#40;$keyword===&304& ||$keyword===&兵种&&#41;&#123;
$content = &#40;&#41;;
$content&#91;&#93; = &#40;&Title&=&&兵种及法术数据查询&, &Description&=&&&, &PicUrl&=&&http://1...content-available-to-author-only...p.com/coc.jpg&, &Url& =&&http://c...content-available-to-author-only...3.com/42037.html&&#41;;
&#125;else if &#40;$keyword===&305& ||$keyword===&其他&&#41;&#123;
//其他设施
$content = &#40;&#41;;
$content&#91;&#93; = &#40;&Title&=&&其他设施数据查询&, &Description&=&&&, &PicUrl&=&&http://1...content-available-to-author-only...p.com/coc.jpg&, &Url& =&&http://c...content-available-to-author-only...3.com/35838.html&&#41;;
&#125;else&#123;
$content = &输入有误!\n&.caidan;
if&#40;&#40;$content&#41;&#41;&#123;
if &#40;&#40;$content&#91;0&#93;&#91;'PicUrl'&#93;&#41;&#41;&#123;
$result = $this-&transmitNews&#40;$object, $content&#41;;
&#125;else if &#40;&#40;$content&#91;'MusicUrl'&#93;&#41;&#41;&#123;
$result = $this-&transmitMusic&#40;$object, $content&#41;;
&#125;else&#123;
$result = $this-&transmitText&#40;$object, $content&#41;;
return $result;
//接收图片消息
private function receiveImage&#40;$object&#41;
$content = &您的图片我们已经收到!感谢您的支持!&;
$result = $this-&transmitText&#40;$object, $content&#41;;
return $result;
//接收位置消息
private function receiveLocation&#40;$object&#41;
$content = &你发送的是位置,纬度为:&.$object-&Location_X.&;经度为:&.$object-&Location_Y.&;缩放级别为:&.$object-&Scale.&;位置为:&.$object-&Label;
$result = $this-&transmitText&#40;$object, $content&#41;;
return $result;
//接收语音消息
private function receiveVoice&#40;$object&#41;
if &#40;&#40;$object-&Recognition&#41; && !&#40;$object-&Recognition&#41;&#41;&#123;
$content = &你刚才说的是:&.$object-&Recognition;
$result = $this-&transmitText&#40;$object, $content&#41;;
&#125;else&#123;
$content = &#40;&MediaId&=&$object-&MediaId&#41;;
$result = $this-&transmitVoice&#40;$object, $content&#41;;
return $result;
//接收视频消息
private function receiveVideo&#40;$object&#41;
$content = &#40;&MediaId&=&$object-&MediaId, &ThumbMediaId&=&$object-&ThumbMediaId, &Title&=&&&, &Description&=&&&&#41;;
$result = $this-&transmitVideo&#40;$object, $content&#41;;
return $result;
//接收链接消息
private function receiveLink&#40;$object&#41;
$content = &你发送的是链接,标题为:&.$object-&Title.&;内容为:&.$object-&Description.&;链接地址为:&.$object-&Url;
$result = $this-&transmitText&#40;$object, $content&#41;;
return $result;
//回复文本消息
private function transmitText&#40;$object, $content&#41;
$xmlTpl = &&xml&&ToUserName&&![CDATA[%s]]&&/ToUserName&&FromUserName&&![CDATA[%s]]&&/FromUserName&&CreateTime&%s&/CreateTime&&MsgType&&![CDATA[text]]&&/MsgType&&Content&&![CDATA[%s]]&&/Content&&/xml&&;
$result = &#40;$xmlTpl, $object-&FromUserName, $object-&ToUserName, &#40;&#41;, $content&#41;;
return $result;
//回复图片消息
private function transmitImage&#40;$object, $imageArray&#41;
$itemTpl = &&Image&
&MediaId&&![CDATA[%s]]&&/MediaId&&/Image&&;&
$item_str = &#40;$itemTpl, $imageArray&#91;'MediaId'&#93;&#41;;&
$xmlTpl = &&xml&&ToUserName&&![CDATA[%s]]&&/ToUserName&&FromUserName&&![CDATA[%s]]&&/FromUserName&&CreateTime&%s&/CreateTime&&MsgType&&![CDATA[image]]&&/MsgType&$item_str&/xml&&;&
$result = &#40;$xmlTpl, $object-&FromUserName, $object-&ToUserName, &#40;&#41;&#41;;
return $result;
//回复语音消息
private function transmitVoice&#40;$object, $voiceArray&#41;
$itemTpl = &&Voice&
&MediaId&&![CDATA[%s]]&&/MediaId&&/Voice&&;&
$item_str = &#40;$itemTpl, $voiceArray&#91;'MediaId'&#93;&#41;;&
$xmlTpl = &&xml&&ToUserName&&![CDATA[%s]]&&/ToUserName&&FromUserName&&![CDATA[%s]]&&/FromUserName&&CreateTime&%s&/CreateTime&&MsgType&&![CDATA[voice]]&&/MsgType&$item_str&/xml&&;&
$result = &#40;$xmlTpl, $object-&FromUserName, $object-&ToUserName, &#40;&#41;&#41;;
return $result;
//回复视频消息
private function transmitVideo&#40;$object, $videoArray&#41;
$itemTpl = &&Video&
&MediaId&&![CDATA[%s]]&&/MediaId&
&ThumbMediaId&&![CDATA[%s]]&&/ThumbMediaId&
&Title&&![CDATA[%s]]&&/Title&
&Description&&![CDATA[%s]]&&/Description&&/Video&&;&
$item_str = &#40;$itemTpl, $videoArray&#91;'MediaId'&#93;, $videoArray&#91;'ThumbMediaId'&#93;, $videoArray&#91;'Title'&#93;, $videoArray&#91;'Description'&#93;&#41;;&
$xmlTpl = &&xml&&ToUserName&&![CDATA[%s]]&&/ToUserName&&FromUserName&&![CDATA[%s]]&&/FromUserName&&CreateTime&%s&/CreateTime&&MsgType&&![CDATA[video]]&&/MsgType&$item_str&/xml&&;&
$result = &#40;$xmlTpl, $object-&FromUserName, $object-&ToUserName, &#40;&#41;&#41;;
return $result;
//回复图文消息
private function transmitNews&#40;$object, $newsArray&#41;
if&#40;!&#40;$newsArray&#41;&#41;&#123;
$itemTpl = &
&Title&&![CDATA[%s]]&&/Title&
&Description&&![CDATA[%s]]&&/Description&
&PicUrl&&![CDATA[%s]]&&/PicUrl&
&Url&&![CDATA[%s]]&&/Url&
$item_str = &&;
foreach &#40;$newsArray as $item&#41;&#123;
$item_str .= &#40;$itemTpl, $item&#91;'Title'&#93;, $item&#91;'Description'&#93;, $item&#91;'PicUrl'&#93;, $item&#91;'Url'&#93;&#41;;
$xmlTpl = &&xml&&ToUserName&&![CDATA[%s]]&&/ToUserName&&FromUserName&&![CDATA[%s]]&&/FromUserName&&CreateTime&%s&/CreateTime&&MsgType&&![CDATA[news]]&&/MsgType&&ArticleCount&%s&/ArticleCount&&Articles&$item_str&/Articles&&/xml&&;&
$result = &#40;$xmlTpl, $object-&FromUserName, $object-&ToUserName, &#40;&#41;, &#40;$newsArray&#41;&#41;;
return $result;
//回复音乐消息
private function transmitMusic&#40;$object, $musicArray&#41;
$itemTpl = &&Music&
&Title&&![CDATA[%s]]&&/Title&
&Description&&![CDATA[%s]]&&/Description&
&MusicUrl&&![CDATA[%s]]&&/MusicUrl&
&HQMusicUrl&&![CDATA[%s]]&&/HQMusicUrl&&/Music&&;&
$item_str = &#40;$itemTpl, $musicArray&#91;'Title'&#93;, $musicArray&#91;'Description'&#93;, $musicArray&#91;'MusicUrl'&#93;, $musicArray&#91;'HQMusicUrl'&#93;&#41;;&
$xmlTpl = &&xml&&ToUserName&&![CDATA[%s]]&&/ToUserName&&FromUserName&&![CDATA[%s]]&&/FromUserName&&CreateTime&%s&/CreateTime&&MsgType&&![CDATA[music]]&&/MsgType&$item_str&/xml&&;&
$result = &#40;$xmlTpl, $object-&FromUserName, $object-&ToUserName, &#40;&#41;&#41;;
return $result;
//回复多客服消息
private function transmitService&#40;$object&#41;
$xmlTpl = &&xml&&ToUserName&&![CDATA[%s]]&&/ToUserName&&FromUserName&&![CDATA[%s]]&&/FromUserName&&CreateTime&%s&/CreateTime&&MsgType&&![CDATA[transfer_customer_service]]&&/MsgType&&/xml&&;
$result = &#40;$xmlTpl, $object-&FromUserName, $object-&ToUserName, &#40;&#41;&#41;;
return $result;
&#125;&&&&&&&
//日志记录
private function logger&#40;$log_content&#41;
if&#40;&#40;$_SERVER&#91;'HTTP_APPNAME'&#93;&#41;&#41;&#123;
sae_set_display_errors&#40;false&#41;;
sae_debug&#40;$log_content&#41;;
sae_set_display_errors&#40;true&#41;;
&#125;else if&#40;$_SERVER&#91;'REMOTE_ADDR'&#93; != &127.0.0.1&&#41;&#123; //LOCAL
$max_size = 10000;
$log_filename = &log.xml&;
if&#40;&#40;$log_filename&#41; and &#40;&#40;&#40;$log_filename&#41;&#41; & $max_size&#41;&#41;&#123;&#40;$log_filename&#41;;&#125;
&#40;$log_filename, &#40;'H:i:s'&#41;.& &.$log_content.&\r\n&, FILE_APPEND&#41;;
&#125;&#125;?&
PD9waHAKLyoKICAgIOaWueWAjeW3peS9nOWupAogICAgaHR0cDovL3cuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnMuY29tL3R4dzE5NTgvCiAgICBDb3B5UmlnaHQgMjAxNCBBbGwgUmlnaHRzIFJlc2VydmVkCiovCgpkZWZpbmUoIlRPS0VOIiwgImNvY2h1bmFuYmFuZyIpOwpkZWZpbmUoImNhaWRhbiIsIuivt+i+k+WFpeS7peS4i+aMh+S7pOS7peiOt+W+l+abtOWlveeahOacjeWKoVxu6Zi15Z6L6YOo5YiGXG7jgJAxMDDjgJHmiJbjgJDpmLXlnovnvJbovpHlmajjgJE66Zi15Z6L57yW6L6R5ZmoXG7jgJAxMDbjgJHmiJbjgJA25pys6Zi15Z6L44CROjbmnKzpmLXlnotcbuOAkDEwN+OAkeaIluOAkDbmnKzpmLXlnovjgJE6N+acrOmYteWei1xu44CQMTA444CR5oiW44CQNuacrOmYteWei+OAkTo45pys6Zi15Z6LXG7jgJAxMDnjgJHmiJbjgJA25pys6Zi15Z6L44CROjnmnKzpmLXlnotcbuOAkDExMOOAkeaIluOAkDbmnKzpmLXlnovjgJE6MTDmnKzpmLXlnotcbgrop4bpopHpg6jliIZcbuOAkDIwMOOAkeaIluOAkOmDqOiQveaImOOAkTrpg6jokL3miJjkuYvmnIBcbuOAkDIwOOOAkeaIluOAkDjmnKzop4bpopHjgJE6OOacrOinhumikVxu44CQMjA544CR5oiW44CQOeacrOinhumikeOAkTo55pys6KeG6aKRXG7jgJAyMTDjgJHmiJbjgJAxMOacrOinhumikeOAkToxMOacrOinhumikVxuCuaVsOaNrumDqOWIhlxu44CQMzAx44CR5oiW44CQ6Ziy5b6h44CROumYsuW+oeiuvuaWvVxu44CQMzAy44CR5oiW44CQ5Yab5LqL44CROuWGm+S6i+iuvuaWvVxu44CQMzAz44CR5oiW44CQ6LWE5rqQ44CROui1hOa6kOiuvuaWvVxu44CQMzA044CR5oiW44CQ5YW156eN44CROuWFteenjVxu44CQMzA144CR5oiW44CQ5YW25LuW44CROuWFtuS7luiuvuaWvVxuCumSu+efs+WKoOmAn+aXtumXtOafpeivouivt+i+k+WFpSUr6ZK755+z5pWw6YePXG7kvovlpoLovpPlhaU6JTkwXG7ljYfnuqfnu4/pqozmn6Xor6Lor7fovpPlhaVleHAr5p+l6K+i562J57qnXG7kvovlpoLovpPlhaXvvJpleHA5MFxuCuaPkOS6pOaCqOa7oeaEj+eahOmYteWei+WPr+S7peebtOaOpeWbnuWkjeWbvueJh+WNs+WPr1xu5Zue5aSN44CQ6I+c5Y2V44CR5oiW44CQ5Li76aG144CROuafpeeci+acgOaWsOaMh+S7pOS/oeaBryIpOwoKCgokd2VjaGF0T2JqID0gbmV3IHdlY2hhdENhbGxiYWNrYXBpVGVzdCgpOwppZiAoIWlzc2V0KCRfR0VUWydlY2hvc3RyJ10pKSB7CiAgICAkd2VjaGF0T2JqLT5yZXNwb25zZU1zZygpOwp9ZWxzZXsKICAgICR3ZWNoYXRPYmotPnZhbGlkKCk7Cn0KCmNsYXNzIHdlY2hhdENhbGxiYWNrYXBpVGVzdAp7CiAgICAvL+mqjOivgeetvuWQjQogICAgcHVibGljIGZ1bmN0aW9uIHZhbGlkKCkKICAgIHsKICAgICAgICAkZWNob1N0ciA9ICRfR0VUWyJlY2hvc3RyIl07CiAgICAgICAgJHNpZ25hdHVyZSA9ICRfR0VUWyJzaWduYXR1cmUiXTsKICAgICAgICAkdGltZXN0YW1wID0gJF9HRVRbInRpbWVzdGFtcCJdOwogICAgICAgICRub25jZSA9ICRfR0VUWyJub25jZSJdOwogICAgICAgICR0b2tlbiA9IFRPS0VOOwogICAgICAgICR0bXBBcnIgPSBhcnJheSgkdG9rZW4sICR0aW1lc3RhbXAsICRub25jZSk7CiAgICAgICAgc29ydCgkdG1wQXJyKTsKICAgICAgICAkdG1wU3RyID0gaW1wbG9kZSgkdG1wQXJyKTsKICAgICAgICAkdG1wU3RyID0gc2hhMSgkdG1wU3RyKTsKICAgICAgICBpZigkdG1wU3RyID09ICRzaWduYXR1cmUpewogICAgICAgICAgICBlY2hvICRlY2hvU3RyOwogICAgICAgICAgICBleGl0OwogICAgICAgIH0KICAgIH0KCiAgICAvL+WTjeW6lOa2iOaBrwogICAgcHVibGljIGZ1bmN0aW9uIHJlc3BvbnNlTXNnKCkKICAgIHsKICAgICAgICAkcG9zdFN0ciA9ICRHTE9CQUxTWyJIVFRQX1JBV19QT1NUX0RBVEEiXTsKICAgICAgICBpZiAoIWVtcHR5KCRwb3N0U3RyKSl7CiAgICAgICAgICAgICR0aGlzLT5sb2dnZXIoIlIgIi4kcG9zdFN0cik7CiAgICAgICAgICAgICRwb3N0T2JqID0gc2ltcGxleG1sX2xvYWRfc3RyaW5nKCRwb3N0U3RyLCAnU2ltcGxlWE1MRWxlbWVudCcsIExJQlhNTF9OT0NEQVRBKTsKICAgICAgICAgICAgJFJYX1RZUEUgPSB0cmltKCRwb3N0T2JqLT5Nc2dUeXBlKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAvL+a2iOaBr+exu+Wei+WIhuemuwogICAgICAgICAgICBzd2l0Y2ggKCRSWF9UWVBFKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBjYXNlICJldmVudCI6CiAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT5yZWNlaXZlRXZlbnQoJHBvc3RPYmopOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAidGV4dCI6CiAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT5yZWNlaXZlVGV4dCgkcG9zdE9iaik7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICJpbWFnZSI6CiAgICAgICAgICAgICAgICAJJHJlc3VsdCA9ICR0aGlzLT5yZWNlaXZlSW1hZ2UoJHBvc3RPYmopOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAibG9jYXRpb24iOgogICAgICAgICAgICAgICAgLy8kcmVzdWx0ID0gJHRoaXMtPnJlY2VpdmVMb2NhdGlvbigkcG9zdE9iaik7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICJ2b2ljZSI6CiAgICAgICAgICAgICAgICAvLyRyZXN1bHQgPSAkdGhpcy0+cmVjZWl2ZVZvaWNlKCRwb3N0T2JqKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgInZpZGVvIjoKICAgICAgICAgICAgICAgIC8vJHJlc3VsdCA9ICR0aGlzLT5yZWNlaXZlVmlkZW8oJHBvc3RPYmopOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAibGluayI6CiAgICAgICAgICAgICAgICAvLyRyZXN1bHQgPSAkdGhpcy0+cmVjZWl2ZUxpbmsoJHBvc3RPYmopOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gIuivt+i+k+WFpeato+ehrueahOaMh+S7pCIuJFJYX1RZUEU7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHRoaXMtPmxvZ2dlcigiVCAiLiRyZXN1bHQpOwogICAgICAgICAgICBlY2hvICRyZXN1bHQ7CiAgICAgICAgfWVsc2UgewogICAgICAgICAgICBlY2hvICIiOwogICAgICAgICAgICBleGl0OwogICAgICAgIH0KICAgIH0KCiAgICAvL+aOpeaUtuS6i+S7tua2iOaBrwogICAgcHJpdmF0ZSBmdW5jdGlvbiByZWNlaXZlRXZlbnQoJG9iamVjdCkKICAgIHsKICAgICAgICAkY29udGVudCA9ICIiOwogICAgICAgIHN3aXRjaCAoJG9iamVjdC0+RXZlbnQpCiAgICAgICAgewogICAgICAgICAgICBjYXNlICJzdWJzY3JpYmUiOgogICAgICAgICAgICAkY29udGVudCA9ICLmrKLov47lhbPms6jmuZbljZfluK7pg6jokL3lvq7kv6HlhazkvJflj7dcbiIuY2FpZGFuOwogICAgICAgICAgICAgICAgJGNvbnRlbnQgLj0gKCFlbXB0eSgkb2JqZWN0LT5FdmVudEtleSkpPygiXG7mnaXoh6rkuoznu7TnoIHlnLrmma8gIi5zdHJfcmVwbGFjZSgicXJzY2VuZV8iLCIiLCRvYmplY3QtPkV2ZW50S2V5KSk6IiI7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAidW5zdWJzY3JpYmUiOgogICAgICAgICAgICAgICAgJGNvbnRlbnQgPSAi5oiQ5Yqf5Y+W5raI5YWz5rOo5rmW5Y2X5biu6YOo6JC95b6u5L+h5YWs5LyX5Y+3IjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICJTQ0FOIjoKICAgICAgICAgICAgLy8kY29udGVudCA9ICLmiavmj4/lnLrmma8gIi4kb2JqZWN0LT5FdmVudEtleTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICJDTElDSyI6CiAgICAgICAgICAgIC8qCiAgICAgICAgICAgIHN3aXRjaCAoJG9iamVjdC0+RXZlbnRLZXkpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAiQ09NUEFOWSI6CgkJCQkJCSRjb250ZW50ID0gYXJyYXkoKTsKICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRlbnRbXSA9IGFycmF5KCJUaXRsZSI9PiLlpJrlm77mlocx5qCH6aKYIiwgIkRlc2NyaXB0aW9uIj0+IiIsICJQaWNVcmwiPT4iaHR0cDovL2QuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLmkuY29tL3dlaXhpbi93ZWF0aGVyL2ljb24vY2FydG9vbi5qcGciLCAiVXJsIiA9PiJodHRwOi8vbS4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ucy5jb20vP3U9dHh3MTk1OCIpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAkY29udGVudCA9ICLngrnlh7voj5zljZXvvJoiLiRvYmplY3QtPkV2ZW50S2V5OwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKi8KICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICJMT0NBVElPTiI6CiAgICAgICAgICAgIC8vJGNvbnRlbnQgPSAi5LiK5Lyg5L2N572u77ya57qs5bqmICIuJG9iamVjdC0+TGF0aXR1ZGUuIjvnu4/luqYgIi4kb2JqZWN0LT5Mb25naXR1ZGU7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAiVklFVyI6CiAgICAgICAgICAgIC8vJGNvbnRlbnQgPSAi6Lez6L2s6ZO+5o6lICIuJG9iamVjdC0+RXZlbnRLZXk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAiTUFTU1NFTkRKT0JGSU5JU0giOgogICAgICAgICAgICAvLyRjb250ZW50ID0gIua2iOaBr0lE77yaIi4kb2JqZWN0LT5Nc2dJRC4i77yM57uT5p6c77yaIi4kb2JqZWN0LT5TdGF0dXMuIu+8jOeyieS4neaVsO+8miIuJG9iamVjdC0+VG90YWxDb3VudC4i77yM6L+H5ruk77yaIi4kb2JqZWN0LT5GaWx0ZXJDb3VudC4i77yM5Y+R6YCB5oiQ5Yqf77yaIi4kb2JqZWN0LT5TZW50Q291bnQuIu+8jOWPkemAgeWksei0pe+8miIuJG9iamVjdC0+RXJyb3JDb3VudDsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAvLyRjb250ZW50ID0gInJlY2VpdmUgYSBuZXcgZXZlbnQ6ICIuJG9iamVjdC0+RXZlbnQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgaWYoaXNfYXJyYXkoJGNvbnRlbnQpKXsKICAgICAgICAgICAgaWYgKGlzc2V0KCRjb250ZW50WzBdKSl7CiAgICAgICAgICAgICAgICAkcmVzdWx0ID0gJHRoaXMtPnRyYW5zbWl0TmV3cygkb2JqZWN0LCAkY29udGVudCk7CiAgICAgICAgICAgIH1lbHNlIGlmIChpc3NldCgkY29udGVudFsnTXVzaWNVcmwnXSkpewogICAgICAgICAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT50cmFuc21pdE11c2ljKCRvYmplY3QsICRjb250ZW50KTsKICAgICAgICAgICAgfQogICAgICAgIH1lbHNlewogICAgICAgICAgICAkcmVzdWx0ID0gJHRoaXMtPnRyYW5zbWl0VGV4dCgkb2JqZWN0LCAkY29udGVudCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICAKICAgIApwdWJsaWMgZnVuY3Rpb24gY2FsY0dlbXNUb1RpbWUoJGdlbXMpCnsKCSRzZWNvbmRzPTA7CgkkZGF5cz0wOwoJJGhvdXJzPTA7CgkkbWludXRlcz0wOwogICAgCglpZigkZ2Vtczw9MCkKCXsKCQkkcmVzdWx0PSLlrp3nn7PmlbDph4/ovpPlhaXplJnor6/vvIFcbui+k+WFpeS4vuS+i++8muaDs+efpemBkzkw6aKX6ZK755+z6IO95aSf5Yqg6YCf5aSa6ZW/5pe26Ze0XG7ovpPlhaUg44CQJTkw44CRIOWNs+WPryI7CgkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJZWxzZSBpZigkZ2Vtcz09PTApCgl7CgkJJHNlY29uZHM9MDsKCX1lbHNlIGlmKCRnZW1zPD0xKQoJewoJCSRzZWNvbmRzPTI0NjsKCX1lbHNlCgl7CgkkZ2Vtcz0kZ2VtcysxOwoJaWYoJGdlbXM8PTIwKQoJCXsKCQkJJHNlY29uZHM9Y2VpbCgoJGdlbXMtMSkqKDM1NDAvMTkpKzYwKS0xOwoJfWVsc2UgaWYoJGdlbXM8PTI2MCkKCQl7CgkJCSRzZWNvbmRzPWNlaWwoKCRnZW1zLTIwKSooODI4MDAvMjQwKSszNjAwKS0xOwoJfWVsc2UKCQl7CgkJCSRzZWNvbmRzPWNlaWwoKCRnZW1zLTI2MCkqKDUxODQwMC83NDApKzg2NDAwKS0xOwoJCX0KCSRnZW1zPSRnZW1zLTE7Cgl9CgkkZGF5cz1mbG9vcigkc2Vjb25kcy8oMjQqNjAqNjApKTsKCSRzZWNvbmRzPSRzZWNvbmRzJSgyNCo2MCo2MCk7CgkkaG91cnM9Zmxvb3IoJHNlY29uZHMvKDYwKjYwKSk7Cgkkc2Vjb25kcz0kc2Vjb25kcyUoNjAqNjApOwoJJG1pbnV0ZXM9Zmxvb3IoJHNlY29uZHMvNjApOwoJJHNlY29uZHM9JHNlY29uZHMlNjA7CgkkcmVzdWx0PShzdHJpbmcpJGdlbXMuIuS4qumSu+efs+WPr+S7peWKoOmAnyIuKHN0cmluZykkZGF5cy4i5aSpIi4oc3RyaW5nKSRob3Vycy4i5pe2Ii4oc3RyaW5nKSRtaW51dGVzLiLliIYiLihzdHJpbmcpJHNlY29uZHMuIuenkiI7CglyZXR1cm4gJHJlc3VsdDsKfQogICAgCgpwdWJsaWMgZnVuY3Rpb24gY2FsY1RpbWVUb0dlbXMoJGgpCnsKICAgIAoJJHJlcz0wOwoJJHNlYz0kaCozNjAwOwppZigkc2VjPDApCgkJewoJCSRyZXN1bHQ9IuaXtumXtOi+k+WFpemUmeivr++8gVxu6L6T5YWl5Li+5L6L77ya5oOz55+l6YGT5Yqg6YCfMTLlsI/ml7YzMOWIhumSn+mcgOimgeWkmuWwkemSu+efs1xu6L6T5YWl44CQc3BkMTIuNeWNs+WPr+OAkSI7CiAgICAJcmV0dXJuICRyZXN1bHQ7Cgl9ZWxzZSBpZigkc2VjPT09MCkKCQl7CgkJJHJlcz0wOwoJfWVsc2UgaWYoJHNlYzw9NjApCgkJewoJCSRyZXM9MTsKCX1lbHNlIGlmKCRzZWM8PTM2MDApCgkJewoJCSRyZXM9Zmxvb3IoKCRzZWMtNjApLygzNTQwLzE5KSsxKTsKCX1lbHNlIGlmKCRzZWM8PTg2NDAwKQoJCXsKCQkkcmVzPWZsb29yKCgkc2VjLTM2MDApLygoODI4MDAvMjQwKSsyMCk7Cgl9ZWxzZQoJCXsKCQkkcmVzPWZsb29yKCgkc2VjLTg2NDAwKS8oNTE4NDAwLzc0MCkrMjYwKTsKCX0KICAgICRyZXN1bHQ9IuWKoOmAnyIuKHN0cmluZykkaC4i5bCP5pe26ZyA6KaB44CQIi4oc3RyaW5nKSRyZXMuIuOAkeS4quWuneefsyI7CiAgICByZXR1cm4gJHJlc3VsdDsKCX0KICAgCnB1YmxpYyBmdW5jdGlvbiBjYWxjdXBncmFkZWV4cCgkZ3JhZGUpCnsgICAgCiAgICAKICAgICRjdXJyZW50ZXhwPTA7CiAgICAkdG90YWxleHA9MDsKICAgIAogICAgaWYoJGdyYWRlPDF8fCRncmFkZT4zMDApCiAgICB7CiAgICAgICAgJHJlc3VsdD0i562J57qn6L6T5YWl6ZSZ6K+v77yM6K+36L6T5YWl5q2j56Gu55qE562J57qn77yM5pyA5L2OMee6p+acgOmrmOS4jei2hei/hzMwMOe6p+OAglxu5L6L5aaC77yaXG7mn6Xor6IxMDDnuqfljYfnuqfnu4/pqozvvIzovpPlhaXjgJBleHAxMDDjgJHljbPlj68iOwogICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgCX0KICAgIGVsc2UgaWYoJGdyYWRlPD0yMDApCiAgICB7CiAgICAkY3VycmVudGV4cD0oJGdyYWRlLTEpKjUwOwogICAgJHRvdGFsZXhwPSRncmFkZSooJGdyYWRlLTEpKjI1OwogIAkJfQogICAgZWxzZSBpZigkZ3JhZGU8PTMwMCkKICAgIHsKICAgICRjdXJyZW50ZXhwPTk5NTArKCRncmFkZS0yMDApKjUwMDsKICAgICR0b3RhbGV4cD05OTUwMDArKCRncmFkZS0yMDApKjk5NTArKCRncmFkZS0yMDApKigkZ3JhZGUtMjAxKSoyNTA7CQogICAgCX0KICAgIAogICAgJHJlc3VsdD0oc3RyaW5nKSRncmFkZS4i57qn5Y2H57qn57uP6aqM5piv44CQIi4oc3RyaW5nKSRjdXJyZW50ZXhwLiLjgJFcbuWNh+iHsyIuKHN0cmluZykkZ3JhZGUuIue6p+mcgOimgee7j+mqjOWAvOOAkCIuKHN0cmluZykkdG90YWxleHAuIuOAkSI7CiAgICByZXR1cm4gJHJlc3VsdDsKICAgIAoJfQogICAgCiAgICAKICAgIAoKICAgIAogICAgCiAgICAKICAgIAogICAgCiAgICAvL+aOpeaUtuaWh+acrOa2iOaBrwogICAgcHJpdmF0ZSBmdW5jdGlvbiByZWNlaXZlVGV4dCgkb2JqZWN0KQogICAgewogICAgICAgICRrZXl3b3JkID0gc3RydG9sb3dlcih0cmltKCRvYmplY3QtPkNvbnRlbnQpKTsKICAgICAgICAvL+WkmuWuouacjeS6uuW3peWbnuWkjeaooeW8jwogICAgICAgIGlmIChzdHJzdHIoJGtleXdvcmQsICLmgqjlpb0iKSB8fCBzdHJzdHIoJGtleXdvcmQsICLkvaDlpb0iKSB8fCBzdHJzdHIoJGtleXdvcmQsICLlnKjlkJciKSl7CiAgICAgICAgICAgIC8vJHJlc3VsdCA9ICR0aGlzLT50cmFuc21pdFNlcnZpY2UoJG9iamVjdCk7CiAgICAgICAgfQogICAgICAgIC8v6Ieq5Yqo5Zue5aSN5qih5byPCiAgICAgICAgZWxzZXsKICAgICAgICBpZiAoc3Ryc3RyKCRrZXl3b3JkLCAi6I+c5Y2VIikgfHwgc3Ryc3RyKCRrZXl3b3JkLCAi5biu5YqpIikgfHwgc3Ryc3RyKCRrZXl3b3JkLCAiY2FpZGFuIikpewoJCQkvL+iPnOWNlQogICAgICAgICAgICAkY29udGVudCA9IGNhaWRhbjsKICAgICAgICAKICAgICAgICB9ZWxzZSBpZiAoc3Ryc3RyKCRrZXl3b3JkLCAiJSIpKXsgICAgICAgICAgICAgICAgICAgICAgICAgIC8v6ZK755+zMuaXtumXtAogICAgICAgICAgICAkZ2Vtcz0oaW50KXN1YnN0cigka2V5d29yZCwxKTsKICAgICAgICAgICAgLy8kZ2Vtcz0xMDA7CiAgICAgICAgICAgICRjb250ZW50PSR0aGlzLT5jYWxjR2Vtc1RvVGltZSgkZ2Vtcyk7CiAgICAgICAgfWVsc2UgaWYgKHN0cnN0cigka2V5d29yZCwgImV4cCIpKXsgICAgICAgICAgICAgICAgICAgICAgICAvL+etiee6p+e7j+mqjAogICAgICAgICAgICAkZ3JhZGU9KGludClzdWJzdHIoJGtleXdvcmQsMyk7CiAgICAgICAgICAgIC8vJGdyYWRlPTEwMDsKICAgICAgICAgICAgJGNvbnRlbnQ9JHRoaXMtPmNhbGN1cGdyYWRlZXhwKCRncmFkZSk7CiAgICAgICAgICAgIC8vKgogICAgICAgIH1lbHNlIGlmIChzdHJzdHIoJGtleXdvcmQsICJzcGQiKSl7ICAgICAgICAgICAgICAgICAgICAgICAvL+aXtumXtDLpkrvnn7MKICAgICAgICAgICAgJHRpbWU9KGZsb2F0KXN1YnN0cigka2V5d29yZCwzKTsKICAgICAgICAgICAgJGNvbnRlbnQ9JHRoaXMtPmNhbGNUaW1lVG9HZW1zKCR0aW1lKTsgICAgICAgIAogICAgICAgICAgICAvLyovCiAgICAgICAgfWVsc2UgaWYgKCRrZXl3b3JkPT09IjEwMCIgfHwka2V5d29yZD09PSLpmLXlnovnvJbovpHlmagiICl7CgkJCS8vNuacrOmYteWeiwogICAgICAgICAgICAkY29udGVudCA9IGFycmF5KCk7CiAgICAgICAgICAgICRjb250ZW50W10gPSBhcnJheSgiVGl0bGUiPT4i6Zi15Z6L57yW6L6R5ZmoIiwgIkRlc2NyaXB0aW9uIj0+IiIsICJQaWNVcmwiPT4iaHR0cDovLzEuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnAuY29tL2xheW91dGVkaXQucG5nIiwgIlVybCIgPT4iaHR0cDovL20uLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnEuY29tL3M/X19iaXo9TXpBeE1qWXhOVGt6TVE9PSZtaWQ9MjA4MDk4NzMxJmlkeD0xJnNuPWZlYTE4YzJmODY3MThlOGI1YTdiZmVjMzQ5OWFkOWUyI3JkIik7CgkJfWVsc2UgaWYgKCRrZXl3b3JkPT09IjEwNiIgfHwka2V5d29yZD09PSI25pys6Zi15Z6LIiApewoJCQkvLzbmnKzpmLXlnosKICAgICAgICAgICAgJGNvbnRlbnQgPSBhcnJheSgpOwogICAgICAgICAgICAkY29udGVudFtdID0gYXJyYXkoIlRpdGxlIj0+IjbmnKzpg6jokL3miJjpmLXlnosiLCAiRGVzY3JpcHRpb24iPT4iIiwgIlBpY1VybCI9PiJodHRwOi8vMS4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ucC5jb20vY29jLmpwZyIsICJVcmwiID0+Imh0dHA6Ly9tLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5xLmNvbS9zP19fYml6PU16QXhNall4TlRrek1RPT0mbWlkPTIwNzk2MzE4NiZpZHg9MSZzbj1kMGJmY2E5NzE1MTBkNjUwNDM4MjAwMmUwYzQzYzBmMyZzY2VuZT0xOCNyZCIpOwogICAgICAgICAgICAkY29udGVudFtdID0gYXJyYXkoIlRpdGxlIj0+IjbmnKzmiqTotYTmupDpmLXlnosiLCAiRGVzY3JpcHRpb24iPT4iIiwgIlBpY1VybCI9PiJodHRwOi8vMS4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ucC5jb20vbG9nbzIuanBnIiwgIlVybCIgPT4iaHR0cDovL20uLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnEuY29tL3M/X19iaXo9TXpBeE1qWXhOVGt6TVE9PSZtaWQ9MjA3OTYzMTg2JmlkeD0yJnNuPWE0MjNkZDhjMWMxNTI1ZTBhODNlZWVjMzYzZWVlNTk2JnNjZW5lPTE4I3JkIik7CgkJfWVsc2UgaWYgKCRrZXl3b3JkPT09IjEwNyIgfHwka2V5d29yZD09PSI35pys6Zi15Z6LIiApewoJCQkvLzfmnKzpmLXlnosKICAgICAgICAgICAgJGNvbnRlbnQgPSBhcnJheSgpOwogICAgICAgICAgICAkY29udGVudFtdID0gYXJyYXkoIlRpdGxlIj0+IjfmnKzpg6jokL3miJjpmLXlnosiLCAiRGVzY3JpcHRpb24iPT4iIiwgIlBpY1VybCI9PiJodHRwOi8vMS4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ucC5jb20vY29jLmpwZyIsICJVcmwiID0+Imh0dHA6Ly9tLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5xLmNvbS9zP19fYml6PU16QXhNall4TlRrek1RPT0mbWlkPTIwNzk2MzMyMiZpZHg9MSZzbj1iOGNiYTM3OTU1ZjJiOTc3YjYxOGI2ZmE5ODlhYmIwYiZzY2VuZT0xOCNyZCIpOwogICAgICAgICAgICAkY29udGVudFtdID0gYXJyYXkoIlRpdGxlIj0+IjfmnKzmiqTotYTmupDpmLXlnosiLCAiRGVzY3JpcHRpb24iPT4iIiwgIlBpY1VybCI9PiJodHRwOi8vMS4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ucC5jb20vbG9nbzIuanBnIiwgIlVybCIgPT4iaHR0cDovL20uLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnEuY29tL3M/X19iaXo9TXpBeE1qWXhOVGt6TVE9PSZtaWQ9MjA3OTYzMzIyJmlkeD0yJnNuPWE0NzdiYjhlOTUzZmViYzRiY2I5NDBmZmFlNzk3MGZiJnNjZW5lPTE4I3JkIik7CiAgICAgICAgfWVsc2UgaWYgKCRrZXl3b3JkPT09IjEwOCIgfHwka2V5d29yZD09PSI45pys6Zi15Z6LIiApewoJCQkvLzjmnKzpmLXlnosKICAgICAgICAgICAgJGNvbnRlbnQgPSBhcnJheSgpOwogICAgICAgICAgICAkY29udGVudFtdID0gYXJyYXkoIlRpdGxlIj0+IjjmnKzpg6jokL3miJjpmLXlnosiLCAiRGVzY3JpcHRpb24iPT4iIiwgIlBpY1VybCI9PiJodHRwOi8vMS4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ucC5jb20vY29jLmpwZyIsICJVcmwiID0+Imh0dHA6Ly9tLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5xLmNvbS9zP19fYml6PU16QXhNall4TlRrek1RPT0mbWlkPTIwNzk2MzM1NiZpZHg9MSZzbj1iNmYxYTM5YzYyMGUwZDZhYjc4YTQyYjcwYmMzMGM2YSZzY2VuZT0xOCNyZCIpOwogICAgICAgICAgICAkY29udGVudFtdID0gYXJyYXkoIlRpdGxlIj0+IjjmnKzmiqTotYTmupDpmLXlnosiLCAiRGVzY3JpcHRpb24iPT4iIiwgIlBpY1VybCI9PiJodHRwOi8vMS4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ucC5jb20vbG9nbzIuanBnIiwgIlVybCIgPT4iaHR0cDovL20uLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnEuY29tL3M/X19iaXo9TXpBeE1qWXhOVGt6TVE9PSZtaWQ9MjA3OTYzMzU2JmlkeD0yJnNuPWFmNjMyOGQxMzEyNzQ1ZjdiY2ViMDI1ZjcyMDE0MWUyJnNjZW5lPTE4I3JkIik7CiAgICAgICAgfWVsc2UgaWYgKCRrZXl3b3JkPT09IjEwOSIgfHwka2V5d29yZD09PSI55pys6Zi15Z6LIiApewoJCQkvLznmnKzpmLXlnosKICAgICAgICAgICAgJGNvbnRlbnQgPSBhcnJheSgpOwogICAgICAgICAgICAkY29udGVudFtdID0gYXJyYXkoIlRpdGxlIj0+IjnmnKzpg6jokL3miJjpmLXlnosiLCAiRGVzY3JpcHRpb24iPT4iIiwgIlBpY1VybCI9PiJodHRwOi8vMS4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ucC5jb20vY29jLmpwZyIsICJVcmwiID0+Imh0dHA6Ly9tLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5xLmNvbS9zP19fYml6PU16QXhNall4TlRrek1RPT0mbWlkPTIwNzk2MzQwNyZpZHg9MSZzbj02ODgwOGUyNzc0MTZiYTk5Yzk4ZjgyNzRlNDcyYjg5NSNyZCIpOwogICAgICAgICAgICAkY29udGVudFtdID0gYXJyYXkoIlRpdGxlIj0+IjnmnKzmiqTotYTmupDpmLXlnosiLCAiRGVzY3JpcHRpb24iPT4iIiwgIlBpY1VybCI9PiJodHRwOi8vMS4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ucC5jb20vbG9nbzIuanBnIiwgIlVybCIgPT4iaHR0cDovL20uLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnEuY29tL3M/X19iaXo9TXpBeE1qWXhOVGt6TVE9PSZtaWQ9MjA3OTYzNDA3JmlkeD0yJnNuPTkwNzY4OTE4MDg1YjQxODE2Y2NiODcxZmU3YmVkYzQzI3JkIik7CiAgICAgICAgfWVsc2UgaWYgKCRrZXl3b3JkPT09IjExMCIgfHwka2V5d29yZD09PSIxMOacrOmYteWeiyIgKXsKCQkJLy8xMOacrOmYteWeiwogICAgICAgICAgICAkY29udGVudCA9IGFycmF5KCk7CiAgICAgICAgICAgICRjb250ZW50W10gPSBhcnJheSgiVGl0bGUiPT4iMTDmnKzpg6jokL3miJjpmLXlnosiLCAiRGVzY3JpcHRpb24iPT4iIiwgIlBpY1VybCI9PiJodHRwOi8vMS4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ucC5jb20vY29jLmpwZyIsICJVcmwiID0+Imh0dHA6Ly9tLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5xLmNvbS9zP19fYml6PU16QXhNall4TlRrek1RPT0mbWlkPTIwNzk2MzQ0MyZpZHg9MSZzbj02ZWYyNmFiZDZlNDk5ODE0MjdiMTgwYTU1NmM4M2I0NCNyZCIpOwogICAgICAgICAgICAkY29udGVudFtdID0gYXJyYXkoIlRpdGxlIj0+IjEw5pys5oqk6LWE5rqQ6Zi15Z6LIiwgIkRlc2NyaXB0aW9uIj0+IiIsICJQaWNVcmwiPT4iaHR0cDovLzEuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnAuY29tL2xvZ28yLmpwZyIsICJVcmwiID0+Imh0dHA6Ly9tLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5xLmNvbS9zP19fYml6PU16QXhNall4TlRrek1RPT0mbWlkPTIwNzk2MzQ0MyZpZHg9MiZzbj0yYWUyNzMxYTFmMDk2ZWEwOGNlOTg5ZDc0ZTE5MTNkNCNyZCIpOwoJCX1lbHNlIGlmICgka2V5d29yZD09PSIyMDAiIHx8JGtleXdvcmQ9PT0i6YOo6JC95oiYIiApewoJCQkvL+mDqOiQveaImOS5i+acgAogICAgICAgICAgICAkY29udGVudCA9IGFycmF5KCk7CiAgICAgICAgICAgICRjb250ZW50W10gPSBhcnJheSgiVGl0bGUiPT4i6YOo5L2c5oiY5LmL5pyA57uP5YW455qE5oiY5b25IiwgIkRlc2NyaXB0aW9uIj0+IuaUtumbhumDqOiQveaImOS5i+acgCIsICJQaWNVcmwiPT4iaHR0cDovLzEuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnAuY29tL0xPR08xLmpwZyIsICJVcmwiID0+Imh0dHA6Ly9tLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5xLmNvbS9zP19fYml6PU16QXhNall4TlRrek1RPT0mbWlkPTIwNzk4MTI3MCZpZHg9MSZzbj1kNzc1ZTZhOTI5OTdkNGUwM2E3OWVjZjc1NzgwNDE2OCNyZCIpOwogICAgICAgICAgICAkY29udGVudFtdID0gYXJyYXkoIlRpdGxlIj0+IumDqOS9nOaImOS5i+acgOiLseWLh+eahOi/m+aUuyIsICJEZXNjcmlwdGlvbiI9PiIiLCAiUGljVXJsIj0+Imh0dHA6Ly8xLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5wLmNvbS90b3V4aWFuZy5qcGciLCAiVXJsIiA9PiJodHRwOi8vbS4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ucS5jb20vcz9fX2Jpej1NekF4TWpZeE5Ua3pNUT09Jm1pZD0yMDc5ODEyNzAmaWR4PTImc249NWNhODkzNWY0OWQ3YTdlYTY5ZTlmMjRlMjQxZTE2YjQjcmQiKTsKICAgICAgICAgICAgJGNvbnRlbnRbXSA9IGFycmF5KCJUaXRsZSI9PiLpg6jokL3miJjkuYvmnIDpob3lvLrnmoTpmLLlvqEiLCAiRGVzY3JpcHRpb24iPT4iIiwgIlBpY1VybCI9PiJodHRwOi8vMS4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ucC5jb20vdG91eGlhbmcuanBnIiwgIlVybCIgPT4iaHR0cDovL20uLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnEuY29tL3M/X19iaXo9TXpBeE1qWXhOVGt6TVE9PSZtaWQ9MjA3OTgxMjcwJmlkeD0zJnNuPTMxNDEyN2NiYjU2OGI1YjgxODIxMmI5N2E4ZWZiZjgxI3JkIik7CiAgICAgICAgfWVsc2UgaWYgKCRrZXl3b3JkPT09IjIwOCIgfHwka2V5d29yZD09PSI45pys6KeG6aKRIiApewoJCQkvLzjmnKzop4bpopEKICAgICAgICAgICAgJGNvbnRlbnQgPSBhcnJheSgpOwogICAgICAgICAgICAkY29udGVudFtdID0gYXJyYXkoIlRpdGxlIj0+IjjmnKwt6b6Z5rWBIiwgIkRlc2NyaXB0aW9uIj0+IuWQhOenjTjmnKznu4/lhbjkuInmmJ/mtYHop4bpopEiLCAiUGljVXJsIj0+Imh0dHA6Ly8xLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5wLmNvbS9sb25nLmpwZyIsICJVcmwiID0+Imh0dHA6Ly9tLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5xLmNvbS9zP19fYml6PU16QXhNall4TlRrek1RPT0mbWlkPTIwNzk2NDMxMyZpZHg9MSZzbj0yZjQxOTMwODljMDk4OTA2NDM1NjRiYWU3ZWU5MDRiNSNyZCIpOwogICAgICAgICAgICAkY29udGVudFtdID0gYXJyYXkoIlRpdGxlIj0+IjjmnKwt54yq5rWBIiwgIkRlc2NyaXB0aW9uIj0+IiIsICJQaWNVcmwiPT4iaHR0cDovLzEuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnAuY29tL3podS5qcGciLCAiVXJsIiA9PiJodHRwOi8vbS4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ucS5jb20vcz9fX2Jpej1NekF4TWpZeE5Ua3pNUT09Jm1pZD0yMDc5NjQzMTMmaWR4PTImc249ZGQ3MmVmODA5YWYyZDYwZGI1OTE4MzFiMDI2NTYwODMjcmQiKTsKICAgICAgICAgICAgJGNvbnRlbnRbXSA9IGFycmF5KCJUaXRsZSI9PiI45pysLeefs+azleearuWNoea1gSIsICJEZXNjcmlwdGlvbiI9PiIiLCAiUGljVXJsIj0+Imh0dHA6Ly8xLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5wLmNvbS9waWthLmpwZyIsICJVcmwiID0+Imh0dHA6Ly9tLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5xLmNvbS9zP19fYml6PU16QXhNall4TlRrek1RPT0mbWlkPTIwNzk2NDMxMyZpZHg9MyZzbj0xNDZkOTM5ODQ5MWZiNGNmOTdlMDA4N2E4M2I4NTVkYyNyZCIpOwogICAgICAgICAgICAkY29udGVudFtdID0gYXJyYXkoIlRpdGxlIj0+IjjmnKwt5YW25LuWIiwgIkRlc2NyaXB0aW9uIj0+IiIsICJQaWNVcmwiPT4iaHR0cDovLzEuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnAuY29tL3RvdXhpYW5nLmpwZyIsICJVcmwiID0+Imh0dHA6Ly9tLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5xLmNvbS9zP19fYml6PU16QXhNall4TlRrek1RPT0mbWlkPTIwNzk2NDMxMyZpZHg9NCZzbj0wODczMmUyYzljNTRjZjM1MmE4ODEyMjBmODk0MzgyZiNyZCIpOwogICAgICAgIH1lbHNlIGlmICgka2V5d29yZD09PSIyMDkiIHx8JGtleXdvcmQ9PT0iOeacrOinhumikSIgKXsKCQkJLy855pys6KeG6aKRCiAgICAgICAgICAgICRjb250ZW50ID0gYXJyYXkoKTsKICAgICAgICAgICAgJGNvbnRlbnRbXSA9IGFycmF5KCJUaXRsZSI9PiI55pysLeefs+eLl+eQgyIsICJEZXNjcmlwdGlvbiI9PiLlkITnp4055pys57uP5YW45LiJ5pif5rWB6KeG6aKRIiwgIlBpY1VybCI9PiJodHRwOi8vMS4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ucC5jb20vc2hpZmFnb3VxaXUuanBnIiwgIlVybCIgPT4iaHR0cDovL20uLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnEuY29tL3M/X19iaXo9TXpBeE1qWXhOVGt6TVE9PSZtaWQ9MjA3OTY0MjI5JmlkeD0xJnNuPWU1YWExYmI2NjEwNmY4N2MwYmI5ZjljNGM1ODRmNmU5I3JkIik7CiAgICAgICAgICAgICRjb250ZW50W10gPSBhcnJheSgiVGl0bGUiPT4iOeacrC3nn7PnjKrmtYEiLCAiRGVzY3JpcHRpb24iPT4iIiwgIlBpY1VybCI9PiJodHRwOi8vMS4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ucC5jb20vemh1LmpwZyIsICJVcmwiID0+Imh0dHA6Ly9tLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5xLmNvbS9zP19fYml6PU16QXhNall4TlRrek1RPT0mbWlkPTIwNzk2NDIyOSZpZHg9MiZzbj0yNDYzNWU3ZTQxMjM4NjM1NzRiNWNiMDgzY2RlMTQzYiNyZCIpOwogICAgICAgICAgICAkY29udGVudFtdID0gYXJyYXkoIlRpdGxlIj0+IjnmnKwt55+z5rOV55qu5Y2h5rWBIiwgIkRlc2NyaXB0aW9uIj0+IiIsICJQaWNVcmwiPT4iaHR0cDovLzEuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnAuY29tL3Bpa2EuanBnIiwgIlVybCIgPT4iaHR0cDovL20uLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnEuY29tL3M/X19iaXo9TXpBeE1qWXhOVGt6TVE9PSZtaWQ9MjA3OTY0MjI5JmlkeD0zJnNuPWRmZmI1ZjAwZmY1MDY5ZDVlYzcxNjkyN2JkOWI0NzBhI3JkIik7CiAgICAgICAgICAgICRjb250ZW50W10gPSBhcnJheSgiVGl0bGUiPT4iOeacrC3lhbbku5YiLCAiRGVzY3JpcHRpb24iPT4iIiwgIlBpY1VybCI9PiJodHRwOi8vMS4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ucC5jb20vdG91eGlhbmcuanBnIiwgIlVybCIgPT4iaHR0cDovL20uLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnEuY29tL3M/X19iaXo9TXpBeE1qWXhOVGt6TVE9PSZtaWQ9MjA3OTY0MjI5JmlkeD00JnNuPWUxYmE3ZDY1ODExMzRhODhlZWMyMjE5MWE3ZTQ2NmUzI3JkIik7CiAgICAgICAgfWVsc2UgaWYgKCRrZXl3b3JkPT09IjIxMCIgfHwka2V5d29yZD09PSIxMOacrOinhumikSIgKXsKCQkJLy8xMOacrOinhumikQogICAgICAgICAgICAkY29udGVudCA9IGFycmF5KCk7CiAgICAgICAgICAgICRjb250ZW50W10gPSBhcnJheSgiVGl0bGUiPT4iMTDmnKznu4/lhbjkuInmmJ/op4bpopEiLCAiRGVzY3JpcHRpb24iPT4i5ZCE56eNMTDmnKznu4/lhbjkuInmmJ/op4bpopEiLCAiUGljVXJsIj0+Imh0dHA6Ly8xLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5wLmNvbS9jb2MuanBnIiwgIlVybCIgPT4iaHR0cDovL20uLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnEuY29tL3M/X19iaXo9TXpBeE1qWXhOVGt6TVE9PSZtaWQ9MjA3OTY0MzgxJmlkeD0xJnNuPWJhODFhZGI1OGNhZjQ4MmU2YmExZTgyN2ZhMjFkNDhjI3JkIik7CiAgICAgICAgfWVsc2UgaWYgKCRrZXl3b3JkPT09IjMwMSIgfHwka2V5d29yZD09PSLpmLLlvqEiICl7CgkJCS8v6Ziy5b6h6K6+5pa9CiAgICAgICAgICAgICRjb250ZW50ID0gYXJyYXkoKTsKICAgICAgICAgICAgJGNvbnRlbnRbXSA9IGFycmF5KCJUaXRsZSI9PiLpmLLlvqHorr7mlr3mlbDmja7mn6Xor6IiLCAiRGVzY3JpcHRpb24iPT4iIiwgIlBpY1VybCI9PiJodHRwOi8vMS4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ucC5jb20vY29jLmpwZyIsICJVcmwiID0+Imh0dHA6Ly9jLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi4zLmNvbS8xMzAzLzIyODQxNjYxODI5MS5odG1sIik7CiAgICAgICAgfWVsc2UgaWYgKCRrZXl3b3JkPT09IjMwMiIgfHwka2V5d29yZD09PSLlhpvkuosiKXsKCQkJLy/lhpvkuovorr7mlr0KICAgICAgICAgICAgJGNvbnRlbnQgPSBhcnJheSgpOwogICAgICAgICAgICAkY29udGVudFtdID0gYXJyYXkoIlRpdGxlIj0+IuWGm+S6i+iuvuaWveaVsOaNruafpeivoiIsICJEZXNjcmlwdGlvbiI9PiIiLCAiUGljVXJsIj0+Imh0dHA6Ly8xLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5wLmNvbS9jb2MuanBnIiwgIlVybCIgPT4iaHR0cDovL2MuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLjMuY29tLzEzMDMvMjI4NDE3MDUyMjM5Lmh0bWwiKTsKICAgICAgICB9ZWxzZSBpZiAoJGtleXdvcmQ9PT0iMzAzIiB8fCRrZXl3b3JkPT09Iui1hOa6kCIpewoJCQkvL+i1hOa6kOiuvuaWvQogICAgICAgICAgICAkY29udGVudCA9IGFycmF5KCk7CiAgICAgICAgICAgICRjb250ZW50W10gPSBhcnJheSgiVGl0bGUiPT4i6LWE5rqQ6K6+5pa95pWw5o2u5p+l6K+iIiwgIkRlc2NyaXB0aW9uIj0+IiIsICJQaWNVcmwiPT4iaHR0cDovLzEuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnAuY29tL2NvYy5qcGciLCAiVXJsIiA9PiJodHRwOi8vYy4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4uMy5jb20vMTMwMy8yMjg0MTgzMTc4NDEuaHRtbCIpOwogICAgICAgIH1lbHNlIGlmICgka2V5d29yZD09PSIzMDQiIHx8JGtleXdvcmQ9PT0i5YW156eNIil7CgkJCS8v5YW156eNCiAgICAgICAgICAgICRjb250ZW50ID0gYXJyYXkoKTsKICAgICAgICAgICAgJGNvbnRlbnRbXSA9IGFycmF5KCJUaXRsZSI9PiLlhbXnp43lj4rms5XmnK/mlbDmja7mn6Xor6IiLCAiRGVzY3JpcHRpb24iPT4iIiwgIlBpY1VybCI9PiJodHRwOi8vMS4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4ucC5jb20vY29jLmpwZyIsICJVcmwiID0+Imh0dHA6Ly9jLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi4zLmNvbS8xMzAzLzIyODQxODc0MjAzNy5odG1sIik7CiAgICAgICAgfWVsc2UgaWYgKCRrZXl3b3JkPT09IjMwNSIgfHwka2V5d29yZD09PSLlhbbku5YiKXsKCQkJLy/lhbbku5borr7mlr0KICAgICAgICAgICAgJGNvbnRlbnQgPSBhcnJheSgpOwogICAgICAgICAgICAkY29udGVudFtdID0gYXJyYXkoIlRpdGxlIj0+IuWFtuS7luiuvuaWveaVsOaNruafpeivoiIsICJEZXNjcmlwdGlvbiI9PiIiLCAiUGljVXJsIj0+Imh0dHA6Ly8xLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5wLmNvbS9jb2MuanBnIiwgIlVybCIgPT4iaHR0cDovL2MuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLjMuY29tLzEzMDMvMjI4NDE5MTM1ODM4Lmh0bWwiKTsKICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgJGNvbnRlbnQgPSAi6L6T5YWl5pyJ6K+v77yBXG4iLmNhaWRhbjsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgaWYoaXNfYXJyYXkoJGNvbnRlbnQpKXsKICAgICAgICAgICAgICAgIGlmIChpc3NldCgkY29udGVudFswXVsnUGljVXJsJ10pKXsKICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gJHRoaXMtPnRyYW5zbWl0TmV3cygkb2JqZWN0LCAkY29udGVudCk7CiAgICAgICAgICAgICAgICB9ZWxzZSBpZiAoaXNzZXQoJGNvbnRlbnRbJ011c2ljVXJsJ10pKXsKICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gJHRoaXMtPnRyYW5zbWl0TXVzaWMoJG9iamVjdCwgJGNvbnRlbnQpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgICRyZXN1bHQgPSAkdGhpcy0+dHJhbnNtaXRUZXh0KCRvYmplY3QsICRjb250ZW50KTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICB9CgogICAgLy/mjqXmlLblm77niYfmtojmga8KICAgIHByaXZhdGUgZnVuY3Rpb24gcmVjZWl2ZUltYWdlKCRvYmplY3QpCiAgICB7CiAgICAgICAgJGNvbnRlbnQgPSAi5oKo55qE5Zu+54mH5oiR5Lus5bey57uP5pS25Yiw77yB5oSf6LCi5oKo55qE5pSv5oyB77yBIjsKICAgICAgICAkcmVzdWx0ID0gJHRoaXMtPnRyYW5zbWl0VGV4dCgkb2JqZWN0LCAkY29udGVudCk7CiAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICB9CgogICAgLy/mjqXmlLbkvY3nva7mtojmga8KICAgIHByaXZhdGUgZnVuY3Rpb24gcmVjZWl2ZUxvY2F0aW9uKCRvYmplY3QpCiAgICB7CiAgICAgICAgJGNvbnRlbnQgPSAi5L2g5Y+R6YCB55qE5piv5L2N572u77yM57qs5bqm5Li677yaIi4kb2JqZWN0LT5Mb2NhdGlvbl9YLiLvvJvnu4/luqbkuLrvvJoiLiRvYmplY3QtPkxvY2F0aW9uX1kuIu+8m+e8qeaUvue6p+WIq+S4uu+8miIuJG9iamVjdC0+U2NhbGUuIu+8m+S9jee9ruS4uu+8miIuJG9iamVjdC0+TGFiZWw7CiAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT50cmFuc21pdFRleHQoJG9iamVjdCwgJGNvbnRlbnQpOwogICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgfQoKICAgIC8v5o6l5pS26K+t6Z+z5raI5oGvCiAgICBwcml2YXRlIGZ1bmN0aW9uIHJlY2VpdmVWb2ljZSgkb2JqZWN0KQogICAgewogICAgICAgIGlmIChpc3NldCgkb2JqZWN0LT5SZWNvZ25pdGlvbikgJiYgIWVtcHR5KCRvYmplY3QtPlJlY29nbml0aW9uKSl7CiAgICAgICAgICAgICRjb250ZW50ID0gIuS9oOWImuaJjeivtOeahOaYr++8miIuJG9iamVjdC0+UmVjb2duaXRpb247CiAgICAgICAgICAgICRyZXN1bHQgPSAkdGhpcy0+dHJhbnNtaXRUZXh0KCRvYmplY3QsICRjb250ZW50KTsKICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgJGNvbnRlbnQgPSBhcnJheSgiTWVkaWFJZCI9PiRvYmplY3QtPk1lZGlhSWQpOwogICAgICAgICAgICAkcmVzdWx0ID0gJHRoaXMtPnRyYW5zbWl0Vm9pY2UoJG9iamVjdCwgJGNvbnRlbnQpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICB9CgogICAgLy/mjqXmlLbop4bpopHmtojmga8KICAgIHByaXZhdGUgZnVuY3Rpb24gcmVjZWl2ZVZpZGVvKCRvYmplY3QpCiAgICB7CiAgICAgICAgJGNvbnRlbnQgPSBhcnJheSgiTWVkaWFJZCI9PiRvYmplY3QtPk1lZGlhSWQsICJUaHVtYk1lZGlhSWQiPT4kb2JqZWN0LT5UaHVtYk1lZGlhSWQsICJUaXRsZSI9PiIiLCAiRGVzY3JpcHRpb24iPT4iIik7CiAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT50cmFuc21pdFZpZGVvKCRvYmplY3QsICRjb250ZW50KTsKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICAvL+aOpeaUtumTvuaOpea2iOaBrwogICAgcHJpdmF0ZSBmdW5jdGlvbiByZWNlaXZlTGluaygkb2JqZWN0KQogICAgewogICAgICAgICRjb250ZW50ID0gIuS9oOWPkemAgeeahOaYr+mTvuaOpe+8jOagh+mimOS4uu+8miIuJG9iamVjdC0+VGl0bGUuIu+8m+WGheWuueS4uu+8miIuJG9iamVjdC0+RGVzY3JpcHRpb24uIu+8m+mTvuaOpeWcsOWdgOS4uu+8miIuJG9iamVjdC0+VXJsOwogICAgICAgICRyZXN1bHQgPSAkdGhpcy0+dHJhbnNtaXRUZXh0KCRvYmplY3QsICRjb250ZW50KTsKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICAvL+WbnuWkjeaWh+acrOa2iOaBrwogICAgcHJpdmF0ZSBmdW5jdGlvbiB0cmFuc21pdFRleHQoJG9iamVjdCwgJGNvbnRlbnQpCiAgICB7CiAgICAgICAgJHhtbFRwbCA9ICI8eG1sPgo8VG9Vc2VyTmFtZT48IVtDREFUQVslc11dPjwvVG9Vc2VyTmFtZT4KPEZyb21Vc2VyTmFtZT48IVtDREFUQVslc11dPjwvRnJvbVVzZXJOYW1lPgo8Q3JlYXRlVGltZT4lczwvQ3JlYXRlVGltZT4KPE1zZ1R5cGU+PCFbQ0RBVEFbdGV4dF1dPjwvTXNnVHlwZT4KPENvbnRlbnQ+PCFbQ0RBVEFbJXNdXT48L0NvbnRlbnQ+CjwveG1sPiI7CiAgICAgICAgJHJlc3VsdCA9IHNwcmludGYoJHhtbFRwbCwgJG9iamVjdC0+RnJvbVVzZXJOYW1lLCAkb2JqZWN0LT5Ub1VzZXJOYW1lLCB0aW1lKCksICRjb250ZW50KTsKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICAvL+WbnuWkjeWbvueJh+a2iOaBrwogICAgcHJpdmF0ZSBmdW5jdGlvbiB0cmFuc21pdEltYWdlKCRvYmplY3QsICRpbWFnZUFycmF5KQogICAgewogICAgICAgICRpdGVtVHBsID0gIjxJbWFnZT4KICAgIDxNZWRpYUlkPjwhW0NEQVRBWyVzXV0+PC9NZWRpYUlkPgo8L0ltYWdlPiI7CgogICAgICAgICRpdGVtX3N0ciA9IHNwcmludGYoJGl0ZW1UcGwsICRpbWFnZUFycmF5WydNZWRpYUlkJ10pOwoKICAgICAgICAkeG1sVHBsID0gIjx4bWw+CjxUb1VzZXJOYW1lPjwhW0NEQVRBWyVzXV0+PC9Ub1VzZXJOYW1lPgo8RnJvbVVzZXJOYW1lPjwhW0NEQVRBWyVzXV0+PC9Gcm9tVXNlck5hbWU+CjxDcmVhdGVUaW1lPiVzPC9DcmVhdGVUaW1lPgo8TXNnVHlwZT48IVtDREFUQVtpbWFnZV1dPjwvTXNnVHlwZT4KJGl0ZW1fc3RyCjwveG1sPiI7CgogICAgICAgICRyZXN1bHQgPSBzcHJpbnRmKCR4bWxUcGwsICRvYmplY3QtPkZyb21Vc2VyTmFtZSwgJG9iamVjdC0+VG9Vc2VyTmFtZSwgdGltZSgpKTsKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICAvL+WbnuWkjeivremfs+a2iOaBrwogICAgcHJpdmF0ZSBmdW5jdGlvbiB0cmFuc21pdFZvaWNlKCRvYmplY3QsICR2b2ljZUFycmF5KQogICAgewogICAgICAgICRpdGVtVHBsID0gIjxWb2ljZT4KICAgIDxNZWRpYUlkPjwhW0NEQVRBWyVzXV0+PC9NZWRpYUlkPgo8L1ZvaWNlPiI7CgogICAgICAgICRpdGVtX3N0ciA9IHNwcmludGYoJGl0ZW1UcGwsICR2b2ljZUFycmF5WydNZWRpYUlkJ10pOwoKICAgICAgICAkeG1sVHBsID0gIjx4bWw+CjxUb1VzZXJOYW1lPjwhW0NEQVRBWyVzXV0+PC9Ub1VzZXJOYW1lPgo8RnJvbVVzZXJOYW1lPjwhW0NEQVRBWyVzXV0+PC9Gcm9tVXNlck5hbWU+CjxDcmVhdGVUaW1lPiVzPC9DcmVhdGVUaW1lPgo8TXNnVHlwZT48IVtDREFUQVt2b2ljZV1dPjwvTXNnVHlwZT4KJGl0ZW1fc3RyCjwveG1sPiI7CgogICAgICAgICRyZXN1bHQgPSBzcHJpbnRmKCR4bWxUcGwsICRvYmplY3QtPkZyb21Vc2VyTmFtZSwgJG9iamVjdC0+VG9Vc2VyTmFtZSwgdGltZSgpKTsKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICAvL+WbnuWkjeinhumikea2iOaBrwogICAgcHJpdmF0ZSBmdW5jdGlvbiB0cmFuc21pdFZpZGVvKCRvYmplY3QsICR2aWRlb0FycmF5KQogICAgewogICAgICAgICRpdGVtVHBsID0gIjxWaWRlbz4KICAgIDxNZWRpYUlkPjwhW0NEQVRBWyVzXV0+PC9NZWRpYUlkPgogICAgPFRodW1iTWVkaWFJZD48IVtDREFUQVslc11dPjwvVGh1bWJNZWRpYUlkPgogICAgPFRpdGxlPjwhW0NEQVRBWyVzXV0+PC9UaXRsZT4KICAgIDxEZXNjcmlwdGlvbj48IVtDREFUQVslc11dPjwvRGVzY3JpcHRpb24+CjwvVmlkZW8+IjsKCiAgICAgICAgJGl0ZW1fc3RyID0gc3ByaW50ZigkaXRlbVRwbCwgJHZpZGVvQXJyYXlbJ01lZGlhSWQnXSwgJHZpZGVvQXJyYXlbJ1RodW1iTWVkaWFJZCddLCAkdmlkZW9BcnJheVsnVGl0bGUnXSwgJHZpZGVvQXJyYXlbJ0Rlc2NyaXB0aW9uJ10pOwoKICAgICAgICAkeG1sVHBsID0gIjx4bWw+CjxUb1VzZXJOYW1lPjwhW0NEQVRBWyVzXV0+PC9Ub1VzZXJOYW1lPgo8RnJvbVVzZXJOYW1lPjwhW0NEQVRBWyVzXV0+PC9Gcm9tVXNlck5hbWU+CjxDcmVhdGVUaW1lPiVzPC9DcmVhdGVUaW1lPgo8TXNnVHlwZT48IVtDREFUQVt2aWRlb11dPjwvTXNnVHlwZT4KJGl0ZW1fc3RyCjwveG1sPiI7CgogICAgICAgICRyZXN1bHQgPSBzcHJpbnRmKCR4bWxUcGwsICRvYmplY3QtPkZyb21Vc2VyTmFtZSwgJG9iamVjdC0+VG9Vc2VyTmFtZSwgdGltZSgpKTsKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICAvL+WbnuWkjeWbvuaWh+a2iOaBrwogICAgcHJpdmF0ZSBmdW5jdGlvbiB0cmFuc21pdE5ld3MoJG9iamVjdCwgJG5ld3NBcnJheSkKICAgIHsKICAgICAgICBpZighaXNfYXJyYXkoJG5ld3NBcnJheSkpewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgICRpdGVtVHBsID0gIiAgICA8aXRlbT4KICAgICAgICA8VGl0bGU+PCFbQ0RBVEFbJXNdXT48L1RpdGxlPgogICAgICAgIDxEZXNjcmlwdGlvbj48IVtDREFUQVslc11dPjwvRGVzY3JpcHRpb24+CiAgICAgICAgPFBpY1VybD48IVtDREFUQVslc11dPjwvUGljVXJsPgogICAgICAgIDxVcmw+PCFbQ0RBVEFbJXNdXT48L1VybD4KICAgIDwvaXRlbT4KIjsKICAgICAgICAkaXRlbV9zdHIgPSAiIjsKICAgICAgICBmb3JlYWNoICgkbmV3c0FycmF5IGFzICRpdGVtKXsKICAgICAgICAgICAgJGl0ZW1fc3RyIC49IHNwcmludGYoJGl0ZW1UcGwsICRpdGVtWydUaXRsZSddLCAkaXRlbVsnRGVzY3JpcHRpb24nXSwgJGl0ZW1bJ1BpY1VybCddLCAkaXRlbVsnVXJsJ10pOwogICAgICAgIH0KICAgICAgICAkeG1sVHBsID0gIjx4bWw+CjxUb1VzZXJOYW1lPjwhW0NEQVRBWyVzXV0+PC9Ub1VzZXJOYW1lPgo8RnJvbVVzZXJOYW1lPjwhW0NEQVRBWyVzXV0+PC9Gcm9tVXNlck5hbWU+CjxDcmVhdGVUaW1lPiVzPC9DcmVhdGVUaW1lPgo8TXNnVHlwZT48IVtDREFUQVtuZXdzXV0+PC9Nc2dUeXBlPgo8QXJ0aWNsZUNvdW50PiVzPC9BcnRpY2xlQ291bnQ+CjxBcnRpY2xlcz4KJGl0ZW1fc3RyPC9BcnRpY2xlcz4KPC94bWw+IjsKCiAgICAgICAgJHJlc3VsdCA9IHNwcmludGYoJHhtbFRwbCwgJG9iamVjdC0+RnJvbVVzZXJOYW1lLCAkb2JqZWN0LT5Ub1VzZXJOYW1lLCB0aW1lKCksIGNvdW50KCRuZXdzQXJyYXkpKTsKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICAvL+WbnuWkjemfs+S5kOa2iOaBrwogICAgcHJpdmF0ZSBmdW5jdGlvbiB0cmFuc21pdE11c2ljKCRvYmplY3QsICRtdXNpY0FycmF5KQogICAgewogICAgICAgICRpdGVtVHBsID0gIjxNdXNpYz4KICAgIDxUaXRsZT48IVtDREFUQVslc11dPjwvVGl0bGU+CiAgICA8RGVzY3JpcHRpb24+PCFbQ0RBVEFbJXNdXT48L0Rlc2NyaXB0aW9uPgogICAgPE11c2ljVXJsPjwhW0NEQVRBWyVzXV0+PC9NdXNpY1VybD4KICAgIDxIUU11c2ljVXJsPjwhW0NEQVRBWyVzXV0+PC9IUU11c2ljVXJsPgo8L011c2ljPiI7CgogICAgICAgICRpdGVtX3N0ciA9IHNwcmludGYoJGl0ZW1UcGwsICRtdXNpY0FycmF5WydUaXRsZSddLCAkbXVzaWNBcnJheVsnRGVzY3JpcHRpb24nXSwgJG11c2ljQXJyYXlbJ011c2ljVXJsJ10sICRtdXNpY0FycmF5WydIUU11c2ljVXJsJ10pOwoKICAgICAgICAkeG1sVHBsID0gIjx4bWw+CjxUb1VzZXJOYW1lPjwhW0NEQVRBWyVzXV0+PC9Ub1VzZXJOYW1lPgo8RnJvbVVzZXJOYW1lPjwhW0NEQVRBWyVzXV0+PC9Gcm9tVXNlck5hbWU+CjxDcmVhdGVUaW1lPiVzPC9DcmVhdGVUaW1lPgo8TXNnVHlwZT48IVtDREFUQVttdXNpY11dPjwvTXNnVHlwZT4KJGl0ZW1fc3RyCjwveG1sPiI7CgogICAgICAgICRyZXN1bHQgPSBzcHJpbnRmKCR4bWxUcGwsICRvYmplY3QtPkZyb21Vc2VyTmFtZSwgJG9iamVjdC0+VG9Vc2VyTmFtZSwgdGltZSgpKTsKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICAvL+WbnuWkjeWkmuWuouacjea2iOaBrwogICAgcHJpdmF0ZSBmdW5jdGlvbiB0cmFuc21pdFNlcnZpY2UoJG9iamVjdCkKICAgIHsKICAgICAgICAkeG1sVHBsID0gIjx4bWw+CjxUb1VzZXJOYW1lPjwhW0NEQVRBWyVzXV0+PC9Ub1VzZXJOYW1lPgo8RnJvbVVzZXJOYW1lPjwhW0NEQVRBWyVzXV0+PC9Gcm9tVXNlck5hbWU+CjxDcmVhdGVUaW1lPiVzPC9DcmVhdGVUaW1lPgo8TXNnVHlwZT48IVtDREFUQVt0cmFuc2Zlcl9jdXN0b21lcl9zZXJ2aWNlXV0+PC9Nc2dUeXBlPgo8L3htbD4iOwogICAgICAgICRyZXN1bHQgPSBzcHJpbnRmKCR4bWxUcGwsICRvYmplY3QtPkZyb21Vc2VyTmFtZSwgJG9iamVjdC0+VG9Vc2VyTmFtZSwgdGltZSgpKTsKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KICAgIAoKCiAgICAKICAgIAogICAgCgogICAgLy/ml6Xlv5forrDlvZUKICAgIHByaXZhdGUgZnVuY3Rpb24gbG9nZ2VyKCRsb2dfY29udGVudCkKICAgIHsKICAgICAgICBpZihpc3NldCgkX1NFUlZFUlsnSFRUUF9BUFBOQU1FJ10pKXsgICAvL1NBRQogICAgICAgICAgICBzYWVfc2V0X2Rpc3BsYXlfZXJyb3JzKGZhbHNlKTsKICAgICAgICAgICAgc2FlX2RlYnVnKCRsb2dfY29udGVudCk7CiAgICAgICAgICAgIHNhZV9zZXRfZGlzcGxheV9lcnJvcnModHJ1ZSk7CiAgICAgICAgfWVsc2UgaWYoJF9TRVJWRVJbJ1JFTU9URV9BRERSJ10gIT0gIjEyNy4wLjAuMSIpeyAvL0xPQ0FMCiAgICAgICAgICAgICRtYXhfc2l6ZSA9IDEwMDAwOwogICAgICAgICAgICAkbG9nX2ZpbGVuYW1lID0gImxvZy54bWwiOwogICAgICAgICAgICBpZihmaWxlX2V4aXN0cygkbG9nX2ZpbGVuYW1lKSBhbmQgKGFicyhmaWxlc2l6ZSgkbG9nX2ZpbGVuYW1lKSkgPiAkbWF4X3NpemUpKXt1bmxpbmsoJGxvZ19maWxlbmFtZSk7fQogICAgICAgICAgICBmaWxlX3B1dF9jb250ZW50cygkbG9nX2ZpbGVuYW1lLCBkYXRlKCdIOmk6cycpLiIgIi4kbG9nX2NvbnRlbnQuIlxyXG4iLCBGSUxFX0FQUEVORCk7CiAgICAgICAgfQogICAgfQp9Cj8+
0.02s 24400KB
Standard input is empty
Standard output is empty
PHP Parse error:
syntax error, unexpected ';' in /home/0GjBeH/prog.php on line 211
visibility:
Share or Embed source code
&script src=&/e.js/oO6Ejm& type=&text/javascript& &&/script&

我要回帖

更多关于 微信图片保存在哪里 的文章

 

随机推荐