From 3283f5e3bdb701532696a08a50d7b274984eb278 Mon Sep 17 00:00:00 2001
From: tpingzhang <635929049@qq.com>
Date: Thu, 26 Sep 2019 17:24:39 +0800
Subject: [PATCH] =?UTF-8?q?=E5=BF=AB=E6=8D=B7=E6=94=AF=E4=BB=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Sdk/Controller/WapPayController.class.php | 160 +++++++-------
.../Sdk/View/default/WapPay/index.html | 207 ++++++++++++++++++
Public/Sdk/images/anniu.png | Bin 0 -> 1023 bytes
Public/Sdk/images/bag_yellow.png | Bin 0 -> 1949 bytes
Public/Sdk/images/form_bag.png | Bin 0 -> 3315 bytes
Public/Sdk/images/form_bag1.png | Bin 0 -> 6990 bytes
Public/Sdk/images/input.png | Bin 0 -> 1047 bytes
Public/Sdk/images/input2.png | Bin 0 -> 1021 bytes
Public/Sdk/images/submit.png | Bin 0 -> 1028 bytes
9 files changed, 287 insertions(+), 80 deletions(-)
create mode 100644 Application/Sdk/View/default/WapPay/index.html
create mode 100644 Public/Sdk/images/anniu.png
create mode 100644 Public/Sdk/images/bag_yellow.png
create mode 100644 Public/Sdk/images/form_bag.png
create mode 100644 Public/Sdk/images/form_bag1.png
create mode 100644 Public/Sdk/images/input.png
create mode 100644 Public/Sdk/images/input2.png
create mode 100644 Public/Sdk/images/submit.png
diff --git a/Application/Sdk/Controller/WapPayController.class.php b/Application/Sdk/Controller/WapPayController.class.php
index 63fe0860e..129e83a58 100644
--- a/Application/Sdk/Controller/WapPayController.class.php
+++ b/Application/Sdk/Controller/WapPayController.class.php
@@ -53,8 +53,39 @@ class WapPayController extends BaseController{
->setDiscount($discount)
->setSmallId($param['small_user_id'])
->setSmallAccount(get_user_account_by_id($param['small_user_id']));
- return $pay->buildRequestForm($vo);
+ return $pay->buildRequestForm($vo, 0, $param);
}
+
+ /**
+ * 优先扣除绑币 和平台 处理
+ * $request $discountAmount 折扣价格
+ */
+ public function other_price(&$request, $discountAmount=0) {
+ // 优先扣除绑定币平台币
+ $deductionAmount = 0;
+ $user_id = $request['user_id'];
+ $game_id = $request['game_id'];
+ $balance = M ('user', 'tab_')->where (array(
+ 'id' => $user_id
+ ))->getField('balance');
+ $bind_balance = M('user_play', 'tab_')->where(array(
+ 'user_id' => $user_id,
+ 'game_id' => $game_id
+ ))->getField('bind_balance');
+ // 够抵扣的情况 不走这个接口
+ $deductionAmount = $bind_balance + $balance;
+ if ($deductionAmount > $request['price']) {
+ $this->set_message(1089,"fail",$deductionAmount."平台币足够,请关闭支付页面重新支付".$pay_amount);
+ }
+ // 实际支付金额 = 支付总金额 - 折扣抵扣价格 - 绑币和平台币抵扣金额
+ $request['actual_amount'] = round($request['price'] - $discountAmount - $deductionAmount, 2).'';
+ $request['discount_amount'] = round($discountAmount, 2).'';
+ $request['deduction_amount'] = round($deductionAmount, 2).'';
+ $request['price'] = round($request['actual_amount'], 2).'';
+ return $request;
+ //$this->set_message(1089,"fail",$request['price']."新支付".$pay_amount);
+ }
+
/**
*支付宝移动支付
*/
@@ -83,28 +114,9 @@ class WapPayController extends BaseController{
$prefix = $request['code'] == 1 ? "SP_" : "PF_";
$out_trade_no = $prefix.date('Ymd').date('His').sp_random_string(4);
- // 优先扣除绑定币平台币
- $deductionAmount = 0;
- $user_id = $request['user_id'];
- $game_id = $request['game_id'];
- $balance = M ('user', 'tab_')->where (array(
- 'id' => $user_id
- ))->getField('balance');
- $bind_balance = M('user_play', 'tab_')->where(array(
- 'user_id' => $user_id,
- 'game_id' => $game_id
- ))->getField('bind_balance');
- // 够抵扣的情况 不走这个接口
- $deductionAmount = $bind_balance + $balance;
- if ($deductionAmount > $pay_amount) {
- $this->set_message(1089,"fail","平台币足够,请关闭支付页面重新支付");
- }
- // 实际支付金额 = 支付总金额 - 折扣抵扣价格 - 绑币和平台币抵扣金额
- $request['actual_amount'] = $request['price'] - $discountAmount - $deductionAmount;
- $pay_amount = $request['actual_amount'];
- $request['discount_amount'] = $discountAmount;
- $request['deduction_amount'] = $deductionAmount;
-
+ $request = $this->other_price($request);
+Log::write(serialize($request), Log::DEBUG);
+
if(get_zfb_type()==0){
$game_set_data = get_game_set_info($request['game_id']);
@@ -254,9 +266,10 @@ class WapPayController extends BaseController{
if ($payInfo['status'] == 'payed') {
$this->error("订单已支付");
}
+
// 发起支付
if (IS_POST && $param['smsCode']) {
- echo "发起支付==》".time()."
";
+ //echo "发起支付==》".time()."
";
$rsp = $sqpay->shortcut_pay(array(
'merNo' => C('sqpay.partner'),
'merOrderNo' => $payInfo['order_id'],
@@ -270,7 +283,7 @@ class WapPayController extends BaseController{
'smsCode' => $param['smsCode'],
'secret' => C('sqpay.key'),
));
- echo "发起支付==》".time()."
";
+ //echo "发起支付==》".time()."
";
sleep(5);
if ($rsp['responseCode'] == '88') {
redirect(U('Spend/pay_success',array('orderno' => $payInfo['order_id'], 'user_id'=>$param['user_id'],'game_id'=>$param['game_id'])));exit;
@@ -283,7 +296,7 @@ class WapPayController extends BaseController{
// 发送短信
if (IS_POST && !isset($param['smsCode'])) {
// 查看是否签约
- echo "查看是否签约==》".time()."
";
+ //echo "查看是否签约==》".time()."
";
$rcs = $sqpay->contract_status(array(
'merNo' => C('sqpay.partner'),
'custName' => $param['custName'],
@@ -293,7 +306,7 @@ class WapPayController extends BaseController{
'payAmount' => $payInfo['price'],
'secret' => C('sqpay.key'),
));
- echo "查看是否签约==》".time()."
";
+ //echo "查看是否签约==》".time()."
";
if ($rcs['respCode'] == 4) {
$this->error($rcs['respMessage'], '', true);
pp($rcs);
@@ -301,7 +314,7 @@ class WapPayController extends BaseController{
}
// 调用认证 签约
if ($rcs['respCode'] == 1 || $rcs['respCode'] == 2 || $rcs['respCode'] == 3) {
- echo "调用认证 签约==》".time()."
";
+ //echo "调用认证 签约==》".time()."
";
$rsign = $sqpay->sign_contract(array(
'merNo' => C('sqpay.partner'),
'custName' => $param['custName'],
@@ -313,7 +326,7 @@ class WapPayController extends BaseController{
'custType' => '01',
'secret' => C('sqpay.key'),
));
- echo "调用认证 签约==》".time()."
";
+ //echo "调用认证 签约==》".time()."
";
if ($rsign['respCode'] == 'success') { // 认证成功 接着签约
$rauth = $sqpay->sign_contract(array(
'merNo' => C('sqpay.partner'),
@@ -337,7 +350,7 @@ class WapPayController extends BaseController{
}
// 无需签约 发送短信
if ($rcs['respCode'] == 0 || $rcs['respCode'] == 10) {
- echo "发送短信==》".time()."
";
+ //echo "发送短信==》".time()."
";
$ret = $sqpay->protocol_pay_send_sms(array(
'merNo' => C('sqpay.partner'),
'custName' => $param['custName'],
@@ -350,7 +363,7 @@ class WapPayController extends BaseController{
'NotifyURL' => "http://api.wmtxkj.com"."/callback.php?Notify/sq_callback",
'purpose' => 'aaaa'
));
- echo "发送短信==》".time()."
";
+ //echo "发送短信==》".time()."
";
if ($ret['resFlag'] == 'success') {
M('pay_info', 'tab_')->where(array(
'id' => $payInfo['id'],
@@ -470,12 +483,12 @@ class WapPayController extends BaseController{
$file=file_get_contents("./Application/Sdk/OrderNo/".$user_id."-".$game_id.".txt");
$request = json_decode(think_decrypt($file),true);
Log::write(serialize($request), Log::DEBUG);
- /* $request['user_id'] = 232;
+ $request['user_id'] = 232;
$request['game_id'] = 78;
$request['price'] = 0.02;
$request['code'] = 1;
- $request['extend'] = "SP_52299233958";
- $request['pay_order_number'] = "SP_2452299233958"; */
+ $request['extend'] = "SP_522992339581";
+ $request['pay_order_number'] = "SP_24522992339581";
if (empty($request)) {
redirect(U('Spend/notice',array('user_id'=>$user_id,'game_id'=>$game_id,'msg'=>'登录数据不能为空')));exit;
@@ -511,6 +524,8 @@ class WapPayController extends BaseController{
redirect(U('Spend/notice',array('user_id'=>$user_id,'game_id'=>$game_id,'msg'=>'充值金额有误.'.$pay_amount)));exit;
}
+ $this->other_price($request, $request['price']-$pay_amount);
+
//0 官方 1双乾
if (get_shortcut_pay_type() == 0) {
// 暂时只有双乾
@@ -520,23 +535,23 @@ class WapPayController extends BaseController{
'user_id' => $request['user_id'],
'game_id' => $request['game_id'],
'order_id' => $request['pay_order_number'],
- 'price' => $request['price'],
+ 'price' => $request['actual_amount'],
'type' => 'sq_shortcut',
'info' => json_encode($request),
'status' => 'normal',
'create_time' => time(),
));
- if($request['code']==1){
+ /* if($request['code']==1){
$this->add_spend($request,1);
}else{
$this->add_deposit($request);
- }
+ } */
}
- $this->assign("pay_amount", $pay_amount);
+ $this->assign("pay_amount", $request['actual_amount']);
$this->assign("user_id", $request['user_id']);
$this->assign("game_id", $request['game_id']);
- $this->display();
+ $this->display("index");
}
/**
@@ -583,26 +598,8 @@ class WapPayController extends BaseController{
if(!empty($request['scheme'])) {
file_put_contents("./Application/Sdk/Scheme/".$request['game_id'].".txt",$request['scheme']);
}
- $deductionAmount = 0;
- $user_id = $request['user_id'];
- $game_id = $request['game_id'];
- $balance = M ('user', 'tab_')->where (array(
- 'id' => $user_id
- ))->getField('balance');
- $bind_balance = M('user_play', 'tab_')->where(array(
- 'user_id' => $user_id,
- 'game_id' => $game_id
- ))->getField('bind_balance');
- // 够抵扣的情况 不走这个接口
- $deductionAmount = $bind_balance + $balance;
- if ($deductionAmount > $pay_amount) {
- $this->set_message(1089,"fail","平台币足够,请关闭支付页面重新支付");
- }
- // 实际支付金额 = 支付总金额 - 折扣抵扣价格 - 绑币和平台币抵扣金额
- $request['actual_amount'] = $request['price'] - $discountAmount - $deductionAmount;
- $pay_amount = $request['actual_amount'];
- $request['discount_amount'] = $discountAmount;
- $request['deduction_amount'] = $deductionAmount;
+ // 绑币平台币优先处理
+ $this->other_price($request, $discountAmount);
$game_set_data = get_game_set_info($request['game_id']);
//$request['game_name']
@@ -815,8 +812,8 @@ class WapPayController extends BaseController{
* @return [type] [description]
*/
public function jft_wap(){
- #获取SDK上POST方式传过来的数据 然后base64解密 然后将json字符串转化成数组
- $request = json_decode(base64_decode(file_get_contents("php://input")), true);
+ #获取SDK上POST方式传过来的数据 然后base64解密 然后将json字符串转化成数组
+ $request = json_decode(base64_decode(file_get_contents("php://input")), true);
if (empty($request)) {
$this->set_message(1001, "fail", "登录数据不能为空");
}
@@ -824,27 +821,29 @@ class WapPayController extends BaseController{
if($request['price']<0){
$this->set_message(1011,"fail","充值金额有误");
}
- $table = $request['code'] == 1 ? "spend" : "deposit";
- $prefix = $request['code'] == 1 ? "SP_" : "PF_";
- $request['pay_order_number'] = $prefix . date('Ymd') . date('His') . sp_random_string(4);
- $request['pay_way'] = 3;
- $request['pay_status'] = 0;
- $request['spend_ip'] = get_client_ip();
- //折扣
- $user = get_user_entity($request['user_id']);
- $discount = $this->get_discount($request['game_id'],$user['promote_id'],$request['user_id']);
- $discount = $discount['discount'];
- $pay_amount = $discount * $request['price'] / 10;
+ $table = $request['code'] == 1 ? "spend" : "deposit";
+ $prefix = $request['code'] == 1 ? "SP_" : "PF_";
+ $request['pay_order_number'] = $prefix . date('Ymd') . date('His') . sp_random_string(4);
+ $request['pay_way'] = 3;
+ $request['pay_status'] = 0;
+ $request['spend_ip'] = get_client_ip();
+ //折扣
+ $user = get_user_entity($request['user_id']);
+ $discount = $this->get_discount($request['game_id'],$user['promote_id'],$request['user_id']);
+ $discount = $discount['discount'];
+ $pay_amount = $discount * $request['price'] / 10;
+ // 绑币平台币处理
+ $this->other_price($request, $request['price']-$pay_amount);
- if($request['code']==1){
- $this->add_spend($request);
- }else{
- $this->add_deposit($request);
- }
- file_put_contents("./Application/Sdk/OrderNo/".$request['user_id']."-".$request['game_id'].".txt",think_encrypt(json_encode($request)));
+ if($request['code']==1){
+ $this->add_spend($request);
+ }else{
+ $this->add_deposit($request);
+ }
+ file_put_contents("./Application/Sdk/OrderNo/".$request['user_id']."-".$request['game_id'].".txt",think_encrypt(json_encode($request)));
- $sss="http://".$_SERVER['HTTP_HOST'].'/sdk.php/Spend/pay_way/user_id/'.$request['user_id'].'/game_id/'.$request['game_id'].'/type/3';
- redirect($sss);
+ $sss="http://".$_SERVER['HTTP_HOST'].'/sdk.php/Spend/pay_way/user_id/'.$request['user_id'].'/game_id/'.$request['game_id'].'/type/3';
+ redirect($sss);
}
/**
@@ -897,6 +896,7 @@ class WapPayController extends BaseController{
if ($pay_amount < 0.01) {
redirect(U('Spend/notice',array('user_id'=>$user_id,'game_id'=>$game_id,'msg'=>'充值金额有误.'.$pay_amount)));exit;
}
+ $this->other_price($request, $request['price']-$pay_amount);
//0 官方 1双乾
if (get_union_pay_type() == 0) {
diff --git a/Application/Sdk/View/default/WapPay/index.html b/Application/Sdk/View/default/WapPay/index.html
new file mode 100644
index 000000000..63d13a9fa
--- /dev/null
+++ b/Application/Sdk/View/default/WapPay/index.html
@@ -0,0 +1,207 @@
+
+
+
gT7sh02hhi7)?tqj0;|J3!ln7-@Gxhie! zbaWvb#-AOG659FGa{MExAOA3lK_?t9f-=SLMk^ug(S_{>>}-^T5nuc(7@0T|eK64% z>Yus_3wZO><%2`T16Nu{t=f5u7T11=>4n0GGjSv|Ik_?$(_iZtX@$do+Q*+QTOf63OYd%N++te{L2b6RmxhjMaR-bzPHnvy`1!euvE1+HTMW~; zb>fznU-s3fz)9<7%dgc(Cj!YO8BJP?^reZw+H&RPqWReJ)F+3O`b(9+&*q+(2>iC| x#o?c >+@Aoa| z-aCi4dv4Oy(ANL}K+|nA%?kk3Lb316q6L_waPj(!*szjM_vd>fVSFJ2g#c$35(?qm zU`9CP1u S3t0MtRYk3Zkv!=21TU`xiVj-?3ZV%7lQ=p^DYm{AZP7Yc>5ITY}v zv>e2-SrpKZ=wao-r9u(x&9Nxt9qZ}CjE!PCut28`I7bl~1Arku11Ex`IXtq60=~l~ zWAj-t9>l#<;YU%x_oVziw&SP>3gL*BHWo}P0s&`dXGyRn+Sw7zan@D@YrGZq+F1~6 z$wWJ{H3|3O0WohVD~#+#bN%28TT#FWKA%g* P!V-oTF}QewrPXXm zbBZ1w|63J?KWg*%UeF(W|0^)hN6dxrUJwu2jWV&qg{_%U)cwh`~ot9|Vb>%i{J3 zgpcqd5H61DZHF`QV{=%DkZ1Z%-@}9K#^Lc9946#OqktHKC7aD6+gej;RxZvonk$J! zAkZD0?WxxGbSo=5o$5@oakZPXr6J7SFvQ`{*|PqyrGL_PwiRG5=9vbeYyre_MG+YH zE@U$M(_CCWiTA;l^=U5DPuk)!GWglT{;AM&BCLC6rytuETYPMMh=X-IinaBc`?uKu zusGa}=IkSq4YfatI{C)1VzjS@)}-fe3sKW^1N7i#lhc;5?DTH7_D-2w%e^4;6qBE~ zQWQOnbk^kdSY5jAj|;y$aQ1LPa>l;snWXlykbQ1p&h_9W+lA}S5o5y0oiEPR7j9c# zf8%D6xHP1Ct&RIV<5#^8jcrcYM;^7Gr 2 bn`A{BMn%|;Fvbc48k a$Q9j{iH#V&o3@K`=tE;)g%2f{* z6kI+()K>C)UrtVrc1}xqRsCH&T|iv+wZ=gqP4D9Bj{boGv2knrP$U=$!|iNeAT>QQ z+WTbb@z Ad7vMvkIXJ$WW_%g R77AMM7li z^yCp2M_%ChtSke9S<-{e#Gj69j!sHb%F4>{QGYwHr(1D0&dXe <;Pa@9(d~ z_RGZ6x)m}F*l^`av0lJA4k93?f9cn7!D)uHM%{mB-cP-k9!G-HK1ECAy|Ub_hw|EE z-%ylSN=r*y`+?bw@@=r8p<%lmb;vxR5K|rutcbA(Gb__e1XcYnYEBp*)e3 y?){H8EUH+>#`h#!Zf-#&4LBveprro<<)k#P|QhNVrIP ~biya+(?H1BmHaRsl z
OH~1odg|Vl>23~JnMqXYXw;A>T0}lr+Z_{n}#SRXIeM?)L!T7{PnQ*NC zSM57@?sTN~+-~pRJAN%7KTTUpYtNp6-*UI%gYGK68-As~PVM?y$#XQar{LOB$;+mb z8fbG&U3?}Mt8e!9{>Z4PIO)Xxx3_iVr>a{c<_%sdeG=ZK8E^FG+kgchrP>y2U#H>4 zos+q)HlDlAUMlfB=>8@FsB1nwb~7slAqL!Y>hy0IAO_)T$E~WqjdxFa_L`Pea$XY| zr(Zqv j485b-5NpI`95N+~}UP>n jr8A14IHH4-X{z_|mikF|wcR zYJ=ysVWcellL*}#Bm1XQXUr|(1|%v0u7OZfa#2=Mfum3e6?F|1N<|T_s;r`lR0cnk zl8U;v21;916aM*<1+!6I-L$O?jX%!?-Y~KrbUIlZi3|t`Km@2ENK|*Eik6nvnhjM| zB_N?hJMT-!2P*l} ^?5P@X+@xs{HQKq;oRibrXp(_PziWC ziE2$E`FzQur3Z;lqIr q0O!#K-~*2v1K} zZ4DI_Ej48|Wg}%}l!}Ux7Fu0h-`G$^!@$_U;E1L%`irh1$;FRI@TGszb^W)l%6E0w zpg<&pnGFe4Pk(}|F_lDwe+pUK^Si#N8hzK^XI 0vFWoB1~-_DjqEy7f^` zW-6R#jW>`P9b!t}Hp#kURb&$`YGgp=obG}ZnhO2xmVLfZvv_=iiRkZ^PS1tK&pPJ( zEbe_&{Dhs1vHJ7W)3Jtc#8dYbZmE6NeUs)txfk0+yW&z?oR5W#^q-#y2@6?HFPk6z z$8ebBMxML~1bGM&{#Lxmuoqbm 1k?#ZF^nLFgRuC-h=S`-;XU?$pk7B*H&|nQHU|z7aZu)lZYC zFs*$}%e9jl?of`nYybDDGXh|qk7#BTsfSBFW*MEmqvnA=4xx! J(;O5z0rzd`6?T;jdBRRRc9sL=C(DNvit)j%orR9a0=qtOm z-gott2RF5bYnCL+)tVMrD;|zZ-ce=lj7~1xgAH3gT-58|%`Yh}jW$$ zn(odsSkm)Ga-PQT3*lhumT~Ei5!jYA?#x_B}*i<`DSLsZa z%@idnub$PoHYOX0IHT>|<8!^xu-L4vY?d2@HxuX}Evzi@`3@{{KTL4r#?{kc*&pND zqH+pdpB~I6O5@Io$#&hGD;jfbD}uS-kYT>sT-z)A`XsF8A15+ajTwxOt2hMzY_d3X zA@LB%7It}xJvrG^JoEJJOOfeHMaqf~rN?W#xqEDCqZo336!51pZ+dzfHs1M!n^6sd z%g*XbYOBd99BOX1v=zf1-|aB1D5UyIeAq@NYM692aK1k}_{v_)BDb%vFWNyBg7PB0 zy!Yyb%nu%gh0Ye)9FA+T2{u{$XFTqYEyEds1F=ommDv^~NPV}10+7xM(PPX^^p;i> zdbZqSlgg%R=zr7>DiBNWz?rGi6H #brK9$1+x* zzJC4Mxw2k0S9L2wE{c6?noV06#jtCcdzL7-Em_@!b Or*9t2 z3w!R1ns12a{hs7nzrBjW7u8hEMd|6S29%eVGseNTN-j4uGh6nkPf}tyUg|HtMcENo zfSgQ8J|5H0Li@4^cS;IwNNt4P24$l>v&<*A{EEdTx0l3bn^iT4A&sYLO_+`j4(B63 z3I<)UvGi;S72Ld=r6tZTPRWZG<*)#tj#*di*~b|9J<9-t!32w7ASl o8cM73hUAec>l+XUS}y_?i8^V#Qey3NrM$9J<$55e`I8&V^d`1 z1sOr;R@?SV)d>y`4*U%b?y)ZJG3*Fs$ID!9?G=U*08aD6hq-pdc6gXS`m#4CQz$RP zIj>Q~);$KRrlqxj?CtI4OL;+%U0Z8wYXyIHHl&CesO5o6Mf)eAlc{-8ZSv_sqYri+ zR#{$(T64vQ*zQ%j@wjbjOk%<2>0f!j3Bp3)ELD3@rE(RWygQWfmqZ7Y30SAL?m}W| zQ|C`m^JXvJ&J`-NGqfjqG^uI|T%wUj`s<@4pbP$%#11dETg-qD$C_U!cco`9ZsFV> z2r9V9v}2=I?v>z<2x(f+m}~YH)TaPb7KJ3vYL?0HMhZR+Wl%Q13HV>(VzLhM*bg$` zBqXj7lDdIXkj`#wY_u0S2tmBe_Q&}A0~Sm7N{kjlRuv3{pcBJN2YI_4xVM z1GHk?1TAVi@Wslrv%xg9d#dCbP0>Or8sGV+;l!xk-Mp?&GRhi)d|c0lqt(rTgAeX0 zr53!50LQR%m>SB!p>02b?8HmeUE=USDt4*Hh2Gx`T@W=FTMxlw) {(|-IN8f3`xh8)_{QYm6`Vng71vpCJ2ibc5tB>SAp2BnZ zaKtWfbVuEPUn%nB066iptI2cN;s}_KD+IN>K**6ET#b_eXd&X?TI*Q@VqsCSpSnOz z>KMGyN-y^Rr|DYTk-A~pwZJ=HfYP(6KFew(TxJ7wt08>e%8H|~fuc2Hl%JnpfyxA} zMZz)ms#7M>C0H}r>eZ%G^@G>1Uw4uQEozr(F24TY$uy~|<97msf)+7fx*6ofnx$x$ zNjYX|bl?kQ$n5K*q+Ornv+#_o&8)!!I5TQ``NQ%|(-oT!w5T1>1(XWEauagd)=mg1 zB)5d)vF`e(J=()?16Jpb+*Us416nFSz*e~0+IEB{vPbQz+G2a(ytH|^C)vAp=5|{4 z;i1fxWn`L8z=WT{CeTyef9icOrb3>D&nS3V^((Jh(kUd%rX7NsU%Gko>?}HWMqK4a zD%ln(^`QVsyI>U%z=uh>d~Q5X1P28@+oo9V;EeZ<;bxvz7%hr)I&@RpZxkj1PO-T; z?KxQ{^$LyR(N{TFQspP^6Wgv2lx+cQSM$SBJu^-F?jbMx@o}=4>+-#lk`hFGeEdqY zC1`%*`a=1=p+8Tj&JXU!S8`j=4jfNL>=_*ydE-(CBHWRXkZ=@5>RYyK4)JHnT;@*5 zF!g*>Wb)Eyn{OL1P9I7{NcjUF^`Dw&$L~}x#>nQKXQ#|)q{^pf9MlV4oYf2%@0>od z*7A?>R`{HcEjM)nR`+?NN&9N+q;0R7Q%T!d&E;~j<2+tyoje5CgX<|N=mJ8061HB9 z{bWpR*s5{Q((RIxgr?r$$#RARprcv{YjXDs-c5TYv}<~`i#ax5rLI1H!F~Jcx*82H zwMyqt^g4~bd&hb$zs7Xno`o!w@6QN%f5kCqB ERSONJu`!V zq`7ol0DAt^N>Sp3?&>_3ljqYW#VmD4`$opTKfQrejN4opSJGjOb+!GdU)lr6qK?Cl z%HA82NRt^X&@JZ_#>U3NFjLRhGiZQY8hNY97jg0vaTgv~kW`8vz&)nV#a5#~<#BOo zi9bv&ZYuEsYSvlDkzrH63352av|;b7Ld-r*oSlV;p#I{aZBHiUJ#dse+Yio+qU_J# zeWbTEo*&>)7C5~h0fV5!Cp}- oP(H zs$xq6cwKYJkw@^)2L&K_w(}Eo&}i!en23nT^3i=^!?Ih`)DNc}ysRcj*%vo<5k2v2 zK;B;d@?^ {+!gfsIW$oCe}=y z7NnR-)habeh;j?K@F8?dumE&xE*L$;+D*f~B=0WGv@4d#i=QdX7OS$QFv-%C-3o@} z0}<<>c0Z})Z3C>b%R-K?bEdomDY)%|=9TCPchg~j%FqoIE0O)xl&;aOgNe@`v@shM z@w)};Go&SI0VxCfP5(&ey l%}eqC=E1hIQC6qwe~gkZS7`* z2^LDFs;YPls8SIOFfcGMFtC6G8xsNvA%Ot3>JMNj*J+Y=Al$+CoU8MF=Q|JIF61u_ z^q=adC~6=#DHSQI=RL8*M*`&g ?*WbZ0 ziVB?7OJ!V^r$rSRjN->Io?#I*MUACAOHt<_1{GM-%_P0^>NO2?ElJNtWlpv-u&z%w zY&g@%m(<3bDrj`-A{g^TLSR6w0MD2=9nnkDO tf>b!bhe z)h5y~)>AB&XE?v4cAzZ(Kh!Wf(GD)ceZBuAc1lYYWQ)*23${uIR~`0KSz^Y93PyGb zq4{6xKS8cuT+GkxQr};4Q^c#~q;$#qwDp-kM)5}j>HDc)Z1~3AZ)ow%&&G$-Z 1(vDH?#j-P56Wfp(zEevH~#`-=|yt@ literal 0 HcmV?d00001 diff --git a/Public/Sdk/images/input2.png b/Public/Sdk/images/input2.png new file mode 100644 index 0000000000000000000000000000000000000000..480d58ff0bef6a8be549dd0e69f809b4628939e5 GIT binary patch literal 1021 zcmaJ=PiWIn7!QugnDjn{!6SpQq0PUpT@xB-m!z(9skN)Du!~vpwuUWvF?lm-MU>rk z^(3A=d6eNr#e>LBdQ|YBm+df6*bwGP9n6=m?L1f?B;WTQzu)is^S-xPE?rFwUKpe( zDp8zKE5!aHpD@rz{?nV8PsE(ZS`E*mWgHqlr1BP8f}rRaE3g6$t8x1s%u!U|s9mk$ znm#9)$YG2a!$gip*c6qUiaf(yg%~Ws72B2R@2}s`z_w(1A+2+|r@*>B)AZqdvs5*k ztEOntQ m4y%?+eTrdzra@#ABb1}z9)mFbhDYI+$c$cG@!WRfPI%7RIe z;nQMPn79N4j?b{1$nq0Oj+Z!5;&{+rG>PV0%Th%xv}2K-OxH2?B$f@skO@-^@>f`1 z6h)R3SV2e
sY2qrY9vhURTx)+HE2YV Hu~9|4_&2q61ukr}_R Y{k72N Tp$Lt~=1h9j -q7Af#EH6KXHh{;d4J92D|r #<$G#+1YM-&M*zE=z z;wP~13)m3@LQG8TAS8YODjNuifpeOq41|dreD8aDpXYtv4?k`0-& %Q OoW8r{z mFMhTkd|AG~P&ohNd|0{))<